[lasem] tests; import some files from the batik test suite



commit cf26af133005c54c401f2e2d7e163eeac0c53515
Author: Emmanuel Pacaud <emmanuel gnome org>
Date:   Tue Aug 4 09:52:06 2015 +0200

    tests; import some files from the batik test suite

 .../svg/batik/tests/resources/images/arabic.png    |  Bin 0 -> 5012 bytes
 .../svg/batik/tests/resources/images/bmpCursor.bmp |  Bin 0 -> 3128 bytes
 .../batik/tests/resources/images/brushedMetal.jpg  |  Bin 0 -> 94851 bytes
 .../batik/tests/resources/images/canaryRelief.png  |  Bin 0 -> 3039 bytes
 .../batik/tests/resources/images/hotSpotCenter.png |  Bin 0 -> 324 bytes
 .../tests/resources/images/hotSpotCenterBig.png    |  Bin 0 -> 617 bytes
 .../tests/resources/images/hotSpotCenterSmall.png  |  Bin 0 -> 230 bytes
 .../svg/batik/tests/resources/images/hotSpotE.png  |  Bin 0 -> 320 bytes
 .../svg/batik/tests/resources/images/hotSpotN.png  |  Bin 0 -> 328 bytes
 .../svg/batik/tests/resources/images/hotSpotNE.png |  Bin 0 -> 321 bytes
 .../svg/batik/tests/resources/images/hotSpotNW.png |  Bin 0 -> 322 bytes
 .../svg/batik/tests/resources/images/hotSpotS.png  |  Bin 0 -> 324 bytes
 .../svg/batik/tests/resources/images/hotSpotSE.png |  Bin 0 -> 320 bytes
 .../svg/batik/tests/resources/images/hotSpotSW.png |  Bin 0 -> 319 bytes
 .../svg/batik/tests/resources/images/hotSpotW.png  |  Bin 0 -> 321 bytes
 .../data/svg/batik/tests/resources/images/jpeg.jpg |  Bin 0 -> 21379 bytes
 .../batik/tests/resources/images/jpegCursor.jpg    |  Bin 0 -> 6644 bytes
 .../batik/tests/resources/images/operaBridge.jpg   |  Bin 0 -> 31244 bytes
 .../batik/tests/resources/images/operaSteps.jpg    |  Bin 0 -> 32729 bytes
 .../svg/batik/tests/resources/images/operaWalk.jpg |  Bin 0 -> 22085 bytes
 .../data/svg/batik/tests/resources/images/png.png  |  Bin 0 -> 21496 bytes
 .../data/svg/batik/tests/resources/images/png2.png |  Bin 0 -> 2856 bytes
 .../svg/batik/tests/resources/images/pngCursor.png |  Bin 0 -> 349 bytes
 .../svg/batik/tests/resources/images/sm_colors.tif |  Bin 0 -> 13610 bytes
 .../batik/tests/resources/images/sm_colors_pb.tif  |  Bin 0 -> 14102 bytes
 .../tests/resources/images/sm_colors_pb_tile.tif   |  Bin 0 -> 20322 bytes
 .../tests/resources/images/sm_colors_tile.tif      |  Bin 0 -> 20132 bytes
 .../batik/tests/resources/images/spainRelief.png   |  Bin 0 -> 134968 bytes
 .../data/svg/batik/tests/resources/images/svg.png  |  Bin 0 -> 9277 bytes
 .../data/svg/batik/tests/resources/images/svg.svg  |   85 +
 .../data/svg/batik/tests/resources/images/svg2.svg |   40 +
 .../data/svg/batik/tests/resources/images/svg3.svg |   41 +
 .../svg/batik/tests/resources/images/svgCursor.svg |   29 +
 .../batik/tests/resources/images/svgCursor2.svg    |   28 +
 .../batik/tests/resources/images/svgCursor3.svg    |   28 +
 .../batik/tests/resources/images/svgCursor4.svg    |   24 +
 .../data/svg/batik/tests/resources/images/tde.jpg  |  Bin 0 -> 8775 bytes
 .../batik/tests/resources/images/tiffCursor.tif    |  Bin 0 -> 8158 bytes
 .../batik/tests/resources/images/toBeProfiled.png  |  Bin 0 -> 3486 bytes
 tests/data/svg/batik/tests/resources/svg/defs.svg  |  396 +++++
 tests/data/svg/batik/tests/resources/svg/defs2.svg |   57 +
 .../svg/batik/tests/spec/color/colorProfile.png    |  Bin 0 -> 49478 bytes
 .../svg/batik/tests/spec/color/colorProfile.svg    |  310 ++++
 tests/data/svg/batik/tests/spec/color/colors.png   |  Bin 0 -> 214350 bytes
 tests/data/svg/batik/tests/spec/color/colors.svg   |  189 +++
 .../svg/batik/tests/spec/color/systemColors.png    |  Bin 0 -> 22842 bytes
 .../svg/batik/tests/spec/color/systemColors.svg    |  178 +++
 tests/data/svg/batik/tests/spec/coordinates/em.png |  Bin 0 -> 20192 bytes
 tests/data/svg/batik/tests/spec/coordinates/em.svg |   84 +
 .../tests/spec/coordinates/percentagesAndUnits.png |  Bin 0 -> 11897 bytes
 .../tests/spec/coordinates/percentagesAndUnits.svg |  140 ++
 .../batik/tests/spec/filters/enableBackground.png  |  Bin 0 -> 28691 bytes
 .../batik/tests/spec/filters/enableBackground.svg  |  177 +++
 .../svg/batik/tests/spec/filters/feColorMatrix.png |  Bin 0 -> 117564 bytes
 .../svg/batik/tests/spec/filters/feColorMatrix.svg |  152 ++
 .../tests/spec/filters/feComponentTransfer.png     |  Bin 0 -> 122247 bytes
 .../tests/spec/filters/feComponentTransfer.svg     |  215 +++
 .../tests/spec/filters/feComponentTransfer2.png    |  Bin 0 -> 115541 bytes
 .../tests/spec/filters/feComponentTransfer2.svg    |  221 +++
 .../svg/batik/tests/spec/filters/feComposite.png   |  Bin 0 -> 27046 bytes
 .../svg/batik/tests/spec/filters/feComposite.svg   |  248 +++
 .../batik/tests/spec/filters/feConvolveMatrix.png  |  Bin 0 -> 30623 bytes
 .../batik/tests/spec/filters/feConvolveMatrix.svg  |  351 +++++
 .../batik/tests/spec/filters/feDisplacementMap.png |  Bin 0 -> 22424 bytes
 .../batik/tests/spec/filters/feDisplacementMap.svg |  179 +++
 .../batik/tests/spec/filters/feGaussianDefault.png |  Bin 0 -> 1198 bytes
 .../batik/tests/spec/filters/feGaussianDefault.svg |   52 +
 .../data/svg/batik/tests/spec/filters/feImage.png  |  Bin 0 -> 22885 bytes
 .../data/svg/batik/tests/spec/filters/feImage.svg  |  123 ++
 .../data/svg/batik/tests/spec/filters/feImage2.png |  Bin 0 -> 15250 bytes
 .../data/svg/batik/tests/spec/filters/feImage2.svg |  160 ++
 .../data/svg/batik/tests/spec/filters/feMerge.png  |  Bin 0 -> 14892 bytes
 .../data/svg/batik/tests/spec/filters/feMerge.svg  |  237 +++
 .../svg/batik/tests/spec/filters/feMorphology.png  |  Bin 0 -> 43197 bytes
 .../svg/batik/tests/spec/filters/feMorphology.svg  |  112 ++
 tests/data/svg/batik/tests/spec/filters/feTile.png |  Bin 0 -> 32501 bytes
 tests/data/svg/batik/tests/spec/filters/feTile.svg |  147 ++
 .../svg/batik/tests/spec/filters/feTileTarget.png  |  Bin 0 -> 27425 bytes
 .../svg/batik/tests/spec/filters/feTileTarget.svg  |  199 +++
 .../svg/batik/tests/spec/filters/feTurbulence.png  |  Bin 0 -> 151322 bytes
 .../svg/batik/tests/spec/filters/feTurbulence.svg  |  112 ++
 .../svg/batik/tests/spec/filters/filterRegions.png |  Bin 0 -> 14012 bytes
 .../svg/batik/tests/spec/filters/filterRegions.svg |  482 ++++++
 .../tests/spec/filters/svgEnableBackground.png     |  Bin 0 -> 29269 bytes
 .../tests/spec/filters/svgEnableBackground.svg     |  189 +++
 .../data/svg/batik/tests/spec/fonts/batikFont.png  |  Bin 0 -> 16539 bytes
 .../data/svg/batik/tests/spec/fonts/batikFont.svg  |  182 +++
 .../svg/batik/tests/spec/fonts/fontAltGlyph.png    |  Bin 0 -> 42246 bytes
 .../svg/batik/tests/spec/fonts/fontAltGlyph.svg    |  230 +++
 .../svg/batik/tests/spec/fonts/fontAltGlyph2.png   |  Bin 0 -> 21675 bytes
 .../svg/batik/tests/spec/fonts/fontAltGlyph2.svg   |  146 ++
 .../svg/batik/tests/spec/fonts/fontAltGlyph3.svg   |  230 +++
 .../data/svg/batik/tests/spec/fonts/fontArabic.png |  Bin 0 -> 45190 bytes
 .../data/svg/batik/tests/spec/fonts/fontArabic.svg |  724 +++++++++
 .../data/svg/batik/tests/spec/fonts/fontBounds.png |  Bin 0 -> 10512 bytes
 .../data/svg/batik/tests/spec/fonts/fontBounds.svg |   91 ++
 .../data/svg/batik/tests/spec/fonts/fontChoice.png |  Bin 0 -> 27564 bytes
 .../data/svg/batik/tests/spec/fonts/fontChoice.svg |  202 +++
 .../svg/batik/tests/spec/fonts/fontDecorations.png |  Bin 0 -> 25160 bytes
 .../svg/batik/tests/spec/fonts/fontDecorations.svg |  303 ++++
 .../batik/tests/spec/fonts/fontExternalFont.png    |  Bin 0 -> 8985 bytes
 .../batik/tests/spec/fonts/fontExternalFont.svg    |   60 +
 tests/data/svg/batik/tests/spec/fonts/fontFace.png |  Bin 0 -> 19930 bytes
 tests/data/svg/batik/tests/spec/fonts/fontFace.svg |  124 ++
 .../tests/spec/fonts/fontFamilyCaseSensitivity.png |  Bin 0 -> 24360 bytes
 .../tests/spec/fonts/fontFamilyCaseSensitivity.svg |  122 ++
 .../svg/batik/tests/spec/fonts/fontGlyphChoice.png |  Bin 0 -> 17243 bytes
 .../svg/batik/tests/spec/fonts/fontGlyphChoice.svg |  418 +++++
 .../svg/batik/tests/spec/fonts/fontGlyphsBoth.png  |  Bin 0 -> 32265 bytes
 .../svg/batik/tests/spec/fonts/fontGlyphsBoth.svg  |  473 ++++++
 .../batik/tests/spec/fonts/fontGlyphsChildSVG.png  |  Bin 0 -> 35151 bytes
 .../batik/tests/spec/fonts/fontGlyphsChildSVG.svg  |  474 ++++++
 .../svg/batik/tests/spec/fonts/fontGlyphsD.png     |  Bin 0 -> 34432 bytes
 .../svg/batik/tests/spec/fonts/fontGlyphsD.svg     |  477 ++++++
 .../svg/batik/tests/spec/fonts/fontKerning.png     |  Bin 0 -> 42743 bytes
 .../svg/batik/tests/spec/fonts/fontKerning.svg     |  262 ++++
 .../tests/spec/fonts/fontOnPath-middle50-1-13.png  |  Bin 0 -> 33994 bytes
 .../tests/spec/fonts/fontOnPath-start35-0-13.png   |  Bin 0 -> 33268 bytes
 .../data/svg/batik/tests/spec/fonts/fontOnPath.png |  Bin 0 -> 30788 bytes
 .../data/svg/batik/tests/spec/fonts/fontOnPath.svg |  153 ++
 .../svg/batik/tests/spec/fonts/fontStyling.png     |  Bin 0 -> 16055 bytes
 .../svg/batik/tests/spec/fonts/fontStyling.svg     |  273 ++++
 .../tests/spec/ignore-interactivity/cursor.svg     |  211 +++
 .../tests/spec/ignore-interactivity/cursor2.svg    |  143 ++
 .../tests/spec/ignore-interactivity/cursor3.svg    |  118 ++
 .../tests/spec/ignore-interactivity/cursor4.svg    |  180 +++
 .../spec/ignore-interactivity/cursorImage.svg      |   22 +
 .../spec/ignore-interactivity/cursorImage2.svg     |   21 +
 .../tests/spec/ignore-interactivity/focus.svg      |  112 ++
 .../tests/spec/ignore-interactivity/keyEvents.svg  |  114 ++
 .../tests/spec/ignore-interactivity/keyEvents2.svg |  620 ++++++++
 .../spec/ignore-interactivity/pointerEvents.svg    | 1612 ++++++++++++++++++++
 .../svg/batik/tests/spec/ignore-scripting/add.svg  |   84 +
 .../tests/spec/ignore-scripting/addDescOnClick.svg |  196 +++
 .../batik/tests/spec/ignore-scripting/alert.svg    |  105 ++
 .../svg/batik/tests/spec/ignore-scripting/bbox.svg |  403 +++++
 .../ignore-scripting/boundsTransformChange.svg     |   67 +
 .../batik/tests/spec/ignore-scripting/bug12933.svg |  113 ++
 .../batik/tests/spec/ignore-scripting/circle.svg   |   66 +
 .../ignore-scripting/currentScaleTranslate.svg     |  114 ++
 .../batik/tests/spec/ignore-scripting/display.svg  |  104 ++
 .../tests/spec/ignore-scripting/domSVGColor.svg    |  183 +++
 .../batik/tests/spec/ignore-scripting/ellipse.svg  |   72 +
 .../tests/spec/ignore-scripting/enclosureList.svg  |  431 ++++++
 .../tests/spec/ignore-scripting/enclosureList2.svg |  394 +++++
 .../tests/spec/ignore-scripting/eventAttrAdd.svg   |  108 ++
 .../svg/batik/tests/spec/ignore-scripting/fill.svg |   54 +
 .../spec/ignore-scripting/filterPatternUpdate.svg  |  132 ++
 .../ignore-scripting/filterPatternUpdateRef.svg    |  117 ++
 .../tests/spec/ignore-scripting/forceRedraw.svg    |  105 ++
 .../tests/spec/ignore-scripting/getElementById.svg |  184 +++
 .../spec/ignore-scripting/gradientsUpdate.svg      |  130 ++
 .../spec/ignore-scripting/gradientsUpdateRef.svg   |  114 ++
 .../batik/tests/spec/ignore-scripting/image.svg    |   98 ++
 .../tests/spec/ignore-scripting/imageRefUpdate.svg |   90 ++
 .../tests/spec/ignore-scripting/imageRendering.svg |   66 +
 .../tests/spec/ignore-scripting/imageUpdate.svg    |  134 ++
 .../tests/spec/ignore-scripting/imageraster.svg    |  153 ++
 .../batik/tests/spec/ignore-scripting/imagesvg.svg |  153 ++
 .../spec/ignore-scripting/intersectionList.svg     |  412 +++++
 .../spec/ignore-scripting/intersectionList2.svg    |  394 +++++
 .../tests/spec/ignore-scripting/javaBinding.svg    |   64 +
 .../svg/batik/tests/spec/ignore-scripting/line.svg |   82 +
 .../tests/spec/ignore-scripting/markerUpdate.svg   |  184 +++
 .../spec/ignore-scripting/markerUpdateRef.svg      |   96 ++
 .../tests/spec/ignore-scripting/maskClipUpdate.svg |  126 ++
 .../spec/ignore-scripting/maskClipUpdateRef.svg    |  108 ++
 .../tests/spec/ignore-scripting/memoryLeak1.svg    |   88 ++
 .../tests/spec/ignore-scripting/modalEventTest.svg |  118 ++
 .../tests/spec/ignore-scripting/nestedsvg.svg      |   58 +
 .../spec/ignore-scripting/normalizedPathTest.svg   |   63 +
 .../tests/spec/ignore-scripting/paintType.svg      |  142 ++
 .../svg/batik/tests/spec/ignore-scripting/path.svg |   55 +
 .../tests/spec/ignore-scripting/pathLength.svg     |  122 ++
 .../spec/ignore-scripting/path_pathSegList1.svg    |  256 ++++
 .../spec/ignore-scripting/path_pathSegList2.svg    |  162 ++
 .../ignore-scripting/path_pathSegList_create.svg   |  235 +++
 .../batik/tests/spec/ignore-scripting/polygon.svg  |   55 +
 .../spec/ignore-scripting/polygon_points1.svg      |  238 +++
 .../spec/ignore-scripting/polygon_points2.svg      |  178 +++
 .../batik/tests/spec/ignore-scripting/polyline.svg |   55 +
 .../spec/ignore-scripting/polyline_points1.svg     |  237 +++
 .../spec/ignore-scripting/polyline_points2.svg     |  178 +++
 .../tests/spec/ignore-scripting/primaryDoc.svg     |   64 +
 .../svg/batik/tests/spec/ignore-scripting/rect.svg |   84 +
 .../spec/ignore-scripting/rectResizeOnClick.svg    |   80 +
 .../tests/spec/ignore-scripting/relativeURI.svg    |  228 +++
 .../batik/tests/spec/ignore-scripting/remove.svg   |   87 ++
 .../tests/spec/ignore-scripting/removeLast.svg     |   56 +
 .../tests/spec/ignore-scripting/removeOnclick.svg  |   87 ++
 .../spec/ignore-scripting/resourceDocDynamic11.svg |   33 +
 .../spec/ignore-scripting/resourceDocDynamic12.svg |   33 +
 .../spec/ignore-scripting/resourceDocStatic11.svg  |   30 +
 .../spec/ignore-scripting/resourceDocStatic12.svg  |   30 +
 .../tests/spec/ignore-scripting/rootSizeChange.svg |   86 ++
 .../batik/tests/spec/ignore-scripting/security.svg |  197 +++
 .../tests/spec/ignore-scripting/security2.svg      |  203 +++
 .../tests/spec/ignore-scripting/security3.svg      |  328 ++++
 .../spec/ignore-scripting/security3Include.svg     |   41 +
 .../tests/spec/ignore-scripting/setProperty.svg    |   77 +
 .../batik/tests/spec/ignore-scripting/styling.svg  |  171 +++
 .../tests/spec/ignore-scripting/suspendRedraw.svg  |  199 +++
 .../svg/batik/tests/spec/ignore-scripting/svg.svg  |   78 +
 .../svg/batik/tests/spec/ignore-scripting/svg2.svg |   70 +
 .../tests/spec/ignore-scripting/svgFontMove.svg    |   66 +
 .../svg/batik/tests/spec/ignore-scripting/text.svg |  103 ++
 .../spec/ignore-scripting/textAllProperties.svg    |  299 ++++
 .../tests/spec/ignore-scripting/textProperties.svg |   58 +
 .../spec/ignore-scripting/textProperties2.svg      |  201 +++
 .../tests/spec/ignore-scripting/textSelection.svg  |   85 +
 .../tests/spec/ignore-scripting/text_children1.svg |  152 ++
 .../tests/spec/ignore-scripting/text_children2.svg |   98 ++
 .../tests/spec/ignore-scripting/text_children3.svg |  177 +++
 .../tests/spec/ignore-scripting/text_content.svg   |  340 ++++
 .../tests/spec/ignore-scripting/text_dxlist1.svg   |  267 ++++
 .../tests/spec/ignore-scripting/text_dxlist2.svg   |  140 ++
 .../tests/spec/ignore-scripting/text_dylist1.svg   |  287 ++++
 .../tests/spec/ignore-scripting/text_dylist2.svg   |  151 ++
 .../tests/spec/ignore-scripting/text_xlist1.svg    |  266 ++++
 .../tests/spec/ignore-scripting/text_xlist2.svg    |  140 ++
 .../tests/spec/ignore-scripting/text_ylist1.svg    |  287 ++++
 .../tests/spec/ignore-scripting/text_ylist2.svg    |  151 ++
 .../ignore-scripting/textcontent/missing-glpyh.svg |  242 +++
 .../ignore-scripting/textcontent/numberOfChars.svg |  354 +++++
 .../spec/ignore-scripting/textpathProperties.svg   |   85 +
 .../tests/spec/ignore-scripting/transform.svg      |  113 ++
 .../tests/spec/ignore-scripting/transform2.svg     |   81 +
 .../spec/ignore-scripting/transform_create.svg     |  174 +++
 .../spec/ignore-scripting/transform_create1.svg    |  180 +++
 .../ignore-scripting/transform_getTransform1.svg   |  258 ++++
 .../ignore-scripting/transform_getTransform2.svg   |  131 ++
 .../tests/spec/ignore-scripting/trefProperties.svg |   72 +
 .../batik/tests/spec/ignore-scripting/tspan.svg    |  104 ++
 .../spec/ignore-scripting/tspanProperties.svg      |   59 +
 .../spec/ignore-scripting/tspan_children1.svg      |  152 ++
 .../spec/ignore-scripting/tspan_children2.svg      |   98 ++
 .../spec/ignore-scripting/tspan_children3.svg      |  142 ++
 .../svg/batik/tests/spec/ignore-scripting/use.svg  |  253 +++
 .../tests/spec/ignore-scripting/viewBoxOnLoad.svg  |   59 +
 .../tests/spec/ignore-scripting/visibility.svg     |  104 ++
 .../spec/ignore-scripting/visibilityOnClick.svg    |  135 ++
 .../tests/spec/ignore-scripting/xAnimOnClick.svg   |  109 ++
 .../tests/spec/ignore-scripting/xyModifOnClick.svg |   77 +
 .../tests/spec/ignore-scripting/xyModifOnLoad.svg  |   67 +
 .../batik/tests/spec/ignore-scripting/zeroSize.svg |  238 +++
 tests/data/svg/batik/tests/spec/linking/anchor.png |  Bin 0 -> 25795 bytes
 tests/data/svg/batik/tests/spec/linking/anchor.svg |  728 +++++++++
 .../batik/tests/spec/linking/anchorInsideText.png  |  Bin 0 -> 29943 bytes
 .../batik/tests/spec/linking/anchorInsideText.svg  |  139 ++
 .../batik/tests/spec/linking/linkingTransform.png  |  Bin 0 -> 5517 bytes
 .../batik/tests/spec/linking/linkingTransform.svg  |   83 +
 .../batik/tests/spec/linking/linkingViewBox.png    |  Bin 0 -> 12234 bytes
 .../batik/tests/spec/linking/linkingViewBox.svg    |   85 +
 .../svg/batik/tests/spec/linking/pointerEvents.png |  Bin 0 -> 11474 bytes
 .../svg/batik/tests/spec/linking/pointerEvents.svg |  325 ++++
 .../batik/tests/spec/linking/pointerEvents2.png    |  Bin 0 -> 22962 bytes
 .../batik/tests/spec/linking/pointerEvents2.svg    |  256 ++++
 tests/data/svg/batik/tests/spec/masking/clip.png   |  Bin 0 -> 8334 bytes
 tests/data/svg/batik/tests/spec/masking/clip.svg   |  223 +++
 .../svg/batik/tests/spec/masking/clipQuality.svg   |  239 +++
 .../svg/batik/tests/spec/masking/clipTransform.png |  Bin 0 -> 10024 bytes
 .../svg/batik/tests/spec/masking/clipTransform.svg |   78 +
 .../svg/batik/tests/spec/masking/maskRegions.png   |  Bin 0 -> 17800 bytes
 .../svg/batik/tests/spec/masking/maskRegions.svg   |  139 ++
 .../svg/batik/tests/spec/painting/bboxOnText.png   |  Bin 0 -> 9708 bytes
 .../svg/batik/tests/spec/painting/bboxOnText.svg   |   60 +
 .../data/svg/batik/tests/spec/painting/display.png |  Bin 0 -> 16443 bytes
 .../data/svg/batik/tests/spec/painting/display.svg |  177 +++
 .../batik/tests/spec/painting/image-rendering.png  |  Bin 0 -> 29936 bytes
 .../batik/tests/spec/painting/image-rendering.svg  |   61 +
 .../svg/batik/tests/spec/painting/markersExt.png   |  Bin 0 -> 51590 bytes
 .../svg/batik/tests/spec/painting/markersExt.svg   |  284 ++++
 .../svg/batik/tests/spec/painting/markersMisc.png  |  Bin 0 -> 28163 bytes
 .../svg/batik/tests/spec/painting/markersMisc.svg  |  264 ++++
 .../batik/tests/spec/painting/markersOrientA.png   |  Bin 0 -> 26981 bytes
 .../batik/tests/spec/painting/markersOrientA.svg   |  286 ++++
 .../batik/tests/spec/painting/markersOrientB.png   |  Bin 0 -> 24647 bytes
 .../batik/tests/spec/painting/markersOrientB.svg   |  190 +++
 .../spec/painting/markersPreserveAspectRatio.png   |  Bin 0 -> 29620 bytes
 .../spec/painting/markersPreserveAspectRatio.svg   |  582 +++++++
 .../batik/tests/spec/painting/markersShapes.png    |  Bin 0 -> 34874 bytes
 .../batik/tests/spec/painting/markersShapes.svg    |  151 ++
 .../batik/tests/spec/painting/shape-rendering.png  |  Bin 0 -> 14326 bytes
 .../batik/tests/spec/painting/shape-rendering.svg  |   64 +
 .../batik/tests/spec/painting/stroke-rendering.png |  Bin 0 -> 23476 bytes
 .../batik/tests/spec/painting/stroke-rendering.svg |   69 +
 .../batik/tests/spec/painting/text-rendering.png   |  Bin 0 -> 31066 bytes
 .../batik/tests/spec/painting/text-rendering.svg   |   71 +
 .../batik/tests/spec/painting/text-rendering2.png  |  Bin 0 -> 27374 bytes
 .../batik/tests/spec/painting/text-rendering2.svg  |   91 ++
 .../svg/batik/tests/spec/painting/visibility.png   |  Bin 0 -> 12797 bytes
 .../svg/batik/tests/spec/painting/visibility.svg   |  139 ++
 .../svg/batik/tests/spec/paints/externalPaints.png |  Bin 0 -> 41558 bytes
 .../svg/batik/tests/spec/paints/externalPaints.svg |   94 ++
 .../svg/batik/tests/spec/paints/gradientLimit.png  |  Bin 0 -> 11322 bytes
 .../svg/batik/tests/spec/paints/gradientLimit.svg  |  126 ++
 .../svg/batik/tests/spec/paints/gradientPoint.png  |  Bin 0 -> 14821 bytes
 .../svg/batik/tests/spec/paints/gradientPoint.svg  |  127 ++
 .../batik/tests/spec/paints/linearGradientLine.png |  Bin 0 -> 11079 bytes
 .../batik/tests/spec/paints/linearGradientLine.svg |   91 ++
 .../spec/paints/linearGradientOrientation.png      |  Bin 0 -> 13254 bytes
 .../spec/paints/linearGradientOrientation.svg      |  161 ++
 .../tests/spec/paints/linearGradientRepeat.png     |  Bin 0 -> 19067 bytes
 .../tests/spec/paints/linearGradientRepeat.svg     |  161 ++
 .../spec/paints/patternPreserveAspectRatioA.png    |  Bin 0 -> 28793 bytes
 .../spec/paints/patternPreserveAspectRatioA.svg    |  556 +++++++
 .../svg/batik/tests/spec/paints/patternRegionA.png |  Bin 0 -> 25929 bytes
 .../svg/batik/tests/spec/paints/patternRegionA.svg |  227 +++
 .../svg/batik/tests/spec/paints/patternRegionB.png |  Bin 0 -> 21747 bytes
 .../svg/batik/tests/spec/paints/patternRegionB.svg |  245 +++
 .../svg/batik/tests/spec/paints/patternRegions.png |  Bin 0 -> 36368 bytes
 .../svg/batik/tests/spec/paints/patternRegions.svg |  263 ++++
 .../svg/batik/tests/spec/paints/radialGradient.png |  Bin 0 -> 43249 bytes
 .../svg/batik/tests/spec/paints/radialGradient.svg |  254 +++
 .../batik/tests/spec/paints/radialGradient2.png    |  Bin 0 -> 49331 bytes
 .../batik/tests/spec/paints/radialGradient2.svg    |  262 ++++
 .../batik/tests/spec/paints/radialGradient3.png    |  Bin 0 -> 51272 bytes
 .../batik/tests/spec/paints/radialGradient3.svg    |  257 ++++
 .../batik/tests/spec/paints/radialGradientLine.png |  Bin 0 -> 9057 bytes
 .../batik/tests/spec/paints/radialGradientLine.svg |   72 +
 .../spec/paints/radialGradientOrientation.png      |  Bin 0 -> 18499 bytes
 .../spec/paints/radialGradientOrientation.svg      |  150 ++
 .../svg/batik/tests/spec/rendering/opacity.png     |  Bin 0 -> 29431 bytes
 .../svg/batik/tests/spec/rendering/opacity.svg     |  125 ++
 .../svg/batik/tests/spec/rendering/opacity2.png    |  Bin 0 -> 38187 bytes
 .../svg/batik/tests/spec/rendering/opacity2.svg    |  125 ++
 .../batik/tests/spec/rendering/paintOpacity.png    |  Bin 0 -> 66567 bytes
 .../batik/tests/spec/rendering/paintOpacity.svg    |  232 +++
 .../svg/batik/tests/spec/shapes/emptyShape.png     |  Bin 0 -> 5061 bytes
 .../svg/batik/tests/spec/shapes/emptyShape.svg     |   50 +
 tests/data/svg/batik/tests/spec/shapes/zero.png    |  Bin 0 -> 15001 bytes
 tests/data/svg/batik/tests/spec/shapes/zero.svg    |   93 ++
 .../tests/spec/structure/alternateStylesheet.png   |  Bin 0 -> 31718 bytes
 .../batik/tests/spec/structure/dataProtocol.png    |  Bin 0 -> 37259 bytes
 .../batik/tests/spec/structure/dataProtocol.svg    |  607 ++++++++
 .../tests/spec/structure/externalUseCascading.png  |  Bin 0 -> 29190 bytes
 .../tests/spec/structure/externalUseCascading.svg  |   62 +
 .../data/svg/batik/tests/spec/structure/image.png  |  Bin 0 -> 60284 bytes
 .../data/svg/batik/tests/spec/structure/image.svg  |   58 +
 .../tests/spec/structure/rasterImageViewBox.png    |  Bin 0 -> 36618 bytes
 .../tests/spec/structure/rasterImageViewBox.svg    |  456 ++++++
 .../spec/structure/rasterImageViewBoxClip.png      |  Bin 0 -> 27748 bytes
 .../spec/structure/rasterImageViewBoxClip.svg      |  508 ++++++
 .../spec/structure/rasterImageViewBoxOverflow.png  |  Bin 0 -> 32691 bytes
 .../spec/structure/rasterImageViewBoxOverflow.svg  |  440 ++++++
 .../tests/spec/structure/requiredFeatures.png      |  Bin 0 -> 16817 bytes
 .../tests/spec/structure/requiredFeatures.svg      |  192 +++
 .../tests/spec/structure/requiredFeaturesCombo.png |  Bin 0 -> 13420 bytes
 .../tests/spec/structure/requiredFeaturesCombo.svg |   94 ++
 .../batik/tests/spec/structure/svgImageViewBox.png |  Bin 0 -> 38104 bytes
 .../batik/tests/spec/structure/svgImageViewBox.svg |  456 ++++++
 .../tests/spec/structure/svgImageViewBoxClip.png   |  Bin 0 -> 29620 bytes
 .../tests/spec/structure/svgImageViewBoxClip.svg   |  508 ++++++
 .../spec/structure/svgImageViewBoxOverflow.png     |  Bin 0 -> 48051 bytes
 .../spec/structure/svgImageViewBoxOverflow.svg     |  445 ++++++
 .../data/svg/batik/tests/spec/structure/switch.png |  Bin 0 -> 5167 bytes
 .../data/svg/batik/tests/spec/structure/switch.svg |   57 +
 .../batik/tests/spec/structure/symbolViewBox.png   |  Bin 0 -> 37617 bytes
 .../batik/tests/spec/structure/symbolViewBox.svg   |  545 +++++++
 .../tests/spec/structure/symbolViewBoxClip.png     |  Bin 0 -> 29888 bytes
 .../tests/spec/structure/symbolViewBoxClip.svg     |  645 ++++++++
 .../tests/spec/structure/symbolViewBoxOverflow.png |  Bin 0 -> 47801 bytes
 .../tests/spec/structure/symbolViewBoxOverflow.svg |  553 +++++++
 .../batik/tests/spec/structure/systemLanguage.png  |  Bin 0 -> 24165 bytes
 .../batik/tests/spec/structure/systemLanguage.svg  |  201 +++
 .../tests/spec/structure/systemLanguageDialect.png |  Bin 0 -> 9767 bytes
 .../tests/spec/structure/systemLanguageDialect.svg |   51 +
 tests/data/svg/batik/tests/spec/structure/tiff.png |  Bin 0 -> 9086 bytes
 tests/data/svg/batik/tests/spec/structure/tiff.svg |   69 +
 .../svg/batik/tests/spec/structure/toolTips.png    |  Bin 0 -> 25848 bytes
 .../svg/batik/tests/spec/structure/toolTips.svg    |  491 ++++++
 .../svg/batik/tests/spec/structure/useMultiple.png |  Bin 0 -> 12015 bytes
 .../svg/batik/tests/spec/structure/useMultiple.svg |   98 ++
 .../batik/tests/spec/structure/useMultipleURI.png  |  Bin 0 -> 14648 bytes
 .../batik/tests/spec/structure/useMultipleURI.svg  |  114 ++
 .../batik/tests/spec/structure/useStylesheet.png   |  Bin 0 -> 29644 bytes
 .../batik/tests/spec/structure/useStylesheet.svg   |   60 +
 .../svg/batik/tests/spec/structure/useStyling.png  |  Bin 0 -> 29644 bytes
 .../svg/batik/tests/spec/structure/useStyling.svg  |   73 +
 .../batik/tests/spec/structure/useStylingURI.png   |  Bin 0 -> 38856 bytes
 .../batik/tests/spec/structure/useStylingURI.svg   |  189 +++
 .../svg/batik/tests/spec/structure/useTargets.png  |  Bin 0 -> 17238 bytes
 .../svg/batik/tests/spec/structure/useTargets.svg  |  117 ++
 .../svg/batik/tests/spec/structure/useTargets2.png |  Bin 0 -> 24345 bytes
 .../svg/batik/tests/spec/structure/useTargets2.svg |  196 +++
 .../svg/batik/tests/spec/structure/xmlBase.png     |  Bin 0 -> 28694 bytes
 .../svg/batik/tests/spec/structure/xmlBase.svg     |   67 +
 .../batik/tests/spec/structure/xmlBaseStyling.png  |  Bin 0 -> 56477 bytes
 .../batik/tests/spec/structure/xmlBaseStyling.svg  |  112 ++
 .../tests/spec/styling/alternateStylesheet.png     |  Bin 0 -> 31494 bytes
 .../tests/spec/styling/alternateStylesheet.svg     |  132 ++
 .../tests/spec/styling/alternateStylesheetCold.png |  Bin 0 -> 37926 bytes
 .../tests/spec/styling/alternateStylesheetHot.png  |  Bin 0 -> 38747 bytes
 .../data/svg/batik/tests/spec/styling/cssMedia.png |  Bin 0 -> 47369 bytes
 .../data/svg/batik/tests/spec/styling/cssMedia.svg |  129 ++
 .../svg/batik/tests/spec/styling/cssMediaList.png  |  Bin 0 -> 13356 bytes
 .../svg/batik/tests/spec/styling/cssMediaList.svg  |  103 ++
 .../svg/batik/tests/spec/styling/cssMediaPrint.png |  Bin 0 -> 47285 bytes
 .../tests/spec/styling/cssMediaProjection.png      |  Bin 0 -> 27297 bytes
 .../batik/tests/spec/styling/cssMediaScreen.png    |  Bin 0 -> 47369 bytes
 .../batik/tests/spec/styling/defaultFontFamily.svg |   29 +
 .../tests/spec/styling/defaultFontFamilyArial.png  |  Bin 0 -> 3792 bytes
 .../tests/spec/styling/defaultFontFamilyTimes.png  |  Bin 0 -> 4213 bytes
 .../svg/batik/tests/spec/styling/emptyStyle.png    |  Bin 0 -> 1064 bytes
 .../svg/batik/tests/spec/styling/emptyStyle.svg    |   27 +
 .../svg/batik/tests/spec/styling/fontShorthand.png |  Bin 0 -> 52471 bytes
 .../svg/batik/tests/spec/styling/fontShorthand.svg |   98 ++
 .../svg/batik/tests/spec/styling/important.png     |  Bin 0 -> 14181 bytes
 .../svg/batik/tests/spec/styling/important.svg     |   74 +
 tests/data/svg/batik/tests/spec/styling/smiley.png |  Bin 0 -> 15963 bytes
 tests/data/svg/batik/tests/spec/styling/smiley.svg |   86 ++
 .../batik/tests/spec/styling/smileyBasic Sad.png   |  Bin 0 -> 17601 bytes
 .../svg/batik/tests/spec/styling/smileyGrim.png    |  Bin 0 -> 16245 bytes
 .../svg/batik/tests/spec/styling/smileyOups.png    |  Bin 0 -> 17360 bytes
 .../svg/batik/tests/spec/styling/smileySmiling.png |  Bin 0 -> 17578 bytes
 .../svg/batik/tests/spec/styling/smileyWow!.png    |  Bin 0 -> 18088 bytes
 .../svg/batik/tests/spec/styling/styleElement.png  |  Bin 0 -> 7709 bytes
 .../svg/batik/tests/spec/styling/styleElement.svg  |   80 +
 .../svg/batik/tests/spec/text/longTextOnPath.png   |  Bin 0 -> 70714 bytes
 .../svg/batik/tests/spec/text/longTextOnPath.svg   |   56 +
 .../data/svg/batik/tests/spec/text/smallFonts.png  |  Bin 0 -> 68000 bytes
 .../data/svg/batik/tests/spec/text/smallFonts.svg  |  136 ++
 .../data/svg/batik/tests/spec/text/textAnchor.png  |  Bin 0 -> 21440 bytes
 .../data/svg/batik/tests/spec/text/textAnchor.svg  |  195 +++
 .../data/svg/batik/tests/spec/text/textAnchor2.png |  Bin 0 -> 19455 bytes
 .../data/svg/batik/tests/spec/text/textAnchor2.svg |  108 ++
 .../data/svg/batik/tests/spec/text/textAnchor3.png |  Bin 0 -> 21641 bytes
 .../data/svg/batik/tests/spec/text/textAnchor3.svg |  108 ++
 .../batik/tests/spec/text/textBiDi-arabic-5-40.png |  Bin 0 -> 45172 bytes
 .../tests/spec/text/textBiDi-cyrillic-4-24.png     |  Bin 0 -> 44451 bytes
 .../batik/tests/spec/text/textBiDi-greek-0-35.png  |  Bin 0 -> 45631 bytes
 .../tests/spec/text/textBiDi-hebrew-10-20.png      |  Bin 0 -> 43857 bytes
 .../batik/tests/spec/text/textBiDi-latin-0-20.png  |  Bin 0 -> 44154 bytes
 .../spec/text/textBiDi-latin-extended-0-15.png     |  Bin 0 -> 43941 bytes
 tests/data/svg/batik/tests/spec/text/textBiDi.png  |  Bin 0 -> 45531 bytes
 tests/data/svg/batik/tests/spec/text/textBiDi.svg  |   74 +
 tests/data/svg/batik/tests/spec/text/textBiDi2.png |  Bin 0 -> 8975 bytes
 tests/data/svg/batik/tests/spec/text/textBiDi2.svg |   58 +
 .../svg/batik/tests/spec/text/textDecoration.png   |  Bin 0 -> 44660 bytes
 .../svg/batik/tests/spec/text/textDecoration.svg   |   94 ++
 .../svg/batik/tests/spec/text/textDecoration2.png  |  Bin 0 -> 22185 bytes
 .../svg/batik/tests/spec/text/textDecoration2.svg  |  129 ++
 .../data/svg/batik/tests/spec/text/textEffect.png  |  Bin 0 -> 35740 bytes
 .../data/svg/batik/tests/spec/text/textEffect.svg  |  118 ++
 .../data/svg/batik/tests/spec/text/textEffect2.png |  Bin 0 -> 11324 bytes
 .../data/svg/batik/tests/spec/text/textEffect2.svg |   94 ++
 .../data/svg/batik/tests/spec/text/textEffect3.png |  Bin 0 -> 33190 bytes
 .../data/svg/batik/tests/spec/text/textEffect3.svg |  118 ++
 .../svg/batik/tests/spec/text/textFeatures.png     |  Bin 0 -> 66608 bytes
 .../svg/batik/tests/spec/text/textFeatures.svg     |  115 ++
 .../spec/text/textGlyphOrientationHorizontal.png   |  Bin 0 -> 29180 bytes
 .../spec/text/textGlyphOrientationHorizontal.svg   |  104 ++
 .../data/svg/batik/tests/spec/text/textLayout.png  |  Bin 0 -> 36476 bytes
 .../data/svg/batik/tests/spec/text/textLayout.svg  |  147 ++
 .../data/svg/batik/tests/spec/text/textLayout2.png |  Bin 0 -> 25499 bytes
 .../data/svg/batik/tests/spec/text/textLayout2.svg |   99 ++
 .../data/svg/batik/tests/spec/text/textLength.png  |  Bin 0 -> 42450 bytes
 .../data/svg/batik/tests/spec/text/textLength.svg  |  140 ++
 .../data/svg/batik/tests/spec/text/textOnPath.png  |  Bin 0 -> 41441 bytes
 .../data/svg/batik/tests/spec/text/textOnPath.svg  |  170 ++
 .../data/svg/batik/tests/spec/text/textOnPath2.png |  Bin 0 -> 37834 bytes
 .../data/svg/batik/tests/spec/text/textOnPath2.svg |   87 ++
 .../data/svg/batik/tests/spec/text/textOnPath3.png |  Bin 0 -> 26970 bytes
 .../data/svg/batik/tests/spec/text/textOnPath3.svg |   83 +
 .../svg/batik/tests/spec/text/textOnPathSpaces.png |  Bin 0 -> 40490 bytes
 .../svg/batik/tests/spec/text/textOnPathSpaces.svg |  169 ++
 .../data/svg/batik/tests/spec/text/textPCDATA.png  |  Bin 0 -> 20342 bytes
 .../data/svg/batik/tests/spec/text/textPCDATA.svg  |   56 +
 .../svg/batik/tests/spec/text/textPosition.png     |  Bin 0 -> 25685 bytes
 .../svg/batik/tests/spec/text/textPosition.svg     |  108 ++
 .../svg/batik/tests/spec/text/textPosition2.png    |  Bin 0 -> 22967 bytes
 .../svg/batik/tests/spec/text/textPosition2.svg    |  121 ++
 .../svg/batik/tests/spec/text/textProperties.png   |  Bin 0 -> 50459 bytes
 .../svg/batik/tests/spec/text/textProperties.svg   |  181 +++
 .../svg/batik/tests/spec/text/textProperties2.png  |  Bin 0 -> 32680 bytes
 .../svg/batik/tests/spec/text/textProperties2.svg  |  110 ++
 .../data/svg/batik/tests/spec/text/textStyles.png  |  Bin 0 -> 40220 bytes
 .../data/svg/batik/tests/spec/text/textStyles.svg  |  228 +++
 .../tests/spec/text/verticalText-orient0-3-18.png  |  Bin 0 -> 30777 bytes
 .../spec/text/verticalText-orient180-3-18.png      |  Bin 0 -> 30441 bytes
 .../spec/text/verticalText-orient270-3-18.png      |  Bin 0 -> 30662 bytes
 .../tests/spec/text/verticalText-orient90-3-18.png |  Bin 0 -> 32013 bytes
 .../svg/batik/tests/spec/text/verticalText.png     |  Bin 0 -> 28765 bytes
 .../svg/batik/tests/spec/text/verticalText.svg     |   99 ++
 .../text/verticalTextOnPath-beforeafter-0-28.png   |  Bin 0 -> 48013 bytes
 .../spec/text/verticalTextOnPath-negpos-3-17.png   |  Bin 0 -> 47973 bytes
 .../spec/text/verticalTextOnPath-supersub-3-18.png |  Bin 0 -> 47777 bytes
 .../batik/tests/spec/text/verticalTextOnPath.png   |  Bin 0 -> 46159 bytes
 .../batik/tests/spec/text/verticalTextOnPath.svg   |  183 +++
 tests/data/svg/batik/tests/spec/text/xmlSpace.png  |  Bin 0 -> 23989 bytes
 tests/data/svg/batik/tests/spec/text/xmlSpace.svg  |  153 ++
 tests/suite.c                                      |    3 +-
 tests/suite.ini                                    |   20 +
 493 files changed, 49915 insertions(+), 1 deletions(-)
---
diff --git a/tests/data/svg/batik/tests/resources/images/arabic.png 
b/tests/data/svg/batik/tests/resources/images/arabic.png
new file mode 100644
index 0000000..1bb4af6
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/arabic.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/bmpCursor.bmp 
b/tests/data/svg/batik/tests/resources/images/bmpCursor.bmp
new file mode 100644
index 0000000..daedbff
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/bmpCursor.bmp differ
diff --git a/tests/data/svg/batik/tests/resources/images/brushedMetal.jpg 
b/tests/data/svg/batik/tests/resources/images/brushedMetal.jpg
new file mode 100644
index 0000000..fd7dcc2
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/brushedMetal.jpg differ
diff --git a/tests/data/svg/batik/tests/resources/images/canaryRelief.png 
b/tests/data/svg/batik/tests/resources/images/canaryRelief.png
new file mode 100644
index 0000000..e21696c
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/canaryRelief.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/hotSpotCenter.png 
b/tests/data/svg/batik/tests/resources/images/hotSpotCenter.png
new file mode 100644
index 0000000..7b6e04a
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/hotSpotCenter.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/hotSpotCenterBig.png 
b/tests/data/svg/batik/tests/resources/images/hotSpotCenterBig.png
new file mode 100644
index 0000000..ba2f3cf
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/hotSpotCenterBig.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/hotSpotCenterSmall.png 
b/tests/data/svg/batik/tests/resources/images/hotSpotCenterSmall.png
new file mode 100644
index 0000000..eb26fa2
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/hotSpotCenterSmall.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/hotSpotE.png 
b/tests/data/svg/batik/tests/resources/images/hotSpotE.png
new file mode 100644
index 0000000..3451cd9
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/hotSpotE.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/hotSpotN.png 
b/tests/data/svg/batik/tests/resources/images/hotSpotN.png
new file mode 100644
index 0000000..d7d878e
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/hotSpotN.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/hotSpotNE.png 
b/tests/data/svg/batik/tests/resources/images/hotSpotNE.png
new file mode 100644
index 0000000..096ddd8
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/hotSpotNE.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/hotSpotNW.png 
b/tests/data/svg/batik/tests/resources/images/hotSpotNW.png
new file mode 100644
index 0000000..b56095f
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/hotSpotNW.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/hotSpotS.png 
b/tests/data/svg/batik/tests/resources/images/hotSpotS.png
new file mode 100644
index 0000000..1ae73bd
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/hotSpotS.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/hotSpotSE.png 
b/tests/data/svg/batik/tests/resources/images/hotSpotSE.png
new file mode 100644
index 0000000..340fe00
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/hotSpotSE.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/hotSpotSW.png 
b/tests/data/svg/batik/tests/resources/images/hotSpotSW.png
new file mode 100644
index 0000000..146039a
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/hotSpotSW.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/hotSpotW.png 
b/tests/data/svg/batik/tests/resources/images/hotSpotW.png
new file mode 100644
index 0000000..2923546
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/hotSpotW.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/jpeg.jpg 
b/tests/data/svg/batik/tests/resources/images/jpeg.jpg
new file mode 100644
index 0000000..ef89b4c
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/jpeg.jpg differ
diff --git a/tests/data/svg/batik/tests/resources/images/jpegCursor.jpg 
b/tests/data/svg/batik/tests/resources/images/jpegCursor.jpg
new file mode 100644
index 0000000..df1a5f3
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/jpegCursor.jpg differ
diff --git a/tests/data/svg/batik/tests/resources/images/operaBridge.jpg 
b/tests/data/svg/batik/tests/resources/images/operaBridge.jpg
new file mode 100644
index 0000000..e1c5eef
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/operaBridge.jpg differ
diff --git a/tests/data/svg/batik/tests/resources/images/operaSteps.jpg 
b/tests/data/svg/batik/tests/resources/images/operaSteps.jpg
new file mode 100644
index 0000000..721c38e
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/operaSteps.jpg differ
diff --git a/tests/data/svg/batik/tests/resources/images/operaWalk.jpg 
b/tests/data/svg/batik/tests/resources/images/operaWalk.jpg
new file mode 100644
index 0000000..f78d01e
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/operaWalk.jpg differ
diff --git a/tests/data/svg/batik/tests/resources/images/png.png 
b/tests/data/svg/batik/tests/resources/images/png.png
new file mode 100644
index 0000000..d9494a2
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/png.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/png2.png 
b/tests/data/svg/batik/tests/resources/images/png2.png
new file mode 100644
index 0000000..5bcc67a
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/png2.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/pngCursor.png 
b/tests/data/svg/batik/tests/resources/images/pngCursor.png
new file mode 100644
index 0000000..15f1208
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/pngCursor.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/sm_colors.tif 
b/tests/data/svg/batik/tests/resources/images/sm_colors.tif
new file mode 100644
index 0000000..9c62aea
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/sm_colors.tif differ
diff --git a/tests/data/svg/batik/tests/resources/images/sm_colors_pb.tif 
b/tests/data/svg/batik/tests/resources/images/sm_colors_pb.tif
new file mode 100644
index 0000000..29999db
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/sm_colors_pb.tif differ
diff --git a/tests/data/svg/batik/tests/resources/images/sm_colors_pb_tile.tif 
b/tests/data/svg/batik/tests/resources/images/sm_colors_pb_tile.tif
new file mode 100644
index 0000000..c655f41
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/sm_colors_pb_tile.tif differ
diff --git a/tests/data/svg/batik/tests/resources/images/sm_colors_tile.tif 
b/tests/data/svg/batik/tests/resources/images/sm_colors_tile.tif
new file mode 100644
index 0000000..a6bc40d
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/sm_colors_tile.tif differ
diff --git a/tests/data/svg/batik/tests/resources/images/spainRelief.png 
b/tests/data/svg/batik/tests/resources/images/spainRelief.png
new file mode 100644
index 0000000..a7e4e7b
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/spainRelief.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/svg.png 
b/tests/data/svg/batik/tests/resources/images/svg.png
new file mode 100644
index 0000000..c759e97
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/svg.png differ
diff --git a/tests/data/svg/batik/tests/resources/images/svg.svg 
b/tests/data/svg/batik/tests/resources/images/svg.svg
new file mode 100644
index 0000000..8dc8ff7
--- /dev/null
+++ b/tests/data/svg/batik/tests/resources/images/svg.svg
@@ -0,0 +1,85 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Referenced from image.svg                                                 -->
+<!-- @author vincent hardy eng sun com                                         -->
+<!-- @version $Id: svg.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="230" height="170" 
viewBox="0 0 230 170" preserveAspectRatio="xMidYMin slice" >
+    <defs>
+        <path id="SVG_S" 
d="M0,129.776l8.172-20.018c3.676,2.566,6.955,4.443,9.836,5.629c2.879,1.188,5.572,1.779,8.08,1.779c1.756,0,3.139-0.332,4.148-0.998c1.008-0.666,1.514-1.568,1.514-2.705c0-1.98-2.523-3.492-7.566-4.533
+            
c-1.627-0.355-2.896-0.633-3.807-0.828c-5.34-1.301-9.424-3.613-12.256-6.934s-4.246-7.453-4.246-12.402c0-7.68,2.75-13.93,8.25-18.748c5.5-4.816,12.711-7.227,21.631-7.227c4.102,0,8.137,0.539,12.107,1.615c3.971,1.078,7.975,2.709,12.012,4.895l-7.813,18.721
+            
c-2.475-1.82-4.957-3.209-7.447-4.168c-2.49-0.957-4.906-1.438-7.25-1.438c-1.791,0-3.174,0.301-4.15,0.902s-1.465,1.438-1.465,2.51c0,2.016,3.563,3.785,10.691,5.313c1.139,0.26,2.018,0.455,2.637,0.584c4.932,1.105,8.818,3.367,11.66,6.783
+            
c2.84,3.416,4.262,7.547,4.262,12.395c0,7.906-2.857,14.365-8.572,19.375s-13.146,7.514-22.295,7.514c-4.689,0-9.379-0.668-14.066-2.004c-4.689-1.336-9.379-3.34-14.066-6.012z"/>
+        <path id="SVG_V" 
d="M88.605,135.917l-27.271-71.5h27.807l7.566,25.885c1.105,3.777,1.928,6.969,2.465,9.574c0.535,2.605,0.885,5.047,1.049,7.324h0.488c0.324-2.408,0.789-4.947,1.391-7.617s1.375-5.568,2.32-8.695l8.004-26.471h27.285
+            l-27.188,71.5H88.605z"/>
+        <path id="SVG_G" 
d="M184.471,110.292h-11.125v-16.75h39.5c0.064,1.465,0.113,2.555,0.146,3.27c0.031,0.715,0.049,1.35,0.049,1.902c0,4.098-0.393,7.838-1.174,11.221s-1.922,6.375-3.42,8.977c-3.648,6.115-8.357,10.791-14.123,14.027
+            
c-5.766,3.234-12.314,4.854-19.643,4.854c-5.408,0-10.434-0.904-15.074-2.709c-4.643-1.807-8.756-4.469-12.338-7.984c-3.551-3.516-6.238-7.535-8.063-12.061c-1.824-4.523-2.736-9.439-2.736-14.746c0-5.338,0.92-10.277,2.76-14.818s4.521-8.537,8.041-11.988
+            
c3.551-3.482,7.656-6.135,12.316-7.959c4.66-1.822,9.693-2.734,15.104-2.734c7.33,0,13.846,1.605,19.549,4.814s10.363,7.908,13.98,14.096l-22.967,8.465c-1.205-1.973-2.654-3.445-4.346-4.418c-1.693-0.971-3.631-1.457-5.811-1.457
+            
c-3.811,0-6.848,1.447-9.109,4.338c-2.262,2.893-3.393,6.775-3.393,11.648c0,5.037,1.139,8.945,3.418,11.723c2.277,2.777,5.5,4.166,9.668,4.166c2.473,0,4.482-0.518,6.029-1.553s2.467-2.477,2.76-4.322z"/>
+        <path id="Ball" style="stroke:none;" 
d="M180.917,14.667c0,8.101-6.566,14.667-14.667,14.667c-8.101,0-14.667-6.566-14.667-14.667C151.583,6.566,158.15,0,166.25,0c8.1,0,14.667,6.566,14.667,14.667z"/>
+        <g id="Sprite">
+            <path fill="none" stroke="none" 
d="M5.25,35.667c14,0,24,8,27.667,21.667c4-11.333,12-23,25.333-19.333c12,3,15.667,10.667,21,20.333c3.667-15,22-30,34.667-37c10-5.333,21.333-7,32.333-7"/>
+            <path stroke="none" 
d="M5.25,39.659c13.783,0.264,23.765,8.329,27.561,21.524c0.071,0.19,0.141,0.19,0.212,0c3.661-10.004,10.322-20.697,22.352-19.76c12.265,0.956,18.46,11.104,23.77,20.76c0.071,0.19,0.141,0.19,0.212,0
+                
c3.582-13.201,14.807-23.318,25.5-31.093c12.398-9.016,26.158-12.64,41.394-12.764c0.622-0.005,0.58-7.989,0-7.984c-10.044,0.082-19.844,1.473-29.133,5.436c-7.528,3.212-14.392,8.564-20.514,13.902c-6.039,5.265-11.44,11.438-15.137,18.576
+                
c-0.824,1.592-1.432,3.277-1.983,4.979c-0.281,0.869-3.073-4.053-3.333-4.507c-1.628-2.837-3.473-5.501-5.688-7.91c-4.919-5.346-13.167-8.384-20.325-7.154c-6.945,1.194-11.644,7.805-14.684,13.59c-0.842,1.603-1.52,3.289-2.181,4.971
+                
c-0.237,0.604-1.904-3.553-2.048-3.899c-1.315-3.167-3.301-5.993-5.598-8.514c-5.206-5.715-12.864-7.992-20.376-8.136c-0.552-0.011-0.649,7.972,0,7.984z"/>
+        </g>
+
+        <radialGradient id="ballGradient" cx=".25" cy=".25" r=".75">
+            <stop offset="0" stop-color="white" />
+            <stop offset=".1" stop-color="yellow" />
+            <stop offset=".3" stop-color="orange" />
+            <stop offset="1" stop-color="black" />
+        </radialGradient>
+
+        <linearGradient id="spriteGradient" >
+            <stop offset="0" stop-opacity="0" />
+            <stop offset=".1" stop-opacity="0" />
+            <stop offset=".2" stop-opacity="1" />
+        </linearGradient>
+
+        <filter id="shadow" filterRes="200" x="0" y="0">
+            <feGaussianBlur stdDeviation="3 3" />
+            <feOffset dx="10" dy="10" />
+        </filter>
+
+    </defs>
+
+    <g fill="black" filter="url(#shadow)" stroke="none" opacity=".5">
+        <use xlink:href="#SVG_S" />
+        <use xlink:href="#SVG_V" />
+        <use xlink:href="#SVG_G" />
+        <use xlink:href="#Sprite" fill="url(#spriteGradient)"/>
+        <use xlink:href="#Ball" />
+    </g>
+    
+    <g fill="black" stroke="none">
+        <use xlink:href="#SVG_S" />
+        <use xlink:href="#SVG_V" />
+        <use xlink:href="#SVG_G" />
+    </g>
+    <use xlink:href="#Sprite" fill="url(#spriteGradient)"/>
+    <use xlink:href="#Ball" fill="url(#ballGradient)"/>
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/resources/images/svg2.svg 
b/tests/data/svg/batik/tests/resources/images/svg2.svg
new file mode 100644
index 0000000..8f951ba
--- /dev/null
+++ b/tests/data/svg/batik/tests/resources/images/svg2.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Referenced from svgImageXXX.svg                                           -->
+<!-- @author vincent hardy eng sun com                                         -->
+<!-- @version $Id: svg2.svg 475477 2006-11-15 22:44:28Z cam $   -->
+<!-- ========================================================================= -->
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="30" height="50" 
viewBox="-10 -10 20 20">
+    <g id="smilley">
+        <g transform="translate(-15,-15)">
+            <rect x="5" y="5" width="20" height="20" fill="black" />
+            <!-- <circle cx="10" cy="25" r="4" fill="crimson" />
+            <circle cx="20" cy="25" r="4" fill="crimson" /> -->
+            <circle cx="15" cy="15" r="10" fill="yellow"/>
+            <circle cx="12" cy="12" r="1.5" fill="black"/>
+            <circle cx="17" cy="12" r="1.5" fill="black"/>
+            <path d="M 10 19 A 8 8 0 0 0 20 19" stroke="black" stroke-width="1" fill="none"/>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/resources/images/svg3.svg 
b/tests/data/svg/batik/tests/resources/images/svg3.svg
new file mode 100644
index 0000000..620c52c
--- /dev/null
+++ b/tests/data/svg/batik/tests/resources/images/svg3.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Referenced from svgImageXXX.svg                                           -->
+<!-- @author vincent hardy eng sun com                                         -->
+<!-- @version $Id: svg3.svg 475477 2006-11-15 22:44:28Z cam $   -->
+<!-- ========================================================================= -->
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="30" height="30" 
viewBox="-10 -10 20 20">
+    <g id="smilley">
+        <g  transform="translate(-15,-15)" >
+            <circle cx="10" cy="25" r="4" fill="crimson" />
+            <circle cx="20" cy="25" r="4" fill="crimson" /> 
+            <circle cx="7" cy="15" r="4" fill="crimson" />
+            <circle cx="23" cy="15" r="4" fill="crimson" /> 
+            <circle cx="15" cy="15" r="10" fill="yellow"/>
+            <circle cx="12" cy="12" r="1.5" fill="black"/>
+            <circle cx="17" cy="12" r="1.5" fill="black"/>
+            <path d="M 10 19 A 8 8 0 0 0 20 19" stroke="black" stroke-width="1" fill="none"/>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/resources/images/svgCursor.svg 
b/tests/data/svg/batik/tests/resources/images/svgCursor.svg
new file mode 100644
index 0000000..224a9e3
--- /dev/null
+++ b/tests/data/svg/batik/tests/resources/images/svgCursor.svg
@@ -0,0 +1,29 @@
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink";  
+     id="body" width="32" height="32" viewBox="0 0 32 32" >
+
+    <rect x="0" y="0" width="32" height="32" fill="black" />
+    <rect x="2" y="2" width="28" height="28" fill="white" />
+    <rect x="15" y="0" width="2" height="32" fill="black" />
+    <rect y="15" x="0" width="32" height="2" fill="black" />
+    <rect x="12" y="12" width="8" height="8" fill="crimson" />
+    <rect x="5" y="20" width="22" height="10" fill="white" />
+    <text x="15.5" y="29" font-family="sans-serif" font-size="8" text-anchor="middle">SVG</text>
+</svg>
diff --git a/tests/data/svg/batik/tests/resources/images/svgCursor2.svg 
b/tests/data/svg/batik/tests/resources/images/svgCursor2.svg
new file mode 100644
index 0000000..4d0d6e6
--- /dev/null
+++ b/tests/data/svg/batik/tests/resources/images/svgCursor2.svg
@@ -0,0 +1,28 @@
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+--><svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink";  
+     id="body" >
+    <rect x="0%" y="0%" width="200%" height="200%" fill="gold" />
+    <rect x="0" y="0" width="32" height="32" fill="black" />
+    <rect x="2" y="2" width="28" height="28" fill="#eeeeee" />
+    <rect x="15" y="0" width="2" height="32" fill="black" />
+    <rect y="15" x="0" width="32" height="2" fill="black" />
+    <rect x="12" y="12" width="8" height="8" fill="crimson" />
+    <rect x="5" y="20" width="22" height="10" fill="#eeeeee" />
+    <text x="15.5" y="29" font-family="sans-serif" font-size="8" text-anchor="middle">SVG 2</text>
+</svg>
diff --git a/tests/data/svg/batik/tests/resources/images/svgCursor3.svg 
b/tests/data/svg/batik/tests/resources/images/svgCursor3.svg
new file mode 100644
index 0000000..fa046fd
--- /dev/null
+++ b/tests/data/svg/batik/tests/resources/images/svgCursor3.svg
@@ -0,0 +1,28 @@
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+--><svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink";  
+     id="body"  viewBox="0 0 32 32" >
+    <rect x="0%" y="0%" width="200%" height="200%" fill="green" />
+    <rect x="0" y="0" width="32" height="32" fill="black" />
+    <rect x="2" y="2" width="28" height="28" fill="#ccccff" />
+    <rect x="15" y="0" width="2" height="32" fill="black" />
+    <rect y="15" x="0" width="32" height="2" fill="black" />
+    <rect x="12" y="12" width="8" height="8" fill="crimson" />
+    <rect x="5" y="20" width="22" height="10" fill="#ccccff" />
+    <text x="15.5" y="29" font-family="sans-serif" font-size="8" text-anchor="middle">SVG 3</text>
+</svg>
diff --git a/tests/data/svg/batik/tests/resources/images/svgCursor4.svg 
b/tests/data/svg/batik/tests/resources/images/svgCursor4.svg
new file mode 100644
index 0000000..4ac27b4
--- /dev/null
+++ b/tests/data/svg/batik/tests/resources/images/svgCursor4.svg
@@ -0,0 +1,24 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   
+        http://www.apache.org/licenses/LICENSE-2.0
+   
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink";  
+     id="body"  width="300" height="300" viewBox="0 0 32 16" preserveAspectRatio="xMidYMid meet">
+    <rect x="0" y="0" width="32" height="16" fill="black" />
+    <rect x="2" y="2" width="28" height="12" fill="orange" />
+    <rect x="15" y="0" width="2" height="16" fill="black" />
+    <rect y="7" x="0" width="32" height="2" fill="black" />
+    <rect x="12" y="4" width="8" height="8" fill="crimson" />
+</svg>
diff --git a/tests/data/svg/batik/tests/resources/images/tde.jpg 
b/tests/data/svg/batik/tests/resources/images/tde.jpg
new file mode 100644
index 0000000..45c924a
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/tde.jpg differ
diff --git a/tests/data/svg/batik/tests/resources/images/tiffCursor.tif 
b/tests/data/svg/batik/tests/resources/images/tiffCursor.tif
new file mode 100644
index 0000000..51a63c4
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/tiffCursor.tif differ
diff --git a/tests/data/svg/batik/tests/resources/images/toBeProfiled.png 
b/tests/data/svg/batik/tests/resources/images/toBeProfiled.png
new file mode 100644
index 0000000..148db9c
Binary files /dev/null and b/tests/data/svg/batik/tests/resources/images/toBeProfiled.png differ
diff --git a/tests/data/svg/batik/tests/resources/svg/defs.svg 
b/tests/data/svg/batik/tests/resources/svg/defs.svg
new file mode 100644
index 0000000..8a12338
--- /dev/null
+++ b/tests/data/svg/batik/tests/resources/svg/defs.svg
@@ -0,0 +1,396 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: defs.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../style/subdir/useStylesheet.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+
+<text x="225" y="50" class="title">Not a test - only contains definitions</text>
+
+<defs>
+
+<!-- ###################################################################### -->
+<!-- used by externalPaints.svg -->
+<!-- ###################################################################### -->
+<linearGradient id="linearSimpleReference" x1=".5" y1="0" x2=".5" y2="1">
+  <stop style="stop-color:blue" offset="0" />
+  <stop style="stop-color:white" offset=".5" />
+  <stop style="stop-color:gold" offset=".51" />
+  <stop style="stop-color:crimson" offset="1" />
+</linearGradient>
+
+<radialGradient id="radialSimpleReference" fx=".2" fy=".2">
+  <stop style="stop-color:white" offset="0" />
+  <stop style="stop-color:gold" offset=".2" />
+  <stop style="stop-color:orange" offset="1" />
+</radialGradient>
+
+<pattern id="patternSimpleReference" 
+         x="0" y="0" width="10" height="10" viewBox="0 0 10 10" 
+         patternContentUnits="userSpaceOnUse" patternUnits="userSpaceOnUse">
+  <rect x="0" y="0" width="5" height="5" style="fill:crimson" />
+  <rect x="5" y="0" width="5" height="5" style="fill:orange" />
+  <rect x="0" y="5" width="5" height="5" style="fill:gold" />
+  <rect x="5" y="5" width="5" height="5" style="fill:white" />
+</pattern>
+
+<!-- ###################################################################### -->
+<linearGradient id="linearDoubleReference" x1="0" y1=".5" x2="1" y2=".5"
+                xlink:href="#linearSimpleReference" />
+
+<radialGradient id="radialDoubleReference" fx=".8" fy=".8"
+                xlink:href="#radialSimpleReference" />
+
+<pattern id="patternDoubleReference" 
+         x="0" y="0" width="10" height="10" viewBox="0 0 20 20" 
+         patternContentUnits="userSpaceOnUse" patternUnits="userSpaceOnUse"
+         xlink:href="#patternSimpleReference" />
+
+<!-- ###################################################################### -->
+<linearGradient id="linearExtReference" x1="0" y1="0" x2="1" y2="1"
+                xlink:href="defs2.svg#linear" />
+
+<radialGradient id="radialExtReference" fx=".2" fy=".8"
+                xlink:href="defs2.svg#radial" />
+
+<pattern id="patternExtReference" 
+         x="0" y="0" width="10" height="10" viewBox="0 0 10 10" 
+         patternContentUnits="userSpaceOnUse" patternUnits="userSpaceOnUse"
+         patternTransform="rotate(45)"
+         xlink:href="defs2.svg#pattern" />
+
+<!-- ###################################################################### -->
+<!-- useStyling.svg -->
+<!-- ###################################################################### -->
+
+  <radialGradient id="extGrad1">
+   <stop style="stop-color:gold" offset="0" />
+   <stop style="stop-color:crimson" offset="1" />
+  </radialGradient>
+
+  <radialGradient id="extGrad2">
+   <stop style="stop-color:white" offset="0" />
+   <stop style="stop-color:black" offset="1" />
+  </radialGradient>
+
+  <radialGradient id="extGrad3">
+   <stop style="stop-color:gold" offset="0" />
+   <stop style="stop-color:green" offset="1" />
+  </radialGradient>
+
+<g>
+  <circle id="extE" cx="25" cy="25" r="20" />
+
+  <circle id="extE1" cx="25" cy="25" r="20" style="fill:url(#extGrad1)" />
+
+  <circle id="extE2" cx="25" cy="25" r="20" style="fill:url(../../spec/structure/useStylingURI.svg#grad1)" />
+</g>
+
+
+<!-- ###################################################################### -->
+<!-- externalUseCascading.svg -->
+<!-- ###################################################################### -->
+
+<g id="tree1">
+  <!-- ### decoration ### -->
+  <line x1="100" y1="0" x2="0" y2="75" style="stroke:black; fill:none" />
+  <line x1="100" y1="0" x2="100" y2="75" style="stroke:black; fill:none" />
+  <line x1="100" y1="0" x2="200" y2="75" style="stroke:black; fill:none" />
+  <circle cx="100" cy="0" r="25" style="fill:#eee;" />
+  <text x="100" y="6" style="fill:black; text-anchor:middle; font-size:18">&lt;g></text>
+
+  <!-- ### color inherited inside this document  ###-->
+  <g style="fill:orange">
+    <circle cx="0" cy="75" r="25" />
+    <text x="0" y="115" style="text-anchor:middle; fill:black; stroke:none;">local</text>
+  </g>
+
+  <!-- ### color inherited from the use element  ###-->
+  <g>
+    <circle cx="100" cy="75" r="25" />
+    <text x="100" y="115" style="text-anchor:middle; fill:black; stroke:none;">inherited</text>
+  </g>
+
+  <!-- ### color defined on the circle  ###-->
+  <g>
+    <circle cx="200" cy="75" r="25" style="fill:gold"/>
+    <text x="200" y="115" style="text-anchor:middle; fill:black; stroke:none;">explicit</text>
+  </g>
+</g>
+
+<g id="tree2">
+  <!-- ### decoration ### -->
+  <line x1="100" y1="0" x2="0" y2="75" style="stroke:black; fill:none" />
+  <line x1="100" y1="0" x2="100" y2="75" style="stroke:black; fill:none" />
+  <line x1="100" y1="0" x2="200" y2="75" style="stroke:black; fill:none" />
+  <circle cx="100" cy="0" r="25" style="fill:#eee;" />
+  <text x="100" y="6" style="fill:black; text-anchor:middle; font-size:18">&lt;g></text>
+
+  <!-- ### gradient inherited inside this document ###-->
+  <g style="fill:url(#extGrad3)">
+    <circle cx="0" cy="75" r="25" />
+    <text x="0" y="115" style="text-anchor:middle; fill:black; stroke:none;">local</text>
+  </g>
+
+  <!-- ### gradient inherited from the use element ###-->
+  <g>
+    <circle cx="100" cy="75" r="25" />
+    <text x="100" y="115" style="text-anchor:middle; fill:black; stroke:none;">inherited</text>
+  </g>
+
+  <!-- ### pattern defined on the circle ###-->
+  <g>
+    <circle cx="200" cy="75" r="25" style="fill:url(#patternExtReference)"/>
+    <text x="200" y="115" style="text-anchor:middle; fill:black; stroke:none;">explicit</text>
+  </g>
+</g>
+
+<!-- ###################################################################### -->
+<!-- useTargets.svg -->
+<!-- ###################################################################### -->
+
+<symbol id="extSymbol" viewBox="-50 -50 100 100" style="stroke:crimson; stroke-width:4">
+  <rect x="-50" y="-50" width="100%" height="100%" style="fill:gold; stroke:none"/>
+  <circle cx="0" cy="0" r="25%"/>
+</symbol>
+
+<svg id="extSvg" width="50" height="50" viewBox="-50 -50 100 100" style="stroke:crimson; stroke-width:4">
+  <rect x="-50" y="-50" width="100%" height="100%" style="fill:gold; stroke:none"/>
+  <circle cx="0" cy="0" r="25%"/>
+</svg>
+
+<g id="extOther" style="stroke:crimson; stroke-width:4">
+  <rect x="-50" y="-50" width="100" height="100" style="fill:gold; stroke:none"/>
+  <circle cx="0" cy="0" r="25"/>
+</g>
+
+
+<!-- ###################################################################### -->
+<!-- useMultiple.svg -->
+<!-- ###################################################################### -->
+
+<rect id="extR1" x="0" y="0" width="80" height="80" />
+
+<g id="u21" style="fill:orange">
+  <rect x="0" y="0" width="80" height="80" fill="crimson" />
+  <use xlink:href="#extR1" x="20" y="20" width="80" height="80" />
+  <use xlink:href="#extR1" x="40" y="40" width="80" height="80" style="fill:gold" />
+</g>
+
+<g id="u22" style="fill:orange">
+  <rect x="0" y="0" width="80" height="80" fill="crimson" />
+  <use xlink:href="../../spec/structure/useMultiple.svg#r1" x="20" y="20" width="80" height="80" />
+  <use xlink:href="../../spec/structure/useMultiple.svg#r1" x="40" y="40" width="80" height="80" 
style="fill:gold" />
+</g>
+
+<!-- ###################################################################### -->
+<!-- useMultipleURI.svg -->
+<!-- ###################################################################### -->
+
+<linearGradient id="extOrange">
+  <stop style="stop-color:orange" offset="0" />
+  <stop style="stop-color:white" offset="1" />
+</linearGradient>
+
+<linearGradient id="extCrimson">
+  <stop style="stop-color:crimson" offset="0" />
+  <stop style="stop-color:white" offset="1" />
+</linearGradient>
+
+<linearGradient id="extGold">
+  <stop style="stop-color:gold" offset="0" />
+  <stop style="stop-color:white" offset="1" />
+</linearGradient>
+
+<rect id="extRR1" x="0" y="0" width="80" height="80" />
+
+<g id="uu21" style="fill:url(#extOrange)">
+  <rect x="0" y="0" width="80" height="80" fill="url(#extCrimson)" />
+  <use xlink:href="#extRR1" x="20" y="20" width="80" height="80" />
+  <use xlink:href="#extRR1" x="40" y="40" width="80" height="80" 
+             style="fill:url(../../spec/structure/useMultipleURI.svg#gold)" />
+</g>
+
+<g id="uu22" style="fill:url(#extOrange)">
+  <rect x="0" y="0" width="80" height="80" fill="url(#extCrimson)" />
+  <use xlink:href="../../spec/structure/useMultipleURI.svg#r1" x="20" y="20" width="80" height="80" />
+  <use xlink:href="../../spec/structure/useMultipleURI.svg#r1" x="40" y="40" width="80" height="80" 
+             style="fill:url(../../spec/structure/useMultipleURI.svg#gold)" />
+</g>
+
+<!-- ###################################################################### -->
+<!-- useStyling.svg -->
+<!-- ###################################################################### -->
+
+<style type="text/css"><![CDATA[     
+
+.gradClass {
+  fill: url(#extGrad3);
+}
+
+.pattClass {
+  fill: url(#patternExtReference);
+}
+
+.colorClass {
+  fill: gold;
+}
+
+.colorOrange {
+  fill: orange;
+}
+
+]]></style>
+
+<g id="tree3">
+  <!-- ### decoration ### -->
+  <line x1="100" y1="0" x2="0" y2="75" style="stroke:black; fill:none" />
+  <line x1="100" y1="0" x2="100" y2="75" style="stroke:black; fill:none" />
+  <line x1="100" y1="0" x2="200" y2="75" style="stroke:black; fill:none" />
+  <circle cx="100" cy="0" r="25" style="fill:#eee;" />
+  <text x="100" y="6" style="fill:black; text-anchor:middle; font-size:18">&lt;g></text>
+
+  <!-- ### color inherited inside this document  ###-->
+  <g class="colorOrange">
+    <circle cx="0" cy="75" r="25" />
+    <text x="0" y="115" style="text-anchor:middle; fill:black; stroke:none;">local</text>
+  </g>
+
+  <!-- ### color inherited from the use element  ###-->
+  <g>
+    <circle cx="100" cy="75" r="25" />
+    <text x="100" y="115" style="text-anchor:middle; fill:black; stroke:none;">inherited</text>
+  </g>
+
+  <!-- ### color defined on the circle  ###-->
+  <g>
+    <circle cx="200" cy="75" r="25" class="colorClass"/>
+    <text x="200" y="115" style="text-anchor:middle; fill:black; stroke:none;">explicit</text>
+  </g>
+</g>
+
+<g id="tree4">
+  <!-- ### decoration ### -->
+  <line x1="100" y1="0" x2="0" y2="75" style="stroke:black; fill:none" />
+  <line x1="100" y1="0" x2="100" y2="75" style="stroke:black; fill:none" />
+  <line x1="100" y1="0" x2="200" y2="75" style="stroke:black; fill:none" />
+  <circle cx="100" cy="0" r="25" style="fill:#eee;" />
+  <text x="100" y="6" style="fill:black; text-anchor:middle; font-size:18">&lt;g></text>
+
+  <!-- ### gradient inherited inside this document ###-->
+  <g class="gradClass">
+    <circle cx="0" cy="75" r="25" />
+    <text x="0" y="115" style="text-anchor:middle; fill:black; stroke:none;">local</text>
+  </g>
+
+  <!-- ### gradient inherited from the use element ###-->
+  <g>
+    <circle cx="100" cy="75" r="25" />
+    <text x="100" y="115" style="text-anchor:middle; fill:black; stroke:none;">inherited</text>
+  </g>
+
+  <!-- ### pattern defined on the circle ###-->
+  <g>
+    <circle cx="200" cy="75" r="25" class="pattClass" />
+    <text x="200" y="115" style="text-anchor:middle; fill:black; stroke:none;">explicit</text>
+  </g>
+</g>
+
+
+<!-- ###################################################################### -->
+<!-- useStylesheet.svg -->
+<!-- ###################################################################### -->
+
+<g id="tree5">
+  <!-- ### decoration ### -->
+  <line x1="100" y1="0" x2="0" y2="75" style="stroke:black; fill:none" />
+  <line x1="100" y1="0" x2="100" y2="75" style="stroke:black; fill:none" />
+  <line x1="100" y1="0" x2="200" y2="75" style="stroke:black; fill:none" />
+  <circle cx="100" cy="0" r="25" style="fill:#eee;" />
+  <text x="100" y="6" style="fill:black; text-anchor:middle; font-size:18">&lt;g></text>
+
+  <!-- ### color inherited inside this document  ###-->
+  <g class="colorOrangeStylesheet">
+    <circle cx="0" cy="75" r="25" />
+    <text x="0" y="115" style="text-anchor:middle; fill:black; stroke:none;">local</text>
+  </g>
+
+  <!-- ### color inherited from the use element  ###-->
+  <g>
+    <circle cx="100" cy="75" r="25" />
+    <text x="100" y="115" style="text-anchor:middle; fill:black; stroke:none;">inherited</text>
+  </g>
+
+  <!-- ### color defined on the circle  ###-->
+  <g>
+    <circle cx="200" cy="75" r="25" class="colorClassStylesheet"/>
+    <text x="200" y="115" style="text-anchor:middle; fill:black; stroke:none;">explicit</text>
+  </g>
+</g>
+
+<g id="tree6">
+  <!-- ### decoration ### -->
+  <line x1="100" y1="0" x2="0" y2="75" style="stroke:black; fill:none" />
+  <line x1="100" y1="0" x2="100" y2="75" style="stroke:black; fill:none" />
+  <line x1="100" y1="0" x2="200" y2="75" style="stroke:black; fill:none" />
+  <circle cx="100" cy="0" r="25" style="fill:#eee;" />
+  <text x="100" y="6" style="fill:black; text-anchor:middle; font-size:18">&lt;g></text>
+
+  <!-- ### gradient inherited inside this document ###-->
+  <g class="gradClassStylesheet">
+    <circle cx="0" cy="75" r="25" />
+    <text x="0" y="115" style="text-anchor:middle; fill:black; stroke:none;">local</text>
+  </g>
+
+  <!-- ### gradient inherited from the use element ###-->
+  <g>
+    <circle cx="100" cy="75" r="25" />
+    <text x="100" y="115" style="text-anchor:middle; fill:black; stroke:none;">inherited</text>
+  </g>
+
+  <!-- ### pattern defined on the circle ###-->
+  <g>
+    <circle cx="200" cy="75" r="25" class="pattClassStylesheet" />
+    <text x="200" y="115" style="text-anchor:middle; fill:black; stroke:none;">explicit</text>
+  </g>
+</g>
+
+
+<!-- ###################################################################### -->
+<!-- xmlBaseStyling.svg -->
+<!-- ###################################################################### -->
+
+<g id="xmlBaseStylingElement">
+  <circle cx="0" cy="0" r="30" />
+</g>
+
+
+</defs>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/resources/svg/defs2.svg 
b/tests/data/svg/batik/tests/resources/svg/defs2.svg
new file mode 100644
index 0000000..c84adea
--- /dev/null
+++ b/tests/data/svg/batik/tests/resources/svg/defs2.svg
@@ -0,0 +1,57 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   
+        http://www.apache.org/licenses/LICENSE-2.0
+   
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: defs2.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+
+<text x="225" y="50" class="title">Not a test - only contains definitions</text>
+
+<defs>
+
+<linearGradient id="linear">
+  <stop style="stop-color:blue" offset="0" />
+  <stop style="stop-color:white" offset=".5" />
+  <stop style="stop-color:gold" offset=".51" />
+  <stop style="stop-color:crimson" offset="1" />
+</linearGradient>
+
+<radialGradient id="radial">
+  <stop style="stop-color:white" offset="0" />
+  <stop style="stop-color:gold" offset=".2" />
+  <stop style="stop-color:orange" offset="1" />
+</radialGradient>
+
+<pattern id="pattern">
+  <rect x="0" y="0" width="5" height="5" style="fill:crimson" />
+  <rect x="5" y="0" width="5" height="5" style="fill:orange" />
+  <rect x="0" y="5" width="5" height="5" style="fill:gold" />
+  <rect x="5" y="5" width="5" height="5" style="fill:white" />
+</pattern>
+
+</defs>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/color/colorProfile.png 
b/tests/data/svg/batik/tests/spec/color/colorProfile.png
new file mode 100644
index 0000000..f89ba2d
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/color/colorProfile.png differ
diff --git a/tests/data/svg/batik/tests/spec/color/colorProfile.svg 
b/tests/data/svg/batik/tests/spec/color/colorProfile.svg
new file mode 100644
index 0000000..b7ce6d6
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/color/colorProfile.svg
@@ -0,0 +1,310 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This test validates that the color-profile element is handled properly.   -->
+<!-- The test applies color profiles to color definitions, raster images and   -->
+<!-- Base64 images. It also exercises the various rendering-intent options.    -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: colorProfile.svg 475685 2006-11-16 11:16:05Z cam $   -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>&lt;color-profile&gt; test</title>
+
+    <style type="text/css"><![CDATA[
+        .header { fill:rgb(240, 240, 240); stroke:black; }
+        .headerLabel {  font-family: Verdana, Helvetica; 
+                        font-size: 10;
+                        text-anchor: middle; 
+                        fill:black; stroke:none;}
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">&lt;color-profile&gt; test</text>
+
+        <defs>
+
+            <pattern id="transparencyPattern" viewBox="0 0 10 10" x="0" y="0" width="10" height="10"
+                     patternContentUnits="userSpaceOnUse" patternUnits="userSpaceOnUse">
+                <g fill="#eee" stroke="none">
+                    <rect x="0" y="0" width="5" height="5" />
+                    <rect x="5" y="5" width="5" height="5" />
+                </g>
+            </pattern>
+
+            <g id="testColors">
+                <rect y="0" x="0" width="25" height="25" fill="rgb(179, 70, 25)" />
+                <rect y="0" x="25" width="25" height="25" fill="rgb(138, 237, 76)" />
+                <rect y="0" x="50" width="25" height="25" fill="rgb(88, 35, 244)" />
+                <rect y="0" x="75" width="25" height="25" fill="rgb(168, 241, 253)" />
+                <rect y="0" x="100" width="25" height="25" fill="rgb(205, 81, 242)" />
+
+                <rect x="0" y="25" width="25" height="25" fill="rgb(234, 251, 82)" />
+                <rect x="25" y="25" width="25" height="25" fill="rgb(0, 0, 0)" />
+                <rect x="50" y="25" width="25" height="25" fill="rgb(109, 109, 109)" />
+                <rect x="75" y="25" width="25" height="25" fill="rgb(188, 188, 188)" />
+                <rect x="100" y="25" width="25" height="25" fill="rgb(255, 255, 255)" />
+            </g>
+
+            <color-profile name="changeColorAuto" 
+                           rendering-intent="auto"
+                           xlink:href="../../resources/icc/changeColor.icm"/>
+
+            <color-profile name="changeColorPerceptual" 
+                           rendering-intent="perceptual"
+                           xlink:href="../../resources/icc/changeColor.icm"/>
+
+            <color-profile name="changeColorAbsoluteColorimetric" 
+                           rendering-intent="absolute-colorimetric"
+                           xlink:href="../../resources/icc/changeColor.icm"/>
+
+            <color-profile name="changeColorRelativeColorimetric" 
+                           rendering-intent="relative-colorimetric"
+                           xlink:href="../../resources/icc/changeColor.icm"/>
+
+            <color-profile name="changeColorSaturation" 
+                           rendering-intent="saturation"
+                           xlink:href="../../resources/icc/changeColor.icm"/>
+
+        </defs>
+
+        <g transform="translate(95, 80)">
+
+        <g id="grid" stroke="black" fill="none">
+            <rect x="0" y="0" width="300" height="350" fill="url(#transparencyPattern)"/>
+        
+            <g>
+                <!-- Top labels -->
+                <rect class="header" x="0" y="-20" width="150" height="20" />
+                <text class="headerLabel" x="75" y="-5">raster image</text>
+                <g transform="translate(150, 0)">
+                    <rect class="header" x="0" y="-20" width="150" height="20" />
+                    <text class="headerLabel" x="75" y="-5">icc color values</text>
+                </g>
+
+                <!-- Left labels -->
+                <rect class="header" x="-40" y="0" width="20" height="350" />
+                <text class="headerLabel" x="-25" y="175" transform="rotate(-90, -25, 
175)">rendering-intent</text>
+                <rect class="header" x="-20" y="0" width="20" height="70" />
+                <text class="headerLabel" x="-5" y="35" transform="rotate(-90, -5, 35)">auto</text>
+                <g transform="translate(0, 70)">
+                    <rect class="header" x="-20" y="0" width="20" height="70" />
+                    <text class="headerLabel" x="-5" y="35" transform="rotate(-90, -5, 35)">perceptual</text>
+                </g>        
+                <g transform="translate(0, 140)">
+                    <rect class="header" x="-20" y="0" width="20" height="70" />
+                    <text class="headerLabel" x="-5" y="35" transform="rotate(-90, -5, 35)">saturation</text>
+                </g>        
+                <g transform="translate(0, 210)">
+                    <rect class="header" x="-20" y="0" width="20" height="70" />
+                    <text class="headerLabel" x="-5" y="35" transform="rotate(-90, -5, 35)">rel. col.</text>
+                </g>        
+                <g transform="translate(0, 280)">
+                    <rect class="header" x="-20" y="0" width="20" height="70" />
+                    <text class="headerLabel" x="-5" y="35" transform="rotate(-90, -5, 35)">abs. col.</text>
+                </g>        
+
+                <line x1="150" y1="0" x2="150" y2="350" />
+                <line x1="0" y1="70" x2="300" y2="70" />
+                <line x1="0" y1="140" x2="300" y2="140" />
+                <line x1="0" y1="210" x2="300" y2="210" />
+                <line x1="0" y1="280" x2="300" y2="280" />
+            </g>
+
+        </g>
+
+        <!-- ================================================ -->
+        <!-- Images with the same profile and various intent  -->
+        <!-- ================================================ -->
+        <image xlink:href="../../resources/images/toBeProfiled.png" width="125" height="50"  x="12" y="10" 
color-profile="changeColorAuto" />
+        <image xlink:href="../../resources/images/toBeProfiled.png" width="125" height="50"  x="12" y="80" 
color-profile="changeColorPerceptual" />
+        <image xlink:href="../../resources/images/toBeProfiled.png" width="125" height="50"  x="12" y="150" 
color-profile="changeColorSaturation" />
+        <image xlink:href="../../resources/images/toBeProfiled.png" width="125" height="50"  x="12" y="220" 
color-profile="changeColorRelativeColorimetric" />
+        <!-- <image xlink:href="../../resources/images/toBeProfiled.png" width="125" height="50"  x="12" 
y="290" color-profile="changeColorAbsoluteColorimetric" /> -->
+
+        <image width="125" height="50" x="12" y="290" color-profile="changeColorAbsoluteColorimetric" 
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAAAyCAYAAABxjtScAAAOTklEQVR42u0cy5Lc
+thENch67WtmlSqlSjsvlQz7BOaRyzTnJJ+SWm38gf+KfSG75CvsPck4qJ8VeaWd3
+ZohON4gmGyBAgqNZRXaZqtUAjcar32hixpifn5+fn5+f/gPffGU2NYivDgbe3Bi8
+ZJLvaJLP9gfg8r8fb/A5NvLdb755dmL95dvL+v1rv4dfPT5iDd4f/vyIz72P9tXd
+69325GARc2fML1X1uLHI/fiT6zKGwDXer7/cwYO783if0d+tPVF94+tcFlyG6bqG
+Szltl7bPf/Glh++s8/UnZ0HK8jBM4+Tahu2qcQR2+sLh3vb1RzeOITD9SDu3fZHA
+BK5x+PM11R8/t7O8OH0/jrH5VK3t++me0nau82druuamezE2dgfA5gajiQXGnyOQ
+GGob02x73GPXoMD1eIb6PJxfDPUtNnjubsyW+0BHzN8OcEN1akOGC4zLvi083Ffa
+IyZtdni+BTizJD8gNi8BDH0ybMChuh8jwNrQPuAr2DnT5xNHxOsQNwDAqz5hX2bY
+QGiuE/wT6McTfL8fYQC1M500Dn9yHQ5viSW0nq5v4zJ/Sp34MLYdu2He7RZinlE/
+d+yM9N3y5Adnbl/ddq3dkPIczdDBEn27MzHZ9czsLCDhGMbBTWzePc5x7Cf4eAYj
+/Rne4gbbwKizsUM5he8N9YEe3/eltr2xxihZO5MAeDz1MMzuaGeuJ5Dd0SZpv6c9
+4jYQ6ETLYrgnUNfXuz2XiUkKjy3atgvMUX14bLvbm1sYict+kfiFAuOyt0ZU1+WJ
+BgpjCKehdu1f7a3fsVLtIFAEtCQ9uo3L7jTu2WTauM/gy50BwPO5JT7ekYW04Kzf
+Ku2TBkYjM1OXftIGzAZHYiN1ZxgEGNelb9pmtw5dkCtrqHQind6QMIWy4Ah8c+oF
+gcvNCYeyJ9hp1HINO7vWD8Qy53jDtIhGlcELlhJYCBqcabOhjeWY2z0dGI6NObtR
+q5lhyE9gLAZGn32bDbBRGCKFgZ6B0iI4gB39hfFo9KY1vs5lUTlp9+U29HNjn8F3
+N7y+0exbR1NCe2qJhC9aYtHZYC/fwNpJY3QyBY710MZQR6vkckfwHkYWQvWRsfwG
+6V8q6k0i9o2GJzBn+l1aVvnQlsJs25lU0k1guKzHC0QgmAv1GG9kuFHSLXBSS55v
+bOI1nomwTT8Bt5Ff6InfjFbR47SxleQK4wpcxm1sm4+4hak2YbKqSzntJ3AKT5rm
+7J7apjF31LVtvZcZNZbVRDTfK74d2zw8tLcWxRYMOEO/YbypD3baZs881lO9x2VR
+5zr3hYF4wtCG4CNhrbdmRBOIBIGGyp9AcuET4wvceSXKIDW99wETM9viKB0MkzqG
+NTI+wzUVoPci5BrHNXZBGhqxBJ3Aw2LQBHwc2iLfHvjDOMTrluqblkT8JZIAoHHk
+yZkkgYz8Cb31AdnAaGEGu4SRUjBHECI44bmgdzYwzwWfnNYFptudSSnNpwVM/BeN
+43Dwd9THm3Vrpv7Urjja8DjjGIigGFk8A8faPDA4UfLgOac4rJZ89gHbgV4vBtOI
+rhniHZO05ZVmxCFWtGCbhhTc3AGHaI5CBp6Ujg8oR4vYWOc3GY4bvg/mcVlYnddQ
+jJiv2xXzUdEObYbOOZhTAdNoGfyf+GQW09HWx1yI4GMfFjpVLpymwCmtthkSsGkK
+cMF1NmPuuY0DNlZ3QqD5esa7wTyDcBGVy9Tt1k1N/DAOxdfEJ2gt2Jfk6Db0eRoU
+1hb0QSQ9NZEEj+JK8FZX4brBRAuL8loCHteqgdGb8lizUxh6W4QDczUjgxQBqjbN
+2In6qT6pAGozLJrsy3aq2ZEGW9XfDkI49pe+to+bJdAQMnsDDWNMHagr5r13pBD3
+jegaXAPhbZi3rOkvCEoHFTj6RWC/4MnGtMnCeGMmpzrSnxdlABIN9EKAJuckrfjv
+oY/WvNGEQoQD/rTnQhxhvZHkz9TkjrOMuKbQzm0wEI4josQUK0ZLXegCscmHFFev
+S9pDZJ6h5sj/SK2mCokZb6MElw/d6FrwTLc7atqoRQyIkEwOkQsvTjQsEPrgKYyJ
+g4YFU4Cp+R0PMSOeSYK2VCP9WDAenTgU6csYab6eR049IWyJ2kMACmCUqQQQHzAb
+gWIlTO/d6DWOngkipudhU+GYGC6joivg0/zZ+3RC2XHG8RlT/IvEQLMcP8wRUqUQ
+suNeUp+2XS8tXpoHnzHzDt6im2NLkvWSxH5P9vGxjn2x5pSkN/atOJj4GbGIcEYN
+BKhcV5nAQeZy0TcqeZyLzn0QgZM4AGF+6tT8w1JfMFArM7BeznDPOT4y7/CSdntD
+Y2x1hFtiaonhyuRHJhAyhzs2lDiRadCmPTLq0kdpXOIbfTIga8ojfwMxXDk9UP4q
+E8UblReIYSVapHPPBY+xW8kEipl4ICdIy0IHe6o9cfrnUyLXDcj7AJRIMTI5KJGX
+uDcNNxnc4VgPg1vHNM7TTMIkaEutB2b0OmZy1oVk4w1cVqFoHajsY26MfGySF570
+mIjpeIhF0y/huzeJhSQTJtZI96HKDf1PTPcvhMytCQlOJWKxWcpQIUfBScIhowow
+k7yAlaZbRc21rulSd5EGshMLlwl+F/c0we2jRczaeq10BZzSAgP8lgZ54HT+J4Yj
+eGNaEzN6PJeX4jJUaU2MGIeZHcECAbGAV8MbHeEuJMkmeHORMeZOJCvksdR/vl6i
+G8zOPBfRBx4hndTgLTP6zjMdMgIKC0yBbIAOKxhYw+C5Y4gxMwmXUhxSMMeTxM7E
+B2PZd8+toYRXiJGwmBRLFa6kgKXEGgAr9/fs0+/C39po8KN7YEUbVLRB3kReugZI
+snrV5qLK50HVGF7B297Omxvj77xUMR5r11rIKZVdBn5QwZsz3fDMcy5ZOrgK3af9
+mc+3zPQ9BQ/85u5mxj9gwWzXmWxQfhOKG0SFV+Nvc8TAlX5+zb5q9HDOZ+OFY5Ti
+jDXjhADQ83nb+gCufzZXIMJc/vea1htXrg0qg0WYEXqzgiawkmZzAnKJIM4Z/k37
+23/8zmZOPms9xizuHzd/u7a5nLjEr7/+66Vuv9pjvv72T+u96Mo9ffX33196cq2e
+pw1XvADje1y4QltwQUvMgtmtMW2LWoSI8B7954868RxzLuWaR88aq7PqdGP6OxXI
+pp3fo2/D58fy4JWl+31y1j+lh/l8ZqY/8fVt86xv2X4SJ0H8yOasCVLTx/OZmI4H
+vubYf86uA573xd+Pghk/9ofvWD1yGvahJyC8W5YiWEpp1hyLroE38cWI9QIJ6j5d
+rp/EOBm8mqMYVJ7NrxEL1NAzHYdz7/g23BZ+CH3kjV4yISY3gaRd10tt1UfANSYr
+vqEDcBFhAmNzjI9wAWBpzZdaHqiIZ7BCQWqOy9gzHeHeX0xHeBhbYHJHDgdGDq81
+A5c1tYfMS3h7BjVJlbXHkjUvROayWzWniWiO/ppHuM+krupogRB4Di+FFwRpzpos
+WUVYCFw563rf0pJ+IBbzl4cOepKl81vN9Sa8foLmWrHARWvR1qRkWVJ4Ld4H2gOf
+0N6yeb+nFZzoABcFcrkvIOj76i73hQMz/0WG900jVvismlega3PuSxo3x5Ca3MZc
+2vmSM/7cfCev6WSCf6ACX39+jEeCxEZA+PIARteRC1rNzO6vJn/YY3FtTr02eFwM
+FjOJLVODkwaLSfuS8OKF2h80Hc094Z7Gc7pmZhqYaWFAKFNoEsjNZcaWMkq1mjvx
+p5lMWtYHp/5X8SOLVxp7zt/3F6rj9YmJL617pSmvEd7BvL/z3580+JSxdjjH4Cpv
+flkmbCnNCRniZ5kN6l6bMDOjmJgyXK8jFRq9vpxvVuuILErBj4/X9ddnFpcylymt
++NcE3lEgB+9oiRzIncpHttnLrwtCAjVvsd47yZJqTcrAVLtywiECkdN8EawLXMvV
+A0qz/i2erIm/On/oNb1n+HEal4/f2Mxn5CbX3DCGI84ETDXJiRq/lvrEbEJlxmdO
+2pOXN8LsWt+/9th4yRn/0mTXVs7pxHQ8Gv4diMX9LL9N9N8ZHpj+4YK4xCxf1L9g
+yp/1EWFLbP+lL5xwwdRvevNOjt2g/yLjObBt8g3RdfPaaxzIa45iqd+NnOyatGzO
+dOcibrzw1cNShJ9x9nihZi/Rr/FMp51wGpZ/5ONsDCAuB2WZ1OxVGVwrBLjEPOcc
+WDv9VirDvXiGNo2XtkXibOt/0kDG0VYoN+b77HVlzp1hbWC6e9dLgI/gK3Pppe+a
+5wQAoTbEr8hHVwdOJUYWBMH3n8Pjetd1pmn6X4Kgcv+zIE2T/6pzIiDMdO6f6yNj
+FUz0UtALK2jav2XDpnkL/Q8pdf+ntOhVLkwQUxZhUl/CLeERsybl9G1c6dF917Rd
++eGJnlrjuncIDTnizmXkFafa/NEKAWqTqjX2mkHX+XyejNfyzzTxeSjT9oHptjQ/
+m59Ty2/XKHinSuv6jdGRHeT3CdDXe7+0Sb7tEcOlPvqxTc3d7TWZptn30KxsOY1J
+YalZXjLTaV+t1FQnQ9l4s83lMA5IeUHzl/BqjoBLwV1KL/7sWnO2D0jHN8QDMfuG
+trRLeu8Ko+6UABwC4W9A6hjfvoIVklmTmp3A2RQ/PT1FRNjtdiAwLvuU1PGIXBZ8
+gWtTLvC0b+qnuS6M1221AR9bDu57Rc1e0nafoGn/+9gdGjhCh9uJW2e4l2jfFtfH
+PnLm9y1DDkBw3ycYW5OYIGZ6bSdGgYYRw1DKYhHu7+8hMBMFnmb3BEef4Q+Hw+Li
+ttstsGClsGStKHAaE6Vd9VvzwqX21qzgurb7zz+fShFcN1PX5cfwc9778PPeub5X
+9EvZvDP71Tdv3kBOGOR59epVhJNjeO4RPI1P40REpbGhNCbDGF9wSuOGMa8RF8zG
+Rf8DTS4R1NiSnhkAAAAASUVORK5CYIIR
+" />
+
+        <!-- ================================================ -->
+        <!-- Colors defined with icc profiles                 -->
+        <!-- ================================================ -->
+        <g transform="translate(163, 10)">
+            <rect x="0" y="0" width="25" height="25" fill="rgb(179, 70, 25) icc-color(changeColorAuto, 
0.702, 0.2745, 0.098)" />
+            <rect x="25" y="0" width="25" height="25" fill="rgb(138, 237, 76) icc-color(changeColorAuto, 
0.5412, 0.9294, 0.298)" />
+            <rect x="50" y="0" width="25" height="25" fill="rgb(88, 35, 244) icc-color(changeColorAuto, 
0.3451, 0.1373, 0.9569)" />
+            <rect x="75" y="0" width="25" height="25" fill="rgb(168, 241, 253) icc-color(changeColorAuto, 
0.6588, 0.9451, 0.9922)" />
+            <rect x="100" y="0" width="25" height="25" fill="rgb(205, 81, 242) icc-color(changeColorAuto, 
0.8039, 0.3176, 0.949)" />
+            <rect x="0" y="25" width="25" height="25" fill="rgb(234, 251, 82) icc-color(changeColorAuto, 
0.9176, 0.9843, 0.3216)" />
+            <rect x="25" y="25" width="25" height="25" fill="red icc-color(changeColorAuto, 0.0, 0.0, 0.0)" 
/>
+            <rect x="50" y="25" width="25" height="25" fill="rgb(109, 109, 109) icc-color(changeColorAuto, 
0.4275, 0.4275, 0.4275)" />
+            <rect x="75" y="25" width="25" height="25" fill="rgb(188, 188, 188) icc-color(changeColorAuto, 
0.7373, 0.7373, 0.7373)" />
+            <rect x="100" y="25" width="25" height="25" fill="rgb(255, 255, 255) icc-color(changeColorAuto, 
1.0, 1.0, 1.0)" />
+        </g>
+
+        <g transform="translate(163, 80)">
+            <rect x="0" y="0" width="25" height="25" fill="rgb(179, 70, 25) icc-color(changeColorPerceptual, 
0.702, 0.2745, 0.098)" />
+            <rect x="25" y="0" width="25" height="25" fill="rgb(138, 237, 76) 
icc-color(changeColorPerceptual, 0.5412, 0.9294, 0.298)" />
+            <rect x="50" y="0" width="25" height="25" fill="rgb(88, 35, 244) 
icc-color(changeColorPerceptual, 0.3451, 0.1373, 0.9569)" />
+            <rect x="75" y="0" width="25" height="25" fill="rgb(168, 241, 253) 
icc-color(changeColorPerceptual, 0.6588, 0.9451, 0.9922)" />
+            <rect x="100" y="0" width="25" height="25" fill="rgb(205, 81, 242) 
icc-color(changeColorPerceptual, 0.8039, 0.3176, 0.949)" />
+            <rect x="0" y="25" width="25" height="25" fill="rgb(234, 251, 82) 
icc-color(changeColorPerceptual, 0.9176, 0.9843, 0.3216)" />
+            <rect x="25" y="25" width="25" height="25" fill="rgb(0, 0, 0) icc-color(changeColorPerceptual, 
0.0, 0.0, 0.0)" />
+            <rect x="50" y="25" width="25" height="25" fill="rgb(109, 109, 109) 
icc-color(changeColorPerceptual, 0.4275, 0.4275, 0.4275)" />
+            <rect x="75" y="25" width="25" height="25" fill="rgb(188, 188, 188) 
icc-color(changeColorPerceptual, 0.7373, 0.7373, 0.7373)" />
+            <rect x="100" y="25" width="25" height="25" fill="rgb(255, 255, 255) 
icc-color(changeColorPerceptual, 1.0, 1.0, 1.0)" />
+        </g>
+
+
+        <g transform="translate(163, 150)">
+            <rect x="0" y="0" width="25" height="25" fill="rgb(179, 70, 25) icc-color(changeColorSaturation, 
0.702, 0.2745, 0.098)" />
+            <rect x="25" y="0" width="25" height="25" fill="rgb(138, 237, 76) 
icc-color(changeColorSaturation, 0.5412, 0.9294, 0.298)" />
+            <rect x="50" y="0" width="25" height="25" fill="rgb(88, 35, 244) 
icc-color(changeColorSaturation, 0.3451, 0.1373, 0.9569)" />
+            <rect x="75" y="0" width="25" height="25" fill="rgb(168, 241, 253) 
icc-color(changeColorSaturation, 0.6588, 0.9451, 0.9922)" />
+            <rect x="100" y="0" width="25" height="25" fill="rgb(205, 81, 242) 
icc-color(changeColorSaturation, 0.8039, 0.3176, 0.949)" />
+            <rect x="0" y="25" width="25" height="25" fill="rgb(234, 251, 82) 
icc-color(changeColorSaturation, 0.9176, 0.9843, 0.3216)" />
+            <rect x="25" y="25" width="25" height="25" fill="rgb(0, 0, 0) icc-color(changeColorSaturation, 
0.0, 0.0, 0.0)" />
+            <rect x="50" y="25" width="25" height="25" fill="rgb(109, 109, 109) 
icc-color(changeColorSaturation, 0.4275, 0.4275, 0.4275)" />
+            <rect x="75" y="25" width="25" height="25" fill="rgb(188, 188, 188) 
icc-color(changeColorSaturation, 0.7373, 0.7373, 0.7373)" />
+            <rect x="100" y="25" width="25" height="25" fill="rgb(255, 255, 255) 
icc-color(changeColorSaturation, 1.0, 1.0, 1.0)" />
+        </g>
+
+        <g transform="translate(163, 220)">
+            <rect x="0" y="0" width="25" height="25" fill="rgb(179, 70, 25) 
icc-color(changeColorRelativeColorimetric, 0.702, 0.2745, 0.098)" />
+            <rect x="25" y="0" width="25" height="25" fill="rgb(138, 237, 76) 
icc-color(changeColorRelativeColorimetric, 0.5412, 0.9294, 0.298)" />
+            <rect x="50" y="0" width="25" height="25" fill="rgb(88, 35, 244) 
icc-color(changeColorRelativeColorimetric, 0.3451, 0.1373, 0.9569)" />
+            <rect x="75" y="0" width="25" height="25" fill="rgb(168, 241, 253) 
icc-color(changeColorRelativeColorimetric, 0.6588, 0.9451, 0.9922)" />
+            <rect x="100" y="0" width="25" height="25" fill="rgb(205, 81, 242) 
icc-color(changeColorRelativeColorimetric, 0.8039, 0.3176, 0.949)" />
+            <rect x="0" y="25" width="25" height="25" fill="rgb(234, 251, 82) 
icc-color(changeColorRelativeColorimetric, 0.9176, 0.9843, 0.3216)" />
+            <rect x="25" y="25" width="25" height="25" fill="rgb(0, 0, 0) 
icc-color(changeColorRelativeColorimetric, 0.0, 0.0, 0.0)" />
+            <rect x="50" y="25" width="25" height="25" fill="rgb(109, 109, 109) 
icc-color(changeColorRelativeColorimetric, 0.4275, 0.4275, 0.4275)" />
+            <rect x="75" y="25" width="25" height="25" fill="rgb(188, 188, 188) 
icc-color(changeColorRelativeColorimetric, 0.7373, 0.7373, 0.7373)" />
+            <rect x="100" y="25" width="25" height="25" fill="rgb(255, 255, 255) 
icc-color(changeColorRelativeColorimetric, 1.0, 1.0, 1.0)" />
+        </g>
+
+        <g transform="translate(163, 290)">
+            <rect x="0" y="0" width="25" height="25" fill="rgb(179, 70, 25) 
icc-color(changeColorAbsoluteColorimetric, 0.702, 0.2745, 0.098)" />
+            <rect x="25" y="0" width="25" height="25" fill="rgb(138, 237, 76) 
icc-color(changeColorAbsoluteColorimetric, 0.5412, 0.9294, 0.298)" />
+            <rect x="50" y="0" width="25" height="25" fill="rgb(88, 35, 244) 
icc-color(changeColorAbsoluteColorimetric, 0.3451, 0.1373, 0.9569)" />
+            <rect x="75" y="0" width="25" height="25" fill="rgb(168, 241, 253) 
icc-color(changeColorAbsoluteColorimetric, 0.6588, 0.9451, 0.9922)" />
+            <rect x="100" y="0" width="25" height="25" fill="rgb(205, 81, 242) 
icc-color(changeColorAbsoluteColorimetric, 0.8039, 0.3176, 0.949)" />
+            <rect x="0" y="25" width="25" height="25" fill="rgb(234, 251, 82) 
icc-color(changeColorAbsoluteColorimetric, 0.9176, 0.9843, 0.3216)" />
+            <rect x="25" y="25" width="25" height="25" fill="rgb(0, 0, 0) 
icc-color(changeColorAbsoluteColorimetric, 0.0, 0.0, 0.0)" />
+            <rect x="50" y="25" width="25" height="25" fill="rgb(109, 109, 109) 
icc-color(changeColorAbsoluteColorimetric, 0.4275, 0.4275, 0.4275)" />
+            <rect x="75" y="25" width="25" height="25" fill="rgb(188, 188, 188) 
icc-color(changeColorAbsoluteColorimetric, 0.7373, 0.7373, 0.7373)" />
+            <rect x="100" y="25" width="25" height="25" fill="rgb(255, 255, 255) 
icc-color(changeColorAbsoluteColorimetric, 1.0, 1.0, 1.0)" />
+        </g>
+   
+        <use xlink:href="#testColors" x="13" y="360" />
+        <g class="headerLabel" style="text-anchor:start" transform="translate(152.5, 385)">
+            <text>Input colors for both </text>
+            <text y="1.1em">raster and icc colors</text>
+        </g>
+    </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/color/colors.png 
b/tests/data/svg/batik/tests/spec/color/colors.png
new file mode 100644
index 0000000..5396bdd
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/color/colors.png differ
diff --git a/tests/data/svg/batik/tests/spec/color/colors.svg 
b/tests/data/svg/batik/tests/spec/color/colors.svg
new file mode 100644
index 0000000..983ce49
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/color/colors.svg
@@ -0,0 +1,189 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ===================================================================== -->
+<!-- SVG Color Identifiers                                                 -->
+<!--                                                                       -->
+<!-- @author: Stephane Hillion                                             -->
+<!-- @version: $Id: colors.svg 475477 2006-11-15 22:44:28Z cam $                                             
           -->
+<!-- ===================================================================== -->
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="800" height="600">
+<title>SVG Color Identifiers</title>
+  <style type="text/css"><![CDATA[
+    text {
+      font-size:   16;
+      font-weight: bold
+    }
+  ]]>
+  </style>
+  <rect width="100%" height="100%" style="fill: black"/>
+  <text x="200" y="30" style="font-size: 32; fill:white">SVG Color Identifiers</text>
+  <line x1="10" y1="35" x2="790" y2="35" style="stroke: white"/>
+  <text x="10"  y="50"  style="fill: AliceBlue">AliceBlue</text>
+  <text x="10"  y="65"  style="fill: AntiqueWhite">AntiqueWhite</text>
+  <text x="10"  y="80"  style="fill: Aqua">Aqua</text>
+  <text x="10"  y="95"  style="fill: Aquamarine">Aquamarine</text>
+  <text x="10"  y="110" style="fill: Azure">Azure</text>
+  <text x="10"  y="125" style="fill: Beige">Beige</text>
+  <text x="10"  y="140" style="fill: Azure">Bisque</text>
+  <text x="10"  y="155" style="fill: Black; stroke:White">Black</text>
+  <text x="10"  y="170" style="fill: BlancheDalmond">BlancheDalmond</text>
+  <text x="10"  y="185" style="fill: Blue">Blue</text>
+  <text x="10"  y="200" style="fill: BlueViolet">BlueViolet</text>
+  <text x="10"  y="215" style="fill: Brown">Brown</text>
+  <text x="10"  y="230" style="fill: BurlyWood">BurlyWood</text>
+  <text x="10"  y="245" style="fill: CadetBlue">CadetBlue</text>
+  <text x="10"  y="260" style="fill: Chartreuse">Chartreuse</text>
+  <text x="10"  y="275" style="fill: Chocolate">Chocolate</text>
+  <text x="10"  y="290" style="fill: Coral">Coral</text>
+  <text x="10"  y="305" style="fill: CornFlowerBlue">CornFlowerBlue</text>
+  <text x="10"  y="320" style="fill: CornSilk">CornSilk</text>
+  <text x="10"  y="335" style="fill: Crimson">Crimson</text>
+  <text x="10"  y="350" style="fill: Cyan">Cyan</text>
+  <text x="10"  y="365" style="fill: DarkBlue">DarkBlue</text>
+  <text x="10"  y="380" style="fill: DarkCyan">DarkCyan</text>
+  <text x="10"  y="395" style="fill: DarkGoldenRod">DarkGoldenRod</text>
+  <text x="10"  y="410" style="fill: DarkGray">DarkGray</text>
+  <text x="10"  y="425" style="fill: DarkGreen">DarkGreen</text>
+  <text x="10"  y="440" style="fill: DarkGrey">DarkGrey</text>
+  <text x="10"  y="455" style="fill: DarkKhaki">DarkKhaki</text>
+  <text x="10"  y="470" style="fill: DarkMagenta">DarkMagenta</text>
+  <text x="10"  y="485" style="fill: DarkOliveGreen">DarkOliveGreen</text>
+  <text x="10"  y="500" style="fill: DarkOrange">DarkOrange</text>
+  <text x="10"  y="515" style="fill: DarkOrchid">DarkOrchid</text>
+  <text x="10"  y="530" style="fill: DarkRed">DarkRed</text>
+  <text x="10"  y="545" style="fill: DarkSalmon">DarkSalmon</text>
+  <text x="10"  y="560" style="fill: DarkSeaGreen">DarkSeaGreen</text>
+  <text x="10"  y="575" style="fill: DarkSlateBlue">DarkSlateBlue</text>
+  <text x="10"  y="590" style="fill: DarkSlateGray">DarkSlateGray</text>
+  <text x="190" y="50"  style="fill: DarkSlateGrey">DarkSlateGrey</text>
+  <text x="190" y="65"  style="fill: DarkTurquoise">DarkTurquoise</text>
+  <text x="190" y="80"  style="fill: DarkViolet">DarkViolet</text>
+  <text x="190" y="95"  style="fill: DeepPink">DeepPink</text>
+  <text x="190" y="110" style="fill: DeepSkyBlue">DeepSkyBlue</text>
+  <text x="190" y="125" style="fill: DimGray">DimGray</text>
+  <text x="190" y="140" style="fill: DimGrey">DimGrey</text>
+  <text x="190" y="155" style="fill: DodgerBlue">DodgerBlue</text>
+  <text x="190" y="170" style="fill: FireBrick">FireBrick</text>
+  <text x="190" y="185" style="fill: FloralWhite">FloralWhite</text>
+  <text x="190" y="200" style="fill: ForestGreen">ForestGreen</text>
+  <text x="190" y="215" style="fill: Fuchsia">Fuchsia</text>
+  <text x="190" y="230" style="fill: Gainsboro">Gainsboro</text>
+  <text x="190" y="245" style="fill: GhostWhite">GhostWhite</text>
+  <text x="190" y="260" style="fill: Gold">Gold</text>
+  <text x="190" y="275" style="fill: GoldenRod">GoldenRod</text>
+  <text x="190" y="290" style="fill: Gray">Gray</text>
+  <text x="190" y="305" style="fill: Green">Green</text>
+  <text x="190" y="320" style="fill: Grey">Grey</text>
+  <text x="190" y="335" style="fill: GreenYellow">GreenYellow</text>
+  <text x="190" y="350" style="fill: HoneyDew">HoneyDew</text>
+  <text x="190" y="365" style="fill: HotPink">HotPink</text>
+  <text x="190" y="380" style="fill: IndianRed">IndianRed</text>
+  <text x="190" y="395" style="fill: Indigo">Indigo</text>
+  <text x="190" y="410" style="fill: Ivory">Ivory</text>
+  <text x="190" y="425" style="fill: Khaki">Khaki</text>
+  <text x="190" y="440" style="fill: Lavender">Lavender</text>
+  <text x="190" y="455" style="fill: LavenderBlush">LavenderBlush</text>
+  <text x="190" y="470" style="fill: LawnGreen">LawnGreen</text>
+  <text x="190" y="485" style="fill: LemonChiffon">LemonChiffon</text>
+  <text x="190" y="500" style="fill: LightBlue">LightBlue</text>
+  <text x="190" y="515" style="fill: LightCoral">LightCoral</text>
+  <text x="190" y="530" style="fill: LightCyan">LightCyan</text>
+  <text x="190" y="545" style="fill: LightGoldenRodYellow">LightGoldenRodYellow</text>
+  <text x="190" y="560" style="fill: LightGray">LightGray</text>
+  <text x="190" y="575" style="fill: LightGreen">LightGreen</text>
+  <text x="190" y="590" style="fill: LightGrey">LightGrey</text>
+  <text x="410" y="50"  style="fill: LightPink">LightPink</text>
+  <text x="410" y="65"  style="fill: LightSalmon">LightSalmon</text>
+  <text x="410" y="80"  style="fill: LightSeaGreen">LightSeaGreen</text>
+  <text x="410" y="95"  style="fill: LightSkyBlue">LightSkyBlue</text>
+  <text x="410" y="110" style="fill: LightSlateGray">LightSlateGray</text>
+  <text x="410" y="125" style="fill: LightSlateGrey">LightSlateGrey</text>
+  <text x="410" y="140" style="fill: LightSteelBlue">LightSteelBlue</text>
+  <text x="410" y="155" style="fill: LightYellow">LightYellow</text>
+  <text x="410" y="170" style="fill: Lime">Lime</text>
+  <text x="410" y="185" style="fill: LimeGreen">LimeGreen</text>
+  <text x="410" y="200" style="fill: Linen">Linen</text>
+  <text x="410" y="215" style="fill: Magenta">Magenta</text>
+  <text x="410" y="230" style="fill: Maroon">Maroon</text>
+  <text x="410" y="245" style="fill: MediumAquamarine">MediumAquamarine</text>
+  <text x="410" y="260" style="fill: MediumBlue">MediumBlue</text>
+  <text x="410" y="275" style="fill: MediumOrchid">MediumOrchid</text>
+  <text x="410" y="290" style="fill: MediumPurple">MediumPurple</text>
+  <text x="410" y="305" style="fill: MediumSeaGreen">MediumSeaGreen</text>
+  <text x="410" y="320" style="fill: MediumSlateBlue">MediumSlateBlue</text>
+  <text x="410" y="335" style="fill: MediumSpringGreen">MediumSpringGreen</text>
+  <text x="410" y="350" style="fill: MediumTurquoise">MediumTurquoise</text>
+  <text x="410" y="365" style="fill: MediumVioletRed">MediumVioletRed</text>
+  <text x="410" y="380" style="fill: MidnightBlue">MidnightBlue</text>
+  <text x="410" y="395" style="fill: MintCream">MintCream</text>
+  <text x="410" y="410" style="fill: MistyRose">MistyRose</text>
+  <text x="410" y="425" style="fill: Moccasin">Moccasin</text>
+  <text x="410" y="440" style="fill: NavajoWhite">NavajoWhite</text>
+  <text x="410" y="455" style="fill: Navy">Navy</text>
+  <text x="410" y="470" style="fill: OldLace">OldLace</text>
+  <text x="410" y="485" style="fill: Olive">Olive</text>
+  <text x="410" y="500" style="fill: OliveDrab">OliveDrab</text>
+  <text x="410" y="515" style="fill: Orange">Orange</text>
+  <text x="410" y="530" style="fill: OrangeRed">OrangeRed</text>
+  <text x="410" y="545" style="fill: Orchid">Orchid</text>
+  <text x="410" y="560" style="fill: PaleGoldenRod">PaleGoldenRod</text>
+  <text x="410" y="575" style="fill: PaleGreen">PaleGreen</text>
+  <text x="410" y="590" style="fill: PaleTurquoise">PaleTurquoise</text>
+  <text x="620" y="50"  style="fill: PaleVioletRed">PaleVioletRed</text>
+  <text x="620" y="65"  style="fill: PapayaWhip">PapayaWhip</text>
+  <text x="620" y="80"  style="fill: PeachPuff">PeachPuff</text>
+  <text x="620" y="95"  style="fill: Peru">Peru</text>
+  <text x="620" y="110" style="fill: Pink">Pink</text>
+  <text x="620" y="125" style="fill: Plum">Plum</text>
+  <text x="620" y="140" style="fill: PowderBlue">PowderBlue</text>
+  <text x="620" y="155" style="fill: Purple">Purple</text>
+  <text x="620" y="170" style="fill: Red">Red</text>
+  <text x="620" y="185" style="fill: RosyBrown">RosyBrown</text>
+  <text x="620" y="200" style="fill: RoyalBlue">RoyalBlue</text>
+  <text x="620" y="215" style="fill: SaddleBrown">SaddleBrown</text>
+  <text x="620" y="230" style="fill: Salmon">Salmon</text>
+  <text x="620" y="245" style="fill: SandyBrown">SandyBrown</text>
+  <text x="620" y="260" style="fill: SeaGreen">SeaGreen</text>
+  <text x="620" y="275" style="fill: SeaShell">SeaShell</text>
+  <text x="620" y="290" style="fill: Sienna">Sienna</text>
+  <text x="620" y="305" style="fill: Silver">Silver</text>
+  <text x="620" y="320" style="fill: SkyBlue">SkyBlue</text>
+  <text x="620" y="335" style="fill: SlateBlue">SlateBlue</text>
+  <text x="620" y="350" style="fill: SlateGray">SlateGray</text>
+  <text x="620" y="365" style="fill: SlateGrey">SlateGrey</text>
+  <text x="620" y="380" style="fill: Snow">Snow</text>
+  <text x="620" y="395" style="fill: SpringGreen">SpringGreen</text>
+  <text x="620" y="410" style="fill: SteelBlue">SteelBlue</text>
+  <text x="620" y="425" style="fill: Tan">Tan</text>
+  <text x="620" y="440" style="fill: Teal">Teal</text>
+  <text x="620" y="455" style="fill: Thistle">Thistle</text>
+  <text x="620" y="470" style="fill: Tomato">Tomato</text>
+  <text x="620" y="485" style="fill: Turquoise">Turquoise</text>
+  <text x="620" y="500" style="fill: Violet">Violet</text>
+  <text x="620" y="515" style="fill: Wheat">Wheat</text>
+  <text x="620" y="530" style="fill: White">White</text>
+  <text x="620" y="545" style="fill: WhiteSmoke">WhiteSmoke</text>
+  <text x="620" y="560" style="fill: Yellow">Yellow</text>
+  <text x="620" y="575" style="fill: YellowGreen">YellowGreen</text>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/color/systemColors.png 
b/tests/data/svg/batik/tests/spec/color/systemColors.png
new file mode 100644
index 0000000..d438d21
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/color/systemColors.png differ
diff --git a/tests/data/svg/batik/tests/spec/color/systemColors.svg 
b/tests/data/svg/batik/tests/spec/color/systemColors.svg
new file mode 100644
index 0000000..173a1d8
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/color/systemColors.svg
@@ -0,0 +1,178 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   
+        http://www.apache.org/licenses/LICENSE-2.0
+   
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!-- ========================================================================= -->
+<!-- This document tests CSS system colors.                                    -->
+<!--                                                                           -->
+<!-- @author stephane hillion org                                              -->
+<!-- @version $Id: systemColors.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+  <defs>
+        <filter id="blur" filterRes="200" x="-.1" y="-0.4" width="1.2" height="2.0">
+            <feGaussianBlur stdDeviation="10 10" result="blurred"/>
+            <feMerge>
+                <feMergeNode in="blurred" />
+                <feMergeNode in="blurred" />
+                <feMergeNode in="blurred" />
+            </feMerge>
+        </filter>
+  </defs>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent" style="stroke-linecap: square">
+        <rect x="0" y="0" width="100%" height="100%"
+              style="fill: Background"/>
+        <text x="50%" y="38" font-size="28" text-anchor="middle"
+              style="fill:white; font-weight: bold; filter:url(#blur)">
+            System Colors
+        </text>
+        <text x="50%" y="38" font-size="28" text-anchor="middle"
+              style="font-weight: bold">
+            System Colors
+        </text>
+
+        <!-- Inactive Window -->
+        <g transform="translate(100 70)">
+            <rect x="0" y="0" width="300" height="350"
+                  style="fill: ButtonFace; stroke: WindowFrame"/>
+            <rect x="3" y="3" width="294" height="20"
+                  style="fill: InactiveCaption"/>
+            <text x="150" y="18" style="fill: InactiveCaptionText; text-anchor: middle">
+                Inactive Caption
+            </text>
+        </g>
+
+        <!-- Active Window -->
+        <g transform="translate(50 120)">
+            <rect x="0" y="0" width="300" height="350"
+                  style="fill: ButtonFace; stroke: WindowFrame"/>
+            <rect x="3" y="3" width="294" height="20"
+                  style="fill: ActiveCaption"/>
+            <text x="150" y="18" style="fill: CaptionText; text-anchor: middle;
+                                        font-weight: bold">
+                Active Caption
+            </text>
+
+            <!-- Menu -->
+            <rect x="3" y="26" width="295" height="16"
+                  style="fill: Menu"/>
+            <text x="10" y="38" style="fill: MenuText">
+                Menu
+            </text>
+           
+            <rect x="45" y="26" width="60" height="16" style="fill: Highlight"/>
+            <text x="50" y="38" style="fill: HighlightText">
+                Selected
+            </text>
+
+
+
+            <rect x="4" y="43" width="292" height="304" style="fill: white"/>
+            <rect x="280" y="43" width="16" height="304" style="fill: Scrollbar"/>
+
+            <!-- bevel border -->
+
+            <line x1="3" y1="42" x2="296" y2="42" style="stroke: ThreeDDarkShadow"/>
+            <line x1="4" y1="43" x2="295" y2="43" style="stroke: ThreeDShadow"/>
+
+            <line x1="3" y1="43" x2="3" y2="347" style="stroke: ThreeDDarkShadow"/>
+            <line x1="4" y1="44" x2="4" y2="346" style="stroke: ThreeDShadow"/>
+ 
+            <line x1="296" y1="43" x2="296" y2="346" style="stroke: ThreeDHighlight"/>
+            <line x1="297" y1="42" x2="297" y2="347" style="stroke: ThreeDLightShadow"/>
+ 
+            <line x1="4" y1="346" x2="296" y2="346" style="stroke: ThreeDHighlight"/>
+            <line x1="3" y1="347" x2="297" y2="347" style="stroke: ThreeDLightShadow"/>
+
+
+
+            <!-- Scrollbar -->
+            
+
+            <rect x="280" y="45" width="14" height="14" style="fill: ButtonFace"/>
+
+            <line x1="281" y1="44" x2="295" y2="44" style="stroke: ThreeDLightShadow"/>
+            <line x1="282" y1="45" x2="294" y2="45" style="stroke: ThreeDHighlight"/>
+
+            <line x1="281" y1="45" x2="281" y2="58" style="stroke: ThreeDLightShadow"/>
+            <line x1="282" y1="46" x2="282" y2="57" style="stroke: ThreeDHighlight"/>
+ 
+            <line x1="294" y1="46" x2="294" y2="57" style="stroke: ThreeDShadow"/>
+            <line x1="295" y1="45" x2="295" y2="58" style="stroke: ThreeDDarkShadow"/>
+ 
+            <line x1="282" y1="57" x2="294" y2="57" style="stroke: ThreeDShadow"/>
+            <line x1="281" y1="58" x2="295" y2="58" style="stroke: ThreeDDarkShadow"/>
+
+            <rect x="280" y="294" width="14" height="14" style="fill: ButtonFace"/>
+
+            <line x1="281" y1="331" x2="295" y2="331" style="stroke: ThreeDLightShadow"/>
+            <line x1="282" y1="332" x2="294" y2="332" style="stroke: ThreeDHighlight"/>
+
+            <line x1="281" y1="331" x2="281" y2="344" style="stroke: ThreeDLightShadow"/>
+            <line x1="282" y1="332" x2="282" y2="345" style="stroke: ThreeDHighlight"/>
+ 
+            <line x1="294" y1="333" x2="294" y2="344" style="stroke: ThreeDShadow"/>
+            <line x1="295" y1="332" x2="295" y2="345" style="stroke: ThreeDDarkShadow"/>
+ 
+            <line x1="282" y1="344" x2="294" y2="344" style="stroke: ThreeDShadow"/>
+            <line x1="281" y1="345" x2="295" y2="345" style="stroke: ThreeDDarkShadow"/>
+
+            <path d="M288 49L285 52L291 52Z"/>
+            <path d="M288 340L285 337L291 337Z"/>
+
+            <!-- bevel border -->
+
+            <rect x="41" y="43" width="80" height="62" style="fill: Menu"/>
+
+            <line x1="40" y1="42" x2="120" y2="42" style="stroke: ThreeDLightShadow"/>
+            <line x1="41" y1="43" x2="121" y2="43" style="stroke: ThreeDHighlight"/>
+
+            <line x1="40" y1="43" x2="40" y2="106" style="stroke: ThreeDLightShadow"/>
+            <line x1="41" y1="44" x2="41" y2="105" style="stroke: ThreeDHighlight"/>
+ 
+            <line x1="120" y1="43" x2="120" y2="105" style="stroke: ThreeDShadow"/>
+            <line x1="121" y1="42" x2="121" y2="106" style="stroke: ThreeDDarkShadow"/>
+ 
+            <line x1="41" y1="105" x2="120" y2="105" style="stroke: ThreeDShadow"/>
+            <line x1="40" y1="106" x2="121" y2="106" style="stroke: ThreeDDarkShadow"/>
+
+            <text x="50" y="58" style="fill: MenuText">
+                Item 1
+            </text>
+            <text x="50" y="76" style="fill: MenuText">
+                Item 2
+            </text>
+            <text x="50" y="94" style="fill: MenuText">
+                Item 3
+            </text>
+        </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/coordinates/em.png 
b/tests/data/svg/batik/tests/spec/coordinates/em.png
new file mode 100644
index 0000000..8df2076
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/coordinates/em.png differ
diff --git a/tests/data/svg/batik/tests/spec/coordinates/em.svg 
b/tests/data/svg/batik/tests/spec/coordinates/em.svg
new file mode 100644
index 0000000..541adde
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/coordinates/em.svg
@@ -0,0 +1,84 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!--  Test 'em' and units                                                      -->
+<!--                                                                           -->
+<!-- @author tkormann apache org                                               -->
+<!-- @version $Id: em.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Test 'em' units</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+<g id="testContent">
+  <text x="225" y="50" class="title">Test 'em' units</text>
+</g>
+
+<g style="fill:none; stroke:black" transform="translate(20 0)">
+
+  <line x1="0" y1="80" x2="300" y2="80" />
+  <text x="0" y="94" style="stroke:none; fill:black; font-size:12">width: 300</text>
+
+  <line x1="0" y1="110" x2="30em" y2="110" style="font-size: 10"/>
+  <text x="0" y="124" style="stroke:none; fill:black; font-size:12">width: 30em / font-size: 10</text>
+
+  <line x1="0" y1="140" x2="60em" y2="140" style="font-size: 5"/>
+  <text x="0" y="154" style="stroke:none; fill:black; font-size:12">width: 60em / font-size: 5</text>
+
+  <line x1="0" y1="170" x2="30em" y2="170" style="font-size: 10px"/>
+  <text x="0" y="184" style="stroke:none; fill:black; font-size:12">width: 30em / font-size: 10px</text>
+
+  <line x1="0" y1="200" x2="60em" y2="200" style="font-size: 5px"/>
+  <text x="0" y="214" style="stroke:none; fill:black; font-size:12">width: 60em / font-size: 5px</text>
+
+  <g font-size="2">
+    <line x1="0" y1="230" x2="30em" y2="230" style="font-size: 5em"/>
+    <text x="0" y="244" style="stroke:none; fill:black; font-size:12">width: 30em / font-size: 5em / parent 
font-size: 2</text>
+  </g>
+
+  <g font-size="2px">
+    <line x1="0" y1="260" x2="30em" y2="260" style="font-size: 5em"/>
+    <text x="0" y="274" style="stroke:none; fill:black; font-size:12">width: 30em / font-size: 5em / parent 
font-size: 2px</text>
+  </g>
+
+  <line x1="0" y1="290" x2="30em" y2="290" style="font-size: 7.5pt"/>
+  <text x="0" y="304" style="stroke:none; fill:black; font-size:12">width: 30em / font-size: 7.5pt 
(96dpi)</text>
+
+  <g font-size="3.75pt">
+    <line x1="0" y1="320" x2="30em" y2="320" style="font-size: 2em"/>
+    <text x="0" y="334" style="stroke:none; fill:black; font-size:12">width: 30em / font-size: 2em / parent 
font-size: 3.75pt (96dpi)</text>
+  </g>
+
+</g>
+
+<!-- ============================================================= -->
+<!-- Batik sample mark                                             -->
+<!-- ============================================================= -->
+<use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/coordinates/percentagesAndUnits.png 
b/tests/data/svg/batik/tests/spec/coordinates/percentagesAndUnits.png
new file mode 100644
index 0000000..63bd5df
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/coordinates/percentagesAndUnits.png differ
diff --git a/tests/data/svg/batik/tests/spec/coordinates/percentagesAndUnits.svg 
b/tests/data/svg/batik/tests/spec/coordinates/percentagesAndUnits.svg
new file mode 100644
index 0000000..79fc6db
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/coordinates/percentagesAndUnits.svg
@@ -0,0 +1,140 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   
+        http://www.apache.org/licenses/LICENSE-2.0
+   
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!-- ========================================================================= -->
+<!--  Test percentages and units                                               -->
+<!--                                                                           -->
+<!-- @author tkormann apache org                                               -->
+<!-- @version $Id: percentagesAndUnits.svg 475477 2006-11-15 22:44:28Z cam $     -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Test percentages and units</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+<g id="testContent">
+  <text x="225" y="50" class="title">
+    Test percentages and units
+  </text>
+ <defs>
+            <pattern id="svgPattern" viewBox="0 0 10 10" x="0" y="0" width="10" height="10"
+                     patternContentUnits="userSpaceOnUse" patternUnits="userSpaceOnUse">
+                <g fill="#eee" stroke="none">
+                    <rect x="0" y="0" width="5" height="5" />
+                    <rect x="5" y="5" width="5" height="5" />
+                </g>
+            </pattern>
+ </defs>                                                                                                     
                                                       
+  <!-- ============================================================= -->
+  <!-- ============================================================= -->
+  <g transform="translate(175 100)" style="font-size:10; text-anchor:middle">
+
+     <g transform="translate(10 20)">
+     <rect x="0" y="10" width="20" height="80" style="fill:gold"/>
+     <rect x="6.66%" y="2%" width="4.44%" height="16%" style="fill:orange"/>
+     <rect x="15.87mm" y="2.645mm" width="5.26mm" height="21.16mm" style="fill:crimson"/>
+     </g>
+
+     <text x="20" y="120">px</text>
+     <text x="50" y="120">%</text>
+     <text x="80" y="120">mm</text>
+     <rect x="0" y="0"  width="100" height="20" style="stroke:black; fill:#eee"/>
+     <rect x="0" y="20" width="100" height="110" style="stroke:black;fill:none"/>
+     <text x="50" y="14">TopLevel</text>
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- ============================================================= -->
+     <svg x="55" y="280" width="100" height="110">
+
+     <rect x="0%" y="0%" width="100%" height="100%" style="fill:url(#svgPattern)"/>
+
+     <rect x="10" y="10" width="20" height="80" style="fill:gold"/>
+     <rect x="40%" y="9.09%" width="20%" height="72.72%" style="fill:orange"/>
+     <rect x="18.51mm" y="2.64mm" width="5.29mm" height="21.16mm" style="fill:crimson"/>
+
+     </svg>
+
+  <g transform="translate(55 260)" style="font-size:10; text-anchor:middle">
+     <text x="20" y="120">px</text>
+     <text x="50" y="120">%</text>
+     <text x="80" y="120">mm</text>
+     <rect x="0" y="0"  width="100" height="20" style="stroke:black; fill:#eee"/>
+     <rect x="0" y="20" width="100" height="110" style="stroke:black;fill:none"/>
+     <text x="50" y="14">Viewport in px</text>
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- ============================================================= -->
+
+     <svg x="38.88%" y="56%" width="22.22%" height="22%">
+
+     <rect x="0%" y="0%" width="100%" height="100%" style="fill:url(#svgPattern)"/>
+
+     <rect x="10" y="10" width="20" height="80" style="fill:gold"/>
+     <rect x="40%" y="9.09%" width="20%" height="72.72%" style="fill:orange"/>
+     <rect x="18.51mm" y="2.64mm" width="5.29mm" height="21.16mm" style="fill:crimson"/>
+
+     </svg>
+
+  <g transform="translate(175 260)" style="font-size:10; text-anchor:middle">
+     <text x="20" y="120">px</text>
+     <text x="50" y="120">%</text>
+     <text x="80" y="120">mm</text>
+     <rect x="0" y="0"  width="100" height="20" style="stroke:black; fill:#eee"/>
+     <rect x="0" y="20" width="100" height="110" style="stroke:black;fill:none"/>
+     <text x="50" y="14">Viewport in %</text>
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- ============================================================= -->
+
+     <svg x="78.02mm" y="74.06mm" width="26.45mm" height="29.09mm">
+
+     <rect x="0%" y="0%" width="100%" height="100%" style="fill:url(#svgPattern)"/>
+
+     <rect x="10" y="10" width="20" height="80" style="fill:gold"/>
+     <rect x="40%" y="9.09%" width="20%" height="72.72%" style="fill:orange"/>
+     <rect x="18.51mm" y="2.64mm" width="5.29mm" height="21.16mm" style="fill:crimson"/>
+
+     </svg>
+
+  <g transform="translate(295 260)" style="font-size:10; text-anchor:middle">
+     <text x="20" y="120">px</text>
+     <text x="50" y="120">%</text>
+     <text x="80" y="120">mm</text>
+     <rect x="0" y="0"  width="100" height="20" style="stroke:black; fill:#eee"/>
+     <rect x="0" y="20" width="100" height="110" style="stroke:black;fill:none"/>
+     <text x="50" y="14">Viewport in mm</text>
+  </g>
+
+</g>
+
+<!-- ============================================================= -->
+<!-- Batik sample mark                                             -->
+<!-- ============================================================= -->
+<use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/filters/enableBackground.png 
b/tests/data/svg/batik/tests/spec/filters/enableBackground.png
new file mode 100644
index 0000000..9ce5ce0
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/enableBackground.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/enableBackground.svg 
b/tests/data/svg/batik/tests/spec/filters/enableBackground.svg
new file mode 100644
index 0000000..7e5472e
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/enableBackground.svg
@@ -0,0 +1,177 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author deweese kodak com                                                 -->
+<!-- @version $Id $  -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>enable-background Test</title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+
+      <text x="225" y="40" class="title">
+        Enable-Background Test
+      </text>
+  
+      <g transform="translate(0, 60)">
+        <defs>
+          <g id="uglyBlobs" >
+            <circle id="Circle1" cx="20" cy="65" r="15" style="fill:orange" />
+       
+            <circle id="Circle2" cx="40" cy="55" r="15" style="fill:red" />
+       
+            <rect   id="Rect1"   x="20" y="35" width="15" height="70" 
+                    style="fill:DarkBlue" />
+       
+            <rect   id="Rect2"   x="30" y="15" width="15" height="70" 
+                    rx="10" ry="10"
+                    style="fill:Yellow" />
+          </g>
+  
+          <filter id="OffsetBGX" filterUnits="userSpaceOnUse"
+                  x="0" y="0" width="120" height="120" >
+            <feOffset in="BackgroundImage" dx="60" dy="0" />
+          </filter>
+   
+          <filter id="OffsetBGY" filterUnits="userSpaceOnUse"
+                  x="0" y="0" width="440" height="260" >
+            <feOffset in="BackgroundImage" dx="0" dy="140" />
+          </filter>
+        </defs>
+   
+        <g transform="translate(0 40)" class="legend">
+  
+          <!-- ============================================== -->
+          <!-- Enable Background_1_*                          -->
+          <!-- ============================================== -->
+          <g transform="translate(0 20)" class="row1"
+             style="enable-background:new 19 30 403 60">
+            <g transform="translate(20 0)"  
+               style="enable-background:new;" >
+              <rect x="0" y="0" width="60" height="120" style="fill:Beige"/>
+             
+              <use xlink:href="#uglyBlobs" />
+              <rect x="0" y="0" width="1" height="1"
+                      style="filter:url(#OffsetBGX)" />
+             
+              <rect x="0" y="0" width="60" height="120" 
+                    style="fill:none; stroke:black; stroke-width:2"/>
+              <rect x="60" y="0" width="60" height="120" 
+                    style="fill:none; stroke:black; stroke-width:2"/>
+              <g transform="translate(60, 135)">
+                <text x="0" y="0" style="text-anchor:middle">
+                 Left Copied to right
+                </text>
+              </g>
+            </g>
+  
+            <g transform="translate(160 0)">
+              <line x1="-5" y1="20" x2="125" y2="45"
+                    style="stroke-width:5; stroke:#AA3333"/>
+              
+              <line x1="-5" y1="100" x2="125" y2="75"
+                    style="stroke-width:5; stroke:#AA3333"/>
+              
+              <g style="enable-background:new">
+                <rect x="0" y="0" width="60" height="120" 
+                      style="fill:Beige"/>
+                <g style="opacity: 0.75">
+                  <rect x="5" y="5" width="50" height="50" 
+                        style="fill:deepPink"/>
+                  <use xlink:href="#uglyBlobs" style="opacity:0.75"/>
+                  <rect x="0" y="0" width="120" height="120" 
+                        style="filter:url(#OffsetBGX)" />
+                </g>
+              </g>
+              
+              <rect x="0" y="0" width="60" height="120" 
+                    style="fill:none; stroke:black; stroke-width:2"/>
+              <rect x="60" y="0" width="60" height="120" 
+                    style="fill:none; stroke:black; stroke-width:2"/>
+              <g transform="translate(60, 135)">
+                <text x="0" y="0" style="text-anchor:middle">
+                 Right is transparent
+                </text>
+              </g>
+            </g>
+   
+            <g transform="translate(300 0)">
+              <line x1="-5" y1="20" x2="125" y2="45"
+                    style="stroke-width:5; stroke:#AA3333"/>
+            
+              <line x1="-5" y1="100" x2="125" y2="75"
+                    style="stroke-width:5; stroke:#AA3333"/>
+            
+              <rect x="0" y="0" width="60" height="120" style="fill:Beige"/>
+              <g style="enable-background:new">
+                <ellipse cx="25" cy="45" rx="20" ry="30" 
+                         style="fill:#AA00CC" />
+            
+                <g style="opacity: 0.75">
+                  <use xlink:href="#uglyBlobs"/>
+                  <rect x="0" y="0" width="120" height="120" 
+                        style="filter:url(#OffsetBGX)" />
+                </g>
+              </g>
+            
+              <rect x="0" y="0" width="60" height="120" 
+                    style="fill:none; stroke:black; stroke-width:2"/>
+              <rect x="60" y="0" width="60" height="120" 
+                    style="fill:none; stroke:black; stroke-width:2"/>
+              <g transform="translate(60, 135)">
+                <text x="0" y="0" style="text-anchor:middle">
+                 Blobs opaquely merged w/ oval
+                </text>
+              </g>
+            </g>
+  
+            <!-- ============================================== -->
+            <!-- BGEnable _2_*                                  -->
+            <!-- ============================================== -->
+            <rect x="0" y="0" width="10" height="10"
+                  style="filter:url(#OffsetBGY)" />
+            
+            <g transform="translate(220, 270)">
+             <text x="0" y="0" style="text-anchor:middle">
+              Copy of middle of first row (by setting enable-background bounds)
+             </text>
+            </g>
+          </g>
+        </g>
+      </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+   
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/filters/feColorMatrix.png 
b/tests/data/svg/batik/tests/spec/filters/feColorMatrix.png
new file mode 100644
index 0000000..d784940
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/feColorMatrix.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/feColorMatrix.svg 
b/tests/data/svg/batik/tests/spec/filters/feColorMatrix.svg
new file mode 100644
index 0000000..da7930f
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/feColorMatrix.svg
@@ -0,0 +1,152 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author vincent hardy eng sun com                                         -->
+<!-- @version $Id: feColorMatrix.svg 475685 2006-11-16 11:16:05Z cam $     -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Filter Effect: feColorMatrix</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+
+  <text x="225" y="50" class="title">
+    Filter Effect: feColorMatrix
+  </text>
+  <g transform="translate(30,62.5)">
+    <defs>
+      <filter id="turbSource" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+      </filter>
+
+      <filter id="luminanceToAlpha" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feColorMatrix
+              x="0%" y="0%" width="100%" height="100%" 
+              type="luminanceToAlpha" />
+      </filter>
+
+      <filter id="hueRotate" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feColorMatrix
+              x="0%" y="0%" width="100%" height="100%" 
+              type="hueRotate" values="90"/>
+      </filter>
+
+      <filter id="saturate" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feColorMatrix
+              x="0%" y="0%" width="100%" height="100%" 
+              type="saturate" values="6"/>
+      </filter>
+
+      <filter id="matrixAlpha" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2" stitchTiles="noStitch" seed="0" 
result="turb"/>
+        <feColorMatrix type="matrix" values="0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 1 0" />
+      </filter>
+
+      <filter id="matrixRed" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2" stitchTiles="noStitch" seed="0" 
result="turb"/>
+        <feColorMatrix type="matrix" values="1 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0 1" />
+      </filter>
+
+      <filter id="matrixGreen" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2" stitchTiles="noStitch" seed="0" 
result="turb"/>
+        <feColorMatrix type="matrix" values="0 0 0 0 0  0 1 0 0 0  0 0 0 0 0  0 0 0 0 1" />
+      </filter>
+
+      <filter id="matrixBlue" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2" stitchTiles="noStitch" seed="0" 
result="turb"/>
+        <feColorMatrix type="matrix" values="0 0 0 0 0  0 0 0 0 0  0 0 1 0 0  0 0 0 0 1" />
+      </filter>
+
+    </defs>
+
+<g class="legend">
+
+    <g id="reference_Group">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#turbSource)" />
+        <text x="75" y="117">Reference Image</text>
+    </g>
+
+    <g id="luminanceToAlpha_Group" transform="translate(120, 0)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#luminanceToAlpha)" />
+        <text x="75" y="117">type=luminanceToAlpha</text>
+    </g>
+
+    <g id="hueRotate_Group" transform="translate(240, 0)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#hueRotate)" />
+        <text x="75" y="117">type=hueRotate</text>
+    </g>
+
+    <g id="saturate_Group" transform="translate(0, 120)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#saturate)" />
+        <text x="75" y="117">type=saturate</text>
+    </g>
+
+    <g id="matrixAlpha_Group" transform="translate(120, 120)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#matrixAlpha)" />
+        <text x="75" y="117">type=matrix (alpha)</text>
+    </g>
+
+    <g id="matrixRed_Group" transform="translate(240, 120)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#matrixRed)" />
+        <text x="75" y="117">type=matrix (red)</text>
+    </g>
+
+    <g id="matrixGreen_Group" transform="translate(0, 240)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#matrixGreen)" />
+        <text x="75" y="117">type=matrix (green)</text>
+    </g>
+
+    <g id="matrixBlue_Group" transform="translate(120, 240)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#matrixBlue)" />
+        <text x="75" y="117">type=matrix (blue)</text>
+    </g>
+
+
+</g>
+</g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/filters/feComponentTransfer.png 
b/tests/data/svg/batik/tests/spec/filters/feComponentTransfer.png
new file mode 100644
index 0000000..9ac1702
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/feComponentTransfer.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/feComponentTransfer.svg 
b/tests/data/svg/batik/tests/spec/filters/feComponentTransfer.svg
new file mode 100644
index 0000000..6c3d58a
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/feComponentTransfer.svg
@@ -0,0 +1,215 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author vincent hardy eng sun com                                         -->
+<!-- @version $Id: feComponentTransfer.svg 475477 2006-11-15 22:44:28Z cam $     -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Filter Effect: feComponentTransfer</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+
+<g>
+  <text x="225" y="50" class="title">
+    Filter Effect: feComponentTransfer
+  </text>
+  <g transform="translate(30, 62.5)">
+    <defs>
+
+      <filter id="turbSource" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+      </filter>
+
+      <filter id="linearRed" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feComponentTransfer 
+              x="0%" y="0%" width="100%" height="100%" >
+            <feFuncR type="linear" slope="1" intercept="0" />
+            <feFuncG type="linear" slope="0" intercept="0" />
+            <feFuncB type="linear" slope="0" intercept="0" />
+            <feFuncA type="linear" slope="0" intercept="1" />
+        </feComponentTransfer>
+      </filter>
+
+      <filter id="linearGreen" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feComponentTransfer  
+              x="0%" y="0%" width="100%" height="100%" >
+            <feFuncR type="linear" slope="0" intercept="0" />
+            <feFuncG type="linear" slope="1" intercept="0" />
+            <feFuncB type="linear" slope="0" intercept="0" />
+            <feFuncA type="linear" slope="0" intercept="1" />
+        </feComponentTransfer>
+      </filter>
+
+      <filter id="linearBlue" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feComponentTransfer 
+              x="0%" y="0%" width="100%" height="100%" >
+            <feFuncR type="linear" slope="0" intercept="0" />
+            <feFuncG type="linear" slope="0" intercept="0" />
+            <feFuncB type="linear" slope="1" intercept="0" />
+            <feFuncA type="linear" slope="0" intercept="1" />
+        </feComponentTransfer>
+      </filter>
+
+      <filter id="linearAlpha" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feComponentTransfer 
+              x="0%" y="0%" width="100%" height="100%" >
+            <feFuncR type="linear" slope="0" intercept="0" />
+            <feFuncG type="linear" slope="0" intercept="0" />
+            <feFuncB type="linear" slope="0" intercept="0" />
+            <feFuncA type="linear" slope="1" intercept="0" />
+        </feComponentTransfer>
+      </filter>
+
+      <filter id="linearFiftyPercentGray" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feComponentTransfer 
+              x="0%" y="0%" width="100%" height="100%" >
+            <feFuncR type="linear" slope="0" intercept=".5" />
+            <feFuncG type="linear" slope="0" intercept=".5" />
+            <feFuncB type="linear" slope="0" intercept=".5" />
+            <feFuncA type="linear" slope="0" intercept="1" />
+        </feComponentTransfer>
+      </filter>
+
+      <filter id="linearBrighten" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feComponentTransfer 
+              x="0%" y="0%" width="100%" height="100%" >
+            <feFuncR type="linear" slope="1.5" intercept="0" />
+            <feFuncG type="linear" slope="1.5" intercept="0" />
+            <feFuncB type="linear" slope="1.5" intercept="0" />
+            <feFuncA type="linear" slope="1" intercept="0" />
+        </feComponentTransfer>
+      </filter>
+
+      <filter id="linearDarken" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feComponentTransfer 
+              x="0%" y="0%" width="100%" height="100%" >
+            <feFuncR type="linear" slope=".5" intercept="0" />
+            <feFuncG type="linear" slope=".5" intercept="0" />
+            <feFuncB type="linear" slope=".5" intercept="0" />
+            <feFuncA type="linear" slope="1" intercept="1" />
+        </feComponentTransfer>
+      </filter>
+
+      <filter id="linearOffsetDarken" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feComponentTransfer 
+              x="0%" y="0%" width="100%" height="100%" >
+            <feFuncR type="linear" slope=".5" intercept="-.1" />
+            <feFuncG type="linear" slope=".5" intercept="-.1" />
+            <feFuncB type="linear" slope=".5" intercept="-.1" />
+            <feFuncA type="linear" slope="1" intercept="1" />
+        </feComponentTransfer>
+      </filter>
+
+    </defs>
+
+ <g class="legend">
+    <g id="reference_Group">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#turbSource)" />
+        <text x="75" y="117">Reference Image</text>
+    </g>
+
+    <g id="linearRed_Group" transform="translate(120, 0)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#linearRed)" />
+        <text x="75" y="117">type=linear</text>
+        <text x="75" y="129">Red channel. Alpha 1.</text>
+    </g>
+
+    <g id="linearGreen_Group" transform="translate(240, 0)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#linearGreen)" />
+        <text x="75" y="117">type=linear</text>
+        <text x="75" y="129">Red channel. Alpha 1.</text>
+    </g>
+
+    <g id="linearBlue_Group" transform="translate(0, 120)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#linearBlue)" />
+        <text x="75" y="117">type=linear</text>
+        <text x="75" y="129">Blue channel. Alpha 1.</text>
+    </g>
+
+    <g id="linearAlpha_Group" transform="translate(120, 120)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#linearAlpha)" />
+        <text x="75" y="117">type=linear</text>
+        <text x="75" y="129">Alpha Channel.</text>
+    </g>
+
+    <g id="linearFiftyPercentGray_Group" transform="translate(240, 120)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#linearFiftyPercentGray)" />
+        <text x="75" y="117">type=linear</text>
+        <text x="75" y="129">50% gray</text>
+    </g>
+
+    <g id="linearBrighten_Group" transform="translate(0, 240)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#linearBrighten)" />
+        <text x="75" y="117">type=linear</text>
+        <text x="75" y="129">Brighten</text>
+    </g>
+
+    <g id="linearDarken_Group" transform="translate(120, 240)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#linearDarken)" />
+        <text x="75" y="117">type=linear</text>
+        <text x="75" y="129">Darken</text>
+    </g>
+
+    <g id="linearOffsetDarken_Group" transform="translate(240, 240)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#linearOffsetDarken)" />
+        <text x="75" y="117">type=linear</text>
+        <text x="75" y="129">Offset</text>
+    </g>
+</g>
+
+  </g>
+
+</g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/filters/feComponentTransfer2.png 
b/tests/data/svg/batik/tests/spec/filters/feComponentTransfer2.png
new file mode 100644
index 0000000..1b6db26
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/feComponentTransfer2.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/feComponentTransfer2.svg 
b/tests/data/svg/batik/tests/spec/filters/feComponentTransfer2.svg
new file mode 100644
index 0000000..34f5473
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/feComponentTransfer2.svg
@@ -0,0 +1,221 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author vincent hardy eng sun com                                         -->
+<!-- @version $Id: feComponentTransfer2.svg 475477 2006-11-15 22:44:28Z cam $     -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Filter Effect: feComponentTransfer (2)</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+
+
+<g>
+  <text x="225" y="40" class="title">
+    Filter Effect: feComponentTransfer (2)
+  </text>
+  <g transform="translate(30,62.5)">
+    <defs>
+      <filter id="turbSource" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+      </filter>
+
+      <filter id="tableIdentity" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feComponentTransfer
+              x="0%" y="0%" width="100%" height="100%" >
+            <feFuncR type="table" tableValues="0 1" />
+            <feFuncG type="table" tableValues="0 1" />
+            <feFuncB type="table" tableValues="0 1" />
+            <feFuncA type="table" tableValues="0 1" />            
+        </feComponentTransfer>
+      </filter>
+
+      <filter id="tableInvertRGB" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feComponentTransfer
+              x="0%" y="0%" width="100%" height="100%" >
+            <feFuncR type="table" tableValues="1 0" />
+            <feFuncG type="table" tableValues="1 0" />
+            <feFuncB type="table" tableValues="1 0" />
+            <feFuncA type="linear" slope="0" intercept="1" />
+        </feComponentTransfer>
+      </filter>
+
+      <filter id="tableBlueGreenTint" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feColorMatrix type="luminanceToAlpha" />
+        <feColorMatrix type="matrix" values="0 0 0 -1 1    0 0 0 -1 1    0 0 0 -1 1   0 0 0 0 1" />
+        <feComponentTransfer
+              x="0%" y="0%" width="100%" height="100%" >
+            <feFuncR type="table" tableValues="0 0   0   .2  1" />
+            <feFuncG type="table" tableValues="0 0   .3  .9  1" />
+            <feFuncB type="table" tableValues="0 .3  .6  .9  1" />
+            <feFuncA type="linear" slope="1" intercept="0" />
+        </feComponentTransfer>
+      </filter>
+
+      <filter id="tableRedOrangeTint" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feColorMatrix type="luminanceToAlpha" />
+        <feColorMatrix type="matrix" values="0 0 0 -1 1    0 0 0 -1 1    0 0 0 -1 1   0 0 0 0 1" />
+        <feComponentTransfer
+              x="0%" y="0%" width="100%" height="100%" >
+            <feFuncR type="table" tableValues="0 .3   .6  .9  1" />
+            <feFuncG type="table" tableValues="0 0  .3  .9  1" />
+            <feFuncB type="table" tableValues="0 0    0  0   1" />
+            <feFuncA type="linear" slope="1" intercept="0" />
+        </feComponentTransfer>
+      </filter>
+
+      <filter id="tableGreenGreenTint" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feColorMatrix type="luminanceToAlpha" />
+        <feColorMatrix type="matrix" values="0 0 0 -1 1    0 0 0 -1 1    0 0 0 -1 1   0 0 0 0 1" />
+        <feComponentTransfer
+              x="0%" y="0%" width="100%" height="100%" >
+            <feFuncR type="table" tableValues="0 0   0  .6  1" />
+            <feFuncG type="table" tableValues="0 .15  .5  .9  1" />
+            <feFuncB type="table" tableValues="0 0   0  .6   1" />
+            <feFuncA type="linear" slope="1" intercept="0" />
+        </feComponentTransfer>
+      </filter>
+
+      <filter id="discreteYellowRed" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feColorMatrix type="luminanceToAlpha" />
+        <feColorMatrix type="matrix" values="0 0 0 -1 1    0 0 0 -1 1    0 0 0 -1 1   0 0 0 0 1" />
+        <feComponentTransfer
+              x="0%" y="0%" width="100%" height="100%" >
+            <feFuncR type="discrete" tableValues="1 1" />
+            <feFuncG type="discrete" tableValues="1 0" />
+            <feFuncB type="discrete" tableValues="0 0" />
+        </feComponentTransfer>
+      </filter>
+
+      <filter id="discreteYellowOrangeRed" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feColorMatrix type="luminanceToAlpha" />
+        <feColorMatrix type="matrix" values="0 0 0 -1 1    0 0 0 -1 1    0 0 0 -1 1   0 0 0 0 1" />
+        <feComponentTransfer
+              x="0%" y="0%" width="100%" height="100%" >
+            <feFuncR type="discrete" tableValues="1 1  1 .5" />
+            <feFuncG type="discrete" tableValues="1 1  .5 0" />
+            <feFuncB type="discrete" tableValues="1 0  0  0" />
+        </feComponentTransfer>
+      </filter>
+
+      <filter id="gamma" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+        <feComponentTransfer
+              x="0%" y="0%" width="100%" height="100%" >
+            <feFuncR type="gamma" amplitude="1" exponent="2.4" offset="0"/>
+            <feFuncG type="gamma" amplitude="1" exponent="2.4" offset="0"/>
+            <feFuncB type="gamma" amplitude="1" exponent="2.4" offset="0"/>
+            <feFuncA type="linear" slope="1" intercept="0" />
+        </feComponentTransfer>
+      </filter>
+
+    </defs>
+    <g class="legend">
+    <g id="reference_Group">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#turbSource)" />
+        <text x="75" y="117">Reference Image</text>
+    </g>
+
+    <g id="tableIdentity_Group" transform="translate(120, 0)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#tableIdentity)" />
+        <text x="75" y="117">type=table</text>
+        <text x="75" y="129">Identity tables (0 1)</text>
+    </g>
+
+    <g id="tableInvertRGB_Group" transform="translate(240, 0)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#tableInvertRGB)" />
+        <text x="75" y="117">type=table</text>
+        <text x="75" y="129">Invert RGB (1 0)</text>
+    </g>
+
+    <g id="tableBlueGreenTint_Group" transform="translate(0, 120)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#tableBlueGreenTint)" />
+        <text x="75" y="117">type=table</text>
+        <text x="75" y="129">darkBlue-cyan</text>
+    </g>
+
+    <g id="tableRedOrangeTint_Group" transform="translate(120, 120)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#tableRedOrangeTint)" />
+        <text x="75" y="117">type=table</text>
+        <text x="75" y="129">darkRed-orange</text>
+    </g>
+
+    <g id="tableGreenGreenTint_Group" transform="translate(240, 120)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#tableGreenGreenTint)" />
+        <text x="75" y="117">type=table</text>
+        <text x="75" y="129">darkGreen-green</text>
+    </g>
+
+    <g id="discreteYellowRed_Group" transform="translate(0, 240)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#discreteYellowRed)" />
+        <text x="75" y="117">type=discrete</text>
+        <text x="75" y="129">yellow-red</text>
+    </g>
+
+    <g id="discreteYellowOrangeRed_Group" transform="translate(120, 240)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#discreteYellowOrangeRed)" />
+        <text x="75" y="117">type=discrete</text>
+        <text x="75" y="129">White-Yellow-Orange-Red</text>
+    </g>
+
+    <g id="gamma_Group" transform="translate(240, 240)">
+        <rect x="25" y="25" width="100" height="75" style="filter:url(#gamma)" />
+        <text x="75" y="117">type=gamma</text>
+        <text x="75" y="129">exponent (2.4) </text>
+        <text x="75" y="141">offset (0) amplitude (1)</text>
+    </g>
+    </g>
+  </g>
+</g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/filters/feComposite.png 
b/tests/data/svg/batik/tests/spec/filters/feComposite.png
new file mode 100644
index 0000000..5bdbee6
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/feComposite.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/feComposite.svg 
b/tests/data/svg/batik/tests/spec/filters/feComposite.svg
new file mode 100644
index 0000000..faa313e
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/feComposite.svg
@@ -0,0 +1,248 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author tkormann apache org                                               -->
+<!-- @version $Id $  -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg";
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+  <title>feComposite Test</title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+
+    <text x="225" y="40" class="title">
+      feComposite Test
+    </text>
+
+    <defs>
+
+      <circle id="Circle1" cx="40" cy="60" r="30" style="fill:orange" />
+
+      <circle id="Circle2" cx="80" cy="60" r="30" style="fill:blue" />
+
+      <filter id="feImage1" x="0" y="0" width="1" height="1">
+        <feImage xlink:href="#Circle1"/>
+      </filter>
+
+      <filter id="feImage2" x="0" y="0" width="1" height="1">
+        <feImage xlink:href="#Circle2"/>
+      </filter>
+
+      <filter id="feComposite1_2" x="0" y="0" width="1" height="1">
+        <feImage xlink:href="#Circle1" result="c1" />
+        <feImage xlink:href="#Circle2" result="c2" />
+        <feComposite in="c1" in2="c2" operator="over" />
+      </filter>
+
+
+      <filter id="feComposite1_3" x="0" y="0" width="1" height="1">
+        <feImage xlink:href="#Circle1" result="c1" />
+        <feImage xlink:href="#Circle2" result="c2" />
+        <feComposite in="c1" in2="c2" operator="in" />
+      </filter>
+
+      <filter id="feComposite2_1" x="0" y="0" width="1" height="1">
+        <feImage xlink:href="#Circle1" result="c1" />
+        <feImage xlink:href="#Circle2" result="c2" />
+        <feComposite in="c1" in2="c2" operator="out" />
+      </filter>
+
+      <filter id="feComposite2_2" x="0" y="0" width="1" height="1">
+        <feImage xlink:href="#Circle1" result="c1" />
+        <feImage xlink:href="#Circle2" result="c2" />
+        <feComposite in="c1" in2="c2" operator="atop" />
+      </filter>
+
+      <filter id="feComposite2_3" x="0" y="0" width="1" height="1">
+        <feImage xlink:href="#Circle1" result="c1" />
+        <feImage xlink:href="#Circle2" result="c2" />
+        <feComposite in="c1" in2="c2" operator="xor" />
+      </filter>
+
+      <filter id="feComposite3_1" x="0" y="0" width="1" height="1">
+        <feImage xlink:href="#Circle1" result="c1" />
+        <feImage xlink:href="#Circle2" result="c2" />
+        <feComposite in="c1" in2="c2" operator="arithmetic" 
+          k2="0.5" k3="0.5" />
+      </filter>
+
+      <filter id="feComposite3_2" x="0" y="0" width="1" height="1">
+        <feImage xlink:href="#Circle1" result="c1" />
+        <feImage xlink:href="#Circle2" result="c2" />
+        <feComposite in="c1" in2="c2" operator="arithmetic" 
+          k2="0.75" k3="0.25" />
+      </filter>
+
+      <filter id="feComposite3_3" x="0" y="0" width="1" height="1">
+        <feImage xlink:href="#Circle1" result="c1" />
+        <feImage xlink:href="#Circle2" result="c2" />
+        <feComposite in="c1" in2="c2" operator="arithmetic" 
+          k1="1" k2="0.5" k3="0.5" k4="0.2" />
+      </filter>
+
+    </defs>
+
+    <g transform="translate(0 40)" class="legend">
+
+      <!-- ============================================== -->
+      <!-- Composite_1_*                                  -->
+      <!-- ============================================== -->
+      <g transform="translate(0 20)" class="row1" >
+        <g  transform="translate(20 0)">
+          <rect x="0" y="0" width="120" height="120" style="fill:Beige"/>
+          <rect x="0" y="0" width="120" height="120" 
+            style="fill:FireBrick;  filter:url(#feImage1)"/>
+
+          <rect x="0" y="0" width="120" height="120" 
+            style="fill:PaleVioletRed; filter:url(#feImage2); "/>
+
+          <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">
+              1.1 Check FeImage
+            </text>
+          </g>
+        </g>
+
+        <g transform="translate(160 0)">
+          <rect x="0" y="0" width="120" height="120" style="fill:Beige"/>
+          <rect x="0" y="0" width="120" height="120" 
+            style="fill:FireBrick;  filter:url(#feComposite1_2)" />
+          <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">
+              1.2 Orange over blue
+            </text>
+          </g>
+        </g>
+
+
+        <g transform="translate(300 0)">
+          <rect x="0" y="0" width="120" height="120" style="fill:Beige"/>
+          <rect x="0" y="0" width="120" height="120" 
+            style="fill:FireBrick;  filter:url(#feComposite1_3)" />
+          <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">
+              1.3 Orange in blue
+            </text>
+          </g>
+        </g>
+      </g>
+
+      <!-- ============================================== -->
+      <!-- Composite_2_*                                  -->
+      <!-- ============================================== -->
+      <g transform="translate(0 160)" class="row2" >
+        <g  transform="translate(20 0)">
+          <rect x="0" y="0" width="120" height="120" style="fill:Beige"/>
+          <rect x="0" y="0" width="120" height="120" 
+            style="fill:FireBrick;  filter:url(#feComposite2_1)"/>
+          <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">
+              2.1 Orange out blue
+            </text>
+          </g>
+        </g>
+
+        <g transform="translate(160 0)">
+          <rect x="0" y="0" width="120" height="120" style="fill:Beige"/>
+          <rect x="0" y="0" width="120" height="120" 
+            style="fill:FireBrick;  filter:url(#feComposite2_2)" />
+          <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">
+              2.2 Orange atop blue
+            </text>
+          </g>
+        </g>
+
+
+        <g transform="translate(300 0)">
+          <rect x="0" y="0" width="120" height="120" style="fill:Beige"/>
+          <rect x="0" y="0" width="120" height="120" 
+            style="fill:FireBrick;  filter:url(#feComposite2_3)" />
+          <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">
+              2.3 Orange xor blue
+            </text>
+          </g>
+        </g>
+      </g>
+
+      <!-- ============================================== -->
+      <!-- Composite_3_*                                  -->
+      <!-- ============================================== -->
+      <g transform="translate(0 300)" class="row3" >
+        <g  transform="translate(20 0)">
+          <rect x="0" y="0" width="120" height="120" style="fill:Beige"/>
+          <rect x="0" y="0" width="120" height="120" 
+            style="fill:FireBrick;  filter:url(#feComposite3_1)"/>
+          <text x="60" y="130" style="text-anchor:middle">
+            3.1 Orange arithmetic blue
+          </text>
+          <text x="60" y="140" style="text-anchor:middle">
+            k1=0 k2=0.5 k3=0.5 k4=0
+          </text>
+        </g>
+
+        <g transform="translate(160 0)">
+          <rect x="0" y="0" width="120" height="120" style="fill:Beige"/>
+          <rect x="0" y="0" width="120" height="120" 
+            style="fill:FireBrick;  filter:url(#feComposite3_2)" />
+          <text x="60" y="130" style="text-anchor:middle">
+            3.2 Orange arithmetic blue
+          </text>
+          <text x="60" y="140" style="text-anchor:middle">
+            k1=0 k2=0.75 k3=0.25 k4=0
+          </text>
+        </g>
+
+
+        <g transform="translate(300 0)">
+          <rect x="0" y="0" width="120" height="120" style="fill:Beige"/>
+          <rect x="0" y="0" width="120" height="120" 
+            style="fill:FireBrick;  filter:url(#feComposite3_3)" />
+          <text x="60" y="130" style="text-anchor:middle">
+            3.3 Orange arithmetic blue
+          </text>
+          <text x="60" y="140" style="text-anchor:middle">
+            k1=1 k2=0.5 k3=0.5 k4=0.2
+          </text>
+        </g>
+      </g>
+
+    </g>
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/filters/feConvolveMatrix.png 
b/tests/data/svg/batik/tests/spec/filters/feConvolveMatrix.png
new file mode 100644
index 0000000..60def41
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/feConvolveMatrix.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/feConvolveMatrix.svg 
b/tests/data/svg/batik/tests/spec/filters/feConvolveMatrix.svg
new file mode 100644
index 0000000..4d6d17b
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/feConvolveMatrix.svg
@@ -0,0 +1,351 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author deweese kodak com                                                 -->
+<!-- @version $Id $  -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg";
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+  <title>feMerge Test</title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+
+    <text x="225" y="40" class="title">
+    feConvolveMatrix Text
+    </text>
+
+    <defs>
+
+
+    <filter id="conv-rep-tr" x="0" y="0" width="1" height="1">
+        <feConvolveMatrix order="11 11"
+         kernelMatrix="0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       1 0 0 0 0 0 0 0 0 0 0"
+         edgeMode="duplicate" />
+    </filter>
+
+    <filter id="conv-centX" x="0" y="0" width="1" height="1">
+        <feConvolveMatrix order="11 11"
+         kernelMatrix="0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                      10 0 0 0 0 0 0 0 0 0 0"
+         targetX="10"
+         edgeMode="duplicate" />
+    </filter>
+
+    <filter id="conv-centY" x="0" y="0" width="1" height="1">
+        <feConvolveMatrix order="11 11"
+         kernelMatrix="0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                      10 0 0 0 0 0 0 0 0 0 0"
+         targetY="0"
+         edgeMode="duplicate" />
+    </filter>
+
+    <filter id="conv-rep-bl" x="0" y="0" width="1" height="1">
+        <feConvolveMatrix order="11 11"
+         kernelMatrix="0 0 0 0 0 0 0 0 0 0 1
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0"
+         edgeMode="duplicate" />
+    </filter>
+
+    <filter id="conv-rep-br" x="0" y="0" width="1" height="1">
+        <feConvolveMatrix order="11 11"
+         kernelMatrix="1 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0"
+         edgeMode="duplicate" />
+    </filter>
+
+    <filter id="conv-rep-tl" x="0" y="0" width="1" height="1">
+        <feConvolveMatrix order="11 11"
+         kernelMatrix="0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 1"
+         edgeMode="duplicate" />
+    </filter>
+
+    <filter id="conv-none-tr" x="0" y="0" width="1" height="1">
+        <feConvolveMatrix order="11 11"
+         kernelMatrix="0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       1 0 0 0 0 0 0 0 0 0 0"
+         edgeMode="none" />
+    </filter>
+
+    <filter id="conv-none-bl" x="0" y="0" width="1" height="1">
+        <feConvolveMatrix order="11 11"
+         kernelMatrix="0 0 0 0 0 0 0 0 0 0 1
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0"
+         kernelUnitLength="4"
+         edgeMode="none" />
+    </filter>
+
+    <filter id="conv-alpha" x="0" y="0" width="1" height="1">
+        <feConvolveMatrix order="11 11"
+         kernelMatrix="0 0 0 0 0 0 0 0 0 0 1
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0
+                       0 0 0 0 0 0 0 0 0 0 0"
+         edgeMode="none" 
+         preserveAlpha="true"/>
+    </filter>
+
+      <linearGradient id="grad" y2="100%">
+        <stop offset="0%"   style="stop-color:#FF0" />
+        <stop offset="100%" style="stop-color:#F00" />
+      </linearGradient>
+
+      <g id="simple_content">
+        <circle id="Circle1" cx="40" cy="65" r="25" 
+                style="fill:yellowGreen" />
+   
+        <circle id="Circle2" cx="80" cy="55" r="25" style="fill:darkBlue" />
+   
+        <rect   id="Rect1"   x="40" y="35" width="30" height="70" 
+                rx="15" ry="15"
+                style="fill:dodgerBlue" />
+   
+        <rect   id="Rect2"   x="60" y="15" width="30" height="70" 
+                rx="10" ry="10"
+                style="fill:Green" />
+      </g>
+
+      <g id="content">
+        <rect   x="15" y="15" width="90" height="90" 
+                style="fill:url(#grad)" />
+        <use xlink:href="#simple_content" />
+      </g>
+
+    </defs>
+
+    <g transform="translate(0 40)" class="legend">
+
+      <!-- ============================================== -->
+      <!-- Convolve_Matrix_1_*                            -->
+      <!-- ============================================== -->
+      <g transform="translate(0 20)" class="row1" >
+        <g transform="translate(20,0)" >
+          <g style="filter:url(#conv-rep-tr)">
+            <use xlink:href="#content" />
+          </g>
+      
+          <text transform="translate(60, 130)"
+                x="0" y="0" style="text-anchor:middle">
+           1.1 Replicate Top &amp; Right
+          </text>
+        </g>
+      
+        <g transform="translate(160,0)" >
+          <g style="filter:url(#conv-centX)">
+            <use xlink:href="#content" />
+          </g>
+      
+          <text transform="translate(60, 118)"
+                x="0" y="0" style="text-anchor:middle">
+           1.2 Replicate Top, targetX
+          </text>
+        </g>
+      
+        <g transform="translate(300,0)" >
+          <g style="filter:url(#conv-centY)">
+            <use xlink:href="#content" />
+          </g>
+      
+          <text transform="translate(60, 130)"
+                x="0" y="0" style="text-anchor:middle">
+           1.3 Replicate Right, targetY, norm
+          </text>
+        </g>
+      </g>   <!-- end row1 -->
+
+      <!-- ============================================== -->
+      <!-- Convolve_Matrix_2_*                            -->
+      <!-- ============================================== -->
+      <g transform="translate(0 160)" class="row2" >
+        <g transform="translate(20,0)" >
+          <g style="filter:url(#conv-rep-bl)">
+            <use xlink:href="#content" />
+          </g>
+
+          <text transform="translate(60, 130)"
+                x="0" y="0" style="text-anchor:middle">
+           3.1 Rep Bottom &amp; Left
+          </text>
+        </g>
+
+        <g transform="translate(160,0)" >
+          <g style="filter:url(#conv-rep-br)">
+            <use xlink:href="#content" />
+          </g>
+
+          <text transform="translate(60, 130)"
+                x="0" y="0" style="text-anchor:middle">
+           3.2 Rep Bottom &amp; Right
+          </text>
+        </g>
+
+        <g transform="translate(300,0)" >
+          <g style="filter:url(#conv-rep-tl)">
+            <use xlink:href="#content" />
+          </g>
+
+          <text transform="translate(60, 130)"
+                x="0" y="0" style="text-anchor:middle">
+           3.3 Rep Top &amp; Left
+          </text>
+        </g>
+      </g>   <!-- end row2 -->
+
+      <!-- ============================================== -->
+      <!-- Convolve_Matrix_3_*                            -->
+      <!-- ============================================== -->
+      <g transform="translate(0 300)" class="row3" >
+        <g transform="translate(20,0)" >
+          <g style="filter:url(#conv-alpha)">
+            <use xlink:href="#simple_content" />
+          </g>
+
+          <text transform="translate(60, 130)"
+                x="0" y="0" style="text-anchor:middle">
+           3.2 None PreserveAlpha B&amp;L
+          </text>
+        </g>
+        <g transform="translate(160,0)" >
+          <g style="filter:url(#conv-none-tr)">
+            <use xlink:href="#content" />
+          </g>
+
+          <text transform="translate(60, 130)"
+                x="0" y="0" style="text-anchor:middle">
+           3.2 None Top &amp; Right
+          </text>
+        </g>
+
+        <g transform="translate(300,0)" >
+          <g style="filter:url(#conv-none-bl)">
+            <use xlink:href="#content" />
+          </g>
+
+          <text transform="translate(60, 130)"
+                x="0" y="0" style="text-anchor:middle">
+           3.3 None Bottom &amp; Left
+          </text>
+        </g>
+
+      </g>  <!-- end row3-->
+
+    </g> <!-- end legend -->
+
+  </g> <!-- end test content -->
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+  
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/filters/feDisplacementMap.png 
b/tests/data/svg/batik/tests/spec/filters/feDisplacementMap.png
new file mode 100644
index 0000000..7444d59
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/feDisplacementMap.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/feDisplacementMap.svg 
b/tests/data/svg/batik/tests/spec/filters/feDisplacementMap.svg
new file mode 100644
index 0000000..5185965
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/feDisplacementMap.svg
@@ -0,0 +1,179 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- feDisplacementMap filter test                                             -->
+<!--                                                                           -->
+<!-- @author vincent hardy eng sun com                                         -->
+<!-- @version $Id: feDisplacementMap.svg 475477 2006-11-15 22:44:28Z cam $     -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Filter Effect: feDisplacementMap</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+
+    <g class="legend">
+        <text x="225" y="50" class="title">
+            Filter Effect: feDisplacementMap
+        </text>
+
+        <defs>
+            <!-- ========================================== -->
+            <!-- Pattern used to visualize the distorsions  -->
+            <!-- created by displacement map.               -->
+            <!-- ========================================== -->
+            <pattern id="pattern" patternUnits="userSpaceOnUse" x="0" y="0"
+                     width="20" height="20">
+                <rect x="0" y="0" width="10" height="10" fill="red"/>
+                <rect x="10" y="10" width="10" height="10" fill="green" />
+            </pattern>
+
+            <!-- ========================================== -->
+            <!-- Source for the displacement tests          -->
+            <!-- ========================================== -->
+            <rect id="displaced" x="0" y="0" width="100" height="100" fill="url(#pattern)" />
+
+            <filter id="noOp" x="0" y="0" width="1" height="1">
+                <feImage xlink:href="#displaced" result="displaced" />
+            </filter>
+
+            <!-- ========================================== -->
+            <!-- Variations in the Red channel only         -->
+            <!-- ========================================== -->
+            <linearGradient id="redOnly" gradientUnits="objectBoundingBox" x1="0" y1="0" x2="1" y2="0" 
color-interpolation="linearRGB">
+                <stop offset="0" stop-color="rgb(255, 188, 188)" />
+                <stop offset=".25" stop-color="rgb(0, 188, 188)" />
+                <stop offset=".5" stop-color="rgb(255, 188, 188)" />
+                <stop offset="1" stop-color="rgb(0, 188, 188)" />
+            </linearGradient>
+
+            <radialGradient id="redAndGreenFill2" gradientUnits="objectBoundingBox" cx=".5" cy=".5" r="1" 
spreadMethod="reflect">
+                <stop offset="0" stop-color="rgb(255, 0, 188)" />
+                <stop offset="1" stop-color="rgb(0, 255, 188)" />
+            </radialGradient>
+
+            <linearGradient id="redAndGreenFill" gradientUnits="objectBoundingBox" x1="0" y1="0" x2="1" 
y2="0" color-interpolation="linearRGB">
+                <stop offset="0" stop-color="rgb(255, 0, 188)" />
+                <stop offset=".25" stop-color="rgb(0, 255, 188)" />
+                <stop offset=".5" stop-color="rgb(255, 0, 188)" />
+                <stop offset="1" stop-color="rgb(0, 255, 188)" />
+            </linearGradient>
+
+            <rect id="redOnlyMap" x="0" y="0" width="100" height="100" fill="url(#redOnly)" />
+
+            <rect id="redAndGreenMap" x="0" y="0" width="100" height="100" fill="url(#redAndGreenFill)" />
+
+            <filter id="xOnly" x="0" y="0" width="1" height="1">
+                <feImage xlink:href="#redOnlyMap" result="map" />
+                <feImage xlink:href="#displaced" result="displaced" />
+                <feDisplacementMap in="displaced" in2="map" 
+                                   scale="30" xChannelSelector="R" yChannelSelector="G" /> 
+            </filter>
+
+            <filter id="yOnly" x="0" y="0" width="1" height="1">
+                <feImage xlink:href="#redOnlyMap" result="map" />
+                <feImage xlink:href="#displaced" result="displaced" />
+                <feDisplacementMap in="displaced" in2="map" 
+                                   scale="30" xChannelSelector="G" yChannelSelector="R" /> 
+            </filter>
+
+            <filter id="xy" x="0" y="0" width="1" height="1">
+                <feImage xlink:href="#redOnlyMap" result="map" />
+                <feImage xlink:href="#displaced" result="displaced" />
+                <feDisplacementMap in="displaced" in2="map" 
+                                   scale="30" xChannelSelector="R" yChannelSelector="R" /> 
+            </filter>
+
+            <filter id="redAndGreen" x="0" y="0" width="1" height="1">
+                <feImage xlink:href="#redAndGreenMap" result="map" />
+                <feImage xlink:href="#displaced" result="displaced" />
+                <feDisplacementMap in="displaced" in2="map" 
+                                   scale="30" xChannelSelector="R" yChannelSelector="G" /> 
+            </filter>
+
+
+
+        </defs>
+
+    
+        <!-- ================================================== -->
+        <!-- First, test different types of displacements       -->
+        <!-- ================================================== -->
+
+        <!-- ============================== -->
+        <!-- Reference                      -->
+        <!-- ============================== -->
+        <g transform="translate(20, 100)">
+            <rect x="0" y="0" width="100" height="100" filter="url(#noOp)"/>
+            <rect x="0" y="0" width="100" height="100" stroke="black" fill="none"/>
+            <text x="50" y="-3">Reference</text>
+        </g>
+
+        <!-- ============================== -->
+        <!-- x-axis only                    -->
+        <!-- ============================== -->
+        <g transform="translate(150, 100)">
+            <rect x="0" y="0" width="100" height="100" filter="url(#xOnly)"/>
+            <rect x="0" y="0" width="100" height="100" stroke="black" fill="none"/>
+            <text x="50" y="-3">x only</text>            
+        </g>
+
+        <!-- ============================== -->
+        <!-- y-axis only                    -->
+        <!-- ============================== -->
+        <g transform="translate(280, 100)">
+            <rect x="0" y="0" width="100" height="100" filter="url(#yOnly)"/>
+            <rect x="0" y="0" width="100" height="100" stroke="black" fill="none"/>
+            <text x="50" y="-3">y only</text>            
+        </g>
+
+        <!-- ============================== -->
+        <!-- x and y                        -->
+        <!-- ============================== -->
+        <g transform="translate(20, 230)">
+            <rect x="0" y="0" width="100" height="100" filter="url(#xy)"/>
+            <rect x="0" y="0" width="100" height="100" stroke="black" fill="none"/>
+            <text x="50" y="-3">x and y</text>            
+        </g>
+
+        <!-- ============================== -->
+        <!-- Rend and Green                 -->
+        <!-- ============================== -->
+        <g transform="translate(150, 230)">
+            <rect x="0" y="0" width="100" height="100" filter="url(#redAndGreen)"/>
+            <rect x="0" y="0" width="100" height="100" stroke="black" fill="none"/>
+            <text x="50" y="-3">x and y (different)</text>            
+        </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/filters/feGaussianDefault.png 
b/tests/data/svg/batik/tests/spec/filters/feGaussianDefault.png
new file mode 100644
index 0000000..8faade9
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/feGaussianDefault.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/feGaussianDefault.svg 
b/tests/data/svg/batik/tests/spec/filters/feGaussianDefault.svg
new file mode 100644
index 0000000..41a23f6
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/feGaussianDefault.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- check updates on gradients, filter, mask, and clip regarding to        -->
+<!-- geometry updates                                                       -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: feGaussianDefault.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+<defs>
+<filter id="filterObjectBoundingBox" filterUnits="objectBoundingBox"
+        x="0" y="0" width="1" height="1">
+  <feGaussianBlur/>
+</filter>
+
+</defs>
+
+
+<g id="test-content">
+
+<rect onclick="move(evt)" x="50" y="110" width="90" height="85" style="fill:crimson; 
filter:url(#filterObjectBoundingBox)"/>
+
+</g>
+
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/filters/feImage.png 
b/tests/data/svg/batik/tests/spec/filters/feImage.png
new file mode 100644
index 0000000..b2f3521
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/feImage.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/feImage.svg 
b/tests/data/svg/batik/tests/spec/filters/feImage.svg
new file mode 100644
index 0000000..2499cb8
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/feImage.svg
@@ -0,0 +1,123 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author tkormann apache org                                               -->
+<!-- @version $Id $  -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg";
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+  <title>feImage Test</title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+
+    <text x="225" y="40" class="title">
+      feImage Test
+    </text>
+
+    <defs>
+
+      <g id="elem1">
+        <circle id="Circle1" cx="112.5" cy="250" r="100" style="fill:orange" />
+        <circle id="Circle2" cx="337.5" cy="250" r="100" style="fill:blue" />
+      </g>
+
+      <filter id="Elem1" x="0" y="0" width="1" height="1">
+        <feImage xlink:href="#elem1"/>
+      </filter>
+
+      <filter id="Elem2" x="0" y="0" width="1" height="1">
+        <feImage xlink:href="../rendering/opacity2.svg"/>
+      </filter>
+
+      <filter id="Elem3" x="0" y="0" width="1" height="1">
+        <feImage xlink:href="../structure/dataProtocol.svg#testContent"/>
+      </filter>
+
+    </defs>
+
+    <g transform="translate(0 40)" class="legend">
+
+      <!-- ============================================== -->
+      <!-- Composite_1_*                                  -->
+      <!-- ============================================== -->
+      <g transform="translate(40 20)" class="row1" >
+        <g id="c1" transform="translate(20 0)">
+          <rect x="0" y="0" width="450" height="500" transform="scale(0.25 0.25)" fill="Beige"/>
+          <rect x="0" y="0" width="450" height="500" transform="scale(0.25 0.25)"
+                style="fill:FireBrick;  filter:url(#Elem1)"/>
+          <text x="60" y="140" style="text-anchor:middle">
+            1.1 Reference 
+          </text>
+          <text x="60" y="152">
+            local element
+          </text>
+        </g>
+
+        <g id="c2" transform="translate(120 200)">
+          <rect x="0" y="0" width="450" height="500" transform="scale(0.25 0.25)" fill="Beige"/>
+          <rect x="0" y="0" width="450" height="500" 
+                transform="scale(0.25 0.25)"
+                style="fill:FireBrick;  filter:url(#Elem2)" />
+          <text x="60" y="140" style="text-anchor:middle">
+            1.2 Reference 
+          </text>
+          <text x="60" y="152">
+            external SVG file
+          </text>
+        </g>
+
+
+        <g id="c3" transform="translate(240, 0)">
+          <rect x="0" y="0" width="450" height="500" transform="scale(.25, .25)" fill="Beige"/>
+          <rect x="0" y="0" width="450" height="500" 
+                transform="scale(.25, .25)"
+                style="fill:FireBrick;  filter:url(#Elem3)" />
+          <g transform="translate(60, 140)">
+            <text x="0" y="0" style="text-anchor:middle">
+              1.3 Reference 
+            </text>
+            <text x="0" y="12">
+              external SVG element
+            </text>
+          </g>
+        </g>
+      </g>
+    </g>
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/filters/feImage2.png 
b/tests/data/svg/batik/tests/spec/filters/feImage2.png
new file mode 100644
index 0000000..9e453bc
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/feImage2.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/feImage2.svg 
b/tests/data/svg/batik/tests/spec/filters/feImage2.svg
new file mode 100644
index 0000000..d735411
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/feImage2.svg
@@ -0,0 +1,160 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Drill down test on feImage                                                -->
+<!--                                                                           -->
+<!-- @author vincent hardy sun com                                             -->
+<!-- @version $Id $  -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>feImage Test</title>
+    
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+
+        <text x="225" y="40" class="title">
+            feImage Test
+        </text>
+        
+        <defs>
+
+            <symbol id="symbol" viewBox="0 0 1 1">
+                <circle cx="0.5" cy="0.5" r="0.5" fill="orange" />
+            </symbol>
+
+            <svg id="svg" viewBox="0 0 1 1">
+                <circle cx="0.5" cy="0.5" r="0.5" fill="crimson" />
+            </svg>
+
+            <g id="common">
+                <circle cx="20" cy="20" r="20" fill="gold" />
+            </g>
+
+            <g id="commonBB">
+                <circle cx="0.5" cy="0.5" r="0.5" fill="gold" />
+            </g>
+
+            <filter id="symbolFilter" filterUnits="userSpaceOnUse" x="40" y="40" width="40" height="40">
+                <feImage xlink:href="#symbol" result="image"/>
+            </filter>
+
+            <filter id="svgFilter" filterUnits="userSpaceOnUse" x="40" y="40" width="40" height="40">
+                <feImage xlink:href="#svg" result="image"/>
+            </filter>
+
+            <filter id="commonFilter" filterUnits="userSpaceOnUse" x="0" y="0" width="40" height="40">
+                <feImage xlink:href="#common" result="image"/>
+            </filter>
+
+            <filter id="symbolFilterBB" primitiveUnits="objectBoundingBox" 
+                    filterUnits="userSpaceOnUse" x="40" y="40" width="40" height="40">
+                <feImage xlink:href="#symbol" result="image" x="1" y="1" width="1" height="1"/>
+            </filter>
+
+            <filter id="svgFilterBB" primitiveUnits="objectBoundingBox" 
+                    filterUnits="userSpaceOnUse" x="40" y="40" width="40" height="40">
+                <feImage xlink:href="#svg" result="image" x="1" y="1" width="1" height="1"/>
+            </filter>
+
+            <filter id="commonFilterBB" primitiveUnits="objectBoundingBox" 
+                    filterUnits="userSpaceOnUse" x="0" y="0" width="40" height="40">
+                <feImage xlink:href="#commonBB" result="image" x="0" y="0" width="1" height="1"/>
+            </filter>
+
+        </defs>
+
+        <g transform="translate(0,50)">
+            <g transform="translate(50, 50)">
+                <use id="useSymbol" xlink:href="#symbol" x="40" y="40" width="40" height="40" />
+                <text x="60" y="30" text-anchor="middle">&lt;symbol&gt;</text>
+            </g>
+
+            <g transform="translate(150, 50)">
+                <use id="useSvg" xlink:href="#svg" x="40" y="40" width="40" height="40" />
+                <text x="60" y="30" text-anchor="middle">&lt;svg&gt;</text>
+            </g>
+
+            <g transform="translate(250, 50)">
+                <use xlink:href="#common" x="40" y="40"/>
+                <text x="60" y="30" text-anchor="middle">&lt;g&gt;</text>
+            </g>
+        </g>
+
+        <g transform="translate(0, 150)">
+            <g transform="translate(50, 50)">
+                <g filter="url(#symbolFilter)" />
+                <text x="60" y="30" text-anchor="middle"><tspan x="60" y="15">feImage</tspan>
+                                                         <tspan x="60" y="30">&lt;symbol&gt;</tspan></text>
+            </g>
+            <g transform="translate(150, 50)">
+                <g filter="url(#svgFilter)" />
+                <text x="60" y="30" text-anchor="middle"><tspan x="60" y="15">feImage</tspan>
+                                                         <tspan x="60" y="30">&lt;svg&gt;</tspan></text>
+            </g>
+            <g transform="translate(250, 50)">
+                <g transform="translate(40, 40)" filter="url(#commonFilter)" />
+                <text x="60" y="30" text-anchor="middle"><tspan x="60" y="15">feImage</tspan>
+                                                         <tspan x="60" y="30">&lt;g&gt;</tspan></text>
+            </g>
+        </g>
+
+        <g transform="translate(0, 250)">
+            <g transform="translate(50, 50)">
+                <g filter="url(#symbolFilterBB)">
+                    <rect width="40" height="40" />
+                </g>
+                <text x="60" y="30" text-anchor="middle"><tspan x="60" y="15">feImage ObjBBox</tspan>
+                                                         <tspan x="60" y="30">&lt;symbol&gt;</tspan></text>
+            </g>
+
+            <g transform="translate(150, 50)">
+                <g filter="url(#svgFilterBB)">
+                    <rect width="40" height="40" />
+                </g>
+                <text x="60" y="30" text-anchor="middle"><tspan x="60" y="15">feImage ObjBBox</tspan>
+                                                         <tspan x="60" y="30">&lt;svg&gt;</tspan></text>
+            </g>
+
+            <g transform="translate(250, 50)">
+                <g transform="translate(40, 40)" filter="url(#commonFilterBB)">
+                    <rect width="40" height="40" />
+                </g>
+                <text x="60" y="30" text-anchor="middle"><tspan x="60" y="15">feImage ObjBBox</tspan>
+                                                         <tspan x="60" y="30">&lt;g&gt;</tspan></text>
+            </g>
+
+        </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/filters/feMerge.png 
b/tests/data/svg/batik/tests/spec/filters/feMerge.png
new file mode 100644
index 0000000..0450a55
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/feMerge.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/feMerge.svg 
b/tests/data/svg/batik/tests/spec/filters/feMerge.svg
new file mode 100644
index 0000000..3715b91
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/feMerge.svg
@@ -0,0 +1,237 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author deweese kodak com                                                 -->
+<!-- @version $Id $  -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg";
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+  <title>feMerge Test</title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+
+    <text x="225" y="40" class="title">
+      feMerge Test
+    </text>
+
+    <g transform="translate(0, 50)">
+      <defs>
+
+
+        <circle id="Circle1" cx="40" cy="65" r="25" style="fill:yellowGreen" />
+
+        <circle id="Circle2" cx="80" cy="55" r="25" style="fill:darkBlue" />
+
+        <rect   id="Rect1"   x="40" y="35" width="30" height="70" 
+                style="fill:dodgerBlue" />
+
+        <rect   id="Rect2"   x="60" y="15" width="30" height="70" 
+                rx="10" ry="10"
+                style="fill:Green" />
+
+        <filter id="Merge1" x="0" y="0" width="1" height="1">
+          <feImage xlink:href="#Circle1" result="Circle1" />
+          <feImage xlink:href="#Circle2" result="Circle2" />
+          <feImage xlink:href="#Rect1"   result="Rect1" />
+          <feImage xlink:href="#Rect2"   result="Rect2" />
+          <feMerge>
+            <feMergeNode in="Circle1"/>
+            <feMergeNode in="Circle2"/>
+            <feMergeNode in="Rect1"/>
+            <feMergeNode in="Rect2"/>
+          </feMerge>
+        </filter>
+
+        <filter id="Merge2" x="0" y="0" width="1" height="1">
+          <feImage xlink:href="#Circle1" result="Circle1" />
+          <feImage xlink:href="#Circle2" result="Circle2" />
+          <feImage xlink:href="#Rect1"   result="Rect1" />
+          <feImage xlink:href="#Rect2"   result="Rect2" />
+
+          <feMerge>
+            <feMergeNode in="Circle1"/>
+            <feMergeNode in="Rect1"/>
+            <feMergeNode in="Circle2"/>
+            <feMergeNode in="Rect2"/>
+          </feMerge>
+        </filter>
+
+        <filter id="Merge3" x="0" y="0" width="1" height="1">
+          <feImage xlink:href="#Circle1" result="Circle1" />
+          <feImage xlink:href="#Circle2" result="Circle2" />
+          <feImage xlink:href="#Rect1"   result="Rect1" />
+          <feImage xlink:href="#Rect2"   result="Rect2" />
+
+          <feMerge>
+            <feMergeNode in="Circle1"/>
+            <feMergeNode in="Rect1"/>
+            <feMergeNode in="Rect2"/>
+            <feMergeNode in="Circle2"/>
+          </feMerge>
+        </filter>
+
+        <filter id="Merge4" x="0" y="0" width="1" height="1">
+          <feImage xlink:href="#Circle1" result="Circle1" />
+          <feImage xlink:href="#Circle2" result="Circle2" />
+          <feImage xlink:href="#Rect1"   result="Rect1" />
+          <feImage xlink:href="#Rect2"   result="Rect2" />
+
+          <feMerge>
+            <feMergeNode in="Rect1"/>
+            <feMergeNode in="Rect2"/>
+            <feMergeNode in="Circle1"/>
+            <feMergeNode in="Circle2"/>
+          </feMerge>
+        </filter>
+
+        <filter id="Merge5" x="0" y="0" width="1" height="1">
+          <feImage xlink:href="#Circle1" result="Circle1" />
+          <feImage xlink:href="#Circle2" result="Circle2" />
+          <feImage xlink:href="#Rect1"   result="Rect1" />
+          <feImage xlink:href="#Rect2"   result="Rect2" />
+
+          <feMerge>
+            <feMergeNode in="Rect1"/>
+            <feMergeNode in="Circle1"/>
+            <feMergeNode in="Rect2"/>
+            <feMergeNode in="Circle2"/>
+          </feMerge>
+        </filter>
+
+        <filter id="Merge6" x="0" y="0" width="1" height="1">
+          <feImage xlink:href="#Circle1" result="Circle1" />
+          <feImage xlink:href="#Circle2" result="Circle2" />
+          <feImage xlink:href="#Rect1"   result="Rect1" />
+          <feImage xlink:href="#Rect2"   result="Rect2" />
+
+          <feMerge>
+            <feMergeNode in="Rect2"/>
+            <feMergeNode in="Circle2"/>
+            <feMergeNode in="Rect1"/>
+            <feMergeNode in="Circle1"/>
+          </feMerge>
+        </filter>
+
+      </defs>
+
+      <g transform="translate(0 40)" class="legend">
+
+        <!-- ============================================== -->
+        <!-- Composite_1_*                                  -->
+        <!-- ============================================== -->
+        <g transform="translate(0 20)" class="row1" >
+          <g  transform="translate(20 0)">
+            <rect x="0" y="0" width="120" height="120" style="fill:WhiteSmoke"/>
+            <rect x="0" y="0" width="120" height="120" 
+                  style="fill:FireBrick;  filter:url(#Merge1)"/>
+
+            <g transform="translate(60, 130)">
+              <text x="0" y="0" style="text-anchor:middle">
+                lt green/blue/lt blue/green
+              </text>
+            </g>
+          </g>
+
+          <g  transform="translate(160 0)">
+            <rect x="0" y="0" width="120" height="120" style="fill:WhiteSmoke"/>
+            <rect x="0" y="0" width="120" height="120" 
+                  style="fill:FireBrick;  filter:url(#Merge2)" />
+            <g transform="translate(60, 130)">
+              <text x="0" y="0" style="text-anchor:middle">
+                lt green/lt blue/blue/green
+              </text>
+            </g>
+          </g>
+
+
+          <g  transform="translate(300 0)">
+            <rect x="0" y="0" width="120" height="120" style="fill:WhiteSmoke"/>
+            <rect x="0" y="0" width="120" height="120" 
+                  style="fill:FireBrick;  filter:url(#Merge3)" />
+            <g transform="translate(60, 130)">
+              <text x="0" y="0" style="text-anchor:middle">
+                lt green/lt blue/green/blue
+              </text>
+            </g>
+          </g>
+        </g>
+
+        <!-- ============================================== -->
+        <!-- Composite_2_*                                  -->
+        <!-- ============================================== -->
+        <g transform="translate(0 160)" class="row2" >
+          <g transform="translate(20 0)">
+            <rect x="0" y="0" width="120" height="120" style="fill:WhiteSmoke"/>
+            <rect x="0" y="0" width="120" height="120" 
+                  style="fill:FireBrick;  filter:url(#Merge4)"/>
+            <g transform="translate(60, 130)">
+              <text x="0" y="0" style="text-anchor:middle">
+                lt blue/green/lt green/blue
+              </text>
+            </g>
+          </g>
+
+          <g  transform="translate(160 0)">
+            <rect x="0" y="0" width="120" height="120" style="fill:WhiteSmoke"/>
+            <rect x="0" y="0" width="120" height="120" 
+                  style="fill:FireBrick;  filter:url(#Merge5)"/>
+            <g transform="translate(60, 130)">
+              <text x="0" y="0" style="text-anchor:middle">
+                lt blue/lt green/green/blue
+              </text>
+            </g>
+          </g>
+
+          <g  transform="translate(300 0)">
+            <rect x="0" y="0" width="120" height="120" style="fill:WhiteSmoke"/>
+            <rect x="0" y="0" width="120" height="120" 
+                  style="fill:FireBrick;  filter:url(#Merge6)"/>
+            <g transform="translate(60, 130)">
+              <text x="0" y="0" style="text-anchor:middle">
+                green/blue/lt blue/lt green
+              </text>
+            </g>
+          </g>
+
+        </g>
+
+      </g>
+    </g>
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/filters/feMorphology.png 
b/tests/data/svg/batik/tests/spec/filters/feMorphology.png
new file mode 100644
index 0000000..820f3dd
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/feMorphology.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/feMorphology.svg 
b/tests/data/svg/batik/tests/spec/filters/feMorphology.svg
new file mode 100644
index 0000000..245f248
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/feMorphology.svg
@@ -0,0 +1,112 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Morphology filter test.                                                   -->
+<!--                                                                           -->
+<!-- @author vincent hardy eng sun com                                         -->
+<!-- @version $Id: feMorphology.svg 475685 2006-11-16 11:16:05Z cam $     -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Filter Effect: feMorphology</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+
+<g>
+  <text x="225" y="50" class="title">
+    Filter Effect: feMorphology
+  </text>
+
+  <g transform="translate(0, 62.5)">
+    <defs>
+
+      <filter id="erode1" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feMorphology operator="erode" radius="1"/>
+      </filter>
+
+      <filter id="erode2" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feMorphology operator="erode" radius="2"/>
+      </filter>
+
+      <filter id="dilate1" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feMorphology operator="dilate" radius="1"/>
+      </filter>
+
+      <filter id="dilate2" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feMorphology operator="dilate" radius="3"/>
+      </filter>
+
+      <g id="morphologySource">
+        <rect width="148.933" height="123.284" style="fill:white; fill-opacity:.5" />
+        <g style="fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+        <g>
+          <path style="fill:#FFFFFF;stroke:#6666FF;stroke-width:7.1711;" 
d="M81.403,78.289H3.585v-64.75h77.818v64.75z"/>
+          <path style="fill:none;stroke:#00FF00;stroke-width:7.1711;" 
d="M93.261,77.536c0,23.285-18.581,42.163-41.503,42.163c-22.921,0-41.503-18.877-41.503-42.163c0-23.286,18.582-42.163,41.503-42.163c22.922,0,41.503,18.877,41.503,42.163z"/>
+          <path style="fill:none;stroke:#FF0000;stroke-width:7.1711;" 
d="M98.31,28.445l13.288,27.354l29.714,4.385l-21.501,21.292l5.076,30.064L98.31,97.347l-26.577,14.194l5.076-30.064L55.307,60.184l29.714-4.385L98.31,28.445z"/>
+          <path style="fill:none;stroke:#FFFF00;stroke-width:7.1711;" 
d="M131.563,26.338c0,28.559-22.79,51.709-50.901,51.709c-22.489,0-40.72-18.521-40.72-41.367c0-18.278,14.584-33.095,32.576-33.095c14.394,0,26.061,11.854,26.061,26.475
+              
c0,11.698-9.334,21.181-20.849,21.181c-9.211,0-16.68-7.586-16.68-16.944c0-7.486,5.975-13.555,13.344-13.555c5.895,0,10.674,4.855,10.674,10.844c0,4.791-3.823,8.676-8.54,8.676c-3.773,0-6.832-3.107-6.832-6.941"/>
+        </g>
+        </g>
+      </g>
+
+    </defs>
+    <g class="legend">
+    <g transform="translate(0, 0)">
+      <use xlink:href="#morphologySource" x="35" y="25" style="filter:url(#erode1)" />
+      <text x="110" y="170">type=erode radius=1</text>
+     </g>
+
+    <g transform="translate(225, 0)">
+       <use xlink:href="#morphologySource" x="35" y="25" style="filter:url(#erode2)" />
+      <text x="110" y="170">type=erode radius=2</text>
+    </g>
+
+    <g transform="translate(0, 195)">
+      <use xlink:href="#morphologySource" x="35" y="25" style="filter:url(#dilate1)"/>
+      <text x="110" y="170">type=dilate radius=1</text>
+    </g>
+
+    <g transform="translate(225, 195)">
+      <use xlink:href="#morphologySource" x="35" y="25" style="filter:url(#dilate2)" />
+      <text x="110" y="170">type=dilate radius=3</text>
+    </g>
+
+  </g>
+  </g>
+
+</g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/filters/feTile.png 
b/tests/data/svg/batik/tests/spec/filters/feTile.png
new file mode 100644
index 0000000..4f2d8d9
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/feTile.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/feTile.svg 
b/tests/data/svg/batik/tests/spec/filters/feTile.svg
new file mode 100644
index 0000000..90d4dce
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/feTile.svg
@@ -0,0 +1,147 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- feTile test                                                               -->
+<!--                                                                           -->
+<!-- @author vincent hardy eng sun com                                         -->
+<!-- @version $Id: feTile.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>feTile Test</title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent" class="legend" style="text-anchor:middle">
+        <text x="225" y="40" class="title">
+            feTile Test
+        </text>
+
+        <defs>
+            <linearGradient id="tileFill" gradientUnits="objectBoundingBox"
+                            x1="0" y1="0" x2="1" y2="1">
+                <stop offset="0" stop-color="white" />
+                <stop offset=".5" stop-color="#44ccff" />
+                <stop offset="1" stop-color="#000033" />
+            </linearGradient>
+
+            <!-- ============================== -->
+            <!-- Simple tile in top left corner -->
+            <!-- ============================== -->
+            <filter id="tile_1" primitiveUnits="objectBoundingBox"
+                filterUnits="objectBoundingBox"
+                x="0" y="0" width="200%" height="200%">
+                <feOffset x="0%" y="0%" width="100%" height="100%"/>
+                <feTile /> 
+            </filter>
+                
+            <!-- =============================== -->
+            <!-- Tile in center of filter region -->
+            <!-- =============================== -->
+            <filter id="tile_2" primitiveUnits="objectBoundingBox"
+                filterUnits="objectBoundingBox"
+                x="-50%" y="-50%" width="200%" height="200%">
+                <feOffset x="0%" y="0%" width="100%" height="100%"/>
+                <feTile />
+            </filter>
+
+            <!-- =============================== -->
+            <!-- Tile offset in top left corner  -->
+            <!-- =============================== -->
+            <filter id="tile_3" primitiveUnits="objectBoundingBox"
+                filterUnits="objectBoundingBox"
+                x="-25%" y="-25%" width="200%" height="200%">
+                <feOffset x="0%" y="0%" width="100%" height="100%"/>
+                <feTile />
+            </filter>
+
+
+                
+
+        </defs>
+
+        <g transform="translate(20, 100)">
+            <rect x="0" y="0" width="50" height="25" style="fill:url(#tileFill); filter:url(#tile_1)"/>
+            <rect x="0" y="0" width="100" height="50" style="fill:none; stroke:black;"/>
+            <text x="50" y="-15">tile_1</text>
+            <text x="50" y="-3">4 tiles, quarter size</text>
+        </g>
+
+        <g transform="translate(20, 200)">
+            <rect x="25" y="12.5" width="50" height="25" style="fill:url(#tileFill); filter:url(#tile_2)"/>
+            <rect x="0" y="0" width="100" height="50" style="fill:none; stroke:black;"/>
+            <text x="50" y="-15">tile_2 (centered)</text>
+            <text x="50" y="-3">9 tiles, 1 full, 8 partial</text>
+        </g>
+
+        <g transform="translate(32.5, 307.25)">
+            <rect x="0" y="0" width="50" height="25" style="fill:url(#tileFill); filter:url(#tile_3)"/>
+            <rect x="-12.5" y="-7.25" width="100" height="50" style="fill:none; stroke:black;"/>
+            <text x="37.5" y="-22.25">tile_3 (top left offset)</text>
+            <text x="37.5" y="-10.25">9 tiles, 1 full, 8 partial</text>
+        </g>
+
+        <g transform="translate(245, 100) skewX(30)">
+            <rect x="0" y="0" width="50" height="25" style="fill:url(#tileFill); filter:url(#tile_1)"/>
+            <rect x="0" y="0" width="100" height="50" style="fill:none; stroke:black;"/>
+        </g>
+        <g transform="translate(245, 100)">
+            <text x="50" y="-15">tile_1</text>
+            <text x="50" y="-3">skewed X</text>
+        </g>
+
+        <g transform="translate(245, 200) translate(50, 30) rotate(20) scale(.7, .7) translate(-50, -25)">
+            <rect x="25" y="12.5" width="50" height="25" style="fill:url(#tileFill); filter:url(#tile_2)"/>
+            <rect x="0" y="0" width="100" height="50" style="fill:none; stroke:black;"/>
+        </g>
+        <g transform="translate(245, 200)">
+            <text x="50" y="-15">tile_2</text>
+            <text x="50" y="-3">(centered, rotate &amp; scale)</text>
+        </g>
+
+        <g transform="translate(257.5, 307.25) translate(-12.5, 0) skewY(15) translate(12.5, 0)">
+            <rect x="0" y="0" width="50" height="25" style="fill:url(#tileFill); filter:url(#tile_3)"/>
+            <rect x="-12.5" y="-6.25" width="100" height="50" style="fill:none; stroke:black;"/>
+        </g>
+        <g transform="translate(257.5, 307.25) ">
+            <text x="37.5" y="-22.25">tile_3 (top left offset)</text>
+            <text x="37.5" y="-10.25">skewed Y</text>
+        </g>
+
+    </g>
+
+        <!-- Link to visual reference -->
+        <a xlink:href="feTileTarget.svg" xlink:show="new">
+            <text x="20" y="475">How it should look like...</text>
+        </a>
+
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/filters/feTileTarget.png 
b/tests/data/svg/batik/tests/spec/filters/feTileTarget.png
new file mode 100644
index 0000000..235aea8
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/feTileTarget.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/feTileTarget.svg 
b/tests/data/svg/batik/tests/spec/filters/feTileTarget.svg
new file mode 100644
index 0000000..3074141
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/feTileTarget.svg
@@ -0,0 +1,199 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- feTile reference file. This shows what the visual result of the tiling    -->
+<!-- should be like, but using defs and use elements instead of feTile         -->
+<!--                                                                           -->
+<!-- @author vincent hardy eng sun com                                         -->
+<!-- @version $Id: feTileTarget.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>feTile Visual Reference</title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent" class="legend" style="text-anchor:middle">
+        <text x="225" y="40" class="title">
+            feTile Test Visual Reference
+        </text>
+
+        <defs>
+            <linearGradient id="tileFill" gradientUnits="objectBoundingBox"
+                            x1="0" y1="0" x2="1" y2="1">
+                <stop offset="0" stop-color="white" />
+                <stop offset=".5" stop-color="#44ccff" />
+                <stop offset="1" stop-color="#000033" />
+            </linearGradient>
+
+            <rect id="tile" fill="url(#tileFill)" width="50" height="25" />
+
+            <clipPath id="filterClip" clipPathUnits="userSpaceOnUse">
+                <rect x="-0.5" y="-0.5" width="101" height="51" />
+            </clipPath>
+
+        </defs>
+
+        <!-- ======================== -->
+        <!-- Simple tiling reference  -->
+        <!-- ======================== -->
+        <g transform="translate(20, 100)">
+
+            <use xlink:href="#tile" />
+            <use xlink:href="#tile" x="50" />
+            <use xlink:href="#tile" y="25" />
+            <use xlink:href="#tile" x="50" y="25" />
+
+            <rect x="0" y="0" width="100" height="50" style="fill:none; stroke:black;"/>
+            <text x="50" y="-15">tile_1</text>
+            <text x="50" y="-3">Reference</text>
+        </g>
+
+        <!-- =============================== -->
+        <!-- Simple Skewed tiling reference  -->
+        <!-- =============================== -->
+        <g transform="translate(245, 100) skewX(30)">
+            <use xlink:href="#tile" />
+            <use xlink:href="#tile" x="50" />
+            <use xlink:href="#tile" y="25" />
+            <use xlink:href="#tile" x="50" y="25" />
+            <rect x="0" y="0" width="100" height="50" style="fill:none; stroke:black;"/>
+        </g>
+        <g transform="translate(245, 100)">        
+            <text x="50" y="-15">tile_1 Skewed Reference</text>
+            <text x="50" y="-3">Reference</text>
+        </g>
+
+        <!-- =============================== -->
+        <!-- Tile in center of filter region -->
+        <!-- =============================== -->
+        <g transform="translate(20, 200)" >
+            <g clip-path="url(#filterClip)">
+            <use xlink:href="#tile" x="-25" y="-12.5" />
+            <use xlink:href="#tile" x="25"  y="-12.5"/>
+            <use xlink:href="#tile" x="75"  y="-12.5"/>
+
+            <use xlink:href="#tile" x="-25" y="12.5"/>
+            <use xlink:href="#tile" x="25"  y="12.5"/>
+            <use xlink:href="#tile" x="75"  y="12.5"/>
+
+            <use xlink:href="#tile" x="-25" y="37.5"/>
+            <use xlink:href="#tile" x="25"  y="37.5"/>
+            <use xlink:href="#tile" x="75"  y="37.5"/>
+            </g>
+            <rect x="0" y="0" width="100" height="50" style="fill:none; stroke:black;"/>
+        </g>
+        <g transform="translate(20, 200)">        
+            <text x="50" y="-15">tile_2</text>
+            <text x="50" y="-3">Reference</text>
+        </g>
+
+        <!-- ======================================== -->
+        <!-- Tile offset center, scaled rotated       -->
+        <!-- ======================================== -->
+
+        <g transform="translate(245, 200) translate(50, 30) rotate(20) scale(.7, .7) translate(-50, -25)">
+            <g  clip-path="url(#filterClip)">
+            <use xlink:href="#tile" x="-25" y="-12.5" />
+            <use xlink:href="#tile" x="25"  y="-12.5"/>
+            <use xlink:href="#tile" x="75"  y="-12.5"/>
+
+            <use xlink:href="#tile" x="-25" y="12.5"/>
+            <use xlink:href="#tile" x="25"  y="12.5"/>
+            <use xlink:href="#tile" x="75"  y="12.5"/>
+
+            <use xlink:href="#tile" x="-25" y="37.5"/>
+            <use xlink:href="#tile" x="25"  y="37.5"/>
+            <use xlink:href="#tile" x="75"  y="37.5"/>
+            </g>
+
+            <rect x="0" y="0" width="100" height="50" style="fill:none; stroke:black;"/>
+        </g>
+        <g transform="translate(245, 200)">
+            <text x="50" y="-15">tile_2</text>
+            <text x="50" y="-3">Reference Scaled Rotated</text>
+        </g>
+
+        <!-- =============================== -->
+        <!-- Tile offset in top left corner  -->
+        <!-- =============================== -->
+        <g transform="translate(20, 300)" >
+            <g clip-path="url(#filterClip)">
+            <use xlink:href="#tile" x="-37.5" y="-18.75" />
+            <use xlink:href="#tile" x="12.5"  y="-18.75"/>
+            <use xlink:href="#tile" x="62.5"  y="-18.75"/>
+
+            <use xlink:href="#tile" x="-37.5" y="6.25" />
+            <use xlink:href="#tile" x="12.5"  y="6.25"/>
+            <use xlink:href="#tile" x="62.5"  y="6.25"/>
+
+            <use xlink:href="#tile" x="-37.5" y="31.25" />
+            <use xlink:href="#tile" x="12.5"  y="31.25"/>
+            <use xlink:href="#tile" x="62.5"  y="31.25"/>
+            </g>
+
+            <rect x="0" y="0" width="100" height="50" style="fill:none; stroke:black;"/>
+        </g>
+        <g transform="translate(20, 300)">        
+            <text x="50" y="-15">tile_3</text>
+            <text x="50" y="-3">Reference</text>
+        </g>
+
+        <!-- ======================================== -->
+        <!-- Tile offset in top left corner, skewedY  -->
+        <!-- ======================================== -->
+
+        <g transform="translate(245, 300) skewY(15)">
+            <g  clip-path="url(#filterClip)">
+            <use xlink:href="#tile" x="-37.5" y="-18.75" />
+            <use xlink:href="#tile" x="12.5"  y="-18.75"/>
+            <use xlink:href="#tile" x="62.5"  y="-18.75"/>
+
+            <use xlink:href="#tile" x="-37.5" y="6.25" />
+            <use xlink:href="#tile" x="12.5"  y="6.25"/>
+            <use xlink:href="#tile" x="62.5"  y="6.25"/>
+
+            <use xlink:href="#tile" x="-37.5" y="31.25" />
+            <use xlink:href="#tile" x="12.5"  y="31.25"/>
+            <use xlink:href="#tile" x="62.5"  y="31.25"/>
+            </g>
+
+            <rect x="0" y="0" width="100" height="50" style="fill:none; stroke:black;"/>
+        </g>
+        <g transform="translate(245, 300)">
+            <text x="50" y="-15">tile_3</text>
+            <text x="50" y="-3">Reference Skewed Y</text>
+        </g>
+
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/filters/feTurbulence.png 
b/tests/data/svg/batik/tests/spec/filters/feTurbulence.png
new file mode 100644
index 0000000..a635183
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/feTurbulence.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/feTurbulence.svg 
b/tests/data/svg/batik/tests/spec/filters/feTurbulence.svg
new file mode 100644
index 0000000..5437c4d
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/feTurbulence.svg
@@ -0,0 +1,112 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author vincent hardy eng sun com                                         -->
+<!-- @version $Id: feTurbulence.svg 475477 2006-11-15 22:44:28Z cam $     -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Filter Effect: feTurbulence</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+
+<g>
+  <text x="225" y="50" class="title">
+    Filter Effect: feTurbulence
+  </text>
+  <g transform="translate(0,62.5)">
+    <defs>
+      <filter id="Turb1" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2"/>
+      </filter>
+      <filter id="Turb2" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.1" numOctaves="2"/>
+      </filter>
+      <filter id="Turb3" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="8"/>
+      </filter>
+      <filter id="Turb4" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="fractalNoise" baseFrequency="0.1" numOctaves="4"/>
+      </filter>
+      <filter id="Turb5" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="fractalNoise" baseFrequency="0.4" numOctaves="4"/>
+      </filter>
+      <filter id="Turb6" filterUnits="objectBoundingBox" 
+              x="0%" y="0%" width="100%" height="100%">
+        <feTurbulence type="fractalNoise" baseFrequency="0.1" numOctaves="1"/>
+      </filter>
+    </defs>
+    <g class="legend">
+    <rect x="25" y="25" width="100" height="75" style="filter:url(#Turb1)" />
+    <text x="75" y="117">type=turbulence</text>
+    <text x="75" y="129">baseFrequency=0.05</text>
+    <text x="75" y="141">numOctaves=2</text>
+
+    <rect x="175" y="25" width="100" height="75" style="filter:url(#Turb2)" />
+    <text x="225" y="117">type=turbulence</text>
+    <text x="225" y="129">baseFrequency=0.1</text>
+    <text x="225" y="141">numOctaves=2</text>
+
+    <rect x="325" y="25" width="100" height="75" style="filter:url(#Turb3)" />
+    <text x="375" y="117">type=turbulence</text>
+    <text x="375" y="129">baseFrequency=0.05</text>
+    <text x="375" y="141">numOctaves=8</text>
+
+    <rect x="25" y="180" width="100" height="75" style="filter:url(#Turb4)" />
+    <text x="75" y="272">type=fractalNoise</text>
+    <text x="75" y="284">baseFrequency=0.1</text>
+    <text x="75" y="296">numOctaves=4</text>
+
+    <rect x="175" y="180" width="100" height="75" style="filter:url(#Turb5)" />
+    <text x="225" y="272">type=fractalNoise</text>
+    <text x="225" y="284">baseFrequency=0.4</text>
+    <text x="225" y="296">numOctaves=4</text>
+
+    <rect x="325" y="180" width="100" height="75" style="filter:url(#Turb6)" />
+    <text x="375" y="272">type=fractalNoise</text>
+    <text x="375" y="284">baseFrequency=0.1</text>
+    <text x="375" y="296">numOctaves=1</text>
+   </g>
+  </g>
+
+</g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/filters/filterRegions.png 
b/tests/data/svg/batik/tests/spec/filters/filterRegions.png
new file mode 100644
index 0000000..d93d280
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/filterRegions.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/filterRegions.svg 
b/tests/data/svg/batik/tests/spec/filters/filterRegions.svg
new file mode 100644
index 0000000..69a47da
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/filterRegions.svg
@@ -0,0 +1,482 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This tests validates the filter region processing for the top level       -->
+<!-- filter nodes and filter primitives. For each test, a filter is invoked    -->
+<!-- to render in a region specified by the filter region. In addition, a      -->
+<!-- control rectangle, bounding the expected filter region is rendered on top -->
+<!-- of the filter.                                                            -->
+<!--                                                                           -->
+<!-- @author vincent hardy eng sun com                                         -->
+<!-- @version $Id: filterRegions.svg 475477 2006-11-15 22:44:28Z cam $    -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>FilterRegions test</title>
+
+    <text x="225" y="40" class="title">
+        Filter Regions
+     </text>
+
+    <style type="text/css">
+        <![CDATA[
+            .filterRegionControl {
+                fill: none;
+                stroke: black;
+                stroke-opacity: .5;
+                stroke-width: 1;
+                
+            }
+
+            .filterRegionControlLabel {
+                fill: black;
+                font-family: Verdana;
+                font-size: 10;
+                text-anchor: middle;
+            }
+        ]]>
+    </style>
+
+    <defs>
+        <!-- ======================================================== -->
+        <!-- ======================================================== -->
+        <!-- userSpaceOnUser for filter chain and for filterPrimitive -->
+        <!-- ======================================================== -->
+        <!-- ======================================================== -->
+
+        <!-- ======================================================== -->
+        <!-- filterRegion_0                                           -->
+        <!--   chain region: [objectBoundingBox], undefined           -->
+        <!--   flood region: [userSpaceOnUse], undefined              -->
+        <!--                                                          -->
+        <!-- Expected fill region: (0, 0, 450, 450) in user space     -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_0" >
+            <feFlood style="flood-color:red;" />
+        </filter>
+
+        <!-- ======================================================== -->
+        <!-- filterRegion_1                                           -->
+        <!--   chain region: userSpaceOnUse, (20, 30, 50, 40)         -->
+        <!--   flood region: userSpaceOnUse, undefined                -->
+        <!--                                                          -->
+        <!-- Expected fill region: (20, 30, 50, 40) in user space     -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_1" filterUnits="userSpaceOnUse" 
+                                    primitiveUnits="userSpaceOnUse"
+                                    x="20" y="30" width="50" height="40">
+            <feFlood style="flood-color:red" />
+        </filter>
+
+        <!-- ======================================================== -->
+        <!-- filterRegion_2                                           -->
+        <!--   chain region: userSpaceOnUse, (20, 30, 50, 40)         -->
+        <!--   flood region: userSpaceOnUse, (25, 35, 50, 40)         -->
+        <!--                                                          -->
+        <!-- Expected fill region: (25, 35, 45, 35) in user space     -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_2" filterUnits="userSpaceOnUse" 
+                                    primitiveUnits="userSpaceOnUse"
+                                    x="20" y="30" width="50" height="40">
+            <feFlood style="flood-color:red" x="25" y="35" width="50" height="40"/>
+        </filter>
+
+        <!-- ======================================================== -->
+        <!-- filterRegion_3                                           -->
+        <!--   chain region: userSpaceOnUse, (20, 30, 50, 40)         -->
+        <!--   flood region: userSpaceOnUse, (XX, XX, XX, 20)         -->
+        <!--                                                          -->
+        <!-- Expected fill region: (20, 30, 50, 20) in user space     -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_3" filterUnits="userSpaceOnUse" 
+                                    primitiveUnits="userSpaceOnUse"
+                                    x="20" y="30" width="50" height="40">
+            <feFlood style="flood-color:red" height="20"/>
+        </filter>
+
+        <!-- ======================================================== -->
+        <!-- filterRegion_4                                           -->
+        <!--   chain region: userSpaceOnUse, (20, 30, 50, 40)         -->
+        <!--   flood region: userSpaceOnUse, (XX, XX, 25, XX)         -->
+        <!--                                                          -->
+        <!-- Expected fill region: (20, 30, 25, 40) in user space     -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_4" filterUnits="userSpaceOnUse" 
+                                    primitiveUnits="userSpaceOnUse"
+                                    x="20" y="30" width="50" height="40">
+            <feFlood style="flood-color:red" width="25"/>
+        </filter>
+
+        <!-- ======================================================== -->
+        <!-- filterRegion_5                                           -->
+        <!--   chain region: userSpaceOnUse, (20, 30, 50, 40)         -->
+        <!--   flood region: userSpaceOnUse, (XX, 10, XX, XX)         -->
+        <!--                                                          -->
+        <!-- Expected fill region: (20, 30, 50, 20) in user space     -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_5" filterUnits="userSpaceOnUse" 
+                                    primitiveUnits="userSpaceOnUse"
+                                    x="20" y="30" width="50" height="40">
+            <feFlood style="flood-color:red" y="10"/>
+        </filter>
+        
+        <!-- ======================================================== -->
+        <!-- filterRegion_6                                           -->
+        <!--   chain region: userSpaceOnUse, (20, 30, 50, 40)         -->
+        <!--   flood region: userSpaceOnUse, (10, XX, XX, XX)         -->
+        <!--                                                          -->
+        <!-- Expected fill region: (20, 30, 40, 40) in user space     -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_6" filterUnits="userSpaceOnUse" 
+                                    primitiveUnits="userSpaceOnUse"
+                                    x="20" y="30" width="50" height="40">
+            <feFlood style="flood-color:red" x="10"/>
+        </filter>
+        
+
+        <!-- ======================================================== -->
+        <!-- ======================================================== -->
+        <!-- userSpaceOnUse for filter chain and object bounding box  -->
+        <!-- for filter primitive                                     -->
+        <!-- ======================================================== -->
+        <!-- ======================================================== -->
+
+        <!-- ======================================================== -->
+        <!-- filterRegion_2_0                                         -->
+        <!--   chain region: [objectBoundingBox], undefined           -->
+        <!--   flood region: undefined                                -->
+        <!--                                                          -->
+        <!-- Expected fill region: (-10%, -10%, 120%, 120%) in user   -->
+        <!-- space                                                    -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_2_0" primitiveUnits="objectBoundingBox">
+            <feFlood style="flood-color:red;" />
+        </filter>
+
+        <!-- ======================================================== -->
+        <!-- filterRegion_2_1                                         -->
+        <!--   chain region: userSpaceOnUse, undefined                -->
+        <!--   flood region: objectBoundingBox, (0, 0, 1, 1)          -->
+        <!--                                                          -->
+        <!-- Expected fill region: (0, 0, 1, 1) in object bbox space  -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_2_1" filterUnits="userSpaceOnUse" 
+                                    primitiveUnits="objectBoundingBox">
+            <feFlood style="flood-color:red;" x="0" y="0" width="1" height="1"/>
+        </filter>
+
+        <!-- ======================================================== -->
+        <!-- filterRegion_2_2                                         -->
+        <!--   chain region: userSpaceOnUse, undefined                -->
+        <!--   flood region: objectBoundingBox, (0%, 0%, 100%, 100%)  -->
+        <!--                                                          -->
+        <!-- Expected fill region: (0, 0, 1, 1) in object bbox space  -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_2_2" filterUnits="userSpaceOnUse" 
+                                    primitiveUnits="objectBoundingBox">
+            <feFlood style="flood-color:red" x="0%" y="0%" width="100%" height="100%"/>
+        </filter>
+
+        <!-- ======================================================== -->
+        <!-- filterRegion_2_3                                         -->
+        <!--   chain region: userSpaceOnUse, undefined                -->
+        <!--   flood region: objectBoundingBox, (.25, 50%, .5, 25%)   -->
+        <!--                                                          -->
+        <!-- Expected fill region: (.25, .5, .5, .25) in object bbox  -->
+        <!-- space                                                    -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_2_3" filterUnits="userSpaceOnUse" 
+                                    primitiveUnits="objectBoundingBox">
+            <feFlood style="flood-color:red" x=".25" y="50%" width=".5" height="25%"/>
+        </filter>
+
+        <!-- ======================================================== -->
+        <!-- filterRegion_2_4                                         -->
+        <!--   chain region: userSpaceOnUse, undefined                -->
+        <!--   flood region: objectBoundingBox, (25%, .5, 50%, .25)   -->
+        <!--                                                          -->
+        <!-- Expected fill region: (.25, .5, .5, .25) in object bbox  -->
+        <!-- space                                                    -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_2_4" filterUnits="userSpaceOnUse" 
+                                    primitiveUnits="objectBoundingBox">
+            <feFlood style="flood-color:red" x="25%" y=".5" width="50%" height=".25"/>
+        </filter>
+
+        <!-- ======================================================== -->
+        <!-- filterRegion_2_5                                         -->
+        <!--   chain region: userSpaceOnUse, (20, 30, 50, 40)         -->
+        <!--   flood region: objectBoundingBox, (XX, .5, XX, .25)     -->
+        <!--                                                          -->
+        <!-- Expected fill region: (XX, .5, XX, .25) in object bbox   -->
+        <!--                       (20, XX, 50, XX) in user space     -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_2_5" filterUnits="userSpaceOnUse" 
+                                    primitiveUnits="objectBoundingBox" 
+                                    x="20" y="30" width="50" height="40">
+            <feFlood style="flood-color:red" y=".5" height=".25"/>
+        </filter>
+
+        <!-- ======================================================== -->
+        <!-- ======================================================== -->
+        <!-- userSpaceOnUse for primitive, objectBoundingBox for      -->
+        <!-- filter chain.                                            -->
+        <!-- ======================================================== -->
+        <!-- ======================================================== -->
+
+        <!-- ======================================================== -->
+        <!-- filterRegion_3_0                                         -->
+        <!--   chain region: objectBoundingBox, region undefined      -->
+        <!--   flood region: unspecified, region undefined            -->
+        <!--                                                          -->
+        <!-- Expected fill region: (0, 0, 1, 1) in object bbox space  -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_3_0" filterUnits="objectBoundingBox" >
+            <feFlood style="flood-color:red;" />
+        </filter>
+
+        <!-- ======================================================== -->
+        <!-- filterRegion_3_1                                         -->
+        <!--   chain region: objectBoundingBox, region undefined      -->
+        <!--   flood region: userSpaceOnUse (20, 30, 20, 25)          -->
+        <!--                                                          -->
+        <!-- Expected fill region: intersection of (0, 0, 1, 1) in    -->
+        <!--                       bbox space and (20, 30, 20, 25) in -->
+        <!--                       user space.                        -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_3_1" filterUnits="objectBoundingBox" 
+                                      primitiveUnits="userSpaceOnUse">
+            <feFlood style="flood-color:red" x="20" y="30" width="20" height="25"/>
+        </filter>
+
+        <!-- ======================================================== -->
+        <!-- filterRegion_3_2                                         -->
+        <!--   chain region: objectBoundingBox (-1, -1, 2, 2)         -->
+        <!--   flood region: userSpaceOnUse undefined                 -->
+        <!--                                                          -->
+        <!-- Expected fill region:(-1, -1, 2, 2) in                   -->
+        <!--                       bbox space                         -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_3_2" filterUnits="objectBoundingBox" 
+                                      primitiveUnits="userSpaceOnUse"
+                                      x="-1" y="-1" width="2" height="2">
+            <feFlood style="flood-color:red" />
+        </filter>
+
+        <!-- ======================================================== -->
+        <!-- filterRegion_3_3                                         -->
+        <!--   chain region: objectBoundingBox (-50%, -50%, 75%, 75%  -->
+        <!--   flood region: userSpaceOnUse undefined                 -->
+        <!--                                                          -->
+        <!-- Expected fill region:(-.5, -.5, .75, .75) in             -->
+        <!--                       bbox space                         -->
+        <!-- ======================================================== -->
+        <filter id="filterRegion_3_3" filterUnits="objectBoundingBox" 
+                                      primitiveUnits="userSpaceOnUse"
+                                      x="-50%" y="-50%" width="75%" height="75%">
+            <feFlood style="flood-color:red" />
+        </filter>
+
+    </defs>
+
+    <g transform="translate(30, 50)">
+
+    <!-- ============================ -->
+    <!-- filterRegion_0               -->
+    <!-- ============================ -->
+    <g transform="translate(240, 95)">
+        <rect x="0" y="0" width="100" height="50" style="filter:url(#filterRegion_0);" /> 
+        <rect class="filterRegionControl" x="-10" y="-5" width="120" height="60" /> 
+        <text x="45" y="-10" class="filterRegionControlLabel">filterRegion_0</text>
+    </g>
+
+    <!-- ============================ -->
+    <!-- filterRegion_1               -->
+    <!-- ============================ -->
+    <rect x="0" y="3000" width="20000000" height="25" style="filter:url(#filterRegion_1);" />
+    <rect class="filterRegionControl" x="20" y="30" width="50" height="40" />
+    <text x="45" y="25" class="filterRegionControlLabel">filterRegion_1</text> 
+    <!-- ============================ -->
+    <!-- filterRegion_2               -->
+    <!-- ============================ -->
+    <g transform="translate(100, 0)">
+        <rect x="0" y="3000" width="20000000" height="25" style="filter:url(#filterRegion_2);" />
+        <rect class="filterRegionControl" x="25" y="35" width="45" height="35" />
+        <text x="45" y="25" class="filterRegionControlLabel">filterRegion_2</text>
+    </g>
+    
+    <!-- ============================ -->
+    <!-- filterRegion_3               -->
+    <!-- ============================ -->
+    <g transform="translate(200, 0)">
+        <rect x="0" y="3000" width="20000000" height="25" style="filter:url(#filterRegion_3);" />
+        <rect class="filterRegionControl" x="20" y="30" width="50" height="20" />
+        <text x="45" y="25" class="filterRegionControlLabel">filterRegion_3</text>
+    </g>
+    
+    <!-- ============================ -->
+    <!-- filterRegion_4               -->
+    <!-- ============================ -->
+    <g transform="translate(300, 0)">
+        <rect x="0" y="3000" width="20000000" height="25" style="filter:url(#filterRegion_4);" />
+        <rect class="filterRegionControl" x="20" y="30" width="25" height="40" />
+        <text x="45" y="25" class="filterRegionControlLabel">filterRegion_4</text>
+    </g>
+    
+    <!-- ============================ -->
+    <!-- filterRegion_5               -->
+    <!-- ============================ -->
+    <g transform="translate(0, 75)">
+        <rect x="0" y="3000" width="20000000" height="25" style="filter:url(#filterRegion_5);" />
+        <rect class="filterRegionControl" x="20" y="30" width="50" height="20" />
+        <text x="45" y="25" class="filterRegionControlLabel">filterRegion_5</text>
+    </g>
+    
+    <!-- ============================ -->
+    <!-- filterRegion_6               -->
+    <!-- ============================ -->
+    <g transform="translate(100, 75)" style="filter:url(#filterRegion_6);">
+        <rect x="0" y="3000" width="20000000" height="25"/>
+    </g>
+    <g transform="translate(100, 75)" >
+        <rect class="filterRegionControl" x="20" y="30" width="40" height="40" />
+        <text x="45" y="25" class="filterRegionControlLabel">filterRegion_6</text>
+    </g>
+
+    <!-- ============================ -->
+    <!-- filterRegion_2_0             -->
+    <!-- ============================ -->
+    <g transform="translate(120, 280)">
+        <rect x="0" y="0" width="50" height="25" style="filter:url(#filterRegion_2_0);" />
+        <rect class="filterRegionControl" x="-5" y="-2.5" width="60" height="30" />
+        <text x="25" y="-20" class="filterRegionControlLabel">filterRegion_2_0</text>
+    </g>
+
+    <!-- ============================ -->
+    <!-- filterRegion_2_1             -->
+    <!-- ============================ -->
+    <g transform="translate(0, 160)" style="filter:url(#filterRegion_2_1);">
+        <rect x="20" y="30" width="50" height="40" />
+    </g>
+    <g transform="translate(0, 160)">
+        <rect class="filterRegionControl" x="20" y="30" width="50" height="40" />
+        <text x="45" y="25" class="filterRegionControlLabel">filterRegion_2_1</text>
+    </g>
+
+    <!-- ============================ -->
+    <!-- filterRegion_2_2             -->
+    <!-- ============================ -->
+    <g transform="translate(100, 160)" >
+        <rect x="20" y="30" width="50" height="40" style="filter:url(#filterRegion_2_2);"/>
+    </g>
+    <g transform="translate(100, 160)">
+        <rect class="filterRegionControl" x="20" y="30" width="50" height="40" />
+        <text x="45" y="25" class="filterRegionControlLabel">filterRegion_2_2</text>
+    </g>
+
+    <!-- ============================ -->
+    <!-- filterRegion_2_3             -->
+    <!-- ============================ -->
+    <g transform="translate(200, 160)" style="filter:url(#filterRegion_2_3);">
+        <rect x="20" y="30" width="50" height="40" />
+    </g>
+    <g transform="translate(200, 160)">
+        <rect class="filterRegionControl" x="32.5" y="50" width="25" height="10" />
+        <text x="45" y="25" class="filterRegionControlLabel">filterRegion_2_3</text>
+    </g>
+
+    <!-- ============================ -->
+    <!-- filterRegion_2_4             -->
+    <!-- ============================ -->
+    <g transform="translate(300, 160)" style="filter:url(#filterRegion_2_4);">
+        <rect x="20" y="30" width="50" height="40" />
+    </g>
+    <g transform="translate(300, 160)">
+        <rect class="filterRegionControl" x="32.5" y="50" width="25" height="10" />
+        <text x="45" y="25" class="filterRegionControlLabel">filterRegion_2_4</text>
+    </g>
+
+    <!-- ============================ -->
+    <!-- filterRegion_2_5             -->
+    <!-- ============================ -->
+    <g transform="translate(0, 245)" style="filter:url(#filterRegion_2_5);">
+        <rect x="20" y="30" width="50" height="40" />
+    </g>
+    <g transform="translate(0, 245)">
+        <rect class="filterRegionControl" x="20" y="50" width="50" height="10" />
+        <text x="45" y="25" class="filterRegionControlLabel">filterRegion_2_5</text>
+    </g>
+
+    <!-- ============================ -->
+    <!-- filterRegion_3_1             -->
+    <!-- ============================ -->
+    <g transform="translate(0, 330)" style="filter:url(#filterRegion_3_1);">
+        <rect x="0" y="0" width="450" height="450" />
+    </g>
+    <g transform="translate(0, 330)">
+        <rect class="filterRegionControl" x="20" y="30" width="20" height="25" />
+        <text x="45" y="25" class="filterRegionControlLabel">filterRegion_3_1</text>
+    </g>
+
+    <!-- ============================ -->
+    <!-- filterRegion_3_0             -->
+    <!-- ============================ -->
+    <g transform="translate(320, 330)" style="filter:url(#filterRegion_3_0);">
+        <rect x="0" y="0" width="40" height="50" />
+    </g>
+    <g transform="translate(320, 330)">
+        <rect class="filterRegionControl" x="-4" y="-5" width="48" height="60" />
+        <text x="45" y="25" class="filterRegionControlLabel">filterRegion_3_0</text>
+    </g>
+
+    <!-- ============================ -->
+    <!-- filterRegion_3_2             -->
+    <!-- ============================ -->
+    <g transform="translate(100, 330)" style="filter:url(#filterRegion_3_2);">
+        <rect x="50" y="40" width="50" height="40" />
+    </g>
+    <g transform="translate(100, 330)">
+        <rect class="filterRegionControl" x="0" y="0" width="100" height="80" />
+        <text x="45" y="25" class="filterRegionControlLabel">filterRegion_3_2</text>
+    </g>
+
+    <!-- ============================ -->
+    <!-- filterRegion_3_3             -->
+    <!-- ============================ -->
+    <g transform="translate(200, 330)" style="filter:url(#filterRegion_3_3);">
+        <rect x="50" y="40" width="50" height="40" />
+    </g>
+    <g transform="translate(200, 330)">
+        <rect class="filterRegionControl" x="25" y="20" width="37.5" height="30" />
+        <text x="45" y="25" class="filterRegionControlLabel">filterRegion_3_3</text>
+    </g>
+    </g>
+    
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />    
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/filters/svgEnableBackground.png 
b/tests/data/svg/batik/tests/spec/filters/svgEnableBackground.png
new file mode 100644
index 0000000..056aace
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/filters/svgEnableBackground.png differ
diff --git a/tests/data/svg/batik/tests/spec/filters/svgEnableBackground.svg 
b/tests/data/svg/batik/tests/spec/filters/svgEnableBackground.svg
new file mode 100644
index 0000000..97cf48e
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/filters/svgEnableBackground.svg
@@ -0,0 +1,189 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"; >
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   
+        http://www.apache.org/licenses/LICENSE-2.0
+   
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!-- ========================================================================= -->
+<!-- @author deweese kodak com                                                 -->
+<!-- @version $Id $                                                            -->
+<!-- ========================================================================= -->
+
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+    <title>
+        enable-background Test on&lt;
+        svg>
+    </title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+
+        <text x="225" y="40" class="title">
+            Enable-Background Test on&lt;
+            svg>
+        </text>
+
+        <g transform="translate(0, 60)">
+            <defs>
+                <g id="uglyBlobs">
+                    <circle id="Circle1" cx="20" cy="65" r="15"
+                            style="fill:orange"/>
+
+                    <circle id="Circle2" cx="40" cy="55" r="15" style="fill:red"/>
+
+                    <rect id="Rect1" x="20" y="35" width="15" height="70"
+                          style="fill:DarkBlue"/>
+
+                    <rect id="Rect2" x="30" y="15" width="15" height="70"
+                          rx="10" ry="10" style="fill:Yellow"/>
+                </g>
+
+                <filter id="OffsetBGX" filterUnits="userSpaceOnUse" x="0" y="0"
+                        width="120" height="120">
+                    <feOffset in="BackgroundImage" dx="60" dy="0"/>
+                </filter>
+
+                <filter id="OffsetBGY" filterUnits="userSpaceOnUse" x="0" y="0"
+                        width="440" height="260">
+                    <feOffset in="BackgroundImage" dx="0" dy="140"/>
+                </filter>
+            </defs>
+
+            <g transform="translate(0 40)" class="legend">
+
+                <!-- ============================================== -->
+                <!-- Enable Background_1_*                          -->
+                <!-- ============================================== -->
+                <svg class="row1" width="421" height="400" 
+                      style="enable-background:new 19 30 403 60">
+
+                    <g transform="translate(20 0)"
+                       style="enable-background:new;">
+                        <rect x="0" y="0" width="60" height="120"
+                              style="fill:Beige"/>
+
+                        <use xlink:href="#uglyBlobs"/>
+                        <rect x="0" y="0" width="1" height="1"
+                              style="filter:url(#OffsetBGX)"/>
+
+                        <rect x="0" y="0" width="60" height="120"
+                              style="fill:none; stroke:black; stroke-width:2"/>
+                        <rect x="60" y="0" width="60" height="120"
+                              style="fill:none; stroke:black; stroke-width:2"/>
+                        <g transform="translate(60, 135)">
+                            <text x="0" y="0" style="text-anchor:middle">
+                                Left Copied to right
+                            </text>
+                        </g>
+                    </g>
+
+                    <g transform="translate(160 0)">
+                        <line x1="-5" y1="20" x2="125" y2="45"
+                              style="stroke-width:5; stroke:#AA3333"/>
+
+                        <line x1="-5" y1="100" x2="125" y2="75"
+                              style="stroke-width:5; stroke:#AA3333"/>
+
+                        <g style="enable-background:new">
+                            <rect x="0" y="0" width="60" height="120"
+                                  style="fill:Beige"/>
+                            <g style="opacity: 0.75">
+                                <rect x="5" y="5" width="50" height="50"
+                                      style="fill:deepPink"/>
+                                <use xlink:href="#uglyBlobs"
+                                     style="opacity:0.75"/>
+                                <rect x="0" y="0" width="120" height="120"
+                                      style="filter:url(#OffsetBGX)"/>
+                            </g>
+                        </g>
+
+                        <rect x="0" y="0" width="60" height="120"
+                              style="fill:none; stroke:black; stroke-width:2"/>
+                        <rect x="60" y="0" width="60" height="120"
+                              style="fill:none; stroke:black; stroke-width:2"/>
+                        <g transform="translate(60, 135)">
+                            <text x="0" y="0" style="text-anchor:middle">
+                                Right is transparent
+                            </text>
+                        </g>
+                    </g>
+
+                    <g transform="translate(300 0)">
+                        <line x1="-5" y1="20" x2="125" y2="45"
+                              style="stroke-width:5; stroke:#AA3333"/>
+
+                        <line x1="-5" y1="100" x2="125" y2="75"
+                              style="stroke-width:5; stroke:#AA3333"/>
+
+                        <rect x="0" y="0" width="60" height="120"
+                              style="fill:Beige"/>
+                        <g style="enable-background:new">
+                            <ellipse cx="25" cy="45" rx="20" ry="30"
+                                     style="fill:#AA00CC"/>
+
+                            <g style="opacity: 0.75">
+                                <use xlink:href="#uglyBlobs"/>
+                                <rect x="0" y="0" width="120" height="120"
+                                      style="filter:url(#OffsetBGX)"/>
+                            </g>
+                        </g>
+
+                        <rect x="0" y="0" width="60" height="120"
+                              style="fill:none; stroke:black; stroke-width:2"/>
+                        <rect x="60" y="0" width="60" height="120"
+                              style="fill:none; stroke:black; stroke-width:2"/>
+                        <g transform="translate(60, 135)">
+                            <text x="0" y="0" style="text-anchor:middle">
+                                Blobs opaquely merged w/ oval
+                            </text>
+                        </g>
+                    </g>
+
+                    <!-- ============================================== -->
+                    <!-- BGEnable _2_*                                  -->
+                    <!-- ============================================== -->
+                    <rect x="0" y="0" width="10" height="10"
+                          style="filter:url(#OffsetBGY)"/>
+
+                    <g transform="translate(220, 270)">
+                        <text x="0" y="0" style="text-anchor:middle">
+                            Copy of middle of first row (by setting
+                            enable-background bounds)
+                        </text>
+                    </g>
+                </svg>
+
+
+
+
+            </g>
+        </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box"/>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/fonts/batikFont.png 
b/tests/data/svg/batik/tests/spec/fonts/batikFont.png
new file mode 100644
index 0000000..e13175d
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/batikFont.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/batikFont.svg 
b/tests/data/svg/batik/tests/spec/fonts/batikFont.svg
new file mode 100644
index 0000000..1fe8fef
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/batikFont.svg
@@ -0,0 +1,182 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Defines a Batik SVG font.                                                 -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                      -->
+<!-- @version $Id: batikFont.svg 475685 2006-11-16 11:16:05Z cam $        -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>SVGFont - Batik Font test</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">Batik SVG Font</text>
+
+        <defs>
+            <symbol id="Batik_Squiggle" viewBox="0 0 540 570">
+                <path id="Batik_Squiggle_Blue" fill="#6666FF"
+                 d="M172,44C137,60,31,135,11,199c-8,27,22,48,44,33
+                    C14,306-1,332,0,356c0,14,13,42,44,27c8-4,35-25,52-41
+                    c14-1,24-11,42-28c17,14,36,10,52-7c22,2,82-78,44-108
+                    c-3-24-30-37-53-18c-6-2-13-1-18,1c22-35,43-82,49-105
+                    C219,47,188,36,172,44z"/>
+                <path id="Batik_Squiggle_Red" fill="#FF0000"
+                 d="M400,0c-18,3-49,31-49,31c-29,23-43,58-28,95
+                    c-13,14-29,44-29,67c0,28,20,52,50,29c7,8,21,16,37,5
+                    c-5,29,3,48,26,49c1,10,13,31,36,17c16-10,58-39,79-56
+                    c25-23,25-94-18-89c33-59-3-96-27-84c-10,4-46,25-52,30
+                    c-1-7-5-12-11-14C436,45,436-5,401,0z"/>
+                <path id="Batik_Squiggle_Green" fill="#33CC33"
+                 d="M275,353c-46,12-88,43-114,91c-9,16,6,37,25,33
+                    c-14,24-40,67-15,81c28,16,52-8,60-15c18,21,50,10,81-17
+                    c41,14,68-2,103-53c8-12,30-43,30-65c0-16-15-30-35-21
+                    c-1-12-9-38-53-19c-10-6-31-5-54,17
+                    C308,375,300,347,275,353z"/>
+            </symbol>
+
+            <!-- ============================= -->
+            <!-- Batik SVG Font Definition     -->
+            <!-- ============================= -->
+
+            <font horiz-adv-x="150" id="Batik">
+                <font-face
+                    font-family="Batik SVGFont"
+                    units-per-em="240"
+                    ascent="190"
+                    descent="50"
+                    alphabetic="0"/>
+
+                <missing-glyph horiz-adv-x="150" d="M20 0 V240 H100 V0 z"/>
+
+
+                <glyph unicode=" " glyph-name=" " horiz-adv-x="100"/>
+
+                <glyph id="B" unicode="B" glyph-name="B" horiz-adv-x="130"> 
+                    <g transform="scale(1,-1) translate(0,-170)">
+                       <!-- Put the Squiggle in the B -->
+                       <use xlink:href="#Batik_Squiggle" 
+                            x="45" y="103" width="54" height="57"/>
+                        <path 
d="M21.244,141.963V40.831c0-6.188-0.57-10.773-1.707-13.754c-1.137-2.977-3.066-5.461-5.793-7.449c-1.137-0.766-2.367-1.395-3.695-1.891s-3.012-0.938-5.055-1.32c-2.125-0.371-3.488-0.781-4.094-1.23s-0.906-1.121-0.906-2.02
+                                 
c0-1.195,0.32-2.035,0.969-2.52c0.645-0.484,1.953-0.73,3.93-0.73c0.758,0,3.816,0.211,9.176,0.625c5.355,0.418,10.387,0.625,15.098,0.625c2.961,0,7.883-0.207,14.758-0.625c6.875-0.414,12.324-0.625,16.352-0.625c16.711,0,29.762,3.461,39.145,10.379
+                                 
s14.074,16.574,14.074,28.965c0,7.148-1.793,13.418-5.375,18.816c-3.586,5.398-9,9.996-16.242,13.797v2.18c11.574,2.051,20.445,6.547,26.613,13.492s9.254,15.879,9.254,26.805c0,15.406-5.184,27.645-15.551,36.715s-24.473,13.602-42.316,13.602
+                                 
c-6.078,0-13.367-0.293-21.871-0.875c-8.508-0.586-13.898-0.875-16.172-0.875c-6.762,0-13.863,0.348-21.301,1.043c-1.824,0.137-2.965,0.207-3.418,0.207c-0.609,0-1.199-0.344-1.77-1.027s-0.852-1.406-0.852-2.172c0-1.598,1.355-2.93,4.074-3.996l0.113-0.055
+                                 
c1.809-0.836,3.223-1.574,4.242-2.223c1.02-0.645,1.906-1.387,2.66-2.223c2.039-2.047,3.492-4.516,4.359-7.402s1.301-7.254,1.301-13.105z
 M39.244,73.209c0,3.648,0.453,5.93,1.367,6.84c0.914,0.914,2.816,1.367,5.711,1.367h16.555
+                                 
c12.023,0,20.758-2.031,26.203-6.098c5.441-4.066,8.164-10.508,8.164-19.324c0-10.945-4.188-20.027-12.559-27.246c-8.375-7.219-18.914-10.832-31.625-10.832c-5.711,0-9.441,0.855-11.191,2.566s-2.625,5.148-2.625,10.316v42.41z
 M39.244,150.737
+                                 
c0,6.539,1.789,10.953,5.371,13.242c3.578,2.293,11.16,3.438,22.746,3.438c14.172,0,24.82-3.031,31.945-9.094s10.688-15.156,10.688-27.281c0-13.031-4.234-23.188-12.695-30.461s-20.316-10.914-35.563-10.914H47.463c-3.578,0-5.84,0.477-6.793,1.426
+                                 s-1.426,3.285-1.426,7.004v52.641z"/>
+                     </g>
+                </glyph>
+
+                <glyph id="a" unicode="a" glyph-name="a" horiz-adv-x="105"> 
+                    <path transform="scale(1,-1)translate(-125, -170)"
+                      
d="M194.825,161.952c-5.238,4.766-10.891,8.285-16.961,10.559c-6.07,2.27-12.863,3.406-20.375,3.406c-7.363,0-12.98-1.922-16.848-5.762c-3.871-3.844-5.805-9.414-5.805-16.719c0-9.359,4.266-16.758,12.805-22.195
+                        
c8.535-5.438,23.766-10.215,45.695-14.324v-15.789c0-7.09-2.16-12.523-6.477-16.297s-10.523-5.664-18.625-5.664c-6.891,0-11.758,0.992-14.598,2.977s-4.258,5.336-4.258,10.063c0,1.984,0.281,4.27,0.852,6.863s0.855,4.156,0.855,4.688
+                        
c0,1.07-0.516,1.945-1.547,2.633s-2.352,1.027-3.953,1.027c-3.055,0-5.652-0.816-7.793-2.449s-3.207-3.664-3.207-6.098c0-6.605,3.664-12.625,11-18.055c7.332-5.43,15.977-8.148,25.93-8.148c13.906,0,23.727,2.621,29.465,7.855
+                        
c5.734,5.238,8.605,14.535,8.605,27.891v42.844c0,6.516,0.621,10.715,1.867,12.594s3.609,2.816,7.086,2.816c0.602,0,1.434-0.035,2.492-0.113c1.055-0.078,1.773-0.117,2.152-0.117c0.527,0,1.02,0.246,1.473,0.73c0.453,0.488,0.68,1.07,0.68,1.742
+                        
c0,1.574-1.273,2.887-3.816,3.934s-5.785,1.574-9.73,1.574c-4.176,0-7.668-1.039-10.477-3.117s-4.973-5.191-6.488-9.348z
 
M193.037,122.167c-16.43,3.43-27.789,7.273-34.074,11.535c-6.285,4.266-9.426,9.973-9.426,17.129c0,5.559,1.512,9.879,4.543,12.961
+                        
c3.027,3.086,7.27,4.625,12.723,4.625c7.492,0,13.738-1.941,18.738-5.832c4.996-3.887,7.496-8.813,7.496-14.777v-25.641z"/>
+                </glyph>
+
+                <glyph id="ti" unicode="ti" glyph-name="ti" horiz-adv-x="100"> 
+                    <g style="fill:#FF0000;" transform="scale(1,-1)translate(-215,-170)">
+                        <path 
d="M311.259,168.69c-0.684-0.531-2.199-0.871-4.551-1.023c-1.441,0-2.711-0.113-3.813-0.34s-2.105-0.57-3.012-1.027c-3.035-1.594-5.102-3.586-6.203-5.98c-1.102-2.391-1.648-6.625-1.648-12.703v-35.543c0-11.688,0.188-23.227,0.566-34.617
+                                 
c0.078-2.047,0.117-3.227,0.117-3.531c0-1.594-0.191-2.617-0.57-3.074c-0.383-0.453-1.066-0.684-2.059-0.684c-1.066,0-9.44,3.681-11.451,4.196s-6.655,1.804-11.209,1.804h-20.266V55.045c0-1.148-0.117-1.918-0.344-2.301s-0.684-0.578-1.363-0.578
+                                 
c-1.219,0-3.059,2.172-5.527,6.516s-4.727,7.617-6.777,9.824c-2.887,3.199-5.98,6.246-9.285,9.141s-4.953,4.609-4.953,5.141c0,0.609,0.375,1.203,1.129,1.773s1.434,0.855,2.035,0.855h8.586v59.84c0,11.266,2.051,19.273,6.16,24.027
+                                 
c4.105,4.754,10.875,7.133,20.305,7.133c5.724,0,11.038-1.066,15.948-3.17c4.26-0.381,8.633-0.58,13.126-0.58c4.328,0,8.957,0.211,13.895,0.625c4.934,0.414,7.668,0.625,8.199,0.625c1.141,0,2.09-0.266,2.848-0.793c0.758-0.531,1.141-1.176,1.141-1.934
+                                 c0-1.137-0.344-1.969-1.023-2.5z 
M251.317,163.288c-2.773-2.922-4.156-7.227-4.156-12.914v-64.957c0,0,12.812,0.543,13.215,0.57c1.194,0.081,2.965,0.184,5.164,0.184c3.867,0,6.23,1.637,7.637,3.914c1.402,2.281,2.105,7.367,2.105,15.266v42.039
+                                 
c0,4.781-0.285,8.273-0.848,10.477c-0.566,2.203-1.563,4.211-2.992,6.031c-0.758,0.836-1.961,1.863-3.617,3.074c-0.292,0.169-0.532,0.312-0.731,0.434c-1.229,0.172-2.446,0.261-3.651,0.261c-5.313,0-9.355-1.457-12.125-4.379z"/>
+                        <path 
d="M284.067,48.667c1.969,0,4.207-1.535,6.711-4.605c2.5-3.07,3.754-5.555,3.754-7.453c0-1.969-1.309-4.453-3.926-7.449c-2.617-2.992-4.648-4.492-6.086-4.492c-1.594,0-3.695,1.555-6.313,4.664s-3.926,5.766-3.926,7.961c0,2.352,1.137,4.836,3.41,7.453s4.398,3.922,6.375,3.922z"/>
+                    </g>
+                </glyph>
+
+
+                <glyph id="k" unicode="k" glyph-name="k" horiz-adv-x="120"> 
+                    <path transform="scale(1,-1)translate(-310, -170)"
+                       
d="M331.507,147.307V35.413c0-8.078-0.68-13.219-2.031-15.43s-3.906-3.316-7.664-3.316h-1.805c-1.387,0-2.465-0.242-3.23-0.734c-0.77-0.492-1.191-1.188-1.27-2.094c0-1.656,1.977-2.941,5.93-3.848l0.23-0.074
+                        
c1.824-0.301,3.516-0.68,5.074-1.133s3.098-0.984,4.617-1.594c2.66-1.059,5.586-2.535,8.781-4.43c3.191-1.895,5.246-2.844,6.16-2.844c0.984,0,1.746,0.383,2.277,1.141s0.801,1.859,0.801,3.301c0,0.305-0.039,1.082-0.113,2.332
+                        
c-0.078,1.254-0.113,2.375-0.113,3.359c-0.383,5.391-0.668,10.684-0.859,15.883s-0.285,10.531-0.285,15.996v80.641l33.148-30.207c1.434-1.367,2.566-2.715,3.398-4.047c0.832-1.328,1.25-2.527,1.25-3.594c0-1.289-1.324-2.316-3.969-3.078
+                        
c-0.305-0.074-0.566-0.148-0.793-0.227c-1.891-0.375-3.215-0.828-3.969-1.359c-0.758-0.527-1.133-1.242-1.133-2.148c0-0.68,0.453-1.262,1.359-1.754s2.004-0.738,3.289-0.738c0.301,0,2.305,0.211,6.008,0.625c3.703,0.418,7.297,0.625,10.773,0.625
+                        
c2.871,0,6.141-0.207,9.809-0.625c3.664-0.414,5.875-0.625,6.633-0.625c1.438,0,2.496,0.227,3.176,0.68s1.02,1.133,1.02,2.039c0,1.734-1.285,2.828-3.855,3.281h-0.113c-1.133,0.152-2.27,0.379-3.402,0.684s-2.305,0.723-3.516,1.254
+                        
c-7.332,2.891-13.758,7.07-19.273,12.543c-0.605,0.684-1.059,1.141-1.359,1.367l-19.73,17.781c10.66,14.914,19.223,26.215,25.688,33.902s11.59,12.672,15.371,14.953c3.023,1.75,6.879,2.969,11.566,3.652c0.375,0.078,0.641,0.113,0.793,0.113
+                        
c2.191,0.152,3.609,0.438,4.254,0.852c0.641,0.414,1,1.113,1.078,2.094c0,1.133-0.512,1.922-1.535,2.375s-3.012,0.68-5.965,0.68h-19.277c-5,0-15.23-10.113-30.684-30.34c-5.609-7.375-10.117-13.227-13.523-17.563l-6.516,6.156v15.617
+                        
c0,6.852,0.531,11.344,1.602,13.477c1.066,2.133,3.086,3.883,6.059,5.25c1.219,0.535,3.121,0.992,5.715,1.371c0.078,0.023,0.152,0.031,0.23,0.031c2.133,0.152,3.523,0.492,4.172,1.023s0.973,1.363,0.973,2.5c0,0.836-0.344,1.496-1.027,1.988
+                        
s-1.594,0.738-2.734,0.738c-0.305,0-2.758-0.211-7.355-0.625c-4.602-0.414-8.992-0.625-13.172-0.625c-6.309,0-12.313,0.375-18.016,1.125c-0.914,0.082-1.445,0.125-1.594,0.125c-0.836,0-1.523-0.25-2.055-0.746s-0.797-1.09-0.797-1.777
+                        
c0-0.766,0.262-1.473,0.789-2.121c0.523-0.648,1.613-1.434,3.27-2.355c0.375-0.227,0.789-0.492,1.242-0.797c1.273-0.758,2.215-1.445,2.816-2.055c1.277-1.367,2.16-3.074,2.648-5.129c0.488-2.051,0.734-5.926,0.734-11.629z"/>
+                 </glyph>
+
+                 <hkern g1="B"  g2="a"  k="5"/>
+                 <hkern g1="a"  g2="t"  k="14"/>
+                 <hkern g1="a"  g2="ti" k="14"/>
+                 <hkern g1="i"  g2="k"  k="6"/>
+                 <hkern g1="ti" g2="k"  k="6"/>
+            </font>
+
+
+            <altGlyphDef id="a1">
+                <glyphRef xlink:href="#a"/>
+            </altGlyphDef>
+
+            <altGlyphDef id="bcde">
+                  <glyphRef xlink:href="#B"/>
+                  <glyphRef xlink:href="fontGlyphsBoth.svg#c"/>
+                  <glyphRef xlink:href="fontGlyphsBoth.svg#d"/>
+                  <glyphRef xlink:href="fontGlyphsBoth.svg#e"/>
+            </altGlyphDef>
+
+
+           <altGlyphDef id="bcItems">
+                  <altGlyphItem>
+                        <glyphRef xlink:href="#B"/>
+                  </altGlyphItem>
+                  <altGlyphItem>
+                      <glyphRef xlink:href="badRef#c"/>
+                      <glyphRef xlink:href="fontGlyphsBoth.svg#c"/>
+                  </altGlyphItem>
+            </altGlyphDef>
+
+        </defs>
+
+        <circle cx="80" cy="250" r="5" fill="red"/>
+        <text x="80" y="250" font-family="Batik SVGFont" font-size="150">Batik</text>
+        <text x="80" y="300" font-family="Batik SVGFont" font-size="30">BBB</text>
+        <text x="80" y="330" font-family="Batik SVGFont" font-size="30">aaa</text>
+        <text x="80" y="360" font-family="Batik SVGFont" font-size="30">tititi</text>
+        <text x="80" y="390" font-family="Batik SVGFont" font-size="30">kkk</text>
+        <text x="80" y="420" font-family="Batik SVGFont" font-size="30">ktiaB</text>
+        <text x="80" y="450" font-family="Batik SVGFont" font-size="30">atikB</text>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" /> 
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontAltGlyph.png 
b/tests/data/svg/batik/tests/spec/fonts/fontAltGlyph.png
new file mode 100644
index 0000000..6a622e5
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontAltGlyph.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontAltGlyph.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontAltGlyph.svg
new file mode 100644
index 0000000..0adb0ed
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontAltGlyph.svg
@@ -0,0 +1,230 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests various altGlyph uses                                               -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                      -->
+<!-- @version $Id: fontAltGlyph.svg 475685 2006-11-16 11:16:05Z cam $        -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>SVGFont - altGlyph test</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">altGlyph Test</text>
+
+        <defs>
+
+            <!-- ============================= -->
+            <!-- SVG Font Definition           -->
+            <!-- ============================= -->
+     
+            <!-- This is an encoding of Microsoft's Comic Sans font -->
+            <!-- in SVG format (as allowed in the license). For the -->
+            <!-- true type version of this font, refer to           -->
+            <!-- http://www.microsoft.com/truetype                  -->
+            <!-- Converted using SteadyState's TrueType/SVG font    -->
+            <!-- toolkit (http://www.steadystate.com/svg            -->
+            <!-- Horizontal Kerning has been added to the font for  -->
+            <!-- testing purposes.                                  -->
+
+            <font horiz-adv-x="959">
+            <font-face
+             font-family="SVGComic"            
+             units-per-em="2048"
+             panose-1="3 15 7 2 3 3 2 2 2 4"
+             ascent="2257"
+             descent="597"/>
+           <missing-glyph horiz-adv-x="1024" d="M128 0V1638H896V0H128zM256 128H768V1510H256V128z"/>
+           
+           <!-- "a" glyph -->
+           <glyph unicode="a" glyph-name="a" horiz-adv-x="1048" d="M920 -66Q901 -66 851 -22Q806 19 784 
51Q688 -1 615 -27T493 -54Q259 -54 152 78Q51 202 51 458Q51 700 217 872T615 1044Q702 1044 810 999Q946 943 946 
864Q946 837 926 816Q916 778 911 691T904 468Q903
+344 921 272Q931 228 984 96Q991 78 1007 43L1013 26Q1013 -14 985 -40T920 -66zM712 629Q712 672 717 722T734 
830Q697 849 671 858T628 867Q473 867 361 741T248 449Q248 285 306 203T480 121Q576 121 643 156Q679 175 744 
232Q712 497 712 629z"/>
+
+           <!-- "b" glyph -->
+           <glyph unicode="b" glyph-name="b" horiz-adv-x="1215" d="M606 -42Q453 -42 328 18Q296 -30 250 
-30Q212 -30 186 -4T159 63Q159 89 161 140T164 217Q164 323 159 534T153 852Q153 925 154 1128T155 1406Q155 1466 
180 1514Q213 1575 271 1575Q346 1575 346 1488Q346
+1474 341 1447T336 1406L333 1187L331 932Q418 991 496 1020T644 1050Q859 1050 993 885Q1119 730 1119 504Q1119 
276 972 117T606 -42zM644 861Q562 861 476 815Q434 792 332 716L330 543L331 387L332 223Q380 201 467 167Q529 148 
606 148Q751 148 844 250T937
+504Q937 653 862 753Q781 861 644 861z"/>
+
+           <!-- "c" glyph -->
+           <glyph unicode="c" glyph-name="c" horiz-adv-x="1052" d="M591 -63Q386 -63 249 61Q105 191 105 
404Q105 607 240 823Q390 1063 578 1063Q676 1063 797 1017Q950 958 950 873Q950 835 925 806T863 776Q834 776 813 
793T771 828Q712 875 578 875Q476 875 376 693Q285
+526 285 404Q285 272 375 196Q459 125 591 125Q651 125 719 157L835 219Q865 235 878 235Q915 235 942 206T969 
138Q969 65 815 -3Q680 -63 591 -63z"/>
+
+           <!-- "d" glyph -->
+           <glyph unicode="d" glyph-name="d" horiz-adv-x="1203" d="M1060 883Q1048 736 1048 589Q1048 256 1079 
86Q1081 72 1081 63Q1081 23 1053 -3T988 -29Q926 -29 897 61Q825 8 748 -19T586 -46Q379 -46 243 92Q103 233 103 
454Q103 721 244 882T612 1043Q728 1043
+791 1007L885 938Q899 1359 918 1505Q931 1594 1009 1594Q1100 1594 1100 1497Q1100 1358 1060 883zM616 857Q448 
857 364 758T280 458Q280 329 371 236T586 143Q670 143 728 174Q762 192 839 257Q854 270 868 288L865 461L866 
577L868 695Q830 776 767 816T616
+857z"/>
+
+           <!-- "e" glyph -->
+           <glyph unicode="e" glyph-name="e" horiz-adv-x="1122" d="M606 -46Q380 -46 240 67Q87 192 87 417Q87 
677 213 853Q350 1045 579 1045Q745 1045 850 989Q979 920 979 777Q979 677 866 595Q816 559 654 483L272 302Q328 
219 411 177T606 135Q675 135 768 161Q886
+194 920 247T993 301Q1028 301 1055 275T1083 213Q1083 102 904 22Q751 -46 606 -46zM579 865Q457 865 376 771T255 
486L562 632Q743 720 820 785Q734 865 579 865z"/>
+
+           <!-- "f" glyph -->
+           <glyph unicode="f" glyph-name="f" horiz-adv-x="1041" d="M811 1406Q569 1406 540 1070L537 1008Q707 
1020 757 1020Q916 1020 916 920Q916 847 838 833Q804 827 759 828T528 815L520 587Q520 525 524 401T528 216Q528 26 
506 -80Q489 -160 413 -160Q372 -160
+343 -134T314 -67Q314 -59 316 -47Q337 83 337 236L334 509V799Q209 789 176 789Q75 789 75 886Q75 985 250 990L346 
993Q349 1049 361 1145Q387 1367 473 1472Q577 1599 798 1599Q941 1599 941 1502Q941 1406 811 1406z"/>
+
+           <!-- "g" glyph -->
+           <glyph unicode="g" glyph-name="g" horiz-adv-x="1087" d="M962 431L939 95Q933 -105 898 -232Q853 
-394 754 -471Q634 -564 407 -564Q274 -564 184 -546Q58 -521 58 -442Q58 -353 145 -353Q181 -353 265 -370T451 
-386Q643 -383 716 -200Q764 -78 767 175Q713
+75 639 25T468 -25Q287 -25 174 98T60 419Q60 689 215 854Q375 1024 651 1024Q744 1024 807 1000T903 928Q1010 925 
1010 809Q1010 738 989 619Q966 481 962 431zM641 864Q451 864 347 733Q254 615 254 433Q254 288 309 215T474 
142Q575 142 670 256Q756 361 768
+464Q789 572 813 803Q773 834 730 849T641 864z"/>
+
+
+           <!-- purple "a" glyph -->
+           <glyph id="purpleA" horiz-adv-x="1048">
+               <path style="fill:purple" d="M920 -66Q901 -66 851 -22Q806 19 784 51Q688 -1 615 -27T493 
-54Q259 -54 152 78Q51 202 51 458Q51 700 217 872T615 1044Q702 1044 810 999Q946 943 946 864Q946 837 926 816Q916 
778 911 691T904 468Q903
+344 921 272Q931 228 984 96Q991 78 1007 43L1013 26Q1013 -14 985 -40T920 -66zM712 629Q712 672 717 722T734 
830Q697 849 671 858T628 867Q473 867 361 741T248 449Q248 285 306 203T480 121Q576 121 643 156Q679 175 744 
232Q712 497 712 629z"/>
+           </glyph>
+
+           <!-- purple "b" glyph -->
+           <glyph id="purpleB" horiz-adv-x="1215">
+               <path style="fill:purple" d="M606 -42Q453 -42 328 18Q296 -30 250 -30Q212 -30 186 -4T159 
63Q159 89 161 140T164 217Q164 323 159 534T153 852Q153 925 154 1128T155 1406Q155 1466 180 1514Q213 1575 271 
1575Q346 1575 346 1488Q346
+1474 341 1447T336 1406L333 1187L331 932Q418 991 496 1020T644 1050Q859 1050 993 885Q1119 730 1119 504Q1119 
276 972 117T606 -42zM644 861Q562 861 476 815Q434 792 332 716L330 543L331 387L332 223Q380 201 467 167Q529 148 
606 148Q751 148 844 250T937
+504Q937 653 862 753Q781 861 644 861z"/>
+           </glyph>
+
+           <!-- purple "c" glyph -->
+           <glyph id="purpleC" horiz-adv-x="1052">
+               <path style="fill:purple" d="M591 -63Q386 -63 249 61Q105 191 105 404Q105 607 240 823Q390 1063 
578 1063Q676 1063 797 1017Q950 958 950 873Q950 835 925 806T863 776Q834 776 813 793T771 828Q712 875 578 
875Q476 875 376 693Q285
+526 285 404Q285 272 375 196Q459 125 591 125Q651 125 719 157L835 219Q865 235 878 235Q915 235 942 206T969 
138Q969 65 815 -3Q680 -63 591 -63z"/>
+           </glyph>
+
+
+           <!-- purple "d" glyph -->
+           <glyph id="purpleD" horiz-adv-x="1203">
+               <path style="fill:purple" d="M1060 883Q1048 736 1048 589Q1048 256 1079 86Q1081 72 1081 
63Q1081 23 1053 -3T988 -29Q926 -29 897 61Q825 8 748 -19T586 -46Q379 -46 243 92Q103 233 103 454Q103 721 244 
882T612 1043Q728 1043
+791 1007L885 938Q899 1359 918 1505Q931 1594 1009 1594Q1100 1594 1100 1497Q1100 1358 1060 883zM616 857Q448 
857 364 758T280 458Q280 329 371 236T586 143Q670 143 728 174Q762 192 839 257Q854 270 868 288L865 461L866 
577L868 695Q830 776 767 816T616
+857z"/>
+           </glyph>
+
+           <!-- purple "e" glyph -->
+           <glyph id="purpleE" horiz-adv-x="1122">
+               <path style="fill:purple" d="M606 -46Q380 -46 240 67Q87 192 87 417Q87 677 213 853Q350 1045 
579 1045Q745 1045 850 989Q979 920 979 777Q979 677 866 595Q816 559 654 483L272 302Q328 219 411 177T606 135Q675 
135 768 161Q886
+194 920 247T993 301Q1028 301 1055 275T1083 213Q1083 102 904 22Q751 -46 606 -46zM579 865Q457 865 376 771T255 
486L562 632Q743 720 820 785Q734 865 579 865z"/>
+           </glyph>
+
+           <!-- purple "f" glyph -->
+           <glyph id="purpleF" horiz-adv-x="1041">
+               <path style="fill:purple" d="M811 1406Q569 1406 540 1070L537 1008Q707 1020 757 1020Q916 1020 
916 920Q916 847 838 833Q804 827 759 828T528 815L520 587Q520 525 524 401T528 216Q528 26 506 -80Q489 -160 413 
-160Q372 -160
+343 -134T314 -67Q314 -59 316 -47Q337 83 337 236L334 509V799Q209 789 176 789Q75 789 75 886Q75 985 250 990L346 
993Q349 1049 361 1145Q387 1367 473 1472Q577 1599 798 1599Q941 1599 941 1502Q941 1406 811 1406z"/>
+           </glyph>
+
+           <!-- purple "g" glyph -->
+           <glyph id="purpleG" horiz-adv-x="1087">
+               <path style="fill:purple" d="M962 431L939 95Q933 -105 898 -232Q853 -394 754 -471Q634 -564 407 
-564Q274 -564 184 -546Q58 -521 58 -442Q58 -353 145 -353Q181 -353 265 -370T451 -386Q643 -383 716 -200Q764 -78 
767 175Q713
+75 639 25T468 -25Q287 -25 174 98T60 419Q60 689 215 854Q375 1024 651 1024Q744 1024 807 1000T903 928Q1010 925 
1010 809Q1010 738 989 619Q966 481 962 431zM641 864Q451 864 347 733Q254 615 254 433Q254 288 309 215T474 
142Q575 142 670 256Q756 361 768
+464Q789 572 813 803Q773 834 730 849T641 864z"/>
+           </glyph>
+
+
+
+           </font>
+           
+           <altGlyphDef id="BCD">
+               <glyphRef xlink:href="batikFont.svg#B"/>
+               <glyphRef xlink:href="#purpleC"/>
+               <glyphRef xlink:href="#purpleD"/>
+           </altGlyphDef>
+
+           <altGlyphDef id="purpleC1">
+               <glyphRef xlink:href="#purpleC"/>
+           </altGlyphDef>
+
+           <altGlyphDef id="purpleD1">
+               <glyphRef xlink:href="#purpleD"/>
+           </altGlyphDef>
+
+           <altGlyphDef id="purpleE1">
+               <glyphRef xlink:href="#purpleE"/>
+           </altGlyphDef>
+
+
+           <altGlyphDef id="items">
+                <altGlyphItem>
+                    <glyphRef xlink:href="#badRef"/>
+                    <glyphRef xlink:href="#purpleC"/>
+                </altGlyphItem>
+                <altGlyphItem>
+                    <glyphRef xlink:href="#purpleD"/>
+                </altGlyphItem>
+            </altGlyphDef>
+
+
+        </defs>
+
+ 
+        <g id="alt_glyph_tests" style="font-family:SVGComic; font-size:30">
+
+            <text x="30" y="80">a
+<altGlyph xlink:href="#purpleB">b</altGlyph>c
+<altGlyph xlink:href="#purpleD">d</altGlyph>e
+<altGlyph xlink:href="#purpleF">f</altGlyph>g</text>
+
+            <text x="30" y="130">ab
+<altGlyph xlink:href="#purpleC1">c</altGlyph>
+<altGlyph xlink:href="#purpleD1">d</altGlyph>
+<altGlyph xlink:href="#purpleE1">e</altGlyph>fg</text>
+
+            <text x="30" y="180">ab
+<altGlyph xlink:href="fontGlyphsBoth.svg#c">c</altGlyph>
+<altGlyph xlink:href="fontGlyphsBoth.svg#d">d</altGlyph>
+<altGlyph xlink:href="fontGlyphsBoth.svg#e">e</altGlyph>fg</text>
+
+            <text x="30" y="230"><altGlyph xlink:href="batikFont.svg#a1">a</altGlyph>bcdefg</text>
+
+            <text x="30" y="280">a<altGlyph xlink:href="#BCD">bcd</altGlyph>efg</text>
+
+            <text x="30" y="330">a<altGlyph xlink:href="batikFont.svg#bcde">bcde</altGlyph>fg</text>
+
+            <text x="30" y="380">ab<altGlyph xlink:href="#items">cd</altGlyph>efg</text>
+
+            <text x="30" y="430">a<altGlyph xlink:href="batikFont.svg#bcItems">bc</altGlyph>defg</text>
+
+        </g>
+
+        <g id="test_descriptions">
+            <text x="30" y="100">altGlyph references local glyph</text>
+            <text x="30" y="150">altGlyph references local altGlyphDef</text>
+            <text x="30" y="200">altGlyph references external glyph</text>
+            <text x="30" y="250">altGlyph references external altGlyphDef</text>
+            <text x="30" y="300">local altGlyphDef with multiple glyphRefs (internal and external)</text>
+            <text x="30" y="350">external altGlyphDef with multiple glyphRefs (internal and external)</text>
+            <text x="30" y="400">local altGlyphDef with altGlyphItems (some containing invalid glyphRef 
URIs)</text>
+            <text x="30" y="450">external altGlyphDef with altGlyphItems</text>
+        </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
+
+
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontAltGlyph2.png 
b/tests/data/svg/batik/tests/spec/fonts/fontAltGlyph2.png
new file mode 100644
index 0000000..a2dbfcc
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontAltGlyph2.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontAltGlyph2.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontAltGlyph2.svg
new file mode 100644
index 0000000..e282b56
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontAltGlyph2.svg
@@ -0,0 +1,146 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests various altGlyph uses                                               -->
+<!--                                                                           -->
+<!-- @author nicolas socheleau bitflash com                                    -->
+<!-- @version $Id: fontAltGlyph2.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg width="450" height="500" viewBox="0 0 450 500" font-family="Arial" 
xmlns:xlink="http://www.w3.org/1999/xlink";>
+   <title>altGlyph, altGlyphItem</title>
+
+   <g id="content">
+
+   <text class="title" x="50%" y="40">altGlyph, altGlyphItem Test</text>
+
+   <defs>
+      <font id="Font1" horiz-adv-x="1000">
+         <font-face font-family="Super Sans" units-per-em="1000" cap-height="600" x-height="400" 
ascent="700" descent="300" alphabetic="0" mathematical="350" ideographic="400" hanging="500">
+            <font-face-src>
+               <font-face-name name="Super Sans Bold"/>
+            </font-face-src>
+         </font-face>
+         <missing-glyph d="M0,0h200v200h-200z"/>
+         <glyph id="MyA" unicode="A" horiz-adv-x="500" 
d="M0,0v500h400v-500h-100v200h-200v-200zM100,300h200v100h-200z"/>
+         <glyph id="MyB" unicode="B" horiz-adv-x="500" 
d="M0,0h300v100h-200v100h200v100h-200v100h200v100h-300zM300,100h100v100h-100zM300,300h100v100h-100z"/>
+         <glyph id="MyC" unicode="C" horiz-adv-x="500" d="M0,0h400v100h-300v300h300v100h-400z"/>
+         <glyph id="MyD" unicode="D" horiz-adv-x="500" 
d="M0,0h300v100h-200v300h200v100h-300zM300,100h100v300h-100z"/>
+         <glyph id="MyE" unicode="E" horiz-adv-x="500" 
d="M0,0h400v100h-300v100h200v100h-200v100h300v100h-400z"/>
+      </font>
+      <altGlyphDef id="MyAltGlyphDef1">
+         <glyphRef xlink:href="#MyA"/>
+         <glyphRef xlink:href="#MyB"/>
+         <glyphRef xlink:href="#MyC"/>
+         <glyphRef xlink:href="#MyD"/>
+         <glyphRef xlink:href="#MyE"/>
+      </altGlyphDef>
+      <altGlyphDef id="MyAltGlyphDef2">
+         <glyphRef xlink:href="#MyA"/>
+         <glyphRef xlink:href="#NoSuchId"/>
+         <glyphRef xlink:href="#MyC"/>
+         <glyphRef xlink:href="#MyD"/>
+         <glyphRef xlink:href="#MyE"/>
+      </altGlyphDef>
+      <altGlyphDef id="MyAltGlyphDef3">
+         <altGlyphItem>
+            <glyphRef xlink:href="#MyA"/>
+            <glyphRef xlink:href="#MyA"/>
+            <glyphRef xlink:href="#MyA"/>
+            <glyphRef xlink:href="#MyA"/>
+            <glyphRef xlink:href="#MyA"/>
+         </altGlyphItem>
+         <altGlyphItem>
+            <glyphRef xlink:href="#MyB"/>
+            <glyphRef xlink:href="#MyB"/>
+            <glyphRef xlink:href="#MyB"/>
+            <glyphRef xlink:href="#MyB"/>
+            <glyphRef xlink:href="#MyB"/>
+         </altGlyphItem>
+      </altGlyphDef>
+      <altGlyphDef id="MyAltGlyphDef4">
+         <altGlyphItem>
+            <glyphRef xlink:href="#MyA"/>
+            <glyphRef xlink:href="#NoSuchId"/>
+            <glyphRef xlink:href="#MyA"/>
+         </altGlyphItem>
+         <altGlyphItem>
+            <glyphRef xlink:href="#MyB"/>
+            <glyphRef xlink:href="#MyB"/>
+            <glyphRef xlink:href="#MyB"/>
+            <glyphRef xlink:href="#MyB"/>
+            <glyphRef xlink:href="#MyB"/>
+         </altGlyphItem>
+      </altGlyphDef>
+      <altGlyphDef id="MyAltGlyphDef5">
+         <altGlyphItem>
+            <glyphRef xlink:href="#MyA"/>
+            <glyphRef xlink:href="#NoSuchId"/>
+            <glyphRef xlink:href="#MyA"/>
+         </altGlyphItem>
+         <altGlyphItem>
+            <glyphRef xlink:href="#MyB"/>
+            <glyphRef xlink:href="#MyB"/>
+            <glyphRef xlink:href="#NoSuchId"/>
+         </altGlyphItem>
+      </altGlyphDef>
+   </defs>
+
+   <g id="test-body-content" font-family="sans-serif" >
+      <text fill="blue" x="5" y="20%">altGlyph referencing a unique glyph...</text>
+      <text x="5" y="23%">...which is valid : "
+         <altGlyph fill="green" xlink:href="#MyE">No Match</altGlyph>
+"      </text>
+      <text x="5" y="26%">...which has an
+         <tspan fill="red">invalid</tspan>
+ id : "         <altGlyph fill="red" xlink:href="#NoSuchID">No Match</altGlyph>
+"      </text>
+      <text x="5" y="29%">...which is
+         <tspan fill="red">not</tspan>
+ an actual glyph : "         <altGlyph fill="red" xlink:href="#Font1">No Match</altGlyph>
+"      </text>
+      <text fill="blue" x="5" y="40%">altGlyph referencing a glyphDef containing...</text>
+      <text x="5" y="43%">...5 valid glyphRefs : "
+         <altGlyph fill="green" xlink:href="#MyAltGlyphDef1">No Match</altGlyph>
+"      </text>
+      <text x="5" y="46%">...4 valid and an
+         <tspan fill="red">invalid</tspan>
+ glyphRefs : "         <altGlyph fill="red" xlink:href="#MyAltGlyphDef2">No Match</altGlyph>
+"      </text>
+      <text x="5" y="49%">...2 altGlyphItems (both valid) : "
+         <altGlyph fill="green" xlink:href="#MyAltGlyphDef3">No Match</altGlyph>
+"      </text>
+      <text x="5" y="52%">...2 altGlyphItems (2nd is valid) : "
+         <altGlyph fill="green" xlink:href="#MyAltGlyphDef4">No Match</altGlyph>
+"      </text>
+      <text x="5" y="55%">...2 altGlyphItems (both
+         <tspan fill="red">invalid</tspan>
+) : "         <altGlyph fill="red" xlink:href="#MyAltGlyphDef5">No Match</altGlyph>
+"      </text>
+      <text x="5" y="58%">...5 glyphRefs with dx/dy/rotate : "
+         <altGlyph rotate="10,10,10,10,10" dx="0,2,2,2,2" dy="0,2,2,-2,-2" fill="green" 
xlink:href="#MyAltGlyphDef1">No Match</altGlyph>
+"      </text>
+   </g>
+   </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontAltGlyph3.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontAltGlyph3.svg
new file mode 100644
index 0000000..4a9c038
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontAltGlyph3.svg
@@ -0,0 +1,230 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests various altGlyph uses                                               -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                      -->
+<!-- @version $Id: fontAltGlyph3.svg 475685 2006-11-16 11:16:05Z cam $        -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>SVGFont - altGlyph test</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">altGlyph Test</text>
+
+        <defs>
+
+            <!-- ============================= -->
+            <!-- SVG Font Definition           -->
+            <!-- ============================= -->
+     
+            <!-- This is an encoding of Microsoft's Comic Sans font -->
+            <!-- in SVG format (as allowed in the license). For the -->
+            <!-- true type version of this font, refer to           -->
+            <!-- http://www.microsoft.com/truetype                  -->
+            <!-- Converted using SteadyState's TrueType/SVG font    -->
+            <!-- toolkit (http://www.steadystate.com/svg            -->
+            <!-- Horizontal Kerning has been added to the font for  -->
+            <!-- testing purposes.                                  -->
+
+            <font horiz-adv-x="959">
+            <font-face
+             font-family="SVGComic"            
+             units-per-em="2048"
+             panose-1="3 15 7 2 3 3 2 2 2 4"
+             ascent="2257"
+             descent="597"/>
+           <missing-glyph horiz-adv-x="1024" d="M128 0V1638H896V0H128zM256 128H768V1510H256V128z"/>
+           
+           <!-- "a" glyph -->
+           <glyph unicode="a" glyph-name="a" horiz-adv-x="1048" d="M920 -66Q901 -66 851 -22Q806 19 784 
51Q688 -1 615 -27T493 -54Q259 -54 152 78Q51 202 51 458Q51 700 217 872T615 1044Q702 1044 810 999Q946 943 946 
864Q946 837 926 816Q916 778 911 691T904 468Q903
+344 921 272Q931 228 984 96Q991 78 1007 43L1013 26Q1013 -14 985 -40T920 -66zM712 629Q712 672 717 722T734 
830Q697 849 671 858T628 867Q473 867 361 741T248 449Q248 285 306 203T480 121Q576 121 643 156Q679 175 744 
232Q712 497 712 629z"/>
+
+           <!-- "b" glyph -->
+           <glyph unicode="b" glyph-name="b" horiz-adv-x="1215" d="M606 -42Q453 -42 328 18Q296 -30 250 
-30Q212 -30 186 -4T159 63Q159 89 161 140T164 217Q164 323 159 534T153 852Q153 925 154 1128T155 1406Q155 1466 
180 1514Q213 1575 271 1575Q346 1575 346 1488Q346
+1474 341 1447T336 1406L333 1187L331 932Q418 991 496 1020T644 1050Q859 1050 993 885Q1119 730 1119 504Q1119 
276 972 117T606 -42zM644 861Q562 861 476 815Q434 792 332 716L330 543L331 387L332 223Q380 201 467 167Q529 148 
606 148Q751 148 844 250T937
+504Q937 653 862 753Q781 861 644 861z"/>
+
+           <!-- "c" glyph -->
+           <glyph unicode="c" glyph-name="c" horiz-adv-x="1052" d="M591 -63Q386 -63 249 61Q105 191 105 
404Q105 607 240 823Q390 1063 578 1063Q676 1063 797 1017Q950 958 950 873Q950 835 925 806T863 776Q834 776 813 
793T771 828Q712 875 578 875Q476 875 376 693Q285
+526 285 404Q285 272 375 196Q459 125 591 125Q651 125 719 157L835 219Q865 235 878 235Q915 235 942 206T969 
138Q969 65 815 -3Q680 -63 591 -63z"/>
+
+           <!-- "d" glyph -->
+           <glyph unicode="d" glyph-name="d" horiz-adv-x="1203" d="M1060 883Q1048 736 1048 589Q1048 256 1079 
86Q1081 72 1081 63Q1081 23 1053 -3T988 -29Q926 -29 897 61Q825 8 748 -19T586 -46Q379 -46 243 92Q103 233 103 
454Q103 721 244 882T612 1043Q728 1043
+791 1007L885 938Q899 1359 918 1505Q931 1594 1009 1594Q1100 1594 1100 1497Q1100 1358 1060 883zM616 857Q448 
857 364 758T280 458Q280 329 371 236T586 143Q670 143 728 174Q762 192 839 257Q854 270 868 288L865 461L866 
577L868 695Q830 776 767 816T616
+857z"/>
+
+           <!-- "e" glyph -->
+           <glyph unicode="e" glyph-name="e" horiz-adv-x="1122" d="M606 -46Q380 -46 240 67Q87 192 87 417Q87 
677 213 853Q350 1045 579 1045Q745 1045 850 989Q979 920 979 777Q979 677 866 595Q816 559 654 483L272 302Q328 
219 411 177T606 135Q675 135 768 161Q886
+194 920 247T993 301Q1028 301 1055 275T1083 213Q1083 102 904 22Q751 -46 606 -46zM579 865Q457 865 376 771T255 
486L562 632Q743 720 820 785Q734 865 579 865z"/>
+
+           <!-- "f" glyph -->
+           <glyph unicode="f" glyph-name="f" horiz-adv-x="1041" d="M811 1406Q569 1406 540 1070L537 1008Q707 
1020 757 1020Q916 1020 916 920Q916 847 838 833Q804 827 759 828T528 815L520 587Q520 525 524 401T528 216Q528 26 
506 -80Q489 -160 413 -160Q372 -160
+343 -134T314 -67Q314 -59 316 -47Q337 83 337 236L334 509V799Q209 789 176 789Q75 789 75 886Q75 985 250 990L346 
993Q349 1049 361 1145Q387 1367 473 1472Q577 1599 798 1599Q941 1599 941 1502Q941 1406 811 1406z"/>
+
+           <!-- "g" glyph -->
+           <glyph unicode="g" glyph-name="g" horiz-adv-x="1087" d="M962 431L939 95Q933 -105 898 -232Q853 
-394 754 -471Q634 -564 407 -564Q274 -564 184 -546Q58 -521 58 -442Q58 -353 145 -353Q181 -353 265 -370T451 
-386Q643 -383 716 -200Q764 -78 767 175Q713
+75 639 25T468 -25Q287 -25 174 98T60 419Q60 689 215 854Q375 1024 651 1024Q744 1024 807 1000T903 928Q1010 925 
1010 809Q1010 738 989 619Q966 481 962 431zM641 864Q451 864 347 733Q254 615 254 433Q254 288 309 215T474 
142Q575 142 670 256Q756 361 768
+464Q789 572 813 803Q773 834 730 849T641 864z"/>
+
+
+           <!-- purple "a" glyph -->
+           <glyph id="purpleA" horiz-adv-x="1048">
+               <path style="fill:purple" d="M920 -66Q901 -66 851 -22Q806 19 784 51Q688 -1 615 -27T493 
-54Q259 -54 152 78Q51 202 51 458Q51 700 217 872T615 1044Q702 1044 810 999Q946 943 946 864Q946 837 926 816Q916 
778 911 691T904 468Q903
+344 921 272Q931 228 984 96Q991 78 1007 43L1013 26Q1013 -14 985 -40T920 -66zM712 629Q712 672 717 722T734 
830Q697 849 671 858T628 867Q473 867 361 741T248 449Q248 285 306 203T480 121Q576 121 643 156Q679 175 744 
232Q712 497 712 629z"/>
+           </glyph>
+
+           <!-- purple "b" glyph -->
+           <glyph id="purpleB" horiz-adv-x="1215">
+               <path style="fill:purple" d="M606 -42Q453 -42 328 18Q296 -30 250 -30Q212 -30 186 -4T159 
63Q159 89 161 140T164 217Q164 323 159 534T153 852Q153 925 154 1128T155 1406Q155 1466 180 1514Q213 1575 271 
1575Q346 1575 346 1488Q346
+1474 341 1447T336 1406L333 1187L331 932Q418 991 496 1020T644 1050Q859 1050 993 885Q1119 730 1119 504Q1119 
276 972 117T606 -42zM644 861Q562 861 476 815Q434 792 332 716L330 543L331 387L332 223Q380 201 467 167Q529 148 
606 148Q751 148 844 250T937
+504Q937 653 862 753Q781 861 644 861z"/>
+           </glyph>
+
+           <!-- purple "c" glyph -->
+           <glyph id="purpleC" horiz-adv-x="1052">
+               <path style="fill:purple" d="M591 -63Q386 -63 249 61Q105 191 105 404Q105 607 240 823Q390 1063 
578 1063Q676 1063 797 1017Q950 958 950 873Q950 835 925 806T863 776Q834 776 813 793T771 828Q712 875 578 
875Q476 875 376 693Q285
+526 285 404Q285 272 375 196Q459 125 591 125Q651 125 719 157L835 219Q865 235 878 235Q915 235 942 206T969 
138Q969 65 815 -3Q680 -63 591 -63z"/>
+           </glyph>
+
+
+           <!-- purple "d" glyph -->
+           <glyph id="purpleD" horiz-adv-x="1203">
+               <path style="fill:purple" d="M1060 883Q1048 736 1048 589Q1048 256 1079 86Q1081 72 1081 
63Q1081 23 1053 -3T988 -29Q926 -29 897 61Q825 8 748 -19T586 -46Q379 -46 243 92Q103 233 103 454Q103 721 244 
882T612 1043Q728 1043
+791 1007L885 938Q899 1359 918 1505Q931 1594 1009 1594Q1100 1594 1100 1497Q1100 1358 1060 883zM616 857Q448 
857 364 758T280 458Q280 329 371 236T586 143Q670 143 728 174Q762 192 839 257Q854 270 868 288L865 461L866 
577L868 695Q830 776 767 816T616
+857z"/>
+           </glyph>
+
+           <!-- purple "e" glyph -->
+           <glyph id="purpleE" horiz-adv-x="1122">
+               <path style="fill:purple" d="M606 -46Q380 -46 240 67Q87 192 87 417Q87 677 213 853Q350 1045 
579 1045Q745 1045 850 989Q979 920 979 777Q979 677 866 595Q816 559 654 483L272 302Q328 219 411 177T606 135Q675 
135 768 161Q886
+194 920 247T993 301Q1028 301 1055 275T1083 213Q1083 102 904 22Q751 -46 606 -46zM579 865Q457 865 376 771T255 
486L562 632Q743 720 820 785Q734 865 579 865z"/>
+           </glyph>
+
+           <!-- purple "f" glyph -->
+           <glyph id="purpleF" horiz-adv-x="1041">
+               <path style="fill:purple" d="M811 1406Q569 1406 540 1070L537 1008Q707 1020 757 1020Q916 1020 
916 920Q916 847 838 833Q804 827 759 828T528 815L520 587Q520 525 524 401T528 216Q528 26 506 -80Q489 -160 413 
-160Q372 -160
+343 -134T314 -67Q314 -59 316 -47Q337 83 337 236L334 509V799Q209 789 176 789Q75 789 75 886Q75 985 250 990L346 
993Q349 1049 361 1145Q387 1367 473 1472Q577 1599 798 1599Q941 1599 941 1502Q941 1406 811 1406z"/>
+           </glyph>
+
+           <!-- purple "g" glyph -->
+           <glyph id="purpleG" horiz-adv-x="1087">
+               <path style="fill:purple" d="M962 431L939 95Q933 -105 898 -232Q853 -394 754 -471Q634 -564 407 
-564Q274 -564 184 -546Q58 -521 58 -442Q58 -353 145 -353Q181 -353 265 -370T451 -386Q643 -383 716 -200Q764 -78 
767 175Q713
+75 639 25T468 -25Q287 -25 174 98T60 419Q60 689 215 854Q375 1024 651 1024Q744 1024 807 1000T903 928Q1010 925 
1010 809Q1010 738 989 619Q966 481 962 431zM641 864Q451 864 347 733Q254 615 254 433Q254 288 309 215T474 
142Q575 142 670 256Q756 361 768
+464Q789 572 813 803Q773 834 730 849T641 864z"/>
+           </glyph>
+
+
+
+           </font>
+           
+           <altGlyphDef id="BCD">
+               <glyphRef xlink:href="batikFont.svg#B"/>
+               <glyphRef xlink:href="#purpleC"/>
+               <glyphRef xlink:href="#purpleD"/>
+           </altGlyphDef>
+
+           <altGlyphDef id="purpleC1">
+               <glyphRef xlink:href="#purpleC"/>
+           </altGlyphDef>
+
+           <altGlyphDef id="purpleD1">
+               <glyphRef xlink:href="#purpleD"/>
+           </altGlyphDef>
+
+           <altGlyphDef id="purpleE1">
+               <glyphRef xlink:href="#purpleE"/>
+           </altGlyphDef>
+
+
+           <altGlyphDef id="items">
+                <altGlyphItem>
+                    <glyphRef xlink:href="#badRef"/>
+                    <glyphRef xlink:href="#purpleC"/>
+                </altGlyphItem>
+                <altGlyphItem>
+                    <glyphRef xlink:href="#purpleD"/>
+                </altGlyphItem>
+            </altGlyphDef>
+
+
+        </defs>
+
+ 
+        <g id="alt_glyph_tests" style="font-family:SVGComic; font-size:30">
+
+            <text x="30" y="80">a
+<altGlyph xlink:href="#purpleB">b</altGlyph>c
+<altGlyph xlink:href="#purpleD">d</altGlyph>e
+<altGlyph xlink:href="#purpleF">f</altGlyph>g</text>
+
+            <text x="30" y="130">ab
+<altGlyph xlink:href="#purpleC1">c</altGlyph>
+<altGlyph xlink:href="#purpleD1">d</altGlyph>
+<altGlyph xlink:href="#purpleE1">e</altGlyph>fg</text>
+
+            <text x="30" y="180">ab
+<altGlyph xlink:href="fontGlyphsBoth.svg#c">c</altGlyph>
+<altGlyph xlink:href="fontGlyphsBoth.svg#d">d</altGlyph>
+<altGlyph xlink:href="fontGlyphsBoth.svg#e">e</altGlyph>fg</text>
+
+            <text x="30" y="230"><altGlyph xlink:href="batikFont.svg#a1">a</altGlyph>bcdefg</text>
+
+            <text x="30" y="280">a<altGlyph xlink:href="#BCD">b</altGlyph>efg</text>
+
+            <text x="30" y="330">a<altGlyph xlink:href="batikFont.svg#bcde">b</altGlyph>fg</text>
+
+            <text x="30" y="380">ab<altGlyph xlink:href="#items">c</altGlyph>efg</text>
+
+            <text x="30" y="430">a<altGlyph xlink:href="batikFont.svg#bcItems">c</altGlyph>defg</text>
+
+        </g>
+
+        <g id="test_descriptions">
+            <text x="30" y="100">altGlyph references local glyph</text>
+            <text x="30" y="150">altGlyph references local altGlyphDef</text>
+            <text x="30" y="200">altGlyph references external glyph</text>
+            <text x="30" y="250">altGlyph references external altGlyphDef</text>
+            <text x="30" y="300">local altGlyphDef with multiple glyphRefs (internal and external)</text>
+            <text x="30" y="350">external altGlyphDef with multiple glyphRefs (internal and external)</text>
+            <text x="30" y="400">local altGlyphDef with altGlyphItems (some containing invalid glyphRef 
URIs)</text>
+            <text x="30" y="450">external altGlyphDef with altGlyphItems</text>
+        </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
+
+
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontArabic.png 
b/tests/data/svg/batik/tests/spec/fonts/fontArabic.png
new file mode 100644
index 0000000..3ef46f6
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontArabic.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontArabic.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontArabic.svg
new file mode 100644
index 0000000..1d4510b
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontArabic.svg
@@ -0,0 +1,724 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests arabic text with SVG fonts.                                         -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                      -->
+<!-- @version $Id: fontArabic.svg 475685 2006-11-16 11:16:05Z cam $     -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>SVGFont - arabic shaping test</title>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">Arabic shaping test</text>
+<defs>
+<font horiz-adv-x="904">
+
+<font-face
+  font-family="SVGArial"
+  units-per-em="2048"
+  panose-1="2 11 6 4 2 2 2 2 2 4"
+  ascent="1854"
+  descent="-434"
+  alphabetic="0"/>
+
+
+<missing-glyph horiz-adv-x="1536" d="M256 0V1280H1280V0H256zM288 32H1248V1248H288V32z"/>
+
+<glyph unicode=" " glyph-name="space" horiz-adv-x="569" />
+<glyph unicode="!" glyph-name="exclam" horiz-adv-x="569" d="M231 364L176 1141V1466H399V1141L347 364H231ZM184 
0V205H391V0H184Z" />
+<glyph unicode="&quot;" glyph-name="quotedbl" horiz-adv-x="727" d="M144 947L94 1226V1466H299V1226L254 
947H144ZM475 947L426 1226V1466H631V1226L583 947H475Z" />
+<glyph unicode="#" glyph-name="numbersign" horiz-adv-x="1139" d="M103 -25L190 401H21V550H220L294 
913H21V1062H324L411 1491H561L474 1062H789L876 1491H1027L940 1062H1113V913H910L835 550H1113V401H805L718 
-25H568L654 401H340L253 -25H103ZM370 550H684L759
+913H444L370 550Z" />
+<glyph unicode="$" glyph-name="dollar" horiz-adv-x="1139" d="M510 -211V-31Q375 -14 291 29T145 170T73 407L254 
441Q275 296 328 228Q404 132 510 121V694Q399 715 283 780Q197 828 151 913T104 1106Q104 1298 240 1417Q331 1497 
510 1515V1601H616V1515Q773
+1500 865 1423Q983 1325 1007 1154L821 1126Q805 1232 755 1288T616 1363V844Q752 810 796 791Q880 754 933 
701T1014 575T1043 417Q1043 230 924 105T616 -29V-211H510ZM510 1365Q405 1349 345 1281T284 1120Q284 1028 335 
966T510 867V1365ZM616 121Q721 134
+789 212T858 405Q858 503 810 562T616 669V121Z" />
+<glyph unicode="%" glyph-name="percent" horiz-adv-x="1821" d="M119 1114Q119 1271 198 1381T427 1491Q565 1491 
655 1393T746 1103Q746 917 655 817T429 716Q296 716 208 815T119 1114ZM432 1367Q365 1367 321 1309T276 1096Q276 
955 321 898T432 840Q500 840
+544 898T589 1110Q589 1252 544 1309T432 1367ZM433 -54L1235 1491H1381L582 -54H433ZM1067 344Q1067 502 1146 
611T1376 721Q1514 721 1604 623T1695 333Q1695 147 1604 47T1377 -54Q1244 -54 1156 45T1067 344ZM1381 597Q1313 
597 1269 539T1224 326Q1224 186
+1269 128T1380 70Q1449 70 1493 128T1538 340Q1538 482 1493 539T1381 597Z" />
+<glyph unicode="&amp;" glyph-name="ampersand" horiz-adv-x="1366" d="M973 173Q884 74 779 25T552 -25Q327 -25 
195 127Q88 251 88 404Q88 540 175 649T437 842Q338 956 305 1027T272 1164Q272 1296 375 1393T636 1491Q786 1491 
881 1399T977 1178Q977 969 700
+821L963 486Q1008 574 1033 690L1220 650Q1172 458 1090 334Q1191 200 1319 109L1198 -34Q1089 36 973 173ZM607 
937Q724 1006 758 1058T793 1173Q793 1248 746 1295T627 1343Q554 1343 506 1296T457 1181Q457 1147 474 1110T527 
1030L607 937ZM860 315L530 724Q384
+637 333 563T282 415Q282 326 353 230T554 134Q635 134 721 184T860 315Z" />
+<glyph unicode="&apos;" glyph-name="quotesingle" horiz-adv-x="391" d="M136 947L90 1221V1466H295V1221L247 
947H136Z" />
+<glyph unicode="(" glyph-name="parenleft" horiz-adv-x="682" d="M479 -431Q330 -243 227 9T124 531Q124 769 201 
987Q291 1240 479 1491H608Q487 1283 448 1194Q387 1056 352 906Q309 719 309 530Q309 49 608 -431H479Z" />
+<glyph unicode=")" glyph-name="parenright" horiz-adv-x="682" d="M253 -431H124Q423 49 423 530Q423 718 380 
903Q346 1053 285 1191Q246 1281 124 1491H253Q441 1240 531 987Q608 769 608 531Q608 261 505 9T253 -431Z" />
+<glyph unicode="*" glyph-name="asterisk" horiz-adv-x="797" d="M64 1197L110 1339Q269 1283 341 1242Q322 1423 
321 1491H466Q463 1392 443 1243Q546 1295 679 1339L725 1197Q598 1155 476 1141Q537 1088 648 952L528 867Q470 946 
391 1082Q317 941 261 867L143
+952Q259 1095 309 1141Q180 1166 64 1197Z" />
+<glyph unicode="+" glyph-name="plus" horiz-adv-x="1196" d="M513 
237V639H114V807H513V1206H683V807H1082V639H683V237H513Z" />
+<glyph unicode="," glyph-name="comma" horiz-adv-x="569" d="M182 0V205H387V0Q387 -113 347 -182T220 -290L170 
-213Q227 -188 254 -140T284 0H182Z" />
+<glyph unicode="-" glyph-name="hyphen" horiz-adv-x="682" d="M65 440V621H618V440H65Z" />
+<glyph unicode="." glyph-name="period" horiz-adv-x="569" d="M186 0V205H391V0H186Z" />
+<glyph unicode="/" glyph-name="slash" horiz-adv-x="569" d="M0 -25L425 1491H569L145 -25H0Z" />
+<glyph unicode="0" glyph-name="zero" horiz-adv-x="1139" d="M85 723Q85 983 138 1141T297 1386T563 1472Q681 
1472 770 1425T917 1288T1008 1070T1041 723Q1041 465 988 307T830 62T563 -25Q351 -25 230 127Q85 310 85 723ZM270 
723Q270 362 354 243T563 123Q687
+123 771 243T856 723Q856 1085 772 1204T561 1323Q437 1323 363 1218Q270 1084 270 723Z" />
+<glyph unicode="1" glyph-name="one" horiz-adv-x="1139" d="M763 0H583V1147Q518 1085 413 1023T223 930V1104Q374 
1175 487 1276T647 1472H763V0Z" />
+<glyph unicode="2" glyph-name="two" horiz-adv-x="1139" d="M1031 173V0H62Q60 65 83 125Q120 224 201 320T437 
542Q676 738 760 852T844 1069Q844 1176 768 1249T568 1323Q438 1323 360 1245T281 1029L96 1048Q115 1255 239 
1363T572 1472Q783 1472 906 1355T1029
+1065Q1029 977 993 892T874 713T596 455Q434 319 388 271T312 173H1031Z" />
+<glyph unicode="3" glyph-name="three" horiz-adv-x="1139" d="M86 387L266 411Q297 258 371 191T553 123Q680 123 
767 211T855 429Q855 553 774 633T568 714Q517 714 441 694L461 852Q479 850 490 850Q605 850 697 910T789 1095Q789 
1194 722 1259T549 1324Q444
+1324 374 1258T284 1060L104 1092Q137 1273 254 1372T545 1472Q665 1472 766 1421T920 1280T974 1091Q974 996 923 
918T772 794Q902 764 974 670T1046 433Q1046 241 906 108T552 -26Q359 -26 232 89T86 387Z" />
+<glyph unicode="4" glyph-name="four" horiz-adv-x="1139" d="M662 0V351H26V516L695 
1466H842V516H1040V351H842V0H662ZM662 516V1177L203 516H662Z" />
+<glyph unicode="5" glyph-name="five" horiz-adv-x="1139" d="M85 384L274 400Q295 262 371 193T556 123Q686 123 
776 221T866 481Q866 635 780 724T553 813Q466 813 396 774T286 671L117 693L259 1446H988V1274H403L324 880Q456 972 
601 972Q793 972 925 839T1057
+497Q1057 298 941 153Q800 -25 556 -25Q356 -25 230 87T85 384Z" />
+<glyph unicode="6" glyph-name="six" horiz-adv-x="1139" d="M1019 1107L840 1093Q816 1199 772 1247Q699 1324 592 
1324Q506 1324 441 1276Q356 1214 307 1095T256 756Q321 855 415 903T612 951Q792 951 918 819T1045 476Q1045 338 
986 220T822 38T586 -25Q361
+-25 219 140T77 686Q77 1111 234 1304Q371 1472 603 1472Q776 1472 886 1375T1019 1107ZM284 475Q284 382 323 
297T434 168T583 123Q697 123 779 215T861 465Q861 617 780 704T576 792Q454 792 369 705T284 475Z" />
+<glyph unicode="7" glyph-name="seven" horiz-adv-x="1139" d="M97 1274V1447H1046V1307Q906 1158 769 911T556 
403Q502 219 487 0H302Q305 173 370 418T556 890T815 1274H97Z" />
+<glyph unicode="8" glyph-name="eight" horiz-adv-x="1139" d="M362 795Q250 836 196 912T142 1094Q142 1254 257 
1363T563 1472Q755 1472 872 1361T989 1089Q989 987 936 912T773 795Q908 751 978 653T1049 419Q1049 231 916 
103T566 -25Q349 -25 216 103T83
+424Q83 567 155 663T362 795ZM326 1100Q326 996 393 930T567 864Q671 864 737 929T804 1090Q804 1189 736 1256T565 
1324Q462 1324 394 1258T326 1100ZM268 423Q268 346 304 274T413 163T568 123Q697 123 781 206T865 417Q865 547 779 
632T562 717Q435 717 352
+633T268 423Z" />
+<glyph unicode="9" glyph-name="nine" horiz-adv-x="1139" d="M112 339L285 355Q307 233 369 178T528 123Q611 123 
673 161T776 262T843 434T870 654Q870 666 869 690Q815 604 722 551T519 497Q337 497 211 629T85 977Q85 1200 216 
1336T546 1472Q689 1472 807
+1395T987 1176T1049 763Q1049 482 988 316T807 62T524 -25Q352 -25 243 70T112 339ZM849 986Q849 1141 767 1232T568 
1323Q448 1323 359 1225T270 971Q270 831 354 744T563 656Q688 656 768 743T849 986Z" />
+<glyph unicode=":" glyph-name="colon" horiz-adv-x="569" d="M185 857V1062H390V857H185ZM185 0V205H390V0H185Z" 
/>
+<glyph unicode=";" glyph-name="semicolon" horiz-adv-x="569" d="M182 857V1062H387V857H182ZM182 
0V205H387V0Q387 -113 347 -182T220 -290L170 -213Q227 -188 254 -140T284 0H182Z" />
+<glyph unicode="&lt;" glyph-name="less" horiz-adv-x="1196" d="M112 641V809L1083 1219V1040L313 724L1083 
405V226L112 641Z" />
+<glyph unicode="=" glyph-name="equal" horiz-adv-x="1196" d="M1082 862H114V1030H1082V862ZM1082 
417H114V585H1082V417Z" />
+<glyph unicode="&gt;" glyph-name="greater" horiz-adv-x="1196" d="M1083 641L112 226V405L881 724L112 
1040V1219L1083 809V641Z" />
+<glyph unicode="?" glyph-name="question" horiz-adv-x="1139" d="M472 361Q471 397 471 415Q471 521 501 598Q523 
656 572 715Q608 758 701 840T823 972T851 1079Q851 1184 769 1263T568 1343Q453 1343 376 1271T275 1046L90 
1068Q115 1273 238 1382T565 1491Q780
+1491 908 1374T1036 1091Q1036 995 991 914T815 717Q727 639 700 602T660 517T645 361H472ZM461 0V205H666V0H461Z" 
/>
+<glyph unicode="@" glyph-name="at" horiz-adv-x="2079" d="M1161 163Q1096 88 1016 43T854 -3Q765 -3 681 49T545 
209T492 446Q492 605 573 764T776 1004T1011 1084Q1098 1084 1177 1039T1313 900L1347 1055H1526L1382 384Q1352 244 
1352 229Q1352 202 1372 183T1422
+163Q1475 163 1561 224Q1675 304 1741 438T1808 716Q1808 883 1723 1028T1468 1260T1093 1347Q859 1347 666 
1238T366 924T259 485Q259 240 365 63T673 -198T1120 -283Q1382 -283 1559 -195T1824 19H2005Q1954 -86 1830 
-195T1535 -367T1123 -431Q901 -431 714
+-374T394 -203T195 61Q111 250 111 469Q111 713 211 934Q333 1205 557 1349T1102 1493Q1350 1493 1547 1392T1859 
1089Q1956 916 1956 713Q1956 423 1752 198Q1570 -4 1354 -4Q1285 -4 1243 17T1180 77Q1167 102 1161 163ZM677 
434Q677 297 742 221T891 145Q947
+145 1009 178T1127 278T1220 445T1256 649Q1256 785 1189 860T1024 935Q960 935 904 903T794 798T709 623T677 434Z" 
/>
+<glyph unicode="A" glyph-name="A" horiz-adv-x="1366" d="M-3 0L560 1466H769L1369 0H1148L977 444H364L203 
0H-3ZM420 602H917L764 1008Q694 1193 660 1312Q632 1171 581 1032L420 602Z" />
+<glyph unicode="B" glyph-name="B" horiz-adv-x="1366" d="M150 0V1466H700Q868 1466 969 1422T1128 1285T1186 
1091Q1186 997 1135 914T981 780Q1114 741 1185 647T1257 425Q1257 322 1214 234T1106 97T946 25T709 0H150ZM344 
850H661Q790 850 846 867Q920 889
+957 940T995 1068Q995 1141 960 1196T860 1272T637 1293H344V850ZM344 173H709Q803 173 841 180Q908 192 953 
220T1027 301T1056 425Q1056 507 1014 567T898 652T683 677H344V173Z" />
+<glyph unicode="C" glyph-name="C" horiz-adv-x="1479" d="M1204 514L1398 465Q1337 226 1179 101T791 -25Q554 -25 
406 71T180 351T102 744Q102 973 189 1143T438 1402T794 1491Q1014 1491 1164 1379T1373 1064L1182 1019Q1131 1179 
1034 1252T790 1325Q621 1325
+508 1244T348 1027T302 745Q302 558 356 419T526 210T775 141Q938 141 1051 235T1204 514Z" />
+<glyph unicode="D" glyph-name="D" horiz-adv-x="1479" d="M158 0V1466H663Q834 1466 924 1445Q1050 1416 1139 
1340Q1255 1242 1312 1090T1370 741Q1370 574 1331 445T1231 232T1098 99T923 25T687 0H158ZM352 173H665Q810 173 
892 200T1024 276Q1093 345 1131
+461T1170 744Q1170 974 1095 1097T911 1263Q833 1293 660 1293H352V173Z" />
+<glyph unicode="E" glyph-name="E" horiz-adv-x="1366" d="M162 
0V1466H1222V1293H356V844H1167V672H356V173H1256V0H162Z" />
+<glyph unicode="F" glyph-name="F" horiz-adv-x="1251" d="M168 0V1466H1157V1293H362V839H1050V666H362V0H168Z" />
+<glyph unicode="G" glyph-name="G" horiz-adv-x="1593" d="M844 575V747L1465 748V204Q1322 90 1170 33T858 
-25Q642 -25 466 67T199 335T109 726Q109 940 198 1125T456 1401T843 1491Q1002 1491 1130 1440T1332 1296T1443 
1056L1268 1008Q1235 1120 1186 1184T1046
+1286T844 1325Q711 1325 614 1285T458 1178T365 1033Q309 897 309 738Q309 542 376 410T573 214T847 150Q973 150 
1093 198T1275 302V575H844Z" />
+<glyph unicode="H" glyph-name="H" horiz-adv-x="1479" d="M164 
0V1466H358V864H1120V1466H1314V0H1120V691H358V0H164Z" />
+<glyph unicode="I" glyph-name="I" horiz-adv-x="569" d="M191 0V1466H385V0H191Z" />
+<glyph unicode="J" glyph-name="J" horiz-adv-x="1024" d="M59 416L234 440Q241 272 297 210T452 148Q525 148 578 
181T651 272T671 456V1466H865V467Q865 283 821 182T680 28T453 -25Q260 -25 158 86T59 416Z" />
+<glyph unicode="K" glyph-name="K" horiz-adv-x="1366" d="M150 0V1466H344V739L1072 1466H1335L720 872L1362 
0H1106L584 742L344 508V0H150Z" />
+<glyph unicode="L" glyph-name="L" horiz-adv-x="1139" d="M150 0V1466H344V173H1066V0H150Z" />
+<glyph unicode="M" glyph-name="M" horiz-adv-x="1706" d="M152 0V1466H444L791 428Q839 283 861 211Q886 291 939 
446L1290 1466H1551V0H1364V1227L938 0H763L339 1248V0H152Z" />
+<glyph unicode="N" glyph-name="N" horiz-adv-x="1479" d="M156 0V1466H355L1125 315V1466H1311V0H1112L342 
1152V0H156Z" />
+<glyph unicode="O" glyph-name="O" horiz-adv-x="1593" d="M99 714Q99 1079 295 1285T801 1492Q1004 1492 1167 
1395T1415 1125T1501 731Q1501 508 1411 332T1156 66T800 -25Q593 -25 430 75T183 348T99 714ZM299 711Q299 446 441 
294T799 141Q1018 141 1159 295T1301
+732Q1301 911 1241 1044T1064 1251T802 1325Q596 1325 448 1184T299 711Z" />
+<glyph unicode="P" glyph-name="P" horiz-adv-x="1366" d="M158 0V1466H711Q857 1466 934 1452Q1042 1434 1115 
1384T1232 1242T1277 1042Q1277 855 1158 726T728 596H352V0H158ZM352 769H731Q919 769 998 839T1077 1036Q1077 1128 
1031 1193T908 1280Q859 1293
+727 1293H352V769Z" />
+<glyph unicode="Q" glyph-name="Q" horiz-adv-x="1593" d="M1269 157Q1404 64 1518 21L1461 -114Q1303 -57 1146 
66Q983 -25 786 -25Q587 -25 425 71T176 341T88 733Q88 950 176 1128T426 1399T790 1492Q993 1492 1156 1396T1404 
1126T1490 734Q1490 553 1435
+409T1269 157ZM842 405Q1010 358 1119 265Q1290 421 1290 734Q1290 912 1230 1045T1053 1251T791 1325Q574 1325 431 
1177T288 733Q288 447 429 294T791 141Q895 141 987 180Q896 239 795 264L842 405Z" />
+<glyph unicode="R" glyph-name="R" horiz-adv-x="1479" d="M161 0V1466H811Q1007 1466 1109 1427T1272 1287T1333 
1066Q1333 910 1232 803T920 667Q997 630 1037 594Q1122 516 1198 399L1453 0H1209L1015 305Q930 437 875 507T777 
605T688 644Q655 651 580 651H355V0H161ZM355
+819H772Q905 819 980 846T1094 934T1133 1066Q1133 1170 1058 1237T819 1304H355V819Z" />
+<glyph unicode="S" glyph-name="S" horiz-adv-x="1366" d="M92 471L275 487Q288 377 335 307T483 193T708 149Q819 
149 904 182T1030 272T1072 398Q1072 467 1032 518T900 605Q841 628 639 676T356 768Q251 823 200 904T148 1087Q148 
1198 211 1294T395 1441T664
+1491Q827 1491 951 1439T1143 1284T1215 1053L1029 1039Q1014 1178 928 1249T672 1320Q496 1320 416 1256T335 
1100Q335 1021 392 970Q448 919 684 866T1009 772Q1137 713 1198 623T1259 414Q1259 297 1192 194T1000 33T717 
-25Q518 -25 384 33T173 207T92 471Z"
+/>
+<glyph unicode="T" glyph-name="T" horiz-adv-x="1251" d="M531 0V1293H48V1466H1210V1293H725V0H531Z" />
+<glyph unicode="U" glyph-name="U" horiz-adv-x="1479" d="M1120 1466H1314V619Q1314 398 1264 268T1084 57T741 
-25Q535 -25 404 46T217 251T161 619V1466H355V620Q355 429 390 339T512 199T724 150Q938 150 1029 247T1120 
620V1466Z" />
+<glyph unicode="V" glyph-name="V" horiz-adv-x="1366" d="M577 0L9 1466H219L600 401Q646 273 677 161Q711 281 
756 401L1152 1466H1350L776 0H577Z" />
+<glyph unicode="W" glyph-name="W" horiz-adv-x="1933" d="M414 0L25 1466H224L447 505Q483 354 509 205Q565 440 
575 476L854 1466H1088L1298 724Q1377 448 1412 205Q1440 344 1485 524L1715 1466H1910L1508 0H1321L1012 1117Q973 
1257 966 1289Q943 1188 923
+1117L612 0H414Z" />
+<glyph unicode="X" glyph-name="X" horiz-adv-x="1366" d="M9 0L576 764L76 1466H307L573 1090Q656 973 691 
910Q740 990 807 1077L1102 1466H1313L798 775L1353 0H1113L744 523Q713 568 680 621Q631 541 610 511L242 0H9Z" />
+<glyph unicode="Y" glyph-name="Y" horiz-adv-x="1366" d="M571 0V621L6 1466H242L531 1024Q611 900 680 776Q746 
891 840 1035L1124 1466H1350L765 621V0H571Z" />
+<glyph unicode="Z" glyph-name="Z" horiz-adv-x="1251" d="M41 0V180L792 1119Q872 1219 944 
1293H126V1466H1176V1293L353 276L264 173H1200V0H41Z" />
+<glyph unicode="[" glyph-name="bracketleft" horiz-adv-x="569" d="M139 
-407V1466H536V1317H319V-258H536V-407H139Z" />
+<glyph unicode="\" glyph-name="backslash" horiz-adv-x="569" d="M425 -25L0 1491H145L569 -25H425Z" />
+<glyph unicode="]" glyph-name="bracketright" horiz-adv-x="569" d="M436 
-407H39V-258H256V1317H39V1466H436V-407Z" />
+<glyph unicode="^" glyph-name="asciicircum" horiz-adv-x="961" d="M239 690H54L407 1491H552L907 690H726L479 
1287L239 690Z" />
+<glyph unicode="_" glyph-name="underscore" horiz-adv-x="1139" d="M-31 -407V-277H1162V-407H-31Z" />
+<glyph unicode="`" glyph-name="grave" horiz-adv-x="682" d="M465 1194H320L89 1474H330L465 1194Z" />
+<glyph unicode="a" glyph-name="a" horiz-adv-x="1139" d="M828 131Q728 46 636 11T437 -24Q262 -24 168 61T74 
280Q74 358 109 422T202 526T332 585Q385 599 492 612Q710 638 813 674Q814 711 814 721Q814 831 763 876Q694 937 
558 937Q431 937 371 893T281 735L105
+759Q129 872 184 941T343 1048T584 1086Q720 1086 805 1054T930 974T986 851Q995 805 995 685V445Q995 194 1006 
128T1052 0H864Q836 56 828 131ZM813 533Q715 493 519 465Q408 449 362 429T291 371T266 285Q266 213 320 165T480 
117Q584 117 665 162T784 287Q813
+348 813 467V533Z" />
+<glyph unicode="b" glyph-name="b" horiz-adv-x="1139" d="M301 0H134V1466H314V943Q428 1086 605 1086Q703 1086 
790 1047T934 936T1023 763T1055 547Q1055 274 920 125T596 -24Q408 -24 301 133V0ZM299 539Q299 348 351 263Q436 
124 581 124Q699 124 785 226T871
+532Q871 740 789 839T589 938Q471 938 385 836T299 539Z" />
+<glyph unicode="c" glyph-name="c" horiz-adv-x="1024" d="M828 389L1005 366Q976 183 857 80T563 -24Q345 -24 213 
118T80 527Q80 699 137 828T310 1021T564 1086Q737 1086 847 999T988 750L813 723Q788 830 725 884T571 938Q435 938 
350 841T265 532Q265 318
+347 221T561 124Q667 124 738 189T828 389Z" />
+<glyph unicode="d" glyph-name="d" horiz-adv-x="1139" d="M824 0V134Q723 -24 527 -24Q400 -24 294 46T129 241T70 
530Q70 689 123 818T282 1017T519 1086Q615 1086 690 1046T812 940V1466H991V0H824ZM255 530Q255 326 341 225T544 
124Q662 124 744 220T827 515Q827
+733 743 835T536 937Q416 937 336 839T255 530Z" />
+<glyph unicode="e" glyph-name="e" horiz-adv-x="1139" d="M862 342L1048 319Q1004 156 885 66T581 -24Q348 -24 
212 119T75 522Q75 790 213 938T571 1086Q784 1086 919 941T1054 533Q1054 517 1053 485H261Q271 310 360 217T582 
124Q681 124 751 176T862 342ZM271
+633H864Q852 767 796 834Q710 938 573 938Q449 938 365 855T271 633Z" />
+<glyph unicode="f" glyph-name="f" horiz-adv-x="569" d="M178 0V922H19V1062H178V1175Q178 1282 197 1334Q223 
1404 288 1447T472 1491Q548 1491 640 1473L613 1316Q557 1326 507 1326Q425 1326 391 1291T357 
1160V1062H564V922H357V0H178Z" />
+<glyph unicode="g" glyph-name="g" horiz-adv-x="1139" d="M102 -88L277 -114Q288 -195 338 -232Q405 -282 521 
-282Q646 -282 714 -232T806 -92Q820 -37 819 139Q701 0 525 0Q306 0 186 158T66 537Q66 689 121 817T280 1016T526 
1086Q714 1086 836 934V1062H1002V144Q1002
+-104 952 -207T792 -371T522 -431Q332 -431 215 -346T102 -88ZM251 550Q251 341 334 245T542 149Q666 149 750 
244T834 544Q834 739 748 838T539 937Q419 937 335 840T251 550Z" />
+<glyph unicode="h" glyph-name="h" horiz-adv-x="1139" d="M135 0V1466H315V940Q441 1086 633 1086Q751 1086 838 
1040T962 911T1000 673V0H820V673Q820 808 762 869T596 931Q516 931 446 890T345 777T315 581V0H135Z" />
+<glyph unicode="i" glyph-name="i" horiz-adv-x="455" d="M136 1259V1466H316V1259H136ZM136 0V1062H316V0H136Z" />
+<glyph unicode="j" glyph-name="j" horiz-adv-x="455" d="M134 1257V1466H314V1257H134ZM-94 -412L-60 -259Q-6 
-273 25 -273Q80 -273 107 -237T134 -54V1062H314V-58Q314 -254 263 -331Q198 -431 47 -431Q-26 -431 -94 -412Z" />
+<glyph unicode="k" glyph-name="k" horiz-adv-x="1024" d="M136 0V1466H316V630L742 1062H975L569 668L1016 
0H794L443 543L316 421V0H136Z" />
+<glyph unicode="l" glyph-name="l" horiz-adv-x="455" d="M131 0V1466H311V0H131Z" />
+<glyph unicode="m" glyph-name="m" horiz-adv-x="1706" d="M135 0V1062H296V913Q346 991 429 1038T618 1086Q736 
1086 811 1037T918 900Q1044 1086 1246 1086Q1404 1086 1489 999T1574 729V0H1395V669Q1395 777 1378 824T1314 
901T1206 930Q1094 930 1020 856T946
+617V0H766V690Q766 810 722 870T578 930Q502 930 438 890T344 773T315 551V0H135Z" />
+<glyph unicode="n" glyph-name="n" horiz-adv-x="1139" d="M135 0V1062H297V911Q414 1086 635 1086Q731 1086 811 
1052T932 961T988 828Q998 778 998 653V0H818V646Q818 756 797 810T723 897T597 930Q482 930 399 857T315 
580V0H135Z" />
+<glyph unicode="o" glyph-name="o" horiz-adv-x="1139" d="M68 531Q68 826 232 968Q369 1086 566 1086Q785 1086 
924 943T1063 546Q1063 341 1002 224T823 41T566 -24Q343 -24 206 119T68 531ZM253 531Q253 327 342 226T566 124Q700 
124 789 226T878 537Q878 734
+789 835T566 937Q431 937 342 836T253 531Z" />
+<glyph unicode="p" glyph-name="p" horiz-adv-x="1139" d="M135 -407V1062H299V924Q357 1005 430 1045T607 
1086Q743 1086 847 1016T1004 819T1057 539Q1057 376 999 246T829 46T594 -24Q504 -24 433 14T315 110V-407H135ZM298 
525Q298 320 381 222T582 124Q702
+124 787 225T873 540Q873 743 790 844T590 945Q475 945 387 838T298 525Z" />
+<glyph unicode="q" glyph-name="q" horiz-adv-x="1139" d="M812 -407V113Q770 54 695 15T534 -24Q345 -24 209 
127T72 541Q72 701 127 828T288 1020T520 1086Q717 1086 830 920V1062H992V-407H812ZM257 534Q257 329 343 227T549 
124Q664 124 747 221T830 518Q830
+730 743 837T537 944Q420 944 339 845T257 534Z" />
+<glyph unicode="r" glyph-name="r" horiz-adv-x="682" d="M133 0V1062H295V901Q357 1014 409 1050T525 1086Q616 
1086 710 1028L648 861Q582 900 516 900Q457 900 410 865T343 766Q313 670 313 556V0H133Z" />
+<glyph unicode="s" glyph-name="s" horiz-adv-x="1024" d="M63 317L241 345Q256 238 324 181T516 124Q640 124 700 
174T760 293Q760 354 707 389Q670 413 523 450Q325 500 249 536T133 637T93 780Q93 851 125 911T214 1012Q256 1043 
328 1064T484 1086Q609 1086
+703 1050T843 953T905 788L729 764Q717 846 660 892T497 938Q373 938 320 897T267 801Q267 766 289 738Q311 709 358 
690Q385 680 517 644Q708 593 783 561T902 466T945 312Q945 222 893 143T741 20T517 -24Q310 -24 202 62T63 317Z" />
+<glyph unicode="t" glyph-name="t" horiz-adv-x="569" d="M528 161L554 2Q478 -14 418 -14Q320 -14 266 17T190 
98T168 311V922H36V1062H168V1325L347 1433V1062H528V922H347V301Q347 224 356 202T387 167T449 154Q479 154 528 
161Z" />
+<glyph unicode="u" glyph-name="u" horiz-adv-x="1139" d="M831 0V156Q707 -24 494 -24Q400 -24 319 12T198 
102T142 236Q131 289 131 404V1062H311V473Q311 332 322 283Q339 212 394 172T530 131Q611 131 682 172T782 285T812 
493V1062H992V0H831Z" />
+<glyph unicode="v" glyph-name="v" horiz-adv-x="1024" d="M430 0L26 1062H216L444 426Q481 323 512 212Q536 296 
579 414L815 1062H1000L598 0H430Z" />
+<glyph unicode="w" glyph-name="w" horiz-adv-x="1479" d="M331 0L6 1062H192L361 449L424 221Q428 238 479 
440L648 1062H833L992 446L1045 243L1106 448L1288 1062H1463L1131 0H944L775 636L734 817L519 0H331Z" />
+<glyph unicode="x" glyph-name="x" horiz-adv-x="1024" d="M15 0L403 552L44 1062H269L432 813Q478 742 506 
694Q550 760 587 811L766 1062H981L614 562L1009 0H788L570 330L512 419L233 0H15Z" />
+<glyph unicode="y" glyph-name="y" horiz-adv-x="1024" d="M127 -409L107 -240Q166 -256 210 -256Q270 -256 306 
-236T365 -180Q382 -153 420 -46Q425 -31 436 -2L33 1062H227L448 447Q491 330 525 201Q556 325 599 443L826 
1062H1006L602 -18Q537 -193 501 -259Q453
+-348 391 -389T243 -431Q191 -431 127 -409Z" />
+<glyph unicode="z" glyph-name="z" horiz-adv-x="1024" d="M40 0V146L716 922Q601 916 513 
916H80V1062H948V943L373 269L262 146Q383 155 489 155H980V0H40Z" />
+<glyph unicode="{" glyph-name="braceleft" horiz-adv-x="684" d="M57 612Q134 614 182 653T247 762T264 998T270 
1218Q279 1302 303 1353T364 1434T456 1481Q494 1491 580 1491H636V1334H605Q501 1334 467 1297T433 1129Q433 867 
422 798Q404 691 361 633T224
+530Q334 484 383 390T433 80Q433 -115 437 -152Q445 -220 477 -247T605 -274H636V-431H580Q482 -431 438 -415Q374 
-392 332 -341T278 -210T264 49T247 298T183 407T57 449V612Z" />
+<glyph unicode="|" glyph-name="bar" horiz-adv-x="532" d="M188 -431V1491H345V-431H188Z" />
+<glyph unicode="}" glyph-name="braceright" horiz-adv-x="684" d="M626 612V449Q549 447 501 407T436 299T419 
63T413 -157Q404 -242 380 -292T319 -373T227 -420Q189 -431 103 -431H47V-274H78Q182 -274 216 -237T250 -68Q250 
182 259 249Q275 360 323 426T459
+530Q344 585 297 675T250 981Q250 1176 245 1214Q238 1281 206 1307T78 1334H47V1491H103Q201 1491 245 1475Q309 
1453 351 1401T405 1270T419 1011T436 763T500 654T626 612Z" />
+<glyph unicode="~" glyph-name="asciitilde" horiz-adv-x="1196" d="M87 557V762Q193 882 365 882Q425 882 491 
865T679 795Q748 766 782 757T852 748Q917 748 986 787T1110 885V673Q1046 613 981 586T833 559Q773 559 719 573T546 
640T348 693Q284 693 228 666T87 557Z" />
+
+<!-- arabic ligatures -->
+
+<glyph unicode="&#x644;&#x622;" glyph-name="afii62834" horiz-adv-x="1114" arabic-form="isolated" d="M1038 
1350L990 1170L931 1199L933 1108Q933 974 899 848Q862 710 782 575Q820 505 835 465Q858 402 858 337Q858 300 856 
274T847 213Q741 189 621 176T386 162Q387
+181 387 194Q392 270 411 335Q581 426 698 571Q628 703 596 758Q561 818 477 945Q446 988 422 1014Q389 1049 370 
1049Q357 1049 327 1034Q311 1026 300 1026Q278 1026 231 1070Q190 1109 145 1166Q109 1212 96 1242T83 1316Q83 1378 
91 1413Q103 1466 132 1466Q173
+1466 251 1388Q320 1318 405 1204Q480 1103 553 986L655 822Q700 748 747 654Q814 789 839 927Q861 1047 861 
1233L804 1266Q804 1332 815 1385T848 1483L871 1477Q875 1434 919 1408Q943 1394 980 1376T1038 1350ZM778 377Q778 
399 770 422T732 500Q702 461 643
+410T525 323Q643 323 693 330Q778 342 778 377ZM472 1654Q444 1622 415 1605Q374 1581 326 1581Q276 1581 231 
1596Q132 1629 126 1629Q114 1629 102 1626T75 1615L64 1628Q89 1664 100 1673Q123 1693 161 1693Q170 1693 270 
1661Q320 1645 353 1645Q406 1645 458
+1668L472 1654Z" />
+<glyph unicode="&#x644;&#x622;" glyph-name="afii62835" horiz-adv-x="1230" arabic-form="terminal" d="M807 
816Q807 796 805 782T795 747Q739 872 629 1005Q507 1152 437 1152Q422 1152 407 1126T372 1100Q345 1100 287 
1135Q214 1179 170 1237Q111 1315 111 1403Q111 1466 152 1466Q224
+1466 377 1375Q548 1274 664 1139Q807 974 807 816ZM1291 293H1160Q1076 293 1025 384Q964 494 964 717Q964 733 961 
760T957 794Q861 527 786 428Q697 312 535 274Q397 242 65 242V270Q334 351 466 410Q679 504 789 627Q922 775 922 
978Q922 1076 910 1161T875
+1335L908 1419Q928 1468 945 1502Q971 1358 994 1191Q1010 1076 1025 944Q1044 782 1058 683Q1076 557 1112 
503Q1136 467 1160 467H1291V293ZM472 1654Q444 1622 415 1605Q374 1581 326 1581Q276 1581 231 1596Q132 1629 126 
1629Q114 1629 102 1626T75 1615L64
+1628Q89 1664 100 1673Q123 1693 161 1693Q170 1693 270 1661Q320 1645 353 1645Q406 1645 458 1668L472 1654Z" />
+
+<glyph unicode="&#x644;&#x623;" glyph-name="afii62836" horiz-adv-x="1114" arabic-form="isolated" d="M1038 
1350L990 1170L931 1199L933 1108Q933 974 899 848Q862 710 782 575Q820 505 835 465Q858 402 858 337Q858 300 856 
274T847 213Q741 189 621 176T386 162Q387
+181 387 194Q392 270 411 335Q581 426 698 571Q628 703 596 758Q561 818 477 945Q446 988 422 1014Q389 1049 370 
1049Q357 1049 327 1034Q311 1026 300 1026Q278 1026 231 1070Q190 1109 145 1166Q109 1212 96 1242T83 1316Q83 1378 
91 1413Q103 1466 132 1466Q173
+1466 251 1388Q320 1318 405 1204Q480 1103 553 986L655 822Q700 748 747 654Q814 789 839 927Q861 1047 861 
1233L804 1266Q804 1332 815 1385T848 1483L871 1477Q875 1434 919 1408Q943 1394 980 1376T1038 1350ZM778 377Q778 
399 770 422T732 500Q702 461 643
+410T525 323Q643 323 693 330Q778 342 778 377ZM318 1638Q318 1613 287 1593Q266 1580 224 1565L38 1501Q38 1547 
138 1582Q107 1598 91 1613Q70 1632 70 1653Q70 1684 123 1740Q182 1802 227 1802Q247 1802 261 1789T276 1753Q276 
1739 270 1725T253 1692Q222
+1720 186 1720Q164 1720 143 1711T121 1690Q121 1675 167 1649T247 1623Q269 1623 278 1624T318 1638Z" />
+<glyph unicode="&#x644;&#x623;" glyph-name="afii62837" horiz-adv-x="1230" arabic-form="terminal" d="M807 
816Q807 796 805 782T795 747Q739 872 629 1005Q507 1152 437 1152Q422 1152 407 1126T372 1100Q345 1100 287 
1135Q214 1179 170 1237Q111 1315 111 1403Q111 1466 152 1466Q224
+1466 377 1375Q548 1274 664 1139Q807 974 807 816ZM1291 293H1160Q1076 293 1025 384Q964 494 964 717Q964 733 961 
760T957 794Q861 527 786 428Q697 312 535 274Q397 242 65 242V270Q334 351 466 410Q679 504 789 627Q922 775 922 
978Q922 1076 910 1161T875
+1335L908 1419Q928 1468 945 1502Q971 1358 994 1191Q1010 1076 1025 944Q1044 782 1058 683Q1076 557 1112 
503Q1136 467 1160 467H1291V293ZM328 1638Q328 1613 297 1593Q276 1580 234 1565L48 1501Q48 1547 148 1582Q117 
1598 101 1613Q80 1632 80 1653Q80 1684
+133 1740Q192 1802 237 1802Q257 1802 271 1789T286 1753Q286 1739 280 1725T263 1692Q232 1720 196 1720Q174 1720 
153 1711T131 1690Q131 1675 177 1649T257 1623Q279 1623 288 1624T328 1638Z" />
+
+<glyph unicode="&#x644;&#x625;" glyph-name="afii62838" horiz-adv-x="1114" arabic-form="isolated" d="M1038 
1350L990 1170L931 1199L933 1108Q933 974 899 848Q862 710 782 575Q820 505 835 465Q858 402 858 337Q858 300 856 
274T847 213Q741 189 621 176T386 162Q387
+181 387 194Q392 270 411 335Q581 426 698 571Q628 703 596 758Q561 818 477 945Q446 988 422 1014Q389 1049 370 
1049Q357 1049 327 1034Q311 1026 300 1026Q278 1026 231 1070Q190 1109 145 1166Q109 1212 96 1242T83 1316Q83 1378 
91 1413Q103 1466 132 1466Q173
+1466 251 1388Q320 1318 405 1204Q480 1103 553 986L655 822Q700 748 747 654Q814 789 839 927Q861 1047 861 
1233L804 1266Q804 1332 815 1385T848 1483L871 1477Q875 1434 919 1408Q943 1394 980 1376T1038 1350ZM778 377Q778 
399 770 422T732 500Q702 461 643
+410T525 323Q643 323 693 330Q778 342 778 377ZM623 -90Q623 -115 592 -135Q571 -148 529 -163L343 -227Q343 -181 
443 -146Q412 -130 396 -115Q375 -96 375 -75Q375 -44 428 12Q487 74 532 74Q552 74 566 61T581 25Q581 11 575 
-3T558 -36Q527 -8 491 -8Q469 -8
+448 -17T426 -38Q426 -53 472 -79T552 -105Q574 -105 583 -104T623 -90Z" />
+<glyph unicode="&#x644;&#x625;" glyph-name="afii62839" horiz-adv-x="1230" arabic-form="terminal" d="M807 
816Q807 796 805 782T795 747Q739 872 629 1005Q507 1152 437 1152Q422 1152 407 1126T372 1100Q345 1100 287 
1135Q214 1179 170 1237Q111 1315 111 1403Q111 1466 152 1466Q224
+1466 377 1375Q548 1274 664 1139Q807 974 807 816ZM1291 293H1160Q1076 293 1025 384Q964 494 964 717Q964 733 961 
760T957 794Q861 527 786 428Q697 312 535 274Q397 242 65 242V270Q334 351 466 410Q679 504 789 627Q922 775 922 
978Q922 1076 910 1161T875
+1335L908 1419Q928 1468 945 1502Q971 1358 994 1191Q1010 1076 1025 944Q1044 782 1058 683Q1076 557 1112 
503Q1136 467 1160 467H1291V293ZM464 -90Q464 -115 433 -135Q412 -148 370 -163L184 -227Q184 -181 284 -146Q253 
-130 237 -115Q216 -96 216 -75Q216
+-44 269 12Q328 74 373 74Q393 74 407 61T422 25Q422 11 416 -3T399 -36Q368 -8 332 -8Q310 -8 289 -17T267 -38Q267 
-53 313 -79T393 -105Q415 -105 424 -104T464 -90Z" />
+
+<glyph unicode="&#x644;&#x627;" glyph-name="afii62840" horiz-adv-x="1114" arabic-form="isolated" d="M1038 
1350L990 1170L931 1199L933 1108Q933 974 899 848Q862 710 782 575Q820 505 835 465Q858 402 858 337Q858 300 856 
274T847 213Q741 189 621 176T386 162Q387
+181 387 194Q392 270 411 335Q581 426 698 571Q628 703 596 758Q561 818 477 945Q446 988 422 1014Q389 1049 370 
1049Q357 1049 327 1034Q311 1026 300 1026Q278 1026 231 1070Q190 1109 145 1166Q109 1212 96 1242T83 1316Q83 1378 
91 1413Q103 1466 132 1466Q173
+1466 251 1388Q320 1318 405 1204Q480 1103 553 986L655 822Q700 748 747 654Q814 789 839 927Q861 1047 861 
1233L804 1266Q804 1332 815 1385T848 1483L871 1477Q875 1434 919 1408Q943 1394 980 1376T1038 1350ZM778 377Q778 
399 770 422T732 500Q702 461 643
+410T525 323Q643 323 693 330Q778 342 778 377Z" />
+<glyph unicode="&#x644;&#x627;" glyph-name="afii62841" horiz-adv-x="1230" arabic-form="terminal" d="M807 
816Q807 796 805 782T795 747Q739 872 629 1005Q507 1152 437 1152Q422 1152 407 1126T372 1100Q345 1100 287 
1135Q214 1179 170 1237Q111 1315 111 1403Q111 1466 152 1466Q224
+1466 377 1375Q548 1274 664 1139Q807 974 807 816ZM1291 293H1160Q1076 293 1025 384Q964 494 964 717Q964 733 961 
760T957 794Q861 527 786 428Q697 312 535 274Q397 242 65 242V270Q334 351 466 410Q679 504 789 627Q922 775 922 
978Q922 1076 910 1161T875
+1335L908 1419Q928 1468 945 1502Q971 1358 994 1191Q1010 1076 1025 944Q1044 782 1058 683Q1076 557 1112 
503Q1136 467 1160 467H1291V293Z" />
+
+<!-- arabic chars -->
+
+<glyph unicode="&#x60c;" glyph-name="afii57388" horiz-adv-x="653" d="M493 417Q493 364 453 322T350 280Q273 
280 222 352T171 531Q171 680 259 792Q302 847 388 908L421 853Q362 799 331 759Q276 688 276 634Q276 580 384 
556T493 417Z" />
+<glyph unicode="&#x61b;" glyph-name="afii57403" horiz-adv-x="653" d="M482 757Q482 704 442 662T339 620Q262 
620 211 692T160 871Q160 1020 248 1132Q291 1187 377 1248L410 1193Q351 1139 320 1099Q265 1028 265 974Q265 920 
373 896T482 757ZM455 394Q455
+347 422 313T340 278Q292 278 257 312T221 394Q221 442 256 476T340 510Q389 510 422 477T455 394Z" />
+<glyph unicode="&#x61f;" glyph-name="afii57407" horiz-adv-x="730" d="M668 1209Q668 1147 632 1100Q591 1047 
527 1047Q477 1047 444 1080T411 1157Q411 1225 466 1259T521 1315Q521 1349 489 1370T405 1391Q340 1391 299 
1355T257 1265Q257 1216 299 1140Q363
+1024 377 990Q419 885 419 763Q419 697 409 615L348 616Q348 634 349 644L354 696Q354 752 280 818Q154 930 142 
944Q67 1033 67 1144Q67 1279 157 1368T380 1457Q500 1457 584 1389T668 1209ZM486 404Q486 353 450 317T361 280Q312 
280 276 317T240 404Q240 456
+276 492T365 529Q416 529 451 492T486 404Z" />
+<glyph unicode="&#x621;" glyph-name="afii57409" horiz-adv-x="845" d="M744 537L696 373Q544 335 446 288Q333 
234 240 147L209 164Q222 210 244 249Q263 283 288 310L172 376Q121 410 121 450Q121 482 161 566Q209 666 271 
733Q351 819 432 819Q507 819 556
+776Q567 767 607 721L555 590Q518 615 511 620Q450 659 411 659Q363 659 311 632T259 571Q259 530 319 492Q366 463 
461 429Q600 496 744 537Z" />
+<glyph unicode="&#x622;" glyph-name="afii62753" horiz-adv-x="470" arabic-form="terminal" d="M540 293H400Q332 
293 291 348Q255 396 237 491T208 725Q202 838 196 957T179 1137T150 1238Q128 1286 89 1322L212 1516Q251 1396 267 
1229Q277 1125 287 737Q305
+559 339 509Q367 467 400 467H540V293ZM442 1654Q414 1622 385 1605Q344 1581 296 1581Q246 1581 201 1596Q102 1629 
96 1629Q84 1629 72 1626T45 1615L34 1628Q59 1664 70 1673Q93 1693 131 1693Q140 1693 240 1661Q290 1645 323 
1645Q376 1645 428 1668L442 1654Z"
+/>
+<glyph unicode="&#x622;" glyph-name="afii52400" horiz-adv-x="424" arabic-form="isolated" d="M422 1654Q394 
1622 365 1605Q324 1581 276 1581Q226 1581 181 1596Q82 1629 76 1629Q64 1629 52 1626T25 1615L14 1628Q39 1664 50 
1673Q73 1693 111 1693Q120
+1693 220 1661Q270 1645 303 1645Q356 1645 408 1668L422 1654ZM338 548Q338 468 309 393Q294 353 244 266L226 
276Q229 305 231 343T234 394Q234 498 218 684T178 1074Q164 1197 147 1325Q167 1369 192 1420T241 1516Q257 1402 
281 1204T320 847Q338 649 338 548Z"
+/>
+<glyph unicode="&#x623;" glyph-name="afii62754" horiz-adv-x="470" arabic-form="terminal" d="M366 1638Q366 
1613 335 1593Q314 1580 272 1565L86 1501Q86 1547 186 1582Q155 1598 139 1613Q118 1632 118 1653Q118 1684 171 
1740Q230 1802 275 1802Q295 1802
+309 1789T324 1753Q324 1739 318 1725T301 1692Q270 1720 234 1720Q212 1720 191 1711T169 1690Q169 1675 215 
1649T295 1623Q317 1623 326 1624T366 1638ZM540 293H400Q332 293 291 348Q255 396 237 491T208 725Q202 838 196 
957T179 1137T150 1238Q128 1286 89
+1322L212 1516Q251 1396 267 1229Q277 1125 287 737Q305 559 339 509Q367 467 400 467H540V293Z" />
+<glyph unicode="&#x623;" glyph-name="afii57411" horiz-adv-x="424" arabic-form="isolated" d="M366 1638Q366 
1613 335 1593Q314 1580 272 1565L86 1501Q86 1547 186 1582Q155 1598 139 1613Q118 1632 118 1653Q118 1684 171 
1740Q230 1802 275 1802Q295 1802
+309 1789T324 1753Q324 1739 318 1725T301 1692Q270 1720 234 1720Q212 1720 191 1711T169 1690Q169 1675 215 
1649T295 1623Q317 1623 326 1624T366 1638ZM338 548Q338 468 309 393Q294 353 244 266L226 276Q229 305 231 343T234 
394Q234 498 218 684T178 1074Q164
+1197 147 1325Q167 1369 192 1420T241 1516Q257 1402 281 1204T320 847Q338 649 338 548Z" />
+<glyph unicode="&#x624;" glyph-name="afii62755" horiz-adv-x="885" arabic-form="terminal" d="M955 353Q955 188 
833 25Q697 -157 519 -157Q453 -157 383 -142Q332 -131 250 -104Q185 -81 120 -59L137 -24Q193 -37 254 -51T365 
-66Q487 -66 596 -4Q681 45 766
+138Q809 185 888 291Q753 291 686 334Q610 383 610 495Q610 598 658 686Q714 788 800 788Q887 788 925 687Q955 608 
955 467V353ZM892 462Q870 558 839 595Q812 627 773 627Q745 627 725 609T704 562Q704 513 748 488T892 462ZM715 
973Q715 948 684 928Q663 915
+621 900L435 836Q435 882 535 917Q504 933 488 948Q467 967 467 988Q467 1019 520 1075Q579 1137 624 1137Q644 1137 
658 1124T673 1088Q673 1074 667 1060T650 1027Q619 1055 583 1055Q561 1055 540 1046T518 1025Q518 1010 564 
984T644 958Q666 958 675 959T715
+973Z" />
+<glyph unicode="&#x624;" glyph-name="afii57412" horiz-adv-x="885" arabic-form="isolated" d="M955 353Q955 188 
833 25Q697 -157 519 -157Q453 -157 383 -142Q332 -131 250 -104Q185 -81 120 -59L137 -24Q193 -37 254 -51T365 
-66Q487 -66 596 -4Q681 45 766
+138Q809 185 888 291Q753 291 686 334Q610 383 610 495Q610 598 658 686Q714 788 800 788Q887 788 925 687Q955 608 
955 467V353ZM892 462Q870 558 839 595Q812 627 773 627Q745 627 725 609T704 562Q704 513 748 488T892 462ZM715 
973Q715 948 684 928Q663 915
+621 900L435 836Q435 882 535 917Q504 933 488 948Q467 967 467 988Q467 1019 520 1075Q579 1137 624 1137Q644 1137 
658 1124T673 1088Q673 1074 667 1060T650 1027Q619 1055 583 1055Q561 1055 540 1046T518 1025Q518 1010 564 
984T644 958Q666 958 675 959T715
+973Z" />
+<glyph unicode="&#x625;" glyph-name="afii62756" horiz-adv-x="470" arabic-form="terminal" d="M540 293H400Q332 
293 291 348Q255 396 237 491T208 725Q202 838 196 957T179 1137T150 1238Q128 1286 89 1322L212 1516Q251 1396 267 
1229Q277 1125 287 737Q305
+559 339 509Q367 467 400 467H540V293ZM375 -55Q375 -80 344 -100Q323 -113 281 -128L95 -192Q95 -146 195 -111Q164 
-95 148 -80Q127 -61 127 -40Q127 -9 180 47Q239 109 284 109Q304 109 318 96T333 60Q333 46 327 32T310 -1Q279 27 
243 27Q221 27 200 18T178
+-3Q178 -18 224 -44T304 -70Q326 -70 335 -69T375 -55Z" />
+<glyph unicode="&#x625;" glyph-name="afii57413" horiz-adv-x="424" arabic-form="isolated" d="M325 -55Q325 -80 
294 -100Q273 -113 231 -128L45 -192Q45 -146 145 -111Q114 -95 98 -80Q77 -61 77 -40Q77 -9 130 47Q189 109 234 
109Q254 109 268 96T283 60Q283
+46 277 32T260 -1Q229 27 193 27Q171 27 150 18T128 -3Q128 -18 174 -44T254 -70Q276 -70 285 -69T325 -55ZM338 
548Q338 468 309 393Q294 353 244 266L226 276Q229 305 231 343T234 394Q234 498 218 684T178 1074Q164 1197 147 
1325Q167 1369 192 1420T241 1516Q257
+1402 281 1204T320 847Q338 649 338 548Z" />
+<glyph unicode="&#x626;" glyph-name="afii62757" horiz-adv-x="500" arabic-form="initial" d="M570 
293H0V467H497Q497 585 469 647Q450 690 375 771L453 934Q525 843 543 792Q570 715 570 537V293ZM462 1205Q462 1180 
431 1160Q410 1147 368 1132L182 1068Q182
+1114 282 1149Q251 1165 235 1180Q214 1199 214 1220Q214 1251 267 1307Q326 1369 371 1369Q391 1369 405 1356T420 
1320Q420 1306 414 1292T397 1259Q366 1287 330 1287Q308 1287 287 1278T265 1257Q265 1242 311 1216T391 1190Q413 
1190 422 1191T462 1205Z"
+/>
+<glyph unicode="&#x626;" glyph-name="afii62758" horiz-adv-x="500" arabic-form="medial" d="M570 
293H0V467H497Q497 585 469 647Q450 690 375 771L453 934Q525 843 543 792Q570 715 570 537V293ZM462 1205Q462 1180 
431 1160Q410 1147 368 1132L182 1068Q182
+1114 282 1149Q251 1165 235 1180Q214 1199 214 1220Q214 1251 267 1307Q326 1369 371 1369Q391 1369 405 1356T420 
1320Q420 1306 414 1292T397 1259Q366 1287 330 1287Q308 1287 287 1278T265 1257Q265 1242 311 1216T391 1190Q413 
1190 422 1191T462 1205Z"
+/>
+<glyph unicode="&#x626;" glyph-name="afii62759" horiz-adv-x="1205" arabic-form="terminal" d="M1275 
293H1100Q946 293 869 285T791 253Q791 220 884 220Q925 220 949 218T1054 207Q1102 201 1120 192Q1149 177 1149 
140Q1149 -47 1026 -132Q892 -225 583
+-225Q368 -225 241 -152Q106 -74 106 70Q106 186 170 316Q193 363 291 517L331 497Q293 432 256 368Q199 258 199 
188Q199 65 327 1Q449 -60 662 -60Q805 -60 914 -38Q1048 -11 1048 36Q1048 53 1033 61T983 70Q956 73 899 76T823 
80Q760 80 733 96T706 146Q706
+270 779 349Q839 413 940 444Q1016 467 1100 467H1275V293ZM422 842Q422 817 391 797Q370 784 328 769L142 705Q142 
751 242 786Q211 802 195 817Q174 836 174 857Q174 888 227 944Q286 1006 331 1006Q351 1006 365 993T380 957Q380 
943 374 929T357 896Q326 924
+290 924Q268 924 247 915T225 894Q225 879 271 853T351 827Q373 827 382 828T422 842Z" />
+<glyph unicode="&#x626;" glyph-name="afii57414" horiz-adv-x="1307" arabic-form="isolated" d="M1241 800Q1241 
768 1235 735T1227 687Q1192 732 1144 758T1045 784Q958 784 862 683Q774 590 774 535Q774 516 795 507T870 
497H950Q1022 497 1056 496T1139 486T1187
+413Q1187 162 968 31Q767 -89 424 -89Q246 -89 152 -20Q50 55 50 206Q50 310 84 424Q110 511 156 606Q159 612 219 
725L261 708Q198 596 165 499T131 326Q131 204 215 143T457 82Q577 82 736 130Q872 171 981 228T1090 312Q1090 331 
1078 337T1037 343H803Q760
+343 727 374T694 454Q694 521 749 636Q809 761 894 845Q996 946 1099 946Q1165 946 1203 906T1241 800ZM362 973Q362 
948 331 928Q310 915 268 900L82 836Q82 882 182 917Q151 933 135 948Q114 967 114 988Q114 1019 167 1075Q226 1137 
271 1137Q291 1137 305 1124T320
+1088Q320 1074 314 1060T297 1027Q266 1055 230 1055Q208 1055 187 1046T165 1025Q165 1010 211 984T291 958Q313 
958 322 959T362 973Z" />
+<glyph unicode="&#x627;" glyph-name="afii62760" horiz-adv-x="470" arabic-form="terminal" d="M540 293H400Q332 
293 291 348Q255 396 237 491T208 725Q202 838 196 957T179 1137T150 1238Q128 1286 89 1322L212 1516Q251 1396 267 
1229Q277 1125 287 737Q305
+559 339 509Q367 467 400 467H540V293Z" />
+<glyph unicode="&#x627;" glyph-name="afii57415" horiz-adv-x="424" arabic-form="isolated" d="M338 548Q338 468 
309 393Q294 353 244 266L226 276Q229 305 231 343T234 394Q234 498 218 684T178 1074Q164 1197 147 1325Q167 1369 
192 1420T241 1516Q257 1402
+281 1204T320 847Q338 649 338 548Z" />
+<glyph unicode="&#x628;" glyph-name="afii62761" horiz-adv-x="500" arabic-form="initial" d="M570 
293H0V467H497Q497 585 469 647Q450 690 375 771L453 934Q525 843 543 792Q570 715 570 537V293ZM468 50L390 -95L228 
-11L302 135L468 50Z" />
+<glyph unicode="&#x628;" glyph-name="afii62762" horiz-adv-x="500" arabic-form="medial" d="M570 
293H0V467H497Q497 585 469 647Q450 690 375 771L453 934Q525 843 543 792Q570 715 570 537V293ZM468 50L390 -95L228 
-11L302 135L468 50Z" />
+<glyph unicode="&#x628;" glyph-name="afii62763" horiz-adv-x="1461" arabic-form="terminal" d="M1531 
293H577Q385 293 271 360Q128 444 128 623Q128 716 170 813Q185 848 242 946L272 927Q250 881 229 835Q200 764 200 
708Q200 590 324 525Q435 467 605 467H1452V494Q1452
+606 1425 676T1333 797L1410 960Q1454 905 1463 891Q1531 779 1531 565V293ZM958 50L880 -95L718 -11L792 135L958 
50Z" />
+<glyph unicode="&#x628;" glyph-name="afii57416" horiz-adv-x="1461" arabic-form="isolated" d="M1531 
293H577Q385 293 271 360Q128 444 128 623Q128 716 170 813Q185 848 242 946L272 927Q250 881 229 835Q200 764 200 
708Q200 590 324 525Q435 467 605 467H1452V494Q1452
+606 1425 676T1333 797L1410 960Q1454 905 1463 891Q1531 779 1531 565V293ZM958 50L880 -95L718 -11L792 135L958 
50Z" />
+<glyph unicode="&#x629;" glyph-name="afii62764" horiz-adv-x="768" arabic-form="terminal" d="M585 1488L507 
1344L345 1430L420 1573L585 1488ZM355 1398L279 1253L117 1337L191 1482L355 1398ZM838 293H695Q623 293 568 
416Q527 508 502 653Q472 597 426
+566T329 535Q214 535 138 550T61 590Q61 676 173 780T453 963Q451 971 445 1005T438 1047Q438 1081 461 1123Q480 
1157 511 1193Q521 1131 531 1073T556 953L586 781Q611 639 631 571Q662 467 695 467H838V293ZM489 740L470 849Q383 
818 333 785T249 696Q270 687
+298 682T375 677Q435 677 489 740Z" />
+<glyph unicode="&#x629;" glyph-name="afii57417" horiz-adv-x="578" arabic-form="isolated" d="M468 1227L390 
1083L228 1169L303 1312L468 1227ZM238 1137L162 992L0 1076L74 1221L238 1137ZM556 588Q556 447 510 376Q439 266 
250 266Q177 266 129 295Q74 328
+74 389Q74 459 109 551Q141 629 174 708L159 712L220 881Q401 786 436 761Q556 677 556 588ZM469 510Q469 548 359 
611Q312 638 258 664Q213 615 204 603Q176 564 176 529Q176 478 204 450T281 421Q337 421 403 452T469 510Z" />
+<glyph unicode="&#x62a;" glyph-name="afii62765" horiz-adv-x="500" arabic-form="initial" d="M505 1281L427 
1137L265 1223L340 1366L505 1281ZM275 1191L199 1046L37 1130L111 1275L275 1191ZM570 293H0V467H497Q497 585 469 
647Q450 690 375 771L453 934Q525
+843 543 792Q570 715 570 537V293Z" />
+<glyph unicode="&#x62a;" glyph-name="afii62766" horiz-adv-x="500" arabic-form="medial" d="M505 1281L427 
1137L265 1223L340 1366L505 1281ZM275 1191L199 1046L37 1130L111 1275L275 1191ZM570 293H0V467H497Q497 585 469 
647Q450 690 375 771L453 934Q525
+843 543 792Q570 715 570 537V293Z" />
+<glyph unicode="&#x62a;" glyph-name="afii62767" horiz-adv-x="1461" arabic-form="terminal" d="M1061 1201L983 
1057L821 1143L896 1286L1061 1201ZM831 1111L755 966L593 1050L667 1195L831 1111ZM1531 293H577Q385 293 271 
360Q128 444 128 623Q128 716 170
+813Q185 848 242 946L272 927Q250 881 229 835Q200 764 200 708Q200 590 324 525Q435 467 605 467H1452V494Q1452 
606 1425 676T1333 797L1410 960Q1454 905 1463 891Q1531 779 1531 565V293Z" />
+<glyph unicode="&#x62a;" glyph-name="afii57418" horiz-adv-x="1461" arabic-form="isolated" d="M1061 1201L983 
1057L821 1143L896 1286L1061 1201ZM831 1111L755 966L593 1050L667 1195L831 1111ZM1531 293H577Q385 293 271 
360Q128 444 128 623Q128 716 170
+813Q185 848 242 946L272 927Q250 881 229 835Q200 764 200 708Q200 590 324 525Q435 467 605 467H1452V494Q1452 
606 1425 676T1333 797L1410 960Q1454 905 1463 891Q1531 779 1531 565V293Z" />
+<glyph unicode="&#x62b;" glyph-name="afii62768" horiz-adv-x="500" arabic-form="initial" d="M308 1459L231 
1313L71 1399L145 1545L308 1459ZM505 1281L427 1137L265 1223L340 1366L505 1281ZM275 1191L199 1046L37 1130L111 
1275L275 1191ZM570 293H0V467H497Q497
+585 469 647Q450 690 375 771L453 934Q525 843 543 792Q570 715 570 537V293Z" />
+<glyph unicode="&#x62b;" glyph-name="afii62769" horiz-adv-x="500" arabic-form="medial" d="M308 1459L231 
1313L71 1399L145 1545L308 1459ZM505 1281L427 1137L265 1223L340 1366L505 1281ZM275 1191L199 1046L37 1130L111 
1275L275 1191ZM570 293H0V467H497Q497
+585 469 647Q450 690 375 771L453 934Q525 843 543 792Q570 715 570 537V293Z" />
+<glyph unicode="&#x62b;" glyph-name="afii62770" horiz-adv-x="1461" arabic-form="terminal" d="M864 1379L787 
1233L627 1319L701 1465L864 1379ZM1061 1201L983 1057L821 1143L896 1286L1061 1201ZM831 1111L755 966L593 
1050L667 1195L831 1111ZM1531 293H577Q385
+293 271 360Q128 444 128 623Q128 716 170 813Q185 848 242 946L272 927Q250 881 229 835Q200 764 200 708Q200 590 
324 525Q435 467 605 467H1452V494Q1452 606 1425 676T1333 797L1410 960Q1454 905 1463 891Q1531 779 1531 
565V293Z" />
+<glyph unicode="&#x62b;" glyph-name="afii57419" horiz-adv-x="1461" arabic-form="isolated" d="M864 1379L787 
1233L627 1319L701 1465L864 1379ZM1061 1201L983 1057L821 1143L896 1286L1061 1201ZM831 1111L755 966L593 
1050L667 1195L831 1111ZM1531 293H577Q385
+293 271 360Q128 444 128 623Q128 716 170 813Q185 848 242 946L272 927Q250 881 229 835Q200 764 200 708Q200 590 
324 525Q435 467 605 467H1452V494Q1452 606 1425 676T1333 797L1410 960Q1454 905 1463 891Q1531 779 1531 
565V293Z" />
+<glyph unicode="&#x62c;" glyph-name="afii62771" horiz-adv-x="1085" arabic-form="initial" d="M1145 
293H0V467H805Q703 546 633 590Q546 645 474 670Q393 698 310 698Q259 698 207 691Q236 765 283 810Q351 875 455 
875Q557 875 696 775Q765 725 921 585Q1042
+476 1085 467H1145V293ZM636 76L561 -68L398 16L476 162L636 76Z" />
+<glyph unicode="&#x62c;" glyph-name="afii62772" horiz-adv-x="1085" arabic-form="medial" d="M1145 
293H0V467H805Q703 546 633 590Q546 645 474 670Q393 698 310 698Q259 698 207 691Q236 765 283 810Q351 875 455 
875Q557 875 696 775Q765 725 921 585Q1042
+476 1085 467H1145V293ZM636 76L561 -68L398 16L476 162L636 76Z" />
+<glyph unicode="&#x62c;" glyph-name="afii62773" horiz-adv-x="1077" arabic-form="terminal" d="M1147 
293H940Q819 293 768 338T717 487Q717 526 727 584Q731 606 738 642Q567 590 480 553Q320 485 232 399Q121 291 121 
153Q121 -62 345 -170Q540 -264 866
+-264H1050L1056 -275L830 -434H772Q556 -434 413 -394Q242 -346 154 -240Q54 -119 54 80Q54 251 139 379Q205 479 
332 562Q369 587 538 677Q498 682 454 685T373 689Q272 689 209 680Q188 677 78 653Q112 751 149 789Q232 873 409 
873Q506 873 619 855T809 836Q860
+836 908 840T1010 851L970 681Q929 676 877 667Q844 661 786 650L784 594Q784 512 834 484Q865 467 940 
467H1147V293ZM703 185L626 39L465 124L542 270L703 185Z" />
+<glyph unicode="&#x62c;" glyph-name="afii57420" horiz-adv-x="1153" arabic-form="isolated" d="M774 263L689 
112L532 202L609 347L774 263ZM484 696Q464 696 426 699T369 702Q305 702 225 690Q173 682 83 664Q123 777 158 
811Q233 885 410 885Q476 885 680
+857Q775 844 844 844Q873 844 929 851T1013 858L976 689Q765 653 617 607Q397 539 274 441Q121 319 121 153Q121 -62 
345 -170Q540 -264 866 -264H1050L1056 -275L830 -434H772Q556 -434 413 -394Q242 -346 154 -240Q54 -119 54 80Q54 
248 133 382Q193 484 308
+575Q343 603 484 696Z" />
+<glyph unicode="&#x62d;" glyph-name="afii62774" horiz-adv-x="1085" arabic-form="initial" d="M1145 
293H0V467H805Q703 546 633 590Q546 645 474 670Q393 698 310 698Q259 698 207 691Q236 765 283 810Q351 875 455 
875Q557 875 696 775Q765 725 921 585Q1042
+476 1085 467H1145V293Z" />
+<glyph unicode="&#x62d;" glyph-name="afii62775" horiz-adv-x="1085" arabic-form="medial" d="M1145 
293H0V467H805Q703 546 633 590Q546 645 474 670Q393 698 310 698Q259 698 207 691Q236 765 283 810Q351 875 455 
875Q557 875 696 775Q765 725 921 585Q1042
+476 1085 467H1145V293Z" />
+<glyph unicode="&#x62d;" glyph-name="afii62776" horiz-adv-x="1077" arabic-form="terminal" d="M1147 
293H940Q819 293 768 338T717 487Q717 526 727 584Q731 606 738 642Q567 590 480 553Q320 485 232 399Q121 291 121 
153Q121 -62 345 -170Q540 -264 866
+-264H1050L1056 -275L830 -434H772Q556 -434 413 -394Q242 -346 154 -240Q54 -119 54 80Q54 251 139 379Q205 479 
332 562Q369 587 538 677Q498 682 454 685T373 689Q272 689 209 680Q188 677 78 653Q112 751 149 789Q232 873 409 
873Q506 873 619 855T809 836Q860
+836 908 840T1010 851L970 681Q929 676 877 667Q844 661 786 650L784 594Q784 512 834 484Q865 467 940 
467H1147V293Z" />
+<glyph unicode="&#x62d;" glyph-name="afii57421" horiz-adv-x="1153" arabic-form="isolated" d="M484 696Q464 
696 426 699T369 702Q305 702 225 690Q173 682 83 664Q123 777 158 811Q233 885 410 885Q476 885 680 857Q775 844 
844 844Q873 844 929 851T1013
+858L976 689Q765 653 617 607Q397 539 274 441Q121 319 121 153Q121 -62 345 -170Q540 -264 866 -264H1050L1056 
-275L830 -434H772Q556 -434 413 -394Q242 -346 154 -240Q54 -119 54 80Q54 248 133 382Q193 484 308 575Q343 603 
484 696Z" />
+<glyph unicode="&#x62e;" glyph-name="afii62777" horiz-adv-x="1085" arabic-form="initial" d="M666 1224L590 
1079L428 1163L502 1309L666 1224ZM1145 293H0V467H805Q703 546 633 590Q546 645 474 670Q393 698 310 698Q259 698 
207 691Q236 765 283 810Q351
+875 455 875Q557 875 696 775Q765 725 921 585Q1042 476 1085 467H1145V293Z" />
+<glyph unicode="&#x62e;" glyph-name="afii62778" horiz-adv-x="1085" arabic-form="medial" d="M666 1224L590 
1079L428 1163L502 1309L666 1224ZM1145 293H0V467H805Q703 546 633 590Q546 645 474 670Q393 698 310 698Q259 698 
207 691Q236 765 283 810Q351
+875 455 875Q557 875 696 775Q765 725 921 585Q1042 476 1085 467H1145V293Z" />
+<glyph unicode="&#x62e;" glyph-name="afii62779" horiz-adv-x="1077" arabic-form="terminal" d="M680 1224L603 
1079L442 1163L517 1309L680 1224ZM1147 293H940Q819 293 768 338T717 487Q717 526 727 584Q731 606 738 642Q567 590 
480 553Q320 485 232 399Q121
+291 121 153Q121 -62 345 -170Q540 -264 866 -264H1050L1056 -275L830 -434H772Q556 -434 413 -394Q242 -346 154 
-240Q54 -119 54 80Q54 251 139 379Q205 479 332 562Q369 587 538 677Q498 682 454 685T373 689Q272 689 209 680Q188 
677 78 653Q112 751 149 789Q232
+873 409 873Q506 873 619 855T809 836Q860 836 908 840T1010 851L970 681Q929 676 877 667Q844 661 786 650L784 
594Q784 512 834 484Q865 467 940 467H1147V293Z" />
+<glyph unicode="&#x62e;" glyph-name="afii57422" horiz-adv-x="1153" arabic-form="isolated" d="M676 1224L599 
1079L438 1163L513 1309L676 1224ZM484 696Q464 696 426 699T369 702Q305 702 225 690Q173 682 83 664Q123 777 158 
811Q233 885 410 885Q476 885
+680 857Q775 844 844 844Q873 844 929 851T1013 858L976 689Q765 653 617 607Q397 539 274 441Q121 319 121 153Q121 
-62 345 -170Q540 -264 866 -264H1050L1056 -275L830 -434H772Q556 -434 413 -394Q242 -346 154 -240Q54 -119 54 
80Q54 248 133 382Q193 484
+308 575Q343 603 484 696Z" />
+<glyph unicode="&#x62f;" glyph-name="afii62780" horiz-adv-x="691" arabic-form="terminal" d="M761 293H313Q256 
293 211 326T165 404Q165 442 169 473T184 541H207Q218 500 247 482Q271 467 313 467H700Q700 646 650 755Q588 891 
443 936L458 1130Q631 1045
+703 859Q761 709 761 467V293Z" />
+<glyph unicode="&#x62f;" glyph-name="afii57423" horiz-adv-x="691" arabic-form="isolated" d="M761 293H313Q256 
293 211 326T165 404Q165 442 169 473T184 541H207Q218 500 247 482Q271 467 313 467H700Q700 646 650 755Q588 891 
443 936L458 1130Q631 1045
+703 859Q761 709 761 467V293Z" />
+<glyph unicode="&#x630;" glyph-name="afii62781" horiz-adv-x="691" arabic-form="terminal" d="M495 1469L417 
1324L257 1410L330 1555L495 1469ZM761 293H313Q256 293 211 326T165 404Q165 442 169 473T184 541H207Q218 500 247 
482Q271 467 313 467H700Q700
+646 650 755Q588 891 443 936L458 1130Q631 1045 703 859Q761 709 761 467V293Z" />
+<glyph unicode="&#x630;" glyph-name="afii57424" horiz-adv-x="691" arabic-form="isolated" d="M495 1469L417 
1324L257 1410L330 1555L495 1469ZM761 293H313Q256 293 211 326T165 404Q165 442 169 473T184 541H207Q218 500 247 
482Q271 467 313 467H700Q700
+646 650 755Q588 891 443 936L458 1130Q631 1045 703 859Q761 709 761 467V293Z" />
+<glyph unicode="&#x631;" glyph-name="afii62782" horiz-adv-x="1001" arabic-form="terminal" d="M1071 293Q1071 
183 977 65Q895 -39 773 -114Q657 -186 582 -186Q513 -186 433 -166Q372 -151 287 -119Q215 -92 144 -65L161 -25Q227 
-38 298 -51T428 -65Q556
+-65 695 17Q821 92 910 206T999 413Q999 492 953 579Q916 649 849 723L906 880Q988 804 1027 728Q1071 642 1071 
536V293Z" />
+<glyph unicode="&#x631;" glyph-name="afii57425" horiz-adv-x="1001" arabic-form="isolated" d="M1071 293Q1071 
183 977 65Q895 -39 773 -114Q657 -186 582 -186Q513 -186 433 -166Q372 -151 287 -119Q215 -92 144 -65L161 -25Q227 
-38 298 -51T428 -65Q556
+-65 695 17Q821 92 910 206T999 413Q999 492 953 579Q916 649 849 723L906 880Q988 804 1027 728Q1071 642 1071 
536V293Z" />
+<glyph unicode="&#x632;" glyph-name="afii62783" horiz-adv-x="1001" arabic-form="terminal" d="M921 1224L844 
1079L683 1163L758 1309L921 1224ZM1071 293Q1071 183 977 65Q895 -39 773 -114Q657 -186 582 -186Q513 -186 433 
-166Q372 -151 287 -119Q215 -92
+144 -65L161 -25Q227 -38 298 -51T428 -65Q556 -65 695 17Q821 92 910 206T999 413Q999 492 953 579Q916 649 849 
723L906 880Q988 804 1027 728Q1071 642 1071 536V293Z" />
+<glyph unicode="&#x632;" glyph-name="afii57426" horiz-adv-x="1001" arabic-form="isolated" d="M921 1224L844 
1079L683 1163L758 1309L921 1224ZM1071 293Q1071 183 977 65Q895 -39 773 -114Q657 -186 582 -186Q513 -186 433 
-166Q372 -151 287 -119Q215 -92
+144 -65L161 -25Q227 -38 298 -51T428 -65Q556 -65 695 17Q821 92 910 206T999 413Q999 492 953 579Q916 649 849 
723L906 880Q988 804 1027 728Q1071 642 1071 536V293Z" />
+<glyph unicode="&#x633;" glyph-name="afii62784" horiz-adv-x="1087" arabic-form="initial" d="M1157 
293H1080Q1016 293 970 310T886 360Q839 323 804 311Q753 293 664 293H599Q547 293 495 313Q461 326 411 356Q363 320 
323 307T193 293H0V467H193Q274 467
+309 481Q367 504 367 573Q367 602 364 631T353 696L394 756Q422 664 440 622Q472 549 510 512Q556 467 620 
467H687Q762 467 798 490Q838 516 838 573Q838 604 834 633T823 696L865 756L886 662Q913 551 952 508Q986 470 1044 
470Q1071 470 1087 486T1104 529Q1104
+585 1063 647Q1056 657 1014 712L1079 821Q1120 759 1135 714Q1157 646 1157 533V293Z" />
+<glyph unicode="&#x633;" glyph-name="afii62785" horiz-adv-x="1087" arabic-form="medial" d="M1157 
293H1080Q1016 293 970 310T886 360Q839 323 804 311Q753 293 664 293H599Q547 293 495 313Q461 326 411 356Q363 320 
323 307T193 293H0V467H193Q274 467
+309 481Q367 504 367 573Q367 602 364 631T353 696L394 756Q422 664 440 622Q472 549 510 512Q556 467 620 
467H687Q762 467 798 490Q838 516 838 573Q838 604 834 633T823 696L865 756L886 662Q913 551 952 508Q986 470 1044 
470Q1071 470 1087 486T1104 529Q1104
+585 1063 647Q1056 657 1014 712L1079 821Q1120 759 1135 714Q1157 646 1157 533V293Z" />
+<glyph unicode="&#x633;" glyph-name="afii62786" horiz-adv-x="1682" arabic-form="terminal" d="M1752 
293H1673Q1613 293 1568 309T1475 362Q1433 324 1400 311Q1353 293 1263 293H1140Q1140 201 1096 114Q1039 1 922 
-65Q775 -148 554 -148Q354 -148 248 -78Q132
+-1 132 158Q132 244 153 332T210 509Q232 563 286 675L326 657Q256 513 234 430T211 278Q211 154 299 90T552 25Q744 
25 895 92Q1083 175 1083 324Q1083 424 1046 514Q1017 585 964 650L1047 855Q1097 773 1115 710Q1140 621 1140 
467H1263Q1358 467 1398 496Q1433
+521 1433 573Q1433 602 1430 631T1419 696L1459 756L1475 659Q1497 561 1534 518Q1575 470 1650 470Q1673 470 1685 
484T1698 521Q1698 571 1667 628Q1644 670 1606 712L1673 821Q1720 744 1730 716Q1752 653 1752 533V293Z" />
+<glyph unicode="&#x633;" glyph-name="afii57427" horiz-adv-x="1682" arabic-form="isolated" d="M1752 
293H1673Q1613 293 1568 309T1475 362Q1433 324 1400 311Q1353 293 1263 293H1140Q1140 201 1096 114Q1039 1 922 
-65Q775 -148 554 -148Q354 -148 248 -78Q132
+-1 132 158Q132 244 153 332T210 509Q232 563 286 675L326 657Q256 513 234 430T211 278Q211 154 299 90T552 25Q744 
25 895 92Q1083 175 1083 324Q1083 424 1046 514Q1017 585 964 650L1047 855Q1097 773 1115 710Q1140 621 1140 
467H1263Q1358 467 1398 496Q1433
+521 1433 573Q1433 602 1430 631T1419 696L1459 756L1475 659Q1497 561 1534 518Q1575 470 1650 470Q1673 470 1685 
484T1698 521Q1698 571 1667 628Q1644 670 1606 712L1673 821Q1720 744 1730 716Q1752 653 1752 533V293Z" />
+<glyph unicode="&#x634;" glyph-name="afii62787" horiz-adv-x="1087" arabic-form="initial" d="M871 1379L794 
1233L634 1319L708 1465L871 1379ZM1068 1201L990 1057L828 1143L903 1286L1068 1201ZM838 1111L762 966L600 
1050L674 1195L838 1111ZM1157 293H1080Q1016
+293 970 310T886 360Q839 323 804 311Q753 293 664 293H599Q547 293 495 313Q461 326 411 356Q363 320 323 307T193 
293H0V467H193Q274 467 309 481Q367 504 367 573Q367 602 364 631T353 696L394 756Q422 664 440 622Q472 549 510 
512Q556 467 620 467H687Q762
+467 798 490Q838 516 838 573Q838 604 834 633T823 696L865 756L886 662Q913 551 952 508Q986 470 1044 470Q1071 
470 1087 486T1104 529Q1104 585 1063 647Q1056 657 1014 712L1079 821Q1120 759 1135 714Q1157 646 1157 533V293Z" 
/>
+<glyph unicode="&#x634;" glyph-name="afii62788" horiz-adv-x="1087" arabic-form="medial" d="M871 1379L794 
1233L634 1319L708 1465L871 1379ZM1068 1201L990 1057L828 1143L903 1286L1068 1201ZM838 1111L762 966L600 
1050L674 1195L838 1111ZM1157 293H1080Q1016
+293 970 310T886 360Q839 323 804 311Q753 293 664 293H599Q547 293 495 313Q461 326 411 356Q363 320 323 307T193 
293H0V467H193Q274 467 309 481Q367 504 367 573Q367 602 364 631T353 696L394 756Q422 664 440 622Q472 549 510 
512Q556 467 620 467H687Q762
+467 798 490Q838 516 838 573Q838 604 834 633T823 696L865 756L886 662Q913 551 952 508Q986 470 1044 470Q1071 
470 1087 486T1104 529Q1104 585 1063 647Q1056 657 1014 712L1079 821Q1120 759 1135 714Q1157 646 1157 533V293Z" 
/>
+<glyph unicode="&#x634;" glyph-name="afii62789" horiz-adv-x="1682" arabic-form="terminal" d="M1476 1379L1399 
1233L1239 1319L1313 1465L1476 1379ZM1673 1201L1595 1057L1433 1143L1508 1286L1673 1201ZM1443 1111L1367 
966L1205 1050L1279 1195L1443 1111ZM1752
+293H1673Q1613 293 1568 309T1475 362Q1433 324 1400 311Q1353 293 1263 293H1140Q1140 201 1096 114Q1039 1 922 
-65Q775 -148 554 -148Q354 -148 248 -78Q132 -1 132 158Q132 244 153 332T210 509Q232 563 286 675L326 657Q256 513 
234 430T211 278Q211 154 299
+90T552 25Q744 25 895 92Q1083 175 1083 324Q1083 424 1046 514Q1017 585 964 650L1047 855Q1097 773 1115 710Q1140 
621 1140 467H1263Q1358 467 1398 496Q1433 521 1433 573Q1433 602 1430 631T1419 696L1459 756L1475 659Q1497 561 
1534 518Q1575 470 1650 470Q1673
+470 1685 484T1698 521Q1698 571 1667 628Q1644 670 1606 712L1673 821Q1720 744 1730 716Q1752 653 1752 533V293Z" 
/>
+<glyph unicode="&#x634;" glyph-name="afii57428" horiz-adv-x="1682" arabic-form="isolated" d="M1476 1379L1399 
1233L1239 1319L1313 1465L1476 1379ZM1673 1201L1595 1057L1433 1143L1508 1286L1673 1201ZM1443 1111L1367 
966L1205 1050L1279 1195L1443 1111ZM1752
+293H1673Q1613 293 1568 309T1475 362Q1433 324 1400 311Q1353 293 1263 293H1140Q1140 201 1096 114Q1039 1 922 
-65Q775 -148 554 -148Q354 -148 248 -78Q132 -1 132 158Q132 244 153 332T210 509Q232 563 286 675L326 657Q256 513 
234 430T211 278Q211 154 299
+90T552 25Q744 25 895 92Q1083 175 1083 324Q1083 424 1046 514Q1017 585 964 650L1047 855Q1097 773 1115 710Q1140 
621 1140 467H1263Q1358 467 1398 496Q1433 521 1433 573Q1433 602 1430 631T1419 696L1459 756L1475 659Q1497 561 
1534 518Q1575 470 1650 470Q1673
+470 1685 484T1698 521Q1698 571 1667 628Q1644 670 1606 712L1673 821Q1720 744 1730 716Q1752 653 1752 533V293Z" 
/>
+<glyph unicode="&#x635;" glyph-name="afii62790" horiz-adv-x="1733" arabic-form="initial" d="M1803 
293H601Q547 293 498 311Q461 325 411 356Q369 320 327 307T193 293H0V467H193Q274 467 309 481Q367 504 367 573Q367 
602 364 631T353 696L394 756Q429 620
+490 546Q555 467 643 467Q727 467 840 505Q962 546 1050 609Q1193 711 1225 731Q1306 783 1372 805Q1446 830 1534 
830Q1670 830 1739 751Q1803 678 1803 546V293ZM1640 544Q1640 593 1579 620T1437 648Q1337 648 1195 581Q1082 524 
970 467H1431Q1540 467 1590
+486T1640 544Z" />
+<glyph unicode="&#x635;" glyph-name="afii62791" horiz-adv-x="1733" arabic-form="medial" d="M1803 293H601Q547 
293 498 311Q461 325 411 356Q369 320 327 307T193 293H0V467H193Q274 467 309 481Q367 504 367 573Q367 602 364 
631T353 696L394 756Q429 620
+490 546Q555 467 643 467Q727 467 840 505Q962 546 1050 609Q1193 711 1225 731Q1306 783 1372 805Q1446 830 1534 
830Q1670 830 1739 751Q1803 678 1803 546V293ZM1640 544Q1640 593 1579 620T1437 648Q1337 648 1195 581Q1082 524 
970 467H1431Q1540 467 1590
+486T1640 544Z" />
+<glyph unicode="&#x635;" glyph-name="afii62792" horiz-adv-x="2249" arabic-form="terminal" d="M2319 
293H1131Q1101 85 987 -19Q845 -148 554 -148Q354 -148 248 -78Q132 -1 132 158Q132 244 153 332T210 509Q232 563 
286 675L326 657Q256 513 234 430T211
+278Q211 154 299 90T552 25Q744 25 895 92Q1083 175 1083 324Q1083 424 1046 514Q1017 585 964 650L1047 855Q1097 
773 1115 710Q1140 621 1140 467H1158Q1277 467 1379 505Q1467 538 1564 609Q1712 712 1741 731Q1823 783 1888 
805Q1962 830 2051 830Q2188 830
+2256 751Q2319 678 2319 546V293ZM2157 544Q2157 593 2096 620T1952 648Q1880 648 1791 616Q1728 593 1631 543Q1558 
505 1486 467H1947Q2043 467 2100 486T2157 544Z" />
+<glyph unicode="&#x635;" glyph-name="afii57429" horiz-adv-x="2249" arabic-form="isolated" d="M2319 
293H1131Q1101 85 987 -19Q845 -148 554 -148Q354 -148 248 -78Q132 -1 132 158Q132 244 153 332T210 509Q232 563 
286 675L326 657Q256 513 234 430T211
+278Q211 154 299 90T552 25Q744 25 895 92Q1083 175 1083 324Q1083 424 1046 514Q1017 585 964 650L1047 855Q1097 
773 1115 710Q1140 621 1140 467H1158Q1277 467 1379 505Q1467 538 1564 609Q1712 712 1741 731Q1823 783 1888 
805Q1962 830 2051 830Q2188 830
+2256 751Q2319 678 2319 546V293ZM2157 544Q2157 593 2096 620T1952 648Q1880 648 1791 616Q1728 593 1631 543Q1558 
505 1486 467H1947Q2043 467 2100 486T2157 544Z" />
+<glyph unicode="&#x636;" glyph-name="afii62793" horiz-adv-x="1733" arabic-form="initial" d="M1167 1124L1091 
979L929 1063L1003 1209L1167 1124ZM1803 293H601Q547 293 498 311Q461 325 411 356Q369 320 327 307T193 
293H0V467H193Q274 467 309 481Q367
+504 367 573Q367 602 364 631T353 696L394 756Q429 620 490 546Q555 467 643 467Q727 467 840 505Q962 546 1050 
609Q1193 711 1225 731Q1306 783 1372 805Q1446 830 1534 830Q1670 830 1739 751Q1803 678 1803 546V293ZM1640 
544Q1640 593 1579 620T1437 648Q1337
+648 1195 581Q1082 524 970 467H1431Q1540 467 1590 486T1640 544Z" />
+<glyph unicode="&#x636;" glyph-name="afii62794" horiz-adv-x="1733" arabic-form="medial" d="M1167 1124L1091 
979L929 1063L1003 1209L1167 1124ZM1803 293H601Q547 293 498 311Q461 325 411 356Q369 320 327 307T193 
293H0V467H193Q274 467 309 481Q367 504
+367 573Q367 602 364 631T353 696L394 756Q429 620 490 546Q555 467 643 467Q727 467 840 505Q962 546 1050 
609Q1193 711 1225 731Q1306 783 1372 805Q1446 830 1534 830Q1670 830 1739 751Q1803 678 1803 546V293ZM1640 
544Q1640 593 1579 620T1437 648Q1337
+648 1195 581Q1082 524 970 467H1431Q1540 467 1590 486T1640 544Z" />
+<glyph unicode="&#x636;" glyph-name="afii62795" horiz-adv-x="2249" arabic-form="terminal" d="M1653 1124L1577 
979L1415 1063L1489 1209L1653 1124ZM2319 293H1131Q1101 85 987 -19Q845 -148 554 -148Q354 -148 248 -78Q132 -1 
132 158Q132 244 153 332T210
+509Q232 563 286 675L326 657Q256 513 234 430T211 278Q211 154 299 90T552 25Q744 25 895 92Q1083 175 1083 
324Q1083 424 1046 514Q1017 585 964 650L1047 855Q1097 773 1115 710Q1140 621 1140 467H1158Q1277 467 1379 
505Q1467 538 1564 609Q1712 712 1741
+731Q1823 783 1888 805Q1962 830 2051 830Q2188 830 2256 751Q2319 678 2319 546V293ZM2157 544Q2157 593 2096 
620T1952 648Q1880 648 1791 616Q1728 593 1631 543Q1558 505 1486 467H1947Q2043 467 2100 486T2157 544Z" />
+<glyph unicode="&#x636;" glyph-name="afii57430" horiz-adv-x="2249" arabic-form="isolated" d="M1653 1124L1577 
979L1415 1063L1489 1209L1653 1124ZM2319 293H1131Q1101 85 987 -19Q845 -148 554 -148Q354 -148 248 -78Q132 -1 
132 158Q132 244 153 332T210
+509Q232 563 286 675L326 657Q256 513 234 430T211 278Q211 154 299 90T552 25Q744 25 895 92Q1083 175 1083 
324Q1083 424 1046 514Q1017 585 964 650L1047 855Q1097 773 1115 710Q1140 621 1140 467H1158Q1277 467 1379 
505Q1467 538 1564 609Q1712 712 1741
+731Q1823 783 1888 805Q1962 830 2051 830Q2188 830 2256 751Q2319 678 2319 546V293ZM2157 544Q2157 593 2096 
620T1952 648Q1880 648 1791 616Q1728 593 1631 543Q1558 505 1486 467H1947Q2043 467 2100 486T2157 544Z" />
+<glyph unicode="&#x637;" glyph-name="afii62796" horiz-adv-x="1191" arabic-form="initial" d="M1261 
293H0V467L153 468Q221 468 280 486Q348 507 434 560Q452 604 463 654T474 752Q474 859 454 988Q439 1082 409 
1209Q393 1275 367 1370L305 1401Q312 1461
+325 1517T363 1625Q379 1578 436 1552Q483 1531 556 1524Q546 1421 541 1393T522 1324Q515 1325 485 1334L472 
1338Q507 1221 529 1098T552 890Q552 819 538 732Q533 701 520 636Q695 737 744 760Q892 830 998 830Q1133 830 1200 
751Q1261 679 1261 546V293ZM1103
+544Q1103 595 1051 621T900 648Q827 648 732 616Q654 590 566 544Q501 510 432 467H867Q1103 467 1103 544Z" />
+<glyph unicode="&#x637;" glyph-name="afii62797" horiz-adv-x="1191" arabic-form="medial" d="M1261 
293H0V467L153 468Q221 468 280 486Q348 507 434 560Q452 604 463 654T474 752Q474 859 454 988Q439 1082 409 
1209Q393 1275 367 1370L305 1401Q312 1461
+325 1517T363 1625Q379 1578 436 1552Q483 1531 556 1524Q546 1421 541 1393T522 1324Q515 1325 485 1334L472 
1338Q507 1221 529 1098T552 890Q552 819 538 732Q533 701 520 636Q695 737 744 760Q892 830 998 830Q1133 830 1200 
751Q1261 679 1261 546V293ZM1103
+544Q1103 595 1051 621T900 648Q827 648 732 616Q654 590 566 544Q501 510 432 467H867Q1103 467 1103 544Z" />
+<glyph unicode="&#x637;" glyph-name="afii62798" horiz-adv-x="1191" arabic-form="terminal" d="M1261 
293H0V467L153 468Q221 468 280 486Q348 507 434 560Q452 604 463 654T474 752Q474 859 454 988Q439 1082 409 
1209Q393 1275 367 1370L305 1401Q312 1461
+325 1517T363 1625Q379 1578 436 1552Q483 1531 556 1524Q546 1421 541 1393T522 1324Q515 1325 485 1334L472 
1338Q507 1221 529 1098T552 890Q552 819 538 732Q533 701 520 636Q695 737 744 760Q892 830 998 830Q1133 830 1200 
751Q1261 679 1261 546V293ZM1103
+544Q1103 595 1051 621T900 648Q827 648 732 616Q654 590 566 544Q501 510 432 467H867Q1103 467 1103 544Z" />
+<glyph unicode="&#x637;" glyph-name="afii57431" horiz-adv-x="1191" arabic-form="isolated" d="M1261 
293H0V467L153 468Q221 468 280 486Q348 507 434 560Q452 604 463 654T474 752Q474 859 454 988Q439 1082 409 
1209Q393 1275 367 1370L305 1401Q312 1461
+325 1517T363 1625Q379 1578 436 1552Q483 1531 556 1524Q546 1421 541 1393T522 1324Q515 1325 485 1334L472 
1338Q507 1221 529 1098T552 890Q552 819 538 732Q533 701 520 636Q695 737 744 760Q892 830 998 830Q1133 830 1200 
751Q1261 679 1261 546V293ZM1103
+544Q1103 595 1051 621T900 648Q827 648 732 616Q654 590 566 544Q501 510 432 467H867Q1103 467 1103 544Z" />
+<glyph unicode="&#x638;" glyph-name="afii62799" horiz-adv-x="1191" arabic-form="initial" d="M989 1224L912 
1079L750 1163L824 1309L989 1224ZM1261 293H0V467L153 468Q221 468 280 486Q348 507 434 560Q452 604 463 654T474 
752Q474 859 454 988Q439 1082
+409 1209Q393 1275 367 1370L305 1401Q312 1461 325 1517T363 1625Q379 1578 436 1552Q483 1531 556 1524Q546 1421 
541 1393T522 1324Q515 1325 485 1334L472 1338Q507 1221 529 1098T552 890Q552 819 538 732Q533 701 520 636Q695 
737 744 760Q892 830 998 830Q1133
+830 1200 751Q1261 679 1261 546V293ZM1103 544Q1103 595 1051 621T900 648Q827 648 732 616Q654 590 566 544Q501 
510 432 467H867Q1103 467 1103 544Z" />
+<glyph unicode="&#x638;" glyph-name="afii62800" horiz-adv-x="1191" arabic-form="medial" d="M989 1224L912 
1079L750 1163L824 1309L989 1224ZM1261 293H0V467L153 468Q221 468 280 486Q348 507 434 560Q452 604 463 654T474 
752Q474 859 454 988Q439 1082
+409 1209Q393 1275 367 1370L305 1401Q312 1461 325 1517T363 1625Q379 1578 436 1552Q483 1531 556 1524Q546 1421 
541 1393T522 1324Q515 1325 485 1334L472 1338Q507 1221 529 1098T552 890Q552 819 538 732Q533 701 520 636Q695 
737 744 760Q892 830 998 830Q1133
+830 1200 751Q1261 679 1261 546V293ZM1103 544Q1103 595 1051 621T900 648Q827 648 732 616Q654 590 566 544Q501 
510 432 467H867Q1103 467 1103 544Z" />
+<glyph unicode="&#x638;" glyph-name="afii62801" horiz-adv-x="1191" arabic-form="terminal" d="M989 1224L912 
1079L750 1163L824 1309L989 1224ZM1261 293H0V467L153 468Q221 468 280 486Q348 507 434 560Q452 604 463 654T474 
752Q474 859 454 988Q439 1082
+409 1209Q393 1275 367 1370L305 1401Q312 1461 325 1517T363 1625Q379 1578 436 1552Q483 1531 556 1524Q546 1421 
541 1393T522 1324Q515 1325 485 1334L472 1338Q507 1221 529 1098T552 890Q552 819 538 732Q533 701 520 636Q695 
737 744 760Q892 830 998 830Q1133
+830 1200 751Q1261 679 1261 546V293ZM1103 544Q1103 595 1051 621T900 648Q827 648 732 616Q654 590 566 544Q501 
510 432 467H867Q1103 467 1103 544Z" />
+<glyph unicode="&#x638;" glyph-name="afii57432" horiz-adv-x="1191" arabic-form="isolated" d="M989 1224L912 
1079L750 1163L824 1309L989 1224ZM1261 293H0V467L153 468Q221 468 280 486Q348 507 434 560Q452 604 463 654T474 
752Q474 859 454 988Q439 1082
+409 1209Q393 1275 367 1370L305 1401Q312 1461 325 1517T363 1625Q379 1578 436 1552Q483 1531 556 1524Q546 1421 
541 1393T522 1324Q515 1325 485 1334L472 1338Q507 1221 529 1098T552 890Q552 819 538 732Q533 701 520 636Q695 
737 744 760Q892 830 998 830Q1133
+830 1200 751Q1261 679 1261 546V293ZM1103 544Q1103 595 1051 621T900 648Q827 648 732 616Q654 590 566 544Q501 
510 432 467H867Q1103 467 1103 544Z" />
+<glyph unicode="&#x639;" glyph-name="afii62802" horiz-adv-x="1077" arabic-form="initial" d="M1033 605L964 
423Q813 368 615 331T249 293H0V467H240Q211 514 193 573T175 689Q175 807 273 887T527 967Q650 967 730 907Q764 882 
845 784L826 767Q757 786 702
+795T588 805Q450 805 372 775T293 694Q293 645 342 585T470 477Q634 502 739 525T1033 605Z" />
+<glyph unicode="&#x639;" glyph-name="afii62803" horiz-adv-x="807" arabic-form="medial" d="M877 293H730Q665 
293 598 324Q518 361 482 427Q415 367 329 334Q224 293 90 293H0V467H90Q174 467 246 485Q328 506 407 552L365 
606Q333 644 293 644Q275 644 261
+638T230 609H209V668Q209 778 267 819Q320 856 451 856Q564 856 635 826Q728 787 728 706Q728 663 691 617Q664 583 
592 523Q608 499 653 483T730 467H877V293Z" />
+<glyph unicode="&#x639;" glyph-name="afii62804" horiz-adv-x="922" arabic-form="terminal" d="M995 -274L793 
-434Q606 -434 499 -417Q305 -386 195 -297Q54 -182 54 25Q54 162 107 279Q149 372 233 466Q273 511 380 611Q370 645 
352 661T312 677Q286 677 261
+642H244Q265 747 288 787Q344 883 472 883Q558 883 620 841Q689 794 689 719Q689 670 651 636Q616 608 594 590Q650 
523 701 495T830 467H992V293H830Q677 293 593 339T457 491Q384 444 325 394Q245 326 200 261Q144 180 144 105Q144 
-64 313 -157Q443 -228 670
+-253Q790 -266 991 -266L995 -274Z" />
+<glyph unicode="&#x639;" glyph-name="afii57433" horiz-adv-x="1114" arabic-form="isolated" d="M1056 -267L803 
-434Q595 -434 481 -417Q284 -388 177 -301Q42 -192 42 12Q42 136 80 235Q111 316 169 388Q197 422 267 491Q171 539 
134 574Q52 651 52 769Q52
+875 141 977Q243 1094 388 1094Q453 1094 526 1056Q575 1031 649 973Q551 973 448 960Q315 943 233 911Q133 872 133 
815Q133 754 248 699Q345 653 468 634Q568 688 663 726Q769 768 883 796L841 640Q633 559 541 516Q355 428 256 
336Q129 218 129 83Q129 -58 235
+-139Q327 -209 506 -238Q648 -261 868 -261Q915 -261 962 -260T1056 -258V-267Z" />
+<glyph unicode="&#x63a;" glyph-name="afii62805" horiz-adv-x="1077" arabic-form="initial" d="M613 1224L538 
1079L375 1163L451 1309L613 1224ZM1033 605L964 423Q813 368 615 331T249 293H0V467H240Q211 514 193 573T175 
689Q175 807 273 887T527 967Q650
+967 730 907Q764 882 845 784L826 767Q757 786 702 795T588 805Q450 805 372 775T293 694Q293 645 342 585T470 
477Q634 502 739 525T1033 605Z" />
+<glyph unicode="&#x63a;" glyph-name="afii62806" horiz-adv-x="807" arabic-form="medial" d="M536 1224L460 
1079L298 1163L373 1309L536 1224ZM877 293H730Q665 293 598 324Q518 361 482 427Q415 367 329 334Q224 293 90 
293H0V467H90Q174 467 246 485Q328
+506 407 552L365 606Q333 644 293 644Q275 644 261 638T230 609H209V668Q209 778 267 819Q320 856 451 856Q564 856 
635 826Q728 787 728 706Q728 663 691 617Q664 583 592 523Q608 499 653 483T730 467H877V293Z" />
+<glyph unicode="&#x63a;" glyph-name="afii62807" horiz-adv-x="922" arabic-form="terminal" d="M599 1224L523 
1079L361 1163L436 1309L599 1224ZM995 -274L793 -434Q606 -434 499 -417Q305 -386 195 -297Q54 -182 54 25Q54 162 
107 279Q149 372 233 466Q273
+511 380 611Q370 645 352 661T312 677Q286 677 261 642H244Q265 747 288 787Q344 883 472 883Q558 883 620 841Q689 
794 689 719Q689 670 651 636Q616 608 594 590Q650 523 701 495T830 467H992V293H830Q677 293 593 339T457 491Q384 
444 325 394Q245 326 200 261Q144
+180 144 105Q144 -64 313 -157Q443 -228 670 -253Q790 -266 991 -266L995 -274Z" />
+<glyph unicode="&#x63a;" glyph-name="afii57434" horiz-adv-x="1114" arabic-form="isolated" d="M498 1424L417 
1280L261 1363L342 1509L498 1424ZM1056 -267L803 -434Q595 -434 481 -417Q284 -388 177 -301Q42 -192 42 12Q42 136 
80 235Q111 316 169 388Q197
+422 267 491Q171 539 134 574Q52 651 52 769Q52 875 141 977Q243 1094 388 1094Q453 1094 526 1056Q575 1031 649 
973Q551 973 448 960Q315 943 233 911Q133 872 133 815Q133 754 248 699Q345 653 468 634Q568 688 663 726Q769 768 
883 796L841 640Q633 559 541
+516Q355 428 256 336Q129 218 129 83Q129 -58 235 -139Q327 -209 506 -238Q648 -261 868 -261Q915 -261 962 
-260T1056 -258V-267Z" />
+<glyph unicode="&#x640;" glyph-name="afii57440" horiz-adv-x="424" d="M494 293H0V467H494V293Z" />
+<glyph unicode="&#x641;" glyph-name="afii62808" horiz-adv-x="548" arabic-form="initial" d="M485 1401L408 
1255L247 1341L321 1487L485 1401ZM618 293H0V467H533Q533 556 512 634Q460 617 432 610Q386 598 351 598Q278 598 
232 635Q179 677 179 756Q179 895
+229 999Q285 1115 375 1115Q497 1115 563 924Q618 766 618 553V293ZM455 813Q441 849 410 886Q368 936 330 936Q303 
936 286 914T268 860Q268 780 356 780Q379 780 405 789T455 813Z" />
+<glyph unicode="&#x641;" glyph-name="afii62809" horiz-adv-x="538" arabic-form="medial" d="M521 1355L433 
1211L293 1307L376 1447L521 1355ZM608 293H0V467H343Q405 467 448 471T543 491Q371 516 320 538Q205 588 205 
708Q205 813 260 906Q322 1011 411 1011Q513
+1011 566 881Q608 778 608 638V293ZM518 642Q495 722 474 761Q433 836 375 836Q347 836 327 814T307 762Q307 686 
386 660Q414 651 518 642Z" />
+<glyph unicode="&#x641;" glyph-name="afii62810" horiz-adv-x="1615" arabic-form="terminal" d="M1486 1309L1404 
1161L1242 1249L1325 1395L1486 1309ZM1685 293H768Q557 293 428 319Q274 350 195 422Q109 500 109 634Q109 723 160 
842Q197 923 215 963L255
+940Q212 853 198 808T184 725Q184 593 328 530T786 467H1523Q1406 499 1351 541Q1288 589 1288 660Q1288 753 1350 
859Q1420 978 1505 978Q1604 978 1648 861Q1685 763 1685 582V293ZM1581 596Q1581 683 1562 730Q1539 786 1492 
786Q1458 786 1442 766T1425 708Q1425
+659 1466 634Q1496 616 1581 596Z" />
+<glyph unicode="&#x641;" glyph-name="afii57441" horiz-adv-x="1615" arabic-form="isolated" d="M1486 1309L1404 
1161L1242 1249L1325 1395L1486 1309ZM1685 293H768Q557 293 428 319Q274 350 195 422Q109 500 109 634Q109 723 160 
842Q197 923 215 963L255
+940Q212 853 198 808T184 725Q184 593 328 530T786 467H1523Q1406 499 1351 541Q1288 589 1288 660Q1288 753 1350 
859Q1420 978 1505 978Q1604 978 1648 861Q1685 763 1685 582V293ZM1581 596Q1581 683 1562 730Q1539 786 1492 
786Q1458 786 1442 766T1425 708Q1425
+659 1466 634Q1496 616 1581 596Z" />
+<glyph unicode="&#x642;" glyph-name="afii62811" horiz-adv-x="548" arabic-form="initial" d="M586 1431L508 
1287L346 1373L421 1516L586 1431ZM356 1341L280 1196L118 1280L192 1425L356 1341ZM618 293H0V467H533Q533 556 512 
634Q460 617 432 610Q386 598
+351 598Q278 598 232 635Q179 677 179 756Q179 895 229 999Q285 1115 375 1115Q497 1115 563 924Q618 766 618 
553V293ZM455 813Q441 849 410 886Q368 936 330 936Q303 936 286 914T268 860Q268 780 356 780Q379 780 405 789T455 
813Z" />
+<glyph unicode="&#x642;" glyph-name="afii62812" horiz-adv-x="538" arabic-form="medial" d="M565 1407L480 
1273L355 1355L441 1488L565 1407ZM336 1347L257 1211L134 1292L217 1426L336 1347ZM608 293H0V467H343Q405 467 448 
471T543 491Q371 516 320 538Q205
+588 205 708Q205 813 260 906Q322 1011 411 1011Q513 1011 566 881Q608 778 608 638V293ZM518 642Q495 722 474 
761Q433 836 375 836Q347 836 327 814T307 762Q307 686 386 660Q414 651 518 642Z" />
+<glyph unicode="&#x642;" glyph-name="afii62813" horiz-adv-x="1191" arabic-form="terminal" d="M1144 1314L1066 
1170L904 1256L979 1399L1144 1314ZM914 1224L838 1079L676 1163L750 1308L914 1224ZM1261 242Q1261 44 1071 -60Q900 
-153 617 -153Q394 -153
+272 -73Q140 14 140 185Q140 303 178 433Q213 553 278 673L320 655Q291 585 271 531Q244 457 232 404Q217 337 217 
274Q217 144 327 82Q429 25 628 25Q841 25 1001 95Q1186 176 1186 314Q1186 365 1183 387T1170 433Q1132 415 1094 
405T1016 394Q928 394 873 434Q806
+482 806 579Q806 692 864 795Q929 911 1018 911Q1135 911 1203 751Q1261 615 1261 436V242ZM1102 613Q1076 675 1065 
690Q1037 731 995 731Q947 731 925 708T902 650Q902 619 931 601T997 583Q1023 583 1045 590T1102 613Z" />
+<glyph unicode="&#x642;" glyph-name="afii57442" horiz-adv-x="1191" arabic-form="isolated" d="M1144 1314L1066 
1170L904 1256L979 1399L1144 1314ZM914 1224L838 1079L676 1163L750 1308L914 1224ZM1261 242Q1261 44 1071 -60Q900 
-153 617 -153Q394 -153
+272 -73Q140 14 140 185Q140 303 178 433Q213 553 278 673L320 655Q291 585 271 531Q244 457 232 404Q217 337 217 
274Q217 144 327 82Q429 25 628 25Q841 25 1001 95Q1186 176 1186 314Q1186 365 1183 387T1170 433Q1132 415 1094 
405T1016 394Q928 394 873 434Q806
+482 806 579Q806 692 864 795Q929 911 1018 911Q1135 911 1203 751Q1261 615 1261 436V242ZM1102 613Q1076 675 1065 
690Q1037 731 995 731Q947 731 925 708T902 650Q902 619 931 601T997 583Q1023 583 1045 590T1102 613Z" />
+<glyph unicode="&#x643;" glyph-name="afii57410" horiz-adv-x="807" arabic-form="initial" d="M877 
293H0V467H761Q691 573 601 651T358 821L325 790L207 880Q145 932 145 961Q145 1133 229 1231Q307 1321 498 1393L780 
1503V1330L571 1260Q446 1219 369 1185Q271
+1142 271 1119Q271 1096 335 1048Q375 1018 416 988Q568 873 681 747Q803 612 877 467V293Z" />
+<glyph unicode="&#x643;" glyph-name="afii62815" horiz-adv-x="807" arabic-form="medial" d="M877 
293H0V467H761Q691 573 601 651T358 821L325 790L207 880Q145 932 145 961Q145 1133 229 1231Q307 1321 498 1393L780 
1503V1330L571 1260Q446 1219 369 1185Q271
+1142 271 1119Q271 1096 335 1048Q375 1018 416 988Q568 873 681 747Q803 612 877 467V293Z" />
+<glyph unicode="&#x643;" glyph-name="afii62816" horiz-adv-x="1231" arabic-form="terminal" d="M935 904Q935 
795 862 735T657 675Q596 675 522 692Q477 702 390 729L407 750Q431 750 465 747Q544 740 563 740Q678 740 760 
773T843 853Q843 874 826 889T786
+904Q760 904 746 903L676 898Q651 898 634 911T616 955Q616 1039 703 1156T887 1305L868 1174Q799 1155 762 
1133Q702 1098 702 1049Q702 1032 718 1025T755 1017Q773 1017 787 1019L841 1026Q893 1026 914 999T935 904ZM1301 
293H563Q324 293 223 350Q115 411
+115 558Q115 646 162 758Q175 789 217 873L251 853Q217 775 207 733T196 653Q196 544 311 500Q397 467 563 
467H1200L1075 1315L1023 1340Q1023 1409 1035 1469T1071 1587L1086 1576Q1086 1518 1158 1489L1266 1449Q1266 1403 
1255 1346T1231 1257L1183 1273L1301
+489V293Z" />
+<glyph unicode="&#x643;" glyph-name="afii57443" horiz-adv-x="1231" arabic-form="isolated" d="M935 904Q935 
795 862 735T657 675Q596 675 522 692Q477 702 390 729L407 750Q431 750 465 747Q544 740 563 740Q678 740 760 
773T843 853Q843 874 826 889T786
+904Q760 904 746 903L676 898Q651 898 634 911T616 955Q616 1039 703 1156T887 1305L868 1174Q799 1155 762 
1133Q702 1098 702 1049Q702 1032 718 1025T755 1017Q773 1017 787 1019L841 1026Q893 1026 914 999T935 904ZM1301 
293H563Q324 293 223 350Q115 411
+115 558Q115 646 162 758Q175 789 217 873L251 853Q217 775 207 733T196 653Q196 544 311 500Q397 467 563 
467H1200L1075 1315L1023 1340Q1023 1409 1035 1469T1071 1587L1086 1576Q1086 1518 1158 1489L1266 1449Q1266 1403 
1255 1346T1231 1257L1183 1273L1301
+489V293Z" />
+<glyph unicode="&#x644;" glyph-name="afii62817" horiz-adv-x="424" arabic-form="initial" d="M494 
293H0V467H393L274 1315L222 1340Q222 1409 234 1469T270 1587L285 1576Q285 1518 350 1489Q400 1469 451 1449Q451 
1399 443 1342T424 1257L376 1273L494 489V293Z" />
+<glyph unicode="&#x644;" glyph-name="afii62818" horiz-adv-x="424" arabic-form="medial" d="M494 
293H0V467H393L274 1315L222 1340Q222 1409 234 1469T270 1587L285 1576Q285 1518 350 1489Q400 1469 451 1449Q451 
1399 443 1342T424 1257L376 1273L494 489V293Z" />
+<glyph unicode="&#x644;" glyph-name="afii62819" horiz-adv-x="1037" arabic-form="terminal" d="M1107 417Q1107 
257 1032 163Q965 80 835 44Q725 14 556 14Q363 14 257 85Q141 163 141 318Q141 404 166 497Q187 576 230 670Q261 
738 314 834L346 815Q309 748
+284 695Q251 624 235 568Q216 500 216 436Q216 313 305 250T554 187Q723 187 867 245Q1025 309 1025 398Q1025 495 
994 727Q970 905 935 1125L902 1319L856 1343Q856 1477 911 1587H928Q932 1549 942 1531T975 1503Q1006 1490 1043 
1472Q1070 1459 1090 1449Q1090
+1379 1085 1347T1065 1257L1008 1275Q1010 1253 1037 1074Q1068 865 1083 735Q1107 527 1107 417Z" />
+<glyph unicode="&#x644;" glyph-name="afii57444" horiz-adv-x="1037" arabic-form="isolated" d="M1107 417Q1107 
257 1032 163Q965 80 835 44Q725 14 556 14Q363 14 257 85Q141 163 141 318Q141 404 166 497Q187 576 230 670Q261 
738 314 834L346 815Q309 748
+284 695Q251 624 235 568Q216 500 216 436Q216 313 305 250T554 187Q723 187 867 245Q1025 309 1025 398Q1025 495 
994 727Q970 905 935 1125L902 1319L856 1343Q856 1477 911 1587H928Q932 1549 942 1531T975 1503Q1006 1490 1043 
1472Q1070 1459 1090 1449Q1090
+1379 1085 1347T1065 1257L1008 1275Q1010 1253 1037 1074Q1068 865 1083 735Q1107 527 1107 417Z" />
+<glyph unicode="&#x645;" glyph-name="afii62820" horiz-adv-x="807" arabic-form="initial" d="M877 293H773Q706 
293 622 323Q525 358 451 419Q393 348 333 321T156 293H0V467H153Q244 467 315 513Q370 549 415 614Q476 702 565 
767Q645 825 712 841Q781 736
+822 652Q877 538 877 467V293ZM762 490Q749 548 722 604Q699 651 661 701Q613 689 580 656Q558 635 528 585Q564 546 
629 515T753 477L762 490Z" />
+<glyph unicode="&#x645;" glyph-name="afii62821" horiz-adv-x="807" arabic-form="medial" d="M877 293H773Q706 
293 622 323Q525 358 451 419Q393 348 333 321T156 293H0V467H153Q244 467 315 513Q370 549 415 614Q476 702 565 
767Q645 825 712 841Q781 736
+822 652Q877 538 877 467V293ZM762 490Q749 548 722 604Q699 651 661 701Q613 689 580 656Q558 635 528 585Q564 546 
629 515T753 477L762 490Z" />
+<glyph unicode="&#x645;" glyph-name="afii62822" horiz-adv-x="692" arabic-form="terminal" d="M762 293H643Q477 
293 353 262Q196 223 196 150Q196 84 218 9T264 -143T288 -284Q288 -322 283 -353T263 -434Q237 -351 212 -268Q164 
-110 141 -29Q105 99 105
+125Q105 253 158 321T323 423Q411 449 588 467Q525 531 510 543Q459 583 407 583Q374 583 344 563Q320 547 286 
508L240 537Q270 612 308 657Q371 731 457 731Q519 731 581 685Q632 647 685 579Q711 546 762 467V293Z" />
+<glyph unicode="&#x645;" glyph-name="afii57445" horiz-adv-x="692" arabic-form="isolated" d="M762 293H643Q477 
293 353 262Q196 223 196 150Q196 84 218 9T264 -143T288 -284Q288 -322 283 -353T263 -434Q237 -351 212 -268Q164 
-110 141 -29Q105 99 105
+125Q105 253 158 321T323 423Q411 449 588 467Q525 531 510 543Q459 583 407 583Q374 583 344 563Q320 547 286 
508L240 537Q270 612 308 657Q371 731 457 731Q519 731 581 685Q632 647 685 579Q711 546 762 467V293Z" />
+<glyph unicode="&#x646;" glyph-name="afii62823" horiz-adv-x="500" arabic-form="initial" d="M490 1218L414 
1073L252 1157L326 1302L490 1218ZM570 293H0V467H497Q497 585 469 647Q450 690 375 771L453 934Q525 843 543 
792Q570 715 570 537V293Z" />
+<glyph unicode="&#x646;" glyph-name="afii62824" horiz-adv-x="500" arabic-form="medial" d="M490 1218L414 
1073L252 1157L326 1302L490 1218ZM570 293H0V467H497Q497 585 469 647Q450 690 375 771L453 934Q525 843 543 
792Q570 715 570 537V293Z" />
+<glyph unicode="&#x646;" glyph-name="afii62825" horiz-adv-x="1077" arabic-form="terminal" d="M775 1060L700 
917L544 1003L616 1142L775 1060ZM1147 293Q1147 70 1016 -35Q875 -148 561 -148Q361 -148 255 -78Q139 -1 139 
158Q139 244 160 332T217 509Q239
+563 293 675L333 657Q263 513 241 430T218 278Q218 154 306 90T559 25Q748 25 894 92Q1075 175 1075 324Q1075 426 
1045 514Q1019 592 971 650L1054 855Q1107 774 1127 690T1147 467V293Z" />
+<glyph unicode="&#x646;" glyph-name="afii57446" horiz-adv-x="1077" arabic-form="isolated" d="M775 1060L700 
917L544 1003L616 1142L775 1060ZM1147 293Q1147 70 1016 -35Q875 -148 561 -148Q361 -148 255 -78Q139 -1 139 
158Q139 244 160 332T217 509Q239
+563 293 675L333 657Q263 513 241 430T218 278Q218 154 306 90T559 25Q748 25 894 92Q1075 175 1075 324Q1075 426 
1045 514Q1019 592 971 650L1054 855Q1107 774 1127 690T1147 467V293Z" />
+<glyph unicode="&#x647;" glyph-name="afii57470" horiz-adv-x="922" arabic-form="initial" d="M858 462Q858 404 
822 333Q783 256 744 256Q703 256 591 308Q488 356 417 402Q301 336 248 317Q181 293 90 293H0V467H90Q131 467 169 
473T272 497Q246 516 220 536Q192
+561 192 585Q192 602 193 610T207 640L306 813Q326 848 342 861T388 883Q319 930 319 950Q319 970 363 1053Q378 
1081 409 1136Q473 1075 570 959Q693 813 764 698Q858 546 858 462ZM506 679Q506 722 488 747Q467 777 421 777Q375 
777 335 747T295 673Q295 632
+417 565Q460 593 481 619Q506 649 506 679ZM747 450Q747 485 691 559Q656 606 605 659Q605 610 585 568T527 502Q587 
471 648 441Q698 419 719 419Q731 419 739 428T747 450Z" />
+<glyph unicode="&#x647;" glyph-name="afii62827" horiz-adv-x="807" arabic-form="medial" d="M877 293H511Q575 
263 620 208Q677 139 677 58Q677 -20 653 -67Q623 -126 559 -126Q439 -126 339 -43Q219 57 219 221L221 
293H0V467H253Q288 560 330 640Q383 741
+441 805Q508 879 567 879Q598 879 621 825T645 710Q645 622 599 567Q572 534 437 467H877V293ZM546 636Q546 731 506 
731Q463 731 403 637Q374 592 321 487Q412 512 474 550Q546 594 546 636ZM586 74Q586 153 470 226Q375 286 283 
302Q283 192 336 121Q400 35 527
+35Q551 35 568 45T586 74Z" />
+<glyph unicode="&#x647;" glyph-name="afii62828" horiz-adv-x="768" arabic-form="terminal" d="M838 293H695Q623 
293 568 416Q527 508 502 653Q472 597 426 566T329 535Q214 535 138 550T61 590Q61 676 173 780T453 963Q451 971 445 
1005T438 1047Q438 1081
+461 1123Q480 1157 511 1193Q521 1131 531 1073T556 953L586 781Q611 639 631 571Q662 467 695 467H838V293ZM489 
740L470 849Q383 818 333 785T249 696Q270 687 298 682T375 677Q435 677 489 740Z" />
+<glyph unicode="&#x647;" glyph-name="afii57447" horiz-adv-x="578" arabic-form="isolated" d="M536 588Q536 447 
490 376Q419 266 230 266Q157 266 109 295Q54 328 54 389Q54 459 89 551Q121 629 154 708L139 712L200 881Q381 786 
416 761Q536 677 536 588ZM449
+510Q449 548 339 611Q292 638 238 664Q193 615 184 603Q156 564 156 529Q156 478 184 450T261 421Q317 421 383 
452T449 510Z" />
+<glyph unicode="&#x648;" glyph-name="afii62829" horiz-adv-x="885" arabic-form="terminal" d="M955 353Q955 188 
833 25Q697 -157 519 -157Q453 -157 383 -142Q332 -131 250 -104Q185 -81 120 -59L137 -24Q193 -37 254 -51T365 
-66Q487 -66 596 -4Q681 45 766
+138Q809 185 888 291Q753 291 686 334Q610 383 610 495Q610 598 658 686Q714 788 800 788Q887 788 925 687Q955 608 
955 467V353ZM892 462Q870 558 839 595Q812 627 773 627Q745 627 725 609T704 562Q704 513 748 488T892 462Z" />
+<glyph unicode="&#x648;" glyph-name="afii57448" horiz-adv-x="885" arabic-form="isolated" d="M955 353Q955 188 
833 25Q697 -157 519 -157Q453 -157 383 -142Q332 -131 250 -104Q185 -81 120 -59L137 -24Q193 -37 254 -51T365 
-66Q487 -66 596 -4Q681 45 766
+138Q809 185 888 291Q753 291 686 334Q610 383 610 495Q610 598 658 686Q714 788 800 788Q887 788 925 687Q955 608 
955 467V353ZM892 462Q870 558 839 595Q812 627 773 627Q745 627 725 609T704 562Q704 513 748 488T892 462Z" />
+<glyph unicode="&#x649;" glyph-name="afii62830" horiz-adv-x="1205" arabic-form="terminal" d="M1275 
293H1100Q946 293 869 285T791 253Q791 220 884 220Q925 220 949 218T1054 207Q1102 201 1120 192Q1149 177 1149 
140Q1149 -47 1026 -132Q892 -225 583
+-225Q368 -225 241 -152Q106 -74 106 70Q106 186 170 316Q193 363 291 517L331 497Q293 432 256 368Q199 258 199 
188Q199 65 327 1Q449 -60 662 -60Q805 -60 914 -38Q1048 -11 1048 36Q1048 53 1033 61T983 70Q956 73 899 76T823 
80Q760 80 733 96T706 146Q706
+270 779 349Q839 413 940 444Q1016 467 1100 467H1275V293Z" />
+<glyph unicode="&#x649;" glyph-name="afii57449" horiz-adv-x="1307" arabic-form="isolated" d="M1241 800Q1241 
768 1235 735T1227 687Q1192 732 1144 758T1045 784Q958 784 862 683Q774 590 774 535Q774 516 795 507T870 
497H950Q1022 497 1056 496T1139 486T1187
+413Q1187 162 968 31Q767 -89 424 -89Q246 -89 152 -20Q50 55 50 206Q50 310 84 424Q110 511 156 606Q159 612 219 
725L261 708Q198 596 165 499T131 326Q131 204 215 143T457 82Q577 82 736 130Q872 171 981 228T1090 312Q1090 331 
1078 337T1037 343H803Q760
+343 727 374T694 454Q694 521 749 636Q809 761 894 845Q996 946 1099 946Q1165 946 1203 906T1241 800Z" />
+<glyph unicode="&#x64a;" glyph-name="afii62831" horiz-adv-x="500" arabic-form="initial" d="M570 
293H0V467H497Q497 585 469 647Q450 690 375 771L453 934Q525 843 543 792Q570 715 570 537V293ZM565 93L487 -51L325 
35L400 178L565 93ZM335 3L259 -142L97
+-58L171 87L335 3Z" />
+<glyph unicode="&#x64a;" glyph-name="afii62832" horiz-adv-x="500" arabic-form="medial" d="M570 
293H0V467H497Q497 585 469 647Q450 690 375 771L453 934Q525 843 543 792Q570 715 570 537V293ZM565 93L487 -51L325 
35L400 178L565 93ZM335 3L259 -142L97
+-58L171 87L335 3Z" />
+<glyph unicode="&#x64a;" glyph-name="afii62833" horiz-adv-x="1205" arabic-form="terminal" d="M1275 
293H1100Q946 293 869 285T791 253Q791 220 884 220Q925 220 949 218T1054 207Q1102 201 1120 192Q1149 177 1149 
140Q1149 -47 1026 -132Q892 -225 583
+-225Q368 -225 241 -152Q106 -74 106 70Q106 186 170 316Q193 363 291 517L331 497Q293 432 256 368Q199 258 199 
188Q199 65 327 1Q449 -60 662 -60Q805 -60 914 -38Q1048 -11 1048 36Q1048 53 1033 61T983 70Q956 73 899 76T823 
80Q760 80 733 96T706 146Q706
+270 779 349Q839 413 940 444Q1016 467 1100 467H1275V293ZM861 -348L768 -434L656 -363L746 -269L861 -348ZM654 
-348L563 -434L447 -363L540 -269L654 -348Z" />
+<glyph unicode="&#x64a;" glyph-name="afii57450" horiz-adv-x="1307" arabic-form="isolated" d="M1241 800Q1241 
768 1235 735T1227 687Q1192 732 1144 758T1045 784Q958 784 862 683Q774 590 774 535Q774 516 795 507T870 
497H950Q1022 497 1056 496T1139 486T1187
+413Q1187 162 968 31Q767 -89 424 -89Q246 -89 152 -20Q50 55 50 206Q50 310 84 424Q110 511 156 606Q159 612 219 
725L261 708Q198 596 165 499T131 326Q131 204 215 143T457 82Q577 82 736 130Q872 171 981 228T1090 312Q1090 331 
1078 337T1037 343H803Q760
+343 727 374T694 454Q694 521 749 636Q809 761 894 845Q996 946 1099 946Q1165 946 1203 906T1241 800ZM864 
-191L786 -335L624 -249L699 -106L864 -191ZM634 -281L558 -426L396 -342L470 -197L634 -281Z" />
+<glyph unicode="&#x64b;" glyph-name="afii57451" horiz-adv-x="412" d="M412 1597Q412 1551 361 1508Q270 1471 70 
1391Q70 1434 114 1474Q197 1509 412 1597ZM412 1447Q412 1399 399 1388T362 1356Q270 1319 70 1239Q70 1282 114 
1322Q197 1357 412 1447Z" />
+<glyph unicode="&#x64c;" glyph-name="afii57452" horiz-adv-x="485" d="M485 1562Q485 1525 474 1493T441 
1426Q455 1416 464 1405T473 1380Q473 1333 466 1292L380 1359Q334 1305 276 1275Q205 1239 118 1239Q158 1305 162 
1314Q174 1341 174 1365Q174 1389
+164 1407T135 1426Q115 1426 97 1402Q90 1392 70 1357Q77 1427 88 1458Q108 1513 154 1513Q188 1513 207 1480T226 
1405Q226 1384 222 1363Q215 1334 212 1319Q281 1339 344 1386Q327 1402 311 1419Q285 1448 285 1480Q285 1527 324 
1574Q367 1626 420 1626Q447
+1626 466 1607T485 1562ZM414 1503Q414 1526 402 1545T370 1564Q348 1564 348 1536Q348 1518 366 1498Q371 1492 401 
1465Q414 1484 414 1503Z" />
+<glyph unicode="&#x64d;" glyph-name="afii57453" horiz-adv-x="412" d="M412 91Q412 44 360 0Q270 -35 70 -116Q70 
-72 114 -32Q197 2 412 91ZM412 -57Q412 -104 360 -149Q270 -184 70 -266Q70 -223 114 -181Q197 -146 412 -57Z" />
+<glyph unicode="&#x64e;" glyph-name="afii57454" horiz-adv-x="412" d="M412 1585Q412 1539 360 1494Q270 1459 70 
1378Q70 1422 114 1462Q197 1497 412 1585Z" />
+<glyph unicode="&#x64f;" glyph-name="afii57455" horiz-adv-x="429" d="M429 1405Q429 1388 426 1370T420 
1334L337 1384Q287 1329 269 1311Q195 1239 145 1239H72Q125 1264 196 1320Q260 1371 293 1410Q262 1429 246 
1450Q226 1476 226 1507Q226 1573 264 1623T348
+1674Q374 1674 395 1646T416 1578Q416 1559 411 1539T385 1463Q401 1449 418 1436Q429 1425 429 1405ZM354 1518Q354 
1545 335 1568T298 1591Q288 1591 283 1584T277 1570Q277 1548 302 1524L346 1490Q354 1510 354 1518Z" />
+<glyph unicode="&#x650;" glyph-name="afii57456" horiz-adv-x="412" d="M412 164Q412 116 360 72Q270 37 70 
-43Q70 0 114 40Q197 74 412 164Z" />
+<glyph unicode="&#x651;&#x64b;" glyph-name="afii62881" horiz-adv-x="433" d="M412 1879Q412 1833 361 1790Q270 
1753 70 1673Q70 1716 114 1756Q197 1791 412 1879ZM412 1729Q412 1681 399 1670T362 1638Q270 1601 70 1521Q70 1564 
114 1604Q197 1639 412 1729ZM433
+1477Q433 1401 407 1353Q378 1299 327 1299Q310 1299 294 1305T260 1324Q240 1290 221 1271Q189 1239 154 1239Q113 
1239 92 1267T70 1345Q70 1371 78 1400Q83 1418 97 1454L118 1462Q118 1454 116 1436T114 1406Q114 1384 123 
1367T150 1349Q193 1349 219 1405Q231
+1430 249 1505L270 1512Q279 1463 283 1452Q295 1420 323 1420Q361 1420 383 1470Q401 1511 401 1556L422 1562Q426 
1543 429 1519T433 1477Z" />
+<glyph unicode="&#x651;&#x64c;" glyph-name="afii62882" horiz-adv-x="463" d="M458 1813Q454 1790 448 1767T419 
1708Q434 1696 442 1686T451 1662Q451 1644 450 1623T444 1575L358 1642Q312 1588 254 1558Q183 1522 96 1522L132 
1582Q152 1619 152 1648Q152
+1670 142 1689T113 1708Q92 1708 74 1684L48 1640Q55 1711 66 1741Q86 1796 132 1796Q166 1796 185 1763T204 
1687Q204 1670 201 1653T189 1602Q258 1622 322 1668Q290 1700 281 1712Q263 1736 263 1763Q263 1810 300 1855Q346 
1910 396 1911Q425 1910 444 1891T458
+1813ZM433 1476Q433 1401 407 1353Q378 1299 327 1299Q309 1299 294 1305T260 1324Q240 1290 221 1271Q189 1239 154 
1239Q112 1239 91 1267T70 1345Q70 1371 77 1396T97 1454L118 1462Q118 1454 116 1436T114 1406Q114 1384 123 
1367T150 1349Q193 1349 219 1405Q231
+1430 249 1506L270 1512Q278 1463 283 1452Q295 1421 323 1421Q361 1421 383 1471Q401 1512 401 1556L422 1562Q426 
1543 429 1519T433 1476ZM392 1786Q392 1810 381 1829T357 1848Q338 1848 332 1840T326 1819Q326 1801 344 1781Q349 
1775 379 1748Q392 1765 392
+1786Z" />
+<glyph unicode="&#x651;&#x64d;" glyph-name="afii62883" horiz-adv-x="433" d="M433 1767Q433 1691 407 1643Q378 
1590 327 1590Q310 1590 294 1596T260 1615Q241 1581 221 1562Q189 1531 154 1531Q112 1531 91 1559T70 1636Q70 1661 
78 1690Q83 1708 97 1744L118
+1752Q118 1744 116 1726T114 1696Q114 1673 122 1657T150 1640Q193 1640 219 1696Q232 1723 249 1796L270 1802Q279 
1753 283 1742Q295 1710 323 1710Q361 1710 383 1760Q401 1801 401 1846L422 1853Q426 1829 429 1807T433 1767ZM418 
1571Q418 1525 366 1481Q277
+1446 76 1364Q76 1408 119 1449Q203 1483 418 1571ZM418 1448Q418 1401 367 1356Q277 1320 76 1239Q76 1282 119 
1323Q203 1358 418 1448Z" />
+<glyph unicode="&#x651;&#x64e;" glyph-name="afii62884" horiz-adv-x="433" d="M418 1721Q418 1675 366 1629Q277 
1594 76 1514Q76 1556 121 1597Q203 1631 418 1721ZM433 1476Q433 1401 407 1353Q378 1299 327 1299Q310 1299 294 
1305T260 1324Q240 1290 221
+1271Q189 1239 154 1239Q112 1239 91 1267T70 1345Q70 1371 78 1400Q83 1418 97 1454L118 1462Q118 1454 116 
1436T114 1406Q114 1384 123 1367T150 1349Q193 1349 219 1405Q231 1430 249 1506L270 1512Q278 1463 283 1452Q295 
1421 323 1421Q361 1421 383 1471Q401
+1512 401 1556L422 1562Q426 1543 429 1519T433 1476Z" />
+<glyph unicode="&#x651;&#x64f;" glyph-name="afii62885" horiz-adv-x="433" d="M433 1585Q398 1585 359 1594Q351 
1596 316 1606Q259 1557 236 1543Q176 1505 120 1505Q106 1505 93 1509T64 1522Q140 1556 171 1571Q219 1594 277 
1627Q254 1649 243 1664Q226
+1687 226 1710Q226 1753 261 1795T342 1838Q371 1838 394 1818T418 1768Q418 1747 408 1724Q405 1717 385 1682Q417 
1667 423 1656Q433 1639 433 1585ZM433 1478Q433 1403 407 1355Q378 1301 327 1301Q310 1301 294 1307T260 1326Q240 
1292 221 1273Q189 1241 154
+1241Q112 1241 91 1269T70 1347Q70 1373 78 1402Q83 1420 97 1456L118 1464Q118 1456 116 1438T114 1408Q114 1386 
123 1369T150 1351Q193 1351 219 1407Q231 1432 249 1507L270 1514Q279 1464 283 1453Q295 1422 323 1422Q361 1422 
383 1472Q401 1513 401 1558L422
+1564Q426 1544 429 1520T433 1478ZM352 1737Q352 1758 337 1778T300 1798Q293 1798 290 1791T287 1775Q287 1754 297 
1740T342 1706Q345 1713 348 1722T352 1737Z" />
+<glyph unicode="&#x651;" glyph-name="afii57457" horiz-adv-x="433" d="M433 1477Q433 1402 407 1354Q378 1300 
327 1300Q309 1300 294 1306T260 1325Q239 1289 221 1271Q189 1239 154 1239Q112 1239 91 1267T70 1346Q70 1372 77 
1397T97 1454L118 1463Q118 1455
+116 1437T114 1407Q114 1385 123 1368T150 1350Q193 1350 219 1406Q231 1432 249 1507L270 1513Q278 1464 283 
1453Q295 1422 323 1422Q361 1422 383 1472Q401 1512 401 1555L422 1561Q426 1542 429 1519T433 1477Z" />
+<glyph unicode="&#x652;" glyph-name="afii57458" horiz-adv-x="337" d="M337 1399Q337 1337 291 1288T178 
1239Q124 1239 97 1269T70 1353Q70 1430 110 1489T209 1549Q263 1549 300 1504T337 1399ZM277 1372Q277 1400 238 
1434T172 1468Q146 1468 128 1446T110
+1399Q110 1364 143 1350Q169 1339 218 1339Q243 1339 260 1346T277 1372Z" />
+<glyph unicode="&#x660;" glyph-name="afii57392" horiz-adv-x="1077" d="M705 744Q677 657 663 603T630 448Q545 
496 497 530Q465 553 380 621Q401 712 418 771T470 925Q526 876 583 832Q621 803 705 744Z" />
+<glyph unicode="&#x661;" glyph-name="afii57393" horiz-adv-x="1077" d="M670 711Q670 621 656 502Q653 473 628 
293H594Q594 317 598 432Q598 644 540 828Q495 971 416 1097Q376 1161 302 1251L398 1467Q477 1372 525 1291Q593 
1176 628 1048Q670 896 670 711Z" />
+<glyph unicode="&#x662;" glyph-name="afii57394" horiz-adv-x="1077" d="M801 1307Q801 1197 749 1131Q692 1059 
588 1059Q575 1059 519 1067Q557 987 573 940Q600 861 614 755T628 471Q628 440 626 370T624 293H594Q518 616 493 
701Q445 867 380 990T183 1278L249
+1480Q316 1385 368 1339Q463 1255 569 1255Q681 1255 724 1330Q748 1371 761 1478L793 1480Q797 1445 799 1399T801 
1307Z" />
+<glyph unicode="&#x663;" glyph-name="afii57395" horiz-adv-x="1077" d="M964 1379Q964 1254 917 1188T770 
1122Q713 1122 671 1140T609 1195Q575 1139 523 1111T398 1082Q435 1009 451 970Q480 899 495 819T511 626Q511 563 
506 505T476 293H436Q436 513 408
+654T312 928Q260 1029 129 1222L202 1459Q254 1373 314 1329Q381 1280 463 1280Q548 1280 596 1338Q637 1388 653 
1480H685Q693 1388 721 1351T801 1314Q906 1314 926 1480H959Q959 1458 961 1422T964 1379Z" />
+<glyph unicode="&#x664;" glyph-name="afii57396" horiz-adv-x="1077" d="M814 495L751 293Q661 293 578 306Q468 
323 401 357Q319 398 319 459Q319 516 354 576Q384 627 446 693Q479 728 571 815Q486 847 401 880Q300 925 300 
971Q300 1047 374 1147Q431 1224
+540 1322Q616 1390 709 1461L678 1269Q567 1228 530 1210Q442 1167 442 1131Q442 1099 517 1066Q587 1039 658 
1013Q734 982 734 956Q734 927 666 855Q603 789 540 724Q472 647 472 606Q472 558 609 526Q698 505 814 495Z" />
+<glyph unicode="&#x665;" glyph-name="afii57397" horiz-adv-x="1077" d="M896 921Q896 748 793 635Q676 506 461 
506Q340 506 270 548Q190 596 190 687Q190 768 234 903Q284 1055 354 1153Q440 1273 532 1273Q650 1273 773 1154T896 
921ZM822 815Q822 872 742
+938Q675 993 574 1038Q481 1079 434 1079Q368 1079 324 989Q288 916 288 844Q288 762 357 724Q420 689 544 689Q666 
689 744 725T822 815Z" />
+<glyph unicode="&#x666;" glyph-name="afii57398" horiz-adv-x="1077" d="M839 548L801 320Q736 363 703 400Q647 
461 618 552Q582 663 582 826Q582 884 587 945Q588 962 609 1144Q561 1135 538 1131Q464 1117 417 1117Q261 1117 213 
1149Q175 1174 175 1252Q175
+1285 178 1351T181 1451L217 1455Q241 1400 263 1382Q309 1345 415 1345Q494 1345 593 1364Q615 1368 700 1387Q683 
1284 676 1233Q664 1146 664 1081Q664 920 692 810Q714 723 760 651Q776 626 839 548Z" />
+<glyph unicode="&#x667;" glyph-name="afii57399" horiz-adv-x="1077" d="M940 1455L932 1168Q784 1017 697 
808T569 293H555Q491 600 392 794T129 1134L165 1451Q320 1270 421 1061Q519 858 582 594H592Q631 872 720 1089Q806 
1299 940 1455Z" />
+<glyph unicode="&#x668;" glyph-name="afii57400" horiz-adv-x="1077" d="M966 627L930 311Q782 464 671 692T511 
1173H504Q461 948 429 834Q387 683 327 565Q264 441 154 305V591Q298 724 387 937Q473 1144 523 1467H542Q593 1229 
656 1071Q715 923 795 813Q861
+723 966 627Z" />
+<glyph unicode="&#x669;" glyph-name="afii57401" horiz-adv-x="1077" d="M845 506L784 293Q684 354 652 498Q626 
616 626 917Q558 893 524 886T457 879Q348 879 284 924T219 1053Q219 1115 249 1206Q287 1322 351 1393Q433 1484 544 
1484Q627 1484 670 1397Q705
+1327 716 1188Q723 1102 723 934Q743 704 777 611Q792 570 845 506ZM618 1092Q618 1183 595 1230Q564 1294 484 
1294Q424 1294 368 1249T312 1165Q312 1123 361 1100T480 1077Q510 1077 553 1083T618 1092Z" />
+<glyph unicode="&#x66a;" glyph-name="afii57381" horiz-adv-x="1077" d="M436 1465Q436 1410 398 1371T305 
1332Q251 1332 213 1371T174 1465Q174 1518 212 1555T305 1592Q360 1592 398 1556T436 1465ZM948 1591L242 
189H133L833 1591H948ZM901 302Q901 248 863
+210T769 172Q714 172 677 210T640 302Q640 356 677 395T769 435Q823 435 862 396T901 302Z" />
+<glyph unicode="&#x66b;" glyph-name="afii57461" horiz-adv-x="653" d="M471 410Q471 325 433 252Q402 193 343 
136Q309 103 235 48L193 103Q262 158 285 183Q326 228 326 268Q277 287 240 319Q199 355 199 415Q199 469 236 
507T328 546Q385 546 428 506T471 410Z" />
+<glyph unicode="&#x66d;" glyph-name="afii63167" horiz-adv-x="1077" d="M868 1174Q868 1145 846 1127T791 
1109Q738 1109 664 1134L590 1160L580 1130L698 1072Q784 1025 784 971Q784 943 766 924T719 904Q667 904 561 
1111Q552 1105 540 1102Q562 1034 571
+1000Q588 940 588 896Q588 866 572 846T523 826Q492 826 476 845T459 896Q459 941 477 996T513 1102L486 1111Q452 
1047 419 984Q373 904 325 904Q297 904 279 923T261 971Q261 1025 347 1071Q355 1075 468 1130Q460 1146 457 
1160Q390 1137 357 1127Q298 1109
+255 1109Q222 1109 201 1126T179 1174Q179 1205 200 1223T255 1241Q299 1241 352 1223T457 1186Q460 1202 468 
1220Q407 1248 347 1277Q261 1322 261 1376Q261 1405 279 1425T325 1445Q372 1445 418 1365Q458 1289 486 1237L511 
1245Q509 1254 486 1321Q459 1402
+459 1451Q459 1481 475 1502T523 1524Q555 1524 571 1503T588 1451Q588 1406 570 1352T534 1247L561 1237Q624 1359 
627 1364Q673 1445 719 1445Q748 1445 766 1425T784 1376Q784 1323 699 1278Q626 1242 580 1220L590 1186Q655 1210 
688 1221Q748 1241 791 1241Q826
+1241 847 1224T868 1174ZM563 1174Q563 1192 552 1203T523 1214Q506 1214 495 1203T484 1174Q484 1158 495 1146T523 
1134Q540 1134 551 1145T563 1174Z" />
+<glyph unicode="&#x671;" glyph-name="afii57460" horiz-adv-x="1536" d="M256 0V1280H1280V0H256ZM288 
32H1248V1248H288V32Z" />
+<glyph unicode="&#x67e;" glyph-name="afii62956" horiz-adv-x="500" arabic-form="initial" d="M465 56L391 
-89L227 -5L303 140L465 56ZM431 -213L357 -359L194 -273L271 -127L431 -213ZM237 -37L162 -180L-3 -95L75 49L237 
-37ZM571 293H1V467H498Q498 585
+470 647Q451 690 376 771L454 934Q526 843 544 792Q571 715 571 537V293Z" />
+<glyph unicode="&#x67e;" glyph-name="afii52957" horiz-adv-x="500" arabic-form="medial" d="M465 56L391 
-89L227 -5L303 140L465 56ZM431 -213L357 -359L194 -273L271 -127L431 -213ZM237 -37L162 -180L-3 -95L75 49L237 
-37ZM571 293H1V467H498Q498 585 470
+647Q451 690 376 771L454 934Q526 843 544 792Q571 715 571 537V293Z" />
+<glyph unicode="&#x67e;" glyph-name="afii62958" horiz-adv-x="1461" arabic-form="terminal" d="M1531 
293H577Q385 293 271 360Q128 444 128 623Q128 716 170 813Q185 848 242 946L272 927Q250 881 229 835Q200 764 200 
708Q200 590 324 525Q435 467 605 467H1452V494Q1452
+606 1425 676T1333 797L1410 960Q1454 905 1463 891Q1531 779 1531 565V293ZM1088 56L1014 -89L850 -5L926 140L1088 
56ZM1054 -213L980 -359L817 -273L894 -127L1054 -213ZM860 -37L785 -180L620 -95L698 49L860 -37Z" />
+<glyph unicode="&#x67e;" glyph-name="afii57506" horiz-adv-x="1461" arabic-form="isolated" d="M1531 
293H577Q385 293 271 360Q128 444 128 623Q128 716 170 813Q185 848 242 946L272 927Q250 881 229 835Q200 764 200 
708Q200 590 324 525Q435 467 605 467H1452V494Q1452
+606 1425 676T1333 797L1410 960Q1454 905 1463 891Q1531 779 1531 565V293ZM1088 56L1014 -89L850 -5L926 140L1088 
56ZM1054 -213L980 -359L817 -273L894 -127L1054 -213ZM860 -37L785 -180L620 -95L698 49L860 -37Z" />
+<glyph unicode="&#x686;" glyph-name="afii62959" horiz-adv-x="1085" arabic-form="initial" d="M1145 
293H0V467H805Q703 546 633 590Q546 645 474 670Q393 698 310 698Q259 698 207 691Q236 765 283 810Q351 875 455 
875Q557 875 696 775Q765 725 921 585Q1042
+476 1085 467H1145V293ZM766 56L692 -89L528 -5L604 140L766 56ZM732 -213L658 -359L495 -273L572 -127L732 
-213ZM538 -37L463 -180L298 -95L376 49L538 -37Z" />
+<glyph unicode="&#x686;" glyph-name="afii62960" horiz-adv-x="1085" arabic-form="medial" d="M1145 
293H0V467H805Q703 546 633 590Q546 645 474 670Q393 698 310 698Q259 698 207 691Q236 765 283 810Q351 875 455 
875Q557 875 696 775Q765 725 921 585Q1042
+476 1085 467H1145V293ZM766 56L692 -89L528 -5L604 140L766 56ZM732 -213L658 -359L495 -273L572 -127L732 
-213ZM538 -37L463 -180L298 -95L376 49L538 -37Z" />
+<glyph unicode="&#x686;" glyph-name="afii62961" horiz-adv-x="1077" arabic-form="terminal" d="M1147 
293H940Q819 293 768 338T717 487Q717 526 727 584Q731 606 738 642Q567 590 480 553Q320 485 232 399Q121 291 121 
153Q121 -62 345 -170Q540 -264 866
+-264H1050L1056 -275L830 -434H772Q556 -434 413 -394Q242 -346 154 -240Q54 -119 54 80Q54 251 139 379Q205 479 
332 562Q369 587 538 677Q498 682 454 685T373 689Q272 689 209 680Q188 677 78 653Q112 751 149 789Q232 873 409 
873Q506 873 619 855T809 836Q860
+836 908 840T1010 851L970 681Q929 676 877 667Q844 661 786 650L784 594Q784 512 834 484Q865 467 940 
467H1147V293ZM720 248L646 103L482 187L558 332L720 248ZM686 -21L612 -167L449 -81L526 65L686 -21ZM492 155L417 
12L252 97L330 241L492 155Z" />
+<glyph unicode="&#x686;" glyph-name="afii57507" horiz-adv-x="1153" arabic-form="isolated" d="M484 696Q464 
696 426 699T369 702Q305 702 225 690Q173 682 83 664Q123 777 158 811Q233 885 410 885Q476 885 680 857Q775 844 
844 844Q873 844 929 851T1013
+858L976 689Q765 653 617 607Q397 539 274 441Q121 319 121 153Q121 -62 345 -170Q540 -264 866 -264H1050L1056 
-275L830 -434H772Q556 -434 413 -394Q242 -346 154 -240Q54 -119 54 80Q54 248 133 382Q193 484 308 575Q343 603 
484 696ZM856 360L782 215L618
+299L694 444L856 360ZM822 91L748 -55L585 31L662 177L822 91ZM628 267L553 124L388 209L466 353L628 267Z" />
+<glyph unicode="&#x698;" glyph-name="afii62962" horiz-adv-x="1001" arabic-form="terminal" d="M1071 293Q1071 
183 977 65Q895 -39 773 -114Q657 -186 582 -186Q513 -186 433 -166Q372 -151 287 -119Q215 -92 144 -65L161 -25Q227 
-38 298 -51T428 -65Q556
+-65 695 17Q821 92 910 206T999 413Q999 492 953 579Q916 649 849 723L906 880Q988 804 1027 728Q1071 642 1071 
536V293ZM848 1395L771 1249L611 1335L685 1481L848 1395ZM1045 1217L967 1073L805 1159L880 1302L1045 1217ZM815 
1127L739 982L577 1066L651 1211L815
+1127Z" />
+<glyph unicode="&#x698;" glyph-name="afii57508" horiz-adv-x="1001" arabic-form="isolated" d="M1071 293Q1071 
183 977 65Q895 -39 773 -114Q657 -186 582 -186Q513 -186 433 -166Q372 -151 287 -119Q215 -92 144 -65L161 -25Q227 
-38 298 -51T428 -65Q556
+-65 695 17Q821 92 910 206T999 413Q999 492 953 579Q916 649 849 723L906 880Q988 804 1027 728Q1071 642 1071 
536V293ZM848 1395L771 1249L611 1335L685 1481L848 1395ZM1045 1217L967 1073L805 1159L880 1302L1045 1217ZM815 
1127L739 982L577 1066L651 1211L815
+1127Z" />
+<glyph unicode="&#x6a4;" glyph-name="afii57505" horiz-adv-x="1536" d="M256 0V1280H1280V0H256ZM288 
32H1248V1248H288V32Z" />
+<glyph unicode="&#x6a9;" glyph-name="afii52305" horiz-adv-x="807" arabic-form="initial" d="M877 
293H0V467H761Q691 573 601 651T358 821L325 790L207 880Q145 932 145 961Q145 1133 229 1231Q307 1321 498 1393L780 
1503V1330L571 1260Q446 1219 369 1185Q271
+1142 271 1119Q271 1096 335 1048Q375 1018 416 988Q568 873 681 747Q803 612 877 467V293Z" />
+<glyph unicode="&#x6a9;" glyph-name="afii52306" horiz-adv-x="1054" arabic-form="medial" d="M795 613Q842 556 
887 518Q948 467 993 467H1124V293H1001Q919 293 829 377Q785 418 704 523Q655 586 644 599Q619 629 568 678Q568 500 
457 400Q338 293 103 293H0V467H108Q267
+467 375 508Q504 557 504 646Q504 713 455 759Q430 783 358 821L325 790L207 880Q145 932 145 961Q145 1133 229 
1231Q307 1321 498 1393L780 1503V1330L571 1260Q446 1219 369 1185Q271 1142 271 1119Q271 1096 335 1048Q375 1018 
416 988Q504 921 575 856Q636
+800 689 740Q722 703 795 613Z" />
+<glyph unicode="&#x6a9;" glyph-name="afii62964" horiz-adv-x="1910" arabic-form="terminal" d="M538 293Q299 
293 198 350Q90 411 90 558Q90 646 137 758Q150 789 192 873L226 853Q192 775 182 733T171 653Q171 544 286 500Q372 
467 538 467H964Q1123 467 1231
+508Q1360 557 1360 646Q1360 713 1311 759Q1286 783 1214 821L1181 790L1063 880Q1001 932 1001 961Q1001 1133 1085 
1231Q1163 1321 1354 1393L1636 1503V1330L1427 1260Q1256 1202 1186 1167Q1127 1137 1127 1119Q1127 1096 1191 
1048Q1231 1018 1272 988Q1360
+921 1431 856Q1492 800 1545 740Q1578 703 1651 613Q1698 556 1743 518Q1804 467 1849 467H1980V293H1857Q1775 293 
1685 377Q1641 418 1560 523Q1511 586 1500 599Q1475 629 1424 678Q1424 500 1313 400Q1194 293 959 293H538Z" />
+<glyph unicode="&#x6a9;" glyph-name="afii57567" horiz-adv-x="1663" arabic-form="isolated" d="M1617 467Q1547 
573 1457 651T1214 821L1181 790L1063 880Q1001 932 1001 961Q1001 1133 1085 1231Q1163 1321 1354 1393L1636 
1503V1330L1427 1260Q1302 1219
+1225 1185Q1127 1142 1127 1119Q1127 1096 1191 1048Q1231 1018 1272 988Q1424 873 1537 747Q1659 612 1733 
467V293H538Q299 293 198 350Q90 411 90 558Q90 646 137 758Q150 789 192 873L226 853Q192 775 182 733T171 653Q171 
544 286 500Q372 467 538 467H1617Z"
+/>
+<glyph unicode="&#x6af;" glyph-name="afii62965" horiz-adv-x="807" arabic-form="initial" d="M877 
293H0V467H761Q691 573 601 651T358 821L325 790L207 880Q145 932 145 961Q145 1133 229 1231Q307 1321 498 1393L780 
1503V1330L571 1260Q446 1219 369 1185Q271
+1142 271 1119Q271 1096 335 1048Q375 1018 416 988Q568 873 681 747Q803 612 877 467V293ZM780 1794V1625Q564 1546 
380 1457Q217 1379 124 1316V1422Q156 1458 252 1521T482 1654Q632 1733 780 1794Z" />
+<glyph unicode="&#x6af;" glyph-name="afii62966" horiz-adv-x="1054" arabic-form="medial" d="M795 613Q842 556 
887 518Q948 467 993 467H1124V293H1001Q919 293 829 377Q785 418 704 523Q655 586 644 599Q619 629 568 678Q568 500 
457 400Q338 293 103 293H0V467H108Q267
+467 375 508Q504 557 504 646Q504 713 455 759Q430 783 358 821L325 790L207 880Q145 932 145 961Q145 1133 229 
1231Q307 1321 498 1393L780 1503V1330L571 1260Q446 1219 369 1185Q271 1142 271 1119Q271 1096 335 1048Q375 1018 
416 988Q504 921 575 856Q636
+800 689 740Q722 703 795 613ZM780 1794V1625Q564 1546 380 1457Q217 1379 124 1316V1422Q156 1458 252 1521T482 
1654Q632 1733 780 1794Z" />
+<glyph unicode="&#x6af;" glyph-name="afii62967" horiz-adv-x="1910" arabic-form="terminal" d="M538 293Q299 
293 198 350Q90 411 90 558Q90 646 137 758Q150 789 192 873L226 853Q192 775 182 733T171 653Q171 544 286 500Q372 
467 538 467H964Q1123 467 1231
+508Q1360 557 1360 646Q1360 713 1311 759Q1286 783 1214 821L1181 790L1063 880Q1001 932 1001 961Q1001 1133 1085 
1231Q1163 1321 1354 1393L1636 1503V1330L1427 1260Q1256 1202 1186 1167Q1127 1137 1127 1119Q1127 1096 1191 
1048Q1231 1018 1272 988Q1360
+921 1431 856Q1492 800 1545 740Q1578 703 1651 613Q1698 556 1743 518Q1804 467 1849 467H1980V293H1857Q1775 293 
1685 377Q1641 418 1560 523Q1511 586 1500 599Q1475 629 1424 678Q1424 500 1313 400Q1194 293 959 293H538ZM1636 
1776V1607Q1420 1528 1236
+1439Q1073 1361 980 1298V1404Q1012 1440 1108 1503T1338 1636Q1488 1715 1636 1776Z" />
+<glyph unicode="&#x6af;" glyph-name="afii57509" horiz-adv-x="1663" arabic-form="isolated" d="M1617 467Q1547 
573 1457 651T1214 821L1181 790L1063 880Q1001 932 1001 961Q1001 1133 1085 1231Q1163 1321 1354 1393L1636 
1503V1330L1427 1260Q1302 1219
+1225 1185Q1127 1142 1127 1119Q1127 1096 1191 1048Q1231 1018 1272 988Q1424 873 1537 747Q1659 612 1733 
467V293H538Q299 293 198 350Q90 411 90 558Q90 646 137 758Q150 789 192 873L226 853Q192 775 182 733T171 653Q171 
544 286 500Q372 467 538 467H1617ZM1636
+1776V1607Q1420 1528 1236 1439Q1073 1361 980 1298V1404Q1012 1440 1108 1503T1338 1636Q1488 1715 1636 1776Z" />
+<glyph unicode="&#x6cc;" glyph-name="afii62831" horiz-adv-x="500" arabic-form="initial" d="M570 
293H0V467H497Q497 585 469 647Q450 690 375 771L453 934Q525 843 543 792Q570 715 570 537V293ZM565 93L487 -51L325 
35L400 178L565 93ZM335 3L259 -142L97
+-58L171 87L335 3Z" />
+<glyph unicode="&#x6cc;" glyph-name="afii62832" horiz-adv-x="500" arabic-form="medial" d="M570 
293H0V467H497Q497 585 469 647Q450 690 375 771L453 934Q525 843 543 792Q570 715 570 537V293ZM565 93L487 -51L325 
35L400 178L565 93ZM335 3L259 -142L97
+-58L171 87L335 3Z" />
+<glyph unicode="&#x6cc;" glyph-name="afii52364" horiz-adv-x="1205" arabic-form="terminal" d="M1275 
293H1100Q946 293 869 285T791 253Q791 220 884 220Q925 220 949 218T1054 207Q1102 201 1120 192Q1149 177 1149 
140Q1149 -47 1026 -132Q892 -225 583
+-225Q368 -225 241 -152Q106 -74 106 70Q106 186 170 316Q193 363 291 517L331 497Q293 432 256 368Q199 258 199 
188Q199 65 327 1Q449 -60 662 -60Q805 -60 914 -38Q1048 -11 1048 36Q1048 53 1033 61T983 70Q956 73 899 76T823 
80Q760 80 733 96T706 146Q706
+270 779 349Q839 413 940 444Q1016 467 1100 467H1275V293Z" />
+<glyph unicode="&#x6cc;" glyph-name="afii57555" horiz-adv-x="1307" arabic-form="isolated" d="M1241 800Q1241 
768 1235 735T1227 687Q1192 732 1144 758T1045 784Q958 784 862 683Q774 590 774 535Q774 516 795 507T870 
497H950Q1022 497 1056 496T1139 486T1187
+413Q1187 162 968 31Q767 -89 424 -89Q246 -89 152 -20Q50 55 50 206Q50 310 84 424Q110 511 156 606Q159 612 219 
725L261 708Q198 596 165 499T131 326Q131 204 215 143T457 82Q577 82 736 130Q872 171 981 228T1090 312Q1090 331 
1078 337T1037 343H803Q760
+343 727 374T694 454Q694 521 749 636Q809 761 894 845Q996 946 1099 946Q1165 946 1203 906T1241 800Z" />
+<glyph unicode="&#x6d5;" glyph-name="afii57534" horiz-adv-x="578" d="M536 588Q536 447 490 376Q419 266 230 
266Q157 266 109 295Q54 328 54 389Q54 459 89 551Q121 629 154 708L139 712L200 881Q381 786 416 761Q536 677 536 
588ZM449 510Q449 548 339 611Q292
+638 238 664Q193 615 184 603Q156 564 156 529Q156 478 184 450T261 421Q317 421 383 452T449 510Z" />
+<glyph unicode="&#x6f0;" glyph-name="afii57392" horiz-adv-x="1077" d="M705 744Q677 657 663 603T630 448Q545 
496 497 530Q465 553 380 621Q401 712 418 771T470 925Q526 876 583 832Q621 803 705 744Z" />
+<glyph unicode="&#x6f1;" glyph-name="afii57393" horiz-adv-x="1077" d="M670 711Q670 621 656 502Q653 473 628 
293H594Q594 317 598 432Q598 644 540 828Q495 971 416 1097Q376 1161 302 1251L398 1467Q477 1372 525 1291Q593 
1176 628 1048Q670 896 670 711Z" />
+<glyph unicode="&#x6f2;" glyph-name="afii57394" horiz-adv-x="1077" d="M801 1307Q801 1197 749 1131Q692 1059 
588 1059Q575 1059 519 1067Q557 987 573 940Q600 861 614 755T628 471Q628 440 626 370T624 293H594Q518 616 493 
701Q445 867 380 990T183 1278L249
+1480Q316 1385 368 1339Q463 1255 569 1255Q681 1255 724 1330Q748 1371 761 1478L793 1480Q797 1445 799 1399T801 
1307Z" />
+<glyph unicode="&#x6f3;" glyph-name="afii57395" horiz-adv-x="1077" d="M964 1379Q964 1254 917 1188T770 
1122Q713 1122 671 1140T609 1195Q575 1139 523 1111T398 1082Q435 1009 451 970Q480 899 495 819T511 626Q511 563 
506 505T476 293H436Q436 513 408
+654T312 928Q260 1029 129 1222L202 1459Q254 1373 314 1329Q381 1280 463 1280Q548 1280 596 1338Q637 1388 653 
1480H685Q693 1388 721 1351T801 1314Q906 1314 926 1480H959Q959 1458 961 1422T964 1379Z" />
+<glyph unicode="&#x6f4;" glyph-name="afii62843" horiz-adv-x="1077" d="M158 1227L233 1467Q323 1305 360 
1257T468 1167Q482 1330 529 1402T668 1475Q729 1475 778 1445Q823 1418 872 1358L864 1346Q859 1347 826 1358Q777 
1374 731 1374Q638 1374 582 1322T496
+1153Q547 1137 583 1130T651 1122Q733 1122 790 1150T909 1253L932 1245Q904 1098 827 1021T627 944Q568 944 534 
954T459 994Q501 898 513 833Q522 783 522 676Q522 534 471 301H436Q436 520 397 700Q363 859 295 1001Q241 1114 158 
1227Z" />
+<glyph unicode="&#x6f5;" glyph-name="afii62844" horiz-adv-x="1077" d="M430 1231L496 1450Q706 1241 811 
1033Q903 851 903 700Q903 580 838 475Q764 356 657 356Q629 356 605 363T553 393Q509 356 465 341T373 326Q278 326 
217 378Q152 433 152 528Q152 641
+233 783T510 1154L430 1231ZM590 598Q612 575 650 559T729 543Q777 543 809 568T842 633Q842 707 755 842Q675 966 
534 1124Q493 1081 445 1014Q381 925 342 843Q293 740 293 666Q293 602 327 565T422 528Q465 528 500 542T590 598Z" 
/>
+<glyph unicode="&#x6f6;" glyph-name="afii62845" horiz-adv-x="1077" d="M344 301Q344 472 379 623T496 907Q347 
907 275 938T203 1032Q203 1079 242 1151T356 1313Q415 1387 474 1428T578 1469Q631 1469 688 1426T821 1288L811 
1278Q738 1303 700 1311T612 1319Q487
+1319 413 1286T338 1202Q338 1148 392 1118T541 1088Q627 1088 697 1105T891 1178L846 987Q748 953 654 865Q550 768 
482 633Q405 481 385 301H344Z" />
+<glyph unicode="&#x6f7;" glyph-name="afii57399" horiz-adv-x="1077" d="M940 1455L932 1168Q784 1017 697 
808T569 293H555Q491 600 392 794T129 1134L165 1451Q320 1270 421 1061Q519 858 582 594H592Q631 872 720 1089Q806 
1299 940 1455Z" />
+<glyph unicode="&#x6f8;" glyph-name="afii57400" horiz-adv-x="1077" d="M966 627L930 311Q782 464 671 692T511 
1173H504Q461 948 429 834Q387 683 327 565Q264 441 154 305V591Q298 724 387 937Q473 1144 523 1467H542Q593 1229 
656 1071Q715 923 795 813Q861
+723 966 627Z" />
+<glyph unicode="&#x6f9;" glyph-name="afii57401" horiz-adv-x="1077" d="M845 506L784 293Q684 354 652 498Q626 
616 626 917Q558 893 524 886T457 879Q348 879 284 924T219 1053Q219 1115 249 1206Q287 1322 351 1393Q433 1484 544 
1484Q627 1484 670 1397Q705
+1327 716 1188Q723 1102 723 934Q743 704 777 611Q792 570 845 506ZM618 1092Q618 1183 595 1230Q564 1294 484 
1294Q424 1294 368 1249T312 1165Q312 1123 361 1100T480 1077Q510 1077 553 1083T618 1092Z" />
+
+
+</font>
+</defs>
+
+<g fill="blue" font-size="25">
+
+      <text x="30" y="100" fill="green" style="font-family: SVGArial">Arabic using SVG font:</text>
+      <text x="30" y="140" xml:lang="ar-SA" style="font-family:  SVGArial; font-size:33">
+          &#x644;&#x645;&#x627;&#x630;&#x627; 
+          &#x644;&#x627;
+          &#x64a;&#x62a;&#x643;&#x644;&#x645;&#x648;&#x646;
+          &#x627;&#x644;&#x644;&#x651;&#x63a;&#x629;
+          &#x627;&#x644;&#x639;&#x631;&#x628;&#x64a;&#x629;
+          &#x641;&#x62d;&#x633;&#x628;&#x61f;
+          </text>
+
+      <text fill="DarkRed" x="30" y="170" style="font-family: SVGArial; font-size:18">arabic: 
+         &#x621;&#x623;&#x624;&#x625;&#x626;&#x627;&#x628;&#x629;&#x62a;
+         &#x62b;&#x62c;&#x62d;&#x62e;&#x62f;&#x630;&#x631;&#x632;&#x633;
+         &#x634;&#x635;&#x636;&#x637;&#x638;&#x639;&#x640;&#x641;&#x642;
+         &#x643;&#x644;&#x645;&#x646;&#x647;&#x648;&#x649;&#x650;&#x1676;</text>
+
+      <text x="30" y="235" fill="green">Arabic using system font:</text> 
+      <text x="30" y="275" xml:lang="ar-SA" style="font-family: Arial; font-size:33">
+          &#x644;&#x645;&#x627;&#x630;&#x627; 
+          &#x644;&#x627;
+          &#x64a;&#x62a;&#x643;&#x644;&#x645;&#x648;&#x646;
+          &#x627;&#x644;&#x644;&#x651;&#x63a;&#x629;
+          &#x627;&#x644;&#x639;&#x631;&#x628;&#x64a;&#x629;
+          &#x641;&#x62d;&#x633;&#x628;&#x61f;
+          </text>
+     
+     <text fill="DarkRed" x="30" y="305" style="font-family: Arial; font-size:18">arabic: 
+         &#x621;&#x623;&#x624;&#x625;&#x626;&#x627;&#x628;&#x629;&#x62a;
+         &#x62b;&#x62c;&#x62d;&#x62e;&#x62f;&#x630;&#x631;&#x632;&#x633;
+         &#x634;&#x635;&#x636;&#x637;&#x638;&#x639;&#x640;&#x641;&#x642;
+         &#x643;&#x644;&#x645;&#x646;&#x647;&#x648;&#x649;&#x650;&#x1676;</text> 
+
+
+     <text x="30" y="370" fill="green">Reference image of arabic text:</text> 
+     <image x="30" y="385" width="388" height="58" xlink:href="../../resources/images/arabic.png"/>
+
+</g>
+</g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontBounds.png 
b/tests/data/svg/batik/tests/spec/fonts/fontBounds.png
new file mode 100644
index 0000000..1ac288d
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontBounds.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontBounds.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontBounds.svg
new file mode 100644
index 0000000..8a960cb
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontBounds.svg
@@ -0,0 +1,91 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Tests various altGlyph uses                                            -->
+<!--                                                                        -->
+<!-- @author bella robinson cmis csiro                                      -->
+<!-- @version $Id: fontBounds.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; >
+   <title>SVGFont - Text/Font Bounds computation.</title>
+
+   <text class="title" x="50%" y="40"
+    >SVGFont - Text/Font Bounds computation.</text>
+
+   <font horiz-adv-x="150">
+      <font-face
+           font-family="FOPFont"
+           units-per-em="250"
+           ascent="200"
+           descent="50"
+           alphabetic="0"/>
+ 
+      <missing-glyph horiz-adv-x="150" d="M20 0 V240 H100 V0 z"/>
+      
+      <glyph unicode=" " glyph-name=" " horiz-adv-x="100"/>
+      
+      <glyph unicode="F" glyph-name="F" horiz-adv-x="100">
+            <path style="fill:none;stroke-width:25; stroke-linecap:square"
+                  d="M13,0 v162 h80 m-75-87 h50"/>
+      </glyph>
+      
+      <glyph unicode="O" glyph-name="O" horiz-adv-x="130">
+         <ellipse style="fill:none;stroke-width:25"
+                  cx="63" cy="82" rx="40" ry="82"/>
+       </glyph>
+      
+      <glyph unicode="P" glyph-name="p" horiz-adv-x="120">
+            <path style="fill:none; stroke-width:25; stroke-linecap:square"
+                  d="M13,0 v162 h60 a 25,43 0 1 0 0 -86 h-55"/>
+      </glyph>
+ 
+      <hkern g1="F"  g2="O"  k="5"/>
+      <hkern g1="O"  g2="P"  k="4"/>
+   </font>
+
+   <text x="150" y="200" 
+         style="stroke:lightgrey;font-family:FOPFont;font-size:120"
+       >FOP</text>
+
+   <svg x="150" y="201" width="162" height="20">
+      <rect x="0%" y="0%" width="100%" height="100%" fill="#88F"/>
+      
+      <!-- This svg element is designed to only intersect
+           the wide stroke on the text.  If it doesn't
+           properly include the stroke (from the
+           SVG font defn) in the text rendering bounds it will skip
+           the text entirely resulting in nothing being drawn on
+           top of the rect -->
+      <text y="-1" style="stroke:black; font-family:FOPFont; font-size:120"
+       >FOP</text>
+   </svg>
+
+   <text x="225" y="250" class="legend">The bottoms of the letters should
+    <tspan x="225" dy="1em">appear in black on top of the blue rect</tspan>
+   </text>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontChoice.png 
b/tests/data/svg/batik/tests/spec/fonts/fontChoice.png
new file mode 100644
index 0000000..f5ffd86
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontChoice.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontChoice.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontChoice.svg
new file mode 100644
index 0000000..db45266
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontChoice.svg
@@ -0,0 +1,202 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- <text> styled with a list of font families, must                          -->
+<!-- choose which font renders which glyph                                     -->
+<!-- Also, matches SVG font by weight and other style                          -->
+<!-- properties if possible.                                                   -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                      -->
+<!-- @version $Id: fontChoice.svg 475685 2006-11-16 11:16:05Z cam $     -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>SVGFont - font selection test</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">Font Selection Test</text>
+
+        <defs>
+
+            <!-- ============================= -->
+            <!-- SVG Font Definitions          -->
+            <!-- ============================= -->
+
+            <!-- This is an encoding of Microsoft's Georgia font    -->
+            <!-- in SVG format (as allowed in the license). For the -->
+            <!-- true type version of this font, refer to           -->
+            <!-- http://www.microsoft.com/truetype                  -->
+            <!-- It has been converted to SVG using Batik's         -->
+            <!-- true type to SVG converter (ttf2svg).              -->
+            <!-- Styling has been added for testing purposes.       -->
+
+            <font horiz-adv-x="901" fill="#6666FF">
+                <font-face
+                 font-family="SVGGeorgia"
+                 font-weight="normal"
+                 font-style="normal"
+                 units-per-em="2048"
+                 panose-1="2 4 5 2 5 4 5 2 3 3"
+                 ascent="1878"
+                 descent="449"
+                 alphabetic="0"/>
+
+                <missing-glyph horiz-adv-x="2048">
+                   <path d="M256 0V1536H1792V0H256zM384 128H1664V1408H384V128z"/>
+                </missing-glyph>
+
+                <glyph unicode=" " glyph-name="space" horiz-adv-x="494"/>
+
+                <glyph unicode="G" glyph-name="G" horiz-adv-x="1485">
+                    <path d="M1471 567Q1447 564 1407 558T1341 539Q1311 524 1299 497T1286 432V322Q1286 202 
1287 160T1291 91Q1158 31 1026 -1T767 -33Q631 -33 505 18T285 163Q190 258 134 394T78 698Q78 860 131 998T283 
1239Q378
+1339 509 1394T791 1450Q911 1450 1000 1421T1157 1351L1198 1419H1278L1287 923H1205Q1184 1005 1153 1084T1073 
1227Q1024 1290 954 1327T785 1365Q678 1365 594 1322T448 1192Q387 1109 354 985T321 708Q321 573 353 454T448 
247Q510 158 603 107T814 56Q902
+56 974 83T1077 140Q1085 192 1085 245T1086 335V413Q1086 455 1075 487T1027 535Q994 550 938 557T849 
567V640H1471V567z"/>
+                </glyph>
+
+              
+                <glyph unicode="S" glyph-name="S"  horiz-adv-x="1149">
+                    <path d="M981 651Q1026 601 1047 542T1069 403Q1069 215 930 93T585 -29Q490 -29 395 0T231 
72L188 -1H108L94 485H175Q200 395 233 323T322 187Q374 128 443 93T605 58Q674 58 725 76T809 127Q841 160 856 
204T872
+307Q872 392 824 465T681 577Q616 603 532 634T387 694Q267 748 201 835T134 1064Q134 1145 167 1215T261 1340Q319 
1392 398 1421T563 1451Q661 1451 738 1421T880 1351L921 1419H1001L1009 948H928Q906 1029 879 1103T807 1237Q764 
1295 702 1329T550 1364Q455
+1364 388 1303T321 1154Q321 1062 364 1002T489 902Q562 867 632 842T769 787Q829 761 884 728T981 651z"/>
+                </glyph>
+
+                <glyph unicode="a" glyph-name="a" horiz-adv-x="1032">
+                    <path d="M1006 18Q959 1 924 -9T843 -20Q765 -20 719 16T659 123H653Q588 51 514 13T334 
-25Q223 -25 152 43T80 221Q80 278 96 323T144 404Q169 434 210 457T287 495Q332 512 469 558T655 630V729Q655 742 
650
+779T626 849Q606 886 570 913T466 941Q420 941 381 926T325 893Q325 873 334 834T344 762Q344 727 313 698T225 
669Q175 669 152 704T128 784Q128 830 160 872T245 947Q290 975 354 994T479 1014Q563 1014 625 1003T739 953Q790 
916 816 853T843 689Q843 546 840
+436T837 194Q837 155 850 132T892 93Q907 84 939 83T1006 82V18zM657 546Q572 521 508 497T389 437Q339 403 310 
357T281 246Q281 163 324 124T435 85Q506 85 560 119T651 201L657 546z"/>
+                </glyph>
+
+                <glyph unicode="d" glyph-name="d" horiz-adv-x="1176">
+                    <path d="M1152 18L808 -4L793 10V102L785 104Q733 46 657 9T499 -28Q415 -28 337 9T200 
115Q141 184 107 281T72 495Q72 602 109 698T211 866Q272 933 360 973T541 1013Q610 1013 676 996T791 951V1294Q791 
1336
+777 1370T738 1423Q710 1442 663 1450T560 1463V1525L963 1548L978 1533V203Q978 168 991 144T1031 102Q1050 90 
1086 87T1152 83V18zM791 191V768Q783 794 765 824T720 879Q691 904 652 920T561 937Q501 937 451 906T361 817Q324 
761 303 675T281 483Q281 399
+297 331T351 203Q386 147 440 113T570 79Q650 79 702 114T791 191z"/>
+                </glyph>
+
+                <glyph unicode="g" glyph-name="g" horiz-adv-x="1043">
+                    <path d="M917 102Q957 64 980 16T1003 -103Q1003 -174 972 -236T878 -345Q811 -392 718 
-418T488 -444Q264 -444 153 -379T42 -187Q42 -85 122 -26T326 38V52Q296 61 264 74T209 106Q183 127 167 155T151 
226Q151
+279 188 323T302 400V415Q206 460 153 530T100 694Q100 834 204 924T472 1014Q517 1014 561 1005T652 
982H996V886H764V880Q801 837 819 785T837 683Q837 553 732 463T486 373H365Q342 365 317 344T292 287Q292 250 313 
231T364 204Q393 196 431 194T511 191Q555
+190 631 185T740 179Q786 177 832 157T917 102zM647 687Q647 804 600 873T466 943Q419 943 386 924T331 868Q311 835 
303 789T294 693Q294 582 342 512T468 442Q554 442 600 511T647 687zM839 -140Q839 -84 813 -48T734 1Q706 5 619 
10T417 15Q309 -6 264 -55T218
+-183Q218 -218 233 -250T285 -309Q320 -335 379 -351T523 -368Q670 -368 754 -312T839 -140z"/>
+                </glyph>
+
+                <glyph unicode="r" glyph-name="r" horiz-adv-x="839">
+                    <path d="M827 859Q827 808 802 769T725 729Q669 729 640 758T610 822Q610 844 613 862T620 
898Q573 898 510 860T403 752V178Q403 143 416 121T459 88Q484 78 523 73T592 66V0H72V66Q95 68 119 70T162 78Q190 87
+203 109T217 168V777Q217 808 203 838T162 886Q143 898 117 903T61 911V976L389 998L403 984V845H408Q470 926 546 
968T685 1010Q748 1010 787 969T827 859z"/>
+                </glyph>
+            </font>
+                 
+            <font horiz-adv-x="901" fill="#FF0000">
+                <font-face
+                 font-family="SVGGeorgia"
+                 font-weight="bold"
+                 font-style="normal"
+                 units-per-em="2048"
+                 panose-1="2 4 8 2 5 4 5 2 2 3"
+                 ascent="1878"
+                 descent="449"
+                 alphabetic="0"/>
+
+                <missing-glyph horiz-adv-x="2048">
+                    <path d="M256 0V1536H1792V0H256zM384 128H1664V1408H384V128z"/>
+                </missing-glyph>
+
+                <glyph unicode=" " glyph-name="space" horiz-adv-x="494"/>
+    
+                <glyph unicode="G" glyph-name="G" horiz-adv-x="1653">
+                    <path d="M1649 577Q1618 574 1594 570T1534 554Q1493 541 1480 511T1467 448V283Q1467 233 
1468 203T1471 127Q1371 67 1176 14T816 -39Q662 -39 527 8T290 149Q188 242 130 380T71 696Q71 862 126 1003T285 
1246Q387
+1347 533 1402T858 1457Q979 1457 1082 1428T1252 1364L1314 1419H1401L1410 901H1322Q1246 1134 1140 1247T872 
1360Q680 1360 576 1192T471 729Q471 416 573 239T864 62Q952 62 1020 88T1127 150V438Q1127 474 1114 498T1062 
541Q1032 555 987 564T912 577V655H1649V577z"/>
+                </glyph>
+
+                <glyph unicode="S" glyph-name="S" horiz-adv-x="1329">
+                    <path d="M664 -38Q534 -38 422 -6T231 70L162 0H77L64 513H150Q179 440 224 359T328 214Q389 
147 464 105T641 63Q777 63 849 129T922 297Q922 380 861 436T670 534Q586 561 516 584T383 631Q240 688 171 794T101
+1031Q101 1114 137 1190T242 1328Q308 1385 411 1421T635 1457Q753 1457 856 1425T1018 1359L1079 1419H1166L1174 
935H1088Q1058 1013 1018 1094T932 1230Q883 1288 819 1322T669 1357Q561 1357 493 1296T424 1145Q424 1060 483 
1006T669 911Q743 886 820 861T957
+813Q1102 757 1177 659T1253 414Q1253 322 1210 236T1094 93Q1014 30 909 -4T664 -38z"/>
+                </glyph>
+
+                <glyph unicode="a" glyph-name="a" horiz-adv-x="1220">
+                    <path d="M1201 21Q1157 2 1097 -14T970 -30Q847 -30 789 6T710 111H704Q670 77 639 53T571 
12Q524 -10 481 -20T359 -31Q243 -31 161 37T79 219Q79 284 97 329T148 410Q178 442 217 463T304 502Q394 535 520 
570T704
+634V730Q704 755 700 796T683 865Q669 897 639 919T560 941Q516 941 487 929T439 903Q442 883 456 842T470 763Q470 
746 461 721T435 680Q412 660 384 649T296 638Q212 638 169 678T126 784Q126 840 170 884T279 958Q342 988 424 
1004T576 1021Q673 1021 754 1010T900
+962Q962 927 998 861T1035 687Q1035 574 1031 419T1026 215Q1026 170 1039 144T1081 105Q1098 97 1134 96T1201 
94V21zM704 542Q648 523 593 499T503 447Q466 419 445 376T424 273Q424 195 459 160T547 125Q602 125 637 147T700 
203L704 542z"/>
+                </glyph>
+
+                <glyph unicode="d" glyph-name="d" horiz-adv-x="1358">
+                    <path d="M1351 21L858 -8L843 6V98L836 100Q787 47 704 8T535 -32Q333 -32 202 118T71 506Q71 
717 217 868T572 1019Q654 1019 726 1001T841 957V1284Q841 1321 826 1353T786 1404Q755 1426 709 1435T615 
1449V1522L1155
+1548L1170 1532V221Q1170 183 1182 157T1223 116Q1244 105 1284 100T1351 94V21zM841 199V764Q834 787 822 815T787 
868Q767 889 734 905T658 921Q558 921 494 808T430 489Q430 408 441 344T482 226Q511 173 556 143T666 113Q727 113 
767 136T841 199z"/>
+                </glyph>
+
+                <glyph unicode="g" glyph-name="g" horiz-adv-x="1181">
+                    <path d="M1178 880H958Q997 836 1016 787T1036 685Q1036 616 999 556T902 457Q841 418 759 
396T581 374H418Q406 365 392 346T377 308Q377 264 412 247T539 228Q630 226 723 221T856 214Q914 211 971 191T1070
+137Q1116 102 1146 48T1176 -78Q1176 -154 1140 -221T1028 -337Q949 -388 839 -416T565 -444Q302 -444 165 -380T28 
-188Q28 -109 102 -58T332 -2V10Q240 41 189 92T137 212Q137 254 157 283T210 334Q238 353 278 366T345 388V399Q210 
449 147 521T83 697Q83 844
+218 932T562 1020Q630 1020 693 1009T790 988H1178V880zM709 689Q709 806 672 874T558 942Q519 942 490 924T443 
870Q426 836 420 791T414 697Q414 588 452 518T560 448Q632 448 670 511T709 689zM877 -151Q877 -117 858 -84T773 
-29Q737 -23 655 -21T428 -19Q393
+-49 370 -90T346 -189Q346 -214 360 -244T404 -300Q439 -329 482 -345T612 -362Q741 -362 809 -312T877 -151z"/>
+                </glyph>
+
+                <glyph unicode="r" glyph-name="r" horiz-adv-x="1065">
+                    <path d="M1054 809Q1054 733 1007 676T883 618Q810 618 760 655T709 764Q709 799 714 818T723 
855Q677 853 626 823T536 743V194Q536 159 547 136T584 100Q606 89 655 82T727 73V0H58V73Q83 75 108 78T152 88Q184
+99 196 122T208 182V764Q208 800 191 828T150 874Q132 886 105 894T44 905V978L521 1004L536 989V844H540Q609 924 
686 969T848 1015Q941 1015 997 958T1054 809z"/>
+                </glyph>
+
+             </font>
+        </defs>
+
+        <!-- The characters 'G', 'a', 'g' and 'r' should use the SVG version of Georgia, -->
+        <!-- the others should use SansSerif -->
+
+        <text x="50" y="150" font-family="SVGGeorgia, SansSerif" font-size="35">Georgia</text>
+
+
+        <!-- The characters 'd', 'G', 'a', 'g' and 'r' should use the bold version of SVG Georgia -->
+
+        <text x="50" y="225" font-family="SVGGeorgia, SansSerif" font-size="35" 
+              font-weight="bold">Bold Georgia</text>
+
+
+        <!-- The next two lines should only use the SansSerif font -->
+
+        <text x="50" y="300" font-family="SansSerif, SVGGeorgia" font-size="35" >SansSerif</text>
+
+        <text x="50" y="375" font-family="SVGGeorgia, SansSerif" font-size="35" 
+              font-style="italic" font-weight="bold">Bold Italic SansSerif</text>
+
+        <!-- description for each test -->
+        <g font-size="10">
+            <text x="50" y="170">font-family="SVGGeorgia, SansSerif"</text>
+            <text x="50" y="245">font-family="SVGGeorgia, SansSerif" font-weight="bold"</text>
+            <text x="50" y="320">font-family="SansSerif, SVGGeorgia"</text>
+            <text x="50" y="395">font-family="SVGGeorgia, SansSerif" font-weight="bold" 
font-style="italic"</text>
+        </g>
+       
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontDecorations.png 
b/tests/data/svg/batik/tests/spec/fonts/fontDecorations.png
new file mode 100644
index 0000000..94b803c
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontDecorations.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontDecorations.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontDecorations.svg
new file mode 100644
index 0000000..565e783
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontDecorations.svg
@@ -0,0 +1,303 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests text decorations with SVGFonts, also test tspan                     -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                      -->
+<!-- @version $Id: fontDecorations.svg 475685 2006-11-16 11:16:05Z cam $      -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>SVGFont - tspan and decoration test</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">SVGFont - tspan and Decoration Test</text>
+
+        <defs>
+
+            <!-- ============================= -->
+            <!-- SVG Font Definition           -->
+            <!-- ============================= -->
+     
+            <!-- This is an encoding of Microsoft's Comic Sans font -->
+            <!-- in SVG format (as allowed in the license). For the -->
+            <!-- true type version of this font, refer to           -->
+            <!-- http://www.microsoft.com/truetype                  -->
+            <!-- Converted using SteadyState's TrueType/SVG font    -->
+            <!-- toolkit (http://www.steadystate.com/svg            -->
+
+<font horiz-adv-x="959" id="SVGComic">
+<font-face
+  font-family="SVGComic"
+  units-per-em="2048"
+  panose-1="3 15 7 2 3 3 2 2 2 4"
+  ascent="1660"
+  descent="597"
+  alphabetic="0"/>
+<missing-glyph horiz-adv-x="1024" d="M128 0V1638H896V0H128zM256 128H768V1510H256V128z"/>
+<glyph unicode=" " glyph-name="space" horiz-adv-x="612"/>
+<glyph unicode="!" glyph-name="exclam" horiz-adv-x="487" d="M331 1516V403Q331 314 242 314Q153 314 153 
403Q153 444 151 525T148 647Q148 792 150 1081T153 1516Q153 1605 242 1605Q331 1605 331 1516zM332 23Q332 -13 304 
-39T239 -66Q199 -66 159 -14Q120
+35 120 76Q120 112 148 138T214 164Q253 164 294 112Q332 63 332 23z"/>
+<glyph unicode="&quot;" glyph-name="quotedbl" horiz-adv-x="869" d="M294 1116Q294 1099 299 1067T304 1018Q304 
981 277 957T212 932Q116 932 116 1103Q116 1169 119 1301T122 1499Q122 1538 147 1563T211 1588Q250 1588 275 
1563T300 1499Q300 1435 297 1308T294
+1116zM687 1495Q687 1479 684 1450T681 1408L672 1018Q670 928 583 928Q545 928 519 953T494 1016L503 1413Q505 
1492 516 1524Q537 1584 598 1584Q637 1584 662 1559T687 1495z"/>
+<glyph unicode="#" glyph-name="numbersign" horiz-adv-x="1726" d="M552 577H1052L1165 992H677L552 577zM365 
577L487 992H220Q125 992 125 1092Q125 1168 273 1168H537Q563 1284 616 1484Q645 1576 733 1576Q766 1576 787 
1550T809 1491Q809 1451 783 1359Q739
+1200 732 1168H1217Q1251 1289 1310 1491Q1336 1576 1408 1576Q1492 1576 1492 1498Q1492 1430 1409 1168H1604Q1706 
1168 1706 1093Q1706 988 1593 988Q1578 988 1547 990T1500 992H1354L1248 577H1452Q1525 577 1555 566Q1607 546 
1607 486Q1607 394 1520 394H1198L1108
+69Q1081 -28 996 -28Q914 -28 914 51Q914 110 947 223Q993 380 996 394H496Q466 277 391 50Q362 -21 293 -21Q213 
-21 213 58Q213 97 236 171Q271 283 306 394H115Q32 394 32 493Q32 532 66 556Q95 577 136 577H365z"/>
+<glyph unicode="$" glyph-name="dollar" horiz-adv-x="1420" d="M643 887V1246Q444 1171 444 1014Q444 917 643 
887zM821 676V156Q927 192 998 262Q1077 342 1077 435Q1077 609 821 676zM821 1636V1467H825Q921 1467 1044 
1434Q1205 1391 1205 1324Q1205 1236
+1116 1236Q1076 1236 976 1257T821 1278V871Q1042 851 1167 726Q1281 610 1281 446Q1281 245 1142 113Q1019 -3 821 
-40V-306Q821 -345 796 -370T731 -396Q643 -396 643 -308V-53Q155 -46 155 200Q155 290 238 290Q285 290 328 253Q392 
198 425 181Q505 141 643
+135V702H635Q480 708 367 778Q227 864 227 1017Q227 1154 355 1275Q473 1387 643 1438V1630Q643 1669 669 1695T735 
1721Q821 1721 821 1636z"/>
+<glyph unicode="%" glyph-name="percent" horiz-adv-x="1680" d="M443 1041Q303 1041 222 1138Q147 1229 147 
1370Q147 1468 249 1557Q347 1642 446 1642Q591 1642 677 1546Q759 1453 759 1307Q759 1185 657 1110Q566 1041 443 
1041zM1234 1468Q1197 1408 1155
+1309L1084 1147L886 722L662 250Q631 173 561 23Q533 -30 486 -30Q453 -30 427 -7T400 52Q400 67 406 85Q455 220 
564 438Q693 695 732 787L1002 1387Q1056 1520 1101 1569Q1132 1603 1165 1603Q1199 1603 1225 1578T1252 1518Q1252 
1496 1234 1468zM1260 -19Q1124
+-19 1034 62Q940 147 940 283Q940 431 1024 528Q1112 632 1258 632Q1394 632 1496 556Q1609 471 1609 338Q1609 185 
1511 83T1260 -19zM443 1474Q397 1474 357 1444Q314 1411 314 1370Q314 1290 346 1250T443 1209Q497 1209 541 
1233Q591 1261 591 1307Q591 1391
+554 1432T443 1474zM1258 464Q1186 464 1145 410Q1108 360 1108 283Q1108 216 1151 182T1282 148Q1362 148 1401 
195T1441 338Q1441 396 1379 433Q1325 464 1258 464z"/>
+<glyph unicode="&amp;" glyph-name="ampersand" horiz-adv-x="1340" d="M684 1084Q812 1190 812 1294Q812 1340 797 
1362T750 1385Q732 1385 696 1322T659 1237Q659 1170 684 1084zM608 811Q436 696 374 634Q253 513 253 379Q253 270 
340 201Q421 138 533 138Q735
+138 882 309Q806 422 608 811zM481 1237Q481 1337 564 1447Q653 1564 750 1564Q864 1564 929 1484Q990 1411 990 
1294Q990 1091 749 910Q826 741 986 485Q1006 540 1016 599Q1032 701 1039 726Q1065 808 1119 808Q1161 808 1185 
763Q1205 726 1205 680Q1205 477
+1101 304Q1268 42 1268 -7Q1268 -43 1240 -68T1175 -94Q1130 -94 1098 -43L983 156Q782 -40 533 -40Q346 -40 214 
75Q75 195 75 379Q75 573 222 732Q307 824 532 974Q481 1109 481 1237z"/>
+<glyph unicode="&apos;" glyph-name="quotesingle" horiz-adv-x="795" d="M462 1446Q462 1416 467 1357T472 
1268Q472 1140 382 1140Q320 1140 303 1184Q295 1207 295 1279Q295 1307 290 1362T284 1446Q284 1546 292 1581Q312 
1660 380 1660Q418 1660 444 1636T470
+1573Q470 1552 466 1510T462 1446z"/>
+<glyph unicode="(" glyph-name="parenleft" horiz-adv-x="750" d="M696 1513Q696 1478 634 1411Q588 1365 543 
1319Q432 1193 369 959Q314 755 314 558Q314 50 544 -187Q590 -223 637 -259Q695 -305 695 -350Q695 -383 669 
-407T609 -432Q579 -432 537 -409Q114
+-172 114 581Q114 852 223 1130Q345 1439 543 1578Q583 1606 606 1606Q642 1606 669 1578T696 1513z"/>
+<glyph unicode=")" glyph-name="parenright" horiz-adv-x="750" d="M696 581Q696 -172 272 -409Q231 -432 201 
-432Q167 -432 141 -408T115 -350Q115 -305 173 -259Q219 -223 266 -187Q496 50 496 558Q496 755 441 959Q377 1193 
267 1319Q221 1365 176 1411Q114
+1478 114 1513Q114 1549 140 1577T203 1606Q226 1606 267 1578Q465 1439 587 1130Q696 852 696 581z"/>
+<glyph unicode="*" glyph-name="asterisk" horiz-adv-x="1085" d="M47 1315Q47 1352 73 1381T135 1410Q159 1410 
406 1313Q398 1452 398 1505Q398 1544 423 1569T487 1594Q526 1594 551 1569T577 1505Q577 1450 583 1336Q823 1372 
877 1372Q914 1372 938 1346T963
+1281Q963 1211 888 1195Q818 1180 641 1159Q699 1106 767 1023Q856 913 856 870Q856 834 828 808T764 781Q726 781 
695 817Q634 899 496 1052Q290 819 217 819Q181 819 154 847T126 911Q126 945 158 977Q222 1031 344 1150Q262 1176 
104 1237Q47 1262 47 1315z"/>
+<glyph unicode="+" glyph-name="plus" horiz-adv-x="984" d="M913 643Q913 606 889 579T827 551Q815 551 791 
555T754 559L654 557Q593 555 554 557V322Q554 232 465 232Q421 232 399 254T376 322L375 437L374 553Q253 546 203 
546Q48 546 48 638Q48 703 103 719Q122
+724 203 724Q253 724 374 731L373 848Q373 939 382 974Q392 1010 413 1028T467 1046Q505 1046 531 1022T558 959Q558 
942 555 905T551 849L552 735L627 732Q647 732 688 734T749 737Q913 737 913 643z"/>
+<glyph unicode="," glyph-name="comma" horiz-adv-x="567" d="M285 -344Q250 -344 224 -317T198 -255Q198 -226 260 
-83Q314 41 343 94Q369 142 412 142Q448 142 473 115T499 52Q499 28 357 -290Q334 -344 285 -344z"/>
+<glyph unicode="-" glyph-name="hyphen" horiz-adv-x="853" d="M679 475Q543 461 195 461Q111 461 111 539Q111 617 
195 617Q274 617 432 624T669 631Q758 631 758 553Q758 484 679 475z"/>
+<glyph unicode="." glyph-name="period" horiz-adv-x="510" d="M267 -93Q215 -93 179 -57T143 31Q143 82 179 
118T267 155Q318 155 354 119T391 31Q391 -21 355 -57T267 -93z"/>
+<glyph unicode="/" glyph-name="slash" horiz-adv-x="1048" d="M177 -90Q140 -90 112 -65T84 -3Q84 13 91 31Q169 
246 385 650T680 1271Q811 1629 878 1626Q915 1625 943 1600T971 1538Q971 1515 960 1483L848 1211Q781 1026 657 
784L439 370L258 -31Q231 -90 177 -90z"/>
+<glyph unicode="0" glyph-name="zero" horiz-adv-x="1250" d="M611 -39Q307 -39 167 239Q61 453 61 796Q61 1086 
199 1302Q362 1555 642 1555Q905 1555 1052 1331Q1179 1137 1179 858Q1179 410 1037 186T611 -39zM641 1362Q455 1362 
346 1173Q255 1015 255 812Q255
+483 344 318T611 153Q823 153 915 395Q979 563 979 821Q979 1092 895 1227T641 1362z"/>
+<glyph unicode="1" glyph-name="one" horiz-adv-x="922" d="M704 -1H505L307 0Q237 0 209 9Q158 27 158 85Q158 186 
315 186L363 185L404 183Q404 231 396 325T387 466Q387 593 410 852Q432 1107 431 1239Q297 1135 260 1135Q220 1135 
191 1165T161 1234Q161 1281
+247 1348Q301 1386 400 1470Q488 1559 568 1559Q635 1559 635 1482Q635 1459 629 1414T623 1345Q623 1312 626 
1245T630 1145Q630 1031 606 805T582 466Q582 408 590 325T599 189L704 191Q746 191 773 164T801 95Q801 53 774 
26T704 -1z"/>
+<glyph unicode="2" glyph-name="two" horiz-adv-x="1250" d="M1008 -2Q983 -2 938 13T868 29Q817 29 715 23T561 
17Q522 17 446 7T330 -3Q319 -3 298 1T266 5Q197 5 176 72Q164 107 164 192Q164 425 291 567Q349 632 604 807Q747 
905 795 960Q881 1056 881 1185Q881
+1249 798 1299Q725 1344 655 1344Q563 1344 480 1291L337 1179Q294 1145 268 1145Q165 1145 165 1227Q165 1274 203 
1308Q320 1418 406 1467Q527 1536 655 1536Q817 1536 944 1448Q1086 1349 1086 1194Q1086 1092 1057 1006T969 
849Q894 759 715 648Q527 530 468
+469Q357 354 359 190L565 209Q777 221 868 221Q944 221 1012 195Q1102 160 1102 98Q1102 59 1075 29T1008 -2z"/>
+<glyph unicode="3" glyph-name="three" horiz-adv-x="1250" d="M605 -46Q454 -46 334 17Q199 90 152 222Q146 240 
146 257Q146 297 176 323T247 350Q287 350 316 313L362 244Q398 195 459 171T605 146Q714 146 796 214Q883 286 883 
390Q883 541 772 631Q674 709
+512 726Q401 737 401 816Q401 875 488 906L727 965Q796 990 831 1032T867 1136Q869 1224 799 1278Q726 1334 594 
1334Q526 1334 462 1301L349 1230Q316 1209 296 1209Q256 1209 228 1239T199 1309Q199 1388 352 1461Q485 1526 571 
1526Q786 1526 912 1431Q1047
+1329 1047 1140Q1047 905 857 830Q840 823 818 816Q951 767 1017 670T1083 426Q1083 229 944 92T605 -46z"/>
+<glyph unicode="4" glyph-name="four" horiz-adv-x="1250" d="M964 437V67Q964 -26 873 -26Q767 -26 767 119Q767 
137 769 170T771 215L770 442L329 453Q192 453 139 462Q48 477 48 533Q48 578 103 647L189 749L681 1467Q748 1560 
851 1560Q964 1560 964 1462V631Q981
+632 1005 632Q1189 632 1189 533Q1189 461 1113 442Q1079 433 964 437zM770 1283Q503 857 353 645L770 635V1283z"/>
+<glyph unicode="5" glyph-name="five" horiz-adv-x="1250" d="M562 -63Q278 -63 144 147Q126 176 126 203Q126 242 
157 270T227 299Q268 299 305 255Q358 191 385 173Q450 129 562 129Q735 129 849 261Q958 387 958 564Q958 710 910 
801Q848 916 719 916Q612 916
+544 887Q490 864 435 808L326 689Q282 644 236 644Q196 644 168 672T140 741Q140 761 156 919Q190 1234 190 
1333Q190 1368 173 1409T155 1471Q155 1532 260 1532Q280 1532 320 1529T381 1525Q439 1525 555 1529T729 1533Q756 
1533 811 1531T893 1529Q912 1529
+948 1536T1002 1544Q1041 1544 1071 1515T1101 1448Q1101 1336 864 1336Q833 1336 786 1338T729 1340L560 1337L391 
1332Q391 1287 354 999Q491 1108 719 1108Q939 1108 1055 936Q1153 790 1153 564Q1153 294 995 119Q831 -63 562 
-63z"/>
+<glyph unicode="6" glyph-name="six" horiz-adv-x="1250" d="M597 -72Q336 -72 213 119Q111 276 111 538Q111 1032 
512 1395L606 1490Q675 1556 710 1556Q750 1556 780 1528T811 1460Q813 1424 709 1321L505 1122Q424 1040 366 
874Q453 914 518 933T625 953Q859
+953 984 828T1109 475Q1109 236 974 85Q833 -72 597 -72zM597 749Q511 749 443 719Q417 707 312 642Q306 589 306 
538Q306 359 366 246Q442 102 603 102Q754 102 837 210Q914 310 914 475Q914 612 835 680T597 749z"/>
+<glyph unicode="7" glyph-name="seven" horiz-adv-x="1250" d="M1154 1306L1063 1200Q933 1048 824 832L642 
433Q623 389 558 202Q506 54 461 -19Q433 -66 381 -66Q341 -66 311 -38T280 29Q280 67 344 224L569 775Q718 1102 875 
1279L894 1300L392 1310L167 1316Q70
+1325 70 1412Q70 1454 98 1481T168 1508Q294 1508 546 1500T925 1492H1108Q1214 1492 1214 1429Q1214 1382 1154 
1306z"/>
+<glyph unicode="8" glyph-name="eight" horiz-adv-x="1250" d="M614 -54Q403 -54 273 38Q125 142 122 343Q118 666 
349 783Q171 891 171 1090Q171 1279 308 1404Q439 1524 626 1526Q1046 1530 1046 1111Q1046 991 998 926Q959 872 847 
815Q996 740 1056 653Q1126
+551 1126 372Q1126 168 975 52Q835 -54 614 -54zM623 1347Q494 1347 426 1274Q365 1206 366 1090Q367 950 596 
891Q716 926 768 961Q851 1017 851 1111Q851 1247 790 1302Q738 1347 623 1347zM605 714Q446 640 393 586Q310 503 
315 352Q319 227 430 165Q511 121
+614 121Q790 121 860 204Q916 270 916 404Q916 535 814 615Q746 670 605 714z"/>
+<glyph unicode="9" glyph-name="nine" horiz-adv-x="1250" d="M784 121Q711 67 550 -9Q371 -95 301 -95Q260 -95 
234 -65T207 5Q207 64 275 94L442 151Q597 214 687 296T851 529L894 615Q838 583 750 556T607 529Q418 529 280 
634Q112 762 112 998Q112 1277 284
+1417Q431 1536 670 1536Q854 1536 1000 1386Q1154 1227 1155 1002Q1156 748 1061 509Q959 251 784 121zM642 
1365Q474 1365 390 1278T304 1016Q304 869 407 788Q498 717 636 717Q716 717 803 765Q843 787 947 864Q960 951 960 
1002Q959 1127 855 1246T642 1365z"/>
+<glyph unicode=":" glyph-name="colon" horiz-adv-x="612" d="M414 226Q414 181 385 152T311 123Q266 123 238 
152Q209 181 209 226Q209 245 203 281T196 336Q196 378 227 406T302 434Q414 434 414 226zM397 956Q397 911 369 
882T295 853Q250 853 221 882T192
+956Q192 968 188 992T183 1030Q183 1073 213 1101T287 1129Q397 1129 397 956z"/>
+<glyph unicode=";" glyph-name="semicolon" horiz-adv-x="612" d="M411 950Q411 906 382 877T309 848Q265 848 236 
877T207 950Q207 963 202 987T197 1024Q197 1067 227 1095T301 1124Q411 1124 411 950zM171 -194Q81 -194 81 -100Q81 
-35 167 92Q256 224 314
+224Q350 224 378 197T406 134Q406 98 336 16Q264 -70 259 -109Q249 -194 171 -194z"/>
+<glyph unicode="&lt;" glyph-name="less" horiz-adv-x="781" d="M298 614Q354 573 436 487Q533 386 569 355T605 
287Q605 250 578 222T515 194Q487 194 459 215Q419 244 288 381Q188 486 95 522Q19 550 19 605Q19 655 88 688Q181 
733 292 850Q447 1012 476 1036T536
+1061Q572 1061 599 1034T627 969Q627 935 597 905Q501 803 298 614z"/>
+<glyph unicode="=" glyph-name="equal" horiz-adv-x="1045" d="M324 999L791 998Q880 998 880 909Q880 820 791 
820L323 821Q300 821 255 819T187 816Q148 816 124 842T99 906Q99 978 183 994Q205 999 324 999zM381 462Q447 462 
579 459T777 456Q866 456 866 367Q866
+278 777 278Q711 278 579 281T381 284Q351 284 291 280T202 276Q110 276 110 365Q110 447 196 454Q307 462 381 
462z"/>
+<glyph unicode="&gt;" glyph-name="greater" horiz-adv-x="781" d="M736 663Q736 627 699 592Q461 371 200 204Q172 
186 147 186Q111 186 85 214T58 279Q58 319 97 349L485 645Q396 704 265 826Q105 977 105 1035Q105 1071 133 
1098T197 1125Q234 1125 264 1091Q492
+836 677 740Q736 710 736 663z"/>
+<glyph unicode="?" glyph-name="question" horiz-adv-x="1073" d="M371 308Q330 308 299 339T268 411Q268 480 396 
581L635 761Q764 872 764 964Q764 1080 655 1178Q550 1273 432 1273Q369 1273 272 1209T152 1144Q111 1144 82 
1177T52 1251Q52 1330 205 1408Q342
+1478 432 1478Q633 1478 797 1321T961 964Q961 818 867 705Q811 637 659 529Q506 418 446 349Q411 308 371 308zM316 
-72Q272 -72 237 -43T201 29Q201 91 234 141Q271 197 329 197Q425 197 425 79Q425 24 399 -20Q367 -72 316 -72z"/>
+<glyph unicode="@" glyph-name="at" horiz-adv-x="1907" d="M1306 412Q1200 412 1123 443T999 535Q945 482 894 
455T793 428Q682 428 584 518T485 717Q485 902 630 1055T961 1208Q1003 1208 1031 1177T1059 1102Q1059 1042 959 
1013Q826 975 771 926Q690 855 690
+717Q690 688 717 661Q748 631 794 633Q881 637 955 795Q1022 933 1074 933Q1116 933 1142 902T1168 826Q1168 806 
1162 766T1155 706Q1155 641 1211 624Q1233 617 1306 617Q1443 617 1498 684Q1548 744 1548 883Q1548 1128 1351 
1283Q1171 1425 921 1425Q630 1425
+465 1205Q316 1009 316 712Q316 438 491 250Q673 54 959 54Q1040 54 1142 85L1317 150Q1361 166 1374 166Q1415 166 
1445 134T1475 58Q1475 -37 1262 -96Q1101 -140 961 -140Q820 -140 673 -86T420 60Q110 328 110 712Q110 1096 322 
1354Q547 1630 921 1630Q1259
+1630 1500 1427Q1753 1212 1753 883Q1753 658 1643 537Q1528 412 1306 412z"/>
+<glyph unicode="A" glyph-name="A" horiz-adv-x="1498" d="M1250 -30Q1158 -30 1090 206Q1064 296 1025 521Q923 
507 758 471L492 416Q442 285 321 33Q289 -23 234 -23Q194 -23 163 6T131 78Q131 126 282 443Q265 469 265 503Q265 
584 363 607Q477 821 651 1099Q888
+1478 946 1478Q1025 1478 1054 1368L1117 1032L1266 337L1323 179Q1352 98 1352 71Q1352 28 1321 -1T1250 -30zM897 
1113L611 652Q732 683 978 727L897 1113z"/>
+<glyph unicode="B" glyph-name="B" horiz-adv-x="1291" d="M886 40Q661 -48 311 -48Q268 -48 230 -8T191 
76V367Q191 510 209 775Q229 1061 231 1189Q230 1281 242 1463Q249 1513 275 1529Q411 1571 584 1571Q760 1571 922 
1451Q1109 1313 1109 1110Q1109 853
+909 705Q1059 641 1133 563T1208 393Q1208 272 1077 159Q986 79 886 40zM584 1367Q475 1367 431 1360L429 1185L409 
798Q551 786 561 787Q712 799 808 881Q911 970 911 1110Q911 1205 806 1286T584 1367zM696 566L590 583Q577 583 551 
582T510 580Q456 580 395
+589Q389 463 389 364V157Q651 166 816 231Q886 258 950 315Q1011 367 1011 393Q1011 440 883 499Q787 544 696 
566z"/>
+<glyph unicode="C" glyph-name="C" horiz-adv-x="1234" d="M1104 1122Q1040 1122 1008 1197Q980 1261 956 1275Q935 
1286 852 1286Q707 1286 530 1064Q290 766 290 499Q290 370 373 277Q458 181 578 181Q681 181 785 234Q843 264 963 
352Q1020 394 1049 394Q1092
+394 1121 362T1150 289Q1150 244 1112 210Q848 -24 578 -24Q371 -24 228 135Q90 289 90 499Q90 838 374 1194Q611 
1491 852 1491Q901 1491 940 1487T1009 1472Q1044 1523 1100 1523Q1169 1523 1187 1432Q1203 1351 1203 1233Q1203 
1192 1181 1161Q1154 1122 1104
+1122z"/>
+<glyph unicode="D" glyph-name="D" horiz-adv-x="1478" d="M1076 7Q921 -99 631 -99Q558 -99 464 -76Q351 -49 294 
-6H284Q241 -6 212 24T183 97Q183 202 192 411T202 726Q202 843 198 1075T193 1425Q193 1466 235 1511T319 1556Q343 
1556 479 1489Q633 1414 657
+1406Q941 1309 1141 1108Q1376 871 1376 587Q1376 416 1296 259T1076 7zM866 1065Q764 1132 395 1295L400 1007L403 
720L387 174Q394 171 408 161Q496 102 630 102Q858 102 962 172Q1059 238 1116 349T1174 582Q1174 864 866 1065z"/>
+<glyph unicode="E" glyph-name="E" horiz-adv-x="1279" d="M1115 1346Q1101 1346 1084 1351Q915 1399 758 1399Q676 
1399 579 1384T370 1338Q379 1273 379 1234Q379 1095 362 852L800 894Q993 914 1037 914Q1081 914 1111 886T1141 
811Q1141 720 1049 709L811
+688L349 646Q345 575 343 512T340 393Q340 172 372 133Q396 105 529 105Q591 105 715 108T903 112Q923 112 962 
118T1020 125Q1126 125 1126 21Q1126 -63 1041 -80Q947 -99 634 -99Q324 -99 236 -17Q140 72 140 393Q140 457 143 
533T151 697Q140 720 140 746Q140
+780 159 807Q179 1096 179 1234Q179 1271 169 1342T159 1451Q159 1570 259 1570Q301 1570 331 1541Q451 1573 557 
1589T758 1605Q1001 1605 1146 1547Q1213 1520 1213 1451Q1213 1411 1187 1380Q1158 1346 1115 1346z"/>
+<glyph unicode="F" glyph-name="F" horiz-adv-x="1243" d="M1106 1314Q1088 1314 1068 1322Q944 1368 740 1368Q674 
1368 586 1359T387 1329L385 897Q578 948 675 948Q829 948 994 930Q1088 920 1088 828Q1088 783 1059 754T987 
724Q935 724 831 733T675 742Q607
+742 381 684L372 -4Q372 -47 344 -76T273 -106Q230 -106 202 -77T173 -4Q173 193 180 587T188 1179Q188 1223 187 
1311T185 1444Q185 1488 212 1518T284 1548Q317 1548 343 1530Q467 1552 566 1562T740 1573Q855 1573 1003 1540Q1204 
1494 1204 1420Q1204 1380
+1178 1349Q1149 1314 1106 1314z"/>
+<glyph unicode="G" glyph-name="G" horiz-adv-x="1392" d="M1300 605Q1238 298 1040 115T571 -69Q325 -69 202 
68T79 481Q79 740 201 1014T516 1458Q644 1571 787 1571Q878 1571 1027 1511Q1209 1439 1209 1352Q1209 1311 1179 
1279T1107 1247Q1085 1247 1045
+1272Q892 1365 787 1365Q712 1365 630 1287Q589 1248 512 1145Q281 839 281 481Q281 293 339 218Q402 136 571 
136Q750 136 882 249Q1021 369 1076 592Q799 578 601 485Q578 474 556 474Q512 474 483 508Q456 539 456 580Q456 635 
509 668Q725 800 1254 800Q1297
+800 1326 771T1355 698Q1355 633 1300 605z"/>
+<glyph unicode="H" glyph-name="H" horiz-adv-x="1573" d="M1456 1409Q1441 1367 1441 1286Q1441 1256 1443 
1197T1445 1108Q1445 1008 1428 810T1410 512Q1410 436 1421 284T1432 55Q1432 14 1405 -14T1336 -42Q1296 -42 1268 
-14T1240 55Q1240 132 1229 284T1218
+512Q1218 585 1223 660Q1052 657 800 609L380 527Q380 437 362 272T344 15Q344 -26 317 -54T248 -83Q207 -83 180 
-55T152 15Q152 121 169 331T187 648Q187 703 183 814T179 981Q179 1060 189 1218T199 1456Q199 1498 226 1526T295 
1554Q336 1554 363 1526T391
+1456Q391 1376 381 1217T370 977L376 724L805 805Q1062 853 1238 855Q1249 998 1249 1286Q1249 1362 1274 1440Q1307 
1547 1367 1547Q1405 1547 1435 1520T1465 1450Q1465 1435 1456 1409z"/>
+<glyph unicode="I" glyph-name="I" horiz-adv-x="1119" d="M957 1246Q893 1246 796 1259L635 1280Q612 989 612 
724Q612 654 616 551T620 378Q620 284 613 207L928 211Q970 211 998 182T1027 109Q1027 65 999 36T928 6Q872 6 760 
4T592 1Q526 1 395 -17T196 -36Q154
+-36 126 -7T97 66Q97 109 125 139T196 169Q261 169 411 190Q421 271 421 375Q421 444 415 543T408 711Q408 942 436 
1288L306 1284L176 1281Q133 1281 104 1310T75 1384Q75 1477 169 1486Q250 1494 472 1494Q671 1494 971 1451Q1060 
1438 1060 1344Q1060 1297 1026
+1269Q996 1246 957 1246z"/>
+<glyph unicode="J" glyph-name="J" horiz-adv-x="1362" d="M1197 1294Q1179 1294 1136 1301T1068 1309Q1019 1309 
953 1306L958 1187Q958 443 859 104Q793 -120 628 -120Q454 -120 283 6Q94 146 94 327Q94 450 195 450Q296 450 296 
329Q296 246 414 164Q527 86
+628 86Q710 86 742 589Q757 827 757 1187Q757 1215 752 1295L691 1294Q652 1294 574 1296T455 1299Q411 1299 381 
1327T351 1403Q351 1506 490 1506Q524 1506 591 1503T691 1500Q754 1500 879 1507T1068 1515Q1296 1515 1296 
1399Q1296 1359 1269 1328Q1240 1294
+1197 1294z"/>
+<glyph unicode="K" glyph-name="K" horiz-adv-x="1251" d="M1153 -41Q1001 -41 720 226L421 527V513L420 -11Q420 
-110 333 -110Q276 -110 242 -60Q214 -19 214 29Q214 263 228 729T242 1428Q242 1471 270 1501T341 1531Q384 1531 
412 1501T441 1428Q441 1331
+429 1126Q417 928 418 823Q552 950 721 1142L1008 1475Q1042 1514 1084 1514Q1124 1514 1155 1484T1186 1411Q1186 
1345 928 1059Q750 864 560 677Q680 551 936 315L1041 227Q1098 183 1164 161Q1243 135 1243 62Q1243 28 1222 
-3Q1196 -41 1153 -41z"/>
+<glyph unicode="L" glyph-name="L" horiz-adv-x="1128" d="M1025 41Q912 -12 670 -54Q447 -93 306 -93Q205 -93 161 
-62Q101 -20 101 92L121 423Q147 881 147 1439Q147 1482 175 1512T246 1542Q289 1542 317 1512T346 1439Q346 874 319 
411L306 259Q298 176 300
+112Q561 109 960 235Q977 240 992 240Q1035 240 1064 206Q1089 175 1089 135Q1089 71 1025 41z"/>
+<glyph unicode="M" glyph-name="M" horiz-adv-x="1808" d="M1625 -83Q1571 -83 1536 -27Q1506 21 1482 133L1446 
305Q1405 465 1316 1011L1116 408L1057 218Q1021 105 982 33Q940 -43 869 -43Q810 -43 776 21Q754 63 736 128L707 
239Q606 592 529 995L493 816L364
+288Q356 195 314 13Q284 -65 215 -65Q166 -65 137 -30Q112 0 112 44Q112 211 181 454L291 857L349 1172Q393 1393 
442 1461Q482 1519 541 1519Q606 1519 638 1445Q677 1356 722 1082Q775 753 887 370Q1035 755 1143 1172L1173 
1318Q1191 1406 1220 1460Q1259 1534
+1327 1534Q1413 1534 1458 1368Q1474 1311 1497 1132Q1556 680 1644 360L1693 188Q1731 50 1731 18Q1731 -25 1699 
-54T1625 -83z"/>
+<glyph unicode="N" glyph-name="N" horiz-adv-x="1632" d="M1541 222Q1541 174 1525 62Q1509 -39 1418 -39Q1363 
-39 1287 33Q880 418 353 1144L348 917L345 689Q345 606 348 440T352 190Q352 -79 248 -79Q193 -79 161 -44Q132 -13 
132 30Q132 72 138 157T145
+284Q145 346 149 469T153 655Q153 721 150 854T147 1054Q147 1117 135 1241T123 1429Q123 1475 162 1513T252 
1551Q305 1551 383 1435Q632 1062 831 815Q1068 522 1351 255Q1354 298 1351 382L1348 508Q1348 947 1314 1207Q1310 
1233 1287 1312Q1267 1380 1267
+1418Q1267 1534 1373 1534Q1547 1534 1547 885Q1547 774 1544 554T1541 222z"/>
+<glyph unicode="O" glyph-name="O" horiz-adv-x="1635" d="M802 -61Q520 -61 324 108Q116 288 116 572Q116 918 321 
1201Q550 1515 892 1515Q1221 1515 1381 1367Q1548 1213 1548 881Q1548 535 1360 257Q1144 -61 802 -61zM892 
1310Q647 1310 477 1066Q320 842
+320 572Q320 379 463 258Q600 144 802 144Q1045 144 1203 389Q1344 608 1344 881Q1344 1120 1237 1217Q1135 1310 
892 1310z"/>
+<glyph unicode="P" glyph-name="P" horiz-adv-x="1066" d="M413 587Q385 587 291 600Q283 449 283 71Q283 31 257 
4T192 -24Q152 -24 126 3T100 71V365Q100 512 118 779Q138 1068 140 1193V1331Q140 1430 152 1475Q175 1563 250 
1551Q282 1561 341 1566T486 1571Q669
+1571 829 1446Q1005 1308 1005 1114Q1005 866 817 719Q649 587 413 587zM463 1381Q419 1381 385 1379T326 1373L324 
1189L303 791L413 778Q581 778 696 863Q822 956 822 1114Q822 1226 702 1307Q591 1381 463 1381z"/>
+<glyph unicode="Q" glyph-name="Q" horiz-adv-x="1795" d="M1646 -438Q1602 -438 1409 -267L1170 -48Q1001 -116 
835 -116Q534 -116 306 124T77 667Q77 1024 343 1273Q603 1515 958 1515Q1332 1515 1525 1235Q1689 995 1689 
614Q1689 283 1365 57L1583 -144L1712
+-254Q1750 -290 1750 -332Q1750 -373 1720 -405T1646 -438zM958 1308Q684 1308 486 1125Q282 937 282 667Q282 448 
451 271Q621 91 835 91Q904 91 977 108Q784 276 784 373Q784 417 816 446T889 475Q937 475 974 427Q1073 298 1198 
196Q1483 362 1483 614Q1483
+911 1362 1096Q1224 1308 958 1308z"/>
+<glyph unicode="R" glyph-name="R" horiz-adv-x="1287" d="M1126 -11Q1088 -11 1055 21Q724 348 319 461L327 
265L332 68Q332 24 304 -5T232 -35Q189 -35 161 -6T132 68Q132 147 125 303T117 539Q117 631 137 813T157 1086Q157 
1137 148 1237T138 1388Q138 1445
+170 1488Q208 1541 275 1536L516 1517Q653 1500 747 1450Q1152 1235 1152 925Q1152 773 1014 656Q903 562 737 
513Q1048 346 1202 161Q1228 129 1228 93Q1228 51 1198 20T1126 -11zM489 1311L341 1323L351 1202Q358 1128 358 
1081Q358 1001 345 882L324 683Q338
+683 367 682T412 681Q667 681 794 749Q850 780 898 830Q951 886 951 925Q951 1064 793 1184Q648 1294 489 1311z"/>
+<glyph unicode="S" glyph-name="S" horiz-adv-x="1420" d="M134 249Q133 291 162 317T235 344Q284 344 321 288Q372 
212 412 185Q497 129 659 129Q814 129 947 196Q1117 282 1117 435Q1117 561 974 634Q853 697 675 702Q517 708 406 
771Q264 852 264 1003Q264
+1181 466 1328Q659 1467 865 1467Q962 1467 1084 1434Q1246 1391 1246 1324Q1246 1236 1156 1236Q1116 1236 1016 
1257T861 1278Q705 1276 596 1201Q484 1124 484 1014Q484 931 632 897Q687 884 845 873Q1074 856 1203 729Q1321 613 
1321 446Q1321 208 1101 66Q910
+-57 658 -57Q475 -57 323 13Q137 99 134 249z"/>
+<glyph unicode="T" glyph-name="T" horiz-adv-x="1392" d="M1362 1263Q1288 1263 1134 1275Q984 1286 906 
1285H835Q838 1147 862 837Q884 548 884 388Q884 353 891 282T898 175Q898 107 876 58Q848 -8 789 -8Q749 -8 717 
20T685 92Q685 107 690 137T695 182Q695
+231 689 329T682 477Q682 620 659 879Q635 1159 632 1281L541 1280Q322 1280 197 1312Q116 1333 116 1411Q116 1452 
142 1483Q172 1518 219 1515Q254 1513 379 1497Q479 1485 541 1485Q601 1485 723 1487T905 1490Q982 1490 1133 
1479T1362 1468Q1405 1468 1434
+1439T1463 1365Q1463 1322 1434 1293T1362 1263z"/>
+<glyph unicode="U" glyph-name="U" horiz-adv-x="1509" d="M790 -40Q479 -40 326 139Q202 283 170 565Q155 692 155 
1072Q155 1212 161 1298Q167 1389 179 1425Q204 1498 269 1498Q361 1498 361 1329V742Q361 136 785 136Q1184 136 
1184 1156Q1184 1194 1184 1254Q1183
+1314 1183 1334Q1183 1396 1205 1443Q1233 1503 1288 1503Q1388 1503 1388 1366Q1388 1325 1389 1242Q1389 1159 
1389 1118Q1389 -40 790 -40z"/>
+<glyph unicode="V" glyph-name="V" horiz-adv-x="1331" d="M1306 1371Q1244 1278 1205 1176L1129 957L860 230Q813 
102 750 -20Q718 -80 660 -80Q583 -80 552 -2Q431 302 283 873L204 1148Q145 1356 145 1420Q145 1465 177 1494Q206 
1521 247 1521Q323 1521 345
+1439L382 1265L478 925Q574 553 665 284L671 300L939 1026L1024 1271Q1081 1419 1145 1495Q1178 1535 1223 
1535Q1263 1535 1294 1505T1326 1431Q1326 1401 1306 1371z"/>
+<glyph unicode="W" glyph-name="W" horiz-adv-x="2129" d="M1423 -96Q1377 -96 1342 -70Q1302 -40 1302 4Q1256 125 
1244 201T1165 632Q1114 901 1097 1064Q1008 734 906 505Q788 240 753 90Q765 67 765 45Q765 0 725 -29Q689 -56 643 
-56Q508 -56 508 65L477
+192L368 682Q303 930 146 1393Q139 1415 139 1433Q139 1526 244 1526Q309 1526 344 1455Q362 1419 417 1248Q476 
1067 535 812L632 370Q739 618 845 974Q910 1191 944 1275Q1034 1496 1119 1496Q1189 1496 1218 1425Q1254 1339 1291 
1015Q1311 851 1359 621L1445
+228Q1579 550 1780 1099Q1791 1129 1830 1288Q1859 1405 1901 1470Q1937 1525 1995 1525Q2096 1525 2096 1425Q2096 
1408 2064 1325L2024 1217L1969 1039L1672 317Q1631 198 1531 -29Q1495 -96 1423 -96z"/>
+<glyph unicode="X" glyph-name="X" horiz-adv-x="1482" d="M1379 1349Q1245 1187 1173 1082L1048 898Q975 794 911 
723L1131 401Q1262 210 1364 89Q1391 56 1391 20Q1391 -22 1361 -53T1288 -84Q1250 -84 1217 -53Q1143 17 1063 
137L929 343L772 568L428 170L244
+-36Q211 -69 171 -69Q130 -69 99 -38T68 35Q68 71 94 103L274 304L649 739Q539 886 415 1034L299 1191Q229 1285 169 
1335Q127 1370 127 1416Q127 1457 156 1489T228 1521Q313 1521 445 1340Q486 1279 570 1167Q684 1031 787 894L1015 
1212Q1237 1521 1303 1521Q1344
+1521 1375 1490T1406 1417Q1406 1382 1379 1349z"/>
+<glyph unicode="Y" glyph-name="Y" horiz-adv-x="1301" d="M1172 1279Q1148 1241 1108 1162L936 737Q836 498 748 
319L623 96L570 -12Q537 -70 481 -70Q442 -70 410 -41T378 31Q378 65 472 244L595 469Q416 700 363 833Q318 946 213 
1104Q69 1320 44 1365Q29 1392
+29 1419Q29 1462 60 1491T132 1521Q181 1521 214 1474L294 1350Q400 1193 434 1136Q509 1013 551 908Q584 825 692 
681L921 1239Q960 1308 1029 1452Q1057 1520 1122 1520Q1162 1520 1193 1492T1225 1420Q1225 1374 1172 1279z"/>
+<glyph unicode="Z" glyph-name="Z" horiz-adv-x="1420" d="M1266 1251L1131 1159Q949 1018 719 708L368 197Q343 
159 319 127L708 142Q963 154 1098 154Q1230 154 1293 142Q1374 126 1377 60Q1379 11 1345 -18Q1315 -43 1270 
-43Q1241 -43 1183 -40T1096 -36Q944
+-36 640 -43T183 -51Q68 -51 68 50Q68 116 130 216L237 365L598 867Q821 1162 1013 1325L663 1305H259Q248 1305 227 
1304T195 1302Q89 1302 89 1405Q89 1473 143 1495Q176 1509 252 1509Q321 1509 457 1495T663 1480Q740 1480 893 
1490T1125 1500Q1382 1500 1382
+1403Q1382 1337 1266 1251z"/>
+<glyph unicode="[" glyph-name="bracketleft" horiz-adv-x="771" d="M440 -412Q418 -412 373 -414T305 -417Q176 
-417 176 -300Q176 -117 190 403T205 1107L189 1410L188 1424Q186 1462 211 1491T277 1520Q307 1520 367 1518T458 
1515Q477 1515 514 1517T571 1520Q663
+1520 663 1423Q663 1334 579 1326T376 1323Q382 1233 382 1120L369 449L353 -221L440 -218Q469 -218 527 -220T615 
-223Q655 -223 678 -251T702 -320Q702 -360 679 -388T615 -417Q586 -417 528 -415T440 -412z"/>
+<glyph unicode="\" glyph-name="backslash" horiz-adv-x="1126" d="M920 -141Q870 -141 840 -90Q802 -27 723 
160L432 905Q368 1056 193 1374Q177 1403 177 1427Q177 1466 206 1495T274 1524Q319 1524 350 1478Q464 1307 597 
990L802 475Q909 203 1003 2Q1015
+-23 1015 -45Q1015 -84 987 -112T920 -141z"/>
+<glyph unicode="]" glyph-name="bracketright" horiz-adv-x="771" d="M438 -412Q461 -412 506 -414T573 -417Q702 
-417 702 -300Q702 -117 688 403T673 1107L689 1410L690 1424Q692 1462 667 1491T602 1520Q571 1520 511 1518T420 
1515Q401 1515 364 1517T307
+1520Q215 1520 215 1423Q215 1334 299 1326T503 1323Q496 1233 496 1120L509 449L525 -221L438 -218Q409 -218 351 
-220T263 -223Q224 -223 200 -251T176 -320Q176 -360 200 -388T263 -417Q292 -417 350 -415T438 -412z"/>
+<glyph unicode="^" glyph-name="asciicircum" horiz-adv-x="1190" d="M594 1646Q649 1646 726 1578Q750 1557 836 
1467L994 1297Q1021 1267 1021 1236Q1021 1199 993 1172T929 1144Q896 1144 866 1173Q786 1263 615 1433Q361 1122 
289 1122Q253 1122 226 1150T198
+1214Q198 1249 229 1278Q284 1332 533 1615Q560 1646 594 1646z"/>
+<glyph unicode="_" glyph-name="underscore" horiz-adv-x="1284" d="M973 -345Q902 -345 760 -340T547 -335H102Q79 
-335 33 -340T-35 -345V-160Q65 -160 265 -159T565 -157Q636 -157 776 -162T988 -168L1323 -160V-345H973z"/>
+<glyph unicode="`" glyph-name="grave" horiz-adv-x="1139" d="M577 1267Q577 1231 549 1205T484 1178Q441 1178 
412 1220L312 1369Q259 1442 188 1497Q149 1527 149 1568Q149 1604 175 1632T238 1661Q300 1661 440 1495Q577 1331 
577 1267z"/>
+<glyph unicode="a" glyph-name="a" horiz-adv-x="1048" d="M920 -66Q901 -66 851 -22Q806 19 784 51Q688 -1 615 
-27T493 -54Q259 -54 152 78Q51 202 51 458Q51 700 217 872T615 1044Q702 1044 810 999Q946 943 946 864Q946 837 926 
816Q916 778 911 691T904 468Q903
+344 921 272Q931 228 984 96Q991 78 1007 43L1013 26Q1013 -14 985 -40T920 -66zM712 629Q712 672 717 722T734 
830Q697 849 671 858T628 867Q473 867 361 741T248 449Q248 285 306 203T480 121Q576 121 643 156Q679 175 744 
232Q712 497 712 629z"/>
+<glyph unicode="b" glyph-name="b" horiz-adv-x="1215" d="M606 -42Q453 -42 328 18Q296 -30 250 -30Q212 -30 186 
-4T159 63Q159 89 161 140T164 217Q164 323 159 534T153 852Q153 925 154 1128T155 1406Q155 1466 180 1514Q213 1575 
271 1575Q346 1575 346 1488Q346
+1474 341 1447T336 1406L333 1187L331 932Q418 991 496 1020T644 1050Q859 1050 993 885Q1119 730 1119 504Q1119 
276 972 117T606 -42zM644 861Q562 861 476 815Q434 792 332 716L330 543L331 387L332 223Q380 201 467 167Q529 148 
606 148Q751 148 844 250T937
+504Q937 653 862 753Q781 861 644 861z"/>
+<glyph unicode="c" glyph-name="c" horiz-adv-x="1052" d="M591 -63Q386 -63 249 61Q105 191 105 404Q105 607 240 
823Q390 1063 578 1063Q676 1063 797 1017Q950 958 950 873Q950 835 925 806T863 776Q834 776 813 793T771 828Q712 
875 578 875Q476 875 376 693Q285
+526 285 404Q285 272 375 196Q459 125 591 125Q651 125 719 157L835 219Q865 235 878 235Q915 235 942 206T969 
138Q969 65 815 -3Q680 -63 591 -63z"/>
+<glyph unicode="d" glyph-name="d" horiz-adv-x="1203" d="M1060 883Q1048 736 1048 589Q1048 256 1079 86Q1081 72 
1081 63Q1081 23 1053 -3T988 -29Q926 -29 897 61Q825 8 748 -19T586 -46Q379 -46 243 92Q103 233 103 454Q103 721 
244 882T612 1043Q728 1043
+791 1007L885 938Q899 1359 918 1505Q931 1594 1009 1594Q1100 1594 1100 1497Q1100 1358 1060 883zM616 857Q448 
857 364 758T280 458Q280 329 371 236T586 143Q670 143 728 174Q762 192 839 257Q854 270 868 288L865 461L866 
577L868 695Q830 776 767 816T616
+857z"/>
+<glyph unicode="e" glyph-name="e" horiz-adv-x="1122" d="M606 -46Q380 -46 240 67Q87 192 87 417Q87 677 213 
853Q350 1045 579 1045Q745 1045 850 989Q979 920 979 777Q979 677 866 595Q816 559 654 483L272 302Q328 219 411 
177T606 135Q675 135 768 161Q886
+194 920 247T993 301Q1028 301 1055 275T1083 213Q1083 102 904 22Q751 -46 606 -46zM579 865Q457 865 376 771T255 
486L562 632Q743 720 820 785Q734 865 579 865z"/>
+<glyph unicode="f" glyph-name="f" horiz-adv-x="1041" d="M811 1406Q569 1406 540 1070L537 1008Q707 1020 757 
1020Q916 1020 916 920Q916 847 838 833Q804 827 759 828T528 815L520 587Q520 525 524 401T528 216Q528 26 506 
-80Q489 -160 413 -160Q372 -160
+343 -134T314 -67Q314 -59 316 -47Q337 83 337 236L334 509V799Q209 789 176 789Q75 789 75 886Q75 985 250 990L346 
993Q349 1049 361 1145Q387 1367 473 1472Q577 1599 798 1599Q941 1599 941 1502Q941 1406 811 1406z"/>
+<glyph unicode="g" glyph-name="g" horiz-adv-x="1087" d="M962 431L939 95Q933 -105 898 -232Q853 -394 754 
-471Q634 -564 407 -564Q274 -564 184 -546Q58 -521 58 -442Q58 -353 145 -353Q181 -353 265 -370T451 -386Q643 -383 
716 -200Q764 -78 767 175Q713
+75 639 25T468 -25Q287 -25 174 98T60 419Q60 689 215 854Q375 1024 651 1024Q744 1024 807 1000T903 928Q1010 925 
1010 809Q1010 738 989 619Q966 481 962 431zM641 864Q451 864 347 733Q254 615 254 433Q254 288 309 215T474 
142Q575 142 670 256Q756 361 768
+464Q789 572 813 803Q773 834 730 849T641 864z"/>
+<glyph unicode="h" glyph-name="h" horiz-adv-x="1183" d="M976 -62Q905 -62 883 14Q860 96 841 247Q823 392 823 
485Q823 511 825 564T828 643Q828 831 734 831Q607 831 507 716Q456 657 367 491Q367 110 335 40Q307 -22 248 
-22Q207 -22 176 6T145 74Q145 88
+154 118Q162 143 165 264L168 412L171 1147Q178 1271 178 1314Q178 1365 169 1410T159 1505Q159 1547 188 1574T259 
1602Q341 1602 355 1514Q371 1417 371 1339Q371 1234 364 1120Q358 1011 359 901L360 813Q442 923 535 977T734 
1032Q900 1032 962 924Q1006 848
+1012 668L1020 477L1040 269Q1054 152 1074 63Q1078 46 1078 34Q1078 -7 1048 -34T976 -62z"/>
+<glyph unicode="i" glyph-name="i" horiz-adv-x="574" d="M330 1266Q282 1266 247 1300T212 1382Q212 1430 247 
1464T330 1498Q378 1498 412 1464T447 1382Q447 1334 413 1300T330 1266zM375 454Q375 394 378 275T382 95Q382 51 
355 23T284 -5Q241 -5 214 23T186
+95Q186 155 183 274T179 454Q179 548 189 688T199 923Q199 968 226 996T297 1024Q340 1024 367 996T395 923Q395 829 
385 689T375 454z"/>
+<glyph unicode="j" glyph-name="j" horiz-adv-x="826" d="M467 1265Q419 1265 385 1299T350 1380Q350 1428 384 
1462T467 1496Q515 1496 550 1462T585 1380Q585 1333 550 1299T467 1265zM459 -232Q460 -115 425 367L391 918Q391 
968 419 1007T492 1046Q526 1046
+560 1021T596 970L629 394L656 -222Q656 -361 573 -474Q483 -597 354 -597Q139 -597 -6 -266Q-18 -239 -18 -218Q-18 
-178 13 -149T85 -120Q144 -120 208 -250Q224 -284 264 -348Q303 -398 354 -398Q398 -398 429 -332Q453 -282 459 
-232z"/>
+<glyph unicode="k" glyph-name="k" horiz-adv-x="1106" d="M972 -41Q917 -41 887 17Q835 118 730 256L553 497Q495 
451 373 368Q362 213 362 66Q362 21 335 -7T264 -35Q163 -35 163 101Q163 184 174 349T186 598Q186 750 190 945T195 
1291Q195 1336 191 1397T186
+1503Q186 1548 213 1576T284 1604Q327 1604 354 1576T382 1503Q382 1457 387 1395T392 1286L385 964Q380 790 382 
616Q518 720 644 844L864 1071Q897 1105 935 1105Q974 1105 1005 1074T1037 1002Q1037 968 1008 935Q885 791 705 
626L923 329Q1076 120 1076 57Q1076
+17 1045 -12T972 -41z"/>
+<glyph unicode="l" glyph-name="l" horiz-adv-x="561" d="M393 786L378 289Q378 210 370 57Q360 -43 272 -43Q174 
-43 174 59Q174 180 185 422T196 786Q196 944 201 1147T206 1509Q206 1609 304 1609Q403 1609 403 1509Q403 1351 398 
1148T393 786z"/>
+<glyph unicode="m" glyph-name="m" horiz-adv-x="1591" d="M1409 -83Q1327 -83 1313 4Q1295 114 1277 314L1243 
624Q1233 693 1209 759Q1175 849 1135 849Q1098 849 997 786Q901 728 871 693Q870 599 876 505L906 238Q925 80 925 
-23Q925 -67 898 -95T827 -124Q784
+-124 757 -96T729 -23Q729 98 705 334T680 692Q680 798 650 857Q580 825 508 753L390 621Q374 597 339 558Q339 498 
328 381T317 208Q317 178 326 124T336 46Q336 5 306 -23T234 -51Q121 -51 121 206Q121 266 132 385T143 564Q143 617 
134 723T124 883Q124 1110
+226 1110Q265 1110 297 1076T330 1002Q330 983 325 943T320 882L322 777Q374 884 475 970T647 1057Q804 1057 863 
901Q918 974 994 1010T1168 1047Q1335 1047 1396 867Q1408 831 1437 586Q1465 414 1509 13Q1512 -27 1482 -55T1409 
-83z"/>
+<glyph unicode="n" glyph-name="n" horiz-adv-x="1072" d="M906 -71Q820 -71 809 23L781 242Q767 359 767 461Q767 
489 770 556T774 651Q774 867 694 867Q582 867 480 734Q388 613 336 428Q334 389 327 330Q321 280 321 233Q321 203 
327 143T333 53Q333 8 306
+-20T235 -48Q191 -48 164 -20T137 53Q137 83 131 143T124 233Q124 336 138 518T153 804Q153 836 150 899T146 
994Q146 1037 174 1064T245 1092Q337 1092 346 962L349 845Q517 1069 694 1069Q854 1069 917 928Q960 834 964 
650V549L963 456Q963 373 984 242T1006
+28Q1006 -16 978 -43T906 -71z"/>
+<glyph unicode="o" glyph-name="o" horiz-adv-x="1077" d="M514 -59Q346 -59 225 65Q90 203 83 436Q77 662 197 
834Q337 1037 587 1037Q787 1037 890 854Q972 706 969 498Q966 276 853 119Q725 -59 514 -59zM574 834Q427 835 345 
694Q280 581 280 436Q280 291
+359 210Q425 143 514 143Q618 143 693 219Q778 303 783 446Q797 833 574 834z"/>
+<glyph unicode="p" glyph-name="p" horiz-adv-x="1095" d="M564 -35Q464 -35 344 -3L342 -481Q342 -525 315 
-553T244 -581Q201 -581 174 -553T146 -481L149 -81V318Q146 537 134 717L119 920Q119 991 145 1040Q175 1099 232 
1099Q271 1099 297 1072T324 1004Q324
+995 321 971Q316 940 314 914Q400 973 480 1002T633 1032Q838 1032 933 850Q1008 706 1008 469Q1008 253 892 
113Q769 -35 564 -35zM633 832Q541 832 467 791Q414 762 333 685Q346 458 346 208Q455 166 564 166Q689 166 755 
259Q812 340 812 469Q812 651 768 741T633
+832z"/>
+<glyph unicode="q" glyph-name="q" horiz-adv-x="1065" d="M909 315L863 -69Q838 -283 838 -456Q838 -500 811 
-528T740 -556Q648 -556 642 -455Q639 -411 647 -344L660 -233L679 -12Q593 -35 558 -35Q340 -35 205 78Q60 199 60 
413Q60 706 225 883Q394 1065 685
+1063Q740 1063 768 1020Q811 1058 844 1058Q884 1058 913 1026T943 953Q943 658 909 315zM614 890Q430 857 336 
703Q260 578 260 409Q260 291 332 217Q411 135 551 139Q646 142 690 242Q738 354 741 623L755 890Q735 883 685 
887Q630 893 614 890z"/>
+<glyph unicode="r" glyph-name="r" horiz-adv-x="984" d="M917 739Q910 614 817 614Q731 614 731 713Q731 732 728 
783L725 867Q567 848 472 778Q383 713 324 582L326 34Q326 -67 227 -67Q139 -67 139 34V736Q139 769 141 835T144 
934Q144 1035 232 1035Q330 1035
+331 869Q523 1054 757 1054Q838 1054 878 993T918 809Q918 757 917 739z"/>
+<glyph unicode="s" glyph-name="s" horiz-adv-x="997" d="M814 770Q759 770 737 807Q722 833 711 915Q636 896 480 
845Q319 781 318 687Q348 676 377 671Q607 630 719 558Q882 453 882 254Q882 91 741 8Q624 -60 445 -60Q314 -60 195 
-16Q41 40 41 140Q41 180
+72 210T144 240Q175 240 224 192Q248 169 332 154Q399 142 445 142Q529 142 593 162Q686 191 686 254Q686 390 496 
438L392 461Q259 490 203 529Q122 585 122 698Q122 907 319 996Q379 1023 511 1060T700 1124Q741 1142 789 1142Q832 
1142 859 1114T887 1041Q887
+1012 899 956T912 871Q912 826 885 798T814 770z"/>
+<glyph unicode="t" glyph-name="t" horiz-adv-x="965" d="M808 852Q787 852 759 854T709 856Q686 856 573 841L592 
250L593 206L594 155Q598 -64 489 -64Q449 -64 420 -38T390 27Q390 65 393 141T396 255L376 839Q303 842 154 856Q65 
868 65 955Q65 999 92 1028T161
+1057L371 1040Q371 1091 367 1176T362 1300Q362 1342 391 1369T462 1397Q552 1397 567 1250Q570 1213 570 1161L568 
1103L567 1041Q691 1057 709 1057Q813 1057 845 1047Q906 1027 906 953Q906 909 879 881T808 852z"/>
+<glyph unicode="u" glyph-name="u" horiz-adv-x="1065" d="M955 584Q955 512 956 368T957 152Q957 130 960 85T964 
18Q964 -25 935 -52T864 -80Q787 -80 766 15Q641 -50 478 -50Q347 -50 261 8Q166 72 148 195Q109 460 109 667Q109 
804 139 979Q153 1066 234 1066Q277
+1066 306 1039T335 968Q335 922 321 821T306 667Q306 500 317 381T350 190Q383 172 415 163T478 153Q612 153 761 
196L760 399L758 593Q758 809 777 968Q788 1060 874 1060Q917 1060 946 1032T973 962L955 584z"/>
+<glyph unicode="v" glyph-name="v" horiz-adv-x="996" d="M600 52Q597 -40 509 -40Q436 -40 403 46L250 452L72 
911Q62 937 62 957Q62 998 93 1027T165 1056Q225 1056 251 995L505 296Q580 456 694 760Q721 840 779 986Q810 1050 
867 1050Q908 1050 939 1021T970
+952Q970 914 805 524L600 52z"/>
+<glyph unicode="w" glyph-name="w" horiz-adv-x="1401" d="M1336 895Q1258 569 1132 158Q1104 67 1039 -29Q1004 
-82 944 -81Q835 -79 774 190Q754 276 733 424L700 647L618 456L466 43Q453 5 428 -15Q398 -73 332 -75Q256 -78 185 
223Q149 378 113 643L89 793Q76
+883 76 944Q76 986 105 1013T177 1041Q253 1041 271 958Q284 899 292 812L307 665L366 216Q477 524 596 926Q629 
1037 711 1037Q790 1037 818 913Q844 796 883 553Q923 301 954 160L1027 432L1156 977Q1171 1038 1242 1038Q1284 
1038 1315 1010T1346 941Q1346 936
+1336 895z"/>
+<glyph unicode="x" glyph-name="x" horiz-adv-x="1209" d="M1058 858L912 721L734 544L1060 118Q1085 86 1085 
55Q1085 16 1055 -14T987 -44Q949 -44 918 -7Q826 100 594 405L399 204Q340 151 227 39Q195 3 158 3Q120 3 91 33T61 
102Q61 133 86 165Q114 202 173
+254Q242 315 264 338L477 561L346 750Q267 863 208 915Q170 949 170 989Q170 1029 198 1060T264 1091Q323 1091 442 
937L615 698L811 878Q933 993 976 1058Q1008 1105 1052 1105Q1091 1105 1121 1076T1151 1009Q1151 954 1058 858z"/>
+<glyph unicode="y" glyph-name="y" horiz-adv-x="1066" d="M1011 892L665 144Q537 -129 469 -313L403 -507Q377 
-579 313 -579Q271 -579 241 -552T210 -483Q210 -383 426 96L68 785L23 858Q-4 904 -4 935Q-4 976 27 1007T98 
1038Q144 1038 169 1003Q339 767 534
+331L682 676Q762 855 836 984Q868 1040 920 1040Q961 1040 992 1011T1024 942Q1024 920 1011 892z"/>
+<glyph unicode="z" glyph-name="z" horiz-adv-x="1102" d="M964 809Q875 702 736 499Q575 263 500 165Q605 170 683 
170Q722 170 799 155T915 140Q959 140 986 112T1014 39Q1014 -6 987 -34T915 -62Q876 -62 799 -47T683 -32Q458 -32 
256 -73Q235 -77 219 -77Q122
+-77 122 8Q122 58 172 104Q433 340 740 839Q607 831 547 831Q399 831 243 854Q154 867 154 953Q154 997 181 
1026T249 1056Q298 1056 397 1045T547 1033Q615 1033 751 1042T955 1052Q1040 1052 1040 982Q1040 901 964 809z"/>
+<glyph unicode="{" glyph-name="braceleft" horiz-adv-x="750" d="M259 573Q314 600 357 679Q398 754 398 814Q398 
857 392 1018T385 1222Q385 1419 525 1434Q559 1435 626 1444Q697 1460 697 1514Q697 1566 639 1598Q591 1625 535 
1625Q472 1625 403 1596Q204
+1509 204 1193L209 994L212 795V767Q162 753 88 684Q6 608 6 556Q6 511 100 444T195 294Q195 267 187 212T179 
130Q179 -47 262 -200Q362 -384 523 -384Q597 -384 628 -372Q679 -351 679 -288Q679 -222 628 -205Q605 -197 523 
-197Q454 -197 405 -62Q366 46 366
+130Q366 163 374 229T382 328Q382 375 337 457Q299 528 259 573z"/>
+<glyph unicode="|" glyph-name="bar" horiz-adv-x="863" d="M445 1715Q531 1715 531 1626V-245Q529 -362 444 
-362Q385 -362 364 -286Q353 -246 353 25V1626Q353 1665 379 1690T445 1715z"/>
+<glyph unicode="}" glyph-name="braceright" horiz-adv-x="750" d="M444 573Q389 600 346 679Q305 754 305 814Q305 
857 311 1018T318 1222Q318 1419 178 1434Q144 1435 77 1444Q6 1460 6 1514Q6 1566 64 1598Q112 1625 168 1625Q231 
1625 300 1596Q499 1509 499
+1193L494 994L491 795V767Q541 753 615 684Q697 608 697 556Q697 511 602 444T507 294Q507 267 515 212T524 130Q524 
-47 441 -200Q341 -384 180 -384Q106 -384 75 -372Q24 -351 24 -288Q24 -222 75 -205Q98 -197 180 -197Q249 -197 298 
-62Q337 46 337 130Q337
+163 329 229T321 328Q321 375 366 457Q404 528 444 573z"/>
+<glyph unicode="~" glyph-name="asciitilde" horiz-adv-x="1224" d="M467 934Q554 934 625 863L735 730Q801 656 
872 650Q913 647 951 770T1052 893Q1090 893 1116 869T1142 806Q1143 674 1062 572Q980 467 869 467Q758 467 666 
542Q614 585 543 681Q488 756 467
+756Q380 756 270 567Q241 516 193 516Q157 516 129 541T100 603Q100 622 110 645Q164 762 251 841Q354 934 467 
934z"/>
+</font>
+</defs>
+
+ 
+    <g style="font-family:SVGComic; font-size:50">
+        <text x="50" y="120">ab<tspan style="fill:blue" dy="5 5 5 5 5 5">cde fgh</tspan><tspan 
dy="-30">ij</tspan></text>
+        <text x="50" y="220" style="text-decoration:underline; fill:red">UnderLine</text>
+        <text x="50" y="320" style="fill:green"><tspan 
style="text-decoration:overline">Over</tspan>Line</text>
+        <text x="50" y="420" style="fill:purple">Line<tspan 
style="text-decoration:line-through">Through</tspan></text>
+    </g>
+       
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontExternalFont.png 
b/tests/data/svg/batik/tests/spec/fonts/fontExternalFont.png
new file mode 100644
index 0000000..fe78794
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontExternalFont.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontExternalFont.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontExternalFont.svg
new file mode 100644
index 0000000..42605b3
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontExternalFont.svg
@@ -0,0 +1,60 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Render some <text> using a font referenced in an external                 -->
+<!-- file.                                                                     -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                      -->
+<!-- @version $Id: fontExternalFont.svg 475477 2006-11-15 22:44:28Z cam $        -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>SVGFont - external font test</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">External SVG Font Test</text>
+
+        <defs>
+            <font-face font-family="Batik SVGFont">
+                <font-face-src>
+                    <font-face-uri xlink:href="batikFont.svg#Batik"/>
+                </font-face-src>     
+            </font-face>
+        </defs>
+
+        <text x="80" y="250" font-family="'Batik SVGFont'" font-size="50">Batik Batik</text>
+       
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontFace.png 
b/tests/data/svg/batik/tests/spec/fonts/fontFace.png
new file mode 100644
index 0000000..5bb67eb
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontFace.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontFace.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontFace.svg
new file mode 100644
index 0000000..acfbf07
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontFace.svg
@@ -0,0 +1,124 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Test of font-face element and @font-face rule.                         -->
+<!--                                                                        -->
+<!-- @author thomas deweese kodak com                                       -->
+<!-- @version $Id: fontFace.svg 475477 2006-11-15 22:44:28Z cam $    -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+
+  <style type="text/css"><![CDATA[
+    @font-face { font-family: "CSS Batik SVGFont"; 
+                 src: url(batikFont.svg#Batik); }
+
+    @font-face { font-family: "CSS Batik TrueType"; 
+                 src: url(../../resources/ttf/glb12.ttf); }
+
+    @font-face { font-family: "CSS Batik LCL"; 
+                 src: 'Courier', 'Courier New', url(batikFont.svg#Batik); }
+
+    @font-face { font-family: "CSS Batik FB"; 
+                 src: 'No Font', url(batikFont.svg#Batik); }
+    @font-face { font-family: "CSS Batik FB2"; 
+                 src: url(badLink.svg#Batik), url(badLink.ttf), 'Courier', 'Courier New'; }
+    ]]></style>
+  
+  <defs>
+    <font-face font-family="SVG Batik SVGFont">
+      <font-face-src>
+        <font-face-uri xlink:href="batikFont.svg#Batik"/>
+      </font-face-src>     
+    </font-face>
+    
+    <font-face font-family="SVG Batik TrueType">
+      <font-face-src>
+        <font-face-uri xlink:href="../../resources/ttf/glb12.ttf"/>
+      </font-face-src>     
+    </font-face>
+    
+    <font-face font-family="SVG Batik LCL">
+      <font-face-src>
+        <font-face-name name="Courier"/>
+        <font-face-name name="Courier New"/>
+        <font-face-uri xlink:href="batikFont.svg#Batik"/>
+      </font-face-src>     
+    </font-face>
+    
+    <font-face font-family="SVG Batik FB">
+      <font-face-src>
+        <font-face-name name="NoFont"/>
+        <font-face-uri xlink:href="batikFont.svg#Batik"/>
+      </font-face-src>     
+    </font-face>
+    
+    <font-face font-family="SVG Batik FB2">
+      <font-face-src>
+        <font-face-uri xlink:href="badLink.svg#Batik"/>
+        <font-face-uri xlink:href="badLink.ttf"/>
+        <font-face-name name="Courier"/>
+        <font-face-name name="Courier New"/>
+      </font-face-src>     
+    </font-face>
+  </defs>
+  
+  <title>&lt;font-face&gt; and @font-face test</title>
+  <text class="title" x="50%" y="40"
+    >&lt;font-face&gt; and @font-face test</text>
+
+  <g id="content">
+    <text x="40" y="100" font-family="'SVG Batik SVGFont'" font-size="20"
+      >SVG Batik Batik</text>
+    <text x="240" y="100" font-family="'CSS Batik SVGFont'" font-size="20"
+      >CSS Batik Batik</text>
+    
+    <text x="40" y="150" font-family="'SVG Batik TrueType'" font-size="20"
+      >SVG Batik Batik</text>
+    <text x="240" y="150" font-family="'CSS Batik TrueType'" font-size="20"
+      >CSS Batik Batik</text>
+    
+    <text x="40" y="200" font-family="'SVG Batik LCL'" font-size="20"
+      >SVG Batik Batik</text>
+    <text x="240" y="200" font-family="'CSS Batik LCL'" font-size="20"
+      >CSS Batik Batik</text>
+    
+    <text x="40" y="250" font-family="'SVG Batik FB'" font-size="20"
+      >SVG Batik Batik</text>
+    <text x="240" y="250" font-family="'CSS Batik FB'" font-size="20"
+      >CSS Batik Batik</text>
+    
+    <text x="40" y="300" font-family="'SVG Batik FB2'" font-size="20"
+      >SVG Batik Batik</text>
+    <text x="240" y="300" font-family="'CSS Batik FB2'" font-size="20"
+      >CSS Batik Batik</text>
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontFamilyCaseSensitivity.png 
b/tests/data/svg/batik/tests/spec/fonts/fontFamilyCaseSensitivity.png
new file mode 100644
index 0000000..90846bd
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontFamilyCaseSensitivity.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontFamilyCaseSensitivity.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontFamilyCaseSensitivity.svg
new file mode 100644
index 0000000..6800d5f
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontFamilyCaseSensitivity.svg
@@ -0,0 +1,122 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- text elements with font-families which should match system of SVG font    -->
+<!-- names if the font-families are not case-sensitive.                        -->
+<!--                                                                           -->
+<!-- @author vincent hardy sun com                                             -->
+<!-- @version $Id: fontFamilyCaseSensitivity.svg 475685 2006-11-16 11:16:05Z cam $    -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>font-family case-sensitivity</title>
+
+    <style type="text/css"><![CDATA[
+        .oddRow { fill: #cccccc; stroke: black; }
+        .evenRow { fill: white; stroke: black; }
+        .textLabel { text-anchor: middle; font-size: 12; }
+        .textSample { text-anchor: middle; font-size: 14; fill: crimson; }
+        .em { font-style:italic; }
+    ]]></style>
+    
+    <g id="content">
+
+        <text class="title" x="50%" y="40">font-family case-sensitivity</text>
+
+        <defs>
+            <rect id="oddRow" width="300" height="30" class="oddRow"/>
+            <rect id="evenRow" width="300" height="30" class="evenRow" />
+
+
+
+
+<font id="fontDef" horiz-adv-x="528" ><font-face
+    font-family="Larabiefont"
+    font-weight="normal"
+    units-per-em="1000"
+    panose-1="0 0 4 9 0 0 0 0 0 0"
+    ascent="808"
+    descent="-200"
+    alphabetic="0" />
+<missing-glyph d="M66 0V800H462V0H66ZM132 66H396V734H132V66Z" />
+<glyph unicode="F" glyph-name="F" d="M458 608Q458 586 436 586H124Q114 586 114 576V367Q114 357 124 
357H327Q349 357 349 335Q349 313 327 313H124Q114 313 114 303V30Q114 8 92 8Q70 8 70 30V608Q70 630 92 
630H436Q458 630 458 608Z" />
+<glyph unicode="L" glyph-name="L" d="M469 33Q469 11 447 11H80Q58 11 58 33V607Q58 629 80 629Q102 629 102 
607V65Q102 55 112 55H447Q469 55 469 33Z" />
+<glyph unicode="L" glyph-name="L" d="M469 33Q469 11 447 11H80Q58 11 58 33V607Q58 629 80 629Q102 629 102 
607V65Q102 55 112 55H447Q469 55 469 33Z" />
+<glyph unicode="a" glyph-name="a" d="M454 10H96Q74 10 74 32V182Q74 236 130 246L402 294Q410 295 410 
304V386Q410 390 405 396T395 403H128Q118 403 118 393V352Q118 330 96 330Q74 330 74 352V425Q74 447 96 
447H398Q421 447 437 428T454 386V10ZM410 64V239Q410
+249 400 249Q399 249 398 249L135 202Q118 199 118 182V64Q118 54 128 54H400Q410 54 410 64Z" />
+<glyph unicode="b" glyph-name="b" d="M459 76Q459 10 390 10H69V608Q69 630 91 630Q113 630 113 608V457Q113 447 
123 447H389Q459 447 459 379V76ZM415 70V383Q415 389 409 396T397 403H123Q113 403 113 393V64Q113 54 123 
54H402Q410 54 415 67V70Z" />
+<glyph unicode="e" glyph-name="e" d="M456 32Q456 10 434 10H94Q72 10 72 32V425Q72 447 94 447H434Q456 447 456 
425V237Q456 215 434 215H126Q116 215 116 205V64Q116 54 126 54H402Q412 54 412 64V121Q412 143 434 143Q456 143 
456 121V32ZM412 269V393Q412
+403 402 403H126Q116 403 116 393V269Q116 259 126 259H402Q412 259 412 269Z" />
+<glyph unicode="f" glyph-name="f" d="M463 538Q463 516 441 516Q419 516 419 538V575Q419 585 409 585H200Q190 
585 190 575V457Q190 447 200 447H322Q344 447 344 425Q344 403 322 403H200Q190 403 190 393V31Q190 9 168 9Q146 9 
146 31V393Q146 403 136 403H87Q65
+403 65 425Q65 447 87 447H136Q146 447 146 457V607Q146 629 168 629H441Q463 629 463 607V538Z" />
+<glyph unicode="i" glyph-name="i" d="M300 572Q300 549 284 533T244 516Q220 516 204 532T187 572Q187 596 203 
612T244 629Q267 629 283 613T300 572ZM434 32Q434 10 412 10H116Q94 10 94 32Q94 54 116 54H233Q243 54 243 
64V393Q243 403 233 403H116Q94 403
+94 425Q94 447 116 447H265Q287 447 287 425V64Q287 54 297 54H412Q434 54 434 32Z" />
+<glyph unicode="l" glyph-name="l" d="M424 32Q424 10 402 10H126Q104 10 104 32Q104 54 126 54H227Q237 54 237 
64V576Q237 586 227 586H159Q137 586 137 608Q137 630 159 630H227Q281 630 281 576V64Q281 54 291 54H402Q424 54 
424 32Z" />
+<glyph unicode="n" glyph-name="n" d="M456 33Q456 11 434 11Q412 11 412 33V365Q412 381 402 392T379 403H126Q116 
403 116 393V33Q116 11 94 11Q72 11 72 33V447H379Q409 447 432 424T456 365V33Z" />
+<glyph unicode="o" glyph-name="o" d="M456 64Q456 42 442 26T402 10H126Q102 10 87 25T72 64V393Q72 413 89 
430T126 447H402Q456 447 456 393V64ZM412 64V393Q412 403 402 403H126Q116 403 116 393V64Q116 54 126 54H402Q412 
54 412 64Z" />
+<glyph unicode="r" glyph-name="r" d="M460 338Q460 316 438 316Q416 316 416 338V393Q416 403 406 403H287Q266 
403 253 389T239 355V64Q239 54 249 54H362Q384 54 384 32Q384 10 362 10H90Q68 10 68 32Q68 54 90 54H185Q195 54 
195 64V393Q195 403 185 403H90Q68
+403 68 425Q68 447 90 447H217Q226 447 232 439T243 431Q247 431 258 439T274 447H438Q460 447 460 425V338Z" />
+<glyph unicode="t" glyph-name="t" d="M442 64Q442 42 425 26T388 10H255Q236 10 219 27T201 64V393Q201 403 191 
403H108Q86 403 86 425Q86 447 108 447H191Q201 447 201 457V609Q201 631 223 631Q245 631 245 609V457Q245 447 255 
447H420Q442 447 442 425Q442
+403 420 403H255Q245 403 245 393V64Q245 54 255 54H388Q398 54 398 64V155Q398 177 420 177Q442 177 442 155V64Z" 
/>
+</font>
+        </defs>
+
+        <g transform="translate(75, 100)">
+
+        <use xlink:href="#oddRow" />
+        <text class="textLabel" x="150" y="20">System Font with proper case sensitivity</text>
+        <use xlink:href="#evenRow" y="30"/>
+        <text class="textSample" y="50" x="150" font-family="Times New Roman">Times New Roman</text>
+
+        <g transform="translate(0,60)">
+            <use xlink:href="#oddRow" />
+            <text class="textLabel" x="150" y="20">System Font with <tspan class="em">improper</tspan> case 
sensitivity</text>
+            <use xlink:href="#evenRow" y="30"/>
+            <text class="textSample" x="150" y="50" font-family="times new roman">times new roman for Times 
New Roman</text>
+        </g>
+
+        <g transform="translate(0,120)">
+            <use xlink:href="#oddRow" />
+            <text class="textLabel" x="150" y="20">SVG Font with proper case sensitivity</text>
+            <use xlink:href="#evenRow" y="30"/>
+            <text class="textSample" x="150" y="50" font-family="Larabiefont">Larabiefont</text>
+        </g>
+
+        <g transform="translate(0,180)">
+            <use xlink:href="#oddRow" />
+            <text class="textLabel" x="150" y="20">SVG Font with <tspan class="em">improper</tspan> case 
sensitivity</text>
+            <use xlink:href="#evenRow" y="30"/>
+            <text class="textSample" x="150" y="50" font-family="larabieFont">larabieFont for 
Larabiefont</text>
+        </g>
+
+        </g>
+    </g>
+
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontGlyphChoice.png 
b/tests/data/svg/batik/tests/spec/fonts/fontGlyphChoice.png
new file mode 100644
index 0000000..d490a30
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontGlyphChoice.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontGlyphChoice.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontGlyphChoice.svg
new file mode 100644
index 0000000..fa26330
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontGlyphChoice.svg
@@ -0,0 +1,418 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests the orientation and lang glyph attributes.                          -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                      -->
+<!-- @version $Id: fontGlyphChoice.svg 475477 2006-11-15 22:44:28Z cam $     -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>SVGFont - glyph selection test</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">Glyph Selection Test</text>
+
+        <defs>
+
+            <!-- ============================= -->
+            <!-- SVG Font Definitions          -->
+            <!-- ============================= -->
+
+            <!-- This is an encoding of Microsoft's Georgia font    -->
+            <!-- in SVG format (as allowed in the license). For the -->
+            <!-- true type version of this font, refer to           -->
+            <!-- http://www.microsoft.com/truetype                  -->
+            <!-- It has been converted to SVG using Batik's         -->
+            <!-- true type to SVG converter (ttf2svg).              -->
+            <!-- Styling has been added for testing purposes.       -->
+
+            <font horiz-adv-x="901" fill="#6666FF">
+                <font-face
+                 font-family="SVGGeorgia"
+                 units-per-em="2048"
+                 panose-1="2 4 5 2 5 4 5 2 3 3"
+                 ascent="1878"
+                 descent="449"
+                 alphabetic="0"/>
+
+                <missing-glyph horiz-adv-x="2048">
+                   <path d="M256 0V1536H1792V0H256zM384 128H1664V1408H384V128z"/>
+                </missing-glyph>
+
+                <glyph unicode=" " glyph-name="space" horiz-adv-x="494"/>
+
+                <glyph unicode="E" glyph-name="E" horiz-adv-x="1338" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M1291 418L1264 0H86V71Q116 73 166 79T231 93Q263 108 275 132T288 
193V1213Q288 1246 277 1271T231 1313Q204 1326 159 1336T86 1348V1419H1184V1077H1109Q1089 1153 1023 1238T896 
1332Q865 1336 822
+1338T724 1340H501V776H661Q738 776 773 790T836 839Q858 868 873 916T894 1008H969V453H894Q890 501 873 554T836 
632Q805 671 766 683T661 695H501V269Q501 205 510 168T545 112Q571 93 616 88T744 82Q777 82 831 82T922 86Q960 90 
1000 100T1058 129Q1104 177
+1154 274T1219 418H1291z"/>
+                </glyph>
+                <glyph unicode="E" glyph-name="E" horiz-adv-x="1338" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M1291 418L1264 0H86V71Q116 73 166 79T231 93Q263 108 275 132T288 
193V1213Q288 1246 277 1271T231 1313Q204 1326 159 1336T86 1348V1419H1184V1077H1109Q1089 1153 1023 1238T896 
1332Q865 1336 822
+1338T724 1340H501V776H661Q738 776 773 790T836 839Q858 868 873 916T894 1008H969V453H894Q890 501 873 554T836 
632Q805 671 766 683T661 695H501V269Q501 205 510 168T545 112Q571 93 616 88T744 82Q777 82 831 82T922 86Q960 90 
1000 100T1058 129Q1104 177
+1154 274T1219 418H1291z"/>
+                </glyph>
+                <glyph unicode="E" glyph-name="E" horiz-adv-x="1338"  orientation="v">
+                    <path fill="red" d="M1291 418L1264 0H86V71Q116 73 166 79T231 93Q263 108 275 132T288 
193V1213Q288 1246 277 1271T231 1313Q204 1326 159 1336T86 1348V1419H1184V1077H1109Q1089 1153 1023 1238T896 
1332Q865 1336 822
+1338T724 1340H501V776H661Q738 776 773 790T836 839Q858 868 873 916T894 1008H969V453H894Q890 501 873 554T836 
632Q805 671 766 683T661 695H501V269Q501 205 510 168T545 112Q571 93 616 88T744 82Q777 82 831 82T922 86Q960 90 
1000 100T1058 129Q1104 177
+1154 274T1219 418H1291z"/>
+</glyph>
+
+                <glyph unicode="F" glyph-name="F" horiz-adv-x="1227" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M1199 1064H1124Q1103 1143 1037 1233T909 1332Q878 1336 836 
1338T739 1340H501V770H664Q738 770 779 785T849 833Q869 855 885 901T907 1001H983V444H907Q904 488 887 544T849 
625Q819 662 774 675T664
+689H501V200Q501 167 514 141T560 99Q575 92 625 82T701 71V0H86V71Q116 73 166 77T231 89Q261 102 274 127T288 
189V1213Q288 1246 277 1271T231 1313Q204 1326 159 1336T86 1348V1419H1199V1064z"/>
+                </glyph>
+                <glyph unicode="F" glyph-name="F" horiz-adv-x="1227" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33"  d="M1199 1064H1124Q1103 1143 1037 1233T909 1332Q878 1336 836 
1338T739 1340H501V770H664Q738 770 779 785T849 833Q869 855 885 901T907 1001H983V444H907Q904 488 887 544T849 
625Q819 662 774 675T664
+689H501V200Q501 167 514 141T560 99Q575 92 625 82T701 71V0H86V71Q116 73 166 77T231 89Q261 102 274 127T288 
189V1213Q288 1246 277 1271T231 1313Q204 1326 159 1336T86 1348V1419H1199V1064z"/>
+                </glyph>
+                <glyph unicode="F" glyph-name="F" horiz-adv-x="1227" orientation="v">
+                    <path fill="red" d="M1199 1064H1124Q1103 1143 1037 1233T909 1332Q878 1336 836 1338T739 
1340H501V770H664Q738 770 779 785T849 833Q869 855 885 901T907 1001H983V444H907Q904 488 887 544T849 625Q819 662 
774 675T664
+689H501V200Q501 167 514 141T560 99Q575 92 625 82T701 71V0H86V71Q116 73 166 77T231 89Q261 102 274 127T288 
189V1213Q288 1246 277 1271T231 1313Q204 1326 159 1336T86 1348V1419H1199V1064z"/>
+                </glyph>
+
+                <glyph unicode="G" glyph-name="G" horiz-adv-x="1485" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M1471 567Q1447 564 1407 558T1341 539Q1311 524 1299 497T1286 
432V322Q1286 202 1287 160T1291 91Q1158 31 1026 -1T767 -33Q631 -33 505 18T285 163Q190 258 134 394T78 698Q78 
860 131 998T283 1239Q378
+1339 509 1394T791 1450Q911 1450 1000 1421T1157 1351L1198 1419H1278L1287 923H1205Q1184 1005 1153 1084T1073 
1227Q1024 1290 954 1327T785 1365Q678 1365 594 1322T448 1192Q387 1109 354 985T321 708Q321 573 353 454T448 
247Q510 158 603 107T814 56Q902
+56 974 83T1077 140Q1085 192 1085 245T1086 335V413Q1086 455 1075 487T1027 535Q994 550 938 557T849 
567V640H1471V567z"/>
+                </glyph>
+                <glyph unicode="G" glyph-name="G" horiz-adv-x="1485" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M1471 567Q1447 564 1407 558T1341 539Q1311 524 1299 497T1286 
432V322Q1286 202 1287 160T1291 91Q1158 31 1026 -1T767 -33Q631 -33 505 18T285 163Q190 258 134 394T78 698Q78 
860 131 998T283 1239Q378
+1339 509 1394T791 1450Q911 1450 1000 1421T1157 1351L1198 1419H1278L1287 923H1205Q1184 1005 1153 1084T1073 
1227Q1024 1290 954 1327T785 1365Q678 1365 594 1322T448 1192Q387 1109 354 985T321 708Q321 573 353 454T448 
247Q510 158 603 107T814 56Q902
+56 974 83T1077 140Q1085 192 1085 245T1086 335V413Q1086 455 1075 487T1027 535Q994 550 938 557T849 
567V640H1471V567z"/>
+                </glyph>
+                <glyph unicode="G" glyph-name="G" horiz-adv-x="1485" orientation="v">
+                    <path fill="red" d="M1471 567Q1447 564 1407 558T1341 539Q1311 524 1299 497T1286 
432V322Q1286 202 1287 160T1291 91Q1158 31 1026 -1T767 -33Q631 -33 505 18T285 163Q190 258 134 394T78 698Q78 
860 131 998T283 1239Q378
+1339 509 1394T791 1450Q911 1450 1000 1421T1157 1351L1198 1419H1278L1287 923H1205Q1184 1005 1153 1084T1073 
1227Q1024 1290 954 1327T785 1365Q678 1365 594 1322T448 1192Q387 1109 354 985T321 708Q321 573 353 454T448 
247Q510 158 603 107T814 56Q902
+56 974 83T1077 140Q1085 192 1085 245T1086 335V413Q1086 455 1075 487T1027 535Q994 550 938 557T849 
567V640H1471V567z"/>
+                </glyph>
+
+                <glyph unicode="H" glyph-name="H" horiz-adv-x="1669" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M1567 0H978V71Q1002 73 1047 77T1110 89Q1140 101 1154 125T1168 
189V694H501V200Q501 165 512 141T558 99Q575 90 618 81T687 71V0H98V71Q122 73 167 77T230 89Q260 101 274 125T288 
189V1213Q288 1245
+275 1271T230 1313Q203 1326 165 1336T98 1348V1419H687V1348Q659 1347 619 1339T558 1324Q524 1312 513 1284T501 
1223V783H1168V1213Q1168 1245 1155 1271T1110 1313Q1083 1326 1045 1336T978 1348V1419H1567V1348Q1539 1347 1499 
1339T1438 1324Q1404 1312 1393
+1284T1381 1223V200Q1381 165 1392 141T1438 99Q1455 90 1498 81T1567 71V0z"/>
+                </glyph>
+                <glyph unicode="H" glyph-name="H" horiz-adv-x="1669" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M1567 0H978V71Q1002 73 1047 77T1110 89Q1140 101 1154 125T1168 
189V694H501V200Q501 165 512 141T558 99Q575 90 618 81T687 71V0H98V71Q122 73 167 77T230 89Q260 101 274 125T288 
189V1213Q288 1245
+275 1271T230 1313Q203 1326 165 1336T98 1348V1419H687V1348Q659 1347 619 1339T558 1324Q524 1312 513 1284T501 
1223V783H1168V1213Q1168 1245 1155 1271T1110 1313Q1083 1326 1045 1336T978 1348V1419H1567V1348Q1539 1347 1499 
1339T1438 1324Q1404 1312 1393
+1284T1381 1223V200Q1381 165 1392 141T1438 99Q1455 90 1498 81T1567 71V0z"/>
+                </glyph>
+               <glyph unicode="H" glyph-name="H" horiz-adv-x="1669" orientation="v">
+                    <path fill="red" d="M1567 0H978V71Q1002 73 1047 77T1110 89Q1140 101 1154 125T1168 
189V694H501V200Q501 165 512 141T558 99Q575 90 618 81T687 71V0H98V71Q122 73 167 77T230 89Q260 101 274 125T288 
189V1213Q288 1245
+275 1271T230 1313Q203 1326 165 1336T98 1348V1419H687V1348Q659 1347 619 1339T558 1324Q524 1312 513 1284T501 
1223V783H1168V1213Q1168 1245 1155 1271T1110 1313Q1083 1326 1045 1336T978 1348V1419H1567V1348Q1539 1347 1499 
1339T1438 1324Q1404 1312 1393
+1284T1381 1223V200Q1381 165 1392 141T1438 99Q1455 90 1498 81T1567 71V0z"/>
+                </glyph>
+
+                <glyph unicode="S" glyph-name="S"  horiz-adv-x="1149" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M981 651Q1026 601 1047 542T1069 403Q1069 215 930 93T585 -29Q490 
-29 395 0T231 72L188 -1H108L94 485H175Q200 395 233 323T322 187Q374 128 443 93T605 58Q674 58 725 76T809 
127Q841 160 856 204T872
+307Q872 392 824 465T681 577Q616 603 532 634T387 694Q267 748 201 835T134 1064Q134 1145 167 1215T261 1340Q319 
1392 398 1421T563 1451Q661 1451 738 1421T880 1351L921 1419H1001L1009 948H928Q906 1029 879 1103T807 1237Q764 
1295 702 1329T550 1364Q455
+1364 388 1303T321 1154Q321 1062 364 1002T489 902Q562 867 632 842T769 787Q829 761 884 728T981 651z"/>
+                </glyph>
+                <glyph unicode="S" glyph-name="S"  horiz-adv-x="1149" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M981 651Q1026 601 1047 542T1069 403Q1069 215 930 93T585 -29Q490 
-29 395 0T231 72L188 -1H108L94 485H175Q200 395 233 323T322 187Q374 128 443 93T605 58Q674 58 725 76T809 
127Q841 160 856 204T872
+307Q872 392 824 465T681 577Q616 603 532 634T387 694Q267 748 201 835T134 1064Q134 1145 167 1215T261 1340Q319 
1392 398 1421T563 1451Q661 1451 738 1421T880 1351L921 1419H1001L1009 948H928Q906 1029 879 1103T807 1237Q764 
1295 702 1329T550 1364Q455
+1364 388 1303T321 1154Q321 1062 364 1002T489 902Q562 867 632 842T769 787Q829 761 884 728T981 651z"/>
+                </glyph>
+                <glyph unicode="S" glyph-name="S"  horiz-adv-x="1149" orientation="v">
+                    <path fill="red" d="M981 651Q1026 601 1047 542T1069 403Q1069 215 930 93T585 -29Q490 -29 
395 0T231 72L188 -1H108L94 485H175Q200 395 233 323T322 187Q374 128 443 93T605 58Q674 58 725 76T809 127Q841 
160 856 204T872
+307Q872 392 824 465T681 577Q616 603 532 634T387 694Q267 748 201 835T134 1064Q134 1145 167 1215T261 1340Q319 
1392 398 1421T563 1451Q661 1451 738 1421T880 1351L921 1419H1001L1009 948H928Q906 1029 879 1103T807 1237Q764 
1295 702 1329T550 1364Q455
+1364 388 1303T321 1154Q321 1062 364 1002T489 902Q562 867 632 842T769 787Q829 761 884 728T981 651z"/>
+                </glyph>
+
+                <glyph unicode="T" glyph-name="T" horiz-adv-x="1267" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M1251 1034H1182Q1173 1070 1150 1119T1097 1213Q1067 1259 1032 
1293T963 1333Q932 1337 885 1339T798 1341H740V206Q740 173 754 146T803 103Q821 96 878 84T968 71V0H298V71Q326 73 
383 79T463 94Q496
+107 511 131T527 197V1341H469Q438 1341 392 1340T304 1333Q271 1329 236 1294T170 1213Q140 1168 117 1118T85 
1034H15V1419H1251V1034z"/>
+                </glyph>
+                <glyph unicode="T" glyph-name="T" horiz-adv-x="1267" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M1251 1034H1182Q1173 1070 1150 1119T1097 1213Q1067 1259 1032 
1293T963 1333Q932 1337 885 1339T798 1341H740V206Q740 173 754 146T803 103Q821 96 878 84T968 71V0H298V71Q326 73 
383 79T463 94Q496
+107 511 131T527 197V1341H469Q438 1341 392 1340T304 1333Q271 1329 236 1294T170 1213Q140 1168 117 1118T85 
1034H15V1419H1251V1034z"/>
+                </glyph>
+                <glyph unicode="T" glyph-name="T" horiz-adv-x="1267" orientation="v">
+                    <path fill="red" d="M1251 1034H1182Q1173 1070 1150 1119T1097 1213Q1067 1259 1032 
1293T963 1333Q932 1337 885 1339T798 1341H740V206Q740 173 754 146T803 103Q821 96 878 84T968 71V0H298V71Q326 73 
383 79T463 94Q496
+107 511 131T527 197V1341H469Q438 1341 392 1340T304 1333Q271 1329 236 1294T170 1213Q140 1168 117 1118T85 
1034H15V1419H1251V1034z"/>
+                </glyph>
+
+                <glyph unicode="V" glyph-name="V" horiz-adv-x="1365" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M1407 1348Q1381 1347 1344 1337T1283 1311Q1249 1290 1229 
1257T1188 1179Q1121 1020 987 684T711 -18H628Q484 369 350 728T168 1213Q156 1244 136 1267T83 1312Q56 1329 23 
1337T-38 1348V1419H549V1348Q474
+1344 423 1333T371 1294Q371 1283 375 1268T382 1244Q419 1146 502 925T738 294Q814 479 913 731T1046 1077Q1079 
1168 1084 1203T1090 1260Q1090 1283 1070 1298T1015 1325Q982 1335 948 1340T879 1348V1419H1407V1348z"/>
+                </glyph>
+                <glyph unicode="V" glyph-name="V" horiz-adv-x="1365" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M1407 1348Q1381 1347 1344 1337T1283 1311Q1249 1290 1229 
1257T1188 1179Q1121 1020 987 684T711 -18H628Q484 369 350 728T168 1213Q156 1244 136 1267T83 1312Q56 1329 23 
1337T-38 1348V1419H549V1348Q474
+1344 423 1333T371 1294Q371 1283 375 1268T382 1244Q419 1146 502 925T738 294Q814 479 913 731T1046 1077Q1079 
1168 1084 1203T1090 1260Q1090 1283 1070 1298T1015 1325Q982 1335 948 1340T879 1348V1419H1407V1348z"/>
+                </glyph>
+               <glyph unicode="V" glyph-name="V" horiz-adv-x="1365" orientation="v">
+                    <path fill="red" d="M1407 1348Q1381 1347 1344 1337T1283 1311Q1249 1290 1229 1257T1188 
1179Q1121 1020 987 684T711 -18H628Q484 369 350 728T168 1213Q156 1244 136 1267T83 1312Q56 1329 23 1337T-38 
1348V1419H549V1348Q474
+1344 423 1333T371 1294Q371 1283 375 1268T382 1244Q419 1146 502 925T738 294Q814 479 913 731T1046 1077Q1079 
1168 1084 1203T1090 1260Q1090 1283 1070 1298T1015 1325Q982 1335 948 1340T879 1348V1419H1407V1348z"/>
+                </glyph>
+
+                <glyph unicode="a" glyph-name="a" horiz-adv-x="1032" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M1006 18Q959 1 924 -9T843 -20Q765 -20 719 16T659 123H653Q588 51 
514 13T334 -25Q223 -25 152 43T80 221Q80 278 96 323T144 404Q169 434 210 457T287 495Q332 512 469 558T655 
630V729Q655 742 650
+779T626 849Q606 886 570 913T466 941Q420 941 381 926T325 893Q325 873 334 834T344 762Q344 727 313 698T225 
669Q175 669 152 704T128 784Q128 830 160 872T245 947Q290 975 354 994T479 1014Q563 1014 625 1003T739 953Q790 
916 816 853T843 689Q843 546 840
+436T837 194Q837 155 850 132T892 93Q907 84 939 83T1006 82V18zM657 546Q572 521 508 497T389 437Q339 403 310 
357T281 246Q281 163 324 124T435 85Q506 85 560 119T651 201L657 546z"/>
+                </glyph>
+                <glyph unicode="a" glyph-name="a" horiz-adv-x="1032" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M1006 18Q959 1 924 -9T843 -20Q765 -20 719 16T659 123H653Q588 51 
514 13T334 -25Q223 -25 152 43T80 221Q80 278 96 323T144 404Q169 434 210 457T287 495Q332 512 469 558T655 
630V729Q655 742 650
+779T626 849Q606 886 570 913T466 941Q420 941 381 926T325 893Q325 873 334 834T344 762Q344 727 313 698T225 
669Q175 669 152 704T128 784Q128 830 160 872T245 947Q290 975 354 994T479 1014Q563 1014 625 1003T739 953Q790 
916 816 853T843 689Q843 546 840
+436T837 194Q837 155 850 132T892 93Q907 84 939 83T1006 82V18zM657 546Q572 521 508 497T389 437Q339 403 310 
357T281 246Q281 163 324 124T435 85Q506 85 560 119T651 201L657 546z"/>
+                </glyph>
+                <glyph unicode="a" glyph-name="a" horiz-adv-x="1032" orientation="v">
+                    <path fill="red" d="M1006 18Q959 1 924 -9T843 -20Q765 -20 719 16T659 123H653Q588 51 514 
13T334 -25Q223 -25 152 43T80 221Q80 278 96 323T144 404Q169 434 210 457T287 495Q332 512 469 558T655 
630V729Q655 742 650
+779T626 849Q606 886 570 913T466 941Q420 941 381 926T325 893Q325 873 334 834T344 762Q344 727 313 698T225 
669Q175 669 152 704T128 784Q128 830 160 872T245 947Q290 975 354 994T479 1014Q563 1014 625 1003T739 953Q790 
916 816 853T843 689Q843 546 840
+436T837 194Q837 155 850 132T892 93Q907 84 939 83T1006 82V18zM657 546Q572 521 508 497T389 437Q339 403 310 
357T281 246Q281 163 324 124T435 85Q506 85 560 119T651 201L657 546z"/>
+                </glyph>
+
+                <glyph unicode="c" glyph-name="c" horiz-adv-x="930" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M528 -26Q314 -26 193 116T72 497Q72 601 104 691T199 856Q258 927 
347 970T541 1014Q686 1014 777 945T868 755Q868 705 844 667T765 628Q706 628 674 658T641 725Q641 770 653 817T667 
887Q649 918 614
+928T537 939Q489 939 446 919T361 843Q324 793 301 708T278 505Q278 319 360 202T577 84Q674 84 739 131T861 
272L925 230Q859 112 751 43T528 -26z"/>
+                </glyph>
+                <glyph unicode="c" glyph-name="c" horiz-adv-x="930" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M528 -26Q314 -26 193 116T72 497Q72 601 104 691T199 856Q258 927 
347 970T541 1014Q686 1014 777 945T868 755Q868 705 844 667T765 628Q706 628 674 658T641 725Q641 770 653 817T667 
887Q649 918 614
+928T537 939Q489 939 446 919T361 843Q324 793 301 708T278 505Q278 319 360 202T577 84Q674 84 739 131T861 
272L925 230Q859 112 751 43T528 -26z"/>
+                </glyph>
+                <glyph unicode="c" glyph-name="c" horiz-adv-x="930" orientation="v">
+                    <path fill="red" d="M528 -26Q314 -26 193 116T72 497Q72 601 104 691T199 856Q258 927 347 
970T541 1014Q686 1014 777 945T868 755Q868 705 844 667T765 628Q706 628 674 658T641 725Q641 770 653 817T667 
887Q649 918 614
+928T537 939Q489 939 446 919T361 843Q324 793 301 708T278 505Q278 319 360 202T577 84Q674 84 739 131T861 
272L925 230Q859 112 751 43T528 -26z"/>
+                </glyph>
+
+                <glyph unicode="d" glyph-name="d" horiz-adv-x="1176" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M1152 18L808 -4L793 10V102L785 104Q733 46 657 9T499 -28Q415 -28 
337 9T200 115Q141 184 107 281T72 495Q72 602 109 698T211 866Q272 933 360 973T541 1013Q610 1013 676 996T791 
951V1294Q791 1336
+777 1370T738 1423Q710 1442 663 1450T560 1463V1525L963 1548L978 1533V203Q978 168 991 144T1031 102Q1050 90 
1086 87T1152 83V18zM791 191V768Q783 794 765 824T720 879Q691 904 652 920T561 937Q501 937 451 906T361 817Q324 
761 303 675T281 483Q281 399
+297 331T351 203Q386 147 440 113T570 79Q650 79 702 114T791 191z"/>
+                </glyph>
+                <glyph unicode="d" glyph-name="d" horiz-adv-x="1176" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M1152 18L808 -4L793 10V102L785 104Q733 46 657 9T499 -28Q415 -28 
337 9T200 115Q141 184 107 281T72 495Q72 602 109 698T211 866Q272 933 360 973T541 1013Q610 1013 676 996T791 
951V1294Q791 1336
+777 1370T738 1423Q710 1442 663 1450T560 1463V1525L963 1548L978 1533V203Q978 168 991 144T1031 102Q1050 90 
1086 87T1152 83V18zM791 191V768Q783 794 765 824T720 879Q691 904 652 920T561 937Q501 937 451 906T361 817Q324 
761 303 675T281 483Q281 399
+297 331T351 203Q386 147 440 113T570 79Q650 79 702 114T791 191z"/>
+                </glyph>
+                <glyph unicode="d" glyph-name="d" horiz-adv-x="1176" orientation="v">
+                    <path fill="red" d="M1152 18L808 -4L793 10V102L785 104Q733 46 657 9T499 -28Q415 -28 337 
9T200 115Q141 184 107 281T72 495Q72 602 109 698T211 866Q272 933 360 973T541 1013Q610 1013 676 996T791 
951V1294Q791 1336
+777 1370T738 1423Q710 1442 663 1450T560 1463V1525L963 1548L978 1533V203Q978 168 991 144T1031 102Q1050 90 
1086 87T1152 83V18zM791 191V768Q783 794 765 824T720 879Q691 904 652 920T561 937Q501 937 451 906T361 817Q324 
761 303 675T281 483Q281 399
+297 331T351 203Q386 147 440 113T570 79Q650 79 702 114T791 191z"/>
+                </glyph>
+
+               <glyph unicode="e" glyph-name="e" horiz-adv-x="990" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M948 232Q886 114 782 44T543 -26Q424 -26 335 16T187 130Q129 202 
101 298T72 501Q72 597 102 689T192 856Q249 927 333 970T523 1014Q631 1014 708 980T833 887Q879 831 901 755T924 
590V524H271Q271
+427 289 348T348 209Q387 151 450 118T600 84Q689 84 753 125T878 275L948 232zM727 608Q727 664 718 728T687 
835Q664 881 624 910T521 939Q416 939 347 852T271 608H727z"/>
+                </glyph>
+                <glyph unicode="e" glyph-name="e" horiz-adv-x="990" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M948 232Q886 114 782 44T543 -26Q424 -26 335 16T187 130Q129 202 
101 298T72 501Q72 597 102 689T192 856Q249 927 333 970T523 1014Q631 1014 708 980T833 887Q879 831 901 755T924 
590V524H271Q271
+427 289 348T348 209Q387 151 450 118T600 84Q689 84 753 125T878 275L948 232zM727 608Q727 664 718 728T687 
835Q664 881 624 910T521 939Q416 939 347 852T271 608H727z"/>
+                </glyph>
+                <glyph unicode="e" glyph-name="e" horiz-adv-x="990" orientation="v">
+                    <path fill="red" d="M948 232Q886 114 782 44T543 -26Q424 -26 335 16T187 130Q129 202 101 
298T72 501Q72 597 102 689T192 856Q249 927 333 970T523 1014Q631 1014 708 980T833 887Q879 831 901 755T924 
590V524H271Q271
+427 289 348T348 209Q387 151 450 118T600 84Q689 84 753 125T878 275L948 232zM727 608Q727 664 718 728T687 
835Q664 881 624 910T521 939Q416 939 347 852T271 608H727z"/>
+                </glyph>
+
+                <glyph unicode="g" glyph-name="g" horiz-adv-x="1043" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M917 102Q957 64 980 16T1003 -103Q1003 -174 972 -236T878 -345Q811 
-392 718 -418T488 -444Q264 -444 153 -379T42 -187Q42 -85 122 -26T326 38V52Q296 61 264 74T209 106Q183 127 167 
155T151 226Q151
+279 188 323T302 400V415Q206 460 153 530T100 694Q100 834 204 924T472 1014Q517 1014 561 1005T652 
982H996V886H764V880Q801 837 819 785T837 683Q837 553 732 463T486 373H365Q342 365 317 344T292 287Q292 250 313 
231T364 204Q393 196 431 194T511 191Q555
+190 631 185T740 179Q786 177 832 157T917 102zM647 687Q647 804 600 873T466 943Q419 943 386 924T331 868Q311 835 
303 789T294 693Q294 582 342 512T468 442Q554 442 600 511T647 687zM839 -140Q839 -84 813 -48T734 1Q706 5 619 
10T417 15Q309 -6 264 -55T218
+-183Q218 -218 233 -250T285 -309Q320 -335 379 -351T523 -368Q670 -368 754 -312T839 -140z"/>
+                </glyph>
+                <glyph unicode="g" glyph-name="g" horiz-adv-x="1043" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M917 102Q957 64 980 16T1003 -103Q1003 -174 972 -236T878 -345Q811 
-392 718 -418T488 -444Q264 -444 153 -379T42 -187Q42 -85 122 -26T326 38V52Q296 61 264 74T209 106Q183 127 167 
155T151 226Q151
+279 188 323T302 400V415Q206 460 153 530T100 694Q100 834 204 924T472 1014Q517 1014 561 1005T652 
982H996V886H764V880Q801 837 819 785T837 683Q837 553 732 463T486 373H365Q342 365 317 344T292 287Q292 250 313 
231T364 204Q393 196 431 194T511 191Q555
+190 631 185T740 179Q786 177 832 157T917 102zM647 687Q647 804 600 873T466 943Q419 943 386 924T331 868Q311 835 
303 789T294 693Q294 582 342 512T468 442Q554 442 600 511T647 687zM839 -140Q839 -84 813 -48T734 1Q706 5 619 
10T417 15Q309 -6 264 -55T218
+-183Q218 -218 233 -250T285 -309Q320 -335 379 -351T523 -368Q670 -368 754 -312T839 -140z"/>
+                </glyph>
+                <glyph unicode="g" glyph-name="g" horiz-adv-x="1043" orientation="v">
+                    <path fill="red" d="M917 102Q957 64 980 16T1003 -103Q1003 -174 972 -236T878 -345Q811 
-392 718 -418T488 -444Q264 -444 153 -379T42 -187Q42 -85 122 -26T326 38V52Q296 61 264 74T209 106Q183 127 167 
155T151 226Q151
+279 188 323T302 400V415Q206 460 153 530T100 694Q100 834 204 924T472 1014Q517 1014 561 1005T652 
982H996V886H764V880Q801 837 819 785T837 683Q837 553 732 463T486 373H365Q342 365 317 344T292 287Q292 250 313 
231T364 204Q393 196 431 194T511 191Q555
+190 631 185T740 179Q786 177 832 157T917 102zM647 687Q647 804 600 873T466 943Q419 943 386 924T331 868Q311 835 
303 789T294 693Q294 582 342 512T468 442Q554 442 600 511T647 687zM839 -140Q839 -84 813 -48T734 1Q706 5 619 
10T417 15Q309 -6 264 -55T218
+-183Q218 -218 233 -250T285 -309Q320 -335 379 -351T523 -368Q670 -368 754 -312T839 -140z"/>
+                </glyph>
+
+                <glyph unicode="h" glyph-name="h" horiz-adv-x="1192" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M1143 0H659V66Q682 68 710 70T756 78Q784 87 797 109T811 
168V675Q811 780 762 837T641 894Q589 894 545 878T465 837Q431 812 413 787T385 745V178Q385 144 398 122T440 
88Q462 78 485 73T537 66V0H53V66Q76
+68 101 70T143 78Q171 87 185 109T199 168V1316Q199 1350 184 1384T143 1435Q125 1448 80 1453T6 1461V1525L371 
1548L385 1533V845H389Q422 878 449 903T520 957Q558 981 609 997T725 1013Q857 1013 928 930T999 689V176Q999 141 
1011 120T1053 86Q1076 77 1094
+73T1143 66V0z"/>
+                </glyph>
+                <glyph unicode="h" glyph-name="h" horiz-adv-x="1192"  lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M1143 0H659V66Q682 68 710 70T756 78Q784 87 797 109T811 
168V675Q811 780 762 837T641 894Q589 894 545 878T465 837Q431 812 413 787T385 745V178Q385 144 398 122T440 
88Q462 78 485 73T537 66V0H53V66Q76
+68 101 70T143 78Q171 87 185 109T199 168V1316Q199 1350 184 1384T143 1435Q125 1448 80 1453T6 1461V1525L371 
1548L385 1533V845H389Q422 878 449 903T520 957Q558 981 609 997T725 1013Q857 1013 928 930T999 689V176Q999 141 
1011 120T1053 86Q1076 77 1094
+73T1143 66V0z"/>
+                </glyph>
+                <glyph unicode="h" glyph-name="h" horiz-adv-x="1192" orientation="v">
+                    <path fill="red" d="M1143 0H659V66Q682 68 710 70T756 78Q784 87 797 109T811 168V675Q811 
780 762 837T641 894Q589 894 545 878T465 837Q431 812 413 787T385 745V178Q385 144 398 122T440 88Q462 78 485 
73T537 66V0H53V66Q76
+68 101 70T143 78Q171 87 185 109T199 168V1316Q199 1350 184 1384T143 1435Q125 1448 80 1453T6 1461V1525L371 
1548L385 1533V845H389Q422 878 449 903T520 957Q558 981 609 997T725 1013Q857 1013 928 930T999 689V176Q999 141 
1011 120T1053 86Q1076 77 1094
+73T1143 66V0z"/>
+                </glyph>
+        
+                <glyph unicode="i" glyph-name="i" horiz-adv-x="600" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M551 0H74V66Q97 68 121 70T164 78Q192 87 205 109T219 168V777Q219 
809 205 835T164 880Q145 892 109 900T43 911V976L391 998L405 984V180Q405 145 418 122T461 88Q483 79 504 74T551 
66V0zM425 1387Q425
+1330 388 1288T295 1245Q244 1245 207 1285T169 1378Q169 1433 206 1474T295 1515Q352 1515 388 1477T425 1387z"/>
+                </glyph>
+                <glyph unicode="i" glyph-name="i" horiz-adv-x="600" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M551 0H74V66Q97 68 121 70T164 78Q192 87 205 109T219 168V777Q219 
809 205 835T164 880Q145 892 109 900T43 911V976L391 998L405 984V180Q405 145 418 122T461 88Q483 79 504 74T551 
66V0zM425 1387Q425
+1330 388 1288T295 1245Q244 1245 207 1285T169 1378Q169 1433 206 1474T295 1515Q352 1515 388 1477T425 1387z"/>
+                </glyph>
+                <glyph unicode="i" glyph-name="i" horiz-adv-x="600" orientation="v">
+                    <path fill="red" d="M551 0H74V66Q97 68 121 70T164 78Q192 87 205 109T219 168V777Q219 809 
205 835T164 880Q145 892 109 900T43 911V976L391 998L405 984V180Q405 145 418 122T461 88Q483 79 504 74T551 
66V0zM425 1387Q425
+1330 388 1288T295 1245Q244 1245 207 1285T169 1378Q169 1433 206 1474T295 1515Q352 1515 388 1477T425 1387z"/>
+                </glyph>
+  
+                <glyph unicode="l" glyph-name="l" horiz-adv-x="586" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M534 0H53V66Q76 68 102 70T145 78Q173 87 187 109T201 168V1310Q201 
1346 186 1377T145 1427Q127 1439 79 1449T2 1461V1525L373 1548L387 1533V180Q387 145 400 123T442 88Q464 78 485 
73T534 66V0z"/>
+                </glyph>
+                <glyph unicode="l" glyph-name="l" horiz-adv-x="586" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M534 0H53V66Q76 68 102 70T145 78Q173 87 187 109T201 168V1310Q201 
1346 186 1377T145 1427Q127 1439 79 1449T2 1461V1525L373 1548L387 1533V180Q387 145 400 123T442 88Q464 78 485 
73T534 66V0z"/>
+                </glyph>
+                <glyph unicode="l" glyph-name="l" horiz-adv-x="586" orientation="v">
+                    <path fill="red" d="M534 0H53V66Q76 68 102 70T145 78Q173 87 187 109T201 168V1310Q201 
1346 186 1377T145 1427Q127 1439 79 1449T2 1461V1525L373 1548L387 1533V180Q387 145 400 123T442 88Q464 78 485 
73T534 66V0z"/>
+                </glyph>         
+
+                <glyph unicode="n" glyph-name="n" horiz-adv-x="1210" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M1161 0H678V66Q701 68 728 70T774 78Q802 87 815 109T829 
168V675Q829 780 780 837T659 894Q606 894 562 878T484 837Q451 814 432 788T403 745V178Q403 144 417 122T459 
88Q480 78 504 73T555 66V0H72V66Q95
+68 119 70T162 78Q190 87 203 109T217 168V777Q217 811 203 839T162 886Q143 898 117 903T61 911V976L389 998L403 
984V845H408Q432 869 468 902T536 957Q573 981 624 997T739 1013Q881 1013 949 925T1018 689V176Q1018 141 1030 
120T1071 86Q1095 76 1112 72T1161
+66V0z"/>
+                </glyph>
+                <glyph unicode="n" glyph-name="n" horiz-adv-x="1210" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M1161 0H678V66Q701 68 728 70T774 78Q802 87 815 109T829 
168V675Q829 780 780 837T659 894Q606 894 562 878T484 837Q451 814 432 788T403 745V178Q403 144 417 122T459 
88Q480 78 504 73T555 66V0H72V66Q95
+68 119 70T162 78Q190 87 203 109T217 168V777Q217 811 203 839T162 886Q143 898 117 903T61 911V976L389 998L403 
984V845H408Q432 869 468 902T536 957Q573 981 624 997T739 1013Q881 1013 949 925T1018 689V176Q1018 141 1030 
120T1071 86Q1095 76 1112 72T1161
+66V0z"/>
+                </glyph>
+                <glyph unicode="n" glyph-name="n" horiz-adv-x="1210" orientation="v">
+                    <path fill="red" d="M1161 0H678V66Q701 68 728 70T774 78Q802 87 815 109T829 168V675Q829 
780 780 837T659 894Q606 894 562 878T484 837Q451 814 432 788T403 745V178Q403 144 417 122T459 88Q480 78 504 
73T555 66V0H72V66Q95
+68 119 70T162 78Q190 87 203 109T217 168V777Q217 811 203 839T162 886Q143 898 117 903T61 911V976L389 998L403 
984V845H408Q432 869 468 902T536 957Q573 981 624 997T739 1013Q881 1013 949 925T1018 689V176Q1018 141 1030 
120T1071 86Q1095 76 1112 72T1161
+66V0z"/>
+                </glyph>
+
+                <glyph unicode="o" glyph-name="o" horiz-adv-x="1104" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M1033 503Q1033 399 1000 299T906 128Q837 48 746 9T542 -30Q448 -30 
363 5T212 109Q147 176 109 272T70 489Q70 720 204 867T557 1014Q764 1014 898 875T1033 503zM826 501Q826 576 811 
659T766 801Q734
+863 682 900T555 938Q478 938 424 900T335 796Q303 735 290 657T277 506Q277 410 292 329T342 183Q376 119 427 
83T555 46Q680 46 753 167T826 501z"/>
+                </glyph>
+                <glyph unicode="o" glyph-name="o" horiz-adv-x="1104" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M1033 503Q1033 399 1000 299T906 128Q837 48 746 9T542 -30Q448 -30 
363 5T212 109Q147 176 109 272T70 489Q70 720 204 867T557 1014Q764 1014 898 875T1033 503zM826 501Q826 576 811 
659T766 801Q734
+863 682 900T555 938Q478 938 424 900T335 796Q303 735 290 657T277 506Q277 410 292 329T342 183Q376 119 427 
83T555 46Q680 46 753 167T826 501z"/>
+                </glyph>
+               <glyph unicode="o" glyph-name="o" horiz-adv-x="1104" orientation="v">
+                    <path fill="red" d="M1033 503Q1033 399 1000 299T906 128Q837 48 746 9T542 -30Q448 -30 363 
5T212 109Q147 176 109 272T70 489Q70 720 204 867T557 1014Q764 1014 898 875T1033 503zM826 501Q826 576 811 
659T766 801Q734
+863 682 900T555 938Q478 938 424 900T335 796Q303 735 290 657T277 506Q277 410 292 329T342 183Q376 119 427 
83T555 46Q680 46 753 167T826 501z"/>
+                </glyph>
+
+                <glyph unicode="r" glyph-name="r" horiz-adv-x="839" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M827 859Q827 808 802 769T725 729Q669 729 640 758T610 822Q610 844 
613 862T620 898Q573 898 510 860T403 752V178Q403 143 416 121T459 88Q484 78 523 73T592 66V0H72V66Q95 68 119 
70T162 78Q190 87
+203 109T217 168V777Q217 808 203 838T162 886Q143 898 117 903T61 911V976L389 998L403 984V845H408Q470 926 546 
968T685 1010Q748 1010 787 969T827 859z"/>
+                </glyph>
+                <glyph unicode="r" glyph-name="r" horiz-adv-x="839" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M827 859Q827 808 802 769T725 729Q669 729 640 758T610 822Q610 844 
613 862T620 898Q573 898 510 860T403 752V178Q403 143 416 121T459 88Q484 78 523 73T592 66V0H72V66Q95 68 119 
70T162 78Q190 87
+203 109T217 168V777Q217 808 203 838T162 886Q143 898 117 903T61 911V976L389 998L403 984V845H408Q470 926 546 
968T685 1010Q748 1010 787 969T827 859z"/>
+                </glyph>
+                <glyph unicode="r" glyph-name="r" horiz-adv-x="839" orientation="v">
+                    <path fill="red" d="M827 859Q827 808 802 769T725 729Q669 729 640 758T610 822Q610 844 613 
862T620 898Q573 898 510 860T403 752V178Q403 143 416 121T459 88Q484 78 523 73T592 66V0H72V66Q95 68 119 70T162 
78Q190 87
+203 109T217 168V777Q217 808 203 838T162 886Q143 898 117 903T61 911V976L389 998L403 984V845H408Q470 926 546 
968T685 1010Q748 1010 787 969T827 859z"/>
+                </glyph>
+
+                <glyph unicode="s" glyph-name="s" horiz-adv-x="885" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M723 483Q764 447 786 400T808 285Q808 148 706 61T440 -26Q354 -26 
282 5T178 62L158 -3H83L73 340H142Q150 301 176 249T239 155Q278 111 332 81T455 51Q551 51 603 94T655 219Q655 261 
639 291T590
+345Q557 368 509 386T402 423Q355 437 298 461T199 519Q155 554 127 605T99 725Q99 846 189 930T430 1014Q488 1014 
548 999T647 963L670 1015H742L757 698H688Q667 804 598 870T428 937Q346 937 299 896T252 797Q252 752 267 722T314 
671Q344 651 389 634T502
+594Q568 573 626 545T723 483z"/>
+                </glyph>
+                <glyph unicode="s" glyph-name="s" horiz-adv-x="885" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M723 483Q764 447 786 400T808 285Q808 148 706 61T440 -26Q354 -26 
282 5T178 62L158 -3H83L73 340H142Q150 301 176 249T239 155Q278 111 332 81T455 51Q551 51 603 94T655 219Q655 261 
639 291T590
+345Q557 368 509 386T402 423Q355 437 298 461T199 519Q155 554 127 605T99 725Q99 846 189 930T430 1014Q488 1014 
548 999T647 963L670 1015H742L757 698H688Q667 804 598 870T428 937Q346 937 299 896T252 797Q252 752 267 722T314 
671Q344 651 389 634T502
+594Q568 573 626 545T723 483z"/>
+                </glyph>
+                <glyph unicode="s" glyph-name="s" horiz-adv-x="885" orientation="v">
+                    <path fill="red" d="M723 483Q764 447 786 400T808 285Q808 148 706 61T440 -26Q354 -26 282 
5T178 62L158 -3H83L73 340H142Q150 301 176 249T239 155Q278 111 332 81T455 51Q551 51 603 94T655 219Q655 261 639 
291T590
+345Q557 368 509 386T402 423Q355 437 298 461T199 519Q155 554 127 605T99 725Q99 846 189 930T430 1014Q488 1014 
548 999T647 963L670 1015H742L757 698H688Q667 804 598 870T428 937Q346 937 299 896T252 797Q252 752 267 722T314 
671Q344 651 389 634T502
+594Q568 573 626 545T723 483z"/>
+                </glyph>
+
+                <glyph unicode="t" glyph-name="t" horiz-adv-x="707" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M681 43Q616 16 558 -2T416 -21Q292 -21 242 41T191 
218V886H13V982H195V1289H377V982H660V886H379V335Q379 273 383 232T405 159Q421 130 453 115T539 100Q564 100 612 
104T681 116V43z"/>
+                </glyph>
+                <glyph unicode="t" glyph-name="t" horiz-adv-x="707" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M681 43Q616 16 558 -2T416 -21Q292 -21 242 41T191 
218V886H13V982H195V1289H377V982H660V886H379V335Q379 273 383 232T405 159Q421 130 453 115T539 100Q564 100 612 
104T681 116V43z"/>
+                </glyph>
+                <glyph unicode="t" glyph-name="t" horiz-adv-x="707" orientation="v">
+                    <path fill="red" d="M681 43Q616 16 558 -2T416 -21Q292 -21 242 41T191 
218V886H13V982H195V1289H377V982H660V886H379V335Q379 273 383 232T405 159Q421 130 453 115T539 100Q564 100 612 
104T681 116V43z"/>
+                </glyph>
+
+                <glyph unicode="x" glyph-name="x" horiz-adv-x="1034" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M1022 0H570V66Q615 71 646 76T678 102Q678 111 668 130T648 165Q623 
204 580 269T473 426Q421 361 377 300T285 169Q278 159 271 144T263 120Q263 98 291 84T377 64V0H12V62Q80 82 121 
110T198 181Q229
+221 284 291T428 481Q377 554 304 659T182 835Q156 873 123 896T28 920V986H457V920Q425 920 394 916T363 898Q363 
889 369 878T384 854Q406 820 452 749T553 599Q588 647 634 711T720 833Q724 840 728 850T732 871Q732 892 698 
904T632 922V986H996V924Q919 904
+876 877T803 813Q770 772 725 712T597 544Q688 416 745 334T860 165Q889 121 924 96T1022 66V0z"/>
+                </glyph>
+                <glyph unicode="x" glyph-name="x" horiz-adv-x="1034" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M1022 0H570V66Q615 71 646 76T678 102Q678 111 668 130T648 165Q623 
204 580 269T473 426Q421 361 377 300T285 169Q278 159 271 144T263 120Q263 98 291 84T377 64V0H12V62Q80 82 121 
110T198 181Q229
+221 284 291T428 481Q377 554 304 659T182 835Q156 873 123 896T28 920V986H457V920Q425 920 394 916T363 898Q363 
889 369 878T384 854Q406 820 452 749T553 599Q588 647 634 711T720 833Q724 840 728 850T732 871Q732 892 698 
904T632 922V986H996V924Q919 904
+876 877T803 813Q770 772 725 712T597 544Q688 416 745 334T860 165Q889 121 924 96T1022 66V0z"/>
+                </glyph>
+                <glyph unicode="x" glyph-name="x" horiz-adv-x="1034" orientation="v">
+                    <path fill="red" d="M1022 0H570V66Q615 71 646 76T678 102Q678 111 668 130T648 165Q623 204 
580 269T473 426Q421 361 377 300T285 169Q278 159 271 144T263 120Q263 98 291 84T377 64V0H12V62Q80 82 121 
110T198 181Q229
+221 284 291T428 481Q377 554 304 659T182 835Q156 873 123 896T28 920V986H457V920Q425 920 394 916T363 898Q363 
889 369 878T384 854Q406 820 452 749T553 599Q588 647 634 711T720 833Q724 840 728 850T732 871Q732 892 698 
904T632 922V986H996V924Q919 904
+876 877T803 813Q770 772 725 712T597 544Q688 416 745 334T860 165Q889 121 924 96T1022 66V0z"/>
+                </glyph>
+
+                <glyph unicode="z" glyph-name="z" horiz-adv-x="909" lang="en" orientation="h">
+                    <path fill="#6666FF" d="M853 0H55V53L613 905H475Q388 905 339 902T249 882Q221 871 197 
819T154 683H93V986H847V945L280 81Q316 80 359 80T452 79Q492 79 535 80T647 85Q687 87 707 112T739 169Q750 198 
765 249T793 348H853V0z"/>
+                </glyph>
+                <glyph unicode="z" glyph-name="z" horiz-adv-x="909" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M853 0H55V53L613 905H475Q388 905 339 902T249 882Q221 871 197 
819T154 683H93V986H847V945L280 81Q316 80 359 80T452 79Q492 79 535 80T647 85Q687 87 707 112T739 169Q750 198 
765 249T793 348H853V0z"/>
+                </glyph>
+                <glyph unicode="z" glyph-name="z" horiz-adv-x="909" orientation="v">
+                    <path fill="red" d="M853 0H55V53L613 905H475Q388 905 339 902T249 882Q221 871 197 819T154 
683H93V986H847V945L280 81Q316 80 359 80T452 79Q492 79 535 80T647 85Q687 87 707 112T739 169Q750 198 765 
249T793 348H853V0z"/>
+                </glyph>
+
+               <glyph unicode="&#xe7;" glyph-name="ccedilla" horiz-adv-x="930" lang="en" orientation="h">
+                    <path fill="#6666FF"  d="M459 -22Q277 1 175 140T72 497Q72 601 104 691T199 856Q258 927 
347 970T541 1014Q686 1014 777 945T868 755Q868 705 844 667T765 628Q706 628 674 658T641 725Q641 770 653 817T667 
887Q649
+918 614 928T537 939Q489 939 446 919T361 843Q324 793 301 708T278 505Q278 319 360 202T577 84Q674 84 739 
131T861 272L925 230Q861 115 756 46T538 -26V-99Q583 -99 619 -104T692 -129Q726 -145 747 -174T768 -248Q768 -306 
736 -346T647 -408Q592 -428 525
+-436T369 -444V-372Q410 -372 458 -371T540 -362Q580 -353 602 -335T624 -282Q624 -258 609 -243T569 -219Q549 -212 
516 -210T459 -207V-22z"/>
+               </glyph>
+               <glyph unicode="&#xe7;" glyph-name="ccedilla" horiz-adv-x="930" lang="fr-FR" orientation="h">
+                    <path fill="#33CC33" d="M459 -22Q277 1 175 140T72 497Q72 601 104 691T199 856Q258 927 347 
970T541 1014Q686 1014 777 945T868 755Q868 705 844 667T765 628Q706 628 674 658T641 725Q641 770 653 817T667 
887Q649
+918 614 928T537 939Q489 939 446 919T361 843Q324 793 301 708T278 505Q278 319 360 202T577 84Q674 84 739 
131T861 272L925 230Q861 115 756 46T538 -26V-99Q583 -99 619 -104T692 -129Q726 -145 747 -174T768 -248Q768 -306 
736 -346T647 -408Q592 -428 525
+-436T369 -444V-372Q410 -372 458 -371T540 -362Q580 -353 602 -335T624 -282Q624 -258 609 -243T569 -219Q549 -212 
516 -210T459 -207V-22z"/>
+               </glyph>
+               <glyph unicode="&#xe7;" glyph-name="ccedilla" horiz-adv-x="930" orientation="v">
+                    <path fill="red"  d="M459 -22Q277 1 175 140T72 497Q72 601 104 691T199 856Q258 927 347 
970T541 1014Q686 1014 777 945T868 755Q868 705 844 667T765 628Q706 628 674 658T641 725Q641 770 653 817T667 
887Q649
+918 614 928T537 939Q489 939 446 919T361 843Q324 793 301 708T278 505Q278 319 360 202T577 84Q674 84 739 
131T861 272L925 230Q861 115 756 46T538 -26V-99Q583 -99 619 -104T692 -129Q726 -145 747 -174T768 -248Q768 -306 
736 -346T647 -408Q592 -428 525
+-436T369 -444V-372Q410 -372 458 -371T540 -362Q580 -353 602 -335T624 -282Q624 -258 609 -243T569 -219Q549 -212 
516 -210T459 -207V-22z"/>
+               </glyph>
+
+            </font>
+        </defs>
+
+        <g font-size="30" font-family="SVGGeorgia" fill="purple">
+            <text x="100" y="150">Horizontal Text</text>
+            <text x="100" y="180" writing-mode="tb">Vertical Text</text>
+            <text x="150" y="200" xml:lang="en">English</text>
+            <text x="150" y="250" xml:lang="fr">Fran&#xe7;ais</text>
+        </g>
+                 
+          
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontGlyphsBoth.png 
b/tests/data/svg/batik/tests/spec/fonts/fontGlyphsBoth.png
new file mode 100644
index 0000000..d7db075
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontGlyphsBoth.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontGlyphsBoth.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontGlyphsBoth.svg
new file mode 100644
index 0000000..467c9c7
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontGlyphsBoth.svg
@@ -0,0 +1,473 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Draws <text> elements using SVG fonts with glyphs                      -->
+<!-- using the d attribute. Tests glyph layout by                           -->
+<!-- comparing equivalent SVG for the <text> element, both                  -->
+<!-- on a grid and as a mask.                                               -->
+<!-- Kerning is also tested.                                                -->
+<!--                                                                        -->
+<!-- @author dean jackson cmis csiro au                                     -->
+<!-- @version $Id: fontGlyphsBoth.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+    <title>SVGFont - both glyph types test</title>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="50">SVG fonts - both glyph types</text>
+
+        <defs>
+
+            <pattern id="gridPattern" viewBox="-5 -5 10 10" x="-5" y="-5" width="10" height="10"
+                     patternContentUnits="userSpaceOnUse" patternUnits="userSpaceOnUse">
+                <g stroke="rgb(225, 225, 245)" stroke-width="1">
+                    <line x1="0" y1="-6" x2="0" y2="6" />
+                    <line x1="-6" y1="0" x2="6" y2="0" />
+                </g>
+            </pattern>
+
+            <!-- ============================= -->
+            <!-- SVG Font Definition           -->
+            <!-- ============================= -->
+     
+            <!-- This is an encoding of Microsoft's Comic Sans font -->
+            <!-- in SVG format (as allowed in the license). For the -->
+            <!-- true type version of this font, refer to           -->
+            <!-- http://www.microsoft.com/truetype                  -->
+            <!-- Converted using SteadyState's TrueType/SVG font    -->
+            <!-- toolkit (http://www.steadystate.com/svg            -->
+            <!-- Horizontal Kerning has been added to the font for  -->
+            <!-- testing purposes.                                  -->
+
+            <font horiz-adv-x="959">
+            <font-face
+             font-family="SVGComic"            
+             units-per-em="2048"
+             panose-1="3 15 7 2 3 3 2 2 2 4"
+             ascent="2257"
+             descent="597"/>
+           <missing-glyph horiz-adv-x="1024" d="M128 0V1638H896V0H128zM256 128H768V1510H256V128z"> 
+           <path fill="red" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </missing-glyph>
+
+           <!-- "a" glyph -->
+           <glyph id="a" unicode="a" glyph-name="a" horiz-adv-x="1048" d="M920 -66Q901 -66 851 -22Q806 19 
784 51Q688 -1 615 -27T493 -54Q259 -54 152 78Q51 202 51 458Q51 700 217 872T615 1044Q702 1044 810 999Q946 943 
946 864Q946 837 926 816Q916 778 911 691T904 468Q903
+344 921 272Q931 228 984 96Q991 78 1007 43L1013 26Q1013 -14 985 -40T920 -66zM712 629Q712 672 717 722T734 
830Q697 849 671 858T628 867Q473 867 361 741T248 449Q248 285 306 203T480 121Q576 121 643 156Q679 175 744 
232Q712 497 712 629z"> 
+           <path fill="blue" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "b" glyph -->
+           <glyph id="b" unicode="b" glyph-name="b" horiz-adv-x="1215" d="M606 -42Q453 -42 328 18Q296 -30 
250 -30Q212 -30 186 -4T159 63Q159 89 161 140T164 217Q164 323 159 534T153 852Q153 925 154 1128T155 1406Q155 
1466 180 1514Q213 1575 271 1575Q346 1575 346 1488Q346
+1474 341 1447T336 1406L333 1187L331 932Q418 991 496 1020T644 1050Q859 1050 993 885Q1119 730 1119 504Q1119 
276 972 117T606 -42zM644 861Q562 861 476 815Q434 792 332 716L330 543L331 387L332 223Q380 201 467 167Q529 148 
606 148Q751 148 844 250T937
+504Q937 653 862 753Q781 861 644 861z"> 
+           <path fill="green" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "c" glyph -->
+           <glyph id="c" unicode="c" glyph-name="c" horiz-adv-x="1052" d="M591 -63Q386 -63 249 61Q105 191 
105 404Q105 607 240 823Q390 1063 578 1063Q676 1063 797 1017Q950 958 950 873Q950 835 925 806T863 776Q834 776 
813 793T771 828Q712 875 578 875Q476 875 376 693Q285
+526 285 404Q285 272 375 196Q459 125 591 125Q651 125 719 157L835 219Q865 235 878 235Q915 235 942 206T969 
138Q969 65 815 -3Q680 -63 591 -63z"> 
+           <path fill="orange" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "d" glyph -->
+           <glyph id="d" unicode="d" glyph-name="d" horiz-adv-x="1203" d="M1060 883Q1048 736 1048 589Q1048 
256 1079 86Q1081 72 1081 63Q1081 23 1053 -3T988 -29Q926 -29 897 61Q825 8 748 -19T586 -46Q379 -46 243 92Q103 
233 103 454Q103 721 244 882T612 1043Q728 1043
+791 1007L885 938Q899 1359 918 1505Q931 1594 1009 1594Q1100 1594 1100 1497Q1100 1358 1060 883zM616 857Q448 
857 364 758T280 458Q280 329 371 236T586 143Q670 143 728 174Q762 192 839 257Q854 270 868 288L865 461L866 
577L868 695Q830 776 767 816T616 857z"> 
+           <path fill="cyan" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "e" glyph -->
+           <glyph id="e" unicode="e" glyph-name="e" horiz-adv-x="1122" d="M606 -46Q380 -46 240 67Q87 192 87 
417Q87 677 213 853Q350 1045 579 1045Q745 1045 850 989Q979 920 979 777Q979 677 866 595Q816 559 654 483L272 
302Q328 219 411 177T606 135Q675 135 768 161Q886
+194 920 247T993 301Q1028 301 1055 275T1083 213Q1083 102 904 22Q751 -46 606 -46zM579 865Q457 865 376 771T255 
486L562 632Q743 720 820 785Q734 865 579 865z"> 
+           <path fill="magenta" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 
L256,1024z"/> 
+           </glyph>
+
+           <!-- "f" glyph -->
+           <glyph id="f" unicode="f" glyph-name="f" horiz-adv-x="1041" d="M811 1406Q569 1406 540 1070L537 
1008Q707 1020 757 1020Q916 1020 916 920Q916 847 838 833Q804 827 759 828T528 815L520 587Q520 525 524 401T528 
216Q528 26 506 -80Q489 -160 413 -160Q372 -160
+343 -134T314 -67Q314 -59 316 -47Q337 83 337 236L334 509V799Q209 789 176 789Q75 789 75 886Q75 985 250 990L346 
993Q349 1049 361 1145Q387 1367 473 1472Q577 1599 798 1599Q941 1599 941 1502Q941 1406 811 1406z"> 
+           <path fill="purple" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "g" glyph -->
+           <glyph id="g" unicode="g" glyph-name="g" horiz-adv-x="1087" d="M962 431L939 95Q933 -105 898 
-232Q853 -394 754 -471Q634 -564 407 -564Q274 -564 184 -546Q58 -521 58 -442Q58 -353 145 -353Q181 -353 265 
-370T451 -386Q643 -383 716 -200Q764 -78 767 175Q713
+75 639 25T468 -25Q287 -25 174 98T60 419Q60 689 215 854Q375 1024 651 1024Q744 1024 807 1000T903 928Q1010 925 
1010 809Q1010 738 989 619Q966 481 962 431zM641 864Q451 864 347 733Q254 615 254 433Q254 288 309 215T474 
142Q575 142 670 256Q756 361 768
+464Q789 572 813 803Q773 834 730 849T641 864z"> 
+           <path fill="gray" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "u" glyph -->
+           <glyph unicode="u" glyph-name="u" horiz-adv-x="1065" d="M955 584Q955 512 956 368T957 152Q957 130 
960 85T964 18Q964 -25 935 -52T864 -80Q787 -80 766 15Q641 -50 478 -50Q347 -50 261 8Q166 72 148 195Q109 460 109 
667Q109 804 139 979Q153 1066 234 1066Q277
+1066 306 1039T335 968Q335 922 321 821T306 667Q306 500 317 381T350 190Q383 172 415 163T478 153Q612 153 761 
196L760 399L758 593Q758 809 777 968Q788 1060 874 1060Q917 1060 946 1032T973 962L955 584z"> 
+           <path fill="khaki" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "v" glyph -->
+           <glyph unicode="v" glyph-name="v" horiz-adv-x="996" d="M600 52Q597 -40 509 -40Q436 -40 403 46L250 
452L72 911Q62 937 62 957Q62 998 93 1027T165 1056Q225 1056 251 995L505 296Q580 456 694 760Q721 840 779 986Q810 
1050 867 1050Q908 1050 939 1021T970
+952Q970 914 805 524L600 52z"> 
+           <path fill="yellow" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "w" glyph -->
+           <glyph unicode="w" glyph-name="w" horiz-adv-x="1401" d="M1336 895Q1258 569 1132 158Q1104 67 1039 
-29Q1004 -82 944 -81Q835 -79 774 190Q754 276 733 424L700 647L618 456L466 43Q453 5 428 -15Q398 -73 332 -75Q256 
-78 185 223Q149 378 113 643L89 793Q76
+883 76 944Q76 986 105 1013T177 1041Q253 1041 271 958Q284 899 292 812L307 665L366 216Q477 524 596 926Q629 
1037 711 1037Q790 1037 818 913Q844 796 883 553Q923 301 954 160L1027 432L1156 977Q1171 1038 1242 1038Q1284 
1038 1315 1010T1346 941Q1346 936
+1336 895z"> 
+           <path fill="pink" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "x" glyph -->
+           <glyph unicode="x" glyph-name="x" horiz-adv-x="1209" d="M1058 858L912 721L734 544L1060 118Q1085 
86 1085 55Q1085 16 1055 -14T987 -44Q949 -44 918 -7Q826 100 594 405L399 204Q340 151 227 39Q195 3 158 3Q120 3 
91 33T61 102Q61 133 86 165Q114 202 173
+254Q242 315 264 338L477 561L346 750Q267 863 208 915Q170 949 170 989Q170 1029 198 1060T264 1091Q323 1091 442 
937L615 698L811 878Q933 993 976 1058Q1008 1105 1052 1105Q1091 1105 1121 1076T1151 1009Q1151 954 1058 858z"> 
+           <path fill="cornflowerblue" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 
L256,1024z"/> 
+           </glyph>
+
+           <!-- "y" glyph -->
+           <glyph unicode="y" glyph-name="y" horiz-adv-x="1066" d="M1011 892L665 144Q537 -129 469 -313L403 
-507Q377 -579 313 -579Q271 -579 241 -552T210 -483Q210 -383 426 96L68 785L23 858Q-4 904 -4 935Q-4 976 27 
1007T98 1038Q144 1038 169 1003Q339 767 534
+331L682 676Q762 855 836 984Q868 1040 920 1040Q961 1040 992 1011T1024 942Q1024 920 1011 892z">
+           <path fill="brown" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "z" glyph -->
+           <glyph unicode="z" glyph-name="z" horiz-adv-x="1102" d="M964 809Q875 702 736 499Q575 263 500 
165Q605 170 683 170Q722 170 799 155T915 140Q959 140 986 112T1014 39Q1014 -6 987 -34T915 -62Q876 -62 799 
-47T683 -32Q458 -32 256 -73Q235 -77 219 -77Q122
+-77 122 8Q122 58 172 104Q433 340 740 839Q607 831 547 831Q399 831 243 854Q154 867 154 953Q154 997 181 
1026T249 1056Q298 1056 397 1045T547 1033Q615 1033 751 1042T955 1052Q1040 1052 1040 982Q1040 901 964 809z"> 
+           <path fill="aqua" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <hkern g1="u" g2="v" k="-100"/>
+           <hkern g1="v" g2="w" k="-200"/>
+           <hkern g1="w" g2="x" k="100"/>
+           <hkern g1="x" g2="y" k="200"/>
+           <hkern g1="y" g2="z" k="-500"/>
+
+           </font>
+
+           <!-- Equivalent SVG to use in the text elements -->
+ 
+           <g id="abcdefg">
+
+           <!-- Step 1: flip y axis -->
+
+           <g transform="scale(1, -1)">
+
+           <!-- Step 2: scale into glyph coordinates -->
+           <!-- font-size / units-per-em == 50 / 2048 == 0.0244140625  -->
+
+           <g transform="scale(0.0244140625)">
+
+             <!-- "a" glyph -->
+
+             <g>
+             <path d="M920 -66Q901 -66 851 -22Q806 19 784 51Q688 -1 615 -27T493 -54Q259
+                      -54 152 78Q51 202 51 458Q51 700 217 872T615 1044Q702 1044 810 999Q946
+                      943 946 864Q946 837 926 816Q916 778 911 691T904 468Q903
+                      344 921 272Q931 228 984 96Q991 78 1007 43L1013 26Q1013 -14 985 
+                      -40T920 -66zM712 629Q712 672 717 722T734 830Q697 849 671 858T628 
+                      867Q473 867 361 741T248 449Q248 285 306 203T480 121Q576 121 643 
+                      156Q679 175 744 232Q712 497 712 629z"/>
+             <path fill="blue" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+             </g>
+
+             <!-- "b" glyph with advance from a == 1048 -->
+
+             <g transform="translate(1048, 0)">
+             <path d="M606 -42Q453 -42 328 18Q296 -30 250 -30Q212 -30 186 -4T159 63Q159 
+                      89 161 140T164 217Q164 323 159 534T153 852Q153 925 154 1128T155 
+                      1406Q155 1466 180 1514Q213 1575 271 1575Q346 1575 346 1488Q346
+                      1474 341 1447T336 1406L333 1187L331 932Q418 991 496 1020T644 
+                      1050Q859 1050 993 885Q1119 
+                      730 1119 504Q1119 276 972 117T606 -42zM644 861Q562 861 476 815Q434 
+                      792 332 716L330 543L331 387L332 223Q380 201 467 167Q529 148 606 
+                      148Q751 148 844 250T937 504Q937 653 862 753Q781 861 644 861z"/>
+             <path fill="green" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/>
+             </g>
+
+             <!-- "c" glyph with advance from ab == 1048 + 1215 = 2263 -->
+
+             <g transform="translate(2263, 0)">
+             <path d="M591 -63Q386 -63 249 61Q105 191 105 404Q105 607 240 823Q390 
+                      1063 578 1063Q676 1063 797 1017Q950 958 950 873Q950 835 925 
+                      806T863 776Q834 776 813 793T771 828Q712 875 578 875Q476 875 
+                      376 693Q285 526 285 404Q285 272 375 196Q459 125 591 125Q651 
+                      125 719 157L835 219Q865 235 878 235Q915 235 942 206T969 138Q969 
+                      65 815 -3Q680 -63 591 -63z"/>
+             <path fill="orange" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 
L256,1024z"/> 
+             </g>
+
+             <!-- "d" glyph with advance from abc == 2263 + 1052 = 3315 -->
+
+             <g transform="translate(3315, 0)">
+             <path d="M1060 883Q1048 736 1048 589Q1048 256 1079 86Q1081 72 1081 
+                      63Q1081 23 1053 -3T988 -29Q926 -29 897 61Q825 8 748 -19T586 
+                      -46Q379 -46 243 92Q103 233 103 454Q103 721 244 882T612 
+                      1043Q728 1043 791 1007L885 938Q899 1359 918 1505Q931 
+                      1594 1009 1594Q1100 1594 1100 1497Q1100 1358 1060 
+                      883zM616 857Q448 857 364 758T280 458Q280 329 371 
+                      236T586 143Q670 143 728 174Q762 192 839 257Q854 270 
+                      868 288L865 461L866 577L868 695Q830 776 767 816T616 857z"/>
+             <path fill="cyan" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/>
+             </g>
+
+             <!-- "e" glyph with advance from abcd == 3315 + 1203 = 4518 -->
+
+             <g transform="translate(4518, 0)">
+             <path d="M606 -46Q380 -46 240 67Q87 192 87 417Q87 677 213 853Q350 
+                      1045 579 1045Q745 1045 850 989Q979 920 979 777Q979 677 866 
+                      595Q816 559 654 483L272 302Q328 219 411 177T606 135Q675 
+                      135 768 161Q886 194 920 247T993 301Q1028 301 1055 275T1083 
+                      213Q1083 102 904 22Q751 -46 606 -46zM579 865Q457 865 376 
+                      771T255 486L562 632Q743 720 820 785Q734 865 579 865z"/>
+             <path fill="magenta" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 
L256,1024z"/> 
+             </g>
+
+             <!-- "f" glyph with advance from abcde == 4518 + 1122 = 5640 -->
+
+             <g transform="translate(5640, 0)">
+             <path d="M811 1406Q569 1406 540 1070L537 1008Q707 1020 757 
+                      1020Q916 1020 916 920Q916 847 838 833Q804 827 759 
+                      828T528 815L520 587Q520 525 524 401T528 216Q528 26 
+                      506 -80Q489 -160 413 -160Q372 -160 343 -134T314 -67Q314 
+                      -59 316 -47Q337 83 337 236L334 509V799Q209 789 176 789Q75 
+                      789 75 886Q75 985 250 990L346 993Q349 1049 361 1145Q387 
+                      1367 473 1472Q577 1599 798 1599Q941 1599 941 1502Q941 
+                      1406 811 1406z"/>
+             <path fill="purple" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 
L256,1024z"/>
+             </g>
+
+             <!-- "g" glyph with advance from abcdef == 5640 + 1041 = 6681 -->
+
+             <g transform="translate(6681, 0)">
+             <path d="M962 431L939 95Q933 -105 898 -232Q853 -394 754 -471Q634 
+                      -564 407 -564Q274 -564 184 -546Q58 -521 58 -442Q58 -353 145 
+                      -353Q181 -353 265 -370T451 -386Q643 -383 716 -200Q764 -78 
+                      767 175Q713 75 639 25T468 -25Q287 -25 174 98T60 419Q60 689 
+                      215 854Q375 1024 651 1024Q744 1024 807 1000T903 928Q1010 925 
+                      1010 809Q1010 738 989 619Q966 481 962 431zM641 864Q451 864 
+                      347 733Q254 615 254 433Q254 288 309 215T474 142Q575 142 670 
+                      256Q756 361 768 464Q789 572 813 803Q773 834 730 849T641 864z"/>
+             <path fill="gray" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/>
+             </g>
+
+             <!-- missing glyph with advance from abcdefg == 6681 + 1087 = 7768 -->
+
+             <g transform="translate(7768, 0)">
+             <path d="M128 0V1638H896V0H128zM256 128H768V1510H256V128z"/>
+             <path fill="red" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/>
+             </g>
+
+           </g>
+
+           </g>
+
+           </g>
+
+           <g id="uvwxyz">
+
+           <!-- Step 1: flip y axis -->
+
+           <g transform="scale(1, -1)">
+
+           <!-- Step 2: scale into glyph coordinates -->
+           <!-- font-size / units-per-em == 50 / 2048 == 0.0244140625  -->
+
+           <g transform="scale(0.0244140625)">
+
+             <!-- "u" glyph -->
+
+             <g>
+             <path d="M955 584Q955 512 956 368T957 152Q957 130 960 85T964 18Q964 
+                      -25 935 -52T864 -80Q787 -80 766 15Q641 -50 478 -50Q347 -50 261 
+                      8Q166 72 148 195Q109 460 109 667Q109 804 139 979Q153 1066 234 
+                      1066Q277 1066 306 1039T335 968Q335 922 321 821T306 667Q306 500 
+                      317 381T350 190Q383 172 415 163T478 153Q612 153 761 196L760 
+                      399L758 593Q758 809 777 968Q788 1060 874 1060Q917 1060 946 
+                      1032T973 962L955 584z"/>
+             <path fill="khaki" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/>
+             </g>
+
+             <!-- "v" glyph with advance/kerning from u == 1065 + 100 = 1165 -->
+
+             <g transform="translate(1165,0)">
+             <path d="M600 52Q597 -40 509 -40Q436 -40 403 46L250 452L72 911Q62 937 
+                      62 957Q62 998 93 1027T165 1056Q225 1056 251 995L505 296Q580 456 
+                      694 760Q721 840 779 986Q810 1050 867 1050Q908 1050 939 1021T970
+                      952Q970 914 805 524L600 52z"/>
+             <path fill="yellow" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 
L256,1024z"/>
+             </g>
+
+             <!-- "w" glyph with advance/kerning from uv == 1165 + 996 + 200 = 2361 -->
+
+             <g transform="translate(2361,0)">
+             <path d="M1336 895Q1258 569 1132 158Q1104 67 1039 -29Q1004 -82 944 
+                      -81Q835 -79 774 190Q754 276 733 424L700 647L618 456L466 43Q453 5 
+                      428 -15Q398 -73 332 -75Q256 -78 185 223Q149 378 113 643L89 793Q76
+                      883 76 944Q76 986 105 1013T177 1041Q253 1041 271 958Q284 899 292 
+                      812L307 665L366 216Q477 524 596 926Q629 1037 711 1037Q790 1037 
+                      818 913Q844 796 883 553Q923 301 954 160L1027 432L1156 977Q1171 
+                      1038 1242 1038Q1284 1038 1315 1010T1346 941Q1346 936
+                      1336 895z"/>
+             <path fill="pink" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/>
+             </g>
+
+             <!-- "x" glyph with advance/kerning from uvw == 2361 + 1401 - 100 = 3662 -->
+
+             <g transform="translate(3662,0)">
+             <path d="M1058 858L912 721L734 544L1060 118Q1085 86 1085 55Q1085 16 
+                      1055 -14T987 -44Q949 -44 918 -7Q826 100 594 405L399 204Q340 151 
+                      227 39Q195 3 158 3Q120 3 91 33T61 102Q61 133 86 165Q114 202 173
+                      254Q242 315 264 338L477 561L346 750Q267 863 208 915Q170 949 170 
+                      989Q170 1029 198 1060T264 1091Q323 1091 442 937L615 698L811 
+                      878Q933 993 976 1058Q1008 1105 1052 1105Q1091 1105 1121 1076T1151 
+                      1009Q1151 954 1058 858z"/>
+             <path fill="cornflowerblue" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 
L256,1024z"/>
+             </g>
+
+             <!-- "y" glyph with advance/kerning from uvwx == 3662 + 1209 - 200 = 4671 -->
+
+             <g transform="translate(4671,0)">
+             <path d="M1011 892L665 144Q537 -129 469 -313L403 -507Q377 -579 313 
+                      -579Q271 -579 241 -552T210 -483Q210 -383 426 96L68 785L23 858Q-4 
+                      904 -4 935Q-4 976 27 1007T98 1038Q144 1038 169 1003Q339 767 534
+                      331L682 676Q762 855 836 984Q868 1040 920 1040Q961 1040 992 
+                      1011T1024 942Q1024 920 1011 892z"/>
+             <path fill="brown" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 
L256,1024z"/> 
+             </g>
+
+             <!-- "z" glyph with advance/kerning from uvwxy == 4671 + 1066 + 500 = 6237 -->
+
+             <g transform="translate(6237,0)">
+             <path d="M964 809Q875 702 736 499Q575 263 500 165Q605 170 683 
+                      170Q722 170 799 155T915 140Q959 140 986 112T1014 39Q1014 -6 
+                      987 -34T915 -62Q876 -62 799 -47T683 -32Q458 -32 256 -73Q235 
+                      -77 219 -77Q122 -77 122 8Q122 58 172 104Q433 340 740 839Q607 
+                      831 547 831Q399 831 243 854Q154 867 154 953Q154 997 181 
+                      1026T249 1056Q298 1056 397 1045T547 1033Q615 1033 751 1042T955 
+                      1052Q1040 1052 1040 982Q1040 901 964 809z"/>
+             <path fill="aqua" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/>
+             </g>
+
+           </g>
+
+           </g>
+
+           </g>
+
+        </defs>
+
+        <g transform="translate(80, 140)">
+
+        <g id="grid" stroke="black" fill="none">
+            <rect x="0" y="0" width="320" height="240" fill="url(#gridPattern)"/>
+
+            <rect x="-25" y="0" width="25" height="240" fill="rgb(240, 240, 240)" />
+            <rect x="-50" y="0" width="25" height="240" fill="rgb(220, 220, 220)" />
+
+            <line x1="-25" y1="60" x2="320" y2="60" />
+            <line x1="-50" y1="120" x2="320" y2="120" />
+            <line x1="-25" y1="180" x2="320" y2="180" />
+
+            <g class="legend" text-anchor="middle" fill="black" stroke="none">
+            <text transform="translate(-35, 60) rotate(-90)">
+                without kerning
+            </text>
+
+            <text transform="translate(-35, 180) rotate(-90)">
+                with kerning
+            </text>
+
+            <text transform="translate(-8, 30) rotate(-90)">
+                font
+            </text>
+
+            <text transform="translate(-8, 90) rotate(-90)">
+                svg
+            </text>
+
+            <text transform="translate(-8, 150) rotate(-90)">
+                font
+            </text>
+
+            <text transform="translate(-8, 210) rotate(-90)">
+                svg
+            </text>
+
+            </g>
+        </g>
+
+        <g font-size="50" fill="black" stroke="none">
+
+        <!-- ============================================================= -->
+        <!-- Font as text                                                  -->
+        <!-- ============================================================= -->
+
+        <g transform="translate(30,45)">
+
+        <text font-family="SVGComic">abcdefg&#06666;</text>
+        
+        </g>
+
+        <!-- ============================================================= -->
+        <!-- Font as equivalent SVG                                        -->
+        <!-- ============================================================= -->
+
+        <g transform="translate(30,105)">
+
+           <use xlink:href="#abcdefg"/> 
+                
+        </g>
+
+
+        <!-- ============================================================= -->
+        <!-- Font as text with kerning                                     -->
+        <!-- ============================================================= -->
+
+        <g transform="translate(30,165)">
+
+        <text font-family="SVGComic">uvwxyz</text>
+        
+        </g>
+
+        <!-- ============================================================= -->
+        <!-- Font as equivalent SVG with kerning                           -->
+        <!-- ============================================================= -->
+
+        <g transform="translate(30,225)">
+
+           <use xlink:href="#uvwxyz"/>
+        
+        </g>
+
+        </g>
+
+      </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontGlyphsChildSVG.png 
b/tests/data/svg/batik/tests/spec/fonts/fontGlyphsChildSVG.png
new file mode 100644
index 0000000..d4c3e36
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontGlyphsChildSVG.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontGlyphsChildSVG.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontGlyphsChildSVG.svg
new file mode 100644
index 0000000..6b936cc
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontGlyphsChildSVG.svg
@@ -0,0 +1,474 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Draws <text> elements using SVG fonts with glyphs                         -->
+<!-- using the d attribute. Tests glyph layout by                              -->
+<!-- comparing equivalent SVG for the <text> element, both                     -->
+<!-- on a grid and as a mask.                                                  -->
+<!-- Kerning is also tested.                                                   -->
+<!--                                                                           -->
+<!-- @author dean jackson cmis csiro au                                        -->
+<!-- @version $Id: fontGlyphsChildSVG.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>SVGFont - children SVG test</title>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="50">SVG fonts - glyphs SVG children</text>
+
+        <defs>
+
+            <pattern id="gridPattern" viewBox="-5 -5 10 10" x="-5" y="-5" width="10" height="10"
+                     patternContentUnits="userSpaceOnUse" patternUnits="userSpaceOnUse">
+                <g stroke="rgb(225, 225, 245)" stroke-width="1">
+                    <line x1="0" y1="-6" x2="0" y2="6" />
+                    <line x1="-6" y1="0" x2="6" y2="0" />
+                </g>
+            </pattern>
+
+            <!-- ============================= -->
+            <!-- SVG Font Definition           -->
+            <!-- ============================= -->
+     
+            <!-- This is an encoding of Microsoft's Comic Sans font -->
+            <!-- in SVG format (as allowed in the license). For the -->
+            <!-- true type version of this font, refer to           -->
+            <!-- http://www.microsoft.com/truetype                  -->
+            <!-- Converted using SteadyState's TrueType/SVG font    -->
+            <!-- toolkit (http://www.steadystate.com/svg            -->
+            <!-- Horizontal Kerning has been added to the font for  -->
+            <!-- testing purposes.                                  -->
+
+            <font horiz-adv-x="959">
+            <font-face
+             font-family="SVGComic"            
+             units-per-em="2048"
+             panose-1="3 15 7 2 3 3 2 2 2 4"
+             ascent="2257"
+             descent="597"
+             />
+           <missing-glyph horiz-adv-x="1024"> <path fill="black" stroke="none" d="M128 0V1638H896V0H128zM256 
128H768V1510H256V128z"/> </missing-glyph>
+           <!-- "a" glyph -->
+           <glyph unicode="a" glyph-name="a" horiz-adv-x="1048"> <path fill="black" stroke="none" d="M920 
-66Q901 -66 851 -22Q806 19 784 51Q688 -1 615 -27T493 -54Q259 -54 152 78Q51 202 51 458Q51 700 217 872T615 
1044Q702 1044 810 999Q946 943 946 864Q946 837 926 816Q916 778 911 691T904 468Q903
+344 921 272Q931 228 984 96Q991 78 1007 43L1013 26Q1013 -14 985 -40T920 -66zM712 629Q712 672 717 722T734 
830Q697 849 671 858T628 867Q473 867 361 741T248 449Q248 285 306 203T480 121Q576 121 643 156Q679 175 744 
232Q712 497 712 629z"/> </glyph>
+
+           <!-- "b" glyph -->
+           <glyph unicode="b" glyph-name="b" horiz-adv-x="1215"> <path fill="black" stroke="none" d="M606 
-42Q453 -42 328 18Q296 -30 250 -30Q212 -30 186 -4T159 63Q159 89 161 140T164 217Q164 323 159 534T153 852Q153 
925 154 1128T155 1406Q155 1466 180 1514Q213 1575 271 1575Q346 1575 346 1488Q346
+1474 341 1447T336 1406L333 1187L331 932Q418 991 496 1020T644 1050Q859 1050 993 885Q1119 730 1119 504Q1119 
276 972 117T606 -42zM644 861Q562 861 476 815Q434 792 332 716L330 543L331 387L332 223Q380 201 467 167Q529 148 
606 148Q751 148 844 250T937
+504Q937 653 862 753Q781 861 644 861z"/> </glyph>
+
+           <!-- "c" glyph -->
+           <glyph unicode="c" glyph-name="c" horiz-adv-x="1052"> <path fill="black" stroke="none" d="M591 
-63Q386 -63 249 61Q105 191 105 404Q105 607 240 823Q390 1063 578 1063Q676 1063 797 1017Q950 958 950 873Q950 
835 925 806T863 776Q834 776 813 793T771 828Q712 875 578 875Q476 875 376 693Q285
+526 285 404Q285 272 375 196Q459 125 591 125Q651 125 719 157L835 219Q865 235 878 235Q915 235 942 206T969 
138Q969 65 815 -3Q680 -63 591 -63z"/> </glyph>
+
+           <!-- "d" glyph -->
+           <glyph unicode="d" glyph-name="d" horiz-adv-x="1203"> <path fill="black" stroke="none" d="M1060 
883Q1048 736 1048 589Q1048 256 1079 86Q1081 72 1081 63Q1081 23 1053 -3T988 -29Q926 -29 897 61Q825 8 748 
-19T586 -46Q379 -46 243 92Q103 233 103 454Q103 721 244 882T612 1043Q728 1043
+791 1007L885 938Q899 1359 918 1505Q931 1594 1009 1594Q1100 1594 1100 1497Q1100 1358 1060 883zM616 857Q448 
857 364 758T280 458Q280 329 371 236T586 143Q670 143 728 174Q762 192 839 257Q854 270 868 288L865 461L866 
577L868 695Q830 776 767 816T616
+857z"/> </glyph>
+
+           <!-- "e" glyph -->
+           <glyph unicode="e" glyph-name="e" horiz-adv-x="1122"> <path fill="black" stroke="none" d="M606 
-46Q380 -46 240 67Q87 192 87 417Q87 677 213 853Q350 1045 579 1045Q745 1045 850 989Q979 920 979 777Q979 677 
866 595Q816 559 654 483L272 302Q328 219 411 177T606 135Q675 135 768 161Q886
+194 920 247T993 301Q1028 301 1055 275T1083 213Q1083 102 904 22Q751 -46 606 -46zM579 865Q457 865 376 771T255 
486L562 632Q743 720 820 785Q734 865 579 865z"/> </glyph>
+
+           <!-- "f" glyph -->
+           <glyph unicode="f" glyph-name="f" horiz-adv-x="1041"> <path fill="black" stroke="none" d="M811 
1406Q569 1406 540 1070L537 1008Q707 1020 757 1020Q916 1020 916 920Q916 847 838 833Q804 827 759 828T528 
815L520 587Q520 525 524 401T528 216Q528 26 506 -80Q489 -160 413 -160Q372 -160
+343 -134T314 -67Q314 -59 316 -47Q337 83 337 236L334 509V799Q209 789 176 789Q75 789 75 886Q75 985 250 990L346 
993Q349 1049 361 1145Q387 1367 473 1472Q577 1599 798 1599Q941 1599 941 1502Q941 1406 811 1406z"/> </glyph>
+
+           <!-- "g" glyph -->
+           <glyph unicode="g" glyph-name="g" horiz-adv-x="1087"> <path fill="black" stroke="none" d="M962 
431L939 95Q933 -105 898 -232Q853 -394 754 -471Q634 -564 407 -564Q274 -564 184 -546Q58 -521 58 -442Q58 -353 
145 -353Q181 -353 265 -370T451 -386Q643 -383 716 -200Q764 -78 767 175Q713
+75 639 25T468 -25Q287 -25 174 98T60 419Q60 689 215 854Q375 1024 651 1024Q744 1024 807 1000T903 928Q1010 925 
1010 809Q1010 738 989 619Q966 481 962 431zM641 864Q451 864 347 733Q254 615 254 433Q254 288 309 215T474 
142Q575 142 670 256Q756 361 768
+464Q789 572 813 803Q773 834 730 849T641 864z"/> </glyph>
+
+           <!-- "u" glyph -->
+           <glyph unicode="u" glyph-name="u" horiz-adv-x="1065"> <path fill="black" stroke="none" d="M955 
584Q955 512 956 368T957 152Q957 130 960 85T964 18Q964 -25 935 -52T864 -80Q787 -80 766 15Q641 -50 478 -50Q347 
-50 261 8Q166 72 148 195Q109 460 109 667Q109 804 139 979Q153 1066 234 1066Q277
+1066 306 1039T335 968Q335 922 321 821T306 667Q306 500 317 381T350 190Q383 172 415 163T478 153Q612 153 761 
196L760 399L758 593Q758 809 777 968Q788 1060 874 1060Q917 1060 946 1032T973 962L955 584z"/> </glyph>
+
+           <!-- "v" glyph -->
+           <glyph unicode="v" glyph-name="v" horiz-adv-x="996"> <path fill="black" stroke="none" d="M600 
52Q597 -40 509 -40Q436 -40 403 46L250 452L72 911Q62 937 62 957Q62 998 93 1027T165 1056Q225 1056 251 995L505 
296Q580 456 694 760Q721 840 779 986Q810 1050 867 1050Q908 1050 939 1021T970
+952Q970 914 805 524L600 52z"/> </glyph>
+
+           <!-- "w" glyph -->
+           <glyph unicode="w" glyph-name="w" horiz-adv-x="1401"> <path fill="black" stroke="none" d="M1336 
895Q1258 569 1132 158Q1104 67 1039 -29Q1004 -82 944 -81Q835 -79 774 190Q754 276 733 424L700 647L618 456L466 
43Q453 5 428 -15Q398 -73 332 -75Q256 -78 185 223Q149 378 113 643L89 793Q76
+883 76 944Q76 986 105 1013T177 1041Q253 1041 271 958Q284 899 292 812L307 665L366 216Q477 524 596 926Q629 
1037 711 1037Q790 1037 818 913Q844 796 883 553Q923 301 954 160L1027 432L1156 977Q1171 1038 1242 1038Q1284 
1038 1315 1010T1346 941Q1346 936
+1336 895z"/> </glyph>
+
+           <!-- "x" glyph -->
+           <glyph unicode="x" glyph-name="x" horiz-adv-x="1209"> <path fill="black" stroke="none" d="M1058 
858L912 721L734 544L1060 118Q1085 86 1085 55Q1085 16 1055 -14T987 -44Q949 -44 918 -7Q826 100 594 405L399 
204Q340 151 227 39Q195 3 158 3Q120 3 91 33T61 102Q61 133 86 165Q114 202 173
+254Q242 315 264 338L477 561L346 750Q267 863 208 915Q170 949 170 989Q170 1029 198 1060T264 1091Q323 1091 442 
937L615 698L811 878Q933 993 976 1058Q1008 1105 1052 1105Q1091 1105 1121 1076T1151 1009Q1151 954 1058 858z"/> 
</glyph>
+
+           <!-- "y" glyph -->
+           <glyph unicode="y" glyph-name="y" horiz-adv-x="1066"> <path fill="black" stroke="none" d="M1011 
892L665 144Q537 -129 469 -313L403 -507Q377 -579 313 -579Q271 -579 241 -552T210 -483Q210 -383 426 96L68 785L23 
858Q-4 904 -4 935Q-4 976 27 1007T98 1038Q144 1038 169 1003Q339 767 534
+331L682 676Q762 855 836 984Q868 1040 920 1040Q961 1040 992 1011T1024 942Q1024 920 1011 892z"/> </glyph>
+
+           <!-- "z" glyph -->
+           <glyph unicode="z" glyph-name="z" horiz-adv-x="1102"> <path fill="black" stroke="none" d="M964 
809Q875 702 736 499Q575 263 500 165Q605 170 683 170Q722 170 799 155T915 140Q959 140 986 112T1014 39Q1014 -6 
987 -34T915 -62Q876 -62 799 -47T683 -32Q458 -32 256 -73Q235 -77 219 -77Q122
+-77 122 8Q122 58 172 104Q433 340 740 839Q607 831 547 831Q399 831 243 854Q154 867 154 953Q154 997 181 
1026T249 1056Q298 1056 397 1045T547 1033Q615 1033 751 1042T955 1052Q1040 1052 1040 982Q1040 901 964 809z"/> 
</glyph>
+
+           <hkern g1="u" g2="v" k="-100"/>
+           <hkern g1="v" g2="w" k="-200"/>
+           <hkern g1="w" g2="x" k="100"/>
+           <hkern g1="x" g2="y" k="200"/>
+           <hkern g1="y" g2="z" k="-500"/>
+
+           </font>
+
+           <!-- Equivalent SVG to use in the text elements -->
+ 
+           <g id="abcdefg">
+
+           <!-- Step 1: flip y axis -->
+
+           <g transform="scale(1, -1)">
+
+           <!-- Step 2: scale into glyph coordinates -->
+           <!-- font-size / units-per-em == 50 / 2048 == 0.0244140625  -->
+
+           <g transform="scale(0.0244140625)">
+
+             <!-- "a" glyph -->
+
+             <path 
+                   d="M920 -66Q901 -66 851 -22Q806 19 784 51Q688 -1 615 -27T493 -54Q259
+                      -54 152 78Q51 202 51 458Q51 700 217 872T615 1044Q702 1044 810 999Q946
+                      943 946 864Q946 837 926 816Q916 778 911 691T904 468Q903
+                      344 921 272Q931 228 984 96Q991 78 1007 43L1013 26Q1013 -14 985 
+                      -40T920 -66zM712 629Q712 672 717 722T734 830Q697 849 671 858T628 
+                      867Q473 867 361 741T248 449Q248 285 306 203T480 121Q576 121 643 
+                      156Q679 175 744 232Q712 497 712 629z"/>
+
+             <!-- "b" glyph with advance from a == 1048 -->
+
+             <path transform="translate(1048, 0)"
+                   d="M606 -42Q453 -42 328 18Q296 -30 250 -30Q212 -30 186 -4T159 63Q159 
+                      89 161 140T164 217Q164 323 159 534T153 852Q153 925 154 1128T155 
+                      1406Q155 1466 180 1514Q213 1575 271 1575Q346 1575 346 1488Q346
+                      1474 341 1447T336 1406L333 1187L331 932Q418 991 496 1020T644 
+                      1050Q859 1050 993 885Q1119 
+                      730 1119 504Q1119 276 972 117T606 -42zM644 861Q562 861 476 815Q434 
+                      792 332 716L330 543L331 387L332 223Q380 201 467 167Q529 148 606 
+                      148Q751 148 844 250T937 504Q937 653 862 753Q781 861 644 861z"/>
+
+             <!-- "c" glyph with advance from ab == 1048 + 1215 = 2263 -->
+
+             <path transform="translate(2263, 0)"
+                   d="M591 -63Q386 -63 249 61Q105 191 105 404Q105 607 240 823Q390 
+                      1063 578 1063Q676 1063 797 1017Q950 958 950 873Q950 835 925 
+                      806T863 776Q834 776 813 793T771 828Q712 875 578 875Q476 875 
+                      376 693Q285 526 285 404Q285 272 375 196Q459 125 591 125Q651 
+                      125 719 157L835 219Q865 235 878 235Q915 235 942 206T969 138Q969 
+                      65 815 -3Q680 -63 591 -63z"/>
+
+             <!-- "d" glyph with advance from abc == 2263 + 1052 = 3315 -->
+
+             <path transform="translate(3315, 0)"
+                   d="M1060 883Q1048 736 1048 589Q1048 256 1079 86Q1081 72 1081 
+                      63Q1081 23 1053 -3T988 -29Q926 -29 897 61Q825 8 748 -19T586 
+                      -46Q379 -46 243 92Q103 233 103 454Q103 721 244 882T612 
+                      1043Q728 1043 791 1007L885 938Q899 1359 918 1505Q931 
+                      1594 1009 1594Q1100 1594 1100 1497Q1100 1358 1060 
+                      883zM616 857Q448 857 364 758T280 458Q280 329 371 
+                      236T586 143Q670 143 728 174Q762 192 839 257Q854 270 
+                      868 288L865 461L866 577L868 695Q830 776 767 816T616 857z"/>
+
+             <!-- "e" glyph with advance from abcd == 3315 + 1203 = 4518 -->
+
+             <path transform="translate(4518, 0)"
+                   d="M606 -46Q380 -46 240 67Q87 192 87 417Q87 677 213 853Q350 
+                      1045 579 1045Q745 1045 850 989Q979 920 979 777Q979 677 866 
+                      595Q816 559 654 483L272 302Q328 219 411 177T606 135Q675 
+                      135 768 161Q886 194 920 247T993 301Q1028 301 1055 275T1083 
+                      213Q1083 102 904 22Q751 -46 606 -46zM579 865Q457 865 376 
+                      771T255 486L562 632Q743 720 820 785Q734 865 579 865z"/>
+
+             <!-- "f" glyph with advance from abcde == 4518 + 1122 = 5640 -->
+
+             <path transform="translate(5640, 0)"
+                   d="M811 1406Q569 1406 540 1070L537 1008Q707 1020 757 
+                      1020Q916 1020 916 920Q916 847 838 833Q804 827 759 
+                      828T528 815L520 587Q520 525 524 401T528 216Q528 26 
+                      506 -80Q489 -160 413 -160Q372 -160 343 -134T314 -67Q314 
+                      -59 316 -47Q337 83 337 236L334 509V799Q209 789 176 789Q75 
+                      789 75 886Q75 985 250 990L346 993Q349 1049 361 1145Q387 
+                      1367 473 1472Q577 1599 798 1599Q941 1599 941 1502Q941 
+                      1406 811 1406z"/>
+
+             <!-- "g" glyph with advance from abcdef == 5640 + 1041 = 6681 -->
+
+             <path transform="translate(6681, 0)"
+                   d="M962 431L939 95Q933 -105 898 -232Q853 -394 754 -471Q634 
+                      -564 407 -564Q274 -564 184 -546Q58 -521 58 -442Q58 -353 145 
+                      -353Q181 -353 265 -370T451 -386Q643 -383 716 -200Q764 -78 
+                      767 175Q713 75 639 25T468 -25Q287 -25 174 98T60 419Q60 689 
+                      215 854Q375 1024 651 1024Q744 1024 807 1000T903 928Q1010 925 
+                      1010 809Q1010 738 989 619Q966 481 962 431zM641 864Q451 864 
+                      347 733Q254 615 254 433Q254 288 309 215T474 142Q575 142 670 
+                      256Q756 361 768 464Q789 572 813 803Q773 834 730 849T641 864z"/>
+
+             <!-- missing glyph with advance from abcdefg == 6681 + 1087 = 7768 -->
+
+             <path transform="translate(7768, 0)"
+                   d="M128 0V1638H896V0H128zM256 128H768V1510H256V128z"/>
+
+           </g>
+
+           </g>
+
+           </g>
+
+           <g id="uvwxyz">
+
+           <!-- Step 1: flip y axis -->
+
+           <g transform="scale(1, -1)">
+
+           <!-- Step 2: scale into glyph coordinates -->
+           <!-- font-size / units-per-em == 50 / 2048 == 0.0244140625  -->
+
+           <g transform="scale(0.0244140625)">
+
+             <!-- "u" glyph -->
+
+             <path 
+                   d="M955 584Q955 512 956 368T957 152Q957 130 960 85T964 18Q964 
+                      -25 935 -52T864 -80Q787 -80 766 15Q641 -50 478 -50Q347 -50 261 
+                      8Q166 72 148 195Q109 460 109 667Q109 804 139 979Q153 1066 234 
+                      1066Q277 1066 306 1039T335 968Q335 922 321 821T306 667Q306 500 
+                      317 381T350 190Q383 172 415 163T478 153Q612 153 761 196L760 
+                      399L758 593Q758 809 777 968Q788 1060 874 1060Q917 1060 946 
+                      1032T973 962L955 584z"/>
+
+             <!-- "v" glyph with advance/kerning from u == 1065 + 100 = 1165 -->
+
+             <path transform="translate(1165,0)"
+                   d="M600 52Q597 -40 509 -40Q436 -40 403 46L250 452L72 911Q62 937 
+                      62 957Q62 998 93 1027T165 1056Q225 1056 251 995L505 296Q580 456 
+                      694 760Q721 840 779 986Q810 1050 867 1050Q908 1050 939 1021T970
+                      952Q970 914 805 524L600 52z"/>
+
+             <!-- "w" glyph with advance/kerning from uv == 1165 + 996 + 200 = 2361 -->
+
+             <path transform="translate(2361,0)"
+                   d="M1336 895Q1258 569 1132 158Q1104 67 1039 -29Q1004 -82 944 
+                      -81Q835 -79 774 190Q754 276 733 424L700 647L618 456L466 43Q453 5 
+                      428 -15Q398 -73 332 -75Q256 -78 185 223Q149 378 113 643L89 793Q76
+                      883 76 944Q76 986 105 1013T177 1041Q253 1041 271 958Q284 899 292 
+                      812L307 665L366 216Q477 524 596 926Q629 1037 711 1037Q790 1037 
+                      818 913Q844 796 883 553Q923 301 954 160L1027 432L1156 977Q1171 
+                      1038 1242 1038Q1284 1038 1315 1010T1346 941Q1346 936
+                      1336 895z"/>
+
+             <!-- "x" glyph with advance/kerning from uvw == 2361 + 1401 - 100 = 3662 -->
+
+             <path transform="translate(3662,0)"
+                   d="M1058 858L912 721L734 544L1060 118Q1085 86 1085 55Q1085 16 
+                      1055 -14T987 -44Q949 -44 918 -7Q826 100 594 405L399 204Q340 151 
+                      227 39Q195 3 158 3Q120 3 91 33T61 102Q61 133 86 165Q114 202 173
+                      254Q242 315 264 338L477 561L346 750Q267 863 208 915Q170 949 170 
+                      989Q170 1029 198 1060T264 1091Q323 1091 442 937L615 698L811 
+                      878Q933 993 976 1058Q1008 1105 1052 1105Q1091 1105 1121 1076T1151 
+                      1009Q1151 954 1058 858z"/>
+
+             <!-- "y" glyph with advance/kerning from uvwx == 3662 + 1209 - 200 = 4671 -->
+
+             <path transform="translate(4671,0)"
+                   d="M1011 892L665 144Q537 -129 469 -313L403 -507Q377 -579 313 
+                      -579Q271 -579 241 -552T210 -483Q210 -383 426 96L68 785L23 858Q-4 
+                      904 -4 935Q-4 976 27 1007T98 1038Q144 1038 169 1003Q339 767 534
+                      331L682 676Q762 855 836 984Q868 1040 920 1040Q961 1040 992 
+                      1011T1024 942Q1024 920 1011 892z"/>
+
+             <!-- "z" glyph with advance/kerning from uvwxy == 4671 + 1066 + 500 = 6237 -->
+
+             <path transform="translate(6237,0)"
+                   d="M964 809Q875 702 736 499Q575 263 500 165Q605 170 683 
+                      170Q722 170 799 155T915 140Q959 140 986 112T1014 39Q1014 -6 
+                      987 -34T915 -62Q876 -62 799 -47T683 -32Q458 -32 256 -73Q235 
+                      -77 219 -77Q122 -77 122 8Q122 58 172 104Q433 340 740 839Q607 
+                      831 547 831Q399 831 243 854Q154 867 154 953Q154 997 181 
+                      1026T249 1056Q298 1056 397 1045T547 1033Q615 1033 751 1042T955 
+                      1052Q1040 1052 1040 982Q1040 901 964 809z"/>
+
+           </g>
+
+           </g>
+
+           </g>
+
+        </defs>
+
+        <g transform="translate(80, 80)">
+
+        <g id="grid" stroke="black" fill="none">
+            <rect x="0" y="0" width="320" height="360" fill="url(#gridPattern)"/>
+
+            <rect x="-25" y="0" width="25" height="360" fill="rgb(240, 240, 240)" />
+            <rect x="-50" y="0" width="25" height="360" fill="rgb(220, 220, 220)" />
+
+            <line x1="-25" y1="60" x2="320" y2="60" />
+            <line x1="-25" y1="120" x2="320" y2="120" />
+            <line x1="-50" y1="180" x2="320" y2="180" />
+            <line x1="-25" y1="240" x2="320" y2="240" />
+            <line x1="-25" y1="300" x2="320" y2="300" />
+
+
+            <g class="legend" text-anchor="middle" fill="black" stroke="none">
+            <text transform="translate(-35, 90) rotate(-90)">
+                without kerning
+            </text>
+
+            <text transform="translate(-35, 270) rotate(-90)">
+                with kerning
+            </text>
+
+            <text transform="translate(-8, 30) rotate(-90)">
+                font
+            </text>
+
+            <text transform="translate(-8, 90) rotate(-90)">
+                svg
+            </text>
+
+            <text transform="translate(-8, 150) rotate(-90)">
+                mask
+            </text>
+
+            <text transform="translate(-8, 210) rotate(-90)">
+                font
+            </text>
+
+            <text transform="translate(-8, 270) rotate(-90)">
+                svg
+            </text>
+
+            <text transform="translate(-8, 330) rotate(-90)">
+                mask
+            </text>
+
+            </g>
+        </g>
+
+        <g font-size="50" fill="black" stroke="none">
+
+        <!-- ============================================================= -->
+        <!-- Font as text                                                  -->
+        <!-- ============================================================= -->
+
+        <g transform="translate(30,45)">
+
+        <text font-family="SVGComic">abcdefg&#06666;</text>
+        
+        </g>
+
+        <!-- ============================================================= -->
+        <!-- Font as equivalent SVG                                        -->
+        <!-- ============================================================= -->
+
+        <g transform="translate(30,105)">
+
+           <use xlink:href="#abcdefg"/> 
+                
+        </g>
+
+        <!-- ============================================================= -->
+        <!-- Mask between SVG Font and equivalent SVG                      -->
+        <!-- ============================================================= -->
+
+        <g transform="translate(30,165)">
+
+        <!-- first draw a black rectangle -->
+
+        <rect fill="black" x="-30" y="-45" width="320" height="60"/>
+
+        <!-- now draw the equivalent SVG as a white pattern -->
+
+        <g fill="white">
+
+           <use xlink:href="#abcdefg"/> 
+
+        </g>
+
+        <!-- mask the equivalent SVG with the real SVG font text -->
+
+        <text fill="black" font-family="SVGComic">abcdefg&#06666;</text>
+        
+        </g>
+
+        <!-- ============================================================= -->
+        <!-- Font as text with kerning                                     -->
+        <!-- ============================================================= -->
+
+        <g transform="translate(30,225)">
+
+        <text font-family="SVGComic">uvwxyz</text>
+        
+        </g>
+
+        <!-- ============================================================= -->
+        <!-- Font as equivalent SVG with kerning                           -->
+        <!-- ============================================================= -->
+
+        <g transform="translate(30,285)">
+
+           <use xlink:href="#uvwxyz"/>
+        
+        </g>
+
+        <!-- ============================================================= -->
+        <!-- Mask between SVG Font and equivalent SVG with kerning         -->
+        <!-- ============================================================= -->
+
+        <g transform="translate(30,345)">
+
+        <!-- first draw a black rectangle -->
+
+        <rect fill="black" x="-30" y="-45" width="320" height="60"/>
+
+        <!-- now draw the equivalent SVG as a white pattern -->
+
+        <g fill="white">
+
+           <use xlink:href="#uvwxyz"/> 
+
+        </g>
+
+        <!-- mask the equivalent SVG with the real SVG font text -->
+
+        <text fill="black" font-family="SVGComic">uvwxyz</text>
+
+        </g>
+
+        </g>
+
+      </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontGlyphsD.png 
b/tests/data/svg/batik/tests/spec/fonts/fontGlyphsD.png
new file mode 100644
index 0000000..116ddf6
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontGlyphsD.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontGlyphsD.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontGlyphsD.svg
new file mode 100644
index 0000000..08c9235
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontGlyphsD.svg
@@ -0,0 +1,477 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Draws <text> elements using SVG fonts with glyphs                         -->
+<!-- using the d attribute. Tests glyph layout by                              -->
+<!-- comparing equivalent SVG for the <text> element, both                     -->
+<!-- on a grid and as a mask.                                                  -->
+<!-- Kerning is also tested.                                                   -->
+<!--                                                                           -->
+<!-- @author dean jackson cmis csiro au                                        -->
+<!-- @version $Id: fontGlyphsD.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>SVGFont - d attribute test</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="50">SVG fonts - glyphs "d"</text>
+
+        <defs>
+
+            <pattern id="gridPattern" viewBox="-5 -5 10 10" x="-5" y="-5" width="10" height="10"
+                     patternContentUnits="userSpaceOnUse" patternUnits="userSpaceOnUse">
+                <g stroke="rgb(225, 225, 245)" stroke-width="1">
+                    <line x1="0" y1="-6" x2="0" y2="6" />
+                    <line x1="-6" y1="0" x2="6" y2="0" />
+                </g>
+            </pattern>
+
+            <!-- ============================= -->
+            <!-- SVG Font Definition           -->
+            <!-- ============================= -->
+     
+            <!-- This is an encoding of Microsoft's Comic Sans font -->
+            <!-- in SVG format (as allowed in the license). For the -->
+            <!-- true type version of this font, refer to           -->
+            <!-- http://www.microsoft.com/truetype                  -->
+            <!-- Converted using SteadyState's TrueType/SVG font    -->
+            <!-- toolkit (http://www.steadystate.com/svg            -->
+            <!-- Horizontal Kerning has been added to the font for  -->
+            <!-- testing purposes.                                  -->
+
+            <font horiz-adv-x="959">
+            <font-face
+             font-family="SVGComic"            
+             units-per-em="2048"
+             panose-1="3 15 7 2 3 3 2 2 2 4"
+             ascent="2257"
+             descent="597"/>
+           <missing-glyph horiz-adv-x="1024" d="M128 0V1638H896V0H128zM256 128H768V1510H256V128z"/>
+           <!-- "a" glyph -->
+           <glyph unicode="a" glyph-name="a" horiz-adv-x="1048" d="M920 -66Q901 -66 851 -22Q806 19 784 
51Q688 -1 615 -27T493 -54Q259 -54 152 78Q51 202 51 458Q51 700 217 872T615 1044Q702 1044 810 999Q946 943 946 
864Q946 837 926 816Q916 778 911 691T904 468Q903
+344 921 272Q931 228 984 96Q991 78 1007 43L1013 26Q1013 -14 985 -40T920 -66zM712 629Q712 672 717 722T734 
830Q697 849 671 858T628 867Q473 867 361 741T248 449Q248 285 306 203T480 121Q576 121 643 156Q679 175 744 
232Q712 497 712 629z"/>
+
+           <!-- "b" glyph -->
+           <glyph unicode="b" glyph-name="b" horiz-adv-x="1215" d="M606 -42Q453 -42 328 18Q296 -30 250 
-30Q212 -30 186 -4T159 63Q159 89 161 140T164 217Q164 323 159 534T153 852Q153 925 154 1128T155 1406Q155 1466 
180 1514Q213 1575 271 1575Q346 1575 346 1488Q346
+1474 341 1447T336 1406L333 1187L331 932Q418 991 496 1020T644 1050Q859 1050 993 885Q1119 730 1119 504Q1119 
276 972 117T606 -42zM644 861Q562 861 476 815Q434 792 332 716L330 543L331 387L332 223Q380 201 467 167Q529 148 
606 148Q751 148 844 250T937
+504Q937 653 862 753Q781 861 644 861z"/>
+
+           <!-- "c" glyph -->
+           <glyph unicode="c" glyph-name="c" horiz-adv-x="1052" d="M591 -63Q386 -63 249 61Q105 191 105 
404Q105 607 240 823Q390 1063 578 1063Q676 1063 797 1017Q950 958 950 873Q950 835 925 806T863 776Q834 776 813 
793T771 828Q712 875 578 875Q476 875 376 693Q285
+526 285 404Q285 272 375 196Q459 125 591 125Q651 125 719 157L835 219Q865 235 878 235Q915 235 942 206T969 
138Q969 65 815 -3Q680 -63 591 -63z"/>
+
+           <!-- "d" glyph -->
+           <glyph unicode="d" glyph-name="d" horiz-adv-x="1203" d="M1060 883Q1048 736 1048 589Q1048 256 1079 
86Q1081 72 1081 63Q1081 23 1053 -3T988 -29Q926 -29 897 61Q825 8 748 -19T586 -46Q379 -46 243 92Q103 233 103 
454Q103 721 244 882T612 1043Q728 1043
+791 1007L885 938Q899 1359 918 1505Q931 1594 1009 1594Q1100 1594 1100 1497Q1100 1358 1060 883zM616 857Q448 
857 364 758T280 458Q280 329 371 236T586 143Q670 143 728 174Q762 192 839 257Q854 270 868 288L865 461L866 
577L868 695Q830 776 767 816T616
+857z"/>
+
+           <!-- "e" glyph -->
+           <glyph unicode="e" glyph-name="e" horiz-adv-x="1122" d="M606 -46Q380 -46 240 67Q87 192 87 417Q87 
677 213 853Q350 1045 579 1045Q745 1045 850 989Q979 920 979 777Q979 677 866 595Q816 559 654 483L272 302Q328 
219 411 177T606 135Q675 135 768 161Q886
+194 920 247T993 301Q1028 301 1055 275T1083 213Q1083 102 904 22Q751 -46 606 -46zM579 865Q457 865 376 771T255 
486L562 632Q743 720 820 785Q734 865 579 865z"/>
+
+           <!-- "f" glyph -->
+           <glyph unicode="f" glyph-name="f" horiz-adv-x="1041" d="M811 1406Q569 1406 540 1070L537 1008Q707 
1020 757 1020Q916 1020 916 920Q916 847 838 833Q804 827 759 828T528 815L520 587Q520 525 524 401T528 216Q528 26 
506 -80Q489 -160 413 -160Q372 -160
+343 -134T314 -67Q314 -59 316 -47Q337 83 337 236L334 509V799Q209 789 176 789Q75 789 75 886Q75 985 250 990L346 
993Q349 1049 361 1145Q387 1367 473 1472Q577 1599 798 1599Q941 1599 941 1502Q941 1406 811 1406z"/>
+
+           <!-- "g" glyph -->
+           <glyph unicode="g" glyph-name="g" horiz-adv-x="1087" d="M962 431L939 95Q933 -105 898 -232Q853 
-394 754 -471Q634 -564 407 -564Q274 -564 184 -546Q58 -521 58 -442Q58 -353 145 -353Q181 -353 265 -370T451 
-386Q643 -383 716 -200Q764 -78 767 175Q713
+75 639 25T468 -25Q287 -25 174 98T60 419Q60 689 215 854Q375 1024 651 1024Q744 1024 807 1000T903 928Q1010 925 
1010 809Q1010 738 989 619Q966 481 962 431zM641 864Q451 864 347 733Q254 615 254 433Q254 288 309 215T474 
142Q575 142 670 256Q756 361 768
+464Q789 572 813 803Q773 834 730 849T641 864z"/>
+
+           <!-- "u" glyph -->
+           <glyph unicode="u" glyph-name="u" horiz-adv-x="1065" d="M955 584Q955 512 956 368T957 152Q957 130 
960 85T964 18Q964 -25 935 -52T864 -80Q787 -80 766 15Q641 -50 478 -50Q347 -50 261 8Q166 72 148 195Q109 460 109 
667Q109 804 139 979Q153 1066 234 1066Q277
+1066 306 1039T335 968Q335 922 321 821T306 667Q306 500 317 381T350 190Q383 172 415 163T478 153Q612 153 761 
196L760 399L758 593Q758 809 777 968Q788 1060 874 1060Q917 1060 946 1032T973 962L955 584z"/>
+
+           <!-- "v" glyph -->
+           <glyph unicode="v" glyph-name="v" horiz-adv-x="996" d="M600 52Q597 -40 509 -40Q436 -40 403 46L250 
452L72 911Q62 937 62 957Q62 998 93 1027T165 1056Q225 1056 251 995L505 296Q580 456 694 760Q721 840 779 986Q810 
1050 867 1050Q908 1050 939 1021T970
+952Q970 914 805 524L600 52z"/>
+
+           <!-- "w" glyph -->
+           <glyph unicode="w" glyph-name="w" horiz-adv-x="1401" d="M1336 895Q1258 569 1132 158Q1104 67 1039 
-29Q1004 -82 944 -81Q835 -79 774 190Q754 276 733 424L700 647L618 456L466 43Q453 5 428 -15Q398 -73 332 -75Q256 
-78 185 223Q149 378 113 643L89 793Q76
+883 76 944Q76 986 105 1013T177 1041Q253 1041 271 958Q284 899 292 812L307 665L366 216Q477 524 596 926Q629 
1037 711 1037Q790 1037 818 913Q844 796 883 553Q923 301 954 160L1027 432L1156 977Q1171 1038 1242 1038Q1284 
1038 1315 1010T1346 941Q1346 936
+1336 895z"/>
+
+           <!-- "x" glyph -->
+           <glyph unicode="x" glyph-name="x" horiz-adv-x="1209" d="M1058 858L912 721L734 544L1060 118Q1085 
86 1085 55Q1085 16 1055 -14T987 -44Q949 -44 918 -7Q826 100 594 405L399 204Q340 151 227 39Q195 3 158 3Q120 3 
91 33T61 102Q61 133 86 165Q114 202 173
+254Q242 315 264 338L477 561L346 750Q267 863 208 915Q170 949 170 989Q170 1029 198 1060T264 1091Q323 1091 442 
937L615 698L811 878Q933 993 976 1058Q1008 1105 1052 1105Q1091 1105 1121 1076T1151 1009Q1151 954 1058 858z"/>
+
+           <!-- "y" glyph -->
+           <glyph unicode="y" glyph-name="y" horiz-adv-x="1066" d="M1011 892L665 144Q537 -129 469 -313L403 
-507Q377 -579 313 -579Q271 -579 241 -552T210 -483Q210 -383 426 96L68 785L23 858Q-4 904 -4 935Q-4 976 27 
1007T98 1038Q144 1038 169 1003Q339 767 534
+331L682 676Q762 855 836 984Q868 1040 920 1040Q961 1040 992 1011T1024 942Q1024 920 1011 892z"/>
+
+           <!-- "z" glyph -->
+           <glyph unicode="z" glyph-name="z" horiz-adv-x="1102" d="M964 809Q875 702 736 499Q575 263 500 
165Q605 170 683 170Q722 170 799 155T915 140Q959 140 986 112T1014 39Q1014 -6 987 -34T915 -62Q876 -62 799 
-47T683 -32Q458 -32 256 -73Q235 -77 219 -77Q122
+-77 122 8Q122 58 172 104Q433 340 740 839Q607 831 547 831Q399 831 243 854Q154 867 154 953Q154 997 181 
1026T249 1056Q298 1056 397 1045T547 1033Q615 1033 751 1042T955 1052Q1040 1052 1040 982Q1040 901 964 809z"/>
+
+           <hkern g1="u" g2="v" k="-100"/>
+           <hkern g1="v" g2="w" k="-200"/>
+           <hkern g1="w" g2="x" k="100"/>
+           <hkern g1="x" g2="y" k="200"/>
+           <hkern g1="y" g2="z" k="-500"/>
+
+           </font>
+
+           <!-- Equivalent SVG to use in the text elements -->
+ 
+           <g id="abcdefg">
+
+           <!-- Step 1: flip y axis -->
+
+           <g transform="scale(1, -1)">
+
+           <!-- Step 2: scale into glyph coordinates -->
+           <!-- font-size / units-per-em == 50 / 2048 == 0.0244140625  -->
+
+           <g transform="scale(0.0244140625)">
+
+             <!-- "a" glyph -->
+
+             <path 
+                   d="M920 -66Q901 -66 851 -22Q806 19 784 51Q688 -1 615 -27T493 -54Q259
+                      -54 152 78Q51 202 51 458Q51 700 217 872T615 1044Q702 1044 810 999Q946
+                      943 946 864Q946 837 926 816Q916 778 911 691T904 468Q903
+                      344 921 272Q931 228 984 96Q991 78 1007 43L1013 26Q1013 -14 985 
+                      -40T920 -66zM712 629Q712 672 717 722T734 830Q697 849 671 858T628 
+                      867Q473 867 361 741T248 449Q248 285 306 203T480 121Q576 121 643 
+                      156Q679 175 744 232Q712 497 712 629z"/>
+
+             <!-- "b" glyph with advance from a == 1048 -->
+
+             <path transform="translate(1048, 0)"
+                   d="M606 -42Q453 -42 328 18Q296 -30 250 -30Q212 -30 186 -4T159 63Q159 
+                      89 161 140T164 217Q164 323 159 534T153 852Q153 925 154 1128T155 
+                      1406Q155 1466 180 1514Q213 1575 271 1575Q346 1575 346 1488Q346
+                      1474 341 1447T336 1406L333 1187L331 932Q418 991 496 1020T644 
+                      1050Q859 1050 993 885Q1119 
+                      730 1119 504Q1119 276 972 117T606 -42zM644 861Q562 861 476 815Q434 
+                      792 332 716L330 543L331 387L332 223Q380 201 467 167Q529 148 606 
+                      148Q751 148 844 250T937 504Q937 653 862 753Q781 861 644 861z"/>
+
+             <!-- "c" glyph with advance from ab == 1048 + 1215 = 2263 -->
+
+             <path transform="translate(2263, 0)"
+                   d="M591 -63Q386 -63 249 61Q105 191 105 404Q105 607 240 823Q390 
+                      1063 578 1063Q676 1063 797 1017Q950 958 950 873Q950 835 925 
+                      806T863 776Q834 776 813 793T771 828Q712 875 578 875Q476 875 
+                      376 693Q285 526 285 404Q285 272 375 196Q459 125 591 125Q651 
+                      125 719 157L835 219Q865 235 878 235Q915 235 942 206T969 138Q969 
+                      65 815 -3Q680 -63 591 -63z"/>
+
+             <!-- "d" glyph with advance from abc == 2263 + 1052 = 3315 -->
+
+             <path transform="translate(3315, 0)"
+                   d="M1060 883Q1048 736 1048 589Q1048 256 1079 86Q1081 72 1081 
+                      63Q1081 23 1053 -3T988 -29Q926 -29 897 61Q825 8 748 -19T586 
+                      -46Q379 -46 243 92Q103 233 103 454Q103 721 244 882T612 
+                      1043Q728 1043 791 1007L885 938Q899 1359 918 1505Q931 
+                      1594 1009 1594Q1100 1594 1100 1497Q1100 1358 1060 
+                      883zM616 857Q448 857 364 758T280 458Q280 329 371 
+                      236T586 143Q670 143 728 174Q762 192 839 257Q854 270 
+                      868 288L865 461L866 577L868 695Q830 776 767 816T616 857z"/>
+
+             <!-- "e" glyph with advance from abcd == 3315 + 1203 = 4518 -->
+
+             <path transform="translate(4518, 0)"
+                   d="M606 -46Q380 -46 240 67Q87 192 87 417Q87 677 213 853Q350 
+                      1045 579 1045Q745 1045 850 989Q979 920 979 777Q979 677 866 
+                      595Q816 559 654 483L272 302Q328 219 411 177T606 135Q675 
+                      135 768 161Q886 194 920 247T993 301Q1028 301 1055 275T1083 
+                      213Q1083 102 904 22Q751 -46 606 -46zM579 865Q457 865 376 
+                      771T255 486L562 632Q743 720 820 785Q734 865 579 865z"/>
+
+             <!-- "f" glyph with advance from abcde == 4518 + 1122 = 5640 -->
+
+             <path transform="translate(5640, 0)"
+                   d="M811 1406Q569 1406 540 1070L537 1008Q707 1020 757 
+                      1020Q916 1020 916 920Q916 847 838 833Q804 827 759 
+                      828T528 815L520 587Q520 525 524 401T528 216Q528 26 
+                      506 -80Q489 -160 413 -160Q372 -160 343 -134T314 -67Q314 
+                      -59 316 -47Q337 83 337 236L334 509V799Q209 789 176 789Q75 
+                      789 75 886Q75 985 250 990L346 993Q349 1049 361 1145Q387 
+                      1367 473 1472Q577 1599 798 1599Q941 1599 941 1502Q941 
+                      1406 811 1406z"/>
+
+             <!-- "g" glyph with advance from abcdef == 5640 + 1041 = 6681 -->
+
+             <path transform="translate(6681, 0)"
+                   d="M962 431L939 95Q933 -105 898 -232Q853 -394 754 -471Q634 
+                      -564 407 -564Q274 -564 184 -546Q58 -521 58 -442Q58 -353 145 
+                      -353Q181 -353 265 -370T451 -386Q643 -383 716 -200Q764 -78 
+                      767 175Q713 75 639 25T468 -25Q287 -25 174 98T60 419Q60 689 
+                      215 854Q375 1024 651 1024Q744 1024 807 1000T903 928Q1010 925 
+                      1010 809Q1010 738 989 619Q966 481 962 431zM641 864Q451 864 
+                      347 733Q254 615 254 433Q254 288 309 215T474 142Q575 142 670 
+                      256Q756 361 768 464Q789 572 813 803Q773 834 730 849T641 864z"/>
+
+             <!-- missing glyph with advance from abcdefg == 6681 + 1087 = 7768 -->
+
+             <path transform="translate(7768, 0)"
+                   d="M128 0V1638H896V0H128zM256 128H768V1510H256V128z"/>
+
+           </g>
+
+           </g>
+
+           </g>
+
+           <g id="uvwxyz">
+
+           <!-- Step 1: flip y axis -->
+
+           <g transform="scale(1, -1)">
+
+           <!-- Step 2: scale into glyph coordinates -->
+           <!-- font-size / units-per-em == 50 / 2048 == 0.0244140625  -->
+
+           <g transform="scale(0.0244140625)">
+
+             <!-- "u" glyph -->
+
+             <path 
+                   d="M955 584Q955 512 956 368T957 152Q957 130 960 85T964 18Q964 
+                      -25 935 -52T864 -80Q787 -80 766 15Q641 -50 478 -50Q347 -50 261 
+                      8Q166 72 148 195Q109 460 109 667Q109 804 139 979Q153 1066 234 
+                      1066Q277 1066 306 1039T335 968Q335 922 321 821T306 667Q306 500 
+                      317 381T350 190Q383 172 415 163T478 153Q612 153 761 196L760 
+                      399L758 593Q758 809 777 968Q788 1060 874 1060Q917 1060 946 
+                      1032T973 962L955 584z"/>
+
+             <!-- "v" glyph with advance/kerning from u == 1065 + 100 = 1165 -->
+
+             <path transform="translate(1165,0)"
+                   d="M600 52Q597 -40 509 -40Q436 -40 403 46L250 452L72 911Q62 937 
+                      62 957Q62 998 93 1027T165 1056Q225 1056 251 995L505 296Q580 456 
+                      694 760Q721 840 779 986Q810 1050 867 1050Q908 1050 939 1021T970
+                      952Q970 914 805 524L600 52z"/>
+
+             <!-- "w" glyph with advance/kerning from uv == 1165 + 996 + 200 = 2361 -->
+
+             <path transform="translate(2361,0)"
+                   d="M1336 895Q1258 569 1132 158Q1104 67 1039 -29Q1004 -82 944 
+                      -81Q835 -79 774 190Q754 276 733 424L700 647L618 456L466 43Q453 5 
+                      428 -15Q398 -73 332 -75Q256 -78 185 223Q149 378 113 643L89 793Q76
+                      883 76 944Q76 986 105 1013T177 1041Q253 1041 271 958Q284 899 292 
+                      812L307 665L366 216Q477 524 596 926Q629 1037 711 1037Q790 1037 
+                      818 913Q844 796 883 553Q923 301 954 160L1027 432L1156 977Q1171 
+                      1038 1242 1038Q1284 1038 1315 1010T1346 941Q1346 936
+                      1336 895z"/>
+
+             <!-- "x" glyph with advance/kerning from uvw == 2361 + 1401 - 100 = 3662 -->
+
+             <path transform="translate(3662,0)"
+                   d="M1058 858L912 721L734 544L1060 118Q1085 86 1085 55Q1085 16 
+                      1055 -14T987 -44Q949 -44 918 -7Q826 100 594 405L399 204Q340 151 
+                      227 39Q195 3 158 3Q120 3 91 33T61 102Q61 133 86 165Q114 202 173
+                      254Q242 315 264 338L477 561L346 750Q267 863 208 915Q170 949 170 
+                      989Q170 1029 198 1060T264 1091Q323 1091 442 937L615 698L811 
+                      878Q933 993 976 1058Q1008 1105 1052 1105Q1091 1105 1121 1076T1151 
+                      1009Q1151 954 1058 858z"/>
+
+             <!-- "y" glyph with advance/kerning from uvwx == 3662 + 1209 - 200 = 4671 -->
+
+             <path transform="translate(4671,0)"
+                   d="M1011 892L665 144Q537 -129 469 -313L403 -507Q377 -579 313 
+                      -579Q271 -579 241 -552T210 -483Q210 -383 426 96L68 785L23 858Q-4 
+                      904 -4 935Q-4 976 27 1007T98 1038Q144 1038 169 1003Q339 767 534
+                      331L682 676Q762 855 836 984Q868 1040 920 1040Q961 1040 992 
+                      1011T1024 942Q1024 920 1011 892z"/>
+
+             <!-- "z" glyph with advance/kerning from uvwxy == 4671 + 1066 + 500 = 6237 -->
+
+             <path transform="translate(6237,0)"
+                   d="M964 809Q875 702 736 499Q575 263 500 165Q605 170 683 
+                      170Q722 170 799 155T915 140Q959 140 986 112T1014 39Q1014 -6 
+                      987 -34T915 -62Q876 -62 799 -47T683 -32Q458 -32 256 -73Q235 
+                      -77 219 -77Q122 -77 122 8Q122 58 172 104Q433 340 740 839Q607 
+                      831 547 831Q399 831 243 854Q154 867 154 953Q154 997 181 
+                      1026T249 1056Q298 1056 397 1045T547 1033Q615 1033 751 1042T955 
+                      1052Q1040 1052 1040 982Q1040 901 964 809z"/>
+
+           </g>
+
+           </g>
+
+           </g>
+
+        </defs>
+
+        <g transform="translate(80, 80)">
+
+        <g id="grid" stroke="black" fill="none">
+            <rect x="0" y="0" width="320" height="360" fill="url(#gridPattern)"/>
+
+            <rect x="-25" y="0" width="25" height="360" fill="rgb(240, 240, 240)" />
+            <rect x="-50" y="0" width="25" height="360" fill="rgb(220, 220, 220)" />
+
+            <line x1="-25" y1="60" x2="320" y2="60" />
+            <line x1="-25" y1="120" x2="320" y2="120" />
+            <line x1="-50" y1="180" x2="320" y2="180" />
+            <line x1="-25" y1="240" x2="320" y2="240" />
+            <line x1="-25" y1="300" x2="320" y2="300" />
+
+
+            <g class="legend" text-anchor="middle" fill="black" stroke="none">
+            <text transform="translate(-35, 90) rotate(-90)">
+                without kerning
+            </text>
+
+            <text transform="translate(-35, 270) rotate(-90)">
+                with kerning
+            </text>
+
+            <text transform="translate(-8, 30) rotate(-90)">
+                font
+            </text>
+
+            <text transform="translate(-8, 90) rotate(-90)">
+                svg
+            </text>
+
+            <text transform="translate(-8, 150) rotate(-90)">
+                mask
+            </text>
+
+            <text transform="translate(-8, 210) rotate(-90)">
+                font
+            </text>
+
+            <text transform="translate(-8, 270) rotate(-90)">
+                svg
+            </text>
+
+            <text transform="translate(-8, 330) rotate(-90)">
+                mask
+            </text>
+
+            </g>
+        </g>
+
+        <g font-size="50" fill="black" stroke="none">
+
+        <!-- ============================================================= -->
+        <!-- Font as text                                                  -->
+        <!-- ============================================================= -->
+
+        <g transform="translate(30,45)">
+
+        <text font-family="SVGComic">abcdefg&#06666;</text>
+        
+        </g>
+
+        <!-- ============================================================= -->
+        <!-- Font as equivalent SVG                                        -->
+        <!-- ============================================================= -->
+
+        <g transform="translate(30,105)">
+
+           <use xlink:href="#abcdefg"/> 
+                
+        </g>
+
+        <!-- ============================================================= -->
+        <!-- Mask between SVG Font and equivalent SVG                      -->
+        <!-- ============================================================= -->
+
+        <g transform="translate(30,165)">
+
+        <!-- first draw a black rectangle -->
+
+        <rect fill="black" x="-30" y="-45" width="320" height="60"/>
+
+        <!-- now draw the equivalent SVG as a white pattern -->
+
+        <g fill="white">
+
+           <use xlink:href="#abcdefg"/> 
+
+        </g>
+
+        <!-- mask the equivalent SVG with the real SVG font text -->
+
+        <text fill="black" font-family="SVGComic">abcdefg&#06666;</text>
+        
+        </g>
+
+        <!-- ============================================================= -->
+        <!-- Font as text with kerning                                     -->
+        <!-- ============================================================= -->
+
+        <g transform="translate(30,225)">
+
+        <text font-family="SVGComic">uvwxyz</text>
+        
+        </g>
+
+        <!-- ============================================================= -->
+        <!-- Font as equivalent SVG with kerning                           -->
+        <!-- ============================================================= -->
+
+        <g transform="translate(30,285)">
+
+           <use xlink:href="#uvwxyz"/>
+        
+        </g>
+
+        <!-- ============================================================= -->
+        <!-- Mask between SVG Font and equivalent SVG with kerning         -->
+        <!-- ============================================================= -->
+
+        <g transform="translate(30,345)">
+
+        <!-- first draw a black rectangle -->
+
+        <rect fill="black" x="-30" y="-45" width="320" height="60"/>
+
+        <!-- now draw the equivalent SVG as a white pattern -->
+
+        <g fill="white">
+
+           <use xlink:href="#uvwxyz"/> 
+
+        </g>
+
+        <!-- mask the equivalent SVG with the real SVG font text -->
+
+        <text fill="black" font-family="SVGComic">uvwxyz</text>
+
+        </g>
+
+        </g>
+
+      </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontKerning.png 
b/tests/data/svg/batik/tests/spec/fonts/fontKerning.png
new file mode 100644
index 0000000..66bf9a6
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontKerning.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontKerning.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontKerning.svg
new file mode 100644
index 0000000..d3022d7
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontKerning.svg
@@ -0,0 +1,262 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests various methods of specifying kerning.                              -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                      -->
+<!-- @version $Id: fontKerning.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>SVGFont - kerning test</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="50">SVG fonts - kerning test</text>
+
+        <defs>
+
+            <!-- ============================= -->
+            <!-- SVG Font Definition           -->
+            <!-- ============================= -->
+     
+            <!-- This is an encoding of Microsoft's Comic Sans font -->
+            <!-- in SVG format (as allowed in the license). For the -->
+            <!-- true type version of this font, refer to           -->
+            <!-- http://www.microsoft.com/truetype                  -->
+            <!-- Converted using SteadyState's TrueType/SVG font    -->
+            <!-- toolkit (http://www.steadystate.com/svg            -->
+            <!-- Kerning has been added to the font for testing     -->
+            <!-- purposes.                                          -->
+
+            <font horiz-adv-x="959">
+            <font-face
+             font-family="SVGComic"            
+             units-per-em="2048"
+             panose-1="3 15 7 2 3 3 2 2 2 4"
+             ascent="2257"
+             descent="597"/>
+           <missing-glyph horiz-adv-x="1024" d="M128 0V1638H896V0H128zM256 128H768V1510H256V128z"/>
+           <!-- "a" glyph -->
+           <glyph unicode="a" glyph-name="a" horiz-adv-x="1048" d="M920 -66Q901 -66 851 -22Q806 19 784 
51Q688 -1 615 -27T493 -54Q259 -54 152 78Q51 202 51 458Q51 700 217 872T615 1044Q702 1044 810 999Q946 943 946 
864Q946 837 926 816Q916 778 911 691T904 468Q903
+344 921 272Q931 228 984 96Q991 78 1007 43L1013 26Q1013 -14 985 -40T920 -66zM712 629Q712 672 717 722T734 
830Q697 849 671 858T628 867Q473 867 361 741T248 449Q248 285 306 203T480 121Q576 121 643 156Q679 175 744 
232Q712 497 712 629z"/>
+
+           <!-- "b" glyph -->
+           <glyph unicode="b" glyph-name="b" horiz-adv-x="1215" d="M606 -42Q453 -42 328 18Q296 -30 250 
-30Q212 -30 186 -4T159 63Q159 89 161 140T164 217Q164 323 159 534T153 852Q153 925 154 1128T155 1406Q155 1466 
180 1514Q213 1575 271 1575Q346 1575 346 1488Q346
+1474 341 1447T336 1406L333 1187L331 932Q418 991 496 1020T644 1050Q859 1050 993 885Q1119 730 1119 504Q1119 
276 972 117T606 -42zM644 861Q562 861 476 815Q434 792 332 716L330 543L331 387L332 223Q380 201 467 167Q529 148 
606 148Q751 148 844 250T937
+504Q937 653 862 753Q781 861 644 861z"/>
+
+           <!-- "c" glyph -->
+           <glyph unicode="c" glyph-name="c" horiz-adv-x="1052" d="M591 -63Q386 -63 249 61Q105 191 105 
404Q105 607 240 823Q390 1063 578 1063Q676 1063 797 1017Q950 958 950 873Q950 835 925 806T863 776Q834 776 813 
793T771 828Q712 875 578 875Q476 875 376 693Q285
+526 285 404Q285 272 375 196Q459 125 591 125Q651 125 719 157L835 219Q865 235 878 235Q915 235 942 206T969 
138Q969 65 815 -3Q680 -63 591 -63z"/>
+
+           <!-- "d" glyph -->
+           <glyph unicode="d" glyph-name="d" horiz-adv-x="1203" d="M1060 883Q1048 736 1048 589Q1048 256 1079 
86Q1081 72 1081 63Q1081 23 1053 -3T988 -29Q926 -29 897 61Q825 8 748 -19T586 -46Q379 -46 243 92Q103 233 103 
454Q103 721 244 882T612 1043Q728 1043
+791 1007L885 938Q899 1359 918 1505Q931 1594 1009 1594Q1100 1594 1100 1497Q1100 1358 1060 883zM616 857Q448 
857 364 758T280 458Q280 329 371 236T586 143Q670 143 728 174Q762 192 839 257Q854 270 868 288L865 461L866 
577L868 695Q830 776 767 816T616
+857z"/>
+
+           <!-- "e" glyph -->
+           <glyph unicode="e" glyph-name="e" horiz-adv-x="1122" d="M606 -46Q380 -46 240 67Q87 192 87 417Q87 
677 213 853Q350 1045 579 1045Q745 1045 850 989Q979 920 979 777Q979 677 866 595Q816 559 654 483L272 302Q328 
219 411 177T606 135Q675 135 768 161Q886
+194 920 247T993 301Q1028 301 1055 275T1083 213Q1083 102 904 22Q751 -46 606 -46zM579 865Q457 865 376 771T255 
486L562 632Q743 720 820 785Q734 865 579 865z"/>
+
+           <!-- "f" glyph -->
+           <glyph unicode="f" glyph-name="f" horiz-adv-x="1041" d="M811 1406Q569 1406 540 1070L537 1008Q707 
1020 757 1020Q916 1020 916 920Q916 847 838 833Q804 827 759 828T528 815L520 587Q520 525 524 401T528 216Q528 26 
506 -80Q489 -160 413 -160Q372 -160
+343 -134T314 -67Q314 -59 316 -47Q337 83 337 236L334 509V799Q209 789 176 789Q75 789 75 886Q75 985 250 990L346 
993Q349 1049 361 1145Q387 1367 473 1472Q577 1599 798 1599Q941 1599 941 1502Q941 1406 811 1406z"/>
+
+           <!-- "g" glyph -->
+           <glyph unicode="g" glyph-name="g" horiz-adv-x="1087" d="M962 431L939 95Q933 -105 898 -232Q853 
-394 754 -471Q634 -564 407 -564Q274 -564 184 -546Q58 -521 58 -442Q58 -353 145 -353Q181 -353 265 -370T451 
-386Q643 -383 716 -200Q764 -78 767 175Q713
+75 639 25T468 -25Q287 -25 174 98T60 419Q60 689 215 854Q375 1024 651 1024Q744 1024 807 1000T903 928Q1010 925 
1010 809Q1010 738 989 619Q966 481 962 431zM641 864Q451 864 347 733Q254 615 254 433Q254 288 309 215T474 
142Q575 142 670 256Q756 361 768
+464Q789 572 813 803Q773 834 730 849T641 864z"/>
+
+           <!-- "u" glyph -->
+           <glyph unicode="u" glyph-name="u" horiz-adv-x="1065" d="M955 584Q955 512 956 368T957 152Q957 130 
960 85T964 18Q964 -25 935 -52T864 -80Q787 -80 766 15Q641 -50 478 -50Q347 -50 261 8Q166 72 148 195Q109 460 109 
667Q109 804 139 979Q153 1066 234 1066Q277
+1066 306 1039T335 968Q335 922 321 821T306 667Q306 500 317 381T350 190Q383 172 415 163T478 153Q612 153 761 
196L760 399L758 593Q758 809 777 968Q788 1060 874 1060Q917 1060 946 1032T973 962L955 584z"/>
+
+           <!-- "v" glyph -->
+           <glyph unicode="v" glyph-name="v" horiz-adv-x="996" d="M600 52Q597 -40 509 -40Q436 -40 403 46L250 
452L72 911Q62 937 62 957Q62 998 93 1027T165 1056Q225 1056 251 995L505 296Q580 456 694 760Q721 840 779 986Q810 
1050 867 1050Q908 1050 939 1021T970
+952Q970 914 805 524L600 52z"/>
+
+           <!-- "w" glyph -->
+           <glyph unicode="w" glyph-name="w" horiz-adv-x="1401" d="M1336 895Q1258 569 1132 158Q1104 67 1039 
-29Q1004 -82 944 -81Q835 -79 774 190Q754 276 733 424L700 647L618 456L466 43Q453 5 428 -15Q398 -73 332 -75Q256 
-78 185 223Q149 378 113 643L89 793Q76
+883 76 944Q76 986 105 1013T177 1041Q253 1041 271 958Q284 899 292 812L307 665L366 216Q477 524 596 926Q629 
1037 711 1037Q790 1037 818 913Q844 796 883 553Q923 301 954 160L1027 432L1156 977Q1171 1038 1242 1038Q1284 
1038 1315 1010T1346 941Q1346 936
+1336 895z"/>
+
+           <!-- "x" glyph -->
+           <glyph unicode="x" glyph-name="x" horiz-adv-x="1209" d="M1058 858L912 721L734 544L1060 118Q1085 
86 1085 55Q1085 16 1055 -14T987 -44Q949 -44 918 -7Q826 100 594 405L399 204Q340 151 227 39Q195 3 158 3Q120 3 
91 33T61 102Q61 133 86 165Q114 202 173
+254Q242 315 264 338L477 561L346 750Q267 863 208 915Q170 949 170 989Q170 1029 198 1060T264 1091Q323 1091 442 
937L615 698L811 878Q933 993 976 1058Q1008 1105 1052 1105Q1091 1105 1121 1076T1151 1009Q1151 954 1058 858z"/>
+
+           <!-- "y" glyph -->
+           <glyph unicode="y" glyph-name="y" horiz-adv-x="1066" d="M1011 892L665 144Q537 -129 469 -313L403 
-507Q377 -579 313 -579Q271 -579 241 -552T210 -483Q210 -383 426 96L68 785L23 858Q-4 904 -4 935Q-4 976 27 
1007T98 1038Q144 1038 169 1003Q339 767 534
+331L682 676Q762 855 836 984Q868 1040 920 1040Q961 1040 992 1011T1024 942Q1024 920 1011 892z"/>
+
+           <!-- "z" glyph -->
+           <glyph unicode="z" glyph-name="z" horiz-adv-x="1102" d="M964 809Q875 702 736 499Q575 263 500 
165Q605 170 683 170Q722 170 799 155T915 140Q959 140 986 112T1014 39Q1014 -6 987 -34T915 -62Q876 -62 799 
-47T683 -32Q458 -32 256 -73Q235 -77 219 -77Q122
+-77 122 8Q122 58 172 104Q433 340 740 839Q607 831 547 831Q399 831 243 854Q154 867 154 953Q154 997 181 
1026T249 1056Q298 1056 397 1045T547 1033Q615 1033 751 1042T955 1052Q1040 1052 1040 982Q1040 901 964 809z"/>
+
+           </font>
+
+           <!-- Comic font with kerning -->
+
+           <font horiz-adv-x="959">
+            <font-face
+             font-family="SVGComicK"            
+             units-per-em="2048"
+             panose-1="3 15 7 2 3 3 2 2 2 4"
+             ascent="2257"
+             descent="597"/>
+           <missing-glyph horiz-adv-x="1024" d="M128 0V1638H896V0H128zM256 128H768V1510H256V128z"/>
+           <!-- "a" glyph -->
+           <glyph unicode="a" glyph-name="a" horiz-adv-x="1048" d="M920 -66Q901 -66 851 -22Q806 19 784 
51Q688 -1 615 -27T493 -54Q259 -54 152 78Q51 202 51 458Q51 700 217 872T615 1044Q702 1044 810 999Q946 943 946 
864Q946 837 926 816Q916 778 911 691T904 468Q903
+344 921 272Q931 228 984 96Q991 78 1007 43L1013 26Q1013 -14 985 -40T920 -66zM712 629Q712 672 717 722T734 
830Q697 849 671 858T628 867Q473 867 361 741T248 449Q248 285 306 203T480 121Q576 121 643 156Q679 175 744 
232Q712 497 712 629z"/>
+
+           <!-- "b" glyph -->
+           <glyph unicode="b" glyph-name="b" horiz-adv-x="1215" d="M606 -42Q453 -42 328 18Q296 -30 250 
-30Q212 -30 186 -4T159 63Q159 89 161 140T164 217Q164 323 159 534T153 852Q153 925 154 1128T155 1406Q155 1466 
180 1514Q213 1575 271 1575Q346 1575 346 1488Q346
+1474 341 1447T336 1406L333 1187L331 932Q418 991 496 1020T644 1050Q859 1050 993 885Q1119 730 1119 504Q1119 
276 972 117T606 -42zM644 861Q562 861 476 815Q434 792 332 716L330 543L331 387L332 223Q380 201 467 167Q529 148 
606 148Q751 148 844 250T937
+504Q937 653 862 753Q781 861 644 861z"/>
+
+           <!-- "c" glyph -->
+           <glyph unicode="c" glyph-name="c" horiz-adv-x="1052" d="M591 -63Q386 -63 249 61Q105 191 105 
404Q105 607 240 823Q390 1063 578 1063Q676 1063 797 1017Q950 958 950 873Q950 835 925 806T863 776Q834 776 813 
793T771 828Q712 875 578 875Q476 875 376 693Q285
+526 285 404Q285 272 375 196Q459 125 591 125Q651 125 719 157L835 219Q865 235 878 235Q915 235 942 206T969 
138Q969 65 815 -3Q680 -63 591 -63z"/>
+
+           <!-- "d" glyph -->
+           <glyph unicode="d" glyph-name="d" horiz-adv-x="1203" d="M1060 883Q1048 736 1048 589Q1048 256 1079 
86Q1081 72 1081 63Q1081 23 1053 -3T988 -29Q926 -29 897 61Q825 8 748 -19T586 -46Q379 -46 243 92Q103 233 103 
454Q103 721 244 882T612 1043Q728 1043
+791 1007L885 938Q899 1359 918 1505Q931 1594 1009 1594Q1100 1594 1100 1497Q1100 1358 1060 883zM616 857Q448 
857 364 758T280 458Q280 329 371 236T586 143Q670 143 728 174Q762 192 839 257Q854 270 868 288L865 461L866 
577L868 695Q830 776 767 816T616
+857z"/>
+
+           <!-- "e" glyph -->
+           <glyph unicode="e" glyph-name="e" horiz-adv-x="1122" d="M606 -46Q380 -46 240 67Q87 192 87 417Q87 
677 213 853Q350 1045 579 1045Q745 1045 850 989Q979 920 979 777Q979 677 866 595Q816 559 654 483L272 302Q328 
219 411 177T606 135Q675 135 768 161Q886
+194 920 247T993 301Q1028 301 1055 275T1083 213Q1083 102 904 22Q751 -46 606 -46zM579 865Q457 865 376 771T255 
486L562 632Q743 720 820 785Q734 865 579 865z"/>
+
+           <!-- "f" glyph -->
+           <glyph unicode="f" glyph-name="f" horiz-adv-x="1041" d="M811 1406Q569 1406 540 1070L537 1008Q707 
1020 757 1020Q916 1020 916 920Q916 847 838 833Q804 827 759 828T528 815L520 587Q520 525 524 401T528 216Q528 26 
506 -80Q489 -160 413 -160Q372 -160
+343 -134T314 -67Q314 -59 316 -47Q337 83 337 236L334 509V799Q209 789 176 789Q75 789 75 886Q75 985 250 990L346 
993Q349 1049 361 1145Q387 1367 473 1472Q577 1599 798 1599Q941 1599 941 1502Q941 1406 811 1406z"/>
+
+           <!-- "g" glyph -->
+           <glyph unicode="g" glyph-name="g" horiz-adv-x="1087" d="M962 431L939 95Q933 -105 898 -232Q853 
-394 754 -471Q634 -564 407 -564Q274 -564 184 -546Q58 -521 58 -442Q58 -353 145 -353Q181 -353 265 -370T451 
-386Q643 -383 716 -200Q764 -78 767 175Q713
+75 639 25T468 -25Q287 -25 174 98T60 419Q60 689 215 854Q375 1024 651 1024Q744 1024 807 1000T903 928Q1010 925 
1010 809Q1010 738 989 619Q966 481 962 431zM641 864Q451 864 347 733Q254 615 254 433Q254 288 309 215T474 
142Q575 142 670 256Q756 361 768
+464Q789 572 813 803Q773 834 730 849T641 864z"/>
+
+           <!-- "u" glyph -->
+           <glyph unicode="u" glyph-name="u" horiz-adv-x="1065" d="M955 584Q955 512 956 368T957 152Q957 130 
960 85T964 18Q964 -25 935 -52T864 -80Q787 -80 766 15Q641 -50 478 -50Q347 -50 261 8Q166 72 148 195Q109 460 109 
667Q109 804 139 979Q153 1066 234 1066Q277
+1066 306 1039T335 968Q335 922 321 821T306 667Q306 500 317 381T350 190Q383 172 415 163T478 153Q612 153 761 
196L760 399L758 593Q758 809 777 968Q788 1060 874 1060Q917 1060 946 1032T973 962L955 584z"/>
+
+           <!-- "v" glyph -->
+           <glyph unicode="v" glyph-name="v" horiz-adv-x="996" d="M600 52Q597 -40 509 -40Q436 -40 403 46L250 
452L72 911Q62 937 62 957Q62 998 93 1027T165 1056Q225 1056 251 995L505 296Q580 456 694 760Q721 840 779 986Q810 
1050 867 1050Q908 1050 939 1021T970
+952Q970 914 805 524L600 52z"/>
+
+           <!-- "w" glyph -->
+           <glyph unicode="w" glyph-name="w" horiz-adv-x="1401" d="M1336 895Q1258 569 1132 158Q1104 67 1039 
-29Q1004 -82 944 -81Q835 -79 774 190Q754 276 733 424L700 647L618 456L466 43Q453 5 428 -15Q398 -73 332 -75Q256 
-78 185 223Q149 378 113 643L89 793Q76
+883 76 944Q76 986 105 1013T177 1041Q253 1041 271 958Q284 899 292 812L307 665L366 216Q477 524 596 926Q629 
1037 711 1037Q790 1037 818 913Q844 796 883 553Q923 301 954 160L1027 432L1156 977Q1171 1038 1242 1038Q1284 
1038 1315 1010T1346 941Q1346 936
+1336 895z"/>
+
+           <!-- "x" glyph -->
+           <glyph unicode="x" glyph-name="x" horiz-adv-x="1209" d="M1058 858L912 721L734 544L1060 118Q1085 
86 1085 55Q1085 16 1055 -14T987 -44Q949 -44 918 -7Q826 100 594 405L399 204Q340 151 227 39Q195 3 158 3Q120 3 
91 33T61 102Q61 133 86 165Q114 202 173
+254Q242 315 264 338L477 561L346 750Q267 863 208 915Q170 949 170 989Q170 1029 198 1060T264 1091Q323 1091 442 
937L615 698L811 878Q933 993 976 1058Q1008 1105 1052 1105Q1091 1105 1121 1076T1151 1009Q1151 954 1058 858z"/>
+
+           <!-- "y" glyph -->
+           <glyph unicode="y" glyph-name="y" horiz-adv-x="1066" d="M1011 892L665 144Q537 -129 469 -313L403 
-507Q377 -579 313 -579Q271 -579 241 -552T210 -483Q210 -383 426 96L68 785L23 858Q-4 904 -4 935Q-4 976 27 
1007T98 1038Q144 1038 169 1003Q339 767 534
+331L682 676Q762 855 836 984Q868 1040 920 1040Q961 1040 992 1011T1024 942Q1024 920 1011 892z"/>
+
+           <!-- "z" glyph -->
+           <glyph unicode="z" glyph-name="z" horiz-adv-x="1102" d="M964 809Q875 702 736 499Q575 263 500 
165Q605 170 683 170Q722 170 799 155T915 140Q959 140 986 112T1014 39Q1014 -6 987 -34T915 -62Q876 -62 799 
-47T683 -32Q458 -32 256 -73Q235 -77 219 -77Q122
+-77 122 8Q122 58 172 104Q433 340 740 839Q607 831 547 831Q399 831 243 854Q154 867 154 953Q154 997 181 
1026T249 1056Q298 1056 397 1045T547 1033Q615 1033 751 1042T955 1052Q1040 1052 1040 982Q1040 901 964 809z"/>
+
+           <hkern u1="u" g2="v" k="-200"/>
+           <hkern u1="v" g2="w" k="-400"/>
+           <hkern u1="w" g2="x" k="200"/>
+           <hkern u1="x" g2="y" k="400"/>
+           <hkern u1="y" g2="z" k="-1000"/>
+
+           <hkern u1="U+0061-0063" u2="U+0064-0066" k="500"/>
+           <hkern u1="U+006?" u2="U+007?" k="-1000"/>
+
+           <vkern u1="u" u2="v" k="-200"/>
+           <vkern u1="v" u2="w" k="-400"/>
+           <vkern u1="w" u2="x" k="200"/>
+           <vkern u1="x" u2="y" k="400"/>
+           <vkern u1="y" u2="z" k="-1000"/>
+
+           <vkern u1="U+0061-0063" u2="U+0064-0066" k="500"/>
+           <vkern u1="U+006?" u2="U+007?" k="-1000"/>
+
+           </font>
+
+          </defs>
+
+        <g id="test_content" font-size="25">
+
+            <g id="horizontal" transform="translate(0,50)">
+
+                <text x="40" y="50" font-size="15">Horizontal Kerning</text>
+
+                <text x="40" y="100" font-family="SVGComic" fill="#6666FF">abcdefg</text>
+                <text x="40" y="125" font-family="SVGComicK" fill="#6666FF">abcdefg</text>
+                <text x="40" y="145" font-size="10">u1="U+0061-0063"</text>
+                <text x="40" y="155" font-size="10">u2="U+0064-0066" k="500"</text>
+
+                <text x="40" y="200" font-family="SVGComic" fill="red">uvwxyz</text>
+                <text x="40" y="225" font-family="SVGComicK" fill="red">uvwxyz</text>
+                <text x="40" y="245" font-size="10">u1="u" g2="v" k="-200"</text>
+                <text x="40" y="255" font-size="10">u1="v" g2="w" k="-400"</text>
+                <text x="40" y="265" font-size="10">u1="w" g2="x" k="200"</text>
+                <text x="40" y="275" font-size="10">u1="x" g2="y" k="400"</text>
+                <text x="40" y="285" font-size="10">u1="y" g2="z" k="-1000"</text>
+
+                <text x="40" y="330" font-family="SVGComic" fill="#33CC33">abcxyz</text>
+                <text x="40" y="355" font-family="SVGComicK" fill="#33CC33">abcxyz</text>
+                <text x="40" y="375" font-size="10">u1="U+006?" u2="U+007?" k="-1000"</text>
+            </g>
+
+            <g id="vertical">
+
+               <text x="260" y="100" font-size="15">Vertical Kerning</text>
+
+               <text x="260" y="130" glyph-orientation-vertical="auto" writing-mode="tb" 
font-family="SVGComic" fill="#6666FF">abcdefg</text>
+               <text x="285" y="130" glyph-orientation-vertical="auto" writing-mode="tb" 
font-family="SVGComicK" fill="#6666FF">abcdefg</text>
+           
+               <text x="260" y="300" glyph-orientation-vertical="0deg" writing-mode="tb" 
font-family="SVGComic" fill="#6666FF">abcdefg</text>
+               <text x="280" y="300" glyph-orientation-vertical="0deg" writing-mode="tb" 
font-family="SVGComicK" fill="#6666FF">abcdefg</text>
+
+               <text x="340" y="130" glyph-orientation-vertical="0deg" writing-mode="tb" 
font-family="SVGComic" fill="red">uvwxyz</text>
+               <text x="360" y="130" glyph-orientation-vertical="0deg" writing-mode="tb" 
font-family="SVGComicK" fill="red">uvwxyz</text>
+      
+               <text x="340" y="300" glyph-orientation-vertical="180deg" writing-mode="tb" 
font-family="SVGComic" fill="#33CC33">abcxyz</text>
+               <text x="360" y="300" glyph-orientation-vertical="180deg" writing-mode="tb" 
font-family="SVGComicK" fill="#33CC33">abcxyz</text>
+
+            </g>
+       
+        </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontOnPath-middle50-1-13.png 
b/tests/data/svg/batik/tests/spec/fonts/fontOnPath-middle50-1-13.png
new file mode 100644
index 0000000..ee4710f
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontOnPath-middle50-1-13.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontOnPath-start35-0-13.png 
b/tests/data/svg/batik/tests/spec/fonts/fontOnPath-start35-0-13.png
new file mode 100644
index 0000000..63f2f67
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontOnPath-start35-0-13.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontOnPath.png 
b/tests/data/svg/batik/tests/spec/fonts/fontOnPath.png
new file mode 100644
index 0000000..85a418e
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontOnPath.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontOnPath.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontOnPath.svg
new file mode 100644
index 0000000..b2fa59b
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontOnPath.svg
@@ -0,0 +1,153 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Render some text on a path using an SVG font                              -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                      -->
+<!-- @version $Id: fontOnPath.svg 475685 2006-11-16 11:16:05Z cam $        -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>SVGFont - text path test</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">SVG Font with textPath Test</text>
+
+        <defs>
+            <font-face font-family="SVGComic">
+                <font-face-src>
+                    <font-face-uri xlink:href="fontDecorations.svg#SVGComic"/>
+                </font-face-src>     
+            </font-face>
+
+            <path id="Path1" style="fill:none; stroke:blue;" transform="scale(0.15,0.15)"
+                  d="M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100"/>
+            <path id="Path2" style="fill:none; stroke:blue;" transform="scale(0.30,0.50)"
+                  d="M 100 100 C100 0 400 00 400 100"/>
+
+        </defs>
+       
+
+        <g transform="translate(0,70)">
+            <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <text font-family="'SVGComic'" font-size="20" style="text-anchor:start">
+                <textPath xlink:href="#Path1" startOffset="0%">Font <tspan fill="red" 
dy="-10">on</tspan><tspan dy="10"> a Path</tspan></textPath>
+            </text>
+            <text font-size="10" x="35" y="60">startOffset="0%"</text>
+            <text font-size="10" x="35" y="70">text-anchor="start"</text>
+         </g>
+
+
+         <g transform="translate(150,70)">
+            <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <text font-family="'SVGComic'" font-size="20" style="text-anchor:middle">
+                <textPath xlink:href="#Path1" startOffset="0%">Font <tspan fill="red" 
dy="-10">on</tspan><tspan dy="10"> a Path</tspan></textPath>
+            </text>
+            <text font-size="10" x="35" y="60">startOffset="0%"</text>
+            <text font-size="10" x="35" y="70">text-anchor="middle"</text>
+         </g>
+
+         <g transform="translate(300,70)">
+            <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <text font-family="'SVGComic'" font-size="20" style="text-anchor:end">
+                <textPath xlink:href="#Path1" startOffset="50%">Font <tspan fill="red" 
dy="-10">on</tspan><tspan dy="10"> a Path</tspan></textPath>
+            </text>
+            <text font-size="10" x="35" y="60">startOffset="50%"</text>
+            <text font-size="10" x="35" y="70">text-anchor="end"</text>
+         </g>
+
+
+         <g transform="translate(0,220)">
+            <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <text font-family="'SVGComic'" font-size="20" style="text-anchor:start">
+                <textPath xlink:href="#Path1" startOffset="50%">Font <tspan fill="red" 
dy="-10">on</tspan><tspan dy="10"> a Path</tspan></textPath>
+            </text>
+            <text font-size="10" x="35" y="60">startOffset="50%"</text>
+            <text font-size="10" x="35" y="70">text-anchor="start"</text>
+         </g>
+
+
+         <g transform="translate(150,220)">
+            <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <text id="middle50" font-family="'SVGComic'" 
+                    font-size="20" style="text-anchor:middle">
+                <textPath xlink:href="#Path1" startOffset="50%">Font <tspan fill="red" 
dy="-10">on</tspan><tspan dy="10"> a Path</tspan></textPath>
+            </text>
+            <text font-size="10" x="35" y="60">startOffset="50%"</text>
+            <text font-size="10" x="35" y="70">text-anchor="middle"</text>
+         </g>
+
+         <g transform="translate(300,220)">
+            <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <text font-family="'SVGComic'" font-size="20" style="text-anchor:end">
+                <textPath xlink:href="#Path1" startOffset="100%">Font <tspan fill="red" 
dy="-10">on</tspan><tspan dy="10"> a Path</tspan></textPath>
+            </text>
+            <text font-size="10" x="35" y="60">startOffset="100%"</text>
+            <text font-size="10" x="35" y="70">text-anchor="end"</text>
+         </g>
+
+
+        <g transform="translate(0,370)">
+            <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <text id="start35" font-family="'SVGComic'" 
+                    font-size="20" style="text-anchor:start">
+                <textPath xlink:href="#Path1" startOffset="35">Font <tspan fill="red" 
dy="-10">on</tspan><tspan dy="10"> a Path</tspan></textPath>
+            </text>
+            <text font-size="10" x="35" y="60">startOffset="35"</text>
+            <text font-size="10" x="35" y="70">text-anchor="start"</text>
+         </g>
+
+
+         <g transform="translate(150,370)">
+            <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <text font-family="'SVGComic'" font-size="20" style="text-anchor:middle">
+                <textPath xlink:href="#Path1" startOffset="35">Font <tspan fill="red" 
dy="-10">on</tspan><tspan dy="10"> a Path</tspan></textPath>
+            </text>
+            <text font-size="10" x="35" y="60">startOffset="35"</text>
+            <text font-size="10" x="35" y="70">text-anchor="middle"</text>
+         </g>
+
+         <g transform="translate(300,370)">
+            <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <text font-family="'SVGComic'" font-size="20" style="text-anchor:end">
+                <textPath xlink:href="#Path1" startOffset="35">Font <tspan fill="red" 
dy="-10">on</tspan><tspan dy="10"> a Path</tspan></textPath>
+            </text>
+            <text font-size="10" x="35" y="60">startOffset="35"</text>
+            <text font-size="10" x="35" y="70">text-anchor="end"</text>
+         </g>
+       
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontStyling.png 
b/tests/data/svg/batik/tests/spec/fonts/fontStyling.png
new file mode 100644
index 0000000..a9b08ba
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/fonts/fontStyling.png differ
diff --git a/tests/data/svg/batik/tests/spec/fonts/fontStyling.svg 
b/tests/data/svg/batik/tests/spec/fonts/fontStyling.svg
new file mode 100644
index 0000000..0adf20f
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/fonts/fontStyling.svg
@@ -0,0 +1,273 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   
+        http://www.apache.org/licenses/LICENSE-2.0
+   
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!-- ========================================================================= -->
+<!-- Examines the possibilities of styling for glyphs.                         -->
+<!-- They are styled <text>, <font>, <glyph> and combinations.                 -->
+<!-- Test stroke, stroke-width, fills etc.                                     -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                      -->
+<!-- @version $Id: fontStyling.svg 475685 2006-11-16 11:16:05Z cam $       -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>SVGFont - font styling test</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>    
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">Font Styling Test</text>
+
+        
+        <g style="fill:purple; stroke:yellow">  <!-- none of the text should be draw with these properties 
-->
+
+            <defs>
+
+                <!-- marker to used by glyphs with a dot (i and j)-->
+
+                <marker id="dotMarker" markerWidth="1" markerHeight="1"
+                    viewBox="0 0 100 100" orient="0" refX="50" refY="50"
+                    markerUnits="strokeWidth">
+                    <circle cx="50" cy="50" r="50" fill="yellow" stroke="none"/>
+                </marker>
+
+
+
+                <!-- ============================= -->
+                <!-- SVG Font Definition           -->
+                <!-- ============================= -->
+
+                <!-- This is an encoding of Microsoft's Arial font      -->
+                <!-- in SVG format (as allowed in the license). For the -->
+                <!-- true type version of this font, refer to           -->
+                <!-- http://www.microsoft.com/truetype                  -->
+                <!-- It has been converted to SVG using Batik's         -->
+                <!-- true type to SVG converter (ttf2svg).              -->
+                <!-- Styling has been added for testing purposes.       -->
+
+
+                <font horiz-adv-x="904" style="stroke:green; stroke-width:100 ">
+
+                    <font-face
+                      font-family="SVGArial"
+                      units-per-em="2048"
+                      panose-1="2 11 6 4 2 2 2 2 2 4"
+                      ascent="1854"
+                      descent="434"
+                      alphabetic="0"/>
+
+                    <missing-glyph horiz-adv-x="1536" d="M256 0V1280H1280V0H256zM288 32H1248V1248H288V32z"/>
+
+                    <glyph unicode=" " glyph-name="space" horiz-adv-x="569"/>
+
+
+                    <!-- glyphs for a, b, c and d only have d attributes and do not contain any styling -->
+
+                   <glyph unicode="a" glyph-name="a" horiz-adv-x="1139" 
+                        d="M828 131Q728 46 636 11T437 -24Q262 -24 168 61T74 280Q74 358 109 422
+                           T202 526T332 585Q385 599 492 612Q710 638 813 674Q814 711 814 721
+                           Q814 831 763 876Q694 937 558 937Q431 937 371 893T281 735L105 759
+                           Q129 872 184 941T343 1048T584 1086Q720 1086 805 1054T930 974
+                           T986 851Q995 805 995 685V445Q995 194 1006 128T1052 0H864Q836 56 828 131z
+                           M813 533Q715 493 519 465Q408 449 362 429T291 371T266 285Q266 213 320 165
+                           T480 117Q584 117 665 162T784 287Q813 348 813 467V533z"/>
+
+                   <glyph unicode="b" glyph-name="b" horiz-adv-x="1139" 
+                        d="M301 0H134V1466H314V943Q428 1086 605 1086Q703 1086 790 1047T934 936
+                           T1023 763T1055 547Q1055 274 920 125T596 -24Q408 -24 301 133V0z
+                           M299 539Q299 348 351 263Q436 124 581 124Q699 124 785 226T871 532
+                           Q871 740 789 839T589 938Q471 938 385 836T299 539z"/>
+
+                   <glyph unicode="c" glyph-name="c" horiz-adv-x="1024" 
+                        d="M828 389L1005 366 Q976 183 857 80T563 -24Q345 -24 213 118T80 527
+                           Q80 699 137 828T310 1021T564 1086Q737 1086 847 999T988 750
+                           L813 723Q788 830 725 884T571 938Q435 938 350 841T265 532
+                           Q265 318 347 221T561 124Q667 124 738 189T828 389z"/>
+
+                   <glyph unicode="d" glyph-name="d" horiz-adv-x="1139" 
+                        d="M824 0V134Q723 -24 527 -24Q400 -24 294 46T129 241T70 530
+                           Q70 689 123 818T282 1017T519 1086Q615 1086 690 1046T812 940
+                           V1466H991V0H824zM255 530Q255 326 341 225T544 124Q662 124 744 220
+                           T827 515Q827 733 743 835T536 937Q416 937 336 839T255 530z"/>
+
+                   <!-- glyphs for e, f, g and h only have glyph children and do not contain any styling -->
+
+                  <glyph unicode="e" glyph-name="e" horiz-adv-x="1139">
+                        <path d="M862 342L1048 319Q1004 156 885 66T581 -24Q348 -24 212 119
+                                 T75 522Q75 790 213 938T571 1086Q784 1086 919 941T1054 533
+                                 Q1054 517 1053 485H261Q271 310 360 217T582 124
+                                 Q681 124 751 176T862 342zM271 633H864Q852 767 796 834
+                                 Q710 938 573 938Q449 938 365 855T271 633z"/>
+                    </glyph>
+
+                    <glyph unicode="f" glyph-name="f" horiz-adv-x="569">
+                        <path d="M178 0V922H19V1062H178V1175Q178 1282 197 1334Q223 1404 288 1447
+                                 T472 1491Q548 1491 640 1473L613 1316Q557 1326 507 1326
+                                 Q425 1326 391 1291T357 1160V1062H564V922H357V0H178z"/>
+                    </glyph>
+
+                    <glyph unicode="g" glyph-name="g" horiz-adv-x="1139">
+                        <path d="M102 -88L277 -114Q288 -195 338 -232Q405 -282 521 -282
+                                 Q646 -282 714 -232T806 -92Q820 -37 819 139Q701 0 525 0
+                                 Q306 0 186 158T66 537Q66 689 121 817T280 1016T526 1086
+                                 Q714 1086 836 934V1062H1002V144Q1002 -104 952 -207T792 -371
+                                 T522 -431Q332 -431 215 -346T102 -88zM251 550Q251 341 334 245
+                                 T542 149Q666 149 750 244T834 544Q834 739 748 838T539 937
+                                 Q419 937 335 840T251 550z"/>
+                    </glyph>
+
+                    <glyph unicode="h" glyph-name="h" horiz-adv-x="1139">
+                        <path d="M135 0V1466H315V940Q441 1086 633 1086Q751 1086 838 1040T962 911
+                                 T1000 673V0H820V673Q820 808 762 869T596 931Q516 931 446 890T345 777
+                                 T315 581V0H135z"/>
+                    </glyph>
+
+
+                    <!-- glyphs for i and j have both a d attribute and glyph children, -->
+                    <!-- the glyph children are styled -->
+
+                    <glyph unicode="i" glyph-name="i" horiz-adv-x="455"
+                        d="M136 0V1062H316V0H136z">
+                        <path style="marker:url(#dotMarker);fill:red" d="M136 1259V1466H316V1259H136z" />
+                    </glyph>
+
+                    <glyph unicode="j" glyph-name="j" horiz-adv-x="455"
+                        d="M-94 -412L-60 -259Q-6 -273 25 -273Q80 -273 107 -237T134 -54
+                           V1062H314V-58Q314 -254 263 -331Q198 -431 47 -431Q-26 -431 -94 -412z">
+                        <path style="marker:url(#dotMarker);fill:red" d="M134 1257V1466H314V1257H134z" />
+                    </glyph>
+
+
+                    <!-- glyphs for k, l, m and n only have glyph children and have styling on the glyph 
element -->
+
+                    <glyph unicode="k" glyph-name="k" horiz-adv-x="1024" style="fill:yellow; stroke:orange">
+                        <path d="M136 0V1466H316V630L742 1062H975L569 668L1016 0H794L443 543L316 
421V0H136z"/>
+                    </glyph>
+
+                    <glyph unicode="l" glyph-name="l" horiz-adv-x="455" style="fill:yellow; stroke:orange">
+                        <path d="M131 0V1466H311V0H131z"/>
+                    </glyph>
+
+                    <glyph unicode="m" glyph-name="m" horiz-adv-x="1706" style="fill:yellow; stroke:orange">
+                        <path d="M135 0V1062H296V913Q346 991 429 1038T618 1086
+                             Q736 1086 811 1037T918 900Q1044 1086 1246 1086
+                             Q1404 1086 1489 999T1574 729V0H1395V669
+                             Q1395 777 1378 824T1314 901T1206 930Q1094 930 1020 856
+                             T946 617V0H766V690Q766 810 722 870T578 930
+                             Q502 930 438 890T344 773T315 551V0H135z"/>
+                    </glyph>
+
+                    <glyph unicode="n" glyph-name="n" horiz-adv-x="1139" style="fill:yellow; stroke:orange">
+                        <path d="M135 0V1062H297V911Q414 1086 635 1086Q731 1086 811 1052
+                             T932 961T988 828Q998 778 998 653V0H818V646Q818 756 797 810
+                             T723 897T597 930Q482 930 399 857T315 580V0H135z"/>
+                    </glyph>
+
+
+                    <!-- glyphs for o, p, q and r only have d attributes and contain styling, this style 
should not be drawn -->
+
+                   <glyph unicode="o" glyph-name="o" horiz-adv-x="1139" style="fill:purple;stroke:green; 
stroke-width:50"
+                       d="M68 531Q68 826 232 968Q369 1086 566 1086Q785 1086 924 943
+                          T1063 546Q1063 341 1002 224T823 41T566 -24Q343 -24 206 119
+                          T68 531zM253 531Q253 327 342 226T566 124Q700 124 789 226
+                          T878 537Q878 734 789 835T566 937Q431 937 342 836T253 531z"/>
+
+                    <glyph unicode="p" glyph-name="p" horiz-adv-x="1139" style="fill:purple;stroke:green; 
stroke-width:50"
+                       d="M135 -407V1062H299V924Q357 1005 430 1045T607 1086
+                          Q743 1086 847 1016T1004 819T1057 539Q1057 376 999 246
+                          T829 46T594 -24Q504 -24 433 14T315 110V-407H135z
+                          M298 525Q298 320 381 222T582 124Q702 124 787 225T873 540
+                          Q873 743 790 844T590 945Q475 945 387 838T298 525z"/>
+
+                    <glyph unicode="q" glyph-name="q" horiz-adv-x="1139" style="fill:purple;stroke:green; 
stroke-width:50"
+                       d="M812 -407V113Q770 54 695 15T534 -24Q345 -24 209 127
+                          T72 541Q72 701 127 828T288 1020T520 1086Q717 1086 830 920
+                          V1062H992V-407H812zM257 534Q257 329 343 227T549 124
+                          Q664 124 747 221T830 518Q830 730 743 837T537 944
+                          Q420 944 339 845T257 534z"/>
+
+                    <glyph unicode="r" glyph-name="r" horiz-adv-x="682" style="fill:purple;stroke:green; 
stroke-width:50"
+                       d="M133 0V1062H295V901Q357 1014 409 1050T525 1086
+                          Q616 1086 710 1028L648 861Q582 900 516 900Q457 900 410 865
+                          T343 766Q313 670 313 556V0H133z"/>
+
+
+                    <glyph unicode="s" glyph-name="s" horiz-adv-x="1024" d="M63 317L241 345Q256 238 324 
181T516 124Q640 124 700 174T760 293Q760 354 707 389Q670 413 523 450Q325 500 249 536T133 637T93 780Q93 851 125 
911T214 1012Q256 1043 328 1064T484 1086Q609 1086
+                        703 1050T843 953T905 788L729 764Q717 846 660 892T497 938Q373 938 320 897T267 801Q267 
766 289 738Q311 709 358 690Q385 680 517 644Q708 593 783 561T902 466T945 312Q945 222 893 143T741 20T517 
-24Q310 -24 202 62T63 317z"/>
+                    <glyph unicode="t" glyph-name="t" horiz-adv-x="569" d="M528 161L554 2Q478 -14 418 
-14Q320 -14 266 17T190 98T168 311V922H36V1062H168V1325L347 1433V1062H528V922H347V301Q347 224 356 202T387 
167T449 154Q479 154 528 161z"/>
+                    <glyph unicode="u" glyph-name="u" horiz-adv-x="1139" d="M831 0V156Q707 -24 494 -24Q400 
-24 319 12T198 102T142 236Q131 289 131 404V1062H311V473Q311 332 322 283Q339 212 394 172T530 131Q611 131 682 
172T782 285T812 493V1062H992V0H831z"/>
+                    <glyph unicode="v" glyph-name="v" horiz-adv-x="1024" d="M430 0L26 1062H216L444 426Q481 
323 512 212Q536 296 579 414L815 1062H1000L598 0H430z"/>
+                    <glyph unicode="w" glyph-name="w" horiz-adv-x="1479" d="M331 0L6 1062H192L361 449L424 
221Q428 238 479 440L648 1062H833L992 446L1045 243L1106 448L1288 1062H1463L1131 0H944L775 636L734 817L519 
0H331z"/>
+                    <glyph unicode="x" glyph-name="x" horiz-adv-x="1024" d="M15 0L403 552L44 1062H269L432 
813Q478 742 506 694Q550 760 587 811L766 1062H981L614 562L1009 0H788L570 330L512 419L233 0H15z"/>
+                    <glyph unicode="y" glyph-name="y" horiz-adv-x="1024" d="M127 -409L107 -240Q166 -256 210 
-256Q270 -256 306 -236T365 -180Q382 -153 420 -46Q425 -31 436 -2L33 1062H227L448 447Q491 330 525 201Q556 325 
599 443L826 1062H1006L602 -18Q537 -193 501 -259Q453
+                        -348 391 -389T243 -431Q191 -431 127 -409z"/>
+                    <glyph unicode="z" glyph-name="z" horiz-adv-x="1024" d="M40 0V146L716 922Q601 916 513 
916H80V1062H948V943L373 269L262 146Q383 155 489 155H980V0H40z"/>
+
+                </font>
+
+            </defs>
+
+
+            <!-- draw text using the SVG Font -->
+
+            <g id="text-content" style="fill:blue; stroke:none; font-family:SVGArial; font-size:45">
+                <text x="120" y="150">abcd</text>
+                <text x="120" y="210">efgh</text>
+                <text x="120" y="270">ijij</text>
+                <text x="120" y="330">klmn</text>
+                <text x="120" y="390">opqr</text>
+            </g>
+
+
+            <!-- draw rectangles which are styled in the same way the text above should be styled -->
+
+            <g id="style-reference" style="fill:blue; stroke:none">
+
+                <rect x="90" y="125" width="25" height="25"/>
+
+                <rect x="90" y="185" width="25" height="25"
+                      style="stroke:green; stroke-width:2.2"/>  <!-- stroke-width = 100/2048*45 -->
+
+                <polygon points="90,235 115,235 115,240 90,240"
+                     style="stroke:green; stroke-width:2.2; fill:red; marker:url(#dotMarker)"/>
+                <rect x="90" y="245" width="25" height="25"/>
+
+                <g style="stroke:green; stroke-width:2.2">
+                    <rect x="90" y="305" width="25" height="25" style="fill:yellow; stroke:orange"/>
+                </g>
+
+                <rect x="90" y="365" width="25" height="25"/>
+            </g>
+
+         </g>
+         <text x="90" y="430" font-size="10" >The text style should match the style of the box beside 
it.</text>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-interactivity/cursor.svg 
b/tests/data/svg/batik/tests/spec/ignore-interactivity/cursor.svg
new file mode 100644
index 0000000..eda1804
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-interactivity/cursor.svg
@@ -0,0 +1,211 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests support for the cursor property.                                    -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: cursor.svg 475477 2006-11-15 22:44:28Z cam $             -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink";  
+     id="body" width="450" height="500" viewBox="0 0 450 500" >
+
+    <text class="title" x="50%" y="50">Cursor Property</text>
+
+    <defs>
+        <rect x="-95" y="-16" width="190" height="20" id="cell"/>
+        <g id="row">
+            <use xlink:href="#cell" />
+        </g>
+
+        <use id="oddRow" xlink:href="#row" stroke="black" fill="white" />
+        <use id="evenRow" xlink:href="#row" stroke="black" fill="#eeeeee" />
+        <use id="oddRowCursor" xlink:href="#row" stroke="black" fill="crimson" cursor="wait"/>
+        <use id="evenRowCursor" xlink:href="#row" stroke="black" fill="gold" cursor="wait"/>
+
+        <cursor id="customCursor" x="16" y="16" xlink:href="../../resources/images/hotSpotCenter.png" />
+        <cursor id="customCursor2" x="32" y="0" xlink:href="../../resources/images/hotSpotNE.png" />
+
+    </defs>
+
+    <g transform="translate(120, 120)" class="label" text-anchor="middle" onmouseover="cursorMoved(evt)">
+        <use xlink:href="#oddRow" cursor="auto"/>
+        <text>auto</text>
+        <g transform="translate(0,20)" cursor="crosshair">
+            <use xlink:href="#evenRow"/>
+            <text>crosshair</text>
+        </g>
+        <g transform="translate(0,40)" cursor="default">
+            <use xlink:href="#oddRow"/>
+            <text>default</text>
+        </g>
+        <g transform="translate(0,60)" cursor="pointer">
+            <use xlink:href="#evenRow"/>
+            <text>pointer</text>
+        </g>
+        <g transform="translate(0,80)" cursor="move">
+            <use xlink:href="#oddRow"/>
+            <text>move</text>
+        </g>
+        <g transform="translate(0,100)" cursor="text">
+            <use xlink:href="#evenRow"/>
+            <text>text</text>
+        </g>
+        <g transform="translate(0,120)" cursor="wait">
+            <use xlink:href="#oddRow"/>
+            <text>wait</text>
+        </g>
+        <g transform="translate(0,140)" cursor="help">
+            <use xlink:href="#evenRow"/>
+            <text>help</text>
+        </g>
+        <a cursor="auto"><g transform="translate(0,160)">
+            <use xlink:href="#oddRow"/>
+            <text>&lt;a&gt; cursor=auto</text>
+        </g></a>
+        <a cursor="wait"><g transform="translate(0,180)">
+            <use xlink:href="#evenRow"/>
+            <text>&lt;a&gt; cursor=wait</text>
+        </g></a>
+        <g transform="translate(0,200)">
+            <use xlink:href="#oddRow"/>
+            <text cursor="auto">&lt;text&gt; cursor=auto</text>
+        </g>
+        <g transform="translate(0,220)">
+            <use xlink:href="#evenRow"/>
+            <text cursor="wait">&lt;text&gt; cursor=wait</text>
+        </g>
+        <a cursor="auto"><g transform="translate(0,240)">
+            <use xlink:href="#oddRow"/>
+            <text>&lt;a&gt;.. &lt;text /&gt;.. &lt;a&gt; cursor=auto</text>
+        </g></a>
+        <g transform="translate(0,260)">
+            <use xlink:href="#evenRow"/>
+            <a cursor="crosshair"><text>&lt;a&gt; &lt;text /&gt; &lt;a&gt; cursor=crosshair</text></a>
+        </g>
+        <g transform="translate(0,280)">
+            <use xlink:href="#oddRow"/>
+            <text cursor="auto">&lt;text&gt;<a fill="blue">&lt;a/&gt;</a>&lt;text&gt; cursor=auto</text>
+        </g>
+        <g transform="translate(0,300)">
+            <use xlink:href="#evenRow"/>
+            <text cursor="wait">&lt;text&gt;<a fill="blue">&lt;a/&gt;</a>&lt;text&gt; cursor=wait</text>
+        </g>
+    </g>
+
+
+    <g transform="translate(330, 120)" class="label" text-anchor="middle"  onmouseover="cursorMoved(evt)">
+        <g transform="translate(0,0)" cursor="e-resize">
+          <use xlink:href="#oddRow"/>
+          <text>e-resize</text>
+        </g>
+
+        <g transform="translate(0,20)" cursor="w-resize">
+            <use xlink:href="#evenRow"/>
+            <text>w-resize</text>
+        </g>
+        <g transform="translate(0,40)" cursor="ne-resize">
+            <use xlink:href="#oddRow"/>
+            <text>ne-resize</text>
+        </g>
+        <g transform="translate(0,60)" cursor="nw-resize">
+            <use xlink:href="#evenRow"/>
+            <text>nw-resize</text>
+        </g>
+        <g transform="translate(0,80)" cursor="n-resize">
+            <use xlink:href="#oddRow"/>
+            <text>n-resize</text>
+        </g>
+        <g transform="translate(0,100)" cursor="se-resize">
+            <use xlink:href="#evenRow"/>
+            <text>se-resize</text>
+        </g>
+        <g transform="translate(0,120)" cursor="sw-resize">
+            <use xlink:href="#oddRow"/>
+            <text>sw-resize</text>
+        </g>
+        <g transform="translate(0,140)" cursor="s-resize">
+            <use xlink:href="#evenRow"/>
+            <text>s-resize</text>
+        </g>
+        <g transform="translate(0,160)" cursor="url(#badCustom), crosshair">
+            <use xlink:href="#oddRow"/>
+            <text>Bad url, crosshair</text>
+        </g>
+        <g transform="translate(0,180)" cursor="url(#customCursor), wait">
+            <use xlink:href="#evenRow"/>
+            <text>Good url, wait</text>
+        </g>
+        <g transform="translate(0,200)" cursor="url(#badCustom), url(#customCursor2), crosshair">
+            <use xlink:href="#oddRow"/>
+            <text>Bad url, good url, crosshair</text>
+        </g>
+
+        <g transform="translate(0,220)">
+            <use xlink:href="#evenRow"/>
+            <use xlink:href="#evenRowCursor" cursor="auto"/>
+            <text>&lt;use cursor=auto (wait)&gt;</text>
+        </g>
+        <g transform="translate(0,240)">
+            <use xlink:href="#oddRow"/>
+            <use xlink:href="#oddRowCursor" cursor="crosshair" />
+            <text>&lt;use cursor=crosshair&gt;</text>
+        </g>
+
+        <g transform="translate(0,260)">
+            <use xlink:href="#evenRow"/>
+            <image x="-93" y="-14" width="186" height="16" xlink:href="cursorImage2.svg" cursor="auto"/>
+            <text>&lt;image cursor=auto (wait)&gt;</text>
+        </g>
+        <g transform="translate(0,280)">
+            <use xlink:href="#oddRow"/>
+            <image x="-93" y="-14" width="186" height="16" xlink:href="cursorImage.svg" cursor="crosshair"/>
+            <text>&lt;image cursor=crosshair&gt;</text>
+        </g>
+    </g>
+
+    <script type="text/ecmascript"><![CDATA[
+function cursorMoved(evt) {
+    if (evt.target.nodeName == "rect") {
+        evt.target.setAttribute("fill", "gold");
+    }
+}
+
+function onDone() {
+    if (!(regardTestInstance == null)) {
+        regardTestInstance.scriptDone();   
+    } else {
+        alert("This button only works when run in the regard framework");
+    }
+}
+    ]]></script>
+
+    <rect x="25" y="460" width="20" height="20" shape-rendering="crispEdges" fill="red" 
onclick="evt.target.setAttribute('fill', 'green')" stroke="black"/>
+    <g id="done" transform="translate(70, 458)" cursor="pointer" onclick="onDone()">
+        <rect rx="5" ry="5" width="60" height="25" fill="#eeeeee" stroke="black" />
+        <text x="30" y="18" font-size="14" font-weight="bold" text-anchor="middle">Done</text>
+    </g>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-interactivity/cursor2.svg 
b/tests/data/svg/batik/tests/spec/ignore-interactivity/cursor2.svg
new file mode 100644
index 0000000..1f0b264
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-interactivity/cursor2.svg
@@ -0,0 +1,143 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests support for the cursor property.                                    -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: cursor2.svg 475477 2006-11-15 22:44:28Z cam $             -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink";  
+     id="body" width="450" height="500" viewBox="0 0 450 500" >
+
+    <text class="title" x="50%" y="50">Custom Cursor Hot Spot Test</text>
+
+  <script type="text/ecmascript"><![CDATA[
+
+var hitCount = document.getElementById("hitCount");
+var hitCountText = hitCount.firstChild;
+var curHitCount = 0;
+
+function targetHit() {
+    curHitCount++;
+    hitCountText.data = "" + curHitCount;
+}
+
+var hitTargetArea = document.getElementById("hitTargetArea");
+
+function hotTarget() {
+    hitTargetArea.setAttribute("fill", "gold");
+}
+
+function coldTarget() {
+    hitTargetArea.setAttribute("fill", "#eeeeee");
+}    
+
+var cursorRef = document.getElementById("refNW");
+
+function changeCursor(evt) {
+    var target = evt.target;
+    var id = target.getAttribute("id");
+    var cursorId = "cursor" + id;
+    hitTargetArea.setAttribute("cursor", "url(#" + cursorId + "),crosshair");
+
+    
+    cursorRef.setAttribute("visibility", "hidden");
+    cursorRef = document.getElementById("ref" + id);
+    cursorRef.setAttribute("visibility", "visible");
+}
+
+  ]]></script>
+
+    <text class="label" x="50%" y="125" text-anchor="middle">Try and hit the small black dot
+        <tspan x="50%" dy="+1.4em">after selecting your cursor</tspan></text>
+
+    <g id="hitTargetArea" fill="#eeeeee" transform="translate(175, 150)" shape-rendering="crispEdges" 
cursor="url(#cursorNW),crosshair" >
+        <rect x="0" y="0" width="100" height="100" stroke="black"/>
+        <rect x="44" y="44" width="12" height="12" fill="black"/>
+        <rect x="45" y="45" width="10" height="10" fill="#eeeeee" />
+        <rect x="49" y="40" width="2" height="20" fill="black" />
+        <rect y="49" x="40" height="2" width="20" fill="black" />
+        <!-- <line x1="40" y1="50" x2="60" y2="50" stroke="black" />
+        <line y1="40" x1="50" y2="60" x2="50" stroke="black" /> -->
+        <rect x="49" y="49" width="2" height="2" fill="black"
+              onclick="targetHit()" 
+              onmouseover="hotTarget()"
+              onmouseout="coldTarget()"/>
+    </g>
+
+    <text class="label" text-anchor="middle" x="50%" y="270" fill="crimson">Hit Count : <tspan 
id="hitCount">0</tspan></text>
+
+    <text class="label" text-anchor="middle" x="25%" y="340" >Cursor Selection</text>
+
+    <g onclick="changeCursor(evt)" transform="translate(112.5, 410)">
+        <use xlink:href="#Center" x="-16" y="-16" />
+        <use xlink:href="#NW" x="-50" y="-50"  />
+        <use xlink:href="#N" x="-16" y="-50"  />
+        <use xlink:href="#NE" x="18"  y="-50"  />
+        <use xlink:href="#E" x="18"  y="-16"  />
+        <use xlink:href="#SE" x="18"  y="18"   />
+        <use xlink:href="#S" x="-16" y="18"   />
+        <use xlink:href="#SW" x="-50" y="18"   />
+        <use xlink:href="#W" x="-50" y="-16"  />
+    </g>
+
+    <text class="label" text-anchor="middle" x="75%" y="340" >Current Target Area Cursor</text>
+
+    <g transform="translate(321.5, 394)" visibility="hidden">
+        <use id="refCenter" xlink:href="#Center"  />
+        <use id="refNW" xlink:href="#NW"  visibility="visible"/>
+        <use id="refN" xlink:href="#N"  />
+        <use id="refNE" xlink:href="#NE"  />
+        <use id="refE" xlink:href="#E" />
+        <use id="refSE" xlink:href="#SE"   />
+        <use id="refS" xlink:href="#S"   />
+        <use id="refSW" xlink:href="#SW"   />
+        <use id="refW" xlink:href="#W"  />
+    </g>
+
+    <defs>
+        <image id="Center" xlink:href="../../resources/images/hotSpotCenter.png" width="32" height="32"/>
+        <image id="NW" xlink:href="../../resources/images/hotSpotNW.png" width="32" height="32"/>
+        <image id="N" xlink:href="../../resources/images/hotSpotN.png" width="32" height="32"/>
+        <image id="NE" xlink:href="../../resources/images/hotSpotNE.png" width="32" height="32"/>
+        <image id="E" xlink:href="../../resources/images/hotSpotE.png" width="32" height="32"/>
+        <image id="SE" xlink:href="../../resources/images/hotSpotSE.png" width="32" height="32"/>
+        <image id="S" xlink:href="../../resources/images/hotSpotS.png" width="32" height="32"/>
+        <image id="SW" xlink:href="../../resources/images/hotSpotSW.png" width="32" height="32"/>
+        <image id="W" xlink:href="../../resources/images/hotSpotW.png" width="32" height="32"/>
+
+        <cursor id="cursorCenter" x="16" y="16" xlink:href="../../resources/images/hotSpotCenter.png"/>
+        <cursor id="cursorNW" x="0" y="0" xlink:href="../../resources/images/hotSpotNW.png"/>
+        <cursor id="cursorN" x="16" y="0" xlink:href="../../resources/images/hotSpotN.png"/>
+        <cursor id="cursorNE" x="32"  y="0" xlink:href="../../resources/images/hotSpotNE.png"/>
+        <cursor id="cursorE" x="32"  y="16" xlink:href="../../resources/images/hotSpotE.png"/>
+        <cursor id="cursorSE" x="32"  y="32"  xlink:href="../../resources/images/hotSpotSE.png"/>
+        <cursor id="cursorS" x="16" y="32"  xlink:href="../../resources/images/hotSpotS.png"/>
+        <cursor id="cursorSW" x="0" y="32"  xlink:href="../../resources/images/hotSpotSW.png"/>
+        <cursor id="cursorW" x="0" y="16" xlink:href="../../resources/images/hotSpotW.png"/>
+    </defs>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-interactivity/cursor3.svg 
b/tests/data/svg/batik/tests/spec/ignore-interactivity/cursor3.svg
new file mode 100644
index 0000000..8c6a0a1
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-interactivity/cursor3.svg
@@ -0,0 +1,118 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests support for the cursor property.                                    -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: cursor3.svg 475477 2006-11-15 22:44:28Z cam $             -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink";  
+     id="body" width="450" height="500" viewBox="0 0 450 500" >
+
+    <text class="title" x="50%" y="50">Custom Cursor Image Test</text>
+
+  <script type="text/ecmascript"><![CDATA[
+
+var hitCount = document.getElementById("hitCount");
+var hitCountText = hitCount.firstChild;
+var curHitCount = 0;
+
+function targetHit() {
+    curHitCount++;
+    hitCountText.data = "" + curHitCount;
+}
+
+var hitTargetArea = document.getElementById("hitTargetArea");
+
+function hotTarget() {
+    hitTargetArea.setAttribute("fill", "gold");
+}
+
+function coldTarget() {
+    hitTargetArea.setAttribute("fill", "#eeeeee");
+}    
+
+var cursorRef = document.getElementById("refCenterSmall");
+
+function changeCursor(evt) {
+    var target = evt.target;
+    var id = target.getAttribute("id");
+    var cursorId = "cursor" + id;
+    hitTargetArea.setAttribute("cursor", "url(#" + cursorId + "),crosshair");
+
+    
+    cursorRef.setAttribute("visibility", "hidden");
+    cursorRef = document.getElementById("ref" + id);
+    cursorRef.setAttribute("visibility", "visible");
+}
+  ]]></script>
+
+    <text class="label" x="50%" y="125" text-anchor="middle">Try and hit the small black dot
+        <tspan x="50%" dy="+1.4em">after selecting your cursor</tspan></text>
+
+    <g id="hitTargetArea" fill="#eeeeee" transform="translate(175, 150)" shape-rendering="crispEdges" 
cursor="url(#cursorCenterSmall),crosshair" >
+        <rect x="0" y="0" width="100" height="100" stroke="black"/>
+        <rect x="44" y="44" width="12" height="12" fill="black"/>
+        <rect x="45" y="45" width="10" height="10" fill="#eeeeee" />
+        <rect x="49" y="40" width="2" height="20" fill="black" />
+        <rect y="49" x="40" height="2" width="20" fill="black" />
+        <!-- <line x1="40" y1="50" x2="60" y2="50" stroke="black" />
+        <line y1="40" x1="50" y2="60" x2="50" stroke="black" /> -->
+        <rect x="49" y="49" width="2" height="2" fill="black"
+              onclick="targetHit()" 
+              onmouseover="hotTarget()"
+              onmouseout="coldTarget()"/>
+    </g>
+
+    <text class="label" text-anchor="middle" x="50%" y="270" fill="crimson">Hit Count : <tspan 
id="hitCount">0</tspan></text>
+
+    <text class="label" text-anchor="middle" x="25%" y="340" >Cursor Selection</text>
+
+    <g onclick="changeCursor(evt)" transform="translate(57.5, 400)">
+        <use xlink:href="#CenterSmall" />
+        <use xlink:href="#Center" x="32"/>
+        <use xlink:href="#CenterBig" x="90"/>
+    </g>
+
+    <text class="label" text-anchor="middle" x="75%" y="340" >Current Target Area Cursor</text>
+
+    <g transform="translate(337.5, 394)" visibility="hidden">
+        <use id="refCenter" xlink:href="#Center"  />
+        <use id="refCenterSmall" xlink:href="#CenterSmall"  visibility="visible"/>
+        <use id="refCenterBig" xlink:href="#CenterBig"  />
+    </g>
+
+    <defs>
+        <image id="Center" xlink:href="../../resources/images/hotSpotCenter.png" x="-16" y="-16" width="32" 
height="32"/>
+        <image id="CenterSmall" xlink:href="../../resources/images/hotSpotCenterSmall.png" x="-8" y="-8" 
width="16" height="16"/>
+        <image id="CenterBig" xlink:href="../../resources/images/hotSpotCenterBig.png" x="-32" y="-32" 
width="64" height="64"/>
+
+        <cursor id="cursorCenter" x="16" y="16" xlink:href="../../resources/images/hotSpotCenter.png"/>
+        <cursor id="cursorCenterSmall" x="8" y="8" 
xlink:href="../../resources/images/hotSpotCenterSmall.png"/>
+        <cursor id="cursorCenterBig" x="32" y="32" xlink:href="../../resources/images/hotSpotCenterBig.png"/>
+    </defs>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-interactivity/cursor4.svg 
b/tests/data/svg/batik/tests/spec/ignore-interactivity/cursor4.svg
new file mode 100644
index 0000000..4671821
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-interactivity/cursor4.svg
@@ -0,0 +1,180 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests support for the cursor property.                                    -->
+<!-- This test shows that JPEG, PNG and TIF formats are supported. It also     -->
+<!-- shows that SVG images are not supported for cursors and that BMP images   -->
+<!-- are not either. Unsupported image formats result in the same bahavior as  -->
+<!-- 'broken images'. The cursor falls back to the built in cursor specified   -->
+<!-- at the end of the cursor list values.                                     -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: cursor4.svg 475477 2006-11-15 22:44:28Z cam $             -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink";  
+     id="body" width="450" height="500" viewBox="0 0 450 500" >
+
+    <text class="title" x="50%" y="50">Custom Cursor Image Test (cntd)</text>
+
+  <script type="text/ecmascript"><![CDATA[
+
+var hitCount = document.getElementById("hitCount");
+var hitCountText = hitCount.firstChild;
+var curHitCount = 0;
+
+function targetHit() {
+    curHitCount++;
+    hitCountText.data = "" + curHitCount;
+}
+
+var hitTargetArea = document.getElementById("hitTargetArea");
+
+function hotTarget() {
+    hitTargetArea.setAttribute("fill", "gold");
+}
+
+function coldTarget() {
+    hitTargetArea.setAttribute("fill", "#eeeeee");
+}    
+
+var cursorRef = document.getElementById("refbrokenImage");
+
+function changeCursor(evt) {
+    var target = evt.target;
+    var id = target.getAttribute("id");
+    var cursorId = "cursor" + id;
+    hitTargetArea.setAttribute("cursor", "url(#" + cursorId + "),crosshair");
+
+    
+    cursorRef.setAttribute("visibility", "hidden");
+    cursorRef = document.getElementById("ref" + id);
+    if (cursorRef == null) {
+        alert("Cannot find " + "ref" + id);
+        return;
+    }
+
+    cursorRef.setAttribute("visibility", "visible");
+}
+  ]]></script>
+
+    <text class="label" x="50%" y="125" text-anchor="middle">Try and hit the small black dot
+        <tspan x="50%" dy="+1.4em">after selecting your cursor</tspan></text>
+
+    <g id="hitTargetArea" fill="#eeeeee" transform="translate(175, 150)" shape-rendering="crispEdges" 
cursor="url(#cursorbrokenImage),crosshair" >
+        <rect x="0" y="0" width="100" height="100" stroke="black"/>
+        <rect x="44" y="44" width="12" height="12" fill="black"/>
+        <rect x="45" y="45" width="10" height="10" fill="#eeeeee" />
+        <rect x="49" y="30" width="2" height="40" fill="black" />
+        <rect y="49" x="30" height="2" width="40" fill="black" />
+        <!-- <line x1="40" y1="50" x2="60" y2="50" stroke="black" />
+        <line y1="40" x1="50" y2="60" x2="50" stroke="black" /> -->
+        <rect x="49" y="49" width="2" height="2" fill="black"
+              onclick="targetHit()" 
+              onmouseover="hotTarget()"
+              onmouseout="coldTarget()"/>
+    </g>
+
+    <text class="label" text-anchor="middle" x="50%" y="270" fill="crimson">Hit Count : <tspan 
id="hitCount">0</tspan></text>
+
+    <text class="label" text-anchor="middle" x="25%" y="340" >Cursor Selection</text>
+
+    <g onclick="changeCursor(evt)" transform="translate(80, 390)" cursor="pointer">
+        <use xlink:href="#brokenImage" />
+        <use xlink:href="#tiffImage" x="34"/>
+        <use xlink:href="#pngImage" x="68"/>
+        <use xlink:href="#jpegImage" x="0" y="34"/>
+        <use xlink:href="#unsupportedImage" x="34" y="34"/>
+        <use xlink:href="#svgImage" x="68" y="34"/>
+        <use xlink:href="#svgImage2" x="0" y="68"/>
+        <use xlink:href="#svgImage3" x="34" y="68"/>
+        <use xlink:href="#svgImage4" x="68" y="68"/>
+    </g>
+
+    <text class="label" text-anchor="middle" x="75%" y="340" >Current Target Area Cursor</text>
+
+    <g transform="translate(337.5, 394)" visibility="hidden" >
+        <g id="refbrokenImage" visibility="visible">
+            <text class="label" text-anchor="middle" y="40">Broken Image<tspan dy="1.5em" x="0">defaults to 
crosshair</tspan></text>
+            <use xlink:href="#brokenImage"  />
+        </g>
+        <g id="reftiffImage">
+            <text class="label" text-anchor="middle" y="40">Tiff Image</text>
+            <use xlink:href="#tiffImage"  />
+        </g>
+        <g id="refpngImage">
+            <text class="label" text-anchor="middle" y="40">PNG Image</text>
+            <use xlink:href="#pngImage"  />
+        </g>
+        <g id="refjpegImage">
+            <text class="label" text-anchor="middle" y="40">JPEG Image</text>
+            <use xlink:href="#jpegImage"  />
+        </g>
+        <g id="refunsupportedImage">
+            <text class="label" text-anchor="middle" y="40">Unsupported Image (BMP)<tspan dy="1.5em" 
x="0">defaults to crosshair</tspan></text>
+            <use xlink:href="#unsupportedImage"  />
+        </g>
+        <g id="refsvgImage">
+            <text class="label" text-anchor="middle" y="40">SVG Image<tspan dy="1.5em" x="0">defaults to 
crosshair</tspan></text>
+            <use xlink:href="#svgImage"  />
+        </g>
+        <g id="refsvgImage2">
+            <text class="label" text-anchor="middle" y="40">SVG Image<tspan dy="1.5em" x="0">No 
viewBox/width/height</tspan></text>
+            <use xlink:href="#svgImage2"  />
+        </g>
+        <g id="refsvgImage3">
+            <text class="label" text-anchor="middle" y="40">SVG Image<tspan dy="1.5em" x="0">ViewBox, no 
width/height</tspan></text>
+            <use xlink:href="#svgImage3"  />
+        </g>
+y        <g id="refsvgImage4">
+            <text class="label" text-anchor="middle" y="40">SVG Image<tspan dy="1.5em" x="0">ViewBox, 
different aspect ratio</tspan></text>
+            <use xlink:href="#svgImage4"  />
+        </g>
+
+    </g>
+
+    <defs>
+        <image id="brokenImage" xlink:href="../../resources/images/iDontExist.png" width="32" height="32" 
x="-16" y="-16"/>
+        <image id="tiffImage" xlink:href="../../resources/images/tiffCursor.tif" width="32" height="32" 
x="-16" y="-16"/>
+        <image id="pngImage" xlink:href="../../resources/images/pngCursor.png" width="32" height="32" 
x="-16" y="-16"/>
+        <image id="jpegImage" xlink:href="../../resources/images/jpegCursor.jpg" width="32" height="32" 
x="-16" y="-16"/>
+        <image id="unsupportedImage" xlink:href="../../resources/images/bmpCursor.bmp" width="32" 
height="32" x="-16" y="-16"/>
+        <image id="svgImage" xlink:href="../../resources/images/svgCursor.svg" width="32" height="32" 
x="-16" y="-16"/>
+        <image id="svgImage2" xlink:href="../../resources/images/svgCursor2.svg" width="32" height="32" 
x="-16" y="-16"/>
+        <image id="svgImage3" xlink:href="../../resources/images/svgCursor3.svg" width="32" height="32" 
x="-16" y="-16"/>
+        <image id="svgImage4" xlink:href="../../resources/images/svgCursor4.svg" width="32" height="32" 
x="-16" y="-16"/>
+
+        <cursor id="cursorbrokenImage" xlink:href="../../resources/images/iDontExist.png" x="16" y="16"/>
+        <cursor id="cursortiffImage" xlink:href="../../resources/images/tiffCursor.tif" x="16" y="16"/>
+        <cursor id="cursorpngImage" xlink:href="../../resources/images/pngCursor.png" x="16" y="16"/>
+        <cursor id="cursorjpegImage" xlink:href="../../resources/images/jpegCursor.jpg" x="16" y="16"/>
+        <cursor id="cursorunsupportedImage" xlink:href="../../resources/images/bmpCursor.bmp" x="16" y="16"/>
+        <cursor id="cursorsvgImage" xlink:href="../../resources/images/svgCursor.svg" x="16" y="16"/>
+        <cursor id="cursorsvgImage2" xlink:href="../../resources/images/svgCursor2.svg" x="16" y="16"/>
+        <cursor id="cursorsvgImage3" xlink:href="../../resources/images/svgCursor3.svg" x="16" y="16"/>
+        <cursor id="cursorsvgImage4" xlink:href="../../resources/images/svgCursor4.svg" x="16" y="8"/>
+    </defs>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-interactivity/cursorImage.svg 
b/tests/data/svg/batik/tests/spec/ignore-interactivity/cursorImage.svg
new file mode 100644
index 0000000..7e34351
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-interactivity/cursorImage.svg
@@ -0,0 +1,22 @@
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<svg  xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink";  
+     id="body" width="186" height="16" viewBox="0 0 186 16" >
+    <rect x="0" y="0" width="186" height="16" fill="crimson" cursor="wait" />
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-interactivity/cursorImage2.svg 
b/tests/data/svg/batik/tests/spec/ignore-interactivity/cursorImage2.svg
new file mode 100644
index 0000000..65b049b
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-interactivity/cursorImage2.svg
@@ -0,0 +1,21 @@
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+--><svg  xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink";  
+     id="body" width="186" height="16" viewBox="0 0 186 16" >
+    <rect x="0" y="0" width="186" height="16" fill="gold" cursor="wait" />
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-interactivity/focus.svg 
b/tests/data/svg/batik/tests/spec/ignore-interactivity/focus.svg
new file mode 100644
index 0000000..12089a2
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-interactivity/focus.svg
@@ -0,0 +1,112 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests support for the DOMFocusIn, DOMFocusOut, DOMActivate                -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @author vincent hardy sun com                                             -->
+<!-- @version $Id: focus.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <text class="title" x="50%" y="50">DOMFocusIn, DOMFocusOut, and DOMActivate test</text>
+
+<g id="body-content">
+
+<rect onactivate="set('orange', 'activate')" onfocusin="set('orange', 'focusin')" onfocusout="set('orange', 
'focusout')" 
+      x="100" y="100" width="100" height="100" style="fill:orange" />
+
+<rect onactivate="set('crimson', 'activate')" onfocusin="set('crimson', 'focusin')" 
onfocusout="set('crimson', 'focusout')" 
+      x="250" y="100" width="100" height="100" style="fill:crimson" />
+
+<rect onactivate="set('gold', 'activate')" onfocusin="set('gold', 'focusin')" onfocusout="set('gold', 
'focusout')" 
+      x="100" y="250" width="100" height="100" style="fill:gold" />
+
+<rect onactivate="set('aaa', 'activate')" onfocusin="set('aaa', 'focusin')" onfocusout="set('aaa', 
'focusout')" 
+      x="250" y="250" width="100" height="100" style="fill:#aaa" />
+
+<circle onactivate="set('eee', 'activate')" onfocusin="set('eee', 'focusin')" onfocusout="set('eee', 
'focusout')" 
+        cx="225" cy="225" r="75" style="fill:#eee" />
+
+</g>
+
+    <script type="text/ecmascript"><![CDATA[
+function set(color, state) {
+    var elt = document.getElementById(color + "." + state);
+    elt.setAttribute("fill", "green");
+}
+
+function onDone() {
+    if (!(regardTestInstance == null)) {
+        regardTestInstance.scriptDone();   
+    } else {
+        alert("This button only works when run in the regard framework");
+    }
+}
+    ]]></script>
+
+    <g fill="red" stroke="black" transform="translate(40, 420)">
+        <g transform="translate(0,0)">
+            <rect id="orange.focusin" width="20" height="20" />
+            <rect id="orange.focusout" x="25" width="20" height="20" />
+            <rect id="orange.activate" x="50" width="20" height="20" />
+        </g>
+
+        <g transform="translate(75,0)">
+            <rect id="crimson.focusin" width="20" height="20" />
+            <rect id="crimson.focusout" x="25" width="20" height="20" />
+            <rect id="crimson.activate" x="50" width="20" height="20" />
+        </g>
+
+        <g transform="translate(150,0)">
+            <rect id="gold.focusin" width="20" height="20" />
+            <rect id="gold.focusout" x="25" width="20" height="20" />
+            <rect id="gold.activate" x="50" width="20" height="20" />
+        </g>
+
+        <g transform="translate(225,0)">
+            <rect id="aaa.focusin" width="20" height="20" />
+            <rect id="aaa.focusout" x="25" width="20" height="20" />
+            <rect id="aaa.activate" x="50" width="20" height="20" />
+        </g>
+
+        <g transform="translate(300,0)">
+            <rect id="eee.focusin" width="20" height="20" />
+            <rect id="eee.focusout" x="25" width="20" height="20" />
+            <rect id="eee.activate" x="50" width="20" height="20" />
+        </g>
+
+
+    </g>
+    <g id="done" transform="translate(195, 458)" cursor="pointer" onclick="onDone()">
+        <rect rx="5" ry="5" width="60" height="25" fill="#eeeeee" stroke="black" />
+        <text x="30" y="18" font-size="14" font-weight="bold" text-anchor="middle">Done</text>
+    </g>
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-interactivity/keyEvents.svg 
b/tests/data/svg/batik/tests/spec/ignore-interactivity/keyEvents.svg
new file mode 100644
index 0000000..fbc1e21
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-interactivity/keyEvents.svg
@@ -0,0 +1,114 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests support for the DOMFocusIn, DOMFocusOut, DOMActivate                -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @author vincent hardy sun com                                             -->
+<!-- @version $Id: keyEvents.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <text class="title" x="50%" y="50">KeyEvents test<tspan x="50%" dy="1.3em">(type an upper case 'A' on 
each color)</tspan></text>
+
+<g id="body-content">
+
+<rect onkeypress="set('orange', 'keypress')" onkeydown="set('orange', 'keydown')" onkeyup="set('orange', 
'keypress')"
+      x="100" y="100" width="100" height="100" style="fill:orange" />
+
+<rect onkeypress="set('crimson', 'keypress')" onkeydown="set('crimson', 'keydown')" onkeyup="set('crimson', 
'keypress')"
+      x="250" y="100" width="100" height="100" style="fill:crimson" />
+
+<rect onkeypress="set('gold', 'keypress')" onkeydown="set('gold', 'keydown')" onkeyup="set('gold', 
'keypress')"
+      x="100" y="250" width="100" height="100" style="fill:gold" />
+
+<rect onkeypress="set('aaa', 'keypress')" onkeydown="set('aaa', 'keydown')" onkeyup="set('aaa', 'keypress')"
+      x="250" y="250" width="100" height="100" style="fill:#aaa" />
+
+<circle onkeypress="set('eee', 'keypress')" onkeydown="set('eee', 'keydown')" onkeyup="set('eee', 
'keypress')"
+        cx="225" cy="225" r="75" style="fill:#eee" />
+
+</g>
+
+    <script type="text/ecmascript"><![CDATA[
+function set(color, state) {
+    var elt = document.getElementById(color + "." + state);
+    elt.setAttribute("fill", "green");
+}
+
+function onDone() {
+    if (!(regardTestInstance == null)) {
+        regardTestInstance.scriptDone();   
+    } else {
+        alert("This button only works when run in the regard framework");
+    }
+}
+    ]]></script>
+
+    <g fill="red" stroke="black" transform="translate(40, 420)">
+        <g transform="translate(0,0)">
+            <rect id="orange.keypress" width="20" height="20" />
+            <rect id="orange.keydown" x="25" width="20" height="20" />
+            <rect id="orange.keyup" x="50" width="20" height="20" />
+        </g>
+
+        <g transform="translate(75,0)">
+            <rect id="crimson.keypress" width="20" height="20" />
+            <rect id="crimson.keydown" x="25" width="20" height="20" />
+            <rect id="crimson.keyup" x="50" width="20" height="20" />
+        </g>
+
+        <g transform="translate(150,0)">
+            <rect id="gold.keypress" width="20" height="20" />
+            <rect id="gold.keydown" x="25" width="20" height="20" />
+            <rect id="gold.keyup" x="50" width="20" height="20" />
+        </g>
+
+        <g transform="translate(225,0)">
+            <rect id="aaa.keypress" width="20" height="20" />
+            <rect id="aaa.keydown" x="25" width="20" height="20" />
+            <rect id="aaa.keyup" x="50" width="20" height="20" />
+        </g>
+
+        <g transform="translate(300,0)">
+            <rect id="eee.keypress" width="20" height="20" />
+            <rect id="eee.keydown" x="25" width="20" height="20" />
+            <rect id="eee.keyup" x="50" width="20" height="20" />
+        </g>
+
+
+    </g>
+
+    <g id="done" transform="translate(195, 458)" cursor="pointer" onclick="onDone()">
+        <rect rx="5" ry="5" width="60" height="25" fill="#eeeeee" stroke="black" />
+        <text x="30" y="18" font-size="14" font-weight="bold" text-anchor="middle">Done</text>
+    </g>
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-interactivity/keyEvents2.svg 
b/tests/data/svg/batik/tests/spec/ignore-interactivity/keyEvents2.svg
new file mode 100644
index 0000000..0ed2ccb
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-interactivity/keyEvents2.svg
@@ -0,0 +1,620 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Traces the DOM_VK_* values on keydown events                              -->
+<!--                                                                           -->
+<!-- @author vincent hardy sun com                                             -->
+<!-- @version $Id: keyEvents2.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <rect x="0" y="0" width="100%" height="100%" fill="white"
+          onkeydown="traceKeyCode(evt)" />
+
+    <text class="title" x="50%" y="50">KeyEvents test: DOM_VK_* values</text>
+
+  <script type="text/ecmascript"><![CDATA[
+
+var traceText = document.createTextNode("");
+var trace = document.getElementById('trace');
+trace.appendChild(traceText);
+
+function traceKeyCode(evt) {
+    var keyCode = evt.keyCode;
+    var keyCodeStr = "";
+
+    switch (keyCode) {
+        case 0x30:
+            keyCodeStr = "DOM_VK_0"; break;
+
+        case 0x31:
+            keyCodeStr = "DOM_VK_1"; break;
+
+        case 0x32:
+            keyCodeStr = "DOM_VK_2"; break;
+
+        case 0x33:
+            keyCodeStr = "DOM_VK_3"; break;
+
+        case 0x34:
+            keyCodeStr = "DOM_VK_4"; break;
+
+        case 0x35:
+            keyCodeStr = "DOM_VK_5"; break;
+
+        case 0x36:
+            keyCodeStr = "DOM_VK_6"; break;
+
+        case 0x37:
+            keyCodeStr = "DOM_VK_7"; break;
+
+        case 0x38:
+            keyCodeStr = "DOM_VK_8"; break;
+
+        case 0x39:
+            keyCodeStr = "DOM_VK_9"; break;
+
+        case 0x41:
+            keyCodeStr = "DOM_VK_A"; break;
+
+        case 0x1E:
+            keyCodeStr = "DOM_VK_ACCEPT"; break;
+
+        case 0x6B:
+            keyCodeStr = "DOM_VK_ADD"; break;
+
+        case 0xFFC9:
+            keyCodeStr = "DOM_VK_AGAIN"; break;
+
+        case 0x0100:
+            keyCodeStr = "DOM_VK_ALL_CANDIDATES"; break;
+
+        case 0x00F0:
+            keyCodeStr = "DOM_VK_ALPHANUMERIC"; break;
+
+        case 0x12:
+            keyCodeStr = "DOM_VK_ALT"; break;
+
+        case 0xFF7E:
+            keyCodeStr = "DOM_VK_ALT_GRAPH"; break;
+
+        case 0x96:
+            keyCodeStr = "DOM_VK_AMPERSAND"; break;
+
+        case 0x97:
+            keyCodeStr = "DOM_VK_ASTERISK"; break;
+
+        case 0x0200:
+            keyCodeStr = "DOM_VK_AT"; break;
+
+        case 0x42:
+            keyCodeStr = "DOM_VK_B"; break;
+
+        case 0xC0:
+            keyCodeStr = "DOM_VK_BACK_QUOTE"; break;
+
+        case 0x5C:
+            keyCodeStr = "DOM_VK_BACK_SLASH"; break;
+
+        case 0x08:
+            keyCodeStr = "DOM_VK_BACK_SPACE"; break;
+
+        case 0xA1:
+            keyCodeStr = "DOM_VK_BRACELEFT"; break;
+
+        case 0xA2:
+            keyCodeStr = "DOM_VK_BRACERIGHT"; break;
+
+        case 0x43:
+            keyCodeStr = "DOM_VK_C"; break;
+
+        case 0x03:
+            keyCodeStr = "DOM_VK_CANCEL"; break;
+
+        case 0x14:
+            keyCodeStr = "DOM_VK_CAPS_LOCK"; break;
+
+        case 0x0202:
+            keyCodeStr = "DOM_VK_CIRCUMFLEX"; break;
+
+        case 0x0C:
+            keyCodeStr = "DOM_VK_CLEAR"; break;
+
+        case 0x5D:
+            keyCodeStr = "DOM_VK_CLOSE_BRACKET"; break;
+
+        case 0x0102:
+            keyCodeStr = "DOM_VK_CODE_INPUT"; break;
+
+        case 0x0201:
+            keyCodeStr = "DOM_VK_COLON"; break;
+
+        case 0x2C:
+            keyCodeStr = "DOM_VK_COMMA"; break;
+
+        case 0xFF20:
+            keyCodeStr = "DOM_VK_COMPOSE"; break;
+
+        case 0x11:
+            keyCodeStr = "DOM_VK_CONTROL"; break;
+
+        case 0x1C:
+            keyCodeStr = "DOM_VK_CONVERT"; break;
+
+        case 0xFFCD:
+            keyCodeStr = "DOM_VK_COPY"; break;
+
+        case 0xFFD1:
+            keyCodeStr = "DOM_VK_CUT"; break;
+
+        case 0x44:
+            keyCodeStr = "DOM_VK_D"; break;
+
+        case 0x86:
+            keyCodeStr = "DOM_VK_DEAD_ABOVEDOT"; break;
+
+        case 0x88:
+            keyCodeStr = "DOM_VK_DEAD_ABOVERING"; break;
+
+        case 0x81:
+            keyCodeStr = "DOM_VK_DEAD_ACUTE"; break;
+
+        case 0x85:
+            keyCodeStr = "DOM_VK_DEAD_BREVE"; break;
+
+        case 0x8A:
+            keyCodeStr = "DOM_VK_DEAD_CARON"; break;
+
+        case 0x8B:
+            keyCodeStr = "DOM_VK_DEAD_CEDILLA"; break;
+
+        case 0x82:
+            keyCodeStr = "DOM_VK_DEAD_CIRCUMFLEX"; break;
+
+        case 0x87:
+            keyCodeStr = "DOM_VK_DEAD_DIAERESIS"; break;
+
+        case 0x89:
+            keyCodeStr = "DOM_VK_DEAD_DOUBLEACUTE"; break;
+
+        case 0x80:
+            keyCodeStr = "DOM_VK_DEAD_GRAVE"; break;
+
+        case 0x8D:
+            keyCodeStr = "DOM_VK_DEAD_IOTA"; break;
+
+        case 0x84:
+            keyCodeStr = "DOM_VK_DEAD_MACRON"; break;
+
+        case 0x8C:
+            keyCodeStr = "DOM_VK_DEAD_OGONEK"; break;
+
+        case 0x8F:
+            keyCodeStr = "DOM_VK_DEAD_SEMIVOICED_SOUND"; break;
+
+        case 0x83:
+            keyCodeStr = "DOM_VK_DEAD_TILDE"; break;
+
+        case 0x8E:
+            keyCodeStr = "DOM_VK_DEAD_VOICED_SOUND"; break;
+
+        case 0x6E:
+            keyCodeStr = "DOM_VK_DECIMAL"; break;
+
+        case 0x7F:
+            keyCodeStr = "DOM_VK_DELETE"; break;
+
+        case 0x6F:
+            keyCodeStr = "DOM_VK_DIVIDE"; break;
+
+        case 0x0203:
+            keyCodeStr = "DOM_VK_DOLLAR"; break;
+
+        case 0x28:
+            keyCodeStr = "DOM_VK_DOWN"; break;
+
+        case 0x45:
+            keyCodeStr = "DOM_VK_E"; break;
+
+        case 0x23:
+            keyCodeStr = "DOM_VK_END"; break;
+
+        case 0x0D:
+            keyCodeStr = "DOM_VK_ENTER"; break;
+
+        case 0x3D:
+            keyCodeStr = "DOM_VK_EQUALS"; break;
+
+        case 0x1B:
+            keyCodeStr = "DOM_VK_ESCAPE"; break;
+
+        case 0x0204:
+            keyCodeStr = "DOM_VK_EURO_SIGN"; break;
+
+        case 0x0205:
+            keyCodeStr = "DOM_VK_EXCLAMATION_MARK"; break;
+
+        case 0x46:
+            keyCodeStr = "DOM_VK_F"; break;
+
+        case 0x70:
+            keyCodeStr = "DOM_VK_F1"; break;
+
+        case 0x79:
+            keyCodeStr = "DOM_VK_F10"; break;
+
+        case 0x7A:
+            keyCodeStr = "DOM_VK_F11"; break;
+
+        case 0x7B:
+            keyCodeStr = "DOM_VK_F12"; break;
+
+        case 0xF000:
+            keyCodeStr = "DOM_VK_F13"; break;
+
+        case 0xF001:
+            keyCodeStr = "DOM_VK_F14"; break;
+
+        case 0xF002:
+            keyCodeStr = "DOM_VK_F15"; break;
+
+        case 0xF003:
+            keyCodeStr = "DOM_VK_F16"; break;
+
+        case 0xF004:
+            keyCodeStr = "DOM_VK_F17"; break;
+
+        case 0xF005:
+            keyCodeStr = "DOM_VK_F18"; break;
+
+        case 0xF006:
+            keyCodeStr = "DOM_VK_F19"; break;
+
+        case 0x71:
+            keyCodeStr = "DOM_VK_F2"; break;
+
+        case 0xF007:
+            keyCodeStr = "DOM_VK_F20"; break;
+
+        case 0xF008:
+            keyCodeStr = "DOM_VK_F21"; break;
+
+        case 0xF009:
+            keyCodeStr = "DOM_VK_F22"; break;
+
+        case 0xF00A:
+            keyCodeStr = "DOM_VK_F23"; break;
+
+        case 0xF00B:
+            keyCodeStr = "DOM_VK_F24"; break;
+
+        case 0x72:
+            keyCodeStr = "DOM_VK_F3"; break;
+
+        case 0x73:
+            keyCodeStr = "DOM_VK_F4"; break;
+
+        case 0x74:
+            keyCodeStr = "DOM_VK_F5"; break;
+
+        case 0x75:
+            keyCodeStr = "DOM_VK_F6"; break;
+
+        case 0x76:
+            keyCodeStr = "DOM_VK_F7"; break;
+
+        case 0x77:
+            keyCodeStr = "DOM_VK_F8"; break;
+
+        case 0x78:
+            keyCodeStr = "DOM_VK_F9"; break;
+
+        case 0x18:
+            keyCodeStr = "DOM_VK_FINAL"; break;
+
+        case 0xFFD0:
+            keyCodeStr = "DOM_VK_FIND"; break;
+
+        case 0x00F3:
+            keyCodeStr = "DOM_VK_FULL_WIDTH"; break;
+
+        case 0x47:
+            keyCodeStr = "DOM_VK_G"; break;
+
+        case 0xA0:
+            keyCodeStr = "DOM_VK_GREATER"; break;
+
+        case 0x48:
+            keyCodeStr = "DOM_VK_H"; break;
+
+        case 0x00F4:
+            keyCodeStr = "DOM_VK_HALF_WIDTH"; break;
+
+        case 0x9C:
+            keyCodeStr = "DOM_VK_HELP"; break;
+
+        case 0x00F2:
+            keyCodeStr = "DOM_VK_HIRAGANA"; break;
+
+        case 0x24:
+            keyCodeStr = "DOM_VK_HOME"; break;
+
+        case 0x49:
+            keyCodeStr = "DOM_VK_I"; break;
+
+        case 0x9B:
+            keyCodeStr = "DOM_VK_INSERT"; break;
+
+        case 0x0206:
+            keyCodeStr = "DOM_VK_INVERTED_EXCLAMATION_MARK"; break;
+
+        case 0x4A:
+            keyCodeStr = "DOM_VK_J"; break;
+
+        case 0x0104:
+            keyCodeStr = "DOM_VK_JAPANESE_HIRAGANA"; break;
+
+        case 0x0103:
+            keyCodeStr = "DOM_VK_JAPANESE_KATAKANA"; break;
+
+        case 0x0105:
+            keyCodeStr = "DOM_VK_JAPANESE_ROMAN"; break;
+
+        case 0x4B:
+            keyCodeStr = "DOM_VK_K"; break;
+
+        case 0x15:
+            keyCodeStr = "DOM_VK_KANA"; break;
+
+        case 0x19:
+            keyCodeStr = "DOM_VK_KANJI"; break;
+
+        case 0x00F1:
+            keyCodeStr = "DOM_VK_KATAKANA"; break;
+
+        case 0xE1:
+            keyCodeStr = "DOM_VK_KP_DOWN"; break;
+
+        case 0xE2:
+            keyCodeStr = "DOM_VK_KP_LEFT"; break;
+
+        case 0xE3:
+            keyCodeStr = "DOM_VK_KP_RIGHT"; break;
+
+        case 0xE0:
+            keyCodeStr = "DOM_VK_KP_UP"; break;
+
+        case 0x4C:
+            keyCodeStr = "DOM_VK_L"; break;
+
+        case 0x25:
+            keyCodeStr = "DOM_VK_LEFT"; break;
+
+        case 0x0207:
+            keyCodeStr = "DOM_VK_LEFT_PARENTHESIS"; break;
+
+        case 0x99:
+            keyCodeStr = "DOM_VK_LESS"; break;
+
+        case 0x4D:
+            keyCodeStr = "DOM_VK_M"; break;
+
+        case 0x9D:
+            keyCodeStr = "DOM_VK_META"; break;
+
+        case 0x2D:
+            keyCodeStr = "DOM_VK_MINUS"; break;
+
+        case 0x1F:
+            keyCodeStr = "DOM_VK_MODECHANGE"; break;
+
+        case 0x6A:
+            keyCodeStr = "DOM_VK_MULTIPLY"; break;
+
+        case 0x4E:
+            keyCodeStr = "DOM_VK_N"; break;
+
+        case 0x1D:
+            keyCodeStr = "DOM_VK_NONCONVERT"; break;
+
+        case 0x90:
+            keyCodeStr = "DOM_VK_NUM_LOCK"; break;
+
+        case 0x0208:
+            keyCodeStr = "DOM_VK_NUMBER_SIGN"; break;
+
+        case 0x60:
+            keyCodeStr = "DOM_VK_NUMPAD0"; break;
+
+        case 0x61:
+            keyCodeStr = "DOM_VK_NUMPAD1"; break;
+
+        case 0x62:
+            keyCodeStr = "DOM_VK_NUMPAD2"; break;
+
+        case 0x63:
+            keyCodeStr = "DOM_VK_NUMPAD3"; break;
+
+        case 0x64:
+            keyCodeStr = "DOM_VK_NUMPAD4"; break;
+
+        case 0x65:
+            keyCodeStr = "DOM_VK_NUMPAD5"; break;
+
+        case 0x66:
+            keyCodeStr = "DOM_VK_NUMPAD6"; break;
+
+        case 0x67:
+            keyCodeStr = "DOM_VK_NUMPAD7"; break;
+
+        case 0x68:
+            keyCodeStr = "DOM_VK_NUMPAD8"; break;
+
+        case 0x69:
+            keyCodeStr = "DOM_VK_NUMPAD9"; break;
+
+        case 0x4F:
+            keyCodeStr = "DOM_VK_O"; break;
+
+        case 0x5B:
+            keyCodeStr = "DOM_VK_OPEN_BRACKET"; break;
+
+        case 0x50:
+            keyCodeStr = "DOM_VK_P"; break;
+
+        case 0x22:
+            keyCodeStr = "DOM_VK_PAGE_DOWN"; break;
+
+        case 0x21:
+            keyCodeStr = "DOM_VK_PAGE_UP"; break;
+
+        case 0xFFCF:
+            keyCodeStr = "DOM_VK_PASTE"; break;
+
+        case 0x13:
+            keyCodeStr = "DOM_VK_PAUSE"; break;
+
+        case 0x2E:
+            keyCodeStr = "DOM_VK_PERIOD"; break;
+
+        case 0x0209:
+            keyCodeStr = "DOM_VK_PLUS"; break;
+
+        case 0x0101:
+            keyCodeStr = "DOM_VK_PREVIOUS_CANDIDATE"; break;
+
+        case 0x9A:
+            keyCodeStr = "DOM_VK_PRINTSCREEN"; break;
+
+        case 0xFFCA:
+            keyCodeStr = "DOM_VK_PROPS"; break;
+
+        case 0x51:
+            keyCodeStr = "DOM_VK_Q"; break;
+
+        case 0xDE:
+            keyCodeStr = "DOM_VK_QUOTE"; break;
+
+        case 0x98:
+            keyCodeStr = "DOM_VK_QUOTEDBL"; break;
+
+        case 0x52:
+            keyCodeStr = "DOM_VK_R"; break;
+
+        case 0x27:
+            keyCodeStr = "DOM_VK_RIGHT"; break;
+
+        case 0x020A:
+            keyCodeStr = "DOM_VK_RIGHT_PARENTHESIS"; break;
+
+        case 0x00F5:
+            keyCodeStr = "DOM_VK_ROMAN_CHARACTERS"; break;
+
+        case 0x53:
+            keyCodeStr = "DOM_VK_S"; break;
+
+        case 0x91:
+            keyCodeStr = "DOM_VK_SCROLL_LOCK"; break;
+
+        case 0x3B:
+            keyCodeStr = "DOM_VK_SEMICOLON"; break;
+
+        case 0x6C:
+            keyCodeStr = "DOM_VK_SEPARATER"; break;
+
+        case 0x10:
+            keyCodeStr = "DOM_VK_SHIFT"; break;
+
+        case 0x2F:
+            keyCodeStr = "DOM_VK_SLASH"; break;
+
+        case 0x20:
+            keyCodeStr = "DOM_VK_SPACE"; break;
+
+        case 0xFFC8:
+            keyCodeStr = "DOM_VK_STOP"; break;
+
+        case 0x6D:
+            keyCodeStr = "DOM_VK_SUBTRACT"; break;
+
+        case 0x54:
+            keyCodeStr = "DOM_VK_T"; break;
+
+        case 0x09:
+            keyCodeStr = "DOM_VK_TAB"; break;
+
+        case 0x55:
+            keyCodeStr = "DOM_VK_U"; break;
+
+        case 0x0:
+            keyCodeStr = "DOM_VK_UNDEFINED"; break;
+
+        case 0x020B:
+            keyCodeStr = "DOM_VK_UNDERSCORE"; break;
+
+        case 0xFFCB:
+            keyCodeStr = "DOM_VK_UNDO"; break;
+
+        case 0x26:
+            keyCodeStr = "DOM_VK_UP"; break;
+
+        case 0x56:
+            keyCodeStr = "DOM_VK_V"; break;
+
+        case 0x57:
+            keyCodeStr = "DOM_VK_W"; break;
+
+        case 0x58:
+            keyCodeStr = "DOM_VK_X"; break;
+
+        case 0x59:
+            keyCodeStr = "DOM_VK_Y"; break;
+
+        case 0x5A:
+            keyCodeStr = "DOM_VK_Z"; break;
+
+
+        default: 
+            keyCodeStr = "UNDEFINED";
+    }
+
+    traceText.setData(keyCodeStr);
+}
+
+  ]]></script>
+
+<g id="body-content" >
+
+    <text x="50%" y="200" text-anchor="middle">Type text over the canvas to see the code of the last key 
pressed</text>
+
+    <text id="trace" x="50%" y="250" text-anchor="middle">Last key pressed: </text>
+
+</g>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-interactivity/pointerEvents.svg 
b/tests/data/svg/batik/tests/spec/ignore-interactivity/pointerEvents.svg
new file mode 100644
index 0000000..04b9c28
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-interactivity/pointerEvents.svg
@@ -0,0 +1,1612 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" 
+          "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+
+<!-- ====================================================================== -->
+<!-- Tests support for pointer-events.                                      -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: pointerEvents.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg id="svg-root" width="450" height="500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; >
+
+   <title id="test-title">Test 'pointer-events' property</title>
+   <text x="50%" y="30" class="title">Test 'pointer-events' property</text>
+
+   <script type="text/ecmascript"><![CDATA[
+    function getFillFill(e) {
+       var g = e.parentNode;
+       var lc = g.lastChild;
+       while (lc) {
+          if (lc.nodeName == "rect") break;
+          lc = lc.previousSibling;
+       }
+       return lc;
+    }
+
+    function getFillStroke(e) {
+       var f = getFillFill(e);
+       if (f) f = f.previousSibling;
+       while (f) {
+          if (f.nodeName == "rect") break;
+          f = f.previousSibling;
+       }
+       return f;
+    }
+
+    function getStrokeFill(e) {
+       var f = getFillStroke(e);
+       if (f) f = f.previousSibling;
+       while (f) {
+          if (f.nodeName == "rect") break;
+          f = f.previousSibling;
+       }
+       return f;
+    }
+
+    function getStrokeStroke(e) {
+       var f = getStrokeFill(e);
+       if (f) f = f.previousSibling;
+       while (f) {
+          if (f.nodeName == "rect") break;
+          f = f.previousSibling;
+       }
+       return f;
+    }
+
+    function setFillFill(evt, color) {
+        var f = getFillFill(evt.target);
+        f.setAttribute("fill", color);
+        evt.stopPropagation();
+    }
+
+    function setFillStroke(evt, color) {
+        var f = getFillStroke(evt.target);
+        f.setAttribute("fill", color);
+        evt.stopPropagation();
+    }
+    function setStrokeStroke(evt, color) {
+        var f = getStrokeStroke(evt.target);
+        f.setAttribute("fill", color);
+        evt.stopPropagation();
+    }
+
+    function setStrokeFill(evt, color) {
+        var f = getStrokeFill(evt.target);
+        f.setAttribute("fill", color);
+        evt.stopPropagation();
+    }
+
+    function onDone() {
+      try {
+          regardTestInstance.scriptDone();   
+      } catch (e) {
+          alert("This button only works when run in the regard framework");
+      } 
+    }
+    function regardStart () {
+       document.getElementById("done").setAttribute("visibility", "visible");
+    }
+   ]]></script>
+
+  <g id="done" transform="translate(380, 10)" 
+     cursor="pointer" onclick="onDone()" visibility="hidden" >
+    <rect rx="5" ry="5" width="60" height="25" fill="#EEE" stroke="#000" />
+    <text x="30" y="18" font-size="14" 
+      font-weight="bold" text-anchor="middle">Done</text>
+    </g>
+
+  <g id="content" transform="translate(-5,-5)">
+    <g id="painted" pointer-events="painted" transform="translate(0,50)">
+      <rect x="10" y="0" width="440" height="50" fill="#DDD" stroke="#000"/>
+      <line x1="100" y1="0" x2="100" y2="50" stroke="#000" />
+      <line x1="170" y1="0" x2="170" y2="50" stroke="#000" />
+      <line x1="240" y1="0" x2="240" y2="50" stroke="#000" />
+      <line x1="310" y1="0" x2="310" y2="50" stroke="#000" />
+      <line x1="380" y1="0" x2="380" y2="50" stroke="#000" />
+      <text x="20" y="30">Painted</text>
+
+      <g transform="translate(100,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(170,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(240,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(310,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(380,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+    </g>
+
+    <g id="fill" pointer-events="fill" transform="translate(0,100)">
+      <rect x="10" y="0" width="440" height="50" fill="#CCC" stroke="#000"/>
+      <line x1="100" y1="0" x2="100" y2="50" stroke="#000" />
+      <line x1="170" y1="0" x2="170" y2="50" stroke="#000" />
+      <line x1="240" y1="0" x2="240" y2="50" stroke="#000" />
+      <line x1="310" y1="0" x2="310" y2="50" stroke="#000" />
+      <line x1="380" y1="0" x2="380" y2="50" stroke="#000" />
+      <text x="20" y="30">Fill</text>
+
+      <g transform="translate(100,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(170,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(240,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(310,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(380,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+    </g>
+
+    <g id="stroke" pointer-events="stroke" transform="translate(0,150)">
+      <rect x="10" y="0" width="440" height="50" fill="#DDD" stroke="#000"/>
+      <line x1="100" y1="0" x2="100" y2="50" stroke="#000" />
+      <line x1="170" y1="0" x2="170" y2="50" stroke="#000" />
+      <line x1="240" y1="0" x2="240" y2="50" stroke="#000" />
+      <line x1="310" y1="0" x2="310" y2="50" stroke="#000" />
+      <line x1="380" y1="0" x2="380" y2="50" stroke="#000" />
+      <text x="20" y="30">Stroke</text>
+
+      <g transform="translate(100,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(170,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(240,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(310,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(380,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+    </g>
+
+    <g id="all" pointer-events="all" transform="translate(0,200)">
+      <rect x="10" y="0" width="440" height="50" fill="#CCC" stroke="#000"/>
+      <line x1="100" y1="0" x2="100" y2="50" stroke="#000" />
+      <line x1="170" y1="0" x2="170" y2="50" stroke="#000" />
+      <line x1="240" y1="0" x2="240" y2="50" stroke="#000" />
+      <line x1="310" y1="0" x2="310" y2="50" stroke="#000" />
+      <line x1="380" y1="0" x2="380" y2="50" stroke="#000" />
+      <text x="20" y="30">All</text>
+
+      <g transform="translate(100,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(170,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(240,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(310,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(380,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+    </g>
+
+    <g id="none" pointer-events="none" transform="translate(0,250)">
+      <rect x="10" y="0" width="440" height="50" fill="#DDD" stroke="#000"/>
+      <line x1="100" y1="0" x2="100" y2="50" stroke="#000" />
+      <line x1="170" y1="0" x2="170" y2="50" stroke="#000" />
+      <line x1="240" y1="0" x2="240" y2="50" stroke="#000" />
+      <line x1="310" y1="0" x2="310" y2="50" stroke="#000" />
+      <line x1="380" y1="0" x2="380" y2="50" stroke="#000" />
+      <text x="20" y="30">None</text>
+
+      <g transform="translate(100,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(170,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(240,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(310,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(380,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+    </g>
+
+    <g id="visible" pointer-events="visible" transform="translate(0,300)">
+      <rect x="10" y="0" width="440" height="50" fill="#CCC" stroke="#000"/>
+      <line x1="100" y1="0" x2="100" y2="50" stroke="#000" />
+      <line x1="170" y1="0" x2="170" y2="50" stroke="#000" />
+      <line x1="240" y1="0" x2="240" y2="50" stroke="#000" />
+      <line x1="310" y1="0" x2="310" y2="50" stroke="#000" />
+      <line x1="380" y1="0" x2="380" y2="50" stroke="#000" />
+      <text x="20" y="30">Visible</text>
+
+      <g transform="translate(100,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(170,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(240,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(310,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(380,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+    </g>
+
+    <g id="visiblePainted" pointer-events="visiblePainted" 
+      transform="translate(0,350)">
+      <rect x="10" y="0" width="440" height="50" fill="#DDD" stroke="#000"/>
+      <line x1="100" y1="0" x2="100" y2="50" stroke="#000" />
+      <line x1="170" y1="0" x2="170" y2="50" stroke="#000" />
+      <line x1="240" y1="0" x2="240" y2="50" stroke="#000" />
+      <line x1="310" y1="0" x2="310" y2="50" stroke="#000" />
+      <line x1="380" y1="0" x2="380" y2="50" stroke="#000" />
+      <text x="20" y="30">VisiblePainted</text>
+
+      <g transform="translate(100,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(170,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(240,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(310,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(380,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+    </g>
+
+    <g id="visibleFill" pointer-events="visibleFill" 
+      transform="translate(0,400)">
+      <rect x="10" y="0" width="440" height="50" fill="#CCC" stroke="#000"/>
+      <line x1="100" y1="0" x2="100" y2="50" stroke="#000" />
+      <line x1="170" y1="0" x2="170" y2="50" stroke="#000" />
+      <line x1="240" y1="0" x2="240" y2="50" stroke="#000" />
+      <line x1="310" y1="0" x2="310" y2="50" stroke="#000" />
+      <line x1="380" y1="0" x2="380" y2="50" stroke="#000" />
+      <text x="20" y="30">VisibleFill</text>
+
+      <g transform="translate(100,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(170,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(240,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(310,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(380,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+    </g>
+
+    <g id="visibleStroke" pointer-events="visibleStroke" 
+      transform="translate(0,450)">
+      <rect x="10" y="0" width="440" height="50" fill="#DDD" stroke="#000"/>
+      <line x1="100" y1="0" x2="100" y2="50" stroke="#000" />
+      <line x1="170" y1="0" x2="170" y2="50" stroke="#000" />
+      <line x1="240" y1="0" x2="240" y2="50" stroke="#000" />
+      <line x1="310" y1="0" x2="310" y2="50" stroke="#000" />
+      <line x1="380" y1="0" x2="380" y2="50" stroke="#000" />
+      <text x="20" y="30">VisibleStroke</text>
+
+      <g transform="translate(100,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(170,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(240,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="black" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(310,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" 
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+
+      <g transform="translate(380,0)">
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setStrokeStroke(evt,'crimson')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setStrokeStroke(evt,'gold')"/>
+        <ellipse cx="16" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setStrokeFill(evt,'crimson')"/>
+
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="0"
+          fill="none" stroke="none" pointer-events="fill"
+          onmouseover="setFillFill(evt,'crimson')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="white" stroke="black" visibility="hidden"
+          onmouseover="setFillFill(evt,'gold')"/>
+        <ellipse cx="44" cy="25" rx="10" ry="17.5" stroke-width="5"
+          fill="none" stroke="none" pointer-events="stroke"
+          onmouseover="setFillStroke(evt,'crimson')"/>
+
+        <rect x="60" y="4" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="14" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="26" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect x="60" y="36" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/add.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/add.svg
new file mode 100644
index 0000000..2105fcb
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/add.svg
@@ -0,0 +1,84 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- append child test                                                      -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: add.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>appendChild test 'onload'</title>
+
+    <text x="50%" y="45" class="title">appendChild test 'onload'</text>
+
+    <script type="text/ecmascript">
+
+    var svgNamespaceURI = "http://www.w3.org/2000/svg";;
+
+    function build(evt) {
+        var g = evt.target;
+        var document = g.ownerDocument;
+        var e;
+
+        e = createElement(document, 200, 100, "fill:crimson");
+        g.appendChild(e);
+
+        e = createElement(document, 250, 100, "fill:orange");
+        g.appendChild(e);
+
+        e = createElement(document, 150, 100, "fill:gold");
+        g.insertBefore(e, g.firstChild);
+
+        var ee = createElement(document, 100, 100, "fill:#eee");
+        g.insertBefore(ee, e);
+    }
+
+    function createElement(g, x, y, style) {
+        var e = document.createElementNS(svgNamespaceURI, "rect");
+        e.setAttribute("x", x);
+        e.setAttribute("y", y);
+        e.setAttribute("width", 100);
+        e.setAttribute("height", 100);
+        e.setAttribute("style", style);
+        return e;
+    }
+
+    </script>
+
+    <g onload="build(evt)" id="test-content">
+    </g>
+        <text x="225" y="220" style="text-anchor:middle">constructed using 'onload'</text>
+    <g>
+       <rect x="100" y="300" width="100" height="100" style="fill:#eee"/>
+       <rect x="150" y="300" width="100" height="100" style="fill:gold"/>
+       <rect x="200" y="300" width="100" height="100" style="fill:crimson"/>
+       <rect x="250" y="300" width="100" height="100" style="fill:orange"/>
+    </g>
+        <text x="225" y="420" style="text-anchor:middle">reference</text>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/addDescOnClick.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/addDescOnClick.svg
new file mode 100644
index 0000000..d8a9147
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/addDescOnClick.svg
@@ -0,0 +1,196 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Append/Remove desc/title test                                          -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: addDescOnClick.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>Add Desc element "onClick"</title>
+
+    <text x="50%" y="45" class="title">Add Desc element "onClick"</text>
+
+    <script type="text/ecmascript">
+
+    var svgNamespaceURI = "http://www.w3.org/2000/svg";;
+
+    function addChild(evt, tag) {
+        var r = evt.target;
+        var document = r.ownerDocument;
+        var e = document.createElementNS(svgNamespaceURI, tag);
+        e.appendChild(document.createTextNode("Dynamic: " + tag));
+        r.appendChild(e);
+    }
+
+    var desc  = document.getElementById("foo");
+    var newD = document.createTextNode("Text 1");
+    var oldD = desc.firstChild;
+
+    function toggleDesc() {
+       desc.replaceChild(newD, oldD);
+       var tmp = newD; newD=oldD; oldD=tmp;
+       setTimeout("toggleDesc()", 1000);
+    }
+
+    var title  = document.getElementById("bar");
+    var newT = document.createTextNode("Title 2");
+    var oldT = title.firstChild;
+
+    function toggleTitle() {
+       title.replaceChild(newT, oldT);
+       var tmp = newT; newT=oldT; oldT=tmp;
+       setTimeout("toggleTitle()", 1000);
+    }
+
+    toggleDesc();
+    toggleTitle();
+
+
+    var desc2  = document.getElementById("foo2");
+    var newD2 = document.createTextNode("Text 1");
+    var oldD2 = desc2.firstChild;
+
+    function toggleDesc2() {
+       desc2.removeChild(oldD2);
+       desc2.appendChild(newD2);
+       var tmp = newD2; newD2=oldD2; oldD2=tmp;
+       setTimeout("toggleDesc2()", 1000);
+    }
+
+    var title2  = document.getElementById("bar2");
+    var newT2 = document.createTextNode("Title 2");
+    var oldT2 = title2.firstChild;
+
+    function toggleTitle2() {
+       title2.removeChild(oldT2);
+       title2.appendChild(newT2);
+       var tmp = newT2; newT2=oldT2; oldT2=tmp;
+       setTimeout("toggleTitle2()", 1000);
+    }
+
+    toggleDesc2();
+    toggleTitle2();
+
+    var elT = document.getElementById("title");
+    var tglTitle = elT.firstChild;
+    var elD = document.getElementById("desc");
+    var tglDesc = elD.firstChild;
+
+    function toggleShowTitle() {
+      if (elT.firstChild) 
+         elT.removeChild(tglTitle);
+      else
+         elT.appendChild(tglTitle);
+       setTimeout("toggleShowTitle()", 1000);
+    }
+    function toggleShowDesc() {
+      if (elD.firstChild) 
+         elD.removeChild(tglDesc);
+      else
+         elD.appendChild(tglDesc);
+       setTimeout("toggleShowDesc()", 1000);
+    }
+
+    toggleShowDesc();
+    toggleShowTitle();
+
+    var elT2 = document.getElementById("title2");
+    var tglTitle2 = elT2.firstChild;
+    var elD2 = document.getElementById("desc2");
+    var tglDesc2 = elD2.firstChild;
+
+    function toggleShowTitle2() {
+      if (tglTitle2.parentNode == elT2) 
+         elT2.removeChild(tglTitle2);
+      else
+         elT2.appendChild(tglTitle2);
+       setTimeout("toggleShowTitle2()", 1000);
+    }
+    function toggleShowDesc2() {
+      if (tglDesc2.parentNode == elD2) 
+         elD2.removeChild(tglDesc2);
+      else
+         elD2.appendChild(tglDesc2);
+       setTimeout("toggleShowDesc2()", 1000);
+    }
+
+    toggleShowDesc2();
+    toggleShowTitle2();
+    </script>
+
+    <g>
+       <rect x="30"  y="75" width="75" height="75" style="fill:crimson"
+             onclick="addChild(evt, 'desc')"/>
+
+       <rect x="135" y="75" width="75" height="75" style="fill:gold"
+             onclick="addChild(evt, 'title')"/>
+
+       <rect x="240" y="75" width="75" height="75" style="fill:crimson"
+             onclick="addChild(evt, 'desc')"
+          ><title>Pre Existing Title</title></rect>
+
+       <rect x="345" y="75" width="75" height="75" style="fill:gold"
+             onclick="addChild(evt, 'title')"
+          ><desc>Pre Existing Desc</desc></rect>
+
+
+       <rect id="title" x="30" y="180" width="75" height="75" 
+             style="fill:crimson"><title>Pre Existing Title</title></rect>
+
+       <rect id="desc" x="135" y="180" width="75" height="75" 
+             style="fill:gold"><desc>Pre-existing Desc</desc></rect>
+
+       <rect id="title2" x="240" y="180" width="75" height="75" 
+          style="fill:crimson"><title>Pre Existing Title</title>
+                               <desc>A constant Desc</desc></rect>
+
+       <rect id="desc2" x="345" y="180" width="75" height="75" 
+             style="fill:gold"><desc>Pre-existing Desc</desc>
+                               <title>A constant title</title></rect>
+
+
+       <rect x="30" y="285" width="75" height="75" style="fill:crimson"
+          ><title>Pre Existing Title</title
+          ><desc id="foo">Text 2</desc></rect>
+
+       <rect x="135" y="285" width="75" height="75" style="fill:gold"
+          ><title id="bar">Title 1</title
+          ><desc >Pre-existing Desc</desc></rect>
+
+       <rect x="240" y="285" width="75" height="75" style="fill:crimson"
+          ><title>Pre Existing Title</title
+          ><desc id="foo2">Text 2</desc></rect>
+
+       <rect x="345" y="285" width="75" height="75" style="fill:gold"
+          ><title id="bar2">Title 1</title
+          ><desc >Pre-existing Desc</desc></rect>
+
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/alert.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/alert.svg
new file mode 100644
index 0000000..622f1cf
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/alert.svg
@@ -0,0 +1,105 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Image element references an SVG file                                      -->
+<!--                                                                           -->
+<!-- @author Thierry Kormann sophia inria fr                                   -->
+<!-- @version $Id: alert.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; 
+    width="450" height="500" viewBox="0 0 450 500" onmouseover="alert('Hello')">
+<title>Alert on mouse events</title>
+
+<defs>
+    <script type="text/ecmascript">
+
+    function showDialog(msg) {
+        alert(msg);
+    }
+
+    </script>
+</defs>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent" onmouseover="alert('Hello')">
+        <text x="225" y="30" class="title">Alert on mouse events</text>
+    </g>
+
+
+    <!-- ########## board ############ -->
+    <g style="stroke:black">
+        <g>
+            <rect x="50" y="60" width="350" height="20" style="fill:#eee"/>
+            <rect x="50" y="80" width="350" height="60" style="fill:none"/>
+        </g>
+        <g transform="translate(0 80)">
+            <rect x="50" y="60" width="350" height="20" style="fill:#eee"/>
+            <rect x="50" y="80" width="350" height="60" style="fill:none"/>
+        </g>
+        <g transform="translate(0 160)">
+            <rect x="50" y="60" width="350" height="20" style="fill:#eee"/>
+            <rect x="50" y="80" width="350" height="60" style="fill:none"/>
+        </g>
+        <line x1="225" y1="60" x2="225" y2="300" />
+    </g>
+    <g style="fill:black; stroke:none; text-anchor:middle; font-size:14">
+        <g>
+            <text x="137.5" y="75">mousedown</text>
+            <text x="312.5" y="75">mouseup</text>
+        </g>
+        <g transform="translate(0 80)">
+            <text x="137.5" y="75">mouseover</text>
+            <text x="312.5" y="75">mouseout</text>
+        </g>
+        <g transform="translate(0 160)">
+            <text x="137.5" y="75">mousemove</text>
+            <text x="312.5" y="75">onclick</text>
+        </g>
+    </g>
+
+    <!-- ########## content ############ -->
+    <g>
+        <circle cx="137.5" cy="110" r="20" style="fill:crimson" onmousedown="showDialog('onmousedown')"/>
+        <circle cx="312.5" cy="110" r="20" style="fill:crimson" onmouseup="showDialog('onmouseup')"/>
+    </g>
+    <g transform="translate(0 80)">
+        <circle cx="137.5" cy="110" r="20" style="fill:crimson" onmouseover="showDialog('onmouseover')"/>
+        <circle cx="312.5" cy="110" r="20" style="fill:crimson" onmouseout="showDialog('onmouseout')"/>
+    </g>
+    <g transform="translate(0 160)">
+        <circle cx="137.5" cy="110" r="20" style="fill:crimson" onmousemove="showDialog('onmousemove')"/>
+        <circle cx="312.5" cy="110" r="20" style="fill:crimson" onclick="showDialog('onclick')"/>
+    </g>
+
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/bbox.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/bbox.svg
new file mode 100644
index 0000000..486dd33
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/bbox.svg
@@ -0,0 +1,403 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+
+<!-- ====================================================================== -->
+<!-- Test of getBBox interface for various elements with various property   -->
+<!-- values (fill, stroke, visibility, display).                            -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: bbox.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     onload="start()">
+  <title>Test getBBox interface</title>
+  <text x="50%" y="45" class="title">Test getBBox interface</text>
+
+  <script type="text/ecmascript"><![CDATA[
+     var svgns = "http://www.w3.org/2000/svg";;
+     var root;
+     var pref       = new Array("n", "v", "d" );
+     var fillStroke = new Array("-", "f", "s", "fs" );
+     var elemT      = new Array("p", "t", "u", "i" );
+     var xLoc       = new Array(35, 115, 195, 275);
+     var yLoc       = 10;
+
+     function start() { 
+       root = document.getRootElement();
+       for (i=0; i<pref.length; i++) {
+         for (j=0; j<fillStroke.length; j++) {
+           for (k=0; k<elemT.length; k++) {
+              doBBox(pref[i]+fillStroke[j]+elemT[k], xLoc[k], yLoc);
+           }
+         }
+       }
+
+      updatePath("u-p");
+      updatePath("ufsp");
+
+      updateText("u-t");
+      updateText("ufst");
+
+      updateG("u-u");
+      updateG("ufsu");
+
+      updateImg("u-i");
+      updateImg("ufsi");
+
+
+     }
+
+     function updatePath(id) {
+       doBBox(id, xLoc[0], yLoc);
+       var elem = root.getElementById(id);
+       elem.setAttribute("d", "M 10,25 c 0,-40 60,20 60,-20z");
+       doBBox(id, xLoc[0], yLoc);
+     }
+
+     function updateText(id) {
+       doBBox(id, xLoc[1], yLoc);
+       var elem = root.getElementById(id);
+       var txt = document.createTextNode("getBBox");
+       elem.replaceChild(txt,elem.firstChild);
+       doBBox(id, xLoc[1], yLoc);
+     }
+
+     function updateG(id) {
+       doBBox(id, xLoc[2], yLoc);
+       var elem = root.getElementById(id);
+       var use  = elem.firstChild;
+       use.setAttribute("x",      "190");
+       use.setAttribute("y",      "5");
+       use.setAttribute("width",  "20");
+       use.setAttribute("height", "20");
+
+       doBBox(id, xLoc[1], yLoc);
+     }
+
+     function updateImg(id) {
+       doBBox(id, xLoc[2], yLoc);
+       var elem = root.getElementById(id);
+       elem.setAttribute("x",      "261");
+       elem.setAttribute("y",      "5");
+       elem.setAttribute("width",  "43");
+       elem.setAttribute("height", "20");
+
+       doBBox(id, xLoc[1], yLoc);
+     }
+
+     function doBBox(id, locX, locY) {
+       var elem = root.getElementById(id);
+       var bbox;
+       if (elem) bbox = elem.getBBox();
+       var rect = document.createElementNS(svgns, "rect");
+       if (!bbox) {
+         // No BBox undisplayed etc...  use small crimson rect.
+         rect.setAttribute("x",      ""+locX);
+         rect.setAttribute("y",      ""+locY);
+         rect.setAttribute("width",  "10");
+         rect.setAttribute("height", "10");
+         rect.setAttribute("fill",   "crimson");
+       } else {
+         rect.setAttribute("x",      ""+bbox.x);
+         rect.setAttribute("y",      ""+bbox.y);
+         rect.setAttribute("width",  ""+bbox.width);
+         rect.setAttribute("height", ""+bbox.height);
+         rect.setAttribute("fill", "none");
+         rect.setAttribute("stroke", "black");
+         rect.setAttribute("stroke-width", "2");
+         rect.setAttribute("stroke-opacity", "0.5");
+       }
+
+       elem.getParentNode().getParentNode().appendChild(rect);
+     }
+    ]]></script>
+  <defs>
+     <symbol id="Batik_Squiggle" viewBox="0 0 540 570">
+        <path id="Batik_Squiggle_Blue" 
+         d="M172,44C137,60,31,135,11,199c-8,27,22,48,44,33
+            C14,306-1,332,0,356c0,14,13,42,44,27c8-4,35-25,52-41
+            c14-1,24-11,42-28c17,14,36,10,52-7c22,2,82-78,44-108
+            c-3-24-30-37-53-18c-6-2-13-1-18,1c22-35,43-82,49-105
+            C219,47,188,36,172,44z"/>
+        <path id="Batik_Squiggle_Red" 
+         d="M400,0c-18,3-49,31-49,31c-29,23-43,58-28,95
+            c-13,14-29,44-29,67c0,28,20,52,50,29c7,8,21,16,37,5
+            c-5,29,3,48,26,49c1,10,13,31,36,17c16-10,58-39,79-56
+            c25-23,25-94-18-89c33-59-3-96-27-84c-10,4-46,25-52,30
+            c-1-7-5-12-11-14C436,45,436-5,401,0z"/>
+        <path id="Batik_Squiggle_Green"
+         d="M275,353c-46,12-88,43-114,91c-9,16,6,37,25,33
+            c-14,24-40,67-15,81c28,16,52-8,60-15c18,21,50,10,81-17
+            c41,14,68-2,103-53c8-12,30-43,30-65c0-16-15-30-35-21
+            c-1-12-9-38-53-19c-10-6-31-5-54,17
+            C308,375,300,347,275,353z"/>
+     </symbol>
+  </defs>
+
+  <g id="test-content" transform="translate(0, 60)" >
+     <g> <!-- The test grid -->
+        <g stroke="#000">
+           <rect x="10" y="0"   width="20" height="120" fill="#eee"/>
+           <rect x="10" y="120" width="20" height="120" fill="#ddd"/>
+           <rect x="10" y="240" width="20" height="120" fill="#eee"/>
+           <rect x="10" y="360" width="20" height="60" fill="#ddd"/>
+
+
+           <rect x="30" y="0"  width="410" height="30" fill="#f8f8f8"/>
+           <rect x="30" y="30" width="410" height="30" fill="#f0f0f0"/>
+           <rect x="30" y="60" width="410" height="30" fill="#f8f8f8"/>
+           <rect x="30" y="90" width="410" height="30" fill="#f0f0f0"/>
+
+           <rect x="30" y="120" width="410" height="30" fill="#e0e0e0"/>
+           <rect x="30" y="150" width="410" height="30" fill="#d0d0d0"/>
+           <rect x="30" y="180" width="410" height="30" fill="#e0e0e0"/>
+           <rect x="30" y="210" width="410" height="30" fill="#d0d0d0"/>
+
+           <rect x="30" y="240" width="410" height="30" fill="#f8f8f8"/>
+           <rect x="30" y="270" width="410" height="30" fill="#f0f0f0"/>
+           <rect x="30" y="300" width="410" height="30" fill="#f8f8f8"/>
+           <rect x="30" y="330" width="410" height="30" fill="#f0f0f0"/>
+
+           <rect x="30" y="360" width="410" height="30" fill="#e0e0e0"/>
+           <rect x="30" y="390" width="410" height="30" fill="#d0d0d0"/>
+
+           <line x1="120" x2="120" y1="0" y2="420"/>
+           <line x1="200" x2="200" y1="0" y2="420"/>
+           <line x1="280" x2="280" y1="0" y2="420"/>
+           <line x1="360" x2="360" y1="0" y2="420"/>
+           <line x1="10" x2="440" y1="120" y2="120" stroke-width="3"/>
+           <line x1="10" x2="440" y1="240" y2="240" stroke-width="3"/>
+           <line x1="10" x2="440" y1="360" y2="360" stroke-width="3"/>
+        </g>
+        <text transform="rotate(-90,25,60)" x="25" y="60" text-anchor="middle">Normal</text>
+        <text transform="rotate(-90,25,180)" x="25" y="180" text-anchor="middle">visiblilty="hidden"</text>
+        <text transform="rotate(-90,25,300)" x="25" y="300" text-anchor="middle">display="none"</text>
+        <text transform="rotate(-90,25,390)" x="25" y="390" text-anchor="middle">Update</text>
+        <g font-size="15">
+        <text x="110" y="22" text-anchor="end">none</text>
+        <text x="110" y="52" text-anchor="end">fill</text>
+        <text x="110" y="82" text-anchor="end">stroke</text>
+        <text x="110" y="112" text-anchor="end">fill+stroke</text>
+
+        <text x="110" y="142" text-anchor="end">none</text>
+        <text x="110" y="172" text-anchor="end">fill</text>
+        <text x="110" y="202" text-anchor="end">stroke</text>
+        <text x="110" y="232" text-anchor="end">fill+stroke</text>
+
+        <text x="110" y="262" text-anchor="end">none</text>
+        <text x="110" y="292" text-anchor="end">fill</text>
+        <text x="110" y="322" text-anchor="end">stroke</text>
+        <text x="110" y="352" text-anchor="end">fill+stroke</text>
+
+        <text x="110" y="382" text-anchor="end">none</text>
+        <text x="110" y="412" text-anchor="end">fill+stroke</text>
+        </g>
+     </g>
+
+     <g font-size="18" text-anchor="middle">
+        <g transform="translate(120,0)">
+           <g fill="none" stroke="none" stroke-width="3">
+              <path id="n-p" d="M 10,25 c 0,-40 60,20 60,-20z"/>
+              <text id="n-t" x="120" y="20" stroke-width=".5">getBBox</text>
+              <g id="n-u">
+                <use x="190" y="5" width="20" height="20" stroke-width="20"
+                     xlink:href="#Batik_Squiggle"/>
+              </g>
+              <image id="n-i" x="261" y="5" width="43" height="20"
+                     xlink:href="../../resources/images/tde.jpg"/>
+           </g>
+        </g>
+        <g transform="translate(120,30)">
+           <g fill="crimson" stroke="none" stroke-width="3">
+              <path id="nfp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
+              <text id="nft" x="120" y="20" stroke-width=".5">getBBox</text>
+              <g id="nfu">
+                <use x="190" y="5" width="20" height="20" stroke-width="20"
+                     xlink:href="#Batik_Squiggle"/>
+              </g>
+              <image id="nfi" x="261" y="5" width="43" height="20"
+                     xlink:href="../../resources/images/tde.jpg"/>
+           </g>
+        </g>
+        <g transform="translate(120,60)">
+           <g fill="none" stroke="gold" stroke-width="3" >
+              <path id="nsp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
+              <text id="nst" x="120" y="20" stroke-width=".5">getBBox</text>
+              <g id="nsu">
+                 <use x="190" y="5" width="20" height="20" stroke-width="20"
+                      xlink:href="#Batik_Squiggle"/>
+              </g>
+              <image id="nsi" x="261" y="5" width="43" height="20"
+                     xlink:href="../../resources/images/tde.jpg"/>
+           </g>
+        </g>
+        <g transform="translate(120,90)">
+           <g fill="crimson" stroke="gold" stroke-width="3">
+              <path id="nfsp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
+              <text id="nfst" x="120" y="20" stroke-width=".5">getBBox</text>
+              <g id="nfsu">
+                 <use x="190" y="5" width="20" height="20" stroke-width="20"
+                      xlink:href="#Batik_Squiggle"/>
+              </g>
+              <image id="nfsi" x="261" y="5" width="43" height="20"
+                     xlink:href="../../resources/images/tde.jpg"/>
+           </g>
+        </g>
+     </g>
+
+     <g transform="translate(0, 120)" font-size="18" text-anchor="middle">
+        <g transform="translate(120,0)" >
+           <g fill="none" stroke="none" stroke-width="3" visibility="hidden">
+              <path id="v-p" d="M 10,25 c 0,-40 60,20 60,-20z"/>
+              <text id="v-t" x="120" y="20" stroke-width=".5">getBBox</text>
+              <g id="v-u">
+                <use x="190" y="5" width="20" height="20" stroke-width="20"
+                     xlink:href="#Batik_Squiggle"/>
+              </g>
+              <image id="v-i" x="261" y="5" width="43" height="20"
+                     xlink:href="../../resources/images/tde.jpg"/>
+           </g>
+        </g>
+        <g transform="translate(120,30)">
+           <g fill="crimson" stroke="none" stroke-width="3" 
+              visibility="hidden">
+              <path id="vfp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
+              <text id="vft" x="120" y="20" stroke-width=".5">getBBox</text>
+              <g id="vfu">
+                <use x="190" y="5" width="20" height="20" stroke-width="20"
+                     xlink:href="#Batik_Squiggle"/>
+              </g>
+              <image id="vfi" x="261" y="5" width="43" height="20"
+                     xlink:href="../../resources/images/tde.jpg"/>
+           </g>
+        </g>
+        <g transform="translate(120,60)">
+           <g fill="none" stroke="gold" stroke-width="3" visibility="hidden">
+              <path id="vsp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
+              <text id="vst" x="120" y="20" stroke-width=".5">getBBox</text>
+              <g id="vsu">
+                 <use x="190" y="5" width="20" height="20" stroke-width="20"
+                      xlink:href="#Batik_Squiggle"/>
+              </g>
+              <image id="vsi" x="261" y="5" width="43" height="20"
+                     xlink:href="../../resources/images/tde.jpg"/>
+           </g>
+        </g>
+        <g transform="translate(120,90)">
+           <g fill="crimson" stroke="gold" stroke-width="3" 
+              visibility="hidden">
+              <path id="vfsp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
+              <text id="vfst" x="120" y="20" stroke-width=".5">getBBox</text>
+              <g id="vfsu">
+                 <use x="190" y="5" width="20" height="20" stroke-width="20"
+                      xlink:href="#Batik_Squiggle"/>
+              </g>
+              <image id="vfsi" x="261" y="5" width="43" height="20"
+                     xlink:href="../../resources/images/tde.jpg"/>
+           </g>
+        </g>
+     </g>
+
+     <g transform="translate(0, 240)" font-size="18" text-anchor="middle">
+        <g transform="translate(120,0)" >
+           <g fill="none" stroke="none" stroke-width="3" display="none">
+              <path id="d-p" d="M 10,25 c 0,-40 60,20 60,-20z"/>
+              <text id="d-t" x="120" y="20" stroke-width=".5">getBBox</text>
+              <g id="d-u">
+                <use x="190" y="5" width="20" height="20" stroke-width="20"
+                     xlink:href="#Batik_Squiggle"/>
+              </g>
+              <image id="d-i" x="261" y="5" width="43" height="20"
+                     xlink:href="../../resources/images/tde.jpg"/>
+           </g>
+        </g>
+        <g transform="translate(120,30)">
+           <g fill="crimson" stroke="none" stroke-width="3" display="none">
+              <path id="dfp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
+              <text id="dft" x="120" y="20" stroke-width=".5">getBBox</text>
+              <g id="dfu">
+                <use x="190" y="5" width="20" height="20" stroke-width="20"
+                     xlink:href="#Batik_Squiggle"/>
+              </g>
+              <image id="dfi" x="261" y="5" width="43" height="20"
+                     xlink:href="../../resources/images/tde.jpg"/>
+           </g>
+        </g>
+        <g transform="translate(120,60)">
+           <g fill="none" stroke="gold" stroke-width="3" display="none">
+              <path id="dsp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
+              <text id="dst" x="120" y="20" stroke-width=".5">getBBox</text>
+              <g id="dsu">
+                 <use x="190" y="5" width="20" height="20" stroke-width="20"
+                      xlink:href="#Batik_Squiggle"/>
+              </g>
+              <image id="dsi" x="261" y="5" width="43" height="20"
+                     xlink:href="../../resources/images/tde.jpg"/>
+           </g>
+        </g>
+        <g transform="translate(120,90)">
+           <g fill="crimson" stroke="gold" stroke-width="3" display="none">
+              <path id="dfsp" d="M 10,25 c 0,-40 60,20 60,-20z"/>
+              <text id="dfst" x="120" y="20" stroke-width=".5">getBBox</text>
+              <g id="dfsu">
+                 <use x="190" y="5" width="20" height="20" stroke-width="20"
+                      xlink:href="#Batik_Squiggle"/>
+              </g>
+              <image id="dfsi" x="261" y="5" width="43" height="20"
+                     xlink:href="../../resources/images/tde.jpg"/>
+           </g>
+        </g>
+     </g>
+
+     <g transform="translate(0, 360)" font-size="18" text-anchor="middle">
+        <g transform="translate(120,0)">
+           <g fill="none" stroke="none" stroke-width="3">
+              <path id="u-p" d="M 40,25 l-10,-10 l10,-10 l10,10 z"/>
+              <text id="u-t" x="120" y="20" stroke-width=".5">sm</text>
+              <g id="u-u"
+                 ><use x="195" y="10" width="10" height="10" stroke-width="20"
+                     xlink:href="#Batik_Squiggle"/></g>
+              <image id="u-i" x="271.75" y="10" width="21.5" height="10"
+                     xlink:href="../../resources/images/tde.jpg"/>
+           </g>
+        </g>
+        <g transform="translate(120,30)">
+           <g fill="crimson" stroke="gold" stroke-width="3">
+              <path id="ufsp" d="M 40,25 l-10,-10 l10,-10 l10,10 z"/>
+              <text id="ufst" x="120" y="20" stroke-width=".5">sm</text>
+              <g id="ufsu"
+                 ><use x="195" y="10" width="10" height="10" stroke-width="20"
+                     xlink:href="#Batik_Squiggle"/></g>
+              <image id="ufsi" x="271.75" y="10" width="21.5" height="10"
+                     xlink:href="../../resources/images/tde.jpg"/>
+           </g>
+        </g>
+     </g>
+  </g>
+
+</svg>
+
+
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/boundsTransformChange.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/boundsTransformChange.svg
new file mode 100644
index 0000000..1d35475
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/boundsTransformChange.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a circle attributes                                    -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: boundsTransformChange.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     onload="updateGroup1()">
+    <title>Testing Update engine when bounds and transform change.</title>
+
+    <desc>This tests changing the bounds of an object then changing a
+    a parent's transform to ensure the dirty regions are properly
+    computed.</desc>
+    <script type="text/ecmascript"><![CDATA[
+        var inRegard=false;
+        var time1 = 90;
+        function updateGroup1() {
+            var elt = document.getElementById("g1");
+            var fs = Math.cos(time1*2*3.1415926/180)*12+24;
+            elt.setAttribute("font-size",fs);
+
+            var x = Math.cos(time1*3.1415926/180)*100 + 225;
+            var y = Math.sin(.5*(time1+90)*3.1415926/180)*150 + 250;
+            elt.setAttribute("transform", "translate("+x+","+y+")");
+            time1 += 20;
+            if (inRegard && (time1 >= 270))
+               regardTestInstance.scriptDone();
+            else
+               setTimeout('updateGroup1()', 100);
+        }
+       function regardStart() {
+          inRegard = true;
+       }
+    ]]></script>
+
+    <g id="test-content">
+       <g id="g1">
+           <text text-anchor="middle">Squash the Bug</text>
+       </g> 
+    </g>
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/bug12933.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/bug12933.svg
new file mode 100644
index 0000000..aae6a3a
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/bug12933.svg
@@ -0,0 +1,113 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- test for bug in updateTracker                                             -->
+<!--                                                                           -->
+<!-- @author nicolas socheleau bitflash com                                    -->
+<!-- @version $Id: bug12933.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; 
+     id="body" width="450" height="500" 
+     viewBox="0 0 450 500">
+
+<title>UpdateTracker bug#12933</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>
+    <script type="text/ecmascript" >
+      var xlinkNS = "http://www.w3.org/1999/xlink";;
+      var SVGNS ="http://www.w3.org/2000/svg";;
+
+      function showBBox(name){
+        var e = document.getElementById(name);
+        var rect = document.createElementNS(SVGNS,"rect");
+
+        var bbox = e.getBBox();
+        rect.setAttribute("x",bbox.getX());
+        rect.setAttribute("y",bbox.getY());
+        rect.setAttribute("width",bbox.getWidth());
+        rect.setAttribute("height",bbox.getHeight());
+        rect.setAttribute("style","stroke:red;fill:none");
+        document.getDocumentElement().appendChild(rect);
+      }
+
+      function move(before,first,second){
+        var e1 = document.getElementById(before);
+        var e2 = document.getElementById(first);
+        var e3 = document.getElementById(second);
+
+        e1.getParentNode().insertBefore(e3,e1);
+        e1.getParentNode().insertBefore(e2,e3);
+      }
+    </script>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">UpdateTracker bug#12933</text>
+        
+
+           <circle id="circle" cx="75" cy="125" r="30" fill="coral" stroke="black"/>
+           <rect id="rect" x="100" y="100" width="100" height="50" fill="darkorange" stroke="black"/>
+           <polygon id="polygon" 
+                points="75,125 120,180 140,140 150,190 140,210 120,180 100,210 90,180"
+                 fill="cornsilk" stroke="black"/>
+
+
+        <rect x="70" y="300" width="50" height="50" stroke="black" fill="crimson"
+              onclick="move('circle','rect','polygon')"/>
+
+        <rect x="150" y="300" width="50" height="50" stroke="black" fill="crimson"
+              onclick="showBBox('rect')"/>
+
+        <text x="80" y="340" fill="black" font-weight="bold">1</text>
+        <text x="160" y="340" fill="black" font-weight="bold">2</text>
+
+        <text x="50%" y="400" text-anchor="middle" >Click 1 and 2, the bounding box of &lt;rect&gt; should 
appear in red</text>
+
+    </g>
+
+    <script type="text/ecmascript"><![CDATA[
+function onDone() {
+    if (!(regardTestInstance == null)) {
+        regardTestInstance.scriptDone();   
+    } else {
+        alert("This button only works when run in the regard framework");
+    }
+}
+    ]]></script>
+    <g id="done" transform="translate(195, 458)" cursor="pointer" onclick="onDone()">
+        <rect rx="5" ry="5" width="60" height="25" fill="#eeeeee" stroke="black" />
+        <text x="30" y="18" font-size="14" font-weight="bold" text-anchor="middle">Done</text>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/circle.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/circle.svg
new file mode 100644
index 0000000..169966e
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/circle.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a circle attributes                                    -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: circle.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;circle&gt; attributes 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;circle&gt; attributes in 'onload'</text>
+
+    <script type="text/ecmascript">
+
+    function initCircle(evt, cx, cy, r) {
+        var elt = evt.target;
+        elt.setAttribute("r", r)
+        elt.setAttribute("cx", cx)
+        elt.setAttribute("cy", cy)
+    }
+
+    </script>
+
+    <g id="test-content">
+
+        <circle r="1"  style="fill:orange" 
+              onload="initCircle(evt, 225, 155, 50)" />
+
+        <circle r="1" style="fill:gold" 
+              onload="initCircle(evt, '50%', '355px', '10%')" />
+
+        <g style="stroke:black; fill:none; stroke-width:2">
+          <circle cx="225"  cy="155" r="50" />
+          <circle cx="50%"  cy="355px" r="10%"  />
+        </g>
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="225" y="230" >cx, cy, r</text>
+                <text x="225" y="430" >cx, cy, r (units and %)</text>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/currentScaleTranslate.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/currentScaleTranslate.svg
new file mode 100644
index 0000000..db18473
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/currentScaleTranslate.svg
@@ -0,0 +1,114 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Test of getting/setting current Scale and Translate.                   -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: currentScaleTranslate.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     onload="setScaleTrans(2, 50, 50), update()"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+
+    <title>svg current scale/translate modification</title>
+
+    <script type="text/ecmascript"><![CDATA[
+        var count = 1;
+        function setScaleTrans(scale, newX, newY) {
+           document.getRootElement().currentScale = scale;
+           var pt = document.getRootElement().currentTranslate;
+           pt.x = newX;
+           pt.y = newX;
+        }
+         
+        function update() {
+           if ((count%10) == 0) {
+              var scale = 1+((count/10)%10)/4;
+              document.getRootElement().currentScale = scale;
+           }
+
+        var t;
+        var mat;
+           t = document.getElementById('cnt');
+           t.firstChild.data = ("Count: " + count);
+
+           mat = t.getScreenCTM();
+           t = document.getElementById('foo');
+           t.firstChild.data = 
+               "The ScrnCTM is: (" + mat.a +","+ mat.b +","+ mat.c +","+ mat.d +","+ mat.e +","+ mat.f +")";
+
+           mat = t.getCTM();
+           t = document.getElementById('bar');
+           t.firstChild.data = 
+               "The CTM is: (" + mat.a +","+ mat.b +","+ mat.c +","+ mat.d +","+ mat.e +","+ mat.f +")";
+
+           var scale = document.getRootElement().currentScale;
+           t = document.getElementById('baz');
+           t.firstChild.data = "The Scale is: "+scale;
+
+           var trans = document.getRootElement().currentTranslate;
+           t = document.getElementById('bat');
+           t.firstChild.data = "The Trans is ["+trans.x+", " +trans.y+"]";
+
+           t = document.getElementById('vp');
+           var vp = document.rootElement.viewport;
+           t.firstChild.data = ("Viewport: ["+ vp.x+", " +vp.y+", " +
+                                vp.width+", " +vp.height+"]");
+
+           count++;
+          setTimeout('update()', 1000);
+        }
+
+        function mouseOver(evt) {
+           t = document.getElementById('rec');
+           var x = evt.getClientX();
+           var y = evt.getClientY();
+           mat = t.getScreenCTM();
+           imat = mat.inverse();
+           var pt = document.getRootElement().createSVGPoint();
+            pt.x = x;
+           pt.y = y;
+           pt = pt.matrixTransform(imat);
+           t.firstChild.data = ("Loc: [" + evt.getClientX() + ", " + 
+                                evt.getClientY() + "] [" + 
+                                pt.x + ", " + pt.y + "]");
+        }
+    ]]></script>
+
+    <g id="test-content">
+       <rect x="0" y="0" width="450" height="500" 
+             fill="lightgrey" stroke="black"
+             onmousemove="mouseOver(evt)"/>
+       <text id="cnt" x="10" y=" 80">test</text>
+       <text id="foo" x="10" y="100">test</text>
+       <text id="bar" x="10" y="120">test</text>
+       <text id="baz" x="10" y="140">test</text>
+       <text id="bat" x="10" y="160">test</text>
+       <text id="vp"  x="10" y="180">test</text>
+       <text id="rec" x="10" y="200">test</text>
+   </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/display.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/display.svg
new file mode 100644
index 0000000..3903326
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/display.svg
@@ -0,0 +1,104 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a rect's attributes                                    -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: display.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+  <title>'display' property on 'onload'</title>
+
+  <text x="50%" y="45" class="title">'display' property on 'onload'</text>
+
+  <script type="text/ecmascript"><![CDATA[
+    function changeDisplay(evt, newValue) {
+    evt.target.getStyle().setProperty("display", newValue, "");
+    }
+    ]]></script>
+
+  <linearGradient id="grad">
+    <stop style="stop-color:crimson" offset="0" />
+    <stop style="stop-color:gold" offset="1" />
+  </linearGradient>
+
+  <g id="test-content" stroke="black" stroke-width="1">
+
+    <g onload="changeDisplay(evt, 'none')" style="display:inline">
+      <rect x="100" y="100" width="100" height="50" style="fill:#eee"/>
+      <rect x="150" y="100" width="100" height="50" style="fill:gold"/>
+      <rect x="200" y="100" width="100" height="50" style="fill:crimson"/>
+      <rect x="250" y="100" width="100" height="50" style="fill:url(#grad)"/>
+      <image x="300" y="100" width="50" height="50" 
+        xlink:href="../../resources/images/png2.png"/>
+    </g>
+    <g >
+      <rect x="100" y="175" width="100" height="50"
+        onload="changeDisplay(evt, 'none')" 
+        style="fill:#eee; display:inline"/>
+      <rect x="150" y="175" width="100" height="50" 
+        onload="changeDisplay(evt, 'none')" 
+        style="fill:gold; display:inline"/>
+      <rect x="200" y="175" width="100" height="50"
+        onload="changeDisplay(evt, 'none')" 
+        style="fill:crimson; display:inline"/>
+      <rect x="250" y="175" width="100" height="50" 
+        onload="changeDisplay(evt, 'none')" 
+        style="fill:url(#grad); display:inline"/>
+      <image x="300" y="175" width="50" height="50" 
+        onload="changeDisplay(evt, 'none')" 
+        xlink:href="../../resources/images/png2.png"/>
+    </g>
+
+    <g onload="changeDisplay(evt, 'inline')" style="display:none">
+      <rect x="100" y="250" width="100" height="50" style="fill:#eee"/>
+      <rect x="150" y="250" width="100" height="50" style="fill:gold"/>
+      <rect x="200" y="250" width="100" height="50" style="fill:crimson"/>
+      <rect x="250" y="250" width="100" height="50" style="fill:url(#grad)"/>
+      <image x="300" y="250" width="50" height="50" 
+        xlink:href="../../resources/images/png2.png"/>
+    </g>
+    <g >
+      <rect x="100" y="325" width="100" height="50"
+        onload="changeDisplay(evt, 'inline')" 
+        style="fill:#eee; display:none"/>
+      <rect x="150" y="325" width="100" height="50"
+        onload="changeDisplay(evt, 'inline')" 
+        style="fill:gold; display:none"/>
+      <rect x="200" y="325" width="100" height="50"
+        onload="changeDisplay(evt, 'inline')" 
+        style="fill:crimson; display:none"/>
+      <rect x="250" y="325" width="100" height="50"
+        onload="changeDisplay(evt, 'inline')" 
+         style="fill:url(#grad); display:none"/>
+      <image x="300" y="325" width="50" height="50" 
+        xlink:href="../../resources/images/png2.png"
+        onload="changeDisplay(evt, 'inline')" 
+         style="display:none"/>
+    </g>
+
+  </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/domSVGColor.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/domSVGColor.svg
new file mode 100644
index 0000000..063189e
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/domSVGColor.svg
@@ -0,0 +1,183 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+ 
+       http://www.apache.org/licenses/LICENSE-2.0
+ 
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Test of the dom SVGColor interface                                     -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: fill.svg 201374 2004-08-18 07:17:26Z vhardy $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+    onload="onload()"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; >
+    <title>Test DOM SVGColor Interface</title>
+
+    <text x="50%" y="45" class="title">Test DOM SVGColor Interface</text>
+
+    <script type="text/ecmascript"><![CDATA[
+        var UNIT_NUMBER =1;
+        var UNIT_PERCENT=2;
+        function onload() {
+           test();
+        }
+
+        function showFill(id, suff) {
+           var elem = document.getElementById(id);
+           var fill = elem.style.getPropertyCSSValue("fill");
+           var tb    = document.getElementById(id+suff);
+           tb.appendChild(document.createTextNode(fill.getCssText()));
+           return fill;
+        }   
+
+        function test() {
+           var fill, r, g, b;
+
+           fill = showFill("r1", ".b"); 
+           fill.setCssText("gold");
+           showFill("r1", ".a"); 
+
+           fill = showFill("r2", ".b"); 
+           fill.setCssText("gold");
+           showFill("r2", ".a"); 
+        
+           fill = showFill("r3", ".b"); 
+           r = fill.getRed(); r.setCssText("50");
+           showFill("r3", ".a"); 
+        
+           fill = showFill("r4", ".b"); 
+           r = fill.getRed(); r.setFloatValue(UNIT_NUMBER, 50);
+           showFill("r4", ".a"); 
+
+           fill = showFill("r5", ".b"); 
+           r = fill.getRed(); r.setFloatValue(UNIT_PERCENT, 50);
+           showFill("r5", ".a"); 
+
+           fill = showFill("r6", ".b"); 
+           g = fill.getGreen(); g.setCssText("50");
+           showFill("r6", ".a"); 
+        
+           fill = showFill("r7", ".b"); 
+           g = fill.getGreen(); g.setFloatValue(UNIT_NUMBER, 50);
+           showFill("r7", ".a"); 
+
+           fill = showFill("r8", ".b"); 
+           g = fill.getGreen(); g.setFloatValue(UNIT_PERCENT, 50);
+           showFill("r8", ".a"); 
+
+           fill = showFill("r9", ".b"); 
+           b = fill.getBlue(); b.setCssText("50");
+           showFill("r9", ".a"); 
+        
+           fill = showFill("r10", ".b"); 
+           b = fill.getBlue(); b.setFloatValue(UNIT_NUMBER, 50);
+           showFill("r10", ".a"); 
+
+           fill = showFill("r11", ".b"); 
+           b = fill.getBlue(); b.setFloatValue(UNIT_PERCENT, 50);
+           showFill("r11", ".a"); 
+        }
+    ]]></script>
+
+    <g id="test-content">
+       <g transform="translate(10, 50)">
+          <rect id="r1" x="0" y="0" width="75" height="40" 
+                style="fill:crimson"/>
+          <text x="80" y="15">Before: <tspan id="r1.b"/></text>
+          <text x="80" y="35">After: <tspan id="r1.a"/></text>
+       </g>
+
+       <g transform="translate(10, 100)">
+          <rect id="r2" x="0" y="0" width="75" height="40" 
+                style="fill:rgb(255, 0, 0)"/>
+          <text x="80" y="15">Before: <tspan id="r2.b"/></text>
+          <text x="80" y="35">After: <tspan id="r2.a"/></text>
+       </g>
+
+       <g transform="translate(10, 150)">
+          <rect id="r3" x="0" y="0" width="75" height="40" 
+                style="fill:rgb(255, 0, 128)"/>
+          <text x="80" y="15">Before: <tspan id="r3.b"/></text>
+          <text x="80" y="35">After: <tspan id="r3.a"/></text>
+       </g>
+
+       <g transform="translate(10, 200)">
+          <rect id="r4" x="0" y="0" width="75" height="40" 
+                style="fill:rgb(255, 0, 128)"/>
+          <text x="80" y="15">Before: <tspan id="r4.b"/></text>
+          <text x="80" y="35">After: <tspan id="r4.a"/></text>
+       </g>
+
+       <g transform="translate(10, 250)">
+          <rect id="r5" x="0" y="0" width="75" height="40" 
+                style="fill:rgb(255, 0, 128)"/>
+          <text x="80" y="15">Before: <tspan id="r5.b"/></text>
+          <text x="80" y="35">After: <tspan id="r5.a"/></text>
+       </g>
+
+       <g transform="translate(10, 300)">
+          <rect id="r6" x="0" y="0" width="75" height="40" 
+                style="fill:rgb(255, 0, 128)"/>
+          <text x="80" y="15">Before: <tspan id="r6.b"/></text>
+          <text x="80" y="35">After: <tspan id="r6.a"/></text>
+       </g>
+
+       <g transform="translate(10, 350)">
+          <rect id="r7" x="0" y="0" width="75" height="40" 
+                style="fill:rgb(255, 0, 128)"/>
+          <text x="80" y="15">Before: <tspan id="r7.b"/></text>
+          <text x="80" y="35">After: <tspan id="r7.a"/></text>
+       </g>
+
+       <g transform="translate(10, 400)">
+          <rect id="r8" x="0" y="0" width="75" height="40" 
+                style="fill:rgb(255, 0, 128)"/>
+          <text x="80" y="15">Before: <tspan id="r8.b"/></text>
+          <text x="80" y="35">After: <tspan id="r8.a"/></text>
+       </g>
+
+       <g transform="translate(225, 50)">
+          <rect id="r9" x="0" y="0" width="75" height="40" 
+                style="fill:rgb(255, 0, 128)"/>
+          <text x="80" y="15">Before: <tspan id="r9.b"/></text>
+          <text x="80" y="35">After: <tspan id="r9.a"/></text>
+       </g>
+
+       <g transform="translate(225, 100)">
+          <rect id="r10" x="0" y="0" width="75" height="40" 
+                style="fill:rgb(255, 0, 128)"/>
+          <text x="80" y="15">Before: <tspan id="r10.b"/></text>
+          <text x="80" y="35">After: <tspan id="r10.a"/></text>
+       </g>
+
+       <g transform="translate(225, 150)">
+          <rect id="r11" x="0" y="0" width="75" height="40" 
+                style="fill:rgb(255, 0, 128)"/>
+          <text x="80" y="15">Before: <tspan id="r11.b"/></text>
+          <text x="80" y="35">After: <tspan id="r11.a"/></text>
+       </g>
+
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/ellipse.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/ellipse.svg
new file mode 100644
index 0000000..a8bacf9
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/ellipse.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a ellipse' attributes                                  -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: ellipse.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;ellipse&gt; attributes 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;ellipse&gt; attributes in 'onload'</text>
+
+    <script type="text/ecmascript">
+
+    function initEllipse(evt, cx, cy, rx, ry) {
+        var elt = evt.target;
+        elt.setAttribute("rx", rx)
+        elt.setAttribute("ry", ry)
+        elt.setAttribute("cx", cx)
+        elt.setAttribute("cy", cy)
+    }
+
+    </script>
+
+    <g id="test-content">
+
+        <ellipse rx="1" ry="1" style="fill:orange" 
+              onload="initEllipse(evt, 120, 155, 80, 50)" />
+
+        <ellipse rx="1" ry="1" style="fill:crimson" 
+              onload="initEllipse(evt, 320, 155, 20, 50)" />
+
+        <ellipse rx="1" ry="1" style="fill:gold" 
+              onload="initEllipse(evt, '50%', 355, '20px', '10%')" />
+
+        <g style="stroke:black; fill:none; stroke-width:2">
+          <ellipse cx="120"  cy="155" rx="80" ry="50"  />
+          <ellipse cx="320"  cy="155" rx="20" ry="50"  />
+          <ellipse cx="50%"  cy="355" rx="20px" ry="10%"  />
+        </g>
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="125" y="230" >rx, ry, cx, cy</text>
+                <text x="325" y="230" >rx, ry, cx, cy</text>
+                <text x="50%" y="430" >rx, ry, cx, cy (units and %)</text>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/enclosureList.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/enclosureList.svg
new file mode 100644
index 0000000..da55fea
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/enclosureList.svg
@@ -0,0 +1,431 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+
+<!-- ====================================================================== -->
+<!-- Testing the getEnclosureList interface on the svg:svg element.      -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: enclosureList.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+  onload="testEnclosure()"
+  xmlns="http://www.w3.org/2000/svg"; 
+  xmlns:xlink="http://www.w3.org/1999/xlink"; >
+  <title>Test of getEnclosureList interface</title>
+  <text x="50%" y="45" class="title">Test of getEnclosureList interface</text>
+
+  <script type="text/ecmascript"><![CDATA[
+    var svgns = "http://www.w3.org/2000/svg";;
+
+    function doCheck(svg, rect, end, attr, val) {
+      var lst = svg.getEnclosureList(rect, end);
+      var i=0, sz = lst.getLength();
+      while (i < sz) {
+        var e = lst.item(i);
+        e.setAttribute(attr, val);
+        i++;
+      }
+    }
+
+    function setRect(rect, x, y, w, h) {
+      rect.x      = x;
+      rect.y      = y;
+      rect.width  = w;
+      rect.height = h;
+    }
+
+    function makeRect(parent, rect, stroke) {
+      var outline = document.createElementNS(svgns, "rect");
+      outline.setAttribute("x", "" + rect.x);
+      outline.setAttribute("y", "" + rect.y);
+      outline.setAttribute("width", "" + rect.width);
+      outline.setAttribute("height", "" + rect.height);
+      outline.setAttribute("fill", "none");
+      outline.setAttribute("stroke", stroke);
+      parent.appendChild(outline);
+    }
+
+    function checkEnclosure(svg, rect, elem, attr, val1, val2) {
+       if (svg.checkEnclosure(elem, rect)) 
+           elem.setAttribute(attr, val1);
+       else 
+           elem.setAttribute(attr, val2);
+    }
+   
+    function testEnclosure() {
+      var root = document.getRootElement();
+      var rect = root.createSVGRect();
+      setRect(rect, 25, 70, 100, 100);
+
+      doCheck(root, rect, null, "fill", "blue");
+
+      var middle = root.getElementById("tb1-middle");
+      doCheck(root, rect, middle, "stroke", "red");
+      makeRect(root, rect, "red");
+
+      var tb2 = root.getElementById("testblock2");
+      setRect(rect, 45, 45, 450, 50);
+      doCheck(tb2, rect, null, "fill", "green");
+      makeRect(tb2, rect, "green");
+
+      setRect(rect, 187.5, 131.5, 224, 25);
+      doCheck(root, rect, null, "stroke", "pink");
+      makeRect(root, rect, "pink");
+
+      setRect(rect, 82.35, 267.15, 35.25, 35.25);
+      doCheck(root, rect, null, "stroke", "lightgreen");
+      makeRect(root, rect, "lightgreen");
+
+      setRect(rect, 90.65, 275.25, 19, 19);
+      doCheck(root, rect, null, "fill", "purple");
+      makeRect(root, rect, "purple");
+
+      var tb5   = root.getElementById("testblock5");
+      var tb5_m = root.getElementById("tb5-middle");
+      setRect(rect, 45, 160, 150, 20);
+      doCheck(tb5, rect, tb5_m, "fill", "crimson");
+      makeRect(tb5, rect, "crimson");
+
+
+      var ts = root.getElementById("ts1");
+      setRect(rect, 208, 202, 23, 25);
+      doCheck(root, rect, null, "stroke", "blue");
+      makeRect(root, rect, "blue");
+
+      setRect(rect, 225, 204, 20, 25);
+      doCheck(root, rect, ts, "fill", "orange");
+      doCheck(root, rect, null, "text-decoration", "underline");
+      makeRect(root, rect, "orange");
+
+      setRect(rect, 237, 202, 40, 25);
+      doCheck(root, rect, null, "stroke", "crimson");
+      makeRect(root, rect, "crimson");
+
+      setRect(rect, 15, 420, 135, 47);
+      doCheck(root, rect, null, "text-decoration", "overline");
+      makeRect(root, rect, "black");
+
+      setRect(rect, 310, 420, 120, 47);
+      doCheck(root, rect, null, "text-decoration", "line-through");
+      makeRect(root, rect, "black");
+
+
+      var tb6   = root.getElementById("testblock6");
+      var tb6_m = root.getElementById("tb6-middle");
+
+      var tb6_11 = root.getElementById("tb6-11");
+      var tb6_21 = root.getElementById("tb6-21");
+      var tb6_31 = root.getElementById("tb6-31");
+      var tb6_41 = root.getElementById("tb6-41");
+
+      var tb6_12 = root.getElementById("tb6-12");
+      var tb6_22 = root.getElementById("tb6-22");
+      var tb6_32 = root.getElementById("tb6-32");
+      var tb6_42 = root.getElementById("tb6-42");
+
+      var tb6_13 = root.getElementById("tb6-13");
+      var tb6_23 = root.getElementById("tb6-23");
+      var tb6_43 = root.getElementById("tb6-43");
+
+      var tb6_14 = root.getElementById("tb6-14");
+      var tb6_24 = root.getElementById("tb6-24");
+      var tb6_34 = root.getElementById("tb6-34");
+      var tb6_44 = root.getElementById("tb6-44");
+
+      setRect(rect, 190, 300, 70, 70);
+      checkEnclosure(root, rect, tb6_11, "fill", "blue", "crimson");
+      checkEnclosure(root, rect, tb6_21, "fill", "blue", "crimson");
+      checkEnclosure(root, rect, tb6_31, "fill", "blue", "crimson");
+      checkEnclosure(root, rect, tb6_41, "fill", "blue", "crimson");
+
+      checkEnclosure(root, rect, tb6_12, "fill", "blue", "crimson");
+      checkEnclosure(root, rect, tb6_22, "fill", "blue", "crimson");
+      checkEnclosure(root, rect, tb6_32, "fill", "blue", "crimson");
+      checkEnclosure(root, rect, tb6_42, "fill", "blue", "crimson");
+
+      checkEnclosure(root, rect, tb6_13, "fill", "blue", "crimson");
+      checkEnclosure(root, rect, tb6_23, "fill", "blue", "crimson");
+      checkEnclosure(root, rect, tb6_m, "fill", "blue", "crimson");
+      checkEnclosure(root, rect, tb6_43, "fill", "blue", "crimson");
+
+      checkEnclosure(root, rect, tb6_14, "fill", "blue", "crimson");
+      checkEnclosure(root, rect, tb6_24, "fill", "blue", "crimson");
+      checkEnclosure(root, rect, tb6_34, "fill", "blue", "crimson");
+      checkEnclosure(root, rect, tb6_44, "fill", "blue", "crimson");
+
+      makeRect(root, rect, "blue");
+  
+    }
+    ]]></script>
+
+  <g id="test-content" >
+     <svg id="testblock1" overflow="visible"
+          x="15" y="60" width="120" height="120" viewBox="-.5 -.5 241 241" 
+          style="fill:yellow; stroke:black; stroke-width:2; fill-opacity:.5;">
+      <path d="M 10 10 h 220 v 220 h -220 z m 20 20 v 180 h 180 v -180 z"/>
+
+      <rect x="0"   y="0" width="40" height="40"/>
+      <rect x="50"  y="0" width="40" height="40"/>
+      <rect x="100" y="0" width="40" height="40"/>
+      <rect x="150" y="0" width="40" height="40"/>
+      <rect x="200" y="0" width="40" height="40"/>
+
+      <rect x="0"   y="50" width="40" height="40"/>
+      <rect x="50"  y="50" width="40" height="40"/>
+      <rect x="100" y="50" width="40" height="40"/>
+      <rect x="150" y="50" width="40" height="40"/>
+      <rect x="200" y="50" width="40" height="40"/>
+
+      <rect x="0"   y="100" width="40" height="40"/>
+      <rect x="50"  y="100" width="40" height="40"/>
+      <rect id="tb1-middle" x="100" y="100" width="40" height="40"/>
+      <rect x="150" y="100" width="40" height="40"/>
+      <rect x="200" y="100" width="40" height="40"/>
+
+      <rect x="0"   y="150" width="40" height="40"/>
+      <rect x="50"  y="150" width="40" height="40"/>
+      <rect x="100" y="150" width="40" height="40"/>
+      <rect x="150" y="150" width="40" height="40"/>
+      <rect x="200" y="150" width="40" height="40"/>
+
+      <rect x="0"   y="200" width="40" height="40"/>
+      <rect x="50"  y="200" width="40" height="40"/>
+      <rect x="100" y="200" width="40" height="40"/>
+      <rect x="150" y="200" width="40" height="40"/>
+      <rect x="200" y="200" width="40" height="40"/>
+    </svg>
+
+     <svg id="testblock2"  overflow="visible"
+          x="165" y="60" width="120" height="120" viewBox="-.5 -.5 241 241" 
+          style="fill:yellow; stroke:black; stroke-width:2; fill-opacity:.5;">
+      <path d="M 10 10 h 220 v 220 h -220 z m 20 20 v 180 h 180 v -180 z"/>
+
+      <rect x="0"   y="0" width="40" height="40"/>
+      <rect x="50"  y="0" width="40" height="40"/>
+      <rect x="100" y="0" width="40" height="40"/>
+      <rect x="150" y="0" width="40" height="40"/>
+      <rect x="200" y="0" width="40" height="40"/>
+
+      <rect x="0"   y="50" width="40" height="40"/>
+      <rect x="50"  y="50" width="40" height="40"/>
+      <rect x="100" y="50" width="40" height="40"/>
+      <rect x="150" y="50" width="40" height="40"/>
+      <rect x="200" y="50" width="40" height="40"/>
+
+      <rect x="0"   y="100" width="40" height="40"/>
+      <rect x="50"  y="100" width="40" height="40"/>
+      <rect id="tb2-middle" x="100" y="100" width="40" height="40"/>
+      <rect x="150" y="100" width="40" height="40"/>
+      <rect x="200" y="100" width="40" height="40"/>
+
+      <rect x="0"   y="150" width="40" height="40"/>
+      <rect x="50"  y="150" width="40" height="40"/>
+      <rect x="100" y="150" width="40" height="40"/>
+      <rect x="150" y="150" width="40" height="40"/>
+      <rect x="200" y="150" width="40" height="40"/>
+
+      <rect x="0"   y="200" width="40" height="40"/>
+      <rect x="50"  y="200" width="40" height="40"/>
+      <rect x="100" y="200" width="40" height="40"/>
+      <rect x="150" y="200" width="40" height="40"/>
+      <rect x="200" y="200" width="40" height="40"/>
+    </svg>
+
+     <svg id="testblock3"  overflow="visible"
+          x="315" y="60" width="120" height="120" viewBox="-.5 -.5 241 241" 
+          style="fill:yellow; stroke:black; stroke-width:2; fill-opacity:.5;">
+      <path d="M 10 10 h 220 v 220 h -220 z m 20 20 v 180 h 180 v -180 z"/>
+
+      <rect x="0"   y="0" width="40" height="40"/>
+      <rect x="50"  y="0" width="40" height="40"/>
+      <rect x="100" y="0" width="40" height="40"/>
+      <rect x="150" y="0" width="40" height="40"/>
+      <rect x="200" y="0" width="40" height="40"/>
+
+      <rect x="0"   y="50" width="40" height="40"/>
+      <rect x="50"  y="50" width="40" height="40"/>
+      <rect x="100" y="50" width="40" height="40"/>
+      <rect x="150" y="50" width="40" height="40"/>
+      <rect x="200" y="50" width="40" height="40"/>
+
+      <rect x="0"   y="100" width="40" height="40"/>
+      <rect x="50"  y="100" width="40" height="40"/>
+      <rect id="tb3-middle" x="100" y="100" width="40" height="40"/>
+      <rect x="150" y="100" width="40" height="40"/>
+      <rect x="200" y="100" width="40" height="40"/>
+
+      <rect x="0"   y="150" width="40" height="40"/>
+      <rect x="50"  y="150" width="40" height="40"/>
+      <rect x="100" y="150" width="40" height="40"/>
+      <rect x="150" y="150" width="40" height="40"/>
+      <rect x="200" y="150" width="40" height="40"/>
+
+      <rect x="0"   y="200" width="40" height="40"/>
+      <rect x="50"  y="200" width="40" height="40"/>
+      <rect x="100" y="200" width="40" height="40"/>
+      <rect x="150" y="200" width="40" height="40"/>
+      <rect x="200" y="200" width="40" height="40"/>
+    </svg>
+
+    <g transform="translate(100,200) rotate(45)">
+     <svg id="testblock4"  overflow="visible"
+          width="120" height="120" viewBox="-.5 -.5 241 241" 
+          style="fill:yellow; stroke:black; stroke-width:2; fill-opacity:.5;">
+      <path d="M 10 10 h 220 v 220 h -220 z m 20 20 v 180 h 180 v -180 z"/>
+
+      <rect x="0"   y="0" width="40" height="40"/>
+      <rect x="50"  y="0" width="40" height="40"/>
+      <rect x="100" y="0" width="40" height="40"/>
+      <rect x="150" y="0" width="40" height="40"/>
+      <rect x="200" y="0" width="40" height="40"/>
+
+      <rect x="0"   y="50" width="40" height="40"/>
+      <rect x="50"  y="50" width="40" height="40"/>
+      <rect x="100" y="50" width="40" height="40"/>
+      <rect x="150" y="50" width="40" height="40"/>
+      <rect x="200" y="50" width="40" height="40"/>
+
+      <rect x="0"   y="100" width="40" height="40"/>
+      <rect x="50"  y="100" width="40" height="40"/>
+      <g >
+        <rect id="tb4-middle" x="100" y="100" width="40" height="40"/>
+      </g>
+      <rect x="150" y="100" width="40" height="40"/>
+      <rect x="200" y="100" width="40" height="40"/>
+
+      <rect x="0"   y="150" width="40" height="40"/>
+      <rect x="50"  y="150" width="40" height="40"/>
+      <rect x="100" y="150" width="40" height="40"/>
+      <rect x="150" y="150" width="40" height="40"/>
+      <rect x="200" y="150" width="40" height="40"/>
+
+      <rect x="0"   y="200" width="40" height="40"/>
+      <rect x="50"  y="200" width="40" height="40"/>
+      <rect x="100" y="200" width="40" height="40"/>
+      <rect x="150" y="200" width="40" height="40"/>
+      <rect x="200" y="200" width="40" height="40"/>
+    </svg>
+   </g>
+
+    <g transform="translate(350,200) rotate(45)">
+     <svg id="testblock5"  overflow="visible"
+          width="120" height="120" viewBox="-.5 -.5 241 241" 
+          style="fill:yellow; stroke:black; stroke-width:2; fill-opacity:.5;">
+      <path d="M 10 10 h 220 v 220 h -220 z m 20 20 v 180 h 180 v -180 z"/>
+
+      <rect x="0"   y="0" width="40" height="40"/>
+      <rect x="50"  y="0" width="40" height="40"/>
+      <rect x="100" y="0" width="40" height="40"/>
+      <rect x="150" y="0" width="40" height="40"/>
+      <rect x="200" y="0" width="40" height="40"/>
+
+      <rect x="0"   y="50" width="40" height="40"/>
+      <rect x="50"  y="50" width="40" height="40"/>
+      <rect x="100" y="50" width="40" height="40"/>
+      <rect x="150" y="50" width="40" height="40"/>
+      <rect x="200" y="50" width="40" height="40"/>
+
+      <rect x="0"   y="100" width="40" height="40"/>
+      <rect x="50"  y="100" width="40" height="40"/>
+      <g >
+        <rect id="tb5-middle" x="100" y="100" width="40" height="40"/>
+      </g>
+      <rect x="150" y="100" width="40" height="40"/>
+      <rect x="200" y="100" width="40" height="40"/>
+
+      <rect x="0"   y="150" width="40" height="40"/>
+      <rect x="50"  y="150" width="40" height="40"/>
+      <rect x="100" y="150" width="40" height="40"/>
+      <rect x="150" y="150" width="40" height="40"/>
+      <rect x="200" y="150" width="40" height="40"/>
+
+      <rect x="0"   y="200" width="40" height="40"/>
+      <rect x="50"  y="200" width="40" height="40"/>
+      <rect x="100" y="200" width="40" height="40"/>
+      <rect x="150" y="200" width="40" height="40"/>
+      <rect x="200" y="200" width="40" height="40"/>
+    </svg>
+   </g>
+
+    <g transform="translate(225,285) rotate(45)">
+     <svg id="testblock6"  overflow="visible"
+          width="120" height="120" viewBox="-.5 -.5 241 241" 
+          style="fill:yellow; stroke:black; stroke-width:2; fill-opacity:.5;">
+      <path d="M 10 10 h 220 v 220 h -220 z m 20 20 v 180 h 180 v -180 z"/>
+
+      <rect id="tb6-11" x="0"   y="0" width="40" height="40"/>
+      <rect id="tb6-21" x="50"  y="0" width="40" height="40"/>
+      <rect id="tb6-31" x="100" y="0" width="40" height="40"/>
+      <rect id="tb6-41" x="150" y="0" width="40" height="40"/>
+      <rect id="tb6-51" x="200" y="0" width="40" height="40"/>
+
+      <rect id="tb6-12" x="0"   y="50" width="40" height="40"/>
+      <rect id="tb6-22" x="50"  y="50" width="40" height="40"
+            pointer-events="none"/>
+      <rect id="tb6-32" x="100" y="50" width="40" height="40"/>
+      <rect id="tb6-42" x="150" y="50" width="40" height="40"/>
+      <rect id="tb6-52" x="200" y="50" width="40" height="40"/>
+
+      <rect id="tb6-13" x="0"   y="100" width="40" height="40"/>
+      <rect id="tb6-23" x="50"  y="100" width="40" height="40"/>
+      <g >
+        <rect id="tb6-middle" x="100" y="100" width="40" height="40"/>
+      </g>
+      <rect id="tb6-43" x="150" y="100" width="40" height="40"/>
+      <rect id="tb6-53" x="200" y="100" width="40" height="40"/>
+
+      <rect id="tb6-14" x="0"   y="150" width="40" height="40"/>
+      <rect id="tb6-24" x="50"  y="150" width="40" height="40"/>
+      <rect id="tb6-34" x="100" y="150" width="40" height="40"/>
+      <rect id="tb6-44" x="150" y="150" width="40" height="40"/>
+      <rect id="tb6-54" x="200" y="150" width="40" height="40"/>
+
+      <rect id="tb6-15" x="0"   y="200" width="40" height="40"/>
+      <rect id="tb6-25" x="50"  y="200" width="40" height="40"/>
+      <rect id="tb6-35" x="100" y="200" width="40" height="40"/>
+      <rect id="tb6-45" x="150" y="200" width="40" height="40"/>
+      <rect id="tb6-55" x="200" y="200" width="40" height="40"/>
+    </svg>
+   </g>
+
+   <text x="225" y="220" text-anchor="middle" font-size="15"
+    >This <tspan id="ts1" font-weight="bold">is <tspan font-style="italic"
+    >a</tspan> test </tspan><tspan x="225" dy="20" text-anchor="middle"
+    >of text encolsure!!!</tspan></text>
+
+   <text x="85" y="440" text-anchor="middle" font-size="15"
+    >This <tspan id="ts2" font-weight="bold">is <tspan font-style="italic"
+    >a</tspan> test </tspan><tspan x="85" dy="20" text-anchor="middle"
+    >of text encolsure!!!</tspan></text>
+
+   <text x="365" y="440" text-anchor="middle" font-size="15"
+    >This <tspan id="ts3" font-weight="bold">is <tspan font-style="italic"
+    >a</tspan> test </tspan><tspan x="365" dy="20" text-anchor="middle"
+    >of text encolsure!!!!</tspan></text>
+  </g>
+</svg>
+
+
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/enclosureList2.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/enclosureList2.svg
new file mode 100644
index 0000000..f3d71a6
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/enclosureList2.svg
@@ -0,0 +1,394 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+
+<!-- ====================================================================== -->
+<!-- Testing the getIntersectionList interface on the svg:svg element.      -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: enclosureList2.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500" 
+  onload="onLoad()"
+  xmlns="http://www.w3.org/2000/svg"; 
+  xmlns:xlink="http://www.w3.org/1999/xlink"; >
+
+  <title>Test of getEnclosureList interface</title>
+  <text x="50%" y="40" class="title">Test of getEnclosureList interface</text>
+
+  <script type="text/ecmascript"><![CDATA[
+    var svgns = "http://www.w3.org/2000/svg";;
+    var root;
+    var rect;
+    function onLoad() {
+      root = document.getRootElement();
+      rect = root.createSVGRect();
+      doCheck("painted");
+      doCheck("fill");
+      doCheck("stroke");
+      doCheck("all");
+      doCheck("none");
+      doCheck("visible");
+      doCheck("visiblePainted");
+      doCheck("visibleFill");
+      doCheck("visibleStroke");
+    }
+
+    function setRect(r, x, y, w, h) {
+      r.x      = x;
+      r.y      = y;
+      r.width  = w;
+      r.height = h;
+    }
+
+    function doCheck2(svg, rect, base) {
+      var elem = root.getElementById(base);
+      var lstE = root.getElementById(base+"-lst");
+      var chkE = root.getElementById(base+"-chk");
+
+      var lst = svg.getEnclosureList(rect, null);
+      if ((lst.getLength() != 0) && (lst.item(0) == elem))
+           lstE.setAttribute("fill", "gold");
+      else lstE.setAttribute("fill", "crimson");
+
+      if (svg.checkEnclosure(elem, rect)) 
+         chkE.setAttribute("fill", "gold");
+      else chkE.setAttribute("fill", "crimson");
+    }
+
+    function doCheck(name) {
+      var svg = root.getElementById(name);
+      setRect(rect, 110, 10, 40, 40);
+      doCheck2(svg, rect, "path-"+name);
+      setRect(rect, 180, 10, 55, 40);
+      doCheck2(svg, rect, "simple-"+name);
+      setRect(rect, 285, 10, 30, 40);
+      doCheck2(svg, rect, "complex-"+name);
+     }
+
+    ]]></script>
+
+  <g id="test-content" >
+    <g pointer-events="painted" transform="translate(0,40)">
+      <rect x="5"    y="5" width="440" height="50" fill="#DDD" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">Painted</text>
+
+      <svg id="painted" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-painted" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-painted" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-painted" font-style="italic" pointer-events="painted"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-painted-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-painted-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-painted-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-painted-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-painted-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-painted-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+
+    <g pointer-events="fill" transform="translate(0, 90)">
+      <rect x="5"    y="5" width="440" height="50" fill="#EEE" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">Fill</text>
+
+      <svg id="fill" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-fill" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-fill" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-fill" font-style="italic" pointer-events="fill"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-fill-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-fill-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-fill-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-fill-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-fill-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-fill-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+
+    <g pointer-events="stroke" transform="translate(0,140)">
+      <rect x="5"    y="5" width="440" height="50" fill="#DDD" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">Stroke</text>
+
+      <svg id="stroke" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-stroke" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-stroke" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-stroke" font-style="italic" pointer-events="stroke"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-stroke-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-stroke-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-stroke-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-stroke-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-stroke-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-stroke-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+
+    <g pointer-events="all" transform="translate(0,190)">
+      <rect x="5"    y="5" width="440" height="50" fill="#EEE" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">All</text>
+
+      <svg id="all" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-all" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-all" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-all" font-style="italic" pointer-events="all"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-all-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-all-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-all-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-all-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-all-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-all-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+
+    <g pointer-events="none" transform="translate(0,240)">
+      <rect x="5"    y="5" width="440" height="50" fill="#DDD" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">None</text>
+
+      <svg id="none" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-none" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-none" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-none" font-style="italic" pointer-events="none"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-none-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-none-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-none-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-none-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-none-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-none-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+
+    <g pointer-events="visible" transform="translate(0,290)">
+      <rect x="5"    y="5" width="440" height="50" fill="#EEE" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">Visible</text>
+
+      <svg id="visible" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-visible" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-visible" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-visible" font-style="italic" pointer-events="visible"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-visible-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-visible-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-visible-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-visible-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-visible-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-visible-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+
+    <g pointer-events="visiblePainted" 
+      transform="translate(0,340)">
+      <rect x="5"    y="5" width="440" height="50" fill="#DDD" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">VisiblePainted</text>
+
+      <svg id="visiblePainted" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-visiblePainted" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-visiblePainted" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-visiblePainted" font-style="italic" pointer-events="visiblePainted"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-visiblePainted-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-visiblePainted-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-visiblePainted-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-visiblePainted-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-visiblePainted-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-visiblePainted-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+
+    <g pointer-events="visibleFill" 
+      transform="translate(0,390)">
+      <rect x="5"    y="5" width="440" height="50" fill="#EEE" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">VisibleFill</text>
+
+      <svg id="visibleFill" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-visibleFill" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-visibleFill" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-visibleFill" font-style="italic" pointer-events="visibleFill"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-visibleFill-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-visibleFill-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-visibleFill-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-visibleFill-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-visibleFill-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-visibleFill-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+
+    <g pointer-events="visibleStroke" 
+      transform="translate(0,440)">
+      <rect x="5"    y="5" width="440" height="50" fill="#DDD" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">VisibleStroke</text>
+
+      <svg id="visibleStroke" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-visibleStroke" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-visibleStroke" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-visibleStroke" font-style="italic" pointer-events="visibleStroke"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-visibleStroke-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-visibleStroke-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-visibleStroke-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-visibleStroke-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-visibleStroke-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-visibleStroke-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/eventAttrAdd.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/eventAttrAdd.svg
new file mode 100644
index 0000000..3cbb7fc
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/eventAttrAdd.svg
@@ -0,0 +1,108 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Test of adding/removing event attributes                               -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: eventAttrAdd.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+
+<script language="text/ecmascript"><![CDATA[
+  var root = document.getRootElement();
+
+  function adjust1 () {
+    // Ensure we can add event attr.
+    root.setAttributeNS(null, "onzoom", "setRect('a', 'lightblue')");
+    root.currentScale = 1.1;
+    setTimeout(adjust2, 500);
+  }
+
+  function adjust2() {
+    // Ensure we can modify event attr.
+    root.setAttributeNS(null, "onzoom", "setRect('b', 'lightblue')");
+    root.currentScale = 1.0;
+    setTimeout(adjust3, 500);
+  }
+
+  function adjust3() {
+    // Part 1 ensure we can remove event attr.
+    root.setAttributeNS(null, "onzoom", "setRect('c', 'lightblue')");
+    root.currentScale = 1.1;
+    setTimeout(adjust4, 500);
+  }
+
+  function adjust4() {
+    // Part 2 ensure we can remove event attr.
+    root.removeAttributeNS(null, "onzoom");
+    setRect('c', 'gold');  // It should stay gold.
+    root.currentScale = 1.0;
+    if (inRegard) {
+      setTimeout(done, 500);
+    }
+  }
+
+  function done() {
+      regardTestInstance.scriptDone();
+  }
+
+  function setRect(id, color) {
+    var elem = document.getElementById(id);
+    elem.setAttributeNS(null, "fill", color);
+  }
+
+  var inRegard  = false;
+  function regardStart() {
+    inRegard = true;
+    adjust1();
+  }
+]]></script>
+
+  <title>Addtion/Modification/Removal of event attributes.</title>
+  <text class="title" x="50%" y="40" text-anchor="middle"
+    >Addtion/Modification/Removal of event attributes.</text>
+  <text x="50%" y="55" text-anchor="middle"
+    >Click Rect to start test</text>
+
+  <g id="test-content" onclick="adjust1()" text-anchor="middle">
+    <rect id="a" x="50" y="100" width="250" height="50" fill="crimson"/>
+    <rect x="310" y="100" width="25" height="50" fill="lightblue"/>
+    <text x="175" y="130">Event Attr Add</text>
+
+    <rect id="b" x="50" y="175" width="250" height="50" fill="crimson"/>
+    <rect x="310" y="175" width="25" height="50" fill="lightblue"/>
+    <text x="175" y="205">Event Attr Modify</text>
+
+    <rect id="c" x="50" y="250" width="250" height="50" fill="crimson"/>
+    <rect x="310" y="250" width="25" height="50" fill="gold"/>
+    <text x="175" y="285">Event Attr Remove</text>
+
+  </g>
+
+</svg>
\ No newline at end of file
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/fill.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/fill.svg
new file mode 100644
index 0000000..3e67ba2
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/fill.svg
@@ -0,0 +1,54 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a rect's attributes                                    -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: fill.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>fill property on 'onload'</title>
+
+    <text x="50%" y="45" class="title">'fill property on 'onload'</text>
+
+    <script type="text/ecmascript"><![CDATA[
+        function changeFill(evt, newValue) {
+                evt.target.setAttribute("style", "fill:"+newValue);
+        }
+
+    ]]></script>
+
+    <g id="test-content">
+
+       <g onload="changeFill(evt, '#eee')">
+           <rect x="100" y="100" width="100" height="100" />
+           <rect x="150" y="100" width="100" height="100" onload="changeFill(evt, 'gold')" />
+           <rect x="200" y="100" width="100" height="100" onload="changeFill(evt, 'crimson')" />
+           <rect x="250" y="100" width="100" height="100" onload="changeFill(evt, 'orange')" />
+       </g>
+
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/filterPatternUpdate.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/filterPatternUpdate.svg
new file mode 100644
index 0000000..b00bd32
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/filterPatternUpdate.svg
@@ -0,0 +1,132 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- check updates on gradients, filter, mask, and clip regarding to        -->
+<!-- geometry updates                                                       -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: filterPatternUpdate.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>Filter and pattern with geometry updates</title>
+
+    <text x="50%" y="25" class="title">Filter and pattern with geometry updates
+<tspan x="50%" dy="1.1em" style="font-style:italic; font-size:12">(click on all shapes and see 
+<a style="fill:blue" xlink:href="filterPatternUpdateRef.svg">filterPatternUpdateRef.svg</a>)</tspan></text>
+
+    <script type="text/ecmascript">
+
+    var svgNamespaceURI = "http://www.w3.org/2000/svg";;
+
+    function move(evt) {
+        var x = parseFloat(evt.target.getAttribute("x"));
+        var y = parseFloat(evt.target.getAttribute("y"));
+        evt.target.setAttribute("x", x+90);
+        evt.target.setAttribute("y", y+85);
+    }
+
+    </script>
+
+<defs>
+
+
+
+<filter id="filterObjectBoundingBox" primitiveUnits="objectBoundingBox" filterUnits="objectBoundingBox" 
+        x="0" y="0" width="1" height="1">
+  <feTurbulence x="0" y="0" width="1" height="1" type="turbulence" baseFrequency="0.1" numOctaves="2" />
+</filter>
+
+<filter id="filterUserSpaceOnUse" primitiveUnits="objectBoundingBox" filterUnits="userSpaceOnUse"> 
+  <feTurbulence x="0" y="0" width="1" height="1" type="turbulence" baseFrequency="0.1" numOctaves="2" />
+</filter>
+
+<pattern id="patternObjectBoundingBox" patternContentUnits="userSpaceOnUse" patternUnits="objectBoundingBox"
+      x="0" y="0" width="1" height="1" viewBox="0 0 20 20">
+        <rect x="0" y="0" width="10" height="10" fill="#eee" />
+        <rect x="10" y="0" width="10" height="10" fill="black" />
+        <rect x="0" y="10" width="10" height="10" fill="black" />
+        <rect x="10" y="10" width="10" height="10" fill="#eee" />
+</pattern>
+
+<pattern id="patternUserSpaceOnUse" patternContentUnits="userSpaceOnUse" patternUnits="userSpaceOnUse"
+     x="250" y="300" width="20" height="20" viewBox="250 300 20 20" >
+        <rect x="250" y="300" width="10" height="10" fill="#eee" />
+        <rect x="260" y="300" width="10" height="10" fill="black" />
+        <rect x="250" y="310" width="10" height="10" fill="black" />
+        <rect x="260" y="310" width="10" height="10" fill="#eee" />
+</pattern>
+
+</defs>
+
+
+<g id="test-content" transform="translate(0,-20)">
+
+<g id="board" style="fill:none; stroke:black">
+        <rect x="40" y="80" width="200" height="20" style="fill:#eee"/>
+        <rect x="240" y="80" width="200" height="20" style="fill:#eee"/>
+
+        <rect x="40" y="100" width="200" height="380" />
+        <rect x="240" y="100" width="200" height="380" />
+
+        <line x1="20" y1="290" x2="440" y2="290" />
+        <rect x="20" y="100" width="20" height="190" style="fill:#eee"/>
+        <rect x="20" y="290" width="20" height="190" style="fill:#eee"/>
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="134" y="94">objectBoundingBox</text>
+                <text x="314" y="94">userSpaceOnUse</text>
+                <text x="0" y="0" transform="translate(34 200)rotate(-90)">&lt;filter></text>
+                <text x="0" y="0" transform="translate(34 380)rotate(-90)">&lt;pattern></text>
+        </g>
+</g>
+
+<rect onclick="move(evt)" x="50" y="110" width="90" height="85" 
style="filter:url(#filterObjectBoundingBox)"/>
+<rect onclick="move(evt)" x="250" y="110" width="90" height="85" style="filter:url(#filterUserSpaceOnUse)"/>
+
+<rect onclick="move(evt)" x="50" y="300" width="90" height="85" style="fill:url(#patternObjectBoundingBox)"/>
+<rect onclick="move(evt)" x="250" y="300" width="90" height="85" style="fill:url(#patternUserSpaceOnUse)"/>
+
+</g>
+
+
+    <script type="text/ecmascript"><![CDATA[
+function onDone() {
+    if (!(regardTestInstance == null)) {
+        regardTestInstance.scriptDone();   
+    } else {
+        alert("This button only works when run in the regard framework");
+    }
+}
+    ]]></script>
+    <g id="done" transform="translate(195, 468)" cursor="pointer" onclick="onDone()">
+        <rect rx="5" ry="5" width="60" height="25" fill="#eeeeee" stroke="black" />
+        <text x="30" y="18" font-size="14" font-weight="bold" text-anchor="middle">Done</text>
+    </g>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/filterPatternUpdateRef.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/filterPatternUpdateRef.svg
new file mode 100644
index 0000000..14c0a63
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/filterPatternUpdateRef.svg
@@ -0,0 +1,117 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- check updates on gradients, filter, mask, and clip regarding to        -->
+<!-- geometry updates                                                       -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: filterPatternUpdateRef.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>Filter and pattern with geometry updates</title>
+
+    <text x="50%" y="45" class="title">Filter and pattern with geometry updates</text>
+
+    <script type="text/ecmascript">
+
+    var svgNamespaceURI = "http://www.w3.org/2000/svg";;
+
+    function move(evt) {
+        var x = parseFloat(evt.target.getAttribute("x"));
+        var y = parseFloat(evt.target.getAttribute("y"));
+        evt.target.setAttribute("x", x+90);
+        evt.target.setAttribute("y", y+85);
+    }
+
+    </script>
+
+<defs>
+
+
+
+<filter id="filterObjectBoundingBox" primitiveUnits="objectBoundingBox" filterUnits="objectBoundingBox"
+        x="0" y="0" width="1" height="1">
+<feTurbulence x="0" y="0" width="1" height="1" type="turbulence" baseFrequency="0.1" numOctaves="2"/>
+</filter>
+
+<filter id="filterUserSpaceOnUse" primitiveUnits="objectBoundingBox" filterUnits="userSpaceOnUse">
+     <feTurbulence x="0" y="0" width="1" height="1" type="turbulence" baseFrequency="0.1" numOctaves="2"/>
+</filter>
+
+<pattern id="patternObjectBoundingBox" patternContentUnits="userSpaceOnUse" patternUnits="objectBoundingBox"
+      x="0" y="0" width="1" height="1" viewBox="0 0 20 20">
+        <rect x="0" y="0" width="10" height="10" fill="#eee" />
+        <rect x="10" y="0" width="10" height="10" fill="black" />
+        <rect x="0" y="10" width="10" height="10" fill="black" />
+        <rect x="10" y="10" width="10" height="10" fill="#eee" />
+</pattern>
+
+<pattern id="patternUserSpaceOnUse" patternContentUnits="userSpaceOnUse" patternUnits="userSpaceOnUse"
+     x="250" y="300" width="20" height="20" viewBox="250 300 20 20" >
+        <rect x="250" y="300" width="10" height="10" fill="#eee" />
+        <rect x="260" y="300" width="10" height="10" fill="black" />
+        <rect x="250" y="310" width="10" height="10" fill="black" />
+        <rect x="260" y="310" width="10" height="10" fill="#eee" />
+</pattern>
+
+</defs>
+
+
+<g id="test-content">
+
+<g id="board" style="fill:none; stroke:black">
+        <rect x="40" y="80" width="200" height="20" style="fill:#eee"/>
+        <rect x="240" y="80" width="200" height="20" style="fill:#eee"/>
+
+        <rect x="40" y="100" width="200" height="380" />
+        <rect x="240" y="100" width="200" height="380" />
+
+        <line x1="20" y1="290" x2="440" y2="290" />
+        <rect x="20" y="100" width="20" height="190" style="fill:#eee"/>
+        <rect x="20" y="290" width="20" height="190" style="fill:#eee"/>
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="134" y="94">objectBoundingBox</text>
+                <text x="314" y="94">userSpaceOnUse</text>
+                <text x="0" y="0" transform="translate(34 200)rotate(-90)">&lt;filter></text>
+                <text x="0" y="0" transform="translate(34 380)rotate(-90)">&lt;pattern></text>
+        </g>
+</g>
+
+<rect onload="move(evt)" x="50" y="110" width="90" height="85" style="filter:url(#filterObjectBoundingBox)"/>
+<rect onload="move(evt)" x="250" y="110" width="90" height="85" style="filter:url(#filterUserSpaceOnUse)"/>
+
+<rect onload="move(evt)" x="50" y="300" width="90" height="85" style="fill:url(#patternObjectBoundingBox)"/>
+<rect onload="move(evt)" x="250" y="300" width="90" height="85" style="fill:url(#patternUserSpaceOnUse)"/>
+
+</g>
+
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/forceRedraw.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/forceRedraw.svg
new file mode 100644
index 0000000..58ec74d
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/forceRedraw.svg
@@ -0,0 +1,105 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a rect's x,y,width and height attributes in an         -->
+<!-- 'onclick' event handler. This is actually mostly testing a change in   -->
+<!-- the documents size.                                                    -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: rectResizeOnClick.svg 201399 2004-11-30 03:23:58Z deweese $  -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+   <title>&lt;rect&gt; moving display updated with forceRedraw()</title>
+
+   <script type="text/ecmascript"><![CDATA[
+    var root = document.rootElement;
+
+    function setRect(target, color){
+        var t = document.getElementById(target);
+        t.setAttributeNS(null, "fill", color);
+    }
+
+    var suspendId;
+    function testForce(target, time) {
+       suspendId = root.suspendRedraw(time);
+       setRect(target, "crimson");
+       root.forceRedraw();
+    }
+
+    function testForce2(target, time) {
+       suspendId = root.suspendRedraw(time);
+       setRect(target, "crimson");
+       setTimeout("root.forceRedraw()",(time/2));
+    }
+
+    function testForce3(target, time) {
+       suspendId = root.suspendRedraw(time);
+       setRect(target, "blue");
+       root.forceRedraw();
+       setRect(target, "crimson");
+    }
+
+    function moveX(target) {
+       var e = document.getElementById(target);
+       var base = e.getAttributeNS(null, "x");
+       for (var x=0; x<350; x++) {
+          var v = (1*base)+x;
+          e.setAttributeNS(null, "x", v);
+          root.forceRedraw();
+       }
+    }
+    ]]></script>
+
+   <text x="50%" y="40" class="title"
+    >&lt;rect&gt; fill modification with redraw suspended.</text>
+
+
+   <g id="test-content" font-size="10">
+      <rect id="rect.t1" fill="gold" x="10" y="50" width="80" height="40" 
+            onclick="testForce('rect.t1', 2000)"/>
+
+      <rect id="rect.t2" fill="gold" x="235" y="50" width="80" height="40" 
+            onclick="testForce2('rect.t2', 4000)"/>
+
+      <rect id="rect.t3" fill="gold" x="10" y="100" width="80" height="40" 
+            onclick="testForce3('rect.t3', 4000)"/>
+
+      <rect id="rect.t4" fill="gold" x="10" y="170" width="80" height="40" 
+            onclick="moveX('rect.t4')"/>
+
+      <text  x="100" y="67">suspendRedraw 2000
+      <tspan x="100" y="79">immediate forceRepaint()</tspan></text>
+
+      <text  x="320" y="67">suspendRedraw 2000
+      <tspan x="320" y="79">forceRepaint() @1s</tspan></text>
+
+      <text  x="100" y="110">suspendRedraw 2000
+      <tspan x="100" y="120">fill='blue'</tspan>
+      <tspan x="100" y="130">forceRepaint()</tspan>
+      <tspan x="100" y="140">fill='crimson'</tspan></text>
+
+      <text x="225" y="230" class="legend"
+       >Loop on x with forceRepaint</text>
+   </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/getElementById.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/getElementById.svg
new file mode 100644
index 0000000..02cbe2c
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/getElementById.svg
@@ -0,0 +1,184 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Test of the getElementById method                                      -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: getElementById.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     onload="doTest()"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+
+   <title>Test of 'getElementById' method</title>
+
+   <text x="50%" y="45" class="title">Test of 'getElementById' method</text>
+
+   <script type="text/ecmascript">
+      var svgns = "http://www.w3.org/2000/svg";;
+
+      function setText(id, text, color) {
+         var tspan = document.getElementById(id);
+         tspan.appendChild(document.createTextNode(text));
+         tspan.setAttribute("fill", color);
+      }
+      function checkTest(e, base, id, tId) {
+         if (e == base.getElementById(id)) 
+            setText(tId, "success", "green");
+         else
+            setText(tId, "failed", "red");
+      }
+      function doTest() {
+         var g   = document.getElementById("group");
+         var id1 = g.firstChild;
+         var id2 = id1.nextSibling;
+         var id3 = id2.nextSibling;
+         var id4 = id3.nextSibling;
+         var svg1 = id4.nextSibling;
+         var id5 = svg1.firstChild;
+         var id6 = id5.nextSibling;
+         var id7 = svg1.nextSibling;
+
+         checkTest(id1, document, "id1", "t1");
+         checkTest(id2, document, "id2", "t2");
+         checkTest(null, document, "undefined", "t3");
+
+         checkTest(svg1, document, "svg1", "t4");
+         checkTest(svg1, svg1, "svg1", "t5");
+
+         checkTest(id5, document, "id5", "t6");
+         checkTest(id5, svg1, "id5", "t7");
+         checkTest(id6, svg1, "id6", "t8");
+         checkTest(id7, svg1, "id7", "t9");
+
+         id2.setAttribute("id", "d1");
+         checkTest(id2, document, "d1", "t10");
+
+         var attr = document.createAttribute("id");
+         attr.setValue("d2");
+         id3.setAttributeNode(attr);
+         checkTest(id3, document, "d2", "t11");
+         checkTest(null, document, "id3", "t12");
+         attr.setValue("d3");
+         checkTest(id3, document, "d3", "t13");
+
+         id4.removeAttribute("id");
+         checkTest(null, document, "id4", "t14");
+
+         svg1.parentNode.removeChild(svg1);
+         checkTest(null, document, "id5", "t15");
+         checkTest(id5, svg1, "id5", "t16");
+
+         var svg2 = document.createElementNS(svgns, "svg");
+         var id8  = document.createElementNS(svgns, "desc");
+         svg2.appendChild(id8);
+         id8.setAttribute("id", "id8");
+         checkTest(null, document, "id8", "t17");
+         checkTest(null, svg1, "id8", "t18");
+         checkTest(id8,  svg2, "id8", "t19");
+
+         var id9  = document.createElementNS(svgns, "desc");
+         id9.setAttribute("id", "id9");
+         svg2.appendChild(id9);
+         checkTest(null, document, "id9", "t20");
+         checkTest(null, svg1, "id9", "t21");
+         checkTest(id9,  svg2, "id9", "t22");
+
+         var id5_2 = id5.cloneNode(true);
+         g.appendChild(id5_2);
+         checkTest(id5_2, document, "id5", "t23");
+      }
+   </script>
+
+   <g id="group"><rect id="id1" x="10" y="60" width="50" height="50"
+            fill="gold" stroke="black"
+      /><rect id="id2" x="70" y="60" width="50" height="50"
+            fill="crimson" stroke="black"
+      /><rect id="id3" x="130" y="60" width="50" height="50"
+            fill="gold" stroke="black"
+      /><rect id="id4" x="190" y="60" width="50" height="50"
+            fill="crimson" stroke="black"
+      /><svg id="svg1" x="0" y="0" width="450" height="500"
+         ><rect id="id5" x="250" y="60" width="50" height="50"
+               fill="gold" stroke="black"
+         /><rect id="id6" x="310" y="60" width="50" height="50"
+               fill="crimson" stroke="black"
+      /></svg><rect id="id7" x="370" y="60" width="50" height="50"
+                    fill="gold" stroke="black"/>
+
+      <text x="60" y="140" text-anchor="end"
+       >Test 1: <tspan id="t1" x="65" text-anchor="start"/></text>
+      <text x="60" y="160" text-anchor="end"
+       >Test 2: <tspan id="t2" x="65" text-anchor="start"/></text>
+      <text x="60" y="180" text-anchor="end"
+       >Test 3: <tspan id="t3" x="65" text-anchor="start"/></text>
+      <text x="60" y="200" text-anchor="end"
+       >Test 4: <tspan id="t4" x="65" text-anchor="start"/></text>
+      <text x="60" y="220" text-anchor="end"
+       >Test 5: <tspan id="t5" x="65" text-anchor="start"/></text>
+
+      <text x="60" y="240" text-anchor="end"
+       >Test 6: <tspan id="t6" x="65" text-anchor="start"/></text>
+      <text x="60" y="260" text-anchor="end"
+       >Test 7: <tspan id="t7" x="65" text-anchor="start"/></text>
+      <text x="60" y="280" text-anchor="end"
+       >Test 8: <tspan id="t8" x="65" text-anchor="start"/></text>
+      <text x="60" y="300" text-anchor="end"
+       >Test 9: <tspan id="t9" x="65" text-anchor="start"/></text>
+      <text x="60" y="320" text-anchor="end"
+       >Test 10: <tspan id="t10" x="65" text-anchor="start"/></text>
+
+      <text x="60" y="340" text-anchor="end"
+       >Test 11: <tspan id="t11" x="65" text-anchor="start"/></text>
+
+
+      <text x="220" y="140" text-anchor="end"
+       >Test 12: <tspan id="t12" x="225" text-anchor="start"/></text>
+      <text x="220" y="160" text-anchor="end"
+       >Test 13: <tspan id="t13" x="225" text-anchor="start"/></text>
+      <text x="220" y="180" text-anchor="end"
+       >Test 14: <tspan id="t14" x="225" text-anchor="start"/></text>
+      <text x="220" y="200" text-anchor="end"
+       >Test 15: <tspan id="t15" x="225" text-anchor="start"/></text>
+      <text x="220" y="220" text-anchor="end"
+       >Test 16: <tspan id="t16" x="225" text-anchor="start"/></text>
+      <text x="220" y="240" text-anchor="end"
+       >Test 17: <tspan id="t17" x="225" text-anchor="start"/></text>
+      <text x="220" y="260" text-anchor="end"
+       >Test 18: <tspan id="t18" x="225" text-anchor="start"/></text>
+      <text x="220" y="280" text-anchor="end"
+       >Test 19: <tspan id="t19" x="225" text-anchor="start"/></text>
+      <text x="220" y="300" text-anchor="end"
+       >Test 20: <tspan id="t20" x="225" text-anchor="start"/></text>
+      <text x="220" y="320" text-anchor="end"
+       >Test 21: <tspan id="t21" x="225" text-anchor="start"/></text>
+      <text x="220" y="340" text-anchor="end"
+       >Test 22: <tspan id="t22" x="225" text-anchor="start"/></text>
+      <text x="220" y="360" text-anchor="end"
+       >Test 23: <tspan id="t23" x="225" text-anchor="start"/></text>
+   </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/gradientsUpdate.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/gradientsUpdate.svg
new file mode 100644
index 0000000..2a62798
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/gradientsUpdate.svg
@@ -0,0 +1,130 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- check updates on gradients, filter, mask, and clip regarding to        -->
+<!-- geometry updates                                                       -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: gradientsUpdate.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>Gradients with geometry updates</title>
+
+    <text x="50%" y="25" class="title">Gradients with geometry updates
+<tspan x="50%" dy="1.1em" style="font-style:italic; font-size:12">(click on all shapes and see 
+<a style="fill:blue" xlink:href="gradientsUpdateRef.svg">gradientsUpdateRef.svg</a>)</tspan></text>
+
+    <script type="text/ecmascript">
+
+    var svgNamespaceURI = "http://www.w3.org/2000/svg";;
+
+    function move(evt) {
+        var x = parseFloat(evt.target.getAttribute("x"));
+        var y = parseFloat(evt.target.getAttribute("y"));
+        evt.target.setAttribute("x", x+80);
+        evt.target.setAttribute("y", y+80);
+    }
+
+    </script>
+
+<defs>
+
+<linearGradient id="linearObjectBoundingBox" x1="0" y1="0" x2="1" y2="1">
+  <stop offset="0" stop-color="crimson" />
+  <stop offset=".5" stop-color="orange" />
+  <stop offset="1" stop-color="gold" />
+</linearGradient>
+
+<linearGradient id="linearUserSpaceOnUse" x1="240" y1="100" x2="440" y2="290" gradientUnits="userSpaceOnUse">
+  <stop offset="0" stop-color="crimson" />
+  <stop offset=".5" stop-color="orange" />
+  <stop offset="1" stop-color="gold" />
+</linearGradient>
+
+<radialGradient id="radialObjectBoundingBox" cx=".5" cy=".5" r=".5" fx=".5" fy=".5">
+  <stop offset="0" stop-color="crimson" />
+  <stop offset=".5" stop-color="orange" />
+  <stop offset="1" stop-color="gold" />
+</radialGradient>
+
+<radialGradient id="radialUserSpaceOnUse" cx="340" cy="385" r="100" fx="340" fy="385" 
gradientUnits="userSpaceOnUse">
+  <stop offset="0" stop-color="crimson" />
+  <stop offset=".5" stop-color="orange" />
+  <stop offset="1" stop-color="gold" />
+</radialGradient>
+
+</defs>
+
+
+<g id="test-content" transform="translate(0,-20)">
+
+<g id="board" style="fill:none; stroke:black">
+        <rect x="40" y="80" width="200" height="20" style="fill:#eee"/>
+        <rect x="240" y="80" width="200" height="20" style="fill:#eee"/>
+
+        <rect x="40" y="100" width="200" height="380" />
+        <rect x="240" y="100" width="200" height="380" />
+
+        <line x1="20" y1="290" x2="440" y2="290" />
+        <rect x="20" y="100" width="20" height="190" style="fill:#eee"/>
+        <rect x="20" y="290" width="20" height="190" style="fill:#eee"/>
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="134" y="94">objectBoundingBox</text>
+                <text x="314" y="94">userSpaceOnUse</text>
+                <text x="0" y="0" transform="translate(34 200)rotate(-90)">&lt;linearGradient></text>
+                <text x="0" y="0" transform="translate(34 380)rotate(-90)">&lt;radialGradient></text>
+        </g>
+</g>
+
+<rect onclick="move(evt)" x="50" y="110" width="100" height="95" style="fill:url(#linearObjectBoundingBox)"/>
+<rect onclick="move(evt)" x="250" y="110" width="100" height="95" style="fill:url(#linearUserSpaceOnUse)"/>
+
+<rect onclick="move(evt)" x="50" y="300" width="100" height="95" style="fill:url(#radialObjectBoundingBox)"/>
+<rect onclick="move(evt)" x="250" y="300" width="100" height="95" style="fill:url(#radialUserSpaceOnUse)"/>
+
+</g>
+
+
+    <script type="text/ecmascript"><![CDATA[
+function onDone() {
+    if (!(regardTestInstance == null)) {
+        regardTestInstance.scriptDone();   
+    } else {
+        alert("This button only works when run in the regard framework");
+    }
+}
+    ]]></script>
+    <g id="done" transform="translate(195, 468)" cursor="pointer" onclick="onDone()">
+        <rect rx="5" ry="5" width="60" height="25" fill="#eeeeee" stroke="black" />
+        <text x="30" y="18" font-size="14" font-weight="bold" text-anchor="middle">Done</text>
+    </g>
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/gradientsUpdateRef.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/gradientsUpdateRef.svg
new file mode 100644
index 0000000..a927269
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/gradientsUpdateRef.svg
@@ -0,0 +1,114 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- check updates on gradients, filter, mask, and clip regarding to        -->
+<!-- geometry updates                                                       -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: gradientsUpdateRef.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>Gradients with geometry updates</title>
+
+    <text x="50%" y="45" class="title">Gradients with geometry updates</text>
+
+    <script type="text/ecmascript">
+
+    var svgNamespaceURI = "http://www.w3.org/2000/svg";;
+
+    function move(evt) {
+        var x = parseFloat(evt.target.getAttribute("x"));
+        var y = parseFloat(evt.target.getAttribute("y"));
+        evt.target.setAttribute("x", x+80);
+        evt.target.setAttribute("y", y+80);
+    }
+
+    </script>
+
+<defs>
+
+<linearGradient id="linearObjectBoundingBox" x1="0" y1="0" x2="1" y2="1">
+  <stop offset="0" stop-color="crimson" />
+  <stop offset=".5" stop-color="orange" />
+  <stop offset="1" stop-color="gold" />
+</linearGradient>
+
+<linearGradient id="linearUserSpaceOnUse" x1="240" y1="100" x2="440" y2="290" gradientUnits="userSpaceOnUse">
+  <stop offset="0" stop-color="crimson" />
+  <stop offset=".5" stop-color="orange" />
+  <stop offset="1" stop-color="gold" />
+</linearGradient>
+
+<radialGradient id="radialObjectBoundingBox" cx=".5" cy=".5" r=".5" fx=".5" fy=".5">
+  <stop offset="0" stop-color="crimson" />
+  <stop offset=".5" stop-color="orange" />
+  <stop offset="1" stop-color="gold" />
+</radialGradient>
+
+<radialGradient id="radialUserSpaceOnUse" cx="340" cy="385" r="100" fx="340" fy="385" 
gradientUnits="userSpaceOnUse">
+  <stop offset="0" stop-color="crimson" />
+  <stop offset=".5" stop-color="orange" />
+  <stop offset="1" stop-color="gold" />
+</radialGradient>
+
+</defs>
+
+
+<g id="test-content">
+
+<g id="board" style="fill:none; stroke:black">
+        <rect x="40" y="80" width="200" height="20" style="fill:#eee"/>
+        <rect x="240" y="80" width="200" height="20" style="fill:#eee"/>
+
+        <rect x="40" y="100" width="200" height="380" />
+        <rect x="240" y="100" width="200" height="380" />
+
+        <line x1="20" y1="290" x2="440" y2="290" />
+        <rect x="20" y="100" width="20" height="190" style="fill:#eee"/>
+        <rect x="20" y="290" width="20" height="190" style="fill:#eee"/>
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="134" y="94">objectBoundingBox</text>
+                <text x="314" y="94">userSpaceOnUse</text>
+                <text x="0" y="0" transform="translate(34 200)rotate(-90)">&lt;linearGradient></text>
+                <text x="0" y="0" transform="translate(34 380)rotate(-90)">&lt;radialGradient></text>
+        </g>
+</g>
+
+<rect onload="move(evt)" x="50" y="110" width="100" height="95" style="fill:url(#linearObjectBoundingBox)"/>
+<rect onload="move(evt)" x="250" y="110" width="100" height="95" style="fill:url(#linearUserSpaceOnUse)"/>
+
+<rect onload="move(evt)" x="50" y="300" width="100" height="95" style="fill:url(#radialObjectBoundingBox)"/>
+<rect onload="move(evt)" x="250" y="300" width="100" height="95" style="fill:url(#radialUserSpaceOnUse)"/>
+
+</g>
+
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/image.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/image.svg
new file mode 100644
index 0000000..37faf3e
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/image.svg
@@ -0,0 +1,98 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- dynamic update for image                                                  -->
+<!--                                                                           -->
+<!-- @author nicolas socheleau bitflash com                                    -->
+<!-- @version $Id: image.svg 475685 2006-11-16 11:16:05Z cam $                                               
              -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>update on &lt;image&gt;</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>
+    <script type="text/ecmascript" >
+      function setPAR(evt,par){
+        var e = evt.target;
+        e.setAttribute('preserveAspectRatio',par);
+      }
+      function setPosition(evt,x,y,width,height){
+        var e = evt.target;
+        e.setAttribute("x",x);
+        e.setAttribute("y",y);
+        e.setAttribute("width",width);
+        e.setAttribute("height",height);
+      }
+    </script>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">&lt;image&gt;  dynamic tests</text>
+
+        <defs>
+          <rect id="Rect1" x="40" y="-20" width="100" height="40" />
+          <rect id="Rect2" x="60" y="-60" width="40" height="100" />
+        </defs>
+
+        <g transform="translate(70,150)">
+            <use xlink:href="#Rect1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="0" y="0" width="1" height="1" xlink:href="../../resources/images/svg.svg" 
+                   onload="setPosition(evt,40,-20,100,40)"/>
+            <text font-size="10" x="35" y="60">SVG image <tspan x="40" dy="12"> x,y,width,height 
update</tspan></text>
+        </g>
+
+
+        <g transform="translate(230,150)">
+            <use xlink:href="#Rect2" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="60" y="-60" width="40" height="100" xlink:href="../../resources/images/svg.svg" 
+                   onload="setPAR(evt,'none')"/>
+            <text font-size="10" x="35" y="60">SVG Image : aspectRatio none</text>
+        </g>
+
+
+        <g transform="translate(70,300)">
+            <use xlink:href="#Rect2" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="60" y="-10" width="20" height="50" xlink:href="../../resources/images/svg.png" 
+                   onload="setPosition(evt,60,-60,40,100)"/>
+            <text font-size="10" x="35" y="60">PNG Image <tspan x="40" dy="12"> x,y,width,height 
update</tspan></text>
+        </g>
+
+
+        <g transform="translate(230,300)">
+            <use xlink:href="#Rect1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="40" y="-20" width="100" height="40" xlink:href="../../resources/images/svg.png" 
+                   onload="setPAR(evt,'none')"/>
+            <text font-size="10" x="35" y="60">PNG Image : aspectRatio none</text>
+        </g>     
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/imageRefUpdate.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/imageRefUpdate.svg
new file mode 100644
index 0000000..2a61e60
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/imageRefUpdate.svg
@@ -0,0 +1,90 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- dynamic update for image                                                  -->
+<!--                                                                           -->
+<!-- @author nicolas socheleau bitflash com                                    -->
+<!-- @version $Id: imageRefUpdate.svg 475685 2006-11-16 11:16:05Z cam $                                      
                       -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>update on &lt;image&gt;</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>
+    <script type="text/ecmascript" >
+      var xlinkNS = "http://www.w3.org/1999/xlink";;
+      function setRef(evt,ref){
+        var e = evt.target;
+        e.setAttributeNS(xlinkNS,"href",ref);
+      }
+    </script>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">&lt;image&gt;  dynamic tests</text>
+
+        <defs>
+          <rect id="Rect1" x="40" y="-20" width="100" height="40" />
+          <rect id="Rect2" x="60" y="-60" width="40" height="100" />
+        </defs>
+
+        <g transform="translate(70,150)">
+           <use xlink:href="#Rect1" style="fill:none; stroke:blue; stroke-width:2"/>
+           <image x="40" y="-20" width="100" height="40" preserveAspectRatio="none" 
xlink:href="../../resources/images/svg.svg" />
+           <text font-size="10" x="35" y="60">SVG image Reference</text>
+        </g>
+
+
+        <g transform="translate(230,150)">
+           <use xlink:href="#Rect1" style="fill:none; stroke:blue; stroke-width:2"/>
+           <image x="40" y="-20" width="100" height="40" preserveAspectRatio="none" 
xlink:href="../../resources/images/svg.svg" 
+                  onload="setRef(evt,'../../resources/images/svg3.svg')" onclick="alert('click supported')" 
/>
+           <text font-size="10" x="35" y="60">SVG Image changed</text>
+        </g>
+
+
+        <g transform="translate(70,300)">
+           <use xlink:href="#Rect2" style="fill:none; stroke:blue; stroke-width:2"/>
+           <image x="60" y="-60" width="40" height="100" preserveAspectRatio="none" 
xlink:href="../../resources/images/svg.png" />
+           <text font-size="10" x="35" y="60">PNG Image Reference</text>
+        </g>
+
+
+        <g transform="translate(230,300)">
+           <use xlink:href="#Rect2" style="fill:none; stroke:blue; stroke-width:2"/>
+           <image x="60" y="-60" width="40" height="100" preserveAspectRatio="none" 
xlink:href="../../resources/images/svg.png" 
+                  onload="setRef(evt,'../../resources/images/png.png')" onclick="alert('clisk supported')" />
+           <text font-size="10" x="35" y="60">PNG Image changed</text>
+        </g>     
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/imageRendering.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/imageRendering.svg
new file mode 100644
index 0000000..3c07bcb
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/imageRendering.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- append child test                                                      -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: imageRendering.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>'image-rendering' property test</title>
+
+    <text x="50%" y="45" class="title">'image-rendering' property test</text>
+
+    <script type="text/ecmascript">
+
+    var speed = true;
+
+    function changeImageRendering(evt) {
+       var imageRendering;
+       if (speed) {
+           speed = false;
+           imageRendering = "optimizeQuality";
+       } else {
+           speed = true;
+           imageRendering = "optimizeSpeed";
+       }
+       evt.target.setAttribute("style", "image-rendering:"+imageRendering);
+    }
+
+    </script>
+
+    <g id="test-content">
+<image onclick="changeImageRendering(evt)" 
+       x="120" y="150" 
+       width="200" height="100" 
+       preserveAspectRatio="none"
+       xlink:href="../../resources/images/tde.jpg" 
+       style="image-rendering:optimizeSpeed" />
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/imageUpdate.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/imageUpdate.svg
new file mode 100644
index 0000000..a0c7ec3
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/imageUpdate.svg
@@ -0,0 +1,134 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- dynamic update for image                                                  -->
+<!--                                                                           -->
+<!-- @author nicolas socheleau bitflash com                                    -->
+<!-- @version $Id: imageUpdate.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+        xmlns:xlink="http://www.w3.org/1999/xlink"; 
+        id="body" width="450" height="500" viewBox="0 0 450 500">
+
+<title>update on &lt;image&gt;</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>
+    <script type="text/ecmascript" >
+      var SVGNS ="http://www.w3.org/2000/svg";;
+      var xlinkNS = "http://www.w3.org/1999/xlink";;
+      function setRef(name,ref){
+        var e = document.getElementById(name);
+        e.setAttributeNS(xlinkNS,"href",ref);
+      }
+      function setPosition(name,x,y,width,height){
+        var e = document.getElementById(name);
+        e.setAttribute("x",x);
+        e.setAttribute("y",y);
+        e.setAttribute("width",width);
+        e.setAttribute("height",height);
+      }
+    </script>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">&lt;image&gt;  dynamic tests</text>
+
+        <defs>
+            <rect id="Rect1" x="40" y="-20" width="100" height="40" />
+            <rect id="Rect2" x="60" y="-60" width="40" height="100" />
+        </defs>
+
+        <g transform="translate(70,150)">
+            <use xlink:href="#Rect1" 
+                 style="fill:none; stroke:blue; stroke-width:2;stroke-opacity:0.5"/>
+            <use xlink:href="#Rect2" 
+                 style="fill:none; stroke:blue; stroke-width:2"/>
+
+            <image id="image1" x="40" y="-20" width="100" height="40" 
+                   xlink:href="../../resources/images/svg.svg" 
+                   preserveAspectRatio="none"/>
+            <text font-size="10" x="35" y="60">
+                SVG image <tspan x="40" dy="12">ref,x,y,width,height update</tspan>
+            </text>
+        </g>
+
+        <g transform="translate(230,150)">
+            <use xlink:href="#Rect2" 
+                 style="fill:none; stroke:blue; stroke-width:2;stroke-opacity:0.5"/>
+            <use xlink:href="#Rect1" 
+                 style="fill:none; stroke:blue; stroke-width:2"/>
+
+            <image id="image2" x="60" y="-60" width="40" height="100" 
+                   preserveAspectRatio="none" 
+                   xlink:href="../../resources/images/svg.svg" />
+            <text font-size="10" x="35" y="60">SVG Image changed</text>
+        </g>
+
+
+
+        <rect x="70" y="300" width="50" height="50" stroke="black" fill="crimson"
+              onclick="setRef('image1','../../resources/images/svg.png');
+                       setRef('image2','../../resources/images/svg3.svg')"/>
+
+        <rect x="150" y="300" width="50" height="50" stroke="black" fill="crimson"
+              onclick="setPosition('image1',60,-60,40,100);
+                       setPosition('image2',40,-20,100,40)"/>
+
+        <text x="80" y="340" fill="black" font-weight="bold">1</text>
+        <text x="160" y="340" fill="black" font-weight="bold">2</text>
+
+        <text x="50%" y="400" text-anchor="middle" >
+             Click 1 and 2, the image should change 
+             and its size and position
+        </text>
+
+    </g>
+
+
+
+    <script type="text/ecmascript"><![CDATA[
+function onDone() {
+    if (!(regardTestInstance == null)) {
+        regardTestInstance.scriptDone();   
+    } else {
+        alert("This button only works when run in the regard framework");
+    }
+}
+    ]]></script>
+    <g id="done" transform="translate(195, 468)" cursor="pointer" onclick="onDone()">
+        <rect rx="5" ry="5" width="60" height="25" fill="#eeeeee" stroke="black" />
+        <text x="30" y="18" font-size="14" font-weight="bold" text-anchor="middle">Done</text>
+    </g>
+
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/imageraster.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/imageraster.svg
new file mode 100644
index 0000000..acb3454
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/imageraster.svg
@@ -0,0 +1,153 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- dynamic update for image                                                  -->
+<!--                                                                           -->
+<!-- @author nicolas socheleau bitflash com                                    -->
+<!-- @version $Id: imageraster.svg 475685 2006-11-16 11:16:05Z cam $                                         
                    -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>update on &lt;image&gt;</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>
+    <script type="text/ecmascript" >
+      function setPAR(evt,par){
+        var e = evt.target;
+        e.setAttribute('preserveAspectRatio',par);
+      }
+    </script>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">&lt;image&gt;  tests <tspan 
font-size="12">(preserveAspectRatio)</tspan></text>
+
+        <defs>
+                <rect id="Rect1" x="40" y="0" width="50" height="20" />
+                <rect id="Rect2" x="60" y="-10" width="20" height="50" />
+        </defs>
+
+          <g transform="translate(0,70)">
+            <use xlink:href="#Rect1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="40" y="0" width="50" height="20" xlink:href="../../resources/images/svg.png" 
+                   onload="setPAR(evt,'xMinYMin meet')"/>
+            <text font-size="10" x="35" y="60">xMin* meet</text>
+         </g>
+
+
+         <g transform="translate(150,70)">
+            <use xlink:href="#Rect1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="40" y="0" width="50" height="20" xlink:href="../../resources/images/svg.png" 
+                   onload="setPAR(evt,'xMidYMin meet')"/>
+            <text font-size="10" x="35" y="60">xMid* meet</text>
+         </g>
+
+         <g transform="translate(300,70)">
+            <use xlink:href="#Rect1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="40" y="0" width="50" height="20" xlink:href="../../resources/images/svg.png" 
+                   onload="setPAR(evt,'xMaxYMin meet')"/>
+            <text font-size="10" x="35" y="60">xMax* meet</text>
+         </g>
+
+
+         <g transform="translate(0,170)">
+            <use xlink:href="#Rect2" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="60" y="-10" width="20" height="50" xlink:href="../../resources/images/svg.png" 
+                   onload="setPAR(evt,'xMinYMin meet')"/>
+            <text font-size="10" x="35" y="60">*YMin meet</text>
+         </g>
+
+
+         <g transform="translate(150,170)">
+            <use xlink:href="#Rect2" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="60" y="-10" width="20" height="50" xlink:href="../../resources/images/svg.png" 
+                   onload="setPAR(evt,'xMinYMid meet')"/>
+            <text font-size="10" x="35" y="60">*YMid meet</text>
+         </g>
+
+         <g transform="translate(300,170)">
+            <use xlink:href="#Rect2" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="60" y="-10" width="20" height="50" xlink:href="../../resources/images/svg.png" 
+                   onload="setPAR(evt,'xMinYMax meet')"/>
+            <text font-size="10" x="35" y="60">*YMax meet</text>
+         </g>
+
+
+        <g transform="translate(0,270)">
+            <use xlink:href="#Rect2" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="60" y="-10" width="20" height="50" xlink:href="../../resources/images/svg.png" 
+                   onload="setPAR(evt,'xMinYMin slice')"/>
+            <text font-size="10" x="35" y="60">xMin* slice</text>
+         </g>
+
+
+         <g transform="translate(150,270)">
+            <use xlink:href="#Rect2" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="60" y="-10" width="20" height="50" xlink:href="../../resources/images/svg.png" 
+                   onload="setPAR(evt,'xMidYMin slice')"/>
+            <text font-size="10" x="35" y="60">xMid* slice</text>
+         </g>
+
+         <g transform="translate(300,270)">
+            <use xlink:href="#Rect2" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="60" y="-10" width="20" height="50" xlink:href="../../resources/images/svg.png" 
+                   onload="setPAR(evt,'xMaxYMin slice')"/>
+            <text font-size="10" x="35" y="60">xMax* slice</text>
+         </g>
+
+
+
+        <g transform="translate(0,370)">
+            <use xlink:href="#Rect1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="40" y="0" width="50" height="20" xlink:href="../../resources/images/svg.png" 
+                   onload="setPAR(evt,'xMinYMin slice')"/>
+            <text font-size="10" x="35" y="60">*YMin slice</text>
+        </g>
+
+
+         <g transform="translate(150,370)">
+            <use xlink:href="#Rect1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="40" y="0" width="50" height="20" xlink:href="../../resources/images/svg.png" 
+                   onload="setPAR(evt,'xMinYMid slice')"/>
+            <text font-size="10" x="35" y="60">*YMid slice</text>
+         </g>
+
+        <g transform="translate(300,370)">
+            <use xlink:href="#Rect1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="40" y="0" width="50" height="20" xlink:href="../../resources/images/svg.png" 
+                   onload="setPAR(evt,'xMinYMax slice')"/>
+            <text font-size="10" x="35" y="60">*YMax slice</text>
+        </g>
+       
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/imagesvg.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/imagesvg.svg
new file mode 100644
index 0000000..7f6d66e
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/imagesvg.svg
@@ -0,0 +1,153 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- dynamic update for image                                                  -->
+<!--                                                                           -->
+<!-- @author nicolas socheleau bitflash com                                    -->
+<!-- @version $Id: imagesvg.svg 475685 2006-11-16 11:16:05Z cam $                                            
                 -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>update on &lt;image&gt;</title>
+
+    <style type="text/css"><![CDATA[
+        
+    ]]></style>
+    <script type="text/ecmascript" >
+      function setPAR(evt,par){
+        var e = evt.target;
+        e.setAttribute('preserveAspectRatio',par);
+      }
+    </script>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">&lt;image&gt;  tests <tspan 
font-size="12">(preserveAspectRatio)</tspan></text>
+
+        <defs>
+            <rect id="Rect1" x="40" y="0" width="50" height="20" />
+            <rect id="Rect2" x="60" y="-10" width="20" height="50" />
+        </defs>
+
+        <g transform="translate(0,70)">
+            <use xlink:href="#Rect1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="40" y="0" width="50" height="20" xlink:href="../../resources/images/svg.svg" 
+                onload="setPAR(evt,'xMinYMin meet')"/>
+            <text font-size="10" x="35" y="60">xMin* meet</text>
+        </g>
+
+
+        <g transform="translate(150,70)">
+            <use xlink:href="#Rect1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="40" y="0" width="50" height="20" xlink:href="../../resources/images/svg.svg" 
+                onload="setPAR(evt,'xMidYMin meet')"/>
+            <text font-size="10" x="35" y="60">xMid* meet</text>
+        </g>
+
+        <g transform="translate(300,70)">
+            <use xlink:href="#Rect1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="40" y="0" width="50" height="20" xlink:href="../../resources/images/svg.svg" 
+                onload="setPAR(evt,'xMaxYMin meet')"/>
+            <text font-size="10" x="35" y="60">xMax* meet</text>
+        </g>
+
+
+        <g transform="translate(0,170)">
+            <use xlink:href="#Rect2" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="60" y="-10" width="20" height="50" xlink:href="../../resources/images/svg.svg" 
+                onload="setPAR(evt,'xMinYMin meet')"/>
+            <text font-size="10" x="35" y="60">*YMin meet</text>
+        </g>
+
+
+       <g transform="translate(150,170)">
+            <use xlink:href="#Rect2" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="60" y="-10" width="20" height="50" xlink:href="../../resources/images/svg.svg" 
+                   onload="setPAR(evt,'xMinYMid meet')"/>
+            <text font-size="10" x="35" y="60">*YMid meet</text>
+       </g>
+
+       <g transform="translate(300,170)">
+            <use xlink:href="#Rect2" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="60" y="-10" width="20" height="50" xlink:href="../../resources/images/svg.svg" 
+                   onload="setPAR(evt,'xMinYMax meet')"/>
+            <text font-size="10" x="35" y="60">*YMax meet</text>
+       </g>
+
+
+       <g transform="translate(0,270)">
+            <use xlink:href="#Rect2" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="60" y="-10" width="20" height="50" xlink:href="../../resources/images/svg.svg" 
+                   onload="setPAR(evt,'xMinYMin slice')"/>
+            <text font-size="10" x="35" y="60">xMin* slice</text>
+       </g>
+
+
+       <g transform="translate(150,270)">
+            <use xlink:href="#Rect2" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="60" y="-10" width="20" height="50" xlink:href="../../resources/images/svg.svg" 
+                   onload="setPAR(evt,'xMidYMin slice')"/>
+            <text font-size="10" x="35" y="60">xMid* slice</text>
+       </g>
+
+       <g transform="translate(300,270)">
+            <use xlink:href="#Rect2" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="60" y="-10" width="20" height="50" xlink:href="../../resources/images/svg.svg" 
+                   onload="setPAR(evt,'xMaxYMin slice')"/>
+            <text font-size="10" x="35" y="60">xMax* slice</text>
+       </g>
+
+
+
+       <g transform="translate(0,370)">
+            <use xlink:href="#Rect1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="40" y="0" width="50" height="20" xlink:href="../../resources/images/svg.svg" 
+                   onload="setPAR(evt,'xMinYMin slice')"/>
+            <text font-size="10" x="35" y="60">*YMin slice</text>
+       </g>
+
+
+       <g transform="translate(150,370)">
+            <use xlink:href="#Rect1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="40" y="0" width="50" height="20" xlink:href="../../resources/images/svg.svg" 
+                  onload="setPAR(evt,'xMinYMid slice')"/>
+            <text font-size="10" x="35" y="60">*YMid slice</text>
+       </g>
+
+       <g transform="translate(300,370)">
+            <use xlink:href="#Rect1" style="fill:none; stroke:blue; stroke-width:2"/>
+            <image x="40" y="0" width="50" height="20" xlink:href="../../resources/images/svg.svg" 
+                   onload="setPAR(evt,'xMinYMax slice')"/>
+            <text font-size="10" x="35" y="60">*YMax slice</text>
+       </g>
+       
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/intersectionList.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/intersectionList.svg
new file mode 100644
index 0000000..a74e547
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/intersectionList.svg
@@ -0,0 +1,412 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+
+<!-- ====================================================================== -->
+<!-- Testing the getIntersectionList interface on the svg:svg element.      -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: intersectionList.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+  onload="testIntersection()"
+  xmlns="http://www.w3.org/2000/svg"; 
+  xmlns:xlink="http://www.w3.org/1999/xlink"; >
+
+  <title>Test of getIntersectionList interface</title>
+  <text x="50%" y="45" class="title">Test of getIntersectionList interface</text>
+
+  <script type="text/ecmascript"><![CDATA[
+    var svgns = "http://www.w3.org/2000/svg";;
+
+    function doCheck(svg, rect, end, attr, val) {
+      var lst = svg.getIntersectionList(rect, end);
+      var i=0, sz = lst.getLength();
+      while (i < sz) {
+        var e = lst.item(i);
+        e.setAttribute(attr, val);
+        i++;
+      }
+    }
+
+    function setRect(rect, x, y, w, h) {
+      rect.x      = x;
+      rect.y      = y;
+      rect.width  = w;
+      rect.height = h;
+    }
+
+    function makeRect(parent, rect, stroke) {
+      var outline = document.createElementNS(svgns, "rect");
+      outline.setAttribute("x", "" + rect.x);
+      outline.setAttribute("y", "" + rect.y);
+      outline.setAttribute("width", "" + rect.width);
+      outline.setAttribute("height", "" + rect.height);
+      outline.setAttribute("fill", "none");
+      outline.setAttribute("stroke", stroke);
+      parent.appendChild(outline);
+    }
+
+    function checkIntersection(svg, rect, elem, attr, val1, val2) {
+       if (svg.checkIntersection(elem, rect)) 
+           elem.setAttribute(attr, val1);
+       else 
+           elem.setAttribute(attr, val2);
+    }
+   
+
+    function testIntersection() {
+      var root = document.getRootElement();
+      var rect = root.createSVGRect();
+      setRect(rect, 50, 95, 50, 50);
+
+      doCheck(root, rect, null, "fill", "blue");
+      makeRect(root, rect, "blue");
+
+      setRect(rect, 45, 90, 60, 60);
+      var middle = root.getElementById("tb1-middle");
+      doCheck(root, rect, middle, "stroke", "red");
+      makeRect(root, rect, "red");
+
+      var tb2 = root.getElementById("testblock2");
+      setRect(rect, 45, 60, 450, 20);
+      doCheck(tb2, rect, null, "fill", "green");
+      makeRect(tb2, rect, "green");
+
+      setRect(rect, 187.5, 139, 224, 10);
+      doCheck(root, rect, null, "stroke", "pink");
+      makeRect(root, rect, "pink");
+
+      setRect(rect, 82.35, 267.15, 35.25, 35.25);
+      doCheck(root, rect, null, "stroke", "lightgreen");
+
+      setRect(rect, 90.65, 275.25, 19, 19);
+      doCheck(root, rect, null, "fill", "purple");
+      makeRect(root, rect, "purple");
+      setRect(rect, 82.35, 267.15, 35.25, 35.25);
+      makeRect(root, rect, "lightgreen");
+
+      var tb5   = root.getElementById("testblock5");
+      var tb5_m = root.getElementById("tb5-middle");
+      setRect(rect, 45, 160, 150, 20);
+      doCheck(tb5, rect, tb5_m, "fill", "crimson");
+      makeRect(tb5, rect, "crimson");
+
+      var ts = root.getElementById("ts");
+      setRect(rect, 235, 200, 2, 50);
+      doCheck(root, rect, ts, "fill", "orange");
+      doCheck(root, rect, null, "text-decoration", "underline");
+      makeRect(root, rect, "orange");
+      setRect(rect, 255, 200, 2, 50);
+      doCheck(root, rect, ts, "stroke", "crimson");
+      makeRect(root, rect, "crimson");
+      
+
+
+      var tb6   = root.getElementById("testblock6");
+      var tb6_m = root.getElementById("tb6-middle");
+
+      var tb6_11 = root.getElementById("tb6-11");
+      var tb6_21 = root.getElementById("tb6-21");
+      var tb6_31 = root.getElementById("tb6-31");
+      var tb6_41 = root.getElementById("tb6-41");
+
+      var tb6_12 = root.getElementById("tb6-12");
+      var tb6_22 = root.getElementById("tb6-22");
+      var tb6_32 = root.getElementById("tb6-32");
+      var tb6_42 = root.getElementById("tb6-42");
+
+      var tb6_13 = root.getElementById("tb6-13");
+      var tb6_23 = root.getElementById("tb6-23");
+      var tb6_43 = root.getElementById("tb6-43");
+
+      var tb6_14 = root.getElementById("tb6-14");
+      var tb6_24 = root.getElementById("tb6-24");
+      var tb6_34 = root.getElementById("tb6-34");
+      var tb6_44 = root.getElementById("tb6-44");
+
+      setRect(rect, 190, 300, 70, 70);
+      checkIntersection(root, rect, tb6_11, "fill", "blue", "crimson");
+      checkIntersection(root, rect, tb6_21, "fill", "blue", "crimson");
+      checkIntersection(root, rect, tb6_31, "fill", "blue", "crimson");
+      checkIntersection(root, rect, tb6_41, "fill", "blue", "crimson");
+
+      checkIntersection(root, rect, tb6_12, "fill", "blue", "crimson");
+      checkIntersection(root, rect, tb6_22, "fill", "blue", "crimson");
+      checkIntersection(root, rect, tb6_32, "fill", "blue", "crimson");
+      checkIntersection(root, rect, tb6_42, "fill", "blue", "crimson");
+
+      checkIntersection(root, rect, tb6_13, "fill", "blue", "crimson");
+      checkIntersection(root, rect, tb6_23, "fill", "blue", "crimson");
+      checkIntersection(root, rect, tb6_m, "fill", "blue", "crimson");
+      checkIntersection(root, rect, tb6_43, "fill", "blue", "crimson");
+
+      checkIntersection(root, rect, tb6_14, "fill", "blue", "crimson");
+      checkIntersection(root, rect, tb6_24, "fill", "blue", "crimson");
+      checkIntersection(root, rect, tb6_34, "fill", "blue", "crimson");
+      checkIntersection(root, rect, tb6_44, "fill", "blue", "crimson");
+
+      makeRect(root, rect, "blue");
+
+    }
+    ]]></script>
+
+  <g id="test-content" >
+     <svg id="testblock1" overflow="visible"
+          x="15" y="60" width="120" height="120" viewBox="-.5 -.5 241 241" 
+          style="fill:yellow; stroke:black; stroke-width:2; fill-opacity:.5;">
+      <path d="M 10 10 h 220 v 220 h -220 z m 20 20 v 180 h 180 v -180 z"/>
+
+      <rect x="0"   y="0" width="40" height="40"/>
+      <rect x="50"  y="0" width="40" height="40"/>
+      <rect x="100" y="0" width="40" height="40"/>
+      <rect x="150" y="0" width="40" height="40"/>
+      <rect x="200" y="0" width="40" height="40"/>
+
+      <rect x="0"   y="50" width="40" height="40"/>
+      <rect x="50"  y="50" width="40" height="40"/>
+      <rect x="100" y="50" width="40" height="40"/>
+      <rect x="150" y="50" width="40" height="40"/>
+      <rect x="200" y="50" width="40" height="40"/>
+
+      <rect x="0"   y="100" width="40" height="40"/>
+      <rect x="50"  y="100" width="40" height="40"/>
+      <rect id="tb1-middle" x="100" y="100" width="40" height="40"/>
+      <rect x="150" y="100" width="40" height="40"/>
+      <rect x="200" y="100" width="40" height="40"/>
+
+      <rect x="0"   y="150" width="40" height="40"/>
+      <rect x="50"  y="150" width="40" height="40"/>
+      <rect x="100" y="150" width="40" height="40"/>
+      <rect x="150" y="150" width="40" height="40"/>
+      <rect x="200" y="150" width="40" height="40"/>
+
+      <rect x="0"   y="200" width="40" height="40"/>
+      <rect x="50"  y="200" width="40" height="40"/>
+      <rect x="100" y="200" width="40" height="40"/>
+      <rect x="150" y="200" width="40" height="40"/>
+      <rect x="200" y="200" width="40" height="40"/>
+    </svg>
+
+     <svg id="testblock2"  overflow="visible"
+          x="165" y="60" width="120" height="120" viewBox="-.5 -.5 241 241" 
+          style="fill:yellow; stroke:black; stroke-width:2; fill-opacity:.5;">
+      <path d="M 10 10 h 220 v 220 h -220 z m 20 20 v 180 h 180 v -180 z"/>
+
+      <rect x="0"   y="0" width="40" height="40"/>
+      <rect x="50"  y="0" width="40" height="40"/>
+      <rect x="100" y="0" width="40" height="40"/>
+      <rect x="150" y="0" width="40" height="40"/>
+      <rect x="200" y="0" width="40" height="40"/>
+
+      <rect x="0"   y="50" width="40" height="40"/>
+      <rect x="50"  y="50" width="40" height="40"/>
+      <rect x="100" y="50" width="40" height="40"/>
+      <rect x="150" y="50" width="40" height="40"/>
+      <rect x="200" y="50" width="40" height="40"/>
+
+      <rect x="0"   y="100" width="40" height="40"/>
+      <rect x="50"  y="100" width="40" height="40"/>
+      <rect id="tb2-middle" x="100" y="100" width="40" height="40"/>
+      <rect x="150" y="100" width="40" height="40"/>
+      <rect x="200" y="100" width="40" height="40"/>
+
+      <rect x="0"   y="150" width="40" height="40"/>
+      <rect x="50"  y="150" width="40" height="40"/>
+      <rect x="100" y="150" width="40" height="40"/>
+      <rect x="150" y="150" width="40" height="40"/>
+      <rect x="200" y="150" width="40" height="40"/>
+
+      <rect x="0"   y="200" width="40" height="40"/>
+      <rect x="50"  y="200" width="40" height="40"/>
+      <rect x="100" y="200" width="40" height="40"/>
+      <rect x="150" y="200" width="40" height="40"/>
+      <rect x="200" y="200" width="40" height="40"/>
+    </svg>
+
+     <svg id="testblock3"  overflow="visible"
+          x="315" y="60" width="120" height="120" viewBox="-.5 -.5 241 241" 
+          style="fill:yellow; stroke:black; stroke-width:2; fill-opacity:.5;">
+      <path d="M 10 10 h 220 v 220 h -220 z m 20 20 v 180 h 180 v -180 z"/>
+
+      <rect x="0"   y="0" width="40" height="40"/>
+      <rect x="50"  y="0" width="40" height="40"/>
+      <rect x="100" y="0" width="40" height="40"/>
+      <rect x="150" y="0" width="40" height="40"/>
+      <rect x="200" y="0" width="40" height="40"/>
+
+      <rect x="0"   y="50" width="40" height="40"/>
+      <rect x="50"  y="50" width="40" height="40"/>
+      <rect x="100" y="50" width="40" height="40"/>
+      <rect x="150" y="50" width="40" height="40"/>
+      <rect x="200" y="50" width="40" height="40"/>
+
+      <rect x="0"   y="100" width="40" height="40"/>
+      <rect x="50"  y="100" width="40" height="40"/>
+      <rect id="tb3-middle" x="100" y="100" width="40" height="40"/>
+      <rect x="150" y="100" width="40" height="40"/>
+      <rect x="200" y="100" width="40" height="40"/>
+
+      <rect x="0"   y="150" width="40" height="40"/>
+      <rect x="50"  y="150" width="40" height="40"/>
+      <rect x="100" y="150" width="40" height="40"/>
+      <rect x="150" y="150" width="40" height="40"/>
+      <rect x="200" y="150" width="40" height="40"/>
+
+      <rect x="0"   y="200" width="40" height="40"/>
+      <rect x="50"  y="200" width="40" height="40"/>
+      <rect x="100" y="200" width="40" height="40"/>
+      <rect x="150" y="200" width="40" height="40"/>
+      <rect x="200" y="200" width="40" height="40"/>
+    </svg>
+
+    <g transform="translate(100,200) rotate(45)">
+     <svg id="testblock4"  overflow="visible"
+          width="120" height="120" viewBox="-.5 -.5 241 241" 
+          style="fill:yellow; stroke:black; stroke-width:2; fill-opacity:.5;">
+      <path d="M 10 10 h 220 v 220 h -220 z m 20 20 v 180 h 180 v -180 z"/>
+
+      <rect x="0"   y="0" width="40" height="40"/>
+      <rect x="50"  y="0" width="40" height="40"/>
+      <rect x="100" y="0" width="40" height="40"/>
+      <rect x="150" y="0" width="40" height="40"/>
+      <rect x="200" y="0" width="40" height="40"/>
+
+      <rect x="0"   y="50" width="40" height="40"/>
+      <rect x="50"  y="50" width="40" height="40"/>
+      <rect x="100" y="50" width="40" height="40"/>
+      <rect x="150" y="50" width="40" height="40"/>
+      <rect x="200" y="50" width="40" height="40"/>
+
+      <rect x="0"   y="100" width="40" height="40"/>
+      <rect x="50"  y="100" width="40" height="40"/>
+      <g >
+        <rect id="tb4-middle" x="100" y="100" width="40" height="40"/>
+      </g>
+      <rect x="150" y="100" width="40" height="40"/>
+      <rect x="200" y="100" width="40" height="40"/>
+
+      <rect x="0"   y="150" width="40" height="40"/>
+      <rect x="50"  y="150" width="40" height="40"/>
+      <rect x="100" y="150" width="40" height="40"/>
+      <rect x="150" y="150" width="40" height="40"/>
+      <rect x="200" y="150" width="40" height="40"/>
+
+      <rect x="0"   y="200" width="40" height="40"/>
+      <rect x="50"  y="200" width="40" height="40"/>
+      <rect x="100" y="200" width="40" height="40"/>
+      <rect x="150" y="200" width="40" height="40"/>
+      <rect x="200" y="200" width="40" height="40"/>
+    </svg>
+   </g>
+
+    <g transform="translate(350,200) rotate(45)">
+     <svg id="testblock5"  overflow="visible"
+          width="120" height="120" viewBox="-.5 -.5 241 241" 
+          style="fill:yellow; stroke:black; stroke-width:2; fill-opacity:.5;">
+      <path d="M 10 10 h 220 v 220 h -220 z m 20 20 v 180 h 180 v -180 z"/>
+
+      <rect x="0"   y="0" width="40" height="40"/>
+      <rect x="50"  y="0" width="40" height="40"/>
+      <rect x="100" y="0" width="40" height="40"/>
+      <rect x="150" y="0" width="40" height="40"/>
+      <rect x="200" y="0" width="40" height="40"/>
+
+      <rect x="0"   y="50" width="40" height="40"/>
+      <rect x="50"  y="50" width="40" height="40"/>
+      <rect x="100" y="50" width="40" height="40"/>
+      <rect x="150" y="50" width="40" height="40"/>
+      <rect x="200" y="50" width="40" height="40"/>
+
+      <rect x="0"   y="100" width="40" height="40"/>
+      <rect x="50"  y="100" width="40" height="40"/>
+      <g >
+        <rect id="tb5-middle" x="100" y="100" width="40" height="40"/>
+      </g>
+      <rect x="150" y="100" width="40" height="40"/>
+      <rect x="200" y="100" width="40" height="40"/>
+
+      <rect x="0"   y="150" width="40" height="40"/>
+      <rect x="50"  y="150" width="40" height="40"/>
+      <rect x="100" y="150" width="40" height="40"/>
+      <rect x="150" y="150" width="40" height="40"/>
+      <rect x="200" y="150" width="40" height="40"/>
+
+      <rect x="0"   y="200" width="40" height="40"/>
+      <rect x="50"  y="200" width="40" height="40"/>
+      <rect x="100" y="200" width="40" height="40"/>
+      <rect x="150" y="200" width="40" height="40"/>
+      <rect x="200" y="200" width="40" height="40"/>
+    </svg>
+   </g>
+
+    <g transform="translate(225,285) rotate(45)">
+     <svg id="testblock6"  overflow="visible"
+          width="120" height="120" viewBox="-.5 -.5 241 241" 
+          style="fill:yellow; stroke:black; stroke-width:2; fill-opacity:.5;">
+      <path d="M 10 10 h 220 v 220 h -220 z m 20 20 v 180 h 180 v -180 z"/>
+
+      <rect id="tb6-11" x="0"   y="0" width="40" height="40"/>
+      <rect id="tb6-21" x="50"  y="0" width="40" height="40"/>
+      <rect id="tb6-31" x="100" y="0" width="40" height="40"/>
+      <rect id="tb6-41" x="150" y="0" width="40" height="40"/>
+      <rect id="tb6-51" x="200" y="0" width="40" height="40"/>
+
+      <rect id="tb6-12" x="0"   y="50" width="40" height="40"/>
+      <rect id="tb6-22" x="50"  y="50" width="40" height="40"
+            pointer-events="none"/>
+      <rect id="tb6-32" x="100" y="50" width="40" height="40"/>
+      <rect id="tb6-42" x="150" y="50" width="40" height="40"/>
+      <rect id="tb6-52" x="200" y="50" width="40" height="40"/>
+
+      <rect id="tb6-13" x="0"   y="100" width="40" height="40"/>
+      <rect id="tb6-23" x="50"  y="100" width="40" height="40"/>
+      <g >
+        <rect id="tb6-middle" x="100" y="100" width="40" height="40"/>
+      </g>
+      <rect id="tb6-43" x="150" y="100" width="40" height="40"/>
+      <rect id="tb6-53" x="200" y="100" width="40" height="40"/>
+
+      <rect id="tb6-14" x="0"   y="150" width="40" height="40"/>
+      <rect id="tb6-24" x="50"  y="150" width="40" height="40"/>
+      <rect id="tb6-34" x="100" y="150" width="40" height="40"/>
+      <rect id="tb6-44" x="150" y="150" width="40" height="40"/>
+      <rect id="tb6-54" x="200" y="150" width="40" height="40"/>
+
+      <rect id="tb6-15" x="0"   y="200" width="40" height="40"/>
+      <rect id="tb6-25" x="50"  y="200" width="40" height="40"/>
+      <rect id="tb6-35" x="100" y="200" width="40" height="40"/>
+      <rect id="tb6-45" x="150" y="200" width="40" height="40"/>
+      <rect id="tb6-55" x="200" y="200" width="40" height="40"/>
+    </svg>
+   </g>
+
+<text x="225" y="220" text-anchor="middle" font-size="15"
+>This <tspan id="ts" font-weight="bold">is <tspan font-style="italic">a</tspan> test</tspan>
+<tspan x="225" y="240" text-anchor="middle">of text intersection</tspan></text>
+  </g>
+</svg>
+
+
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/intersectionList2.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/intersectionList2.svg
new file mode 100644
index 0000000..af1c510
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/intersectionList2.svg
@@ -0,0 +1,394 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+
+<!-- ====================================================================== -->
+<!-- Testing the getIntersectionList interface on the svg:svg element.      -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: intersectionList2.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500" 
+  onload="onLoad()"
+  xmlns="http://www.w3.org/2000/svg"; 
+  xmlns:xlink="http://www.w3.org/1999/xlink"; >
+
+  <title>Test of getIntersectionList interface</title>
+  <text x="50%" y="40" class="title">Test of getIntersectionList interface</text>
+
+  <script type="text/ecmascript"><![CDATA[
+    var svgns = "http://www.w3.org/2000/svg";;
+    var root;
+    var rect;
+    function onLoad() {
+      root = document.getRootElement();
+      rect = root.createSVGRect();
+      doCheck("painted");
+      doCheck("fill");
+      doCheck("stroke");
+      doCheck("all");
+      doCheck("none");
+      doCheck("visible");
+      doCheck("visiblePainted");
+      doCheck("visibleFill");
+      doCheck("visibleStroke");
+    }
+
+    function setRect(r, x, y, w, h) {
+      r.x      = x;
+      r.y      = y;
+      r.width  = w;
+      r.height = h;
+    }
+
+    function doCheck2(svg, rect, base) {
+      var elem = root.getElementById(base);
+      var lstE = root.getElementById(base+"-lst");
+      var chkE = root.getElementById(base+"-chk");
+
+      var lst = svg.getIntersectionList(rect, null);
+      if ((lst.getLength() != 0) && (lst.item(0) == elem))
+           lstE.setAttribute("fill", "gold");
+      else lstE.setAttribute("fill", "crimson");
+
+      if (svg.checkIntersection(elem, rect)) 
+         chkE.setAttribute("fill", "gold");
+      else chkE.setAttribute("fill", "crimson");
+    }
+
+    function doCheck(name) {
+      var svg = root.getElementById(name);
+      setRect(rect, 110, 10, 40, 40);
+      doCheck2(svg, rect, "path-"+name);
+      setRect(rect, 180, 10, 55, 40);
+      doCheck2(svg, rect, "simple-"+name);
+      setRect(rect, 285, 10, 30, 40);
+      doCheck2(svg, rect, "complex-"+name);
+     }
+
+    ]]></script>
+
+  <g id="test-content" >
+    <g pointer-events="painted" transform="translate(0,40)">
+      <rect x="5"    y="5" width="440" height="50" fill="#DDD" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">Painted</text>
+
+      <svg id="painted" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-painted" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-painted" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-painted" font-style="italic" pointer-events="painted"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-painted-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-painted-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-painted-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-painted-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-painted-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-painted-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+
+    <g pointer-events="fill" transform="translate(0, 90)">
+      <rect x="5"    y="5" width="440" height="50" fill="#EEE" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">Fill</text>
+
+      <svg id="fill" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-fill" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-fill" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-fill" font-style="italic" pointer-events="fill"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-fill-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-fill-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-fill-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-fill-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-fill-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-fill-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+
+    <g pointer-events="stroke" transform="translate(0,140)">
+      <rect x="5"    y="5" width="440" height="50" fill="#DDD" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">Stroke</text>
+
+      <svg id="stroke" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-stroke" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-stroke" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-stroke" font-style="italic" pointer-events="stroke"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-stroke-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-stroke-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-stroke-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-stroke-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-stroke-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-stroke-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+
+    <g pointer-events="all" transform="translate(0,190)">
+      <rect x="5"    y="5" width="440" height="50" fill="#EEE" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">All</text>
+
+      <svg id="all" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-all" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-all" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-all" font-style="italic" pointer-events="all"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-all-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-all-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-all-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-all-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-all-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-all-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+
+    <g pointer-events="none" transform="translate(0,240)">
+      <rect x="5"    y="5" width="440" height="50" fill="#DDD" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">None</text>
+
+      <svg id="none" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-none" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-none" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-none" font-style="italic" pointer-events="none"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-none-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-none-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-none-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-none-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-none-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-none-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+
+    <g pointer-events="visible" transform="translate(0,290)">
+      <rect x="5"    y="5" width="440" height="50" fill="#EEE" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">Visible</text>
+
+      <svg id="visible" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-visible" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-visible" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-visible" font-style="italic" pointer-events="visible"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-visible-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-visible-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-visible-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-visible-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-visible-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-visible-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+
+    <g pointer-events="visiblePainted" 
+      transform="translate(0,340)">
+      <rect x="5"    y="5" width="440" height="50" fill="#DDD" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">VisiblePainted</text>
+
+      <svg id="visiblePainted" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-visiblePainted" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-visiblePainted" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-visiblePainted" font-style="italic" pointer-events="visiblePainted"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-visiblePainted-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-visiblePainted-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-visiblePainted-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-visiblePainted-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-visiblePainted-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-visiblePainted-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+
+    <g pointer-events="visibleFill" 
+      transform="translate(0,390)">
+      <rect x="5"    y="5" width="440" height="50" fill="#EEE" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">VisibleFill</text>
+
+      <svg id="visibleFill" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-visibleFill" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-visibleFill" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-visibleFill" font-style="italic" pointer-events="visibleFill"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-visibleFill-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-visibleFill-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-visibleFill-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-visibleFill-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-visibleFill-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-visibleFill-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+
+    <g pointer-events="visibleStroke" 
+      transform="translate(0,440)">
+      <rect x="5"    y="5" width="440" height="50" fill="#DDD" stroke="#000"/>
+      <line x1="105" y1="5" x2="105" y2="55" stroke="#000" />
+      <line x1="175" y1="5" x2="175" y2="55" stroke="#000" />
+      <line x1="255" y1="5" x2="255" y2="55" stroke="#000" />
+      <line x1="345" y1="5" x2="345" y2="55" stroke="#000" />
+      <text x="25" y="35">VisibleStroke</text>
+
+      <svg id="visibleStroke" fill="black" font-size="16" 
+                        font-weight="bold" text-anchor="middle">
+        <path id="path-visibleStroke" stroke="black" fill="white"
+              d="M115,45 c 0,-15 15,-30 30-30 v30z"/>
+        <text id="simple-visibleStroke" x="210" y="36">simple</text>
+        <text x="295" y="36" pointer-events="none">c<tspan fill="blue"
+              >om<tspan id="complex-visibleStroke" font-style="italic" pointer-events="visibleStroke"
+              >pl</tspan>e</tspan>x</text>
+      </svg>
+        <rect id="path-visibleStroke-lst" x="160" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="path-visibleStroke-chk" x="160" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="simple-visibleStroke-lst" x="240" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="simple-visibleStroke-chk" x="240" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+
+        <rect id="complex-visibleStroke-lst" x="330" y="15" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+        <rect id="complex-visibleStroke-chk" x="330" y="35" width="10" height="10" 
+          stroke-width="1" stroke="#000" fill="#888"/>
+    </g>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/javaBinding.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/javaBinding.svg
new file mode 100644
index 0000000..edeba77
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/javaBinding.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author vincent hardy sun com                                             -->
+<!-- @version $Id: javaBinding.svg 475477 2006-11-15 22:44:28Z cam $                                         
                    -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent" transform="translate(135, 120) scale(2)">
+        <rect width="40" height="40" fill="crimson" stroke-width="4" stroke="gold" />
+        <circle cx="70" cy="20" r="20" fill="crimson" stroke-width="4" stroke="gold" />
+        <rect x="50" y="50" width="40" height="40" fill="crimson" stroke-width="4" stroke="gold" />
+        <circle cx="20" cy="70" r="20" fill="crimson" stroke-width="4" stroke="gold" />
+        
+    </g>
+
+    <script type="application/java-archive" xlink:href="java-binding.jar" />
+
+    <script type="text/ecmascript"><![CDATA[
+function onDone() {
+    if (!(regardTestInstance == null)) {
+        regardTestInstance.scriptDone();   
+    } else {
+        alert("This button only works when run in the regard framework");
+    }
+}
+    ]]></script>
+
+    <g id="done" transform="translate(195, 398)" cursor="pointer" onclick="onDone()">
+        <rect rx="5" ry="5" width="60" height="25" fill="#eeeeee" stroke="black" />
+        <text x="30" y="18" font-size="14" font-weight="bold" text-anchor="middle">Done</text>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/line.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/line.svg
new file mode 100644
index 0000000..2974720
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/line.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a line attributes                                      -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: line.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;line&gt; attributes 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;line&gt; attributes in 'onload'</text>
+
+    <script type="text/ecmascript">
+
+    function initLine(evt, x1, y1, x2, y2) {
+        var elt = evt.target;
+        elt.setAttribute("x1", x1)
+        elt.setAttribute("y1", y1)
+        elt.setAttribute("x2", x2)
+        elt.setAttribute("y2", y2)
+    }
+
+    </script>
+
+    <g id="test-content">
+
+        <line style="stroke:orange; stroke-width:4" 
+              onload="initLine(evt, 50, 80, 100, 180)" />
+
+        <line style="stroke:crimson; stroke-width:4" 
+              onload="initLine(evt, 200, 80, 150, 180)" />
+
+        <line style="stroke:gold; stroke-width:4" 
+              onload="initLine(evt, 250, 80, 250, 180)" />
+
+        <line style="stroke:#eee; stroke-width:4" 
+              onload="initLine(evt, 300, 140, 400, 140)" />
+
+
+        <line style="stroke:orange; stroke-width:4" 
+              onload="initLine(evt, 50, 250, 100, 350)" />
+
+        <line style="stroke:crimson; stroke-width:4" 
+              onload="initLine(evt, 200, 250, 150, 350)" />
+
+        <line style="stroke:gold; stroke-width:4" 
+              onload="initLine(evt, 250, 250, 250, 350)" />
+
+        <line style="stroke:#eee; stroke-width:4" 
+              onload="initLine(evt, 300, 300, 400, 300)" />
+
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="225" y="220" >x1, y1, x2, y2</text>
+                <text x="225" y="382" >x1, y1, x2, y2 (units and %)</text>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/markerUpdate.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/markerUpdate.svg
new file mode 100644
index 0000000..cbcb11a
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/markerUpdate.svg
@@ -0,0 +1,184 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- check updates on gradients, filter, mask, and clip regarding to        -->
+<!-- geometry updates                                                       -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: markerUpdate.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>Marker with geometry updates</title>
+
+    <text x="50%" y="25" class="title">Marker with geometry and property updates.
+    <tspan x="50%" dy="1.1em" style="font-style:italic; font-size:12">(click on shapes or run 
button)</tspan></text>
+
+  <script type="text/ecmascript">
+
+    var svgNamespaceURI = "http://www.w3.org/2000/svg";;
+var stroke    = document.getElementById("stroke");
+var userspace = document.getElementById("userspace");
+var start = document.getElementById("start");
+var mid = document.getElementById("mid");
+var end = document.getElementById("end");
+var all = document.getElementById("all");
+
+function changeGeometryEvt(evt) {
+  changeGeometry(evt.target);
+}
+function changeGeometry(tgt) {
+  tgt.setAttribute("points", 
+                   "130 150 150 170 110 190 150 210 110 230 150 250 110 270 150 290 110 310 150 330 110 350 
130 370");
+}
+
+function changeMarkerStartEvt(evt) { changeMarkerStart(evt.target); }
+function changeMarkerStart(tgt) { 
+  changeProperty(tgt, "marker-start", "url(#markerRed)");
+}
+function changeMarkerMidEvt(evt) { changeMarkerMid(evt.target); }
+function changeMarkerMid(tgt) { 
+  changeProperty(tgt, "marker-mid", "url(#markerRed)");
+}
+function changeMarkerEndEvt(evt) { changeMarkerEnd(evt.target); }
+function changeMarkerEnd(tgt) { 
+  changeProperty(tgt, "marker-end", "url(#markerRed)");
+}
+function changeMarkerEvt(evt) { changeMarker(evt.target); }
+function changeMarker(tgt) { 
+  changeProperty(tgt, "marker", "url(#markerRed)");
+}
+function changeProperty(tgt, prop, val) {
+      tgt.style.setProperty(prop, val, "");
+}
+
+function run() {
+  changeGeometry(stroke);
+  changeGeometry(userspace);
+  changeMarkerStart(start);
+  changeMarkerMid(mid);
+  changeMarkerEnd(end);
+  changeMarker(all);
+}
+
+function regardStart() {
+  run();
+  setTimeout("regardTestInstance.scriptDone()", 100);
+}
+
+</script>
+
+  <defs>
+
+    <marker id="markerUserSpaceOnUse" refX="8" refY="8" markerUnits="userSpaceOnUse" markerWidth="16" 
markerHeight="16">
+      <circle cx="8" cy="8" r="8" style="fill:#aaa" />
+    </marker>
+
+    <marker id="markerStrokeWidth" refX="2" refY="2" markerUnits="strokeWidth" markerWidth="4" 
markerHeight="4">
+      <circle cx="2" cy="2" r="2" style="fill:#aaa" />
+    </marker>
+
+    <marker id="markerRed" refX="2" refY="2" markerUnits="strokeWidth" markerWidth="4" markerHeight="4">
+      <circle cx="2" cy="2" r="2" style="fill:#a44" />
+    </marker>
+  </defs>
+
+  <g id="test-content" transform="translate(0, -20)">
+
+    <g id="board" style="fill:none; stroke:black">
+      <rect x="40"  y="80"  width="65" height="20" style="fill:#eee"/>
+      <rect x="105" y="80" width="65" height="20" style="fill:#eee"/>
+      <rect x="170" y="80" width="65" height="20" style="fill:#eee"/>
+      <rect x="235" y="80" width="65" height="20" style="fill:#eee"/>
+      <rect x="300" y="80" width="65" height="20" style="fill:#eee"/>
+      <rect x="365" y="80" width="65" height="20" style="fill:#eee"/>
+
+      <rect x="20"  y="100" width="20" height="380" style="fill:#eee"/>
+
+      <rect x="40"  y="100" width="65" height="380" />
+      <rect x="105" y="100" width="65" height="380" />
+      <rect x="170" y="100" width="65" height="380" />
+      <rect x="235" y="100" width="65" height="380" />
+      <rect x="300" y="100" width="65" height="380" />
+      <rect x="365" y="100" width="65" height="380" />
+
+      <g style="fill:black; stroke:none; text-anchor:middle">
+        <text x="72.5" y="94">strokeWidth</text>
+        <text x="137.5" y="94">userspace<desc>userSpaceOnUse</desc></text>
+        <text x="202.5" y="94">start</text>
+        <text x="267.5" y="94">mid</text>
+        <text x="332.5" y="94">end</text>
+        <text x="397.5" y="94">marker</text>
+
+        <text x="0" y="0" transform="translate(34 290)rotate(-90)">&lt;marker></text>
+      </g>
+    </g>
+
+    <polyline id="stroke" 
+      transform="translate(-55, 0)" onclick="changeGeometryEvt(evt)" 
+      points="130 150 130 170 130 190 130 210 130 230 130 250 130 270 130 290 
+              130 310 130 330 130 350 130 370" 
+      style="stroke:black; stroke-width:4; fill:none; 
+             marker:url(#markerStrokeWidth)" />
+
+
+    <polyline id="userspace" 
+      transform="translate(10 0)" onclick="changeGeometryEvt(evt)" 
+      points="130 150 130 170 130 190 130 210 130 230 130 250 130 270 130 290 
+              130 310 130 330 130 350 130 370" 
+      style="stroke:black; stroke-width:4; fill:none; 
+             marker:url(#markerUserSpaceOnUse)" />
+
+    <polyline id="start"
+      transform="translate(75 0)" onclick="changeMarkerStartEvt(evt)" 
+      points="130 150 110 170 150 190 110 210 150 230 110 250 150 270 110 290 150 310 110 330 150 350 130 
370" 
+      style="stroke:black; stroke-width:4; fill:none; marker:url(#markerUserSpaceOnUse)" />
+
+    <polyline id="mid"
+      transform="translate(140 0)" onclick="changeMarkerMidEvt(evt)" 
+      points="130 150 110 170 150 190 110 210 150 230 110 250 150 270 110 290 150 310 110 330 150 350 130 
370" 
+      style="stroke:black; stroke-width:4; fill:none; marker:url(#markerUserSpaceOnUse)" />
+
+    <polyline id="end"
+      transform="translate(205 0)" onclick="changeMarkerEndEvt(evt)" 
+      points="130 150 110 170 150 190 110 210 150 230 110 250 150 270 110 290 150 310 110 330 150 350 130 
370" 
+      style="stroke:black; stroke-width:4; fill:none; marker:url(#markerUserSpaceOnUse)" />
+
+    <polyline id="all"
+      transform="translate(270 0)" onclick="changeMarkerEvt(evt)" 
+      points="130 150 110 170 150 190 110 210 150 230 110 250 150 270 110 290 150 310 110 330 150 350 130 
370" 
+      style="stroke:black; stroke-width:4; fill:none; 
+             marker:url(#markerUserSpaceOnUse)" />
+  </g>
+
+  <g id="run" transform="translate(195, 468)" cursor="pointer" onclick="run()">
+    <rect rx="5" ry="5" width="60" height="25" fill="#eeeeee" stroke="black" />
+    <text x="30" y="18" font-size="14" 
+      font-weight="bold" text-anchor="middle">Run</text>
+  </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/markerUpdateRef.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/markerUpdateRef.svg
new file mode 100644
index 0000000..7546c3c
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/markerUpdateRef.svg
@@ -0,0 +1,96 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- check updates on gradients, filter, mask, and clip regarding to        -->
+<!-- geometry updates                                                       -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: markerUpdateRef.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>Marker with geometry updates</title>
+
+    <text x="50%" y="45" class="title">Marker with geometry updates</text>
+
+    <script type="text/ecmascript">
+
+    var svgNamespaceURI = "http://www.w3.org/2000/svg";;
+
+    function changeGeometry(evt) {
+        evt.target.setAttribute("points", 
+         "130 150 150 170 110 190 150 210 110 230 150 250 110 270 150 290 110 310 150 330 110 350 130 370");
+    }
+
+    </script>
+
+<defs>
+
+<marker id="markerUserSpaceOnUse" refX="8" refY="8" markerUnits="userSpaceOnUse" markerWidth="16" 
markerHeight="16">
+  <circle cx="8" cy="8" r="8" style="fill:#aaa" />
+</marker>
+
+<marker id="markerStrokeWidth" refX="2" refY="2" markerUnits="strokeWidth" markerWidth="4" markerHeight="4">
+  <circle cx="2" cy="2" r="2" style="fill:#aaa" />
+</marker>
+
+</defs>
+
+
+<g id="test-content">
+
+<g id="board" style="fill:none; stroke:black">
+        <rect x="40" y="80" width="200" height="20" style="fill:#eee"/>
+        <rect x="240" y="80" width="200" height="20" style="fill:#eee"/>
+
+        <rect x="40" y="100" width="200" height="380" />
+        <rect x="240" y="100" width="200" height="380" />
+
+        <rect x="20" y="100" width="20" height="380" style="fill:#eee"/>
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="134" y="94">strokeWidth</text>
+                <text x="314" y="94">userSpaceOnUse</text>
+                <text x="0" y="0" transform="translate(34 290)rotate(-90)">&lt;marker></text>
+        </g>
+</g>
+
+<polyline onload="changeGeometry(evt)" 
+          points="130 150 110 170 150 190 110 210 150 230 110 250 150 270 110 290 150 310 110 330 150 350 
130 370" 
+          style="stroke:black; stroke-width:4; fill:none; marker:url(#markerStrokeWidth)" />
+
+
+<polyline transform="translate(200 0)" onload="changeGeometry(evt)" 
+          points="130 150 110 170 150 190 110 210 150 230 110 250 150 270 110 290 150 310 110 330 150 350 
130 370" 
+          style="stroke:black; stroke-width:4; fill:none; marker:url(#markerUserSpaceOnUse)" />
+
+</g>
+
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/maskClipUpdate.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/maskClipUpdate.svg
new file mode 100644
index 0000000..5416b67
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/maskClipUpdate.svg
@@ -0,0 +1,126 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- check updates on gradients, filter, mask, and clip regarding to        -->
+<!-- geometry updates                                                       -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: maskClipUpdate.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>Clip and mask with geometry updates</title>
+
+    <text x="50%" y="25" class="title">Clip and mask with geometry updates
+<tspan x="50%" dy="1.1em" style="font-style:italic; font-size:12">(click on all shapes and see 
+<a style="fill:blue" xlink:href="maskClipUpdateRef.svg">maskClipUpdateRef.svg</a>)</tspan></text>
+
+    <script type="text/ecmascript">
+
+    var svgNamespaceURI = "http://www.w3.org/2000/svg";;
+
+    function move(evt) {
+        var x = parseFloat(evt.target.getAttribute("x"));
+        var y = parseFloat(evt.target.getAttribute("y"));
+        evt.target.setAttribute("x", x+90);
+        evt.target.setAttribute("y", y+85);
+    }
+
+    </script>
+
+<defs>
+
+<clipPath id="clipObjectBoundingBox" clipPathUnits="objectBoundingBox">
+  <circle cx=".5" cy=".5" r=".5" />
+</clipPath>
+
+<clipPath id="clipUserSpaceOnUse" clipPathUnits="userSpaceOnUse">
+  <circle cx="340" cy="195" r="80" />
+</clipPath>
+
+<mask id="maskObjectBoundingBox" maskContentUnits="objectBoundingBox" maskUnits="objectBoundingBox"
+      x="0" y="0" width="1" height="1">
+  <circle cx=".5" cy=".5" r=".5" fill="white"/>
+</mask>
+
+<mask id="maskUserSpaceOnUse" maskContentUnits="userSpaceOnUse" maskUnits="userSpaceOnUse"
+      x="250" y="300" width="180" height="190">
+  <circle cx="340" cy="390" r="80" fill="white"/>
+</mask>
+
+</defs>
+
+
+<g id="test-content" transform="translate(0, -20)">
+
+<g id="board" style="fill:none; stroke:black">
+        <rect x="40" y="80" width="200" height="20" style="fill:#eee"/>
+        <rect x="240" y="80" width="200" height="20" style="fill:#eee"/>
+
+        <rect x="40" y="100" width="200" height="380" />
+        <rect x="240" y="100" width="200" height="380" />
+
+        <line x1="20" y1="290" x2="440" y2="290" />
+        <rect x="20" y="100" width="20" height="190" style="fill:#eee"/>
+        <rect x="20" y="290" width="20" height="190" style="fill:#eee"/>
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="134" y="94">objectBoundingBox</text>
+                <text x="314" y="94">userSpaceOnUse</text>
+                <text x="0" y="0" transform="translate(34 200)rotate(-90)">&lt;clipPath></text>
+                <text x="0" y="0" transform="translate(34 380)rotate(-90)">&lt;mask></text>
+        </g>
+</g>
+
+<rect onclick="move(evt)" x="50" y="110" width="90" height="85" style="fill:crimson; 
clip-path:url(#clipObjectBoundingBox)"/>
+<rect onclick="move(evt)" x="250" y="110" width="90" height="85" style="fill:crimson; 
clip-path:url(#clipUserSpaceOnUse)"/>
+
+<rect onclick="move(evt)" x="50" y="300" width="90" height="85" style="fill:crimson; 
mask:url(#maskObjectBoundingBox)"/>
+<rect onclick="move(evt)" x="250" y="300" width="90" height="85" style="fill:crimson; 
mask:url(#maskUserSpaceOnUse)"/>
+
+</g>
+
+
+
+    <script type="text/ecmascript"><![CDATA[
+function onDone() {
+    if (!(regardTestInstance == null)) {
+        regardTestInstance.scriptDone();   
+    } else {
+        alert("This button only works when run in the regard framework");
+    }
+}
+    ]]></script>
+    <g id="done" transform="translate(195, 468)" cursor="pointer" onclick="onDone()">
+        <rect rx="5" ry="5" width="60" height="25" fill="#eeeeee" stroke="black" />
+        <text x="30" y="18" font-size="14" font-weight="bold" text-anchor="middle">Done</text>
+    </g>
+
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/maskClipUpdateRef.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/maskClipUpdateRef.svg
new file mode 100644
index 0000000..9c497b0
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/maskClipUpdateRef.svg
@@ -0,0 +1,108 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- check updates on gradients, filter, mask, and clip regarding to        -->
+<!-- geometry updates                                                       -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: maskClipUpdateRef.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>Clip and mask with geometry updates</title>
+
+    <text x="50%" y="45" class="title">Clip and mask with geometry updates</text>
+
+    <script type="text/ecmascript">
+
+    var svgNamespaceURI = "http://www.w3.org/2000/svg";;
+
+    function move(evt) {
+        var x = parseFloat(evt.target.getAttribute("x"));
+        var y = parseFloat(evt.target.getAttribute("y"));
+        evt.target.setAttribute("x", x+90);
+        evt.target.setAttribute("y", y+85);
+    }
+
+    </script>
+
+<defs>
+
+<clipPath id="clipObjectBoundingBox" clipPathUnits="objectBoundingBox">
+  <circle cx=".5" cy=".5" r=".5" />
+</clipPath>
+
+<clipPath id="clipUserSpaceOnUse" clipPathUnits="userSpaceOnUse">
+  <circle cx="340" cy="195" r="80" />
+</clipPath>
+
+<mask id="maskObjectBoundingBox" maskContentUnits="objectBoundingBox" maskUnits="objectBoundingBox"
+      x="0" y="0" width="1" height="1">
+  <circle cx=".5" cy=".5" r=".5" fill="white"/>
+</mask>
+
+<mask id="maskUserSpaceOnUse" maskContentUnits="userSpaceOnUse" maskUnits="userSpaceOnUse"
+      x="250" y="300" width="180" height="190">
+  <circle cx="340" cy="390" r="80" fill="white"/>
+</mask>
+
+</defs>
+
+
+<g id="test-content">
+
+<g id="board" style="fill:none; stroke:black">
+        <rect x="40" y="80" width="200" height="20" style="fill:#eee"/>
+        <rect x="240" y="80" width="200" height="20" style="fill:#eee"/>
+
+        <rect x="40" y="100" width="200" height="380" />
+        <rect x="240" y="100" width="200" height="380" />
+
+        <line x1="20" y1="290" x2="440" y2="290" />
+        <rect x="20" y="100" width="20" height="190" style="fill:#eee"/>
+        <rect x="20" y="290" width="20" height="190" style="fill:#eee"/>
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="134" y="94">objectBoundingBox</text>
+                <text x="314" y="94">userSpaceOnUse</text>
+                <text x="0" y="0" transform="translate(34 200)rotate(-90)">&lt;clipPath></text>
+                <text x="0" y="0" transform="translate(34 380)rotate(-90)">&lt;mask></text>
+        </g>
+</g>
+
+<rect onload="move(evt)" x="50" y="110" width="90" height="85" style="fill:crimson; 
clip-path:url(#clipObjectBoundingBox)"/>
+<rect onload="move(evt)" x="250" y="110" width="90" height="85" style="fill:crimson; 
clip-path:url(#clipUserSpaceOnUse)"/>
+
+<rect onload="move(evt)" x="50" y="300" width="90" height="85" style="fill:crimson; 
mask:url(#maskObjectBoundingBox)"/>
+<rect onload="move(evt)" x="250" y="300" width="90" height="85" style="fill:crimson; 
mask:url(#maskUserSpaceOnUse)"/>
+
+</g>
+
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/memoryLeak1.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/memoryLeak1.svg
new file mode 100644
index 0000000..0ca74f1
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/memoryLeak1.svg
@@ -0,0 +1,88 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of text children                                          -->
+<!--                                                                        -->
+<!-- @author nicolas socheleau bitflash com                                 -->
+<!-- @version $Id: memoryLeak1.svg 475477 2006-11-15 22:44:28Z cam $                                         
                 -->
+<!-- ====================================================================== -->
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+  <script type="text/ecmascript"><![CDATA[
+    var inRegard=false;
+    var elems = new Array
+     ("t1", "t2", "r1", "r2", "c1", "c2", "ts1", "ts2", "xxx");
+
+    function regardStart() {
+      inRegard=true;
+    
+      var elem;
+      for(var i=0; i<elems.length; i++) {
+         var elem = document.getElementById(elems[i]);
+         regardTestInstance.registerElement(elem, elems[i]);
+         elem.parentNode.removeChild(elem);
+      }
+
+      setTimeout("checkElem()", 10);
+    }
+
+    function checkElem() {
+      regardTestInstance.checkObjects(elems);
+    // setTimeout("regardTestInstance.scriptDone()", 30000);
+      regardTestInstance.scriptDone();
+    }
+]]></script>
+
+  <defs>
+      <rect id="xxx" x="10"  y="150" width="100" height="50" fill="purple"/>
+  </defs>
+
+  <g id="test-content">
+    <g style="font-size:20" >
+      <text id="t1_bg" x="5"   y="135" fill="purple" >Simple Text</text>
+      <text id="t2"    x="155" y="135" fill="crimson">Simple Text</text>
+      <text id="t1"    x="305" y="135" fill="gold"   >Simple Text</text>
+    </g>
+
+    <g>
+      <rect id="r_bg" x="10"  y="150" width="100" height="50" fill="purple"/>
+      <rect id="r1"   x="160" y="150" width="100" height="50" fill="crimson"/>
+      <rect id="r2"   x="310" y="150" width="100" height="50" fill="gold"/>
+    </g>
+
+    <g>
+      <circle id="c_bg" cx="60"  cy="235" r="25" fill="purple"/>
+      <circle id="c1"   cx="210" cy="235" r="25" fill="crimson"/>
+      <circle id="c2"   cx="360" cy="235" r="25" fill="gold"/>
+    </g>
+
+    <g style="font-size:15" >
+      <text x="5"  y="290" fill="purple">Some 
+        <tspan id="ts_bg" font-weight="bold">Complex</tspan> Text</text>
+      <text x="155"  y="290" fill="crimson">Some 
+        <tspan id="ts1" font-weight="bold">Complex</tspan> Text</text>
+      <text x="305"  y="290" fill="gold">Some 
+        <tspan id="ts2" font-weight="bold">Complex</tspan> Text</text>
+    </g>
+  </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/modalEventTest.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/modalEventTest.svg
new file mode 100644
index 0000000..9289689
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/modalEventTest.svg
@@ -0,0 +1,118 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Simple test to validate that events are properly dispatched. This      -->
+<!-- test shows a problem we had due to isModalEvent.                       -->
+<!-- For example: mousedown on red circle, move out of circle, mouseup.     -->
+<!-- This sequence should not trigger the circle's mouseup handler.         -->
+<!--                                                                        -->
+<!-- @author vincent hardy sun com                                          -->
+<!-- @version $Id: modalEventTest.svg 475685 2006-11-16 11:16:05Z cam $                                      
                    -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>Modal Event Test</title>
+
+    <text x="50%" y="45" class="title">Modal Event Test</text>
+
+    <text transform="translate(225,140)" class="legend">
+        <tspan x="0" dy="0">Test 1: Press mousedown on circle, move out, release</tspan>
+        <tspan x="0" dy="1.2em">Test 2: Press mousedown out of circle, move in, release</tspan>
+        <tspan x="0" dy="1.2em">Test 3: Press mousedown out of circle, move through, release</tspan>
+        <tspan x="0" dy="1.6em">Hit the clear button between tests</tspan>
+    </text>
+
+    <script type="text/ecmascript"><![CDATA[
+
+    var svgNamespaceURI = "http://www.w3.org/2000/svg";;
+
+function onMouseDown(id) {
+    // First, turn mouse control green
+    var ctrl = document.getElementById("mouseDownCtrl");
+    ctrl.setAttribute("fill", "rgb(0,255,0)");
+}
+
+function onMouseUp(id) {
+    // First, turn mouse control green
+    var ctrl = document.getElementById("mouseUpCtrl");
+    ctrl.setAttribute("fill", "rgb(0,255,0)");
+}
+
+function clear() {
+    var ctrl = document.getElementById("mouseDownCtrl");
+    ctrl.setAttribute("fill", "gray");
+    ctrl = document.getElementById("mouseUpCtrl");
+    ctrl.setAttribute("fill", "gray");
+}
+
+
+    ]]></script>
+
+    <defs>    
+        <rect id="button" x="-30" y="-15" width="60" height="20" />
+    </defs>
+
+    <style type="text/css"><![CDATA[
+        use.button {
+            fill: #eeeeee;
+            stroke: black;
+        }
+
+        text.button {
+            fill: black;
+            stroke: none;
+            text-anchor: middle;
+        }
+    ]]></style>
+
+    <g id="originalGroup" transform="translate(225,250)">
+        <g id="target" onmousedown="onMouseDown('target')" onmouseup="onMouseUp(evt)"  >
+            <circle cx="0" cy="0" r="30" fill="crimson" />
+        </g>    
+    </g>
+
+    <g id="insertionPointGroup" transform="translate(225,250) scale(2)">
+    </g>
+
+    <g transform="translate(150, 350)">
+        <circle id="mouseDownCtrl" r="10" stroke="black" fill="gray" />
+        <text class="legend" y="20">mousedown</text>
+    </g>
+
+    <g transform="translate(300, 350)">
+        <circle id="mouseUpCtrl" r="10" stroke="black" fill="gray" />
+        <text class="legend" y="20" >mouseup</text>
+    </g>
+
+    <g transform="translate(225,450)">
+        <a onclick="clear()">
+            <use class="button" xlink:href="#button" />
+            <text class="button">Clear</text>
+        </a>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/nestedsvg.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/nestedsvg.svg
new file mode 100644
index 0000000..fc0dc61
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/nestedsvg.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- append child test                                                      -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: nestedsvg.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>nested svg element</title>
+
+    <script type="text/ecmascript"><![CDATA[
+        function build(evt) {
+                var g = evt.target;
+                var svg = g.ownerDocument.getElementById('svg');
+                g.appendChild(svg);
+        }
+
+    ]]></script>
+
+<defs>
+
+  <svg id="svg">
+    <rect x="10%" y="10%" width="80%" height="80%" style="fill:crimson" />
+  </svg>
+
+</defs>
+
+<g>
+    <g onload="build(evt)" id="test-content">
+    </g>
+</g>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/normalizedPathTest.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/normalizedPathTest.svg
new file mode 100644
index 0000000..fdff1df
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/normalizedPathTest.svg
@@ -0,0 +1,63 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Illustrates how a SVG Normalized Path does not have loss of precision. -->
+<!--                                                                        -->
+<!-- @author andrest world-affair com                                       -->
+<!-- @version $Id: normalizedPathTest.svg                                   -->
+<!-- ====================================================================== -->
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+    xmlns="http://www.w3.org/2000/svg"; 
+    xmlns:xlink="http://www.w3.org/1999/xlink"; 
+    onload="normalizePaths();">
+  <script type="text/ecmascript">
+    function normalizePaths() {
+        var originalPath= document.getElementById("SamplePath");
+        var normalizedPath = originalPath.cloneNode(false);
+        
+        var list = normalizedPath.getNormalizedPathSegList();
+        list.insertItemBefore(list.removeItem(0), 0);
+        
+        document.getElementById("overlay").appendChild(normalizedPath);
+    }
+  </script>
+  <title>Normalized Path Test</title>
+
+  <g id="background" transform="translate(10,10)" style="fill:none;stroke:black;stroke-width:2">
+    <rect x="0" y ="0" width="430" height="480"/>
+    <rect x="5" y ="5" width="420" height="20" fill="gray"/>
+    <text x="10" y ="20" stroke="none" fill="yellow">Normalized Path Test</text>
+  </g>
+  <g id="canvas" style="fill:none;stroke:darkgray;stroke-width:10" transform="translate(75,60)">
+    <path id="SamplePath" d="M0,50 C0,0 50,0 50,50 S100,100 100,50 h20 l20,30 v-30 
+      c0,-50 50,-50 50,0 s50,50 50,0 L 280,50 v60 h-60 v40
+      a50,50 0 1,1 -50,50 A60 80 0 0,0 150,300
+      Q125,350 100,300q-25-50 -50,0t-50,0q-40,-20 0-80T0,150
+      l-40,-10 V380 H150 a25,25 -30 0,1 50,-25 l 50,-25 
+      a25,50 -30 0,1 50,-25 l 50,-25"/>
+  </g>
+  <g id="overlay" style="fill:none;stroke:lightgray;stroke-width:3" transform="translate(75,60)">
+
+  </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/paintType.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/paintType.svg
new file mode 100644
index 0000000..ad3ef81
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/paintType.svg
@@ -0,0 +1,142 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Test of paintType DOM interface                                        -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: paintType.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     onload="doTest()"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+
+   <title>Test of paintType DOM interface</title>
+
+   <text x="50%" y="45" class="title">Test of paintType DOM interface</text>
+
+   <script type="text/ecmascript">
+      var svgNamespaceURI = "http://www.w3.org/2000/svg";;
+      var UNKNOWN               = 0;
+      var RGBCOLOR              = 1;
+      var RGBCOLOR_ICCCOLOR     = 2;
+      var NONE                  = 101;
+      var CURRENTCOLOR          = 102;
+      var URI_NONE              = 103;
+      var URI_CURRENTCOLOR      = 104;
+      var URI_RGBCOLOR          = 105;
+      var URI_RGBCOLOR_ICCCOLOR = 106;
+      var URI                   = 107;
+
+      function getType(id, attr) {
+        var e = document.getElementById(id);
+        var pa = e.getPresentationAttribute(attr);
+        var pt = pa.paintType;
+        var txt;
+        if      (pt == UNKNOWN)               txt="UNKNOWN";
+        else if (pt == RGBCOLOR)              txt="RGBCOLOR";
+        else if (pt == RGBCOLOR_ICCCOLOR)     txt="RGBCOLOR_ICCCOLOR";
+        else if (pt == NONE)                  txt="NONE";
+        else if (pt == CURRENTCOLOR)          txt="CURRENTCOLOR";
+        else if (pt == URI_NONE)              txt="URI_NONE";
+        else if (pt == URI_CURRENTCOLOR)      txt="URI_CURRENTCOLOR";
+        else if (pt == URI_RGBCOLOR)          txt="URI_RGBCOLOR";
+        else if (pt == URI_RGBCOLOR_ICCCOLOR) txt="URI_RGBCOLOR_ICCCOLOR";
+        else if (pt == URI)                   txt="URI";
+        else                                  txt="Unknown paint type";
+
+        e = document.getElementById("text."+id);
+        e.appendChild(document.createTextNode(txt));
+      }
+
+      function doTest() {
+         getType("r1", "fill");
+         getType("r2", "fill");
+         getType("r3", "fill");
+         getType("r4", "fill");
+         getType("r5", "fill");
+         getType("r6", "fill");
+         getType("r7", "fill");
+         getType("r8", "fill");
+         getType("r9", "fill");
+         getType("r10", "fill");
+         getType("r11", "fill");
+         getType("r12", "fill");
+      }
+   </script>
+
+   <linearGradient id="lg" spreadMethod="repeat">
+      <stop offset="0" stop-color="gold" />
+      <stop offset="1" stop-color="crimson" />
+   </linearGradient>
+
+   <color-profile name="changeColorAuto" 
+                  rendering-intent="auto"
+                  xlink:href="../../resources/icc/changeColor.icm"/>
+
+   <g color="green" text-anchor="middle">
+      <rect id="r1" x="30"  y="80" height="75" width="75" fill="#F00"/>
+      <rect id="r2" x="135" y="80" height="75" width="75" fill="gold"/>
+      <rect id="r3" x="240" y="80" height="75" width="75" fill="currentColor"/>
+      <rect id="r4" x="345" y="80" height="75" width="75" fill="url(#lg)"/>
+
+      <text id="text.r1" x="67.5"  y="170"/>
+      <text id="text.r2" x="172.5" y="185"/>
+      <text id="text.r3" x="277.5" y="170"/>
+      <text id="text.r4" x="382.5" y="185"/>
+
+
+      <rect id="r5" x="30"  y="195" height="75" width="75" 
+            fill="none" stroke="black"/>
+      <rect id="r6" x="135" y="195" height="75" width="75" 
+            fill="gold icc-color(changeColorAuto, 0.702, 0.2745, 0.098)"/>
+      <rect id="r7" x="240" y="195" height="75" width="75" 
+            fill="url(#lg) none"/>
+      <rect id="r8" x="345" y="195" height="75" width="75" 
+            fill="url(#lg) gold"/>
+
+      <text id="text.r5" x="67.5"  y="290"/>
+      <text id="text.r6" x="172.5" y="305"/>
+      <text id="text.r7" x="277.5" y="290"/>
+      <text id="text.r8" x="382.5" y="305"/>
+
+
+      <rect id="r9" x="30"  y="320" height="75" width="75" 
+            fill="url(#lg) currentColor"/>
+      <rect id="r10" x="135" y="320" height="75" width="75" 
+       fill="url(#lg) gold icc-color(changeColorAuto, 0.702, 0.2745, 0.098)"/>
+      <rect id="r11" x="240" y="320" height="75" width="75" 
+            fill="url(#no_such_uri) gold"/>
+      <rect id="r12" x="345" y="320" height="75" width="75" 
+            fill="url(#no_such_uri) currentColor"/>
+
+      <text id="text.r9" x="67.5"  y="415"/>
+      <text id="text.r10" x="172.5" y="430"/>
+      <text id="text.r11" x="277.5" y="415"/>
+      <text id="text.r12" x="382.5" y="430"/>
+
+   </g>
+</svg>
\ No newline at end of file
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/path.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/path.svg
new file mode 100644
index 0000000..a1c3c7f
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/path.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a path attributes                                      -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: path.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;path&gt; attributes 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;path&gt; attributes in 'onload'</text>
+
+    <script type="text/ecmascript">
+
+    function initPath(evt, d) {
+        var elt = evt.target;
+        elt.setAttribute("d", d)
+    }
+
+    </script>
+
+    <g id="test-content" >
+
+        <path d="M0 0" style="fill:gold; stroke:orange; stroke-width:4" 
+           onload="initPath(evt, '   m  150   250      a  100    40       0          1       0      25   -70 
  z ')" />
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="225" y="300" >d</text>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/pathLength.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/pathLength.svg
new file mode 100644
index 0000000..32d7e35
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/pathLength.svg
@@ -0,0 +1,122 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Test of getPathLength, and getPointAtLength interfaces.                -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: pathLength.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+  onload="load(evt)"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+
+   <title>Test getPathLength and getPointAtLength interfaces</title>
+
+   <text x="50%" y="40" class="title"
+    >Test getPathLength and getPointAtLength interfaces</text>
+
+   <style type="text/css"><![CDATA[
+     text { stroke: none }
+     circle { stroke: none }
+     path   { fill:none }
+]]></style>
+
+   <script type="text/ecmascript">
+    var svgNamespaceURI = "http://www.w3.org/2000/svg";;
+    var doc;
+
+    function doLength(cnt, dist) {
+      var p = doc.getElementById("p"+cnt);
+      var l = doc.getElementById("l"+cnt);
+      var c = doc.getElementById("c"+cnt);
+
+      var len, pt;
+      len = p.getTotalLength();
+      pt  = p.getPointAtLength(dist);
+      l.appendChild(doc.createTextNode(("Len: " + len).substring(0, 10)));
+      c.setAttribute("cx", ""+pt.getX());
+      c.setAttribute("cy", ""+pt.getY());
+    }
+
+    function load(evt) {
+      doc = evt.target.getOwnerDocument();
+      doLength(1, 25);
+      doLength(2, 25);
+      doLength(3, 25);
+      doLength(4, 25);
+      doLength(5, 25);
+      doLength(6, 25);
+      doLength(7, (78.546)/2);
+      doLength(8, 25);
+
+    }
+   </script>
+
+   <g stroke="black">
+      <path id="p1" d="M 20,60 h 50"/>  
+      <text id="l1" x="80" y="65"/>
+      <circle cx="45" cy="60" r="3" fill="red"/>
+      <circle id="c1" cx="0" cy="0" r="1" fill="black"/>
+
+      <path id="p2" d="M 20,60 l 40,30"/>
+      <text id="l2" x="70" y="95"/>
+      <circle cx="40" cy="75" r="3" fill="red"/>
+      <circle id="c2" cx="0" cy="0" r="1" fill="black"/>
+
+      <path id="p3" d="M 20,60 v 50"/>
+      <text id="l3" x="30" y="115"/>
+      <circle cx="20" cy="85" r="3" fill="red"/>
+      <circle id="c3" cx="0" cy="0" r="1" fill="black"/>
+
+      <path id="p4" d="M 170,60 c 15 0 35 0 50 0"/>
+      <text id="l4" x="230" y="65"/>
+      <circle cx="195" cy="60" r="3" fill="red"/>
+      <circle id="c4" cx="0" cy="0" r="1" fill="black"/>
+
+      <path id="p5" d="M 170,60 c 15 0 30 0 30,40"/>
+      <text id="l5" x="210" y="105"/>
+      <circle cx="192.8" cy="67.3" r="3" fill="red"/>
+      <circle id="c5" cx="0" cy="0" r="1" fill="black"/>
+
+      <path id="p6" d="M 20,170 a 10 0 0 0 0 50 0"/>
+      <text id="l6" x="80" y="175"/>
+      <circle cx="45" cy="170" r="3" fill="red"/>
+      <circle id="c6" cx="0" cy="0" r="1" fill="black"/>
+
+      <path id="p7" d="M 20,170 a 10 10 0 0 0 50 0"/>
+      <text id="l7" x="80" y="195"/>
+      <circle cx="45" cy="195" r="3" fill="red"/>
+      <circle id="c7" cx="0" cy="0" r="1" fill="black"/>
+
+      <path id="p8" d="M 170,170 v10h10v-10h10v10"/>
+      <text id="l8" x="200" y="180"/>
+      <circle cx="180" cy="175" r="3" fill="red"/>
+      <circle id="c8" cx="0" cy="0" r="1" fill="black"/>
+
+
+   </g>
+</svg>
\ No newline at end of file
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/path_pathSegList1.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/path_pathSegList1.svg
new file mode 100644
index 0000000..2458685
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/path_pathSegList1.svg
@@ -0,0 +1,256 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ======================================================================  -->
+<!-- Modification of a polygon attributes                                    -->
+<!--                                                                         -->
+<!-- @author nicolas socheleau bitflash com                                  -->
+<!-- @version $Id: path_pathSegList1.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ======================================================================  -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>&lt;path&gt; getPathSegList &apos;onload&apos;</title>
+
+  <text x="50%" y="45" class="title">&lt;path&gt; getPathSegList() in &apos;onload&apos;
+  </text>
+  <defs>
+     <path id="segment_provider" d="M150 200 L200 200 C 210 180 250 240 220 250 Q 210 275 200 250 L 182.5 
237.5 150 250 162.5 212.5z"/>
+  </defs>
+  <script type="text/ecmascript"><![CDATA[    
+        function getNumberOfItems(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getPathSegList().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" "+nb+" segments");    
+        }
+        function clear(evt) 
+        {        
+           var elt = evt.target;
+           elt.getPathSegList().clear()
+           nb = elt.getPathSegList().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test2_text');        
+           text.getFirstChild().appendData(" "+nb+" segments");    
+        }
+
+        function getItem(index,evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getPathSegList().getItem(index);        
+           var text = elt.getOwnerDocument().getElementById('test3_text');        
+           text.getFirstChild().appendData(" "+nb.getPathSegTypeAsLetter()+" 
("+nb.getX()+","+nb.getY()+")");    
+        }
+
+        function insertItemBefore(evt,fromIndex,index) 
+        {        
+           var elt = evt.target;        
+           pointProvider = elt.getOwnerDocument().getElementById('segment_provider');
+           point = pointProvider.getPathSegList().getItem(fromIndex);
+           nb = elt.getPathSegList().insertItemBefore(point,index);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ("+nb.getPathSegTypeAsLetter()+")");    
+        }
+        function replaceItem(evt,fromIndex,index) 
+        {        
+           var elt = evt.target;        
+           pointProvider = elt.getOwnerDocument().getElementById('segment_provider');
+           point = pointProvider.getPathSegList().getItem(fromIndex);
+           nb = elt.getPathSegList().replaceItem(point,index);
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ("+nb.getPathSegTypeAsLetter()+")");    
+        }
+
+        function removeItem(evt,index) 
+        {        
+           var elt = evt.target;        
+           var nb = elt.getPathSegList().removeItem(index);        
+           var text = elt.getOwnerDocument().getElementById('test6_text');        
+           text.getFirstChild().appendData(" "+nb.getPathSegTypeAsLetter()+" ");    
+        }
+
+        function initializeAppendItem(evt,fromIndex1) 
+        {        
+           var elt = evt.target;        
+           pointProvider = elt.getOwnerDocument().getElementById('segment_provider');
+           point = pointProvider.createSVGPathSegMovetoAbs(150,200);
+           nb = elt.getPathSegList().initialize(point);        
+           var text = elt.getOwnerDocument().getElementById('test71_text');        
+           text.getFirstChild().appendData(" ("+nb.getPathSegTypeAsLetter()+")");
+           point = pointProvider.getPathSegList().getItem(fromIndex1);
+           nb = elt.getPathSegList().appendItem(point);        
+           text = elt.getOwnerDocument().getElementById('test72_text');        
+           text.getFirstChild().appendData(" ("+nb.getPathSegTypeAsLetter()+")");
+        }
+
+        function setAttribute(evt,pointsList) 
+        {        
+           var elt = evt.target;
+           var points = elt.getPathSegList();
+           nb = points.getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test81_text');        
+           text.getFirstChild().appendData(" "+nb+" points");
+
+           elt.setAttributeNS(null,"d",pointsList);
+
+           nb = points.getNumberOfItems();        
+           text = elt.getOwnerDocument().getElementById('test82_text');        
+           text.getFirstChild().appendData(" "+nb+" points");
+        
+        }
+
+        function setAttribute2(evt,pointsList) 
+        {        
+           var elt = evt.target;
+           var points = elt.getPathSegList();
+           nb = points.getItem(1);        
+           var text = elt.getOwnerDocument().getElementById('test91_text');        
+           text.getFirstChild().appendData(" "+nb.getPathSegTypeAsLetter()+" ("+nb.getX()+","+nb.getY()+")");
+
+           elt.setAttributeNS(null,"d",pointsList);
+
+           text = elt.getOwnerDocument().getElementById('test92_text');        
+           text.getFirstChild().appendData(" "+nb.getPathSegTypeAsLetter()+" ("+nb.getX()+","+nb.getY()+")");
+        
+        }
+
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -140 -91.37931)">
+
+        <!-- onload="getNumberOfItems(evt)" -->
+        <text x="180" y="160" font-size="11">getNumberOfItems</text>
+     <path style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" d="M150 200 L200 200 C 210 180 250 240 
220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z"/>
+     <path  id="test1" style="fill:gold; stroke:orange; stroke-width:4" d="M150 200 L200 200 C 210 180 250 
240 220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z" onload="getNumberOfItems(evt)"/>
+     <text x="160" font-size="9" y="290" id="test1_text">
+        path with
+     </text>
+
+     <!-- clear(evt) -->
+     <g transform="translate(150,0)">
+        <text x="180" y="160" font-size="11">clear</text>
+     <path style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" d="M150 200 L200 200 C 210 180 250 240 
220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z"/>
+     <path  id="test2" style="fill:gold; stroke:orange; stroke-width:4" d="M150 200 L200 200 C 210 180 250 
240 220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z" onload="clear(evt)"/>
+     <text x="160" font-size="9" y="290" id="test2_text">
+        path with
+     </text>
+     </g>
+
+     <!-- getItem(evt) -->
+     <g transform="translate(300,0)">
+        <text x="180" y="160" font-size="11">getItem</text>
+     <path style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" d="M150 200 L200 200 C 210 180 250 240 
220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z"/>
+     <path  id="test3" style="fill:gold; stroke:orange; stroke-width:4" d="M150 200 L200 200 C 210 180 250 
240 220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z" onload="getItem(1,evt)"/>
+     <text x="160" font-size="9" y="290" id="test3_text">
+        Item 1:
+     </text>
+     </g>
+
+
+     <g transform="translate(0,150)" >
+        <!-- onload="insertItemBefore(evt)" -->
+        <text x="180" y="160" font-size="11"  >insertItemBefore</text>
+     <path style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" d="M150 200 L200 200 C 210 180 250 240 
220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z"/>
+        <path id="test4" fill="#ffd700" stroke-width="4.0" 
+           d="M175 200 L175 250 225 250 225 200z" 
+           stroke="#ffa500"
+           onload="insertItemBefore(evt,5,1)" />
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        inserted seg
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="replaceItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >replaceItem</text>
+     <path style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" d="M150 200 L200 200 C 210 180 250 240 
220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z"/>
+        <path id="test5" fill="#ffd700" stroke-width="4.0" 
+           d="M175 200 L175 250 225 250 225 200z" 
+           stroke="#ffa500"
+           onload="replaceItem(evt,3,2)" />
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        replaced seg
+     </text>
+    </g>
+
+     <!-- removeItem(evt) -->
+     <g transform="translate(300,150)">
+        <text x="180" y="160" font-size="11">removeItem</text>
+     <path style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" d="M150 200 L200 200 C 210 180 250 240 
220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z"/>
+     <path  id="test6" style="fill:gold; stroke:orange; stroke-width:4" d="M150 200 L200 200 C 210 180 250 
240 220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z" onload="removeItem(evt,3)"/>
+     <text x="160" font-size="9" y="290" id="test6_text">
+        Item removed :
+     </text>
+     </g>
+
+
+     <g transform="translate(0,300)" >
+        <!-- onload="initialize/appendItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >initialize/appendItem</text>
+     <path style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" d="M150 200 L200 200 C 210 180 250 240 
220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z"/>
+        <path id="test7" fill="#ffd700" stroke-width="4.0" 
+           d="M175 200 L175 250 225 250 225 200z" 
+           stroke="#ffa500"
+           onload="initializeAppendItem(evt,1)" />
+     <text x="160" font-size="9" y="275"  id="test71_text">
+        intialized seg
+     </text>
+     <text x="160" font-size="9" y="285"  id="test72_text">
+        appended seg
+     </text>
+    </g>
+
+     <g transform="translate(150,300)" >
+        <!-- onload="setAttribute(evt)" -->
+        <text x="180" y="160" font-size="11"  >setAttribute</text>
+        <path style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" d="M150 200 L200 200 C 210 180 250 
240 220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z"/>
+        <path id="test8" fill="#ffd700" stroke-width="4.0" 
+           d="M150 200 L200 200 C 210 180 250 240 220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 
212.5z" 
+           stroke="#ffa500"
+           onload="setAttribute(evt,'M175 200 L175 250 225 250 225 200z')" />
+
+     <text x="160" font-size="9" y="275"  id="test81_text">
+        before
+     </text>
+     <text x="160" font-size="9" y="285"  id="test82_text">
+        after
+     </text>
+    </g>
+
+     <g transform="translate(300,300)" >
+        <!-- onload="setAttribute2(evt)" -->
+        <text x="180" y="160" font-size="11"  >setAttribute2</text>
+        <path style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" d="M150 200 L200 200 C 210 180 250 
240 220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z"/>
+        <path id="test9" fill="#ffd700" stroke-width="4.0" 
+           d="M150 200 L200 200 C 210 180 250 240 220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 
212.5z" 
+           stroke="#ffa500"
+           onload="setAttribute2(evt,'M175 200 L175 250 225 250 225 200z')" />
+     <text x="160" font-size="9" y="275"  id="test91_text">
+        segment 1 before
+     </text>
+     <text x="160" font-size="9" y="285"  id="test92_text">
+        segment 1 after
+     </text>
+    </g>
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/path_pathSegList2.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/path_pathSegList2.svg
new file mode 100644
index 0000000..2d6004f
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/path_pathSegList2.svg
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+--><!--      ======================================================================      -->
+<!--      Modification of a polygon attributes                                        -->
+<!--                                                                                  -->
+<!--      @author nicolas socheleau bitflash com                                      -->
+<!--      @version $Id: path_pathSegList2.svg 475477 2006-11-15 22:44:28Z cam $      -->
+<!--      ======================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>&lt;path&gt; getPathSegList &apos;onload&apos;</title>
+
+  <text x="50%" y="45" class="title">&lt;path&gt; getPathSegList() in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[    
+        function getNumberOfItems(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getPathSegList().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" "+nb+" segments");    
+        }
+        function insertItemBefore(evt,fromIndex,index) 
+        {        
+           var elt = evt.target;        
+           pointProvider = elt.getOwnerDocument().getElementById('test1');
+           point = pointProvider.getPathSegList().getItem(fromIndex);
+           nb = elt.getPathSegList().insertItemBefore(point,index);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ("+nb.getPathSegType()+")");    
+        }
+        function replaceItem(evt,fromIndex,index) 
+        {        
+           var elt = evt.target;        
+           pointProvider = elt.getOwnerDocument().getElementById('test1');
+           point = pointProvider.getPathSegList().getItem(fromIndex);
+           nb = elt.getPathSegList().replaceItem(point,index);
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ("+nb.getPathSegType()+")");    
+        }
+
+        function initializeAppendItem(evt,fromIndex1) 
+        {        
+           var elt = evt.target;        
+           pointProvider = elt.getOwnerDocument().getElementById('test1');
+           point = pointProvider.createSVGPathSegMovetoAbs(150,200);
+           nb = elt.getPathSegList().initialize(point);        
+           var text = elt.getOwnerDocument().getElementById('test71_text');        
+           text.getFirstChild().appendData(" ("+nb.getPathSegType()+")");
+           point = pointProvider.getPathSegList().getItem(fromIndex1);
+           nb = elt.getPathSegList().appendItem(point);        
+           text = elt.getOwnerDocument().getElementById('test72_text');        
+           text.getFirstChild().appendData(" ("+nb.getPathSegType()+")");
+        }
+
+    function createNextSibling(evt){
+
+      var elt = evt.target;
+      var doc = elt.getOwnerDocument();
+
+      var path = doc.createElementNS(elt.getNamespaceURI(),"path");
+      path.setAttribute("style","fill:#ffd700;stroke-width:4.0;stroke:#ffa500");
+      var segList = path.getPathSegList();
+
+      segList.appendItem(path.createSVGPathSegMovetoAbs(150,200));
+      segList.appendItem(path.createSVGPathSegLinetoAbs(200,200));
+      segList.appendItem(path.createSVGPathSegCurvetoCubicAbs(220,250,210,180,250,240));
+      segList.appendItem(path.createSVGPathSegCurvetoQuadraticAbs(200,250,210,275)); 
+      segList.appendItem(path.createSVGPathSegLinetoAbs(182.5,237.5));
+      segList.appendItem(path.createSVGPathSegLinetoAbs(150,250));
+      segList.appendItem(path.createSVGPathSegLinetoAbs(162.5,212.5));
+      segList.appendItem(path.createSVGPathSegClosePath());
+
+      var text = elt.getOwnerDocument().getElementById('test8_text');        
+      text.getFirstChild().appendData(" "+segList.getNumberOfItems()+" segments");    
+
+      elt.getParentNode().insertBefore(path,elt.getNextSibling());
+    }
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -140 -91.37931)">
+
+        <!-- onload="getNumberOfItems(evt)" -->
+        <text x="180" y="160" font-size="11">segment provider</text>
+     <path style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" d="M150 200 L200 200 C 210 180 250 240 
220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z"/>
+     <path  id="test1" style="fill:gold; stroke:orange; stroke-width:4" d="M150 200 L200 200 C 210 180 250 
240 220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z" onload="getNumberOfItems(evt)"/>
+     <text x="160" font-size="9" y="290" id="test1_text">
+        path with
+     </text>
+
+     <g transform="translate(0,150)" >
+        <!-- onload="insertItemBefore(evt)" -->
+        <text x="180" y="160" font-size="11"  >insertItemBefore</text>
+     <path style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" d="M150 200 L200 200 C 210 180 250 240 
220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z"/>
+        <path id="test4" fill="#ffd700" stroke-width="4.0" 
+           d="M200 200 L200 250 250 250 250 200z" 
+           stroke="#ffa500"
+           onload="insertItemBefore(evt,5,1)" />
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        inserted seg
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="replaceItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >replaceItem</text>
+     <path style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" d="M150 200 L200 200 C 210 180 250 240 
220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z"/>
+        <path id="test5" fill="#ffd700" stroke-width="4.0" 
+           d="M200 200 L250 200 250 250 200 250z" 
+           stroke="#ffa500"
+           onload="replaceItem(evt,3,2)" />
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        replaced seg
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="initialize/appendItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >initialize/appendItem</text>
+     <path style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" d="M150 200 L200 200 C 210 180 250 240 
220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z"/>
+        <path id="test7" fill="#ffd700" stroke-width="4.0" 
+           d="M200 200 L250 200 250 250 200 250z" 
+           stroke="#ffa500"
+           onload="initializeAppendItem(evt,1)" />
+     <text x="160" font-size="9" y="275"  id="test71_text">
+        intialized seg
+     </text>
+     <text x="160" font-size="9" y="285"  id="test72_text">
+        appended seg
+     </text>
+    </g>
+
+     <g transform="translate(300,0)" >
+        <!-- onload="initialize/appendItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >new Path</text>
+     <path style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" d="M150 200 L200 200 C 210 180 250 240 
220 250 Q 210 275 200 250 L 182.5 237.5 150 250 162.5 212.5z" onload="createNextSibling(evt)" />
+     <text x="160" font-size="9" y="285"  id="test8_text">
+        path with
+     </text>
+    </g>
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/path_pathSegList_create.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/path_pathSegList_create.svg
new file mode 100644
index 0000000..169b24e
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/path_pathSegList_create.svg
@@ -0,0 +1,235 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a path attributes                                      -->
+<!--                                                                        -->
+<!-- @author nicolas socheleau bitflash com-->
+<!-- @version $Id: path_pathSegList_create.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;path&gt; attributes 'onload'</title>
+
+    <text text-anchor="middle" x="50%" y="25" class="title">&lt;path&gt; getPathSegList() 
+in 'onload'</text>
+
+    <script type="text/ecmascript">
+        var SVGNS = "http://www.w3.org/2000/svg";;
+    function moveclose(evt) {
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var path = doc.createElementNS(SVGNS,"path");
+        //alert(path);
+
+        var seg = path.pathSegList;
+        //alert(seg);
+        //d="M50 50 L100 50 L100 60 L50 60 z m15 20 l20 0 l0 -30 l-20 0 z"
+        segment = path.createSVGPathSegMovetoAbs(50,50);
+        //alert(segment);
+        seg.appendItem(segment);
+        seg.appendItem(path.createSVGPathSegLinetoAbs(100,50));
+        seg.appendItem(path.createSVGPathSegLinetoAbs(100,60));
+        seg.appendItem(path.createSVGPathSegLinetoAbs(50,60));
+        seg.appendItem(path.createSVGPathSegClosePath());
+
+        seg.appendItem(path.createSVGPathSegMovetoRel(15,20));
+        seg.appendItem(path.createSVGPathSegLinetoRel(20,0));
+        seg.appendItem(path.createSVGPathSegLinetoRel(0,-30));
+        seg.appendItem(path.createSVGPathSegLinetoRel(-20,0));
+        seg.appendItem(path.createSVGPathSegClosePath());
+
+        elt.insertBefore(path, elt.getFirstChild());
+    }
+
+    function horizonvertic(evt) {
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var path = doc.createElementNS(SVGNS,"path");
+
+        var seg = path.getPathSegList();
+        //d="M50 50 H100 V60 H50 z m15 20 h20 v-30 h-20 z"
+        seg.appendItem(path.createSVGPathSegMovetoAbs(50,50));
+        seg.appendItem(path.createSVGPathSegLinetoHorizontalAbs(100));
+        seg.appendItem(path.createSVGPathSegLinetoVerticalAbs(60));
+        seg.appendItem(path.createSVGPathSegLinetoHorizontalAbs(50));
+        seg.appendItem(path.createSVGPathSegClosePath());
+
+        seg.appendItem(path.createSVGPathSegMovetoRel(15,20));
+        seg.appendItem(path.createSVGPathSegLinetoHorizontalRel(20));
+        seg.appendItem(path.createSVGPathSegLinetoVerticalRel(-30));
+        seg.appendItem(path.createSVGPathSegLinetoHorizontalRel(-20));
+        seg.appendItem(path.createSVGPathSegClosePath());
+
+        elt.insertBefore(path, elt.getFirstChild());
+    }
+
+    function cubic(evt) {
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var path = doc.createElementNS(SVGNS,"path");
+
+        var seg = path.getPathSegList();
+        //d="M50 50C100 50 100 60 50 60z m15 30 c -50 0 -50 -10 0 -10z "
+        seg.appendItem(path.createSVGPathSegMovetoAbs(50,50));
+        seg.appendItem(path.createSVGPathSegCurvetoCubicAbs(50,60,100,50,100,60));
+        seg.appendItem(path.createSVGPathSegClosePath());
+
+        seg.appendItem(path.createSVGPathSegMovetoRel(15,30));
+        seg.appendItem(path.createSVGPathSegCurvetoCubicRel(0,-10,-50,0,-50,-10));
+        seg.appendItem(path.createSVGPathSegClosePath());
+
+        elt.insertBefore(path, elt.getFirstChild());
+    }
+
+    function quadra(evt) {
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var path = doc.createElementNS(SVGNS,"path");
+
+        var seg = path.getPathSegList();
+        //d="M50 50Q 75 30 100 50z m30 20 q -25 20 -50 0z "
+        seg.appendItem(path.createSVGPathSegMovetoAbs(50,50));
+        seg.appendItem(path.createSVGPathSegCurvetoQuadraticAbs(100,50,75,30));
+        seg.appendItem(path.createSVGPathSegClosePath());
+
+        seg.appendItem(path.createSVGPathSegMovetoRel(15,20));
+        seg.appendItem(path.createSVGPathSegCurvetoQuadraticRel(-50,0,-25,20));
+        seg.appendItem(path.createSVGPathSegClosePath());
+
+        elt.insertBefore(path, elt.getFirstChild());
+    }
+
+    function arc(evt) {
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var path = doc.createElementNS(SVGNS,"path");
+
+        var seg = path.getPathSegList();
+        //d="M50 50 A50 50 0 0 0 90 90z m10 -10 a50 50 0 0 1 40 40z "
+        seg.appendItem(path.createSVGPathSegMovetoAbs(50,50));
+        seg.appendItem(path.createSVGPathSegArcAbs(90,90,50,50,0,false,false));
+        seg.appendItem(path.createSVGPathSegClosePath());
+
+        seg.appendItem(path.createSVGPathSegMovetoRel(10,-10));
+        seg.appendItem(path.createSVGPathSegArcRel(40,40,50,50,0,false,true));
+        seg.appendItem(path.createSVGPathSegClosePath());
+
+        elt.insertBefore(path, elt.getFirstChild());
+    }
+
+    function cubicsmooth(evt) {
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var path = doc.createElementNS(SVGNS,"path");
+
+        var seg = path.getPathSegList();
+        //d="M50 30 C60 30 60 55 50 55 S 40 80 50 80z m30 0 c-10 0 -10 25 0 25 s 10 25 0 25z"
+        seg.appendItem(path.createSVGPathSegMovetoAbs(50,30));
+        seg.appendItem(path.createSVGPathSegCurvetoCubicAbs(50,55,60,30,60,55));
+        seg.appendItem(path.createSVGPathSegCurvetoCubicSmoothAbs(50,80,40,80));
+        seg.appendItem(path.createSVGPathSegClosePath());
+
+        seg.appendItem(path.createSVGPathSegMovetoRel(30,0));
+        seg.appendItem(path.createSVGPathSegCurvetoCubicRel(0,25,-10,0,-10,25));
+        seg.appendItem(path.createSVGPathSegCurvetoCubicSmoothRel(0,25,10,25));
+        seg.appendItem(path.createSVGPathSegClosePath());
+
+        elt.insertBefore(path, elt.getFirstChild());
+    }
+
+    function quadrasmooth(evt) {
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var path = doc.createElementNS(SVGNS,"path");
+
+        var seg = path.getPathSegList();
+        //d="M50 50 Q 62.5 30 75 50 T 100 50z m 0 25 q 12.5 20 25 0t25 0z"
+        seg.appendItem(path.createSVGPathSegMovetoAbs(50,50));
+        seg.appendItem(path.createSVGPathSegCurvetoQuadraticAbs(75,50,62.5,30));
+        seg.appendItem(path.createSVGPathSegCurvetoQuadraticSmoothAbs(100,50));
+        seg.appendItem(path.createSVGPathSegClosePath());
+
+        seg.appendItem(path.createSVGPathSegMovetoRel(0,25));
+        seg.appendItem(path.createSVGPathSegCurvetoQuadraticRel(25,0,12.5,20));
+        seg.appendItem(path.createSVGPathSegCurvetoQuadraticSmoothRel(25,0));
+        seg.appendItem(path.createSVGPathSegClosePath());
+
+        elt.insertBefore(path, elt.getFirstChild());
+    }
+    </script>
+
+    <g id="test-content" >
+      <g style="fill:gold; stroke:orange; stroke-width:4" >
+        <!-- onload="moveclose(evt)" -->
+        <g transform="translate(0,20)" onload="moveclose(evt)">
+          <g style="fill:black; stroke:none; text-anchor:middle">
+            <text x="75" y="100" >MoveTo/LineTo/close</text>
+          </g>
+        </g>
+
+        <g transform="translate(150,20)" onload="horizonvertic(evt)">
+          <g style="fill:black; stroke:none; text-anchor:middle">
+            <text x="75" y="100" >MoveTo/HV/close</text>
+          </g>
+        </g>
+
+        <g transform="translate(300,20)" onload="cubic(evt)">
+          <g style="fill:black; stroke:none; text-anchor:middle">
+            <text x="75" y="100" >MoveTo/Cubic</text>
+          </g>
+        </g>
+
+        <g transform="translate(0,150)" onload="quadra(evt)">
+          <g style="fill:black; stroke:none; text-anchor:middle">
+            <text x="75" y="100" >MoveTo/Quadratic</text>
+          </g>
+        </g>
+
+        <g transform="translate(150,150)" onload="cubicsmooth(evt)">
+          <g style="fill:black; stroke:none; text-anchor:middle">
+            <text x="75" y="100" >Cubic/CubicSmooth</text>
+          </g>
+        </g>
+
+        <g transform="translate(300,150)" onload="quadrasmooth(evt)">
+          <g style="fill:black; stroke:none; text-anchor:middle">
+            <text x="75" y="100" >Quadratic/QuadraticSmooth</text>
+          </g>
+        </g>
+
+        <g transform="translate(0,280)" onload="arc(evt)">
+          <g style="fill:black; stroke:none; text-anchor:middle">
+            <text x="75" y="120" >Moveto/Arcto</text>
+          </g>
+        </g>
+      </g>
+    </g>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/polygon.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/polygon.svg
new file mode 100644
index 0000000..245095f
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/polygon.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a polygon attributes                                   -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: polygon.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;polygon&gt; attributes 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;polygon&gt; attributes in 'onload'</text>
+
+    <script type="text/ecmascript">
+
+    function initPolygon(evt, points) {
+        var elt = evt.target;
+        elt.setAttribute("points", points)
+    }
+
+    </script>
+
+    <g id="test-content" >
+
+        <polygon points="0 0" style="fill:gold; stroke:orange; stroke-width:4" 
+           onload="initPolygon(evt, '219 175, 255 193, 268 235, 242 269, 199 270, 171 237, 179 195')" />
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="225" y="300" >points</text>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/polygon_points1.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/polygon_points1.svg
new file mode 100644
index 0000000..af7028b
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/polygon_points1.svg
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!--      ======================================================================      -->
+<!--      Modification of a x attributes                                        -->
+<!--                                                                                  -->
+<!--      @author nicolas socheleau bitflash com                                      -->
+<!--      @version $Id: polygon_points1.svg 475477 2006-11-15 22:44:28Z cam $      -->
+<!--      ======================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>&lt;polygon&gt; points attribute &apos;onload&apos;</title>
+
+  <text x="50%" y="45" class="title">&lt;polygon&gt; getPoints() in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[    
+        function getNumberOfItems(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getPoints().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" "+nb+" points");    
+        }
+        function clear(evt) 
+        {        
+           var elt = evt.target;
+           elt.getPoints().clear()
+        }
+        function getItem(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getPoints().getItem(0);        
+           var text = elt.getOwnerDocument().getElementById('test3_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");
+        }
+        function insertItemBefore(evt,index,x,y) 
+        {        
+           var elt = evt.target;        
+           points = elt.getOwnerDocument().getDocumentElement().createSVGLength();
+           point = elt.getOwnerDocument().getDocumentElement().createSVGPoint();
+           point.setX(x);
+           point.setY(y);
+           nb = elt.getPoints().insertItemBefore(point,index);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");    
+        }
+        function replaceItem(evt,index,x,y) 
+        {        
+           var elt = evt.target;        
+           point = elt.getOwnerDocument().getDocumentElement().createSVGPoint();
+           point.setX(x);
+           point.setY(y);
+           nb = elt.getPoints().replaceItem(point,index);        
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");    
+        }
+        function removeItem(evt,index) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getPoints().removeItem(index);        
+           var text = elt.getOwnerDocument().getElementById('test6_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");    
+        }
+        function initializeAppendItem(evt,x1,y1,x2,y2) 
+        {        
+           var elt = evt.target;        
+           point = elt.getOwnerDocument().getDocumentElement().createSVGPoint();
+           point.setX(x1);
+           point.setY(y1);
+           nb = elt.getPoints().initialize(point);        
+           var text = elt.getOwnerDocument().getElementById('test71_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");
+           point.setX(x2);
+           point.setY(y2);
+           nb = elt.getPoints().appendItem(point);        
+           text = elt.getOwnerDocument().getElementById('test72_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");
+        }
+        function setAttribute(evt,pointsList) 
+        {        
+           var elt = evt.target;
+           var points = elt.getPoints();
+           nb = points.getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test81_text');        
+           text.getFirstChild().appendData(" "+nb+" points");
+
+           elt.setAttributeNS(null,"points",pointsList);
+
+           nb = points.getNumberOfItems();        
+           text = elt.getOwnerDocument().getElementById('test82_text');        
+           text.getFirstChild().appendData(" "+nb+" points");
+        
+        }
+
+        function setAttribute2(evt,pointsList) 
+        {        
+           var elt = evt.target;
+           var points = elt.getPoints();
+           nb = points.getItem(0);        
+           var text = elt.getOwnerDocument().getElementById('test91_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");
+
+           elt.setAttributeNS(null,"points",pointsList);
+
+           text = elt.getOwnerDocument().getElementById('test92_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");
+        
+        }
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -148.27586 -91.37931)">
+
+        <!-- onload="getNumberOfItems(evt)" -->
+        <text x="180" y="160" font-size="11">getNumberOfItems</text>
+     <polygon  id="test1" style="fill:gold; stroke:orange; stroke-width:4" points="219 175, 255 193, 268 
235, 242 269, 199 270, 171 237, 179 195" onload="getNumberOfItems(evt)"/>
+     <text x="160" font-size="9" y="290" id="test1_text">
+        polygon with
+     </text>
+     
+        <!-- onload="clear(evt)" -->
+        <text x="180" y="160" font-size="11" transform="translate(150,0)" >clear</text>
+     <polygon id="test2" fill="#ffd700" stroke-width="4.0" transform="translate(150,0)"
+        points="219.0,175.0 255.0,193.0 268.0,235.0 242.0,269.0 199.0,270.0 171.0,237.0 179.0,195.0 " 
+        stroke="#ffa500"
+        onload="clear(evt)" />
+
+        <!-- onload="getItem(evt)" -->
+        <text x="180" y="160" font-size="11" transform="translate(300,0)" >getItem</text>
+     <polygon id="test3" fill="#ffd700" stroke-width="4.0" transform="translate(300,0)"
+        points="219.0,175.0 255.0,193.0 268.0,235.0 242.0,269.0 199.0,270.0 171.0,237.0 179.0,195.0 " 
+        stroke="#ffa500"
+        onload="getItem(evt)" />
+     <text x="160" font-size="9" y="290" transform="translate(300,0)" id="test3_text">
+        first point
+     </text>
+
+     <g transform="translate(0,150)" >
+        <!-- onload="insertItemBefore(evt)" -->
+        <text x="180" y="160" font-size="11"  >insertItemBefore</text>
+        <polygon id="test4" fill="#ffd700" stroke-width="4.0" 
+           points="219.0,175.0 255.0,193.0 268.0,235.0 242.0,269.0 199.0,270.0 171.0,237.0 179.0,195.0 " 
+           stroke="#ffa500"
+           onload="insertItemBefore(evt,1,230,193)" />
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        inserted point
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="replaceItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >replaceItem</text>
+        <polygon id="test5" fill="#ffd700" stroke-width="4.0" 
+           points="219.0,175.0 255.0,193.0 268.0,235.0 242.0,269.0 199.0,270.0 171.0,237.0 179.0,195.0 " 
+           stroke="#ffa500"
+           onload="replaceItem(evt,1,270,180)" />
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        replaced point
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="removeItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >removeItem</text>
+        <polygon id="test6" fill="#ffd700" stroke-width="4.0" 
+           points="219.0,175.0 255.0,193.0 268.0,235.0 242.0,269.0 199.0,270.0 171.0,237.0 179.0,195.0 " 
+           stroke="#ffa500"
+           onload="removeItem(evt,3)" />
+     <text x="160" font-size="9" y="290"  id="test6_text">
+        removed point
+     </text>
+    </g>
+
+     <g transform="translate(0,300)" >
+        <!-- onload="initialize/appendItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >initialize/appendItem</text>
+        <polygon id="test7" fill="#ffd700" stroke-width="4.0" 
+           points="219.0,175.0 255.0,193.0 268.0,235.0 242.0,269.0 199.0,270.0 171.0,237.0 179.0,195.0 " 
+           stroke="#ffa500"
+           onload="initializeAppendItem(evt,200,200,250,250)" />
+     <text x="160" font-size="9" y="275"  id="test71_text">
+        intialized point 
+     </text>
+     <text x="160" font-size="9" y="285"  id="test72_text">
+        appended point
+     </text>
+    </g>
+
+     <g transform="translate(150,300)" >
+        <!-- onload="setAttribute(evt)" -->
+        <text x="180" y="160" font-size="11"  >setAttribute</text>
+        <polygon id="test8" fill="#ffd700" stroke-width="4.0" 
+           points="219.0,175.0 255.0,193.0 268.0,235.0 242.0,269.0 199.0,270.0 171.0,237.0 179.0,195.0 " 
+           stroke="#ffa500"
+           onload="setAttribute(evt,'200,200 200,250 250,250 250,200')" />
+     <text x="160" font-size="9" y="275"  id="test81_text">
+        before
+     </text>
+     <text x="160" font-size="9" y="285"  id="test82_text">
+        after
+     </text>
+    </g>
+
+     <g transform="translate(300,300)" >
+        <!-- onload="setAttribute2(evt)" -->
+        <text x="180" y="160" font-size="11"  >setAttribute2</text>
+        <polygon id="test9" fill="#ffd700" stroke-width="4.0" 
+           points="219.0,175.0 255.0,193.0 268.0,235.0 242.0,269.0 199.0,270.0 171.0,237.0 179.0,195.0 " 
+           stroke="#ffa500"
+           onload="setAttribute2(evt,'200,200 200,250 250,250 250,200')" />
+     <text x="160" font-size="9" y="275"  id="test91_text">
+        point 0 before
+     </text>
+     <text x="160" font-size="9" y="285"  id="test92_text">
+        point 0 after
+     </text>
+    </g>
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/polygon_points2.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/polygon_points2.svg
new file mode 100644
index 0000000..a7c115a
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/polygon_points2.svg
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!--      ======================================================================      -->
+<!--      Modification of a polygon attributes                                        -->
+<!--                                                                                  -->
+<!--      @author nicolas socheleau bitflash com                                      -->
+<!--      @version $Id: polygon_points2.svg 475477 2006-11-15 22:44:28Z cam $      -->
+<!--      ======================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>&lt;polygon&gt; attributes &apos;onload&apos;</title>
+
+  <text x="50%" y="45" class="title">&lt;polygon&gt; getPoints() in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[    
+        function getNumberOfItems(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getPoints().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" "+nb+" points");    
+        }
+        function insertItemBefore(evt,fromIndex,index) 
+        {        
+           var elt = evt.target;        
+           pointProvider = elt.getOwnerDocument().getElementById('test1');
+           point = pointProvider.getPoints().getItem(fromIndex);
+           nb = elt.getPoints().insertItemBefore(point,index);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");    
+        }
+        function replaceItem(evt,fromIndex,index) 
+        {        
+           var elt = evt.target;        
+           pointProvider = elt.getOwnerDocument().getElementById('test1');
+           point = pointProvider.getPoints().getItem(fromIndex);
+           nb = elt.getPoints().replaceItem(point,index);        
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");    
+        }
+
+        function initializeAppendItem(evt,fromIndex1,fromIndex2) 
+        {        
+           var elt = evt.target;        
+           pointProvider = elt.getOwnerDocument().getElementById('test1');
+           point = pointProvider.getPoints().getItem(fromIndex1);
+           nb = elt.getPoints().initialize(point);        
+           var text = elt.getOwnerDocument().getElementById('test71_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");
+           point = pointProvider.getPoints().getItem(fromIndex2);
+           nb = elt.getPoints().appendItem(point);        
+           text = elt.getOwnerDocument().getElementById('test72_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");
+        }
+
+    function createNextSibling(evt){
+
+      var elt = evt.target;
+      var doc = elt.getOwnerDocument();
+
+      var polygon = doc.createElementNS(elt.getNamespaceURI(),"polygon");
+      polygon.setAttribute("style","fill:#ffd700;stroke-width:4.0;stroke:#ffa500");
+      var pointsList = polygon.getPoints();
+
+      var point = doc.getDocumentElement().createSVGPoint();
+
+      point.setX(219);
+      point.setY(175);
+      pointsList.appendItem(point);
+      point.setX(255);
+      point.setY(193);
+      pointsList.appendItem(point);
+      point.setX(268);
+      point.setY(235);
+      pointsList.appendItem(point);
+      point.setX(242);
+      point.setY(269);
+      pointsList.appendItem(point);
+      point.setX(199);
+      point.setY(270);
+      pointsList.appendItem(point);
+      point.setX(171);
+      point.setY(237);
+      pointsList.appendItem(point);
+      point.setX(179);
+      point.setY(195);
+      pointsList.appendItem(point);
+
+      var text = elt.getOwnerDocument().getElementById('test8_text');        
+      text.getFirstChild().appendData(" "+pointsList.getNumberOfItems()+" points");    
+
+      elt.getParentNode().insertBefore(polygon,elt.getNextSibling());
+    }
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -148.27586 -91.37931)">
+
+        <!-- onload="getNumberOfItems(evt)" -->
+        <text x="180" y="160" font-size="11">points provider</text>
+     <polygon style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" points="219 175, 255 193, 268 235, 
242 269, 199 270, 171 237, 179 195"/>
+     <polygon  id="test1" style="fill:gold; stroke:orange; stroke-width:4" points="219 175, 255 193, 268 
235, 242 269, 199 270, 171 237, 179 195" onload="getNumberOfItems(evt)"/>
+     <text x="160" font-size="9" y="290" id="test1_text">
+        polygon with
+     </text>
+     
+     <g transform="translate(0,150)" >
+        <!-- onload="insertItemBefore(evt)" -->
+        <text x="180" y="160" font-size="11"  >insertItemBefore</text>
+     <polygon style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" points="219 175, 255 193, 268 235, 
242 269, 199 270, 171 237, 179 195"/>
+        <polygon id="test4" fill="#ffd700" stroke-width="4.0" 
+           points="200,200 200,250 250,250 250,200" 
+           stroke="#ffa500"
+           onload="insertItemBefore(evt,5,1)" />
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        inserted point
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="replaceItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >replaceItem</text>
+     <polygon style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" points="219 175, 255 193, 268 235, 
242 269, 199 270, 171 237, 179 195"/>
+        <polygon id="test5" fill="#ffd700" stroke-width="4.0" 
+           points="200,200 200,250 250,250 250,200" 
+           stroke="#ffa500"
+           onload="replaceItem(evt,4,1)" />
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        replaced point
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="initialize/appendItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >initialize/appendItem</text>
+     <polygon style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" points="219 175, 255 193, 268 235, 
242 269, 199 270, 171 237, 179 195"/>
+        <polygon id="test7" fill="#ffd700" stroke-width="4.0" 
+           points="200,200 200,250 250,250 250,200" 
+           stroke="#ffa500"
+           onload="initializeAppendItem(evt,1,2)" />
+     <text x="160" font-size="9" y="275"  id="test71_text">
+        intialized point 
+     </text>
+     <text x="160" font-size="9" y="285"  id="test72_text">
+        appended point
+     </text>
+    </g>
+
+     <g transform="translate(300,0)" >
+        <!-- onload="fromScratch(evt)" -->
+        <text x="180" y="160" font-size="11"  >new Polygon</text>
+     <polygon style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" points="219 175, 255 193, 268 235, 
242 269, 199 270, 171 237, 179 195" onload="createNextSibling(evt)"/>
+     <text x="160" font-size="9" y="285"  id="test8_text">
+        polygon with
+     </text>
+    </g>
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/polyline.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/polyline.svg
new file mode 100644
index 0000000..978336e
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/polyline.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a polyline attributes                                  -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: polyline.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;polyline&gt; attributes 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;polyline&gt; attributes in 'onload'</text>
+
+    <script type="text/ecmascript">
+
+    function initPolyline(evt, points) {
+        var elt = evt.target;
+        elt.setAttribute("points", points)
+    }
+
+    </script>
+
+    <g id="test-content">
+
+        <polyline points="0 0" style="stroke:orange; fill: none; stroke-width:4" 
+                 onload="initPolyline(evt, '50 100, 100 200, 150 100, 200 200, 250 100, 300 200, 350 100, 
400 200')" />
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="225" y="220" >points</text>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/polyline_points1.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/polyline_points1.svg
new file mode 100644
index 0000000..cccf72e
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/polyline_points1.svg
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!--      ======================================================================      -->
+<!--      Modification of a polyline attributes                                        -->
+<!--                                                                                  -->
+<!--      @author nicolas socheleau bitflash com                                      -->
+<!--      @version $Id: polyline_points1.svg 475477 2006-11-15 22:44:28Z cam $      -->
+<!--      ======================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>&lt;polyline&gt; attributes &apos;onload&apos;</title>
+
+  <text x="50%" y="45" class="title">&lt;polyline&gt; getPoints() in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[    
+        function getNumberOfItems(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getPoints().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" "+nb+" points");    
+        }
+        function clear(evt) 
+        {        
+           var elt = evt.target;
+           elt.getPoints().clear()
+        }
+        function getItem(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getPoints().getItem(0);        
+           var text = elt.getOwnerDocument().getElementById('test3_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");    
+        }
+        function insertItemBefore(evt,index,x,y) 
+        {        
+           var elt = evt.target;        
+           point = elt.getOwnerDocument().getDocumentElement().createSVGPoint();
+           point.setX(x);
+           point.setY(y);
+           nb = elt.getPoints().insertItemBefore(point,index);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");    
+        }
+        function replaceItem(evt,index,x,y) 
+        {        
+           var elt = evt.target;        
+           point = elt.getOwnerDocument().getDocumentElement().createSVGPoint();
+           point.setX(x);
+           point.setY(y);
+           nb = elt.getPoints().replaceItem(point,index);        
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");    
+        }
+        function removeItem(evt,index) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getPoints().removeItem(index);        
+           var text = elt.getOwnerDocument().getElementById('test6_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");    
+        }
+        function initializeAppendItem(evt,x1,y1,x2,y2) 
+        {        
+           var elt = evt.target;        
+           point = elt.getOwnerDocument().getDocumentElement().createSVGPoint();
+           point.setX(x1);
+           point.setY(y1);
+           nb = elt.getPoints().initialize(point);        
+           var text = elt.getOwnerDocument().getElementById('test71_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");
+           point.setX(x2);
+           point.setY(y2);
+           nb = elt.getPoints().appendItem(point);        
+           text = elt.getOwnerDocument().getElementById('test72_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");
+        }
+        function setAttribute(evt,pointsList) 
+        {        
+           var elt = evt.target;
+           var points = elt.getPoints();
+           nb = points.getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test81_text');        
+           text.getFirstChild().appendData(" "+nb+" points");
+
+           elt.setAttributeNS(null,"points",pointsList);
+
+           nb = points.getNumberOfItems();        
+           text = elt.getOwnerDocument().getElementById('test82_text');        
+           text.getFirstChild().appendData(" "+nb+" points");
+        
+        }
+
+        function setAttribute2(evt,pointsList) 
+        {        
+           var elt = evt.target;
+           var points = elt.getPoints();
+           nb = points.getItem(0);        
+           var text = elt.getOwnerDocument().getElementById('test91_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");
+
+           elt.setAttributeNS(null,"points",pointsList);
+
+           text = elt.getOwnerDocument().getElementById('test92_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");
+        
+        }
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -148.27586 -91.37931)">
+
+        <!-- onload="getNumberOfItems(evt)" -->
+        <text x="180" y="160" font-size="11">getNumberOfItems</text>
+     <polyline  id="test1" style="fill:gold; stroke:orange; stroke-width:4" points="219 175, 255 193, 268 
235, 242 269, 199 270, 171 237, 179 195" onload="getNumberOfItems(evt)"/>
+     <text x="160" font-size="9" y="290" id="test1_text">
+        polyline with
+     </text>
+     
+        <!-- onload="clear(evt)" -->
+        <text x="180" y="160" font-size="11" transform="translate(150,0)" >clear</text>
+     <polyline id="test2" fill="#ffd700" stroke-width="4.0" transform="translate(150,0)"
+        points="219.0,175.0 255.0,193.0 268.0,235.0 242.0,269.0 199.0,270.0 171.0,237.0 179.0,195.0 " 
+        stroke="#ffa500"
+        onload="clear(evt)" />
+
+        <!-- onload="getItem(evt)" -->
+        <text x="180" y="160" font-size="11" transform="translate(300,0)" >getItem</text>
+     <polyline id="test3" fill="#ffd700" stroke-width="4.0" transform="translate(300,0)"
+        points="219.0,175.0 255.0,193.0 268.0,235.0 242.0,269.0 199.0,270.0 171.0,237.0 179.0,195.0 " 
+        stroke="#ffa500"
+        onload="getItem(evt)" />
+     <text x="160" font-size="9" y="290" transform="translate(300,0)" id="test3_text">
+        first point
+     </text>
+
+     <g transform="translate(0,150)" >
+        <!-- onload="insertItemBefore(evt)" -->
+        <text x="180" y="160" font-size="11"  >insertItemBefore</text>
+        <polyline id="test4" fill="#ffd700" stroke-width="4.0" 
+           points="219.0,175.0 255.0,193.0 268.0,235.0 242.0,269.0 199.0,270.0 171.0,237.0 179.0,195.0 " 
+           stroke="#ffa500"
+           onload="insertItemBefore(evt,1,230,193)" />
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        inserted point
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="replaceItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >replaceItem</text>
+        <polyline id="test5" fill="#ffd700" stroke-width="4.0" 
+           points="219.0,175.0 255.0,193.0 268.0,235.0 242.0,269.0 199.0,270.0 171.0,237.0 179.0,195.0 " 
+           stroke="#ffa500"
+           onload="replaceItem(evt,1,270,180)" />
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        replaced point
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="removeItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >removeItem</text>
+        <polyline id="test6" fill="#ffd700" stroke-width="4.0" 
+           points="219.0,175.0 255.0,193.0 268.0,235.0 242.0,269.0 199.0,270.0 171.0,237.0 179.0,195.0 " 
+           stroke="#ffa500"
+           onload="removeItem(evt,3)" />
+     <text x="160" font-size="9" y="290"  id="test6_text">
+        removed point
+     </text>
+    </g>
+
+     <g transform="translate(0,300)" >
+        <!-- onload="initialize/appendItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >initialize/appendItem</text>
+        <polyline id="test7" fill="#ffd700" stroke-width="4.0" 
+           points="219.0,175.0 255.0,193.0 268.0,235.0 242.0,269.0 199.0,270.0 171.0,237.0 179.0,195.0 " 
+           stroke="#ffa500"
+           onload="initializeAppendItem(evt,200,200,250,250)" />
+     <text x="160" font-size="9" y="275"  id="test71_text">
+        intialized point 
+     </text>
+     <text x="160" font-size="9" y="285"  id="test72_text">
+        appended point
+     </text>
+    </g>
+
+     <g transform="translate(150,300)" >
+        <!-- onload="setAttribute(evt)" -->
+        <text x="180" y="160" font-size="11"  >setAttribute</text>
+        <polyline id="test8" fill="#ffd700" stroke-width="4.0" 
+           points="219.0,175.0 255.0,193.0 268.0,235.0 242.0,269.0 199.0,270.0 171.0,237.0 179.0,195.0 " 
+           stroke="#ffa500"
+           onload="setAttribute(evt,'200,200 200,250 250,250 250,200')" />
+     <text x="160" font-size="9" y="275"  id="test81_text">
+        before
+     </text>
+     <text x="160" font-size="9" y="285"  id="test82_text">
+        after
+     </text>
+    </g>
+
+     <g transform="translate(300,300)" >
+        <!-- onload="setAttribute2(evt)" -->
+        <text x="180" y="160" font-size="11"  >setAttribute2</text>
+        <polyline id="test9" fill="#ffd700" stroke-width="4.0" 
+           points="219.0,175.0 255.0,193.0 268.0,235.0 242.0,269.0 199.0,270.0 171.0,237.0 179.0,195.0 " 
+           stroke="#ffa500"
+           onload="setAttribute2(evt,'200,200 200,250 250,250 250,200')" />
+     <text x="160" font-size="9" y="275"  id="test91_text">
+        point 0 before
+     </text>
+     <text x="160" font-size="9" y="285"  id="test92_text">
+        point 0 after
+     </text>
+    </g>
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/polyline_points2.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/polyline_points2.svg
new file mode 100644
index 0000000..1f71884
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/polyline_points2.svg
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!--      ======================================================================      -->
+<!--      Modification of a polyline attributes                                        -->
+<!--                                                                                  -->
+<!--      @author nicolas socheleau bitflash com                                      -->
+<!--      @version $Id: polyline_points2.svg 475477 2006-11-15 22:44:28Z cam $      -->
+<!--      ======================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>&lt;polyline&gt; attributes &apos;onload&apos;</title>
+
+  <text x="50%" y="45" class="title">&lt;polyline&gt; getPoints() in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[    
+        function getNumberOfItems(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getPoints().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" "+nb+" points");    
+        }
+        function insertItemBefore(evt,fromIndex,index) 
+        {        
+           var elt = evt.target;        
+           pointProvider = elt.getOwnerDocument().getElementById('test1');
+           point = pointProvider.getPoints().getItem(fromIndex);
+           nb = elt.getPoints().insertItemBefore(point,index);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");    
+        }
+        function replaceItem(evt,fromIndex,index) 
+        {        
+           var elt = evt.target;        
+           pointProvider = elt.getOwnerDocument().getElementById('test1');
+           point = pointProvider.getPoints().getItem(fromIndex);
+           nb = elt.getPoints().replaceItem(point,index);        
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");    
+        }
+
+        function initializeAppendItem(evt,fromIndex1,fromIndex2) 
+        {        
+           var elt = evt.target;        
+           pointProvider = elt.getOwnerDocument().getElementById('test1');
+           point = pointProvider.getPoints().getItem(fromIndex1);
+           nb = elt.getPoints().initialize(point);        
+           var text = elt.getOwnerDocument().getElementById('test71_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");
+           point = pointProvider.getPoints().getItem(fromIndex2);
+           nb = elt.getPoints().appendItem(point);        
+           text = elt.getOwnerDocument().getElementById('test72_text');        
+           text.getFirstChild().appendData(" ("+nb.getX()+","+nb.getY()+")");
+        }
+
+    function createNextSibling(evt){
+
+      var elt = evt.target;
+      var doc = elt.getOwnerDocument();
+
+      var polyline = doc.createElementNS(elt.getNamespaceURI(),"polyline");
+      polyline.setAttribute("style","fill:#ffd700;stroke-width:4.0;stroke:#ffa500");
+      var pointsList = polyline.getPoints();
+
+      var point = doc.getDocumentElement().createSVGPoint();
+
+      point.setX(219);
+      point.setY(175);
+      pointsList.appendItem(point);
+      point.setX(255);
+      point.setY(193);
+      pointsList.appendItem(point);
+      point.setX(268);
+      point.setY(235);
+      pointsList.appendItem(point);
+      point.setX(242);
+      point.setY(269);
+      pointsList.appendItem(point);
+      point.setX(199);
+      point.setY(270);
+      pointsList.appendItem(point);
+      point.setX(171);
+      point.setY(237);
+      pointsList.appendItem(point);
+      point.setX(179);
+      point.setY(195);
+      pointsList.appendItem(point);
+
+      var text = elt.getOwnerDocument().getElementById('test8_text');        
+      text.getFirstChild().appendData(" "+pointsList.getNumberOfItems()+" points");    
+
+      elt.getParentNode().insertBefore(polyline,elt.getNextSibling());
+    }
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -148.27586 -91.37931)">
+
+        <!-- onload="getNumberOfItems(evt)" -->
+        <text x="180" y="160" font-size="11">points provider</text>
+     <polyline style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" points="219 175, 255 193, 268 235, 
242 269, 199 270, 171 237, 179 195"/>
+     <polyline  id="test1" style="fill:gold; stroke:orange; stroke-width:4" points="219 175, 255 193, 268 
235, 242 269, 199 270, 171 237, 179 195" onload="getNumberOfItems(evt)"/>
+     <text x="160" font-size="9" y="290" id="test1_text">
+        polyline with
+     </text>
+     
+     <g transform="translate(0,150)" >
+        <!-- onload="insertItemBefore(evt)" -->
+        <text x="180" y="160" font-size="11"  >insertItemBefore</text>
+     <polyline style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" points="219 175, 255 193, 268 235, 
242 269, 199 270, 171 237, 179 195"/>
+        <polyline id="test4" fill="#ffd700" stroke-width="4.0" 
+           points="200,200 200,250 250,250 250,200" 
+           stroke="#ffa500"
+           onload="insertItemBefore(evt,5,1)" />
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        inserted point
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="replaceItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >replaceItem</text>
+     <polyline style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" points="219 175, 255 193, 268 235, 
242 269, 199 270, 171 237, 179 195"/>
+        <polyline id="test5" fill="#ffd700" stroke-width="4.0" 
+           points="200,200 200,250 250,250 250,200" 
+           stroke="#ffa500"
+           onload="replaceItem(evt,4,1)" />
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        replaced point
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="initialize/appendItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >initialize/appendItem</text>
+     <polyline style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" points="219 175, 255 193, 268 235, 
242 269, 199 270, 171 237, 179 195"/>
+        <polyline id="test7" fill="#ffd700" stroke-width="4.0" 
+           points="200,200 200,250 250,250 250,200" 
+           stroke="#ffa500"
+           onload="initializeAppendItem(evt,1,2)" />
+     <text x="160" font-size="9" y="275"  id="test71_text">
+        intialized point 
+     </text>
+     <text x="160" font-size="9" y="285"  id="test72_text">
+        appended point
+     </text>
+    </g>
+
+     <g transform="translate(300,0)" >
+        <!-- onload="initialize/appendItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >new Polyline</text>
+     <polyline style="opacity:0.5;fill:#eee; stroke:#aaa; stroke-width:4" points="219 175, 255 193, 268 235, 
242 269, 199 270, 171 237, 179 195" onload="createNextSibling(evt)"/>
+     <text x="160" font-size="9" y="285"  id="test8_text">
+        polyline with
+     </text>
+    </g>
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/primaryDoc.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/primaryDoc.svg
new file mode 100644
index 0000000..98f363f
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/primaryDoc.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" standalone="no"?>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Document that references resource documents                            -->
+<!--                                                                        -->
+<!-- @author cam mcc id au                                                  -->
+<!-- @version $Id: primaryDoc.svg 985243 2010-08-13 15:30:25Z helder $                                       
                   -->
+<!-- ====================================================================== -->
+
+<svg xmlns="http://www.w3.org/2000/svg";
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     version="1.1" width="400" height="400" viewBox="0 0 400 400">
+  <script type="text/ecmascript"><![CDATA[
+    var inRegard = false;
+    var es = ["u1", "u2", "u3", "u4"];
+    var all = es.concat(["u1res", "u2res", "u3res", "u4res"]);
+
+    function regardStart() {
+      inRegard = true;
+    
+      regardTestInstance.registerResourceContext("Static11", "u1res");
+      regardTestInstance.registerResourceContext("Dynamic11", "u2res");
+      regardTestInstance.registerResourceContext("Static12", "u3res");
+      regardTestInstance.registerResourceContext("Dynamic12", "u4res");
+
+      for (var i in es) {
+         var e = document.getElementById(es[i]);
+         regardTestInstance.registerElement(e, es[i]);
+         e.parentNode.removeChild(e);
+      }
+
+      setTimeout("checkElem()", 10);
+    }
+
+    function checkElem() {
+      regardTestInstance.checkObjects(all);
+      // System.err.println("finished checking, waiting 10s"); java.lang.Thread.sleep(10000);
+      regardTestInstance.scriptDone();
+    }
+]]></script>
+
+  <use id="u1" xlink:href="resourceDocStatic11.svg#e"/>
+  <use id="u2" xlink:href="resourceDocDynamic11.svg#e"/>
+  <use id="u3" xlink:href="resourceDocStatic12.svg#e"/>
+  <use id="u4" xlink:href="resourceDocDynamic12.svg#e"/>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/rect.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/rect.svg
new file mode 100644
index 0000000..65848ab
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/rect.svg
@@ -0,0 +1,84 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a rect's attributes                                    -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: rect.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;rect&gt; attributes 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;rect&gt; attributes in 'onload'</text>
+
+    <script type="text/ecmascript">
+
+    function initRect(evt, x, y, w, h, rx, ry) {
+        var elt = evt.target;
+        elt.setAttribute("x", x)
+        elt.setAttribute("y", y)
+        elt.setAttribute("width", w)
+        elt.setAttribute("height", h)
+        if (rx != null) {
+                elt.setAttribute("rx", rx)
+        }
+        if (ry != null) {
+                elt.setAttribute("ry", ry)
+        }
+    }
+
+    </script>
+
+    <g id="test-content">
+
+        <rect width="1" height="1" style="fill:orange" 
+              onload="initRect(evt, 50, 80, 150, 100)" />
+
+        <rect width="1" height="1" style="fill:crimson" 
+              onload="initRect(evt, 250, 80, 150, 100, 20)" />
+
+        <rect width="1" height="1" style="fill:gold" 
+              onload="initRect(evt, 50, 230, '33%', 150, 20, 40)" />
+
+        <rect width="1" height="1" style="fill:#eee" 
+              onload="initRect(evt, 250, 230, '33%', '150px', '16.5%', 75)" />
+
+
+        <g style="stroke:black; fill:none; stroke-width:2">
+          <rect x="50"  y="80"   width="150" height="100"  />
+          <rect x="250" y="80"   width="150" height="100" rx="20" />
+          <rect x="50"  y="230"  width="33%" height="150" rx="20" ry="40" />
+          <rect x="250"  y="230" width="33%" height="150px" rx="16.5%" ry="75" />
+        </g>
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="125" y="200" >x, y, width, height</text>
+                <text x="325" y="200" >x, y, width, height, rx</text>
+                <text x="125" y="400" >x, y, width, height, rx, ry</text>
+                <text x="325" y="400" >x, y, width, height, rx, ry (units and %)</text>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/rectResizeOnClick.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/rectResizeOnClick.svg
new file mode 100644
index 0000000..f599cf4
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/rectResizeOnClick.svg
@@ -0,0 +1,80 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a rect's x,y,width and height attributes in an         -->
+<!-- 'onclick' event handler. This is actually mostly testing a change in   -->
+<!-- the documents size.                                                    -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: rectResizeOnClick.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+   <title>&lt;rect&gt; width &amp; hieght modification in 'onclick'</title>
+
+   <script type="text/ecmascript">
+
+    function setRect(target, valX, valY, valW, valH){
+        var t = document.getElementById(target);
+        t.setAttribute('x', valX);
+        t.setAttribute('y', valY);
+        t.setAttribute('width', valW);
+        t.setAttribute('height', valH);
+    }
+
+    // This function is only called if test is run from regard.
+    function regardStart() {
+       setRect('targetRect', '5', '5', '440', '490');
+       setTimeout('regardTestInstance.scriptDone()', 100);
+    }
+   </script>
+
+   <text x="50%" y="45" class="title">&lt;rect&gt; width &amp; height modification in 'onclick'</text>
+
+
+   <g id="test-content" >
+      <rect style="fill:none; stroke:black" 
+            x="182" y="97" width="86" height="46" />
+      <text class="legend" x="225" y="160">Position A</text>
+
+      <rect style="fill:none; stroke:black" 
+            x="182" y="177" width="86" height="46" />
+      <text class="legend" x="225" y="240">Click Target</text>
+
+      <g stroke="black"
+         onclick="setRect('targetRect', '5', '5', '440', '490')" >
+         <circle cx="225" cy="200"  r="10"           fill="crimson"/>
+         <line   x1="225" x2="225" y1="185" y2="215" fill="none" />
+         <line   x1="210" x2="240" y1="200" y2="200" fill="none" />
+      </g>
+
+      <rect id="targetRect" fill="crimson" 
+            x="185" y="100" width="80" height="40" />
+
+      <text class="legend">
+         <tspan x="225" y="270">Click on the Click Target (crimson circle)</tspan>
+         <tspan x="225" y="285">to resize the rectangle to fill the viewport.</tspan>
+         <tspan x="225" y="300">Hiding everything but this text.</tspan>
+      </text>
+   </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/relativeURI.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/relativeURI.svg
new file mode 100644
index 0000000..2fc3ba1
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/relativeURI.svg
@@ -0,0 +1,228 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Test of getting/setting current Scale and Translate.                   -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: relativeURI.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     onload="init()"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+
+    <title>Test of CSS with relative URIs</title>
+    <text class="title" x="50%" y="50">Test of CSS with relative URIs</text>
+
+
+<script type="text/ecmascript"><![CDATA[
+var root = document.getRootElement();
+
+var t0 = document.getElementById('t0');
+var t1 = document.getElementById('t1');
+var t2 = document.getElementById('t2');
+var t3 = document.getElementById('t3');
+var t4 = document.getElementById('t4');
+var t5 = document.getElementById('t5');
+var t6 = document.getElementById('t6');
+var t7 = document.getElementById('t7');
+var t8 = document.getElementById('t8');
+var t9 = document.getElementById('t9');
+var t10 = document.getElementById('t10');
+var t11 = document.getElementById('t11');
+var t12 = document.getElementById('t12');
+var t13 = document.getElementById('t13');
+var t14 = document.getElementById('t14');
+
+var docURL = document.getURL();
+
+function unifyURL(str) {
+  var start = str.indexOf(docURL);
+  if (start == -1) return str;
+  var before = str.substring(0, start);
+  var after  = str.substring(start+docURL.length);
+  return before + "<doc>" + after;
+}
+
+function init() {
+  var view = document.getDefaultView();
+
+  var elem = document.getElementById('xxx');
+  var cssStyle = elem.getStyle();
+  var computedStyle = view.getComputedStyle(elem, "");
+  
+  cssStyle.setProperty("fill", "url(#grad)","");
+  var localStr = cssStyle.getPropertyValue("fill");
+  var absStr = computedStyle.getPropertyValue("fill");
+  t1.firstChild.nodeValue = unifyURL(localStr);
+  t2.firstChild.nodeValue = unifyURL(absStr);
+
+  cssStyle.setProperty("cursor", "url(#cur),crosshair","");
+  localStr = cssStyle.getPropertyValue("cursor");
+  absStr = computedStyle.getPropertyCSSValue("cursor");
+  absStr = absStr.item(0).getCssText();
+  t3.firstChild.nodeValue = unifyURL(localStr);
+  t4.firstChild.nodeValue = unifyURL(absStr);
+
+  cssStyle.setProperty("clip-path", "url(#clip)","");
+  localStr = cssStyle.getPropertyValue("clip-path");
+  absStr = computedStyle.getPropertyValue("clip-path");
+  t5.firstChild.nodeValue = unifyURL(localStr);
+  t6.firstChild.nodeValue = unifyURL(absStr);
+
+  cssStyle.setProperty("color-profile", "url(#prof)","");
+  localStr = cssStyle.getPropertyValue("color-profile");
+  absStr = computedStyle.getPropertyValue("color-profile");
+  t7.firstChild.nodeValue = unifyURL(localStr);
+  t8.firstChild.nodeValue = unifyURL(absStr);
+
+  cssStyle.setProperty("filter", "url(#filt)","");
+  localStr = cssStyle.getPropertyValue("filter");
+  absStr = computedStyle.getPropertyValue("filter");
+  t9.firstChild.nodeValue  = unifyURL(localStr);
+  t10.firstChild.nodeValue = unifyURL(absStr);
+
+  elem = document.getElementById('yyy');
+  var cssStyle = elem.getStyle();
+  computedStyle = view.getComputedStyle(elem, "");
+
+  cssStyle.setProperty("marker-start", "url(#mark)","");
+  localStr = cssStyle.getPropertyValue("marker-start");
+  absStr = computedStyle.getPropertyValue("marker-start");
+  t11.firstChild.nodeValue = unifyURL(localStr);
+  t12.firstChild.nodeValue = unifyURL(absStr);
+
+  cssStyle.setProperty("mask", "url(#mask)","");
+  localStr = cssStyle.getPropertyValue("mask");
+  absStr = computedStyle.getPropertyValue("mask");
+  t13.firstChild.nodeValue = unifyURL(localStr);
+  t14.firstChild.nodeValue = unifyURL(absStr);
+}
+
+function regardStart() {
+  inRegard = true;
+}
+]]></script>
+
+<!-- cursor, src, clip-path, color-profile, filter, marker, mask -->
+
+  <radialGradient id="grad">
+    <stop offset="0" stop-color="gold" />
+    <stop offset="1" stop-color="crimson" />
+  </radialGradient>
+  
+  <cursor id="cur" x="16" y="16" 
+    xlink:href="../../resources/images/hotSpotCenter.png"/>
+
+  <clipPath id="clip" clipPathUnits="objectBoundingBox">
+    <circle cx=".25"  cy=".5" r=".4"/>
+    <circle cx=".75"  cy=".5" r=".4"/>
+  </clipPath>
+
+  <color-profile id="prof" name="changeColorAuto" 
+    rendering-intent="auto"
+    xlink:href="../../resources/icc/changeColor.icm"/>
+
+  <filter id="filt" primitiveUnits="objectBoundingBox"
+    filterUnits="objectBoundingBox"
+    x="0" y="0" width="200%" height="200%">
+    <feOffset x="0%" y="0%" width="50%" height="50%"/>
+    <feTile /> 
+  </filter>
+
+  <marker id="mark" markerWidth="48" markerHeight="32" 
+    viewBox="-10 -3 13 6" orient="auto" refX="0" refY="0"
+    markerUnits="strokeWidth">
+    <g stroke="none" fill="gold">
+      <circle r="3" />
+      <rect x="-1" y="0" width="2" height="7" />
+      <path d="M -3 6 l 6 0 l -3 3 z" />
+    </g>
+  </marker>
+
+  <mask id="mask">
+    <g transform="translate(275, 400)">
+      <circle cx="-25" cy="-10" r="25" fill="#ff0000" />
+      <circle cx="25" cy="-10" r="25" fill="#00ff00" />
+      <circle cx="-25" cy="10" r="25" fill="#0000ff" />
+      <circle cx="25" cy="10" r="25" fill="#ffffff" />
+    </g>
+  </mask>
+
+  <g transform="translate(30, 75)">
+    <g stroke="black" >
+      <rect x="120" y="15" width="210" height="30" fill="white"/>
+      <rect x="20" y="45" width="310" height="30" fill="lightgrey"/>
+      <rect x="20" y="75" width="310" height="30" fill="white"/>
+      <rect x="20" y="105" width="310" height="30" fill="lightgrey"/>
+      <rect x="20" y="135" width="310" height="30" fill="white"/>
+      <rect x="20" y="165" width="310" height="30" fill="lightgrey"/>
+      <rect x="20" y="195" width="310" height="30" fill="white"/>
+      <rect x="20" y="225" width="310" height="30" fill="lightgrey"/>
+      <line x1="225" y1="15" x2="225" y2="255"/>
+      <line x1="120" y1="15" x2="120" y2="255"/>
+    </g>
+    <g text-anchor="middle">
+      <text x="175" y="35">Style</text>
+      <text x="275" y="35">Computed</text>
+
+      <text x="75" y="65">fill</text>
+      <text id="t1" x="175" y="65"> </text>
+      <text id="t2" x="275" y="65"> </text>
+
+      <text x="75" y="95">cursor</text>
+      <text id="t3" x="175" y="95"> </text>
+      <text id="t4" x="275" y="95"> </text>
+
+      <text x="75" y="125">clip-path</text>
+      <text id="t5" x="175" y="125"> </text>
+      <text id="t6" x="275" y="126"> </text>
+
+      <text x="75" y="155">color-profile</text>
+      <text id="t7" x="175" y="155"> </text>
+      <text id="t8" x="275" y="155"> </text>
+
+      <text x="75" y="185">filter</text>
+      <text id="t9" x="175" y="185"> </text>
+      <text id="t10" x="275" y="185"> </text>
+
+      <text x="75" y="215">marker</text>
+      <text id="t11" x="175" y="215"> </text>
+      <text id="t12" x="275" y="215"> </text>
+
+      <text x="75" y="245">mask</text>
+      <text id="t13" x="175" y="245"> </text>
+      <text id="t14" x="275" y="245"> </text>
+    </g>
+  </g>
+  <rect id="xxx" x="75" y="375" width="100" height="50"
+    style="fill:blue"/>
+
+  <path id="yyy" d="M225 375 h 100 v 50 h -100 z"
+    marker-end="url(#mark)"
+    style="fill:crimson" stroke="black" stroke-width="1"/>
+
+</svg>
\ No newline at end of file
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/remove.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/remove.svg
new file mode 100644
index 0000000..29d5d95
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/remove.svg
@@ -0,0 +1,87 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- append child test                                                      -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: remove.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>removeChild test 'onload'</title>
+
+    <text x="50%" y="45" class="title">removeChild test 'onload'</text>
+
+    <script type="text/ecmascript">
+
+    var svgNamespaceURI = "http://www.w3.org/2000/svg";;
+    var TEXT_NODE = 3;
+
+    function remove(evt) {
+        var g = evt.currentTarget;
+        // First remove any text node children.
+        var fc = g.firstChild;
+        while (fc) {
+          if (fc.getNodeType() == TEXT_NODE) {
+            var x = fc;
+            fc = fc.nextSibling;
+            g.removeChild(x);
+          } else {
+            fc = fc.nextSibling;
+          }
+        }
+        g.removeChild(g.firstChild); // remove grey
+        g.removeChild(g.firstChild.nextSibling); // remove crimson
+        g.removeChild(g.firstChild.nextSibling); // remove orange
+        g.removeChild(g.firstChild); // remove gold
+    }
+
+    function removeAll(evt) {
+        var g = evt.currentTarget;
+        while (g.hasChildNodes()) {
+                g.removeChild(g.firstChild);
+        }
+    }
+
+    </script>
+
+    <g onload="remove(evt)">
+       <rect x="100" y="100" width="100" height="100" style="fill:#eee"/>
+       <rect x="150" y="100" width="100" height="100" style="fill:gold"/>
+       <rect x="200" y="100" width="100" height="100" style="fill:crimson"/>
+       <rect x="250" y="100" width="100" height="100" style="fill:orange"/>
+    </g>
+
+    <g onload="removeAll(evt)">
+       <rect x="100" y="300" width="100" height="100" style="fill:#eee"/>
+       <rect x="150" y="300" width="100" height="100" style="fill:gold"/>
+       <rect x="200" y="300" width="100" height="100" style="fill:crimson"/>
+       <rect x="250" y="300" width="100" height="100" style="fill:orange"/>
+    </g>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/removeLast.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/removeLast.svg
new file mode 100644
index 0000000..d452c35
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/removeLast.svg
@@ -0,0 +1,56 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- remove last                                                            -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: removeLast.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <script type="text/ecmascript">
+    function remove(evt) {
+        evt.target.parentNode.removeChild(evt.target);
+    }
+
+    </script>
+
+   <rect onclick="remove(evt); onDone();" 
+         x="100" y="100" width="100" height="100" style="fill:#eee"/>
+
+
+
+    <script type="text/ecmascript"><![CDATA[
+function onDone() {
+    if (!(regardTestInstance == null)) {
+        regardTestInstance.scriptDone();   
+    } else {
+        alert("This button only works when run in the regard framework");
+    }
+}
+    ]]></script>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/removeOnclick.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/removeOnclick.svg
new file mode 100644
index 0000000..1c5d94c
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/removeOnclick.svg
@@ -0,0 +1,87 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- append child test                                                      -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: removeOnclick.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>removeChild test 'onload'</title>
+
+    <text x="50%" y="45" class="title">removeChild test 'onclick'</text>
+
+    <script type="text/ecmascript">
+
+    var svgNamespaceURI = "http://www.w3.org/2000/svg";;
+    var TEXT_NODE = 3;
+
+    function remove(evt) {
+        var g = evt.currentTarget;
+        // First remove any text node children.
+        var fc = g.firstChild;
+        while (fc) {
+          if (fc.getNodeType() == TEXT_NODE) {
+            var x = fc;
+            fc = fc.nextSibling;
+            g.removeChild(x);
+          } else {
+            fc = fc.nextSibling;
+          }
+        }
+        g.removeChild(g.firstChild); // remove grey
+        g.removeChild(g.firstChild.nextSibling); // remove crimson
+        g.removeChild(g.firstChild.nextSibling); // remove orange
+        g.removeChild(g.firstChild); // remove gold
+    }
+
+    function removeAll(evt) {
+        var g = evt.currentTarget;
+        while (g.hasChildNodes()) {
+                g.removeChild(g.firstChild);
+        }
+    }
+
+    </script>
+
+    <g onclick="remove(evt)">
+       <rect x="100" y="100" width="100" height="100" style="fill:#eee"/>
+       <rect x="150" y="100" width="100" height="100" style="fill:gold"/>
+       <rect x="200" y="100" width="100" height="100" style="fill:crimson"/>
+       <rect x="250" y="100" width="100" height="100" style="fill:orange"/>
+    </g>
+
+    <g onclick="removeAll(evt)">
+       <rect x="100" y="300" width="100" height="100" style="fill:#eee"/>
+       <rect x="150" y="300" width="100" height="100" style="fill:gold"/>
+       <rect x="200" y="300" width="100" height="100" style="fill:crimson"/>
+       <rect x="250" y="300" width="100" height="100" style="fill:orange"/>
+    </g>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/resourceDocDynamic11.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/resourceDocDynamic11.svg
new file mode 100644
index 0000000..ff5ea25
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/resourceDocDynamic11.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" standalone="yes"?>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Dynamic SVG 1.1 resource document for use by primaryDoc.svg            -->
+<!--                                                                        -->
+<!-- @author cam mcc id au                                                  -->
+<!-- @version $Id: resourceDocDynamic11.svg 985243 2010-08-13 15:30:25Z helder $                             
                             -->
+<!-- ====================================================================== -->
+
+<svg xmlns="http://www.w3.org/2000/svg"; version="1.1">
+  <script type="text/ecmascript">
+    // force document to be dynamic
+  </script>
+  <circle id="e" cx="100" cy="100" r="100" fill="#50f"/>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/resourceDocDynamic12.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/resourceDocDynamic12.svg
new file mode 100644
index 0000000..d9cc29d
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/resourceDocDynamic12.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" standalone="yes"?>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Dynamic SVG 1.2 resource document for use by primaryDoc.svg            -->
+<!--                                                                        -->
+<!-- @author cam mcc id au                                                  -->
+<!-- @version $Id: resourceDocDynamic12.svg 985243 2010-08-13 15:30:25Z helder $                             
                             -->
+<!-- ====================================================================== -->
+
+<svg xmlns="http://www.w3.org/2000/svg"; version="1.2">
+  <script type="text/ecmascript">
+    // force document to be dynamic
+  </script>
+  <circle id="e" cx="200" cy="200" r="100" fill="#0ff"/>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/resourceDocStatic11.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/resourceDocStatic11.svg
new file mode 100644
index 0000000..f66fbb6
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/resourceDocStatic11.svg
@@ -0,0 +1,30 @@
+<?xml version="1.0" standalone="yes"?>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Static SVG 1.1 resource document for use by primaryDoc.svg             -->
+<!--                                                                        -->
+<!-- @author cam mcc id au                                                  -->
+<!-- @version $Id: resourceDocStatic11.svg 985243 2010-08-13 15:30:25Z helder $                              
                            -->
+<!-- ====================================================================== -->
+
+<svg xmlns="http://www.w3.org/2000/svg"; version="1.1">
+  <circle id="e" cx="50" cy="50" r="100" fill="#00f"/>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/resourceDocStatic12.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/resourceDocStatic12.svg
new file mode 100644
index 0000000..709fcd4
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/resourceDocStatic12.svg
@@ -0,0 +1,30 @@
+<?xml version="1.0" standalone="yes"?>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Static SVG 1.2 resource document for use by primaryDoc.svg             -->
+<!--                                                                        -->
+<!-- @author cam mcc id au                                                  -->
+<!-- @version $Id: resourceDocStatic12.svg 985243 2010-08-13 15:30:25Z helder $                              
                            -->
+<!-- ====================================================================== -->
+
+<svg xmlns="http://www.w3.org/2000/svg"; version="1.2">
+  <circle id="e" cx="150" cy="150" r="100" fill="#0af"/>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/rootSizeChange.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/rootSizeChange.svg
new file mode 100644
index 0000000..5941124
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/rootSizeChange.svg
@@ -0,0 +1,86 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a circle attributes                                    -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: rootSizeChange.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     onload="updateGroup1(); updateGroup2()">
+    <title>Testing Update engine when root changes size/location.</title>
+
+    <desc>To ensure proper test results you may need to turn off
+    double buffering and pause the animation and force a repaint, if
+    you see lots of junk then the repaint engine is not working
+    properly.</desc>
+    <script type="text/ecmascript"><![CDATA[
+        var inRegard = false;
+        var time1 = 70;
+        function updateGroup1() {
+            var elt = document.getElementById("g1");
+            var x = Math.cos(time1*3.1415926/180)*150 + 225;
+            var y = Math.sin(.5*(time1+90)*3.1415926/180)*150 + 250;
+            elt.setAttributeNS(null, "transform", 
+                               "translate("+x+","+y+")");
+            time1 += 15;
+            if (!inRegard || (time1 < 470))
+               setTimeout('updateGroup1()', 100);
+            if (inRegard && (time2 <= -290) && (time1 >= 470))
+              regardTestInstance.scriptDone();
+        }
+        var time2 = 110;
+        function updateGroup2() {
+            var elt = document.getElementById("g2");
+            var x = Math.cos(time2*3.1415926/180)*150 + 225;
+            var y = Math.sin(.5*(time2+90)*3.1415926/180)*150 + 250;
+            elt.setAttributeNS(null, "transform", 
+                               "translate("+x+","+y+")");
+            time2 -= 15;
+            if (!inRegard || (time2 > -290))
+               setTimeout('updateGroup2()', 100);
+            if (inRegard && (time2 <= -290) && (time1 >= 470))
+              regardTestInstance.scriptDone();
+        }
+       function regardStart() {
+          inRegard = true;
+       }
+    ]]></script>
+
+    <g id="test-content">
+       <g id="g1">
+           <rect x="-15" y="-25" width="30" height="50" 
+                 fill="none" stroke="black"/>
+           <circle cx="0" cy="0" r="10" fill="red"/>
+       </g> 
+       <g id="g2">
+           <rect x="-15" y="-25" width="30" height="50" 
+                 fill="none" stroke="black"/>
+           <circle cx="0" cy="0" r="10" fill="blue"/>
+       </g> 
+    </g>
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/security.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/security.svg
new file mode 100644
index 0000000..ee9d328
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/security.svg
@@ -0,0 +1,197 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Checks that access to critical functions is not allowed.                  -->
+<!-- Specifically, this test checks that:                                      -->
+<!--                                                                           -->
+<!-- - access to local files is denied.                                        -->
+<!-- - access to the network via sockets is denied.                            -->
+<!-- - access to audio is denied.                                              -->
+<!-- - access to logging is denied.                                            -->
+<!-- - access to network features is denied.                                   -->
+<!-- - access to system properties is denied.                                  -->
+<!-- - access to serialization is denied.                                      -->
+<!-- - access to SQL log is denied.                                            -->
+<!-- - access to SSL is denied.                                                -->
+<!--                                                                           -->
+<!-- @author vincent hardy sun com                                             -->
+<!-- @version $Id: security.svg 475477 2006-11-15 22:44:28Z cam $   -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; 
+     width="450" height="500" viewBox="0 0 450 500">
+<title>Check Security Settings on Load</title>
+
+    <script type="text/ecmascript" xlink:href="../../resources/script/scrollbar.js"/>
+    <script type="text/ecmascript" xlink:href="../../resources/script/common.js"/>
+    <script type="text/ecmascript" xlink:href="../../resources/script/rhinoSecurity.js" />
+
+    <style type="text/css"><![CDATA[
+        .cellLabel {
+            fill: white;
+            stroke: black;
+            shape-rendering: crispEdges;
+        }
+
+        .cellStatus {
+            stroke: black;
+            shape-rendering: crispEdges;
+        }
+
+        .label {
+            font-size: 12;
+            font-family: sans-serif;
+            fill: black;
+            text-anchor: middle;
+        }
+
+        .passedTest {
+            fill: rgb(0,200,50);
+            stroke: none;
+            shape-rendering: crispEdges;
+        }
+
+        .failedTest {
+            fill: crimson;
+            stroke: none;
+            shape-rendering: crispEdges;
+        }
+
+        #table {
+            stroke: black;
+        }
+
+        .untested {
+            fill: gray;
+            stroke: none;
+            shapeRendering: crispEdges;
+        }
+
+        .tableCell {
+            fill: none;
+            stroke: black;
+            shapeRendering: crispEdges;
+        }
+    ]]>
+    </style>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+        <text x="225" y="30" class="title">
+            ECMA Script Security Check
+        </text>
+
+        <defs>
+            <g id="row" fill="gray">
+                <rect id="rowLabel" class="cellLabel" x="0" y="0" width="150" height="20"/>
+                <rect id="rowStatus" class="cellStatus" x="150" y="0" width="20"
+                      height="20"/>
+            </g>
+        </defs>
+
+        <defs>
+            <clipPath id="clipA">
+                <use xlink:href="#contentClipRect"/>
+            </clipPath>
+
+            <rect id="contentClipRect" x="50" y="70" width="350" height="375"/>
+
+             <g id="upArrow" >
+                <circle cx="6" cy="6" r="6" fill="gray" />
+                <polygon points="0 0, -1 1, 1 1" 
+                         transform="translate(6, 4) scale(3)"/>
+            </g>
+
+            <g id="downArrow" >
+                <circle cx="6" cy="6" r="6" fill="gray" />
+                <polygon points="0 0, -1 1, 1 1" 
+                         transform="translate(6, 8) scale(3) rotate(180)"/>
+            </g>
+
+            <g id="cursor">
+                <polygon points="0 0, -1 1, 1 1" 
+                         transform="translate(2) scale(6) translate(0, 1) rotate(-90)"/>
+            </g>
+
+
+        </defs>
+
+        <g id="securityTableTitle" fill="none" stroke="black" shape-rendering="crispEdges">
+            <rect x="50" y="50" width="330" height="20" fill="lightgray"/>
+            <g>
+                <desc>Test Result</desc>
+                <polygon points="383,53 397,53 383,67" fill="crimson" stroke="none" />
+                <polygon points="383,67 397,67 397,53" fill="rgb(0,200,50)" stroke="none" />
+            </g>
+            <rect x="380" y="50" width="20" height="20" />
+            <text x="215" y="65" text-anchor="middle" stroke="none" fill="black">Security Check Type</text>
+        </g>
+
+        <g transform="translate(0, 0)">
+            <g id="scrolledArea">
+                <g id="clippedArea"
+                   onload="new ScrollBar('securityResults', 30, 400, 70, 375, 1200, 12, '#upArrow', 
'#downArrow', '#cursor', 12)"
+                   clip-path="url(#clipA)">
+                    <g id="securityResults">
+                        <!-- Here is where the security results will be appended -->
+                    </g>
+                </g>
+            </g>
+        </g>
+
+        <use xlink:href="#contentClipRect" stroke="rgb(64,64,64)" fill="none"/>
+
+        <!-- =========================================== -->
+        <!-- Button for starting the security check      -->
+        <!-- =========================================== -->
+        <g transform="translate(90, 470)" onmouseover="setAttribute('runTest', 'fill', 'gold')"
+                  onmouseout="setAttribute('runTest', 'fill', 'lightgray')"
+                  onclick="runEcmascriptSecurityTest()">
+            <rect id="runTest" x="-40" y="-10" width="80" height="20" 
+                    stroke="black" fill="lightgray" />
+
+            <text x="0" y="5" text-anchor="middle">Run Test</text>
+        </g>
+
+        <!-- =========================================== -->
+        <!-- Used to display the overall status          -->
+        <!-- =========================================== -->
+        <g id="globalStatusGroup">
+            <rect x="380" y="460" width="20" height="20" 
+                  class="tableCell" />
+            <rect id="globalStatus" 
+                  x="383" y="463" width="14" height="14"
+                  class="untested" />
+            <text id="successRatio" x="375" y="475" text-anchor="end">not run</text>
+        </g>
+
+    </g>
+
+
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/security2.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/security2.svg
new file mode 100644
index 0000000..2118aee
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/security2.svg
@@ -0,0 +1,203 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"; >
+
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Checks that access to critical functions is not allowed.                  -->
+<!-- Specifically, this test checks that:                                      -->
+<!--                                                                           -->
+<!-- - access to local files is denied.                                        -->
+<!-- - access to the network via sockets is denied.                            -->
+<!-- - access to audio is denied.                                              -->
+<!-- - access to logging is denied.                                            -->
+<!-- - access to network features is denied.                                   -->
+<!-- - access to system properties is denied.                                  -->
+<!-- - access to serialization is denied.                                      -->
+<!-- - access to SQL log is denied.                                            -->
+<!-- - access to SSL is denied.                                                -->
+<!--                                                                           -->
+<!-- This test is designed for Java Language scripting.                        -->
+<!--                                                                           -->
+<!-- @author vincent hardy sun com                                             -->
+<!-- @version $Id: security2.svg 475477 2006-11-15 22:44:28Z cam $   -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink";
+     width="450" height="500" viewBox="0 0 450 500">
+    <title>
+        Check Security Settings on Load
+    </title>
+
+    <script type="text/ecmascript" xlink:href="../../resources/script/scrollbar.js"/>
+    <script type="text/ecmascript" xlink:href="../../resources/script/common.js"/>
+    <!-- <script type="text/ecmascript" 
xlink:href="http://zantafio:8080/samples/tests//resources/script/common.js"/> -->
+    <!-- <script type="application/java-archive" 
xlink:href="http://zantafio:8080/samples/tests/spec/scripting/security2.jar"/> -->
+    <script type="application/java-archive" xlink:href="security2.jar"/> 
+
+    <style type="text/css"><![CDATA[
+        .cellLabel {
+            fill: white;
+            stroke: black;
+            shape-rendering: crispEdges;
+        }
+
+        .cellStatus {
+            stroke: black;
+            shape-rendering: crispEdges;
+        }
+
+        .label {
+            font-size: 12;
+            font-family: sans-serif;
+            fill: black;
+            text-anchor: middle;
+        }
+
+        .passedTest {
+            fill: rgb(0,200,50);
+            stroke: none;
+            shape-rendering: crispEdges;
+        }
+
+        .failedTest {
+            fill: crimson;
+            stroke: none;
+            shape-rendering: crispEdges;
+        }
+
+        #table {
+            stroke: black;
+        }
+
+        .untested {
+            fill: gray;
+            stroke: none;
+            shapeRendering: crispEdges;
+        }
+
+        .tableCell {
+            fill: none;
+            stroke: black;
+            shapeRendering: crispEdges;
+        }
+    ]]>
+    </style>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+        <text x="225" y="30" class="title">
+            Java Jar-file Security Check
+        </text>
+
+        <defs>
+            <g id="row" fill="gray">
+                <rect id="rowLabel" class="cellLabel" x="0" y="0" width="150" height="20"/>
+                <rect id="rowStatus" class="cellStatus" x="150" y="0" width="20"
+                      height="20"/>
+            </g>
+        </defs>
+
+        <defs>
+            <clipPath id="clipA">
+                <use xlink:href="#contentClipRect"/>
+            </clipPath>
+
+            <rect id="contentClipRect" x="50" y="70" width="350" height="375"/>
+
+             <g id="upArrow" >
+                <circle cx="6" cy="6" r="6" fill="gray" />
+                <polygon points="0 0, -1 1, 1 1" 
+                         transform="translate(6, 4) scale(3)"/>
+            </g>
+
+            <g id="downArrow" >
+                <circle cx="6" cy="6" r="6" fill="gray" />
+                <polygon points="0 0, -1 1, 1 1" 
+                         transform="translate(6, 8) scale(3) rotate(180)"/>
+            </g>
+
+            <g id="cursor">
+                <polygon points="0 0, -1 1, 1 1" 
+                         transform="translate(2) scale(6) translate(0, 1) rotate(-90)"/>
+            </g>
+
+
+        </defs>
+
+        <g id="securityTableTitle" fill="none" stroke="black" shape-rendering="crispEdges">
+            <rect x="50" y="50" width="330" height="20" fill="lightgray"/>
+            <g>
+                <desc>Test Result</desc>
+                <polygon points="383,53 397,53 383,67" fill="crimson" stroke="none" />
+                <polygon points="383,67 397,67 397,53" fill="rgb(0,200,50)" stroke="none" />
+            </g>
+            <rect x="380" y="50" width="20" height="20" />
+            <text x="215" y="65" text-anchor="middle" stroke="none" fill="black">Security Check Type</text>
+        </g>
+
+        <g transform="translate(0, 0)">
+            <g id="scrolledArea">
+                <g id="clippedArea"
+                   onload="new ScrollBar('securityResults', 30, 400, 70, 375, 1200, 12, '#upArrow', 
'#downArrow', '#cursor', 12)"
+                   clip-path="url(#clipA)">
+                    <g id="securityResults">
+                        <!-- Here is where the security results will be appended -->
+                    </g>
+                </g>
+            </g>
+        </g>
+
+        <use xlink:href="#contentClipRect" stroke="rgb(64,64,64)" fill="none"/>
+
+        <!-- =========================================== -->
+        <!-- Button for starting the security check      -->
+        <!-- =========================================== -->
+        <g transform="translate(90, 470)" onmouseover="setAttribute('runTest', 'fill', 'gold')"
+                  onmouseout="setAttribute('runTest', 'fill', 'lightgray')">
+            <rect id="runTest" x="-40" y="-10" width="80" height="20" 
+                    stroke="black" fill="lightgray" />
+
+            <text x="0" y="5" text-anchor="middle">Run Test</text>
+        </g>
+
+        <!-- =========================================== -->
+        <!-- Used to display the overall status          -->
+        <!-- =========================================== -->
+        <g id="globalStatusGroup">
+            <rect x="380" y="460" width="20" height="20" 
+                  class="tableCell" />
+            <rect id="globalStatus" 
+                  x="383" y="463" width="14" height="14"
+                  class="untested" />
+            <text id="successRatio" x="375" y="475" text-anchor="end">not run</text>
+        </g>
+
+
+    </g>
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/security3.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/security3.svg
new file mode 100644
index 0000000..f7f42cd
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/security3.svg
@@ -0,0 +1,328 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This test checks that scripts can properly invoke the Window object       -->
+<!-- methods but that they cannot access data through getURL.                  -->
+<!--                                                                           -->
+<!-- @author vincent hardy sun com                                             -->
+<!-- @version $Id: security3.svg 475477 2006-11-15 22:44:28Z cam $   -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; 
+     width="450" height="500" viewBox="0 0 450 500"
+     onload="windowTest()">
+
+    <text x="225" y="30" class="title">
+        ECMA Script Secure Access to the Window Object
+    </text>
+
+    <style type="text/css"><![CDATA[
+        .cellLabel {
+            fill: white;
+            stroke: black;
+            shape-rendering: crispEdges;
+        }
+
+        .cellStatus {
+            stroke: black;
+            fill: white;
+            shape-rendering: crispEdges;
+        }
+
+        .label {
+            font-size: 12;
+            font-family: sans-serif;
+            fill: black;
+            text-anchor: start;
+        }
+
+        .passedTest {
+            fill: rgb(0,200,50);
+            stroke: none;
+            shape-rendering: crispEdges;
+        }
+
+        .failedTest {
+            fill: crimson;
+            stroke: none;
+            shape-rendering: crispEdges;
+        }
+
+        #table {
+            stroke: black;
+        }
+
+        .untested {
+            fill: gray;
+            stroke: none;
+            shapeRendering: crispEdges;
+        }
+
+        .tableCell {
+            fill: none;
+            stroke: black;
+            shapeRendering: crispEdges;
+        }
+    ]]>
+    </style>
+
+    <script type="text/ecmascript" ><![CDATA[
+
+function windowTest() {
+    evalTest();
+    setIntervalTest();
+    setTimeoutTest();
+    getURLTest();
+    alertTest();
+    confirmTest();
+    promptTest();
+}
+
+function evalTest() {
+    var t = document.getElementById("eval");
+    try {
+        eval("dummyGetURL()");
+        t.setAttributeNS(null, "class", "passedTest");
+    } catch (e) {
+        t.setAttributeNS(null, "class", "failedTest");
+    }
+}
+
+function dummyGetURL(){
+    alert('dummyGetURL');
+    getURL('security3Include.svg', dummyFunction);
+}
+
+function dummyFunction() {
+    System.out.println("===>> dummyFunction called");
+}
+
+function setIntervalTest(){
+    var t = document.getElementById("setInterval");
+    var intervalId;
+   
+    try {
+        intervalId = setInterval(dummyFunction, 10000);
+        t.setAttributeNS(null, "class", "passedTest");
+    } catch (e) {
+        t.setAttributeNS(null, "class", "failedTest");
+        return; // Cannot test clearInterval
+    }
+
+    t = document.getElementById("clearInterval");
+
+    try {
+        window.clearInterval(intervalId);
+        t.setAttributeNS(null, "class", "passedTest");
+    } catch (e) {
+        System.out.println("Got exception : " + e);
+        t.setAttributeNS(null, "class", "failedTest");
+    }
+}
+
+function setTimeoutTest(){
+    var t = document.getElementById("setTimeout");
+    var timeoutId = null;
+   
+    try {
+        timeoutId = window.setTimeout(dummyFunction, 10000);
+        t.setAttributeNS(null, "class", "passedTest");
+    } catch (e) {
+        t.setAttributeNS(null, "class", "failedTest");
+        return; // Cannot test clearTimeout
+    }
+
+    t = document.getElementById("clearTimeout");
+
+    try {
+        window.clearTimeout(timeoutId);
+        t.setAttributeNS(null, "class", "passedTest");
+    } catch (e) {
+        t.setAttributeNS(null, "class", "failedTest");
+    }
+}
+
+
+function getURLTest(){
+    var t = document.getElementById("getURL");
+    try {
+        getURL("security3Include.svg", processGetURL);
+    } catch (e) {
+        t.setAttributeNS(null, "class", "failedTest");
+        return;
+    }
+}
+
+function processGetURL(status){
+    var t = document.getElementById("getURL");
+    alert("status.success : " + status.success);
+    if (status.success == false) {
+        t.setAttributeNS(null, "class", "failedTest");
+        return;
+    }
+
+    t.setAttributeNS(null, "class", "passedTest");
+
+    t = document.getElementById("parseXML");
+    try {
+        var root = parseXML(status.content, document);
+        if (root == null){
+            t.setAttributeNS(null, "class", "failedTest");
+        } else {
+            t.setAttributeNS(null, "class", "passedTest");
+        }
+    } catch (e) {
+        t.setAttributeNS(null, "class", "failedTest");
+    }
+
+}
+
+function dummyProcessGetURL(status){
+}
+
+function alertTest(){
+    var t = document.getElementById("alert");
+    try {
+        alert("alert() test");
+        t.setAttributeNS(null, "class", "passedTest");
+    } catch (e) {
+        t.setAttributeNS(null, "class", "failedTest");
+    }
+}
+
+function confirmTest(){
+    var t = document.getElementById("confirm");
+    try {
+        confirm("confirm() test");
+        t.setAttributeNS(null, "class", "passedTest");
+    } catch (e) {
+        t.setAttributeNS(null, "class", "failedTest");
+    }
+}
+
+function promptTest(){
+    var t = document.getElementById("prompt");
+    try {
+        prompt("prompt() test");
+        t.setAttributeNS(null, "class", "passedTest");
+    } catch (e) {
+        t.setAttributeNS(null, "class", "failedTest");
+    }
+}
+
+    ]]></script>
+
+
+    <g id="testTable" transform="translate(125, 150)">
+
+        <g id="setIntervalTest">
+            <rect class="cellLabel" width="200" height="20" />
+            <rect class="cellStatus" x="200" width="20" height="20" />
+            <rect id="setInterval" class="untested" x="203" y="3" width="14" height="14" />
+            <text x="5" y="15" class="label">setInterval</text>
+        </g>
+
+        <g id="clearIntervalTest" transform="translate(0, 20)">
+            <rect class="cellLabel" width="200" height="20" />
+            <rect class="cellStatus" x="200" width="20" height="20" />
+            <rect id="clearInterval" class="untested" x="203" y="3" width="14" height="14" />
+            <text x="5" y="15" class="label">clearInterval</text>
+        </g>
+
+        <g id="setTimeoutTest" transform="translate(0, 40)">
+            <rect class="cellLabel" width="200" height="20" />
+            <rect class="cellStatus" x="200" width="20" height="20" />
+            <rect id="setTimeout" class="untested" x="203" y="3" width="14" height="14" />
+            <text x="5" y="15" class="label">setTimeout</text>
+        </g>
+
+        <g id="clearTimeoutTest" transform="translate(0, 60)">
+            <rect class="cellLabel" width="200" height="20" />
+            <rect class="cellStatus" x="200" width="20" height="20" />
+            <rect id="clearTimeout" class="untested" x="203" y="3" width="14" height="14" />
+            <text x="5" y="15" class="label">clearTimeout</text>
+        </g>
+
+        <g id="parseXMLTest" transform="translate(0, 80)">
+            <rect class="cellLabel" width="200" height="20" />
+            <rect class="cellStatus" x="200" width="20" height="20" />
+            <rect id="parseXML" class="untested" x="203" y="3" width="14" height="14" />
+            <text x="5" y="15" class="label">parseXML</text>
+        </g>
+
+        <g id="getURLTest" transform="translate(0, 100)">
+            <rect class="cellLabel" width="200" height="20" />
+            <rect class="cellStatus" x="200" width="20" height="20" />
+            <rect id="getURL" class="untested" x="203" y="3" width="14" height="14" />
+            <text x="5" y="15" class="label">getURL</text>
+        </g>
+
+        <g id="alertTest" transform="translate(0, 120)">
+            <rect class="cellLabel" width="200" height="20" />
+            <rect class="cellStatus" x="200" width="20" height="20" />
+            <rect id="alert" class="untested" x="203" y="3" width="14" height="14" />
+            <text x="5" y="15" class="label">alert</text>
+        </g>
+
+        <g id="confirmTest" transform="translate(0, 140)">
+            <rect class="cellLabel" width="200" height="20" />
+            <rect class="cellStatus" x="200" width="20" height="20" />
+            <rect id="confirm" class="untested" x="203" y="3" width="14" height="14" />
+            <text x="5" y="15" class="label">confirm</text>
+        </g>
+
+        <g id="promptTest" transform="translate(0, 160)">
+            <rect class="cellLabel" width="200" height="20" />
+            <rect class="cellStatus" x="200" width="20" height="20" />
+            <rect id="prompt" class="untested" x="203" y="3" width="14" height="14" />
+            <text x="5" y="15" class="label">prompt</text>
+        </g>
+
+        <g id="evalTest" transform="translate(0, 160)">
+            <rect class="cellLabel" width="200" height="20" />
+            <rect class="cellStatus" x="200" width="20" height="20" />
+            <rect id="eval" class="untested" x="203" y="3" width="14" height="14" />
+            <text x="5" y="15" class="label">eval</text>
+        </g>
+
+        
+    </g>
+
+
+    <script type="text/ecmascript"><![CDATA[
+function onDone() {
+    if (!(regardTestInstance == null)) {
+        regardTestInstance.scriptDone();   
+    } else {
+        alert("This button only works when run in the regard framework");
+    }
+}
+    ]]></script>
+    <g id="done" transform="translate(195, 468)" cursor="pointer" onclick="onDone()">
+        <rect rx="5" ry="5" width="60" height="25" fill="#eeeeee" stroke="black" />
+        <text x="30" y="18" font-size="14" font-weight="bold" text-anchor="middle">Done</text>
+    </g>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/security3Include.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/security3Include.svg
new file mode 100644
index 0000000..f74da87
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/security3Include.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- The content of this file is included through scripting into security3.svg -->
+<!--                                                                           -->
+<!-- @author vincent hardy sun com                                             -->
+<!-- @version $Id: security3Include.svg 475477 2006-11-15 22:44:28Z cam $   -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; 
+     width="450" height="500" viewBox="0 0 450 500">
+
+    <text transform="translate(225,250)" text-anchor="middle" font-size="20">
+        <tspan x="0" y="0">I was</tspan>
+        <tspan x="0" y="1em">included with success</tspan>
+    </text>
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/setProperty.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/setProperty.svg
new file mode 100644
index 0000000..41ead77
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/setProperty.svg
@@ -0,0 +1,77 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Testing calls to CSSStlyeDeclaration.setProperty                       -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: setProperty.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500"  viewBox="0 0 450 500" 
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+    <title>Testing CSS DOM with setProperty.</title>
+
+
+<script><![CDATA[
+    function regardStart(){
+      setTimeout("test()", 20);
+    }
+    function test() {
+       var e, style;
+
+       e = document.getElementById("r1");
+       style = e.getStyle();
+       style.setProperty("fill","url(#lg)","");
+
+       e = document.getElementById("r2");
+       style = e.getStyle();
+       var paint = style.getPropertyCSSValue("fill");
+       paint.setPaint(SVGPaint.SVG_PAINTTYPE_URI, "#lg", "", "");
+       if (paint.getPaintType() != SVGPaint.SVG_PAINTTYPE_URI) 
+           throw ("Wrong paint type: " + paint.getPaintType());
+       if (regardTestInstance != null) 
+         regardTestInstance.scriptDone();
+    }
+]]></script>
+
+  <linearGradient id="lg" x1="25%" x2="75%" y1="75%" y2="25%">
+    <stop offset=".0" stop-color="gold" />
+    <stop offset="1" stop-color="crimson" />
+  </linearGradient>
+  
+
+  <g>
+  <title>Setting CSS properties through CSS DOM</title>
+    <text class="title" x="50%" y="40"
+    >Setting CSS properties through CSS DOM</text>
+
+
+    <rect id="r1" x="10" y="150" width="100" height="50" fill="green"/>
+    <rect id="r2" x="120" y="150" width="100" height="50" 
+          style="fill:purple"/>
+  </g>
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/styling.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/styling.svg
new file mode 100644
index 0000000..81f83d8
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/styling.svg
@@ -0,0 +1,171 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     xmlns:cb="http://www.example.org/gui/checkbox";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+  <title>Dynamic test of CSS selectors</title>
+  <text x="50%" y="45" class="title">Dynamic test of CSS selectors</text>
+
+  <style type="text/css"><![CDATA[
+    text.button {
+    fill: #00F;
+    }
+
+    text + text.button {
+    fill: #888;
+    }
+
+    text + g > text {
+      fill: #F00;
+    }
+
+    g > text {
+      fill: #0F0;
+    }
+
+    g.xxx > text { fill: #F0F; }
+
+    [id=test4] > text { fill: #80F; }
+
+    g + [id=foo] > text { fill: #808; }
+
+    .checkbox > path { fill: none; stroke: black; stroke-width: 2; }
+    .checkbox > rect { fill: white; stroke: black; stroke-width: 1; }
+    .checkbox[selected=true] > path { visibility: visible;}
+    .checkbox[selected=false] > path { visibility: hidden; }
+
+    .a { fill: red; }
+    .b { fill: orange; }
+    rect.a + .b { fill: blue; }
+
+    ]]></style>
+
+  <script type="text/ecmascript"><![CDATA[
+    var svgns = "http://www.w3.org/2000/svg";;
+
+    function insertTextEvt(evt, x, y) {
+       insertText(evt.currentTarget, x, y);
+    }
+
+    function removeTargetEvt(evt) {
+       removeTarget(evt.currentTarget);
+    }
+
+    function setAttributeEvt(evt, attr, val) {
+      evt.currentTarget.setAttribute(attr, val);
+    }
+
+    function removeTarget(e) {
+       e.parentNode.removeChild(e);
+    }
+
+    function insertText(e, x, y) {
+       var t = document.createElementNS(svgns, "text");
+       t.setAttribute("x", x);
+       t.setAttribute("y", y);
+       t.appendChild(document.createTextNode("Inserted"));
+       e.parentNode.insertBefore(t, e);
+    }
+
+    function toggleSelectedEvt(evt) {
+      toggleSelected(evt.currentTarget);
+    }
+    function toggleSelected(e) {
+       var sel = e.getAttribute("selected");
+       if (sel == "true") {
+         e.setAttribute("selected", "false");
+       } else {
+         e.setAttribute("selected", "true");
+       }
+    }
+
+
+    function regardStart() {
+      var e;
+      removeTarget(document.getElementById("rm1"))
+      insertText(document.getElementById("in1"), '10', '75');
+
+      removeTarget(document.getElementById("rm2"))
+      insertText(document.getElementById("in2"), '10', '125');
+
+      document.getElementById("test3").setAttribute("class", "xxx");
+      document.getElementById("test4").setAttribute("class", "");
+      document.getElementById("test5").setAttribute("id", "foo");
+      toggleSelected(document.getElementById("cb"));
+
+      document.getElementById("a").setAttribute("class", "");
+
+      regardTestInstance.scriptDone();
+    }
+  ]]></script>
+
+  <g/>
+  <text id="rm1" x="10" y="100" onclick="removeTargetEvt(evt)">Click me</text>
+  <text x="100" y="100" class="button">Do I change?</text>
+
+  <g/>
+  <text id="in1" x="100" y="125" class="button" 
+        onclick="insertTextEvt(evt, '10', '125')">Click Me!</text>
+
+  <g/>
+  <text id="rm2" x="10" y="150" onclick="removeTargetEvt(evt)">Click me</text>
+  <g id="test1">
+    <text id="ct" x="100" y="150">Child Text</text>
+  </g>
+
+  <g/>
+  <g id="in2" onclick="insertTextEvt(evt, '10', '175')">
+    <text id="ct2" x="100" y="175">Click me</text>
+  </g>
+
+  <g id="test3" onclick="setAttributeEvt(evt, 'class', 'xxx')">
+    <text id="ct3" x="10" y="200">Click me</text>
+  </g>
+
+  <g id="test4" class="xxx" onclick="setAttributeEvt(evt, 'class', '')">
+    <text id="ct4" x="100" y="200">Click me</text>
+  </g>
+
+  <g id="test5" class="xxx" onclick="setAttributeEvt(evt, 'id', 'foo')">
+    <text id="ct5" x="200" y="200">Click me</text>
+  </g>
+
+  <g id="cb" class="checkbox" selected="true" transform="translate(10, 225)"
+     onclick="toggleSelectedEvt(evt)">
+    <rect width="15" height="15" fill="white" stroke="black"/>
+    <path d="M3,3 L12,12 M12,3 L3,12"/>
+  </g>
+
+  <g fill="white" stroke="black">
+    <rect id="a" class="a" x="10"  y="275" width="100" height="50"
+      onclick="setAttributeEvt(evt, 'class', '')"/>
+    <rect id="b" class="b" x="150" y="275" width="100" height="50"/>
+    <g/>
+    <text x="25" y="300" pointer-events="none" 
+      style="fill: black; stroke: none">Click Me</text>
+  </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/suspendRedraw.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/suspendRedraw.svg
new file mode 100644
index 0000000..3be0ad2
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/suspendRedraw.svg
@@ -0,0 +1,199 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a rect's x,y,width and height attributes in an         -->
+<!-- 'onclick' event handler. This is actually mostly testing a change in   -->
+<!-- the documents size.                                                    -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: rectResizeOnClick.svg 201399 2004-11-30 03:23:58Z deweese $  -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+   <title>&lt;rect&gt; fill modification with redraw suspended.</title>
+
+   <script type="text/ecmascript">
+    var root = document.rootElement;
+
+    function setRect(target, color){
+        var t = document.getElementById(target);
+        t.setAttributeNS(null, "fill", color);
+    }
+
+    var suspendId;
+    function testSuspend(target, time) {
+       suspendId = root.suspendRedraw(time);
+       setRect(target, "crimson");
+    }
+
+    function testUnsuspendRedrawId(target, time) {
+       suspendId = root.suspendRedraw(time);
+       setRect(target, "crimson");
+       setTimeout("doUnsuspend(" + suspendId + ")",(time/2));
+    }
+
+    function testUnsuspendRedrawAll(target, time) {
+       suspendId = root.suspendRedraw(time);
+       setRect(target, "crimson");
+       setTimeout("doUnsuspendAll()",(time/2));
+    }
+
+    function testMulti(target, t1, t2) {
+       root.suspendRedraw(t1);
+       setRect(target, "crimson");
+       root.suspendRedraw(t2);
+    }
+
+    function testMultiIdFirst(target, t1, t2) {
+       suspendId = root.suspendRedraw(t1);
+       setRect(target, "crimson");
+       root.suspendRedraw(t2);
+
+       setTimeout("doUnsuspend(" + suspendId + ")",(t1/2));
+    }
+
+    function testMultiIdSecond(target, t1, t2) {
+       root.suspendRedraw(t1);
+       setRect(target, "crimson");
+       suspendId = root.suspendRedraw(t2);
+       setTimeout("doUnsuspend(" + suspendId + ")",(t2/2));
+    }
+
+    function testMultiIdBoth(target, t1, t2) {
+       suspendId = root.suspendRedraw(t1);
+       setTimeout("doUnsuspend(" + suspendId + ")",(t1/2));
+
+       setRect(target, "crimson");
+
+       suspendId = root.suspendRedraw(t2);
+       setTimeout("doUnsuspend(" + suspendId + ")",(t2/2));
+    }
+
+    function testMultiAll(target, t1, t2) {
+       suspendId = root.suspendRedraw(t1);
+       setRect(target, "crimson");
+       suspendId = root.suspendRedraw(t2);
+       setTimeout("doUnsuspendAll()",(t2/2));
+    }
+
+    function doUnsuspend(id) {
+       root.unsuspendRedraw(0+id);
+    }
+
+    function doUnsuspendAll() {
+       root.unsuspendRedrawAll();
+    }
+
+
+   </script>
+
+   <text x="50%" y="40" class="title"
+    >&lt;rect&gt; fill modification with redraw suspended.</text>
+
+
+   <g id="test-content" font-size="10">
+      <rect id="rect.t1" fill="gold" x="10" y="50" width="80" height="40" 
+            onclick="testSuspend('rect.t1', 2000)"/>
+
+      <rect id="rect.t2" fill="gold" x="235" y="50" width="80" height="40" 
+            onclick="testUnsuspendRedrawId('rect.t2', 4000)"/>
+
+      <rect id="rect.t3" fill="gold" x="235" y="100" width="80" height="40" 
+            onclick="testUnsuspendRedrawAll('rect.t3', 4000)"/>
+
+      <text x="100" y="70">suspendRedraw(2000)</text>
+
+      <text x="320" y="70">unsuspendRedraw(id) @2s</text>
+
+      <text x="320" y="120">unsuspendRedrawAll() @2s</text>
+
+
+
+      <rect id="rect.t4" fill="gold" x="10" y="170" width="80" height="40" 
+            onclick="testMulti('rect.t4', 1000, 2000)"/>
+
+      <rect id="rect.t5" fill="gold" x="10" y="220" width="80" height="40" 
+            onclick="testMultiAll('rect.t5', 3000, 4000)"/>
+
+      <rect id="rect.t61" fill="gold" x="235" y="170" width="80" height="40" 
+            onclick="testMultiIdBoth('rect.t61', 2000, 4000)"/>
+
+      <rect id="rect.t62" fill="gold" x="235" y="220" width="80" height="40" 
+            onclick="testMultiIdBoth('rect.t62', 4000, 2000)"/>
+
+      <text  x="100" y="187">suspendRedraw 1000, 2000</text>
+
+      <text x="100" y="237">suspendRedraw 3000, 4000
+      <tspan x="100" y="249">unsuspendAll @2s</tspan></text>
+
+      <text  x="320" y="183">suspendRedraw 2000, 4000
+      <tspan x="320" y="193">unsuspend 1st @1s</tspan>
+      <tspan x="320" y="203">unsuspend 2nd @2s</tspan></text>
+
+      <text  x="320" y="233">suspendRedraw 4000, 2000
+      <tspan x="320" y="243">unsuspend 1st @2s</tspan>
+      <tspan x="320" y="253">unsuspend 2nd @1s</tspan></text>
+
+      <rect id="rect.t7" fill="gold" x="10" y="290" width="80" height="40" 
+            onclick="testMultiIdFirst('rect.t7', 1000, 2000)"/>
+
+      <rect id="rect.t8" fill="gold" x="10" y="340" width="80" height="40" 
+            onclick="testMultiIdFirst('rect.t8', 3000, 2000)"/>
+
+      <rect id="rect.t9" fill="gold" x="10" y="390" width="80" height="40" 
+            onclick="testMultiIdFirst('rect.t9', 4000, 1000)"/>
+
+      <text x="100" y="307">suspendRedraw 1000, 2000
+      <tspan x="100" y="319">unsuspend 1st @ .5s</tspan></text>
+
+      <text x="100" y="357">suspendRedraw 3000, 2000
+      <tspan x="100" y="369">unsuspend 1st @ 1.5s</tspan></text>
+
+      <text x="100" y="407">suspendRedraw 4000, 1000
+      <tspan x="100" y="419">unsuspend 1st @ 2s</tspan></text>
+
+      <rect id="rect.t10" fill="gold" x="235" y="290" width="80" height="40" 
+            onclick="testMultiIdSecond('rect.t10', 2000, 1000)"/>
+
+      <rect id="rect.t11" fill="gold" x="235" y="340" width="80" height="40" 
+            onclick="testMultiIdSecond('rect.t11', 2000, 3000)"/>
+
+      <rect id="rect.t12" fill="gold" x="235" y="390" width="80" height="40" 
+            onclick="testMultiIdSecond('rect.t12', 1000, 4000)"/>
+
+      <text x="320" y="307">suspendRedraw 2000, 1000
+      <tspan x="320" y="319">unsuspend 2nd @ .5s</tspan></text>
+
+      <text x="320" y="357">suspendRedraw 2000, 3000
+      <tspan x="320" y="369">unsuspend 2nd @ 1.5s</tspan></text>
+
+      <text x="320" y="407">suspendRedraw 1000, 4000
+      <tspan x="320" y="419">unsuspend 2nd @ 2s</tspan></text>
+
+      <text class="legend">
+         <tspan x="225" y="460">Click on the Rectangles one at a time.</tspan>
+         <tspan x="225" y="470">The rectangles should change color ~2sec after you click</tspan>
+      </text>
+-->
+   </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/svg.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/svg.svg
new file mode 100644
index 0000000..c507ce5
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/svg.svg
@@ -0,0 +1,78 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- append child test                                                      -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: svg.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>svg viewport modification 'onclick'</title>
+
+    <text x="50%" y="45" class="title">svg viewport modification 'onclick'</text>
+
+    <script type="text/ecmascript">
+
+    function changeSize(evt) {
+        var e = evt.currentTarget;
+        e.setAttribute("x", "10%");
+        e.setAttribute("y", "10%");
+        e.setAttribute("width", "80%");
+        e.setAttribute("height", "80%");
+    }
+
+    </script>
+
+    <g id="test-content">
+
+        <svg onclick="changeSize(evt)" 
+             x="25%" y="25%" width="50%" height="50%" >
+                <rect width="100%" height="100%" fill="crimson" />
+        </svg>
+
+    </g>
+
+
+
+    <script type="text/ecmascript"><![CDATA[
+function onDone() {
+    if (!(regardTestInstance == null)) {
+        regardTestInstance.scriptDone();   
+    } else {
+        alert("This button only works when run in the regard framework");
+    }
+}
+    ]]></script>
+    <g id="done" transform="translate(195, 468)" cursor="pointer" onclick="onDone()">
+        <rect rx="5" ry="5" width="60" height="25" fill="#eeeeee" stroke="black" />
+        <text x="30" y="18" font-size="14" font-weight="bold" text-anchor="middle">Done</text>
+    </g>
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/svg2.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/svg2.svg
new file mode 100644
index 0000000..8d98b1a
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/svg2.svg
@@ -0,0 +1,70 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- append child test                                                      -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: svg2.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     onclick="changeSize(evt)" id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>svg viewport modification 'onclick'</title>
+
+    <text x="50%" y="45" class="title">svg viewport modification 'onclick'</text>
+
+    <script type="text/ecmascript">
+
+    function changeSize(evt) {
+        var e = evt.currentTarget;
+        e.setAttribute("viewBox", "0 0 225 250");
+    }
+
+    </script>
+
+    <g id="test-content">
+                <rect x="25%" y="25%" width="50%" height="50%" fill="crimson" />
+    </g>
+
+
+
+    <script type="text/ecmascript"><![CDATA[
+function onDone() {
+    if (!(regardTestInstance == null)) {
+        regardTestInstance.scriptDone();   
+    } else {
+        alert("This button only works when run in the regard framework");
+    }
+}
+    ]]></script>
+    <g id="done" transform="translate(195, 80)" cursor="pointer" onclick="onDone()">
+        <rect rx="5" ry="5" width="60" height="25" fill="#eeeeee" stroke="black" />
+        <text x="30" y="18" font-size="14" font-weight="bold" text-anchor="middle">Done</text>
+    </g>
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/svgFontMove.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/svgFontMove.svg
new file mode 100644
index 0000000..188367a
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/svgFontMove.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a circle attributes                                    -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: svgFontMove.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg";
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+
+   <title>Testing script updates of SVG Font text.</title>
+   <text x="50%" y="45" class="title"
+    >Testing script updates of SVG Font text.</text>
+
+   <font-face font-family="stroke">
+      <font-face-src>
+         <font-face-uri xlink:href="../../../strokeFont.svg#strokeB"/>
+      </font-face-src>     
+   </font-face>
+
+   <script type="text/ecmascript"><![CDATA[
+        var inRegard=false;
+        function moveText() {
+          var t = document.getElementById("txt");
+          t.setAttribute("x", "225");
+          if (inRegard) 
+               setTimeout('regardTestInstance.scriptDone()', 100);
+        }
+       function regardStart() {
+          inRegard = true;
+          moveText();
+       }
+    ]]></script>
+
+   <g id="test-content">
+      <text id="txt" font-family="stroke" font-size="25" text-anchor="middle" 
+            x="200" y="250" onclick="moveText()">SVG Font Text</text>
+   </g>
+
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/text.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/text.svg
new file mode 100644
index 0000000..7dcda22
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/text.svg
@@ -0,0 +1,103 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a  attributes                                          -->
+<!--                                                                        -->
+<!-- @author nicolas socheleau bitflash com                                 -->
+<!-- @version $Id: text.svg 475477 2006-11-15 22:44:28Z cam $                                                
          -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;text&gt; attributes 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;text&gt; attributes in 'onload'</text>
+
+    <script type="text/ecmascript">
+
+    function initXY(evt, x, y) {
+        var elt = evt.target;
+        elt.setAttribute("x", x)
+        elt.setAttribute("y", y)
+    }
+    function initDXDY(evt, dx, dy) {
+        var elt = evt.target;
+        elt.setAttribute("dx", dx)
+        elt.setAttribute("dy", dy)
+    }
+    function initRotate(evt, rotate) {
+        var elt = evt.target;
+        elt.setAttribute("rotate", rotate)
+    }
+
+    </script>
+
+    <g id="test-content">
+         <g id="dynamic" style="fill:orange;stroke:none;font-size:32;text-anchor:middle" >
+
+                <text onload="initXY(evt,100,180)" 
+                    >EXAMPLE1</text>
+                <text onload="initDXDY(evt,200,300)" 
+                    >EXAMPLE2</text>
+                <text x="100" y="430" onload="initRotate(evt,-10)" 
+                    >EXAMPLE3</text>
+                <text onload="initXY(evt,'250 280 300 330 350 380 400 430','180 170 180 190 170 180 190 
180')" 
+                    >EXAMPLE4</text>
+                <text onload="initDXDY(evt,'650 -20 20 -20 20 -20 20 -20','300 30 -30 30 -30 30 -30 30')" 
+                    >EXAMPLE5</text>
+                <text x="350" y="430" onload="initRotate(evt,'-10 10 -10 10 -10 10 -10 10')" 
+                    >EXAMPLE6</text>
+
+         </g>
+
+         <g id="expected" style="fill:none;stroke:black;stroke-width:1;font-size:32;text-anchor:middle">
+
+                <text x="100" y="180" 
+                    >EXAMPLE1</text>
+                <text dx="200" dy="300" 
+                    >EXAMPLE2</text>
+                <text x="100" y="430" rotate="-10" 
+                    >EXAMPLE3</text>
+                <text x="250 280 300 330 350 380 400 430" y="180 170 180 190 170 180 190 180" 
+                    >EXAMPLE4</text>
+                <text dx="650 -20 20 -20 20 -20 20 -20" dy="300 30 -30 30 -30 30 -30 30" 
+                    >EXAMPLE5</text>
+                <text x="350" y="430" rotate="-10 10 -10 10 -10 10 -10 10"
+                    >EXAMPLE6</text>
+                
+         </g>
+    </g>
+
+    <g id="legend" >
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="100" y="230" >x, y</text>
+                <text x="100" y="350" >dx, dy</text>
+                <text x="100" y="470" >rotate</text>
+
+                <text x="350" y="230" >x, y ( list )</text>
+                <text x="350" y="350" >dx, dy ( list )</text>
+                <text x="350" y="470" >rotate ( list )</text>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/textAllProperties.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/textAllProperties.svg
new file mode 100644
index 0000000..69a7295
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/textAllProperties.svg
@@ -0,0 +1,299 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a circle attributes                                    -->
+<!--                                                                        -->
+<!-- @author nicolas socheleau bitflash com                                 -->
+<!-- @version                                                               -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" overflow="visible" viewBox="0 0 450 500" 
xmlns:xlink="http://www.w3.org/1999/xlink";
+       onload="setup(evt)" >
+    <title>&lt;tspan&gt; attributes 'onload'</title>
+
+    <text id="titleGroup" x="50%" y="45" class="title">&lt;group&gt; attributes in 'onload'</text>
+    <text id="titleText" x="50%" y="70" class="title">&lt;text&gt; attributes in 'onload'</text>
+    <text id="titleTspan" x="50%" y="95" class="title">&lt;tspan&gt; attributes in 'onload'</text>
+    <text id="titleTRef" x="50%" y="120" class="title">&lt;tref&gt; attributes in 'onload'</text>
+    <text id="titleTextPath" x="50%" y="145" class="title">&lt;textPath&gt; attributes in 'onload'</text>
+
+    <defs>
+        <text id="textContent">fox</text>
+        <path id="path" d="M 0 0 C 10 -10 60 -10 70 0" />
+        <path id="arrow" style="fill:black;stroke:black" d=" M -5 0 L 5 -5 L 5 5 z" />
+    </defs>
+
+    <script type="text/ecmascript"><![CDATA[
+
+    var arrayStyleGroup;
+    var currentStyleGroup = 1;
+    var nbStyleGroup;
+
+    var arrayStyleText;
+    var currentStyleText = 1;
+    var nbStyleText;
+
+    var arrayStyleTspan;
+    var currentStyleTspan = 0;
+    var nbStyleTspan;
+
+
+    var currentStyleTRef = 6;
+    var currentStyleTextPath = 2;
+
+    var group;
+    var text;
+    var tspan;
+    var tref;
+    var textpath;
+    var doc;
+
+    function setup(evt){
+
+      doc = evt.target.getOwnerDocument();
+
+      arrayStyleGroup = new Array();
+        arrayStyleGroup[0] = 'fill:orange;stroke:blue';
+        arrayStyleGroup[1] = 'fill:orange';
+        arrayStyleGroup[2] = 'stroke:blue';
+        arrayStyleGroup[3] = '';
+        nbStyleGroup = 4;
+
+      arrayStyleText = new Array();
+        arrayStyleText[0] = 'text-decoration:underline;fill:crimson';
+        arrayStyleText[1] = 'text-decoration:underline;stroke:black';
+        arrayStyleText[2] = 'fill:green;stroke:red';
+        arrayStyleText[3] = 'stroke:red';
+        arrayStyleText[4] = 'fill:green;fill-opacity:0.6';
+        arrayStyleText[5] = 'stroke-opacity:0.6';
+        arrayStyleText[6] = 'stroke-width:3';
+        arrayStyleText[7] = 'fill:green;text-decoration:underline';
+        arrayStyleText[8] = 'fill:green;text-decoration:overline';
+        arrayStyleText[9] = 'fill:green;text-decoration:line-through';
+        nbStyleText = 10;
+
+      arrayStyleTspan = new Array();
+        arrayStyleTspan[0] = 'fill:red;letter-spacing:10';
+        arrayStyleTspan[1] = 'stroke:gold';
+        arrayStyleTspan[2] = 'stroke:gold;fill-opacity:0.6';
+        arrayStyleTspan[3] = 'stroke-opacity:0.6';
+        arrayStyleTspan[4] = 'stroke-width:3';
+        arrayStyleTspan[5] = 'fill:red;text-decoration:underline';
+        arrayStyleTspan[6] = 'fill:red;text-decoration:overline';
+        arrayStyleTspan[7] = 'fill:red;text-decoration:line-through';
+        arrayStyleTspan[8] = 'fill:red;font-family:Times New Roman';
+        nbStyleTspan = 9;
+
+      group = doc.getElementById('group');
+      text = doc.getElementById('text');
+      tspan = doc.getElementById('tspan');
+      tref = doc.getElementById('tref');
+      textpath = doc.getElementById('textpath');
+
+      applyTextPathStyle();
+      applyTRefStyle();
+      applyTspanStyle();
+      applyTextStyle();
+      applyGroupStyle();
+
+    }
+
+    function nextTextPath()
+    {
+        currentStyleTextPath++;
+        if ( currentStyleTextPath >= nbStyleTspan ){
+          currentStyleTextPath=0;
+        }
+        applyTextPathStyle();
+    }
+    function previousTextPath()
+    {
+        currentStyleTextPath--;
+        if ( currentStyleTextPath < 0 ){
+          currentStyleTextPath = nbStyleTspan-1;
+        }
+        applyTextPathStyle();
+    }
+
+    function applyTextPathStyle()
+    {
+        textpath.setAttribute('style',arrayStyleTspan[currentStyleTextPath]);
+
+        var title = doc.getElementById('titleTextPath');
+        var textnode = title.getFirstChild();
+        textnode.setData('textPath : '+arrayStyleTspan[currentStyleTextPath]);
+    }
+
+    function nextTRef()
+    {
+        currentStyleTRef++;
+        if ( currentStyleTRef >= nbStyleTspan ){
+          currentStyleTRef=0;
+        }
+        applyTRefStyle();
+    }
+    function previousTRef()
+    {
+        currentStyleTRef--;
+        if ( currentStyleTRef < 0 ){
+          currentStyleTRef = nbStyleTspan-1;
+        }
+        applyTRefStyle();
+    }
+
+    function applyTRefStyle()
+    {
+        tref.setAttribute('style',arrayStyleTspan[currentStyleTRef]);
+
+        var title = doc.getElementById('titleTRef');
+        var textnode = title.getFirstChild();
+        textnode.setData('tref : '+arrayStyleTspan[currentStyleTRef]);
+    }
+
+    function nextTspan()
+    {
+        currentStyleTspan++;
+        if ( currentStyleTspan >= nbStyleTspan ){
+          currentStyleTspan=0;
+        }
+        applyTspanStyle();
+    }
+    function previousTspan()
+    {
+        currentStyleTspan--;
+        if ( currentStyleTspan < 0 ){
+          currentStyleTspan = nbStyleTspan-1;
+        }
+        applyTspanStyle();
+    }
+
+    function applyTspanStyle()
+    {
+        tspan.setAttribute('style',arrayStyleTspan[currentStyleTspan]);
+
+        var title = doc.getElementById('titleTspan');
+        var textnode = title.getFirstChild();
+        textnode.setData('tspan : '+arrayStyleTspan[currentStyleTspan]);
+    }
+
+
+    function nextText()
+    {
+        currentStyleText++;
+        if ( currentStyleText >= nbStyleText ){
+          currentStyleText=0;
+        }
+        applyTextStyle();
+    }
+    function previousText()
+    {
+        currentStyleText--;
+        if ( currentStyleText < 0 ){
+          currentStyleText = nbStyleText-1;
+        }
+        applyTextStyle();
+    }
+
+    function applyTextStyle()
+    {
+        text.setAttribute('style',arrayStyleText[currentStyleText]);
+
+        var title = doc.getElementById('titleText');
+        var textnode = title.getFirstChild();
+        textnode.setData('text : '+arrayStyleText[currentStyleText]);
+    }
+
+    function nextGroup()
+    {
+        currentStyleGroup++;
+        if ( currentStyleGroup >= nbStyleGroup ){
+          currentStyleGroup=0;
+        }
+        applyGroupStyle();
+    }
+    function previousGroup()
+    {
+        currentStyleGroup--;
+        if ( currentStyleGroup < 0 ){
+          currentStyleGroup=nbStyleGroup-1;
+        }
+        applyGroupStyle();
+    }
+
+    function applyGroupStyle()
+    {
+        group.setAttribute('style',arrayStyleGroup[currentStyleGroup]);
+
+        var title = doc.getElementById('titleGroup');
+        var textnode = title.getFirstChild();
+        textnode.setData('group : '+arrayStyleGroup[currentStyleGroup]);
+    }
+
+]]>    </script>
+
+    <g id="test-content" style="font-size:30" >
+        <!-- testing only
+         <use transform="translate(155,220)" xlink:href="#path" style="stroke:blue;fill:none" />
+        -->
+         <g transform="translate(155,220)" id="group" >
+                <text dx="-55" id="text" >the
+                  <textPath id="textpath" xlink:href="#path">quick</textPath>
+                  <tspan><tspan id="tspan">brown</tspan></tspan>
+                  <tref id="tref" xlink:href="#textContent" style="fill:gold"/>
+                </text>
+
+         </g>
+    </g>
+
+    <g id="legend" >
+        <g style="fill:white; stroke:black;text-anchor:middle">
+            <g transform="translate(370,300)" >
+              <use xlink:href="#arrow" transform="translate(-40,-5)" onclick="previousTRef()" />
+              <use xlink:href="#arrow" transform="translate(40,-5) rotate(180)" onclick="nextTRef()" />
+                <text style="fill:black;stroke:none" x="0" y="0" >&lt;tref&gt; tests</text>
+            </g>
+            <g transform="translate(250,300)" >
+              <use xlink:href="#arrow" transform="translate(-45,-5)" onclick="previousTspan()" />
+              <use xlink:href="#arrow" transform="translate(45,-5) rotate(180)" onclick="nextTspan()" />
+                <text style="fill:black;stroke:none" x="0" y="0" >&lt;tspan&gt; tests</text>
+            </g>
+            <g transform="translate(120,300)" >
+              <use xlink:href="#arrow" transform="translate(-55,-5)" onclick="previousTextPath()" />
+              <use xlink:href="#arrow" transform="translate(55,-5) rotate(180)" onclick="nextTextPath()" />
+                <text style="fill:black;stroke:none" x="0" y="0" >&lt;textPath&gt; tests</text>
+            </g>
+            <g transform="translate(225,325)" >
+              <use xlink:href="#arrow" transform="translate(-45,-5)" onclick="previousText()" />
+              <use xlink:href="#arrow" transform="translate(45,-5) rotate(180)" onclick="nextText()" />
+                <text style="fill:black;stroke:none" x="0" y="0" >&lt;text&gt; tests</text>
+            </g>
+            <g transform="translate(225,350)" >
+              <use xlink:href="#arrow" transform="translate(-55,-5)" onclick="previousGroup()" />
+              <use xlink:href="#arrow" transform="translate(55,-5) rotate(180)" onclick="nextGroup()" />
+                <text style="fill:black;stroke:none" x="0" y="0" >&lt;group&gt; tests</text>
+            </g>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/textProperties.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/textProperties.svg
new file mode 100644
index 0000000..5efee03
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/textProperties.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a rect's attributes                                    -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: textProperties.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>text CSS properties on 'onload'</title>
+
+    <text x="50%" y="45" class="title">text CSS properties on 'onload'</text>
+
+    <script type="text/ecmascript"><![CDATA[
+        function changeStyle(evt, newValue) {
+                evt.target.setAttribute("style", newValue);
+        }
+    ]]></script>
+
+    <g id="test-content" style="font-size:18">
+
+     <text x="100" y="100" onload="changeStyle(evt, 'font-family:Impact')">font-family:Arial</text>
+     <text x="100" y="140" onload="changeStyle(evt, 'font-size:32')">font-size:32</text>
+     <text x="100" y="180" onload="changeStyle(evt, 'fill:crimson')">fill:crimson</text>
+     <text x="100" y="220" onload="changeStyle(evt, 'stroke:orange;font-size:18')">stroke:orange; 
font-size:18</text>
+
+     <text x="50%" y="260" onload="changeStyle(evt, 'text-anchor:start')">text-anchor:start</text>
+     <text x="50%" y="300" onload="changeStyle(evt, 'text-anchor:middle')">text-anchor:middle</text>
+     <text x="50%" y="340" onload="changeStyle(evt, 'text-anchor:end')">text-anchor:end</text>
+     <text x="100" y="380" onload="changeStyle(evt, 'font-weight:bold')">font-weight:bold</text>
+     <text x="100" y="420" onload="changeStyle(evt, 'font-style:italic')">font-style:italic</text>
+     <text x="100" y="460" onload="changeStyle(evt, 'letter-spacing:10')">letter-spacing:10</text>
+
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/textProperties2.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/textProperties2.svg
new file mode 100644
index 0000000..37371d8
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/textProperties2.svg
@@ -0,0 +1,201 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author bill haneman ireland sun com                                      -->
+<!-- @version $Id: textProperties2.svg 475477 2006-11-15 22:44:28Z cam $                                     
                        -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg width="450" height="500" viewBox="0 0 450 500"
+  xmlns="http://www.w3.org/2000/svg"; 
+  xmlns:xlink="http://www.w3.org/1999/xlink"; >
+
+     <style type="text/css"><![CDATA[
+       .Caption { font-size: 8; font-family: dialog; font-weight: normal;
+                  font-style: normal; stroke: none; stroke-width: 0; 
+                  fill: black } 
+       text > tspan { fill: blue; }
+       text > tspan > tspan { fill: purple; }]]>
+     </style>
+
+    <script type="text/ecmascript"><![CDATA[
+       var inRegard=false;
+       var root;
+       function regardStart() {
+          inRegard = true;
+          doChange();
+       }
+       function doSet(idx, attr, tv, tsv, ttsv) {
+         var t   = root.getElementById("t"+idx);
+         var ts  = root.getElementById("ts"+idx);
+         var tts = root.getElementById("tts"+idx);
+         if (tv)   t.setAttribute(attr, tv);
+         if (tsv)  ts.setAttribute(attr, tsv);
+         if (ttsv) tts.setAttribute(attr, ttsv);
+       }
+
+       function doChange() {
+         root = document.getRootElement();
+         doSet(1, "visibility", "hidden", "hidden", undefined);
+         doSet(2, "visibility", undefined, undefined, "hidden");
+         doSet(3, "visibility", undefined, undefined, "visible");
+         doSet(4, "visibility", "visible", undefined, "visible");
+         doSet(5, "visibility", undefined, undefined, "hidden");
+         doSet(6, "visibility", "hidden",  undefined, undefined);
+
+         doSet(7, "display", undefined,  "none", undefined);
+         doSet(8, "display", undefined,  undefined, "inline");
+         doSet(9, "display", undefined,  "inline", undefined);
+         doSet(10, "display", "none",  "inline", "inline");
+         doSet(11, "display", "inline",  undefined, undefined);
+
+         if (inRegard) 
+           regardTestInstance.scriptDone();
+       }
+    ]]></script>
+
+   <rect fill="gold" stroke="crimson" x="15" y="15" width="70" height="25"
+         onclick="doChange()"/>
+   <text fill="crimson" x="50" y="32" font-weight="bold" text-anchor="middle"
+    pointer-events="none">Change!</text>
+
+<title>Text Properties</title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+        <text class="title" x="50%" y="40" font-size="15" >
+            Text display and visibility.</text>
+
+        <text x="50%" y="74" text-anchor="middle"
+         >Visibility on text &amp; tspans</text>
+        <text x="50%" y="250" text-anchor="middle"
+         >Display on text &amp; tspans</text>
+
+         <g stroke="black" stroke-width="1">
+         <rect x="12.5" y="82" width="425" height="25" fill="#EEE"/>
+         <rect x="12.5" y="107" width="425" height="25" fill="#CCC"/>
+         <rect x="12.5" y="132" width="425" height="25" fill="#EEE"/>
+         <rect x="12.5" y="157" width="425" height="25" fill="#CCC"/>
+         <rect x="12.5" y="182" width="425" height="25" fill="#EEE"/>
+         <rect x="12.5" y="207" width="425" height="25" fill="#CCC"/>
+         <line x1="325" x2="325" y1="82" y2="232"/>
+         <line x1="381" x2="381" y1="82" y2="232"/>
+
+         <rect x="12.5" y="257" width="425" height="25" fill="#EEE"/>
+         <rect x="12.5" y="282" width="425" height="25" fill="#CCC"/>
+         <rect x="12.5" y="307" width="425" height="25" fill="#EEE"/>
+         <rect x="12.5" y="332" width="425" height="25" fill="#CCC"/>
+         <rect x="12.5" y="357" width="425" height="25" fill="#EEE"/>
+         <line x1="325" x2="325" y1="257" y2="382"/>
+         <line x1="381" x2="381" y1="257" y2="382"/>
+         </g>
+
+         <text class="Caption" x="335" y="97" >---, ---, ---</text>
+         <text class="Caption" x="335" y="122">---, hid, vis</text>
+         <text class="Caption" x="335" y="147">---, hid, hid</text>
+         <text class="Caption" x="335" y="172">hid, vis, hid</text>
+         <text class="Caption" x="335" y="197">---, ---, ---</text>
+         <text class="Caption" x="335" y="222">---, ---, ---</text>
+
+         <text class="Caption" x="391" y="97" >hid, hid, ---</text>
+         <text class="Caption" x="391" y="122">---, ---, hid</text>
+         <text class="Caption" x="391" y="147">---, ---, vis</text>
+         <text class="Caption" x="391" y="172">vis, ---, vis</text>
+         <text class="Caption" x="391" y="197">---, ---, hid</text>
+         <text class="Caption" x="391" y="222">hid, ---, ---</text>
+
+         <text class="Caption" x="335" y="273">---, ---, ---</text>
+         <text class="Caption" x="335" y="298">---, inl, non</text>
+         <text class="Caption" x="335" y="323">---, non, inl</text>
+         <text class="Caption" x="335" y="348">---, non, non</text>
+         <text class="Caption" x="335" y="373">non, inl, non</text>
+
+         <text class="Caption" x="391" y="273">---, non, ---</text>
+         <text class="Caption" x="391" y="298">---, ---, inl</text>
+         <text class="Caption" x="391" y="323">---, inl, ---</text>
+         <text class="Caption" x="391" y="348">non, inl, inl</text>
+         <text class="Caption" x="391" y="373">inl, ---, ---</text>
+
+       <g transform="scale(1.25), translate(0, 10)">
+        <text id="t1" x="20" y="70">Text <tspan id="ts1"
+          >tspan 1 <tspan id="tts1"> tspan 2</tspan
+          > more span 1</tspan> finish text</text>
+
+        <text id="t2" x="20" y="90" >Text <tspan id="ts2" visibility="hidden"
+         >tspan 1 <tspan id="tts2" visibility="visible"> tspan 2</tspan
+         > more span 1</tspan> finish text</text>
+
+        <text id="t3" x="20" y="110">Text <tspan id="ts3" visibility="hidden"
+         >tspan 1 <tspan id="tts3" visibility="hidden"
+         > tspan 2</tspan> more span 1</tspan> finish text</text>
+
+        <text id="t4" x="20" y="130" visibility="hidden"
+         >Text <tspan id="ts4" visibility="visible"
+         >tspan 1 <tspan id="tts4" visibility="hidden"> tspan 2</tspan
+         > more span 1</tspan> finish text</text>
+
+        <text id="t5" x="20" y="150"
+         >Text <tspan id="ts5"
+         >tspan 1 <tspan id="tts5" > tspan 2</tspan
+         > more span 1</tspan> finish text</text>
+
+        <text id="t6" x="20" y="170" 
+         >Text <tspan id="ts6" 
+         >tspan 1 <tspan id="tts6" > tspan 2</tspan
+         > more span 1</tspan> finish text</text>
+
+
+        <text id="t7" x="20" y="210">Text <tspan id="ts7" 
+         >tspan 1 <tspan id="tts7" 
+         >tspan 2 </tspan>more span 1</tspan
+         > finish text</text>
+        <text id="t8" x="20" y="230">Text <tspan id="ts8" display="inline"
+         >tspan 1 <tspan id="tts8" display="none"
+         > tspan 2</tspan> more span 1</tspan
+         > finish text</text>
+        <text id="t9" x="20" y="250">Text <tspan id="ts9" display="none"
+         >tspan 1 <tspan id="tts9" display="inline"
+         > tspan 2</tspan> more span 1</tspan
+         > finish text</text>
+        <text id="t10" x="20" y="270">Text <tspan id="ts10" display="none"
+         >tspan 1 <tspan id="tts10" display="none"
+         > tspan 2</tspan> more span 1</tspan
+         > finish text</text>
+        <text id="t11" x="20" y="290" display="none"
+         >Text <tspan id="ts11" display="inline"
+         >tspan 1 <tspan id="tts11" display="none"
+         > tspan 2</tspan> more span 1</tspan
+         > finish text</text>
+    </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/textSelection.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/textSelection.svg
new file mode 100644
index 0000000..39e6551
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/textSelection.svg
@@ -0,0 +1,85 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author vincent hardy sun com                                             -->
+<!-- @version $Id: textSelection.svg 475477 2006-11-15 22:44:28Z cam $                                       
                      -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+
+    <defs>
+        <filter id="dropShadow"  filterUnits="userSpaceOnUse" >
+            <feGaussianBlur stdDeviation="2" in="SourceAlpha" /> 
+            <feOffset dx="2" dy="2" />
+            <feMerge>
+                <feMergeNode />
+                <feMergeNode in="SourceGraphic" />
+            </feMerge>
+        </filter>
+    </defs>
+
+    <g id="testContent">
+        <text x="50%" y="50%" font-size="40" text-anchor="middle" fill="white" filter="url(#dropShadow)" 
transform="translate(0, -40)">
+            Multi-line
+            <tspan x="50%" y="60%">Text Selection with</tspan>
+            <tspan x="50%" y="70%"><tspan font-size="25" dy="-25">ups</tspan><tspan dy="25"> and 
</tspan><tspan font-size="25" dy="25">downs</tspan></tspan>
+        </text>
+    </g>
+
+    <script type="text/ecmascript"><![CDATA[
+
+function onZoom() {
+    var content = document.getElementById("testContent");
+    content.setAttributeNS(null, "transform", "translate(225, 250) rotate(-30) scale(1.5, 1.5) 
translate(-225, -250)");
+}
+
+function onDone() {
+    if (!(regardTestInstance == null)) {
+        regardTestInstance.scriptDone();   
+    } else {
+        alert("This button only works when run in the regard framework");
+    }
+}
+    ]]></script>
+
+    <g id="zoom" transform="translate(155, 398)" cursor="pointer" onclick="onZoom()">
+        <rect rx="5" ry="5" width="60" height="25" fill="#eeeeee" stroke="black" />
+        <text x="30" y="18" font-size="14" font-weight="bold" text-anchor="middle">Zoom</text>
+    </g>
+
+    <g id="done" transform="translate(235, 398)" cursor="pointer" onmouseover="onDone()">
+        <rect rx="5" ry="5" width="60" height="25" fill="#eeeeee" stroke="black" />
+        <text x="30" y="18" font-size="14" font-weight="bold" text-anchor="middle">Done</text>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/text_children1.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/text_children1.svg
new file mode 100644
index 0000000..f3513f4
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/text_children1.svg
@@ -0,0 +1,152 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of text children                                          -->
+<!--                                                                        -->
+<!-- @author nicolas socheleau bitflash com                                 -->
+<!-- @version $Id: text_children1.svg 475477 2006-11-15 22:44:28Z cam $                                      
                    -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;text&gt; children 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;text&gt; children in 'onload'</text>
+
+    <script type="text/ecmascript"><![CDATA[
+    function addText(evt){
+        insertText(evt,'the quick ','tspan1');
+        appendText(evt,'fox');
+    }
+
+    function addCDATAText(evt){
+        insertCDATAText(evt,'the quick ','tspan2');
+        appendCDATAText(evt,'fox');
+    }
+
+    function insertText(evt,text,nextsiblingID) {
+
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var next = doc.getElementById(nextsiblingID);
+
+        var textnode = doc.createTextNode(text);
+
+        elt.insertBefore(textnode,next);
+    }
+
+    function insertCDATAText(evt,text,nextsiblingID) {
+
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var next = doc.getElementById(nextsiblingID);
+
+        var textnode = doc.createCDATASection(text);
+
+        elt.insertBefore(textnode,next);
+    }
+
+    function appendText(evt, text){
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var textnode = doc.createTextNode(text);
+
+        elt.appendChild(textnode);
+    }
+
+    function appendCDATAText(evt, text){
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var textnode = doc.createCDATASection(text);
+
+        elt.appendChild(textnode);
+    }
+
+    function removeText(evt) {
+        var elt = evt.target;
+
+        while ( elt.hasChildNodes() ){
+
+           var child = elt.getFirstChild();
+
+           elt.removeChild( child )
+        }
+    }
+    
+    ]]>
+    </script>
+
+    <g id="test-content">
+        <g style="font-size:40" >
+
+          <text x="70" y="135" style="fill:orange" 
+                onload="addText(evt)" >
+            <tspan id="tspan1" onload="appendText(evt,'brown')" style="fill:brown"></tspan>
+          </text>
+
+          <text x="70" y="175" style="fill:orange" 
+                onload="addCDATAText(evt)" >
+            <tspan id="tspan2" onload="appendCDATAText(evt,'brown')" style="fill:brown"></tspan>
+          </text>
+
+          <text x="70" y="335" style="fill:gold" 
+                onload="removeText(evt)" >
+            the quick brown fox
+          </text>
+          <text x="70" y="375" style="fill:gold" 
+                onload="removeText(evt)" ><![CDATA[
+            the quick brown fox
+          ]]></text>
+
+        </g>
+
+        <g style="stroke:black;fill:none;stroke-width:1;font-size:40">
+          <text x="70" y="135">
+            the quick <tspan>brown</tspan> fox
+          </text>
+          <text x="70" y="175">
+            the quick <tspan>brown</tspan> fox
+          </text>
+          <text x="70" y="335">
+            the quick brown fox
+          </text>
+          <text x="70" y="375">
+            the quick brown fox
+          </text>
+        </g>
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="225" y="230" >insert nodes 
+                   <tspan style="font-size:8">( TEXT_NODE and CDATA_SECTION_NODE )</tspan>
+                </text>
+                <text x="225" y="430" >remove nodes 
+                   <tspan style="font-size:8">( TEXT_NODE and CDATA_SECTION_NODE )</tspan>
+                </text>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/text_children2.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/text_children2.svg
new file mode 100644
index 0000000..bbe950d
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/text_children2.svg
@@ -0,0 +1,98 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of text children                                          -->
+<!--                                                                        -->
+<!-- @author nicolas socheleau bitflash com                                 -->
+<!-- @version $Id: text_children2.svg 475477 2006-11-15 22:44:28Z cam $                                      
                    -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;text&gt; children updates 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;text&gt; children in 'onload'</text>
+
+    <script type="text/ecmascript">
+
+    function text_append(evt, text) {
+        var elt = evt.target;
+        var textNode = elt.getFirstChild();
+
+        textNode.appendData(text);
+    }
+    function text_delete(evt, offset, count) {
+        var elt = evt.target;
+        var textNode = elt.getFirstChild();
+
+        textNode.deleteData(offset,count);
+    }
+    function text_insert(evt, offset, text) {
+        var elt = evt.target;
+        var textNode = elt.getFirstChild();
+
+        textNode.insertData(offset,text);
+    }
+    function text_replace(evt, offset,count,text) {
+        var elt = evt.target;
+        var textNode = elt.getFirstChild();
+
+        textNode.replaceData(offset,count,text);
+    }
+
+    </script>
+
+    <g id="test-content">
+        <g style="text-anchor:middle;font-size:24;stroke:none;fill:crimson" >
+
+          <text x="100" y="155" dy="0 -2 5 -5 5 -5 5 -5 5 -5 5 -5 5 -2"
+             xml:space="preserve" onload="text_append(evt,' the end')" >append at</text>
+          <text x="100" y="355" dy="0 -2 5 -5 5 -5 5 -5 5 -2"
+             xml:space="preserve" onload="text_delete(evt,7,4)" >delete any words</text>
+          <text x="325" y="155" dy="0 -2 5 -5 5 -5 5 -5 5 -5 5 -5 5 -2"
+             xml:space="preserve" onload="text_insert(evt,6,' between')" >insert words</text>
+          <text x="325" y="355" dy="0 -2 5 -5 5 -5 5 -5 5 -5 5 -5 5 -2"
+             xml:space="preserve" onload="text_replace(evt,10,8,'string')" >replace a sentence</text>
+
+        </g>
+
+        <g style="stroke:black; fill:none; stroke-width:1 ;text-anchor:middle; font-size:24">
+          <text x="100" y="155" dy="0 -2 5 -5 5 -5 5 -5 5 -5 5 -5 5 -2"
+             >append at the end</text>
+          <text x="100" y="355" dy="0 -2 5 -5 5 -5 5 -5 5 -2"
+             >delete words</text>
+          <text x="325" y="155" dy="0 -2 5 -5 5 -5 5 -5 5 -5 5 -5 5 -2"
+             >insert between words</text>
+          <text x="325" y="355" dy="0 -2 5 -5 5 -5 5 -5 5 -5 5 -5 5 -2"
+             >replace a string</text>
+        </g>
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="100" y="230" >TEXT_NODE.append</text>
+                <text x="100" y="430" >TEXT_NODE.delete</text>
+                <text x="325" y="230" >TEXT_NODE.insert</text>
+                <text x="325" y="430" >TEXT_NODE.replace</text>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/text_children3.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/text_children3.svg
new file mode 100644
index 0000000..689e8b5
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/text_children3.svg
@@ -0,0 +1,177 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of text children                                          -->
+<!--                                                                        -->
+<!-- @author nicolas socheleau bitflash com                                 -->
+<!-- @version $Id: text_children3.svg 475477 2006-11-15 22:44:28Z cam $                                      
                    -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+        xmlns:xlink="http://www.w3.org/1999/xlink"; >
+
+  <defs>
+        <text id="browndef"> brown</text>
+        <path id="pathdef" d="M250,180 C300,250 500,250 500,180" />
+        <path id="pathdef1" d="M250,380 C300,250 500,250 500,380" />
+  </defs>
+
+    <title>&lt;text&gt; children 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;text&gt; children in 'onload'</text>
+
+    <script type="text/ecmascript"><![CDATA[
+    function remove(evt,target){
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+        
+        var remove = doc.getElementById(target);
+        elt = remove.getParentNode();
+        elt.removeChild(remove);
+    }
+    function addtspan(evt,pos,t,s){
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var textnode = elt.getFirstChild();
+
+        textnode = textnode.splitText(pos);
+
+        var tspan = doc.createElementNS(elt.getNamespaceURI(),'tspan');
+        tspan.setAttribute('style',s);
+
+        var newtextnode = doc.createTextNode(t);
+        
+        tspan.appendChild(newtextnode);
+
+        elt.insertBefore(tspan,textnode);
+   }
+    function addtref(evt,pos,ref,s){
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var textnode = elt.getFirstChild();
+
+        textnode = textnode.splitText(pos);
+
+        var tref = doc.createElementNS(elt.getNamespaceURI(),'tref');
+        tref.setAttribute('style',s);
+        var attr = doc.createAttributeNS("http://www.w3.org/1999/xlink","href";);
+        attr.setValue(ref);
+        tref.setAttributeNodeNS(attr);
+
+        elt.insertBefore(tref,textnode);
+
+
+   }
+    function addtextpath(evt,pos,ref,t,s){
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var textnode = elt.getFirstChild();
+
+        textnode = textnode.splitText(pos);
+
+        var textPath = doc.createElementNS(elt.getNamespaceURI(),'textPath');
+        textPath.setAttribute('style',s);
+
+        var attr = doc.createAttributeNS("http://www.w3.org/1999/xlink","href";);
+        attr.setValue(ref);
+        textPath.setAttributeNodeNS(attr);
+
+        var newtextnode = doc.createTextNode(t);
+        
+        textPath.appendChild(newtextnode);
+
+        elt.insertBefore(textPath,textnode);
+   }
+    
+    ]]>
+    </script>
+
+    <g id="test-content">
+        <g style="font-size:40" >
+
+          <text x="70" y="115" style="fill:orange" 
+                onload="addtspan(evt,9,' brown','fill:brown')" >the quick fox</text>
+
+          <text x="70" y="155" style="fill:orange" 
+                onload="addtref(evt,9,'#browndef','fill:brown')" >the quick fox</text>
+
+          <text x="70" y="195" style="fill:orange" 
+                onload="addtextpath(evt,9,'#pathdef','brown','fill:brown')" >the quick fox</text>
+
+          <text x="70" y="315" style="fill:orange" 
+                onload="remove(evt,'tspan')" >
+              the quick
+            <tspan id="tspan" style="fill:brown">brown</tspan>
+              fox
+          </text>
+
+          <text x="70" y="355" style="fill:orange" 
+                onload="remove(evt,'tref')" >
+              the quick
+            <tref id="tref" style="fill:brown" xlink:href="#browndef"/>
+              fox
+          </text>
+
+          <text x="70" y="395" style="fill:orange" 
+                onload="remove(evt,'textpath')" >
+              the quick
+            <textPath id="textpath" xlink:href="#pathdef1" style="fill:brown">brown</textPath>fox</text>
+
+        </g>
+
+        <g style="stroke:black;fill:none;stroke-width:1;font-size:40">
+          <text x="70" y="115">
+            the quick <tspan>brown</tspan> fox
+          </text>
+          <text x="70" y="155">
+            the quick <tref xlink:href="#browndef" /> fox
+          </text>
+          <text x="70" y="195">
+            the quick <textPath xlink:href="#pathdef" >brown</textPath> fox
+          </text>
+          <text x="70" y="315">
+            the quick  fox
+          </text>
+          <text x="70" y="355">
+            the quick  fox
+          </text>
+          <text x="70" y="395">
+            the quick  fox
+          </text>
+        </g>
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="225" y="230" >insert nodes 
+                   <tspan style="font-size:8">( &lt;tspan&gt;,&lt;tref&gt;,&lt;textPath&gt; )</tspan>
+                </text>
+                <text x="225" y="430" >remove nodes 
+                   <tspan style="font-size:8">( &lt;tspan&gt;,&lt;tref&gt;,&lt;textPath&gt; )</tspan>
+                </text>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/text_content.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/text_content.svg
new file mode 100644
index 0000000..6419c02
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/text_content.svg
@@ -0,0 +1,340 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Tests text content interface for the various text cases                -->
+<!--                                                                        -->
+<!-- @author bella robinson cmis csiro au                                   -->
+<!-- @version $Id: text_content.svg 475477 2006-11-15 22:44:28Z cam $        -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500"
+  viewBox="0 0 450 500" 
+  xmlns="http://www.w3.org/2000/svg";
+  xmlns:xlink="http://www.w3.org/1999/xlink";>
+
+<script language="text/ecmascript"><![CDATA[
+  var svgns   = "http://www.w3.org/2000/svg";;
+  var xlinkns = "http://www.w3.org/1999/xlink";;
+
+  var ids = new Array("simple", "tspans", "dxdy", "xy", 
+                      "tp_start", "tp_middle", "tp_end", "test",
+                      "tp_ag_middle", "ag1", "ag2", "ag3", "ag4",
+                      "ligature", "tp_lig", "lig2", "tp_lig2");
+  for (var i=0; i<ids.length; i++) {
+    var elem = document.getElementById(ids[i]);
+    showCharactersInfo(elem);
+    showTextInfo(elem);
+  }
+
+  function showTextInfo(elt) {
+    var group = elt;
+    var text  = elt;
+    while (group.localName != "g") {
+      if (text.localName != "text")
+        text = text.parentNode;
+      group = group.parentNode;
+    }
+    var bbox = text.getBBox();
+    var x=bbox.x+bbox.width+10;
+    var y=bbox.y+bbox.height*.6
+    var t = document.createElementNS(svgns, "text");
+    t.setAttribute("x", ""+x);
+    t.setAttribute("y", ""+y);
+    t.setAttribute("font-size", "10");
+    var str = "len: " + elt.getComputedTextLength();
+    var idx = str.indexOf('.');
+    if (idx >= 0) {
+      idx += 4;
+      if (idx > str.length) idx = str.length;
+      str = str.substring(0,idx);
+    }
+
+    var tn = document.createTextNode(str);
+    t.appendChild(tn);
+    group.appendChild(t);
+  }
+
+  function showCharactersInfo(elt) {
+    var numChar = elt.getNumberOfChars();
+    for(var i=0; i<numChar; i++) {
+      showCharacterBBox(elt, i);
+      showCharacterStartEndPosition(elt, i);
+    }
+  }
+
+  function showCharacterBBox(elt, index) {
+    var group = elt;
+    while (group.localName != "g")
+      group = group.parentNode;
+    try { 
+      var box = elt.getExtentOfChar(index);
+      var mat = elt.getTransformToElement(group);
+      var root = document.getRootElement();
+
+      var pt0  = root.createSVGPoint();
+      pt0.x = box.getX();
+      pt0.y = box.getY();
+      pt0 = pt0.matrixTransform(mat);
+
+      var pt1  = root.createSVGPoint();
+      pt1.x = box.getX()+box.getWidth();
+      pt1.y = box.getY();
+      pt1 = pt1.matrixTransform(mat);
+
+      var pt2  = root.createSVGPoint();
+      pt2.x = box.getX()+box.getWidth();
+      pt2.y = box.getY()+box.getHeight();
+      pt2 = pt2.matrixTransform(mat);
+
+      var pt3  = root.createSVGPoint();
+      pt3.x = box.getX();
+      pt3.y = box.getY()+box.getHeight();
+      pt3 = pt3.matrixTransform(mat);
+
+      var p = document.createElementNS(svgns,"path");
+      p.setAttribute("d","M" + pt0.x + "," + pt0.y + 
+                     "L" + pt1.x + "," + pt1.y +
+                     "L" + pt2.x + "," + pt2.y +
+                     "L" + pt3.x + "," + pt3.y + "z");
+      p.setAttributeNS(null,"stroke","grey");
+      p.setAttributeNS(null,"fill","none");
+      group.appendChild(p);
+    } catch (e) { 
+      // System.err.println("Err: " + e);
+    }
+  }
+
+  function showCharacterStartEndPosition(elt, index) {
+    var group = elt;
+    while (group.localName != "g")
+      group = group.parentNode;
+    // var mat   = elt.getTransformToElement(group);
+
+    try {
+      var p1 = elt.getStartPositionOfChar(index);
+      var u = document.createElementNS(svgns,"use");
+      u.setAttributeNS(xlinkns,"href","#dot");
+      u.setAttributeNS(null,"transform",
+                       "translate("+p1.x+","+p1.y+")");
+      group.appendChild(u);
+
+      var p2 = elt.getEndPositionOfChar(index);
+      u = document.createElementNS(svgns,"use");
+      u.setAttributeNS(xlinkns,"href","#box");
+      u.setAttributeNS(null,"transform",
+                       "translate("+p2.x+","+p2.y+")");
+      group.appendChild(u);
+
+      u = document.createElementNS(svgns,"use");
+      u.setAttributeNS(xlinkns,"href","#line");
+      var ang = elt.getRotationOfChar(index);
+      var x = ( p1.x + p2.x )/2;
+      var y = ( p1.y + p2.y )/2;
+      u.setAttributeNS(null,"transform",
+                       "translate("+x+","+y+") rotate("+ang+")");
+      group.appendChild(u);
+    } catch (e) { 
+      // System.err.println("Err: " + e);
+    }
+  }
+
+  function regardStart() {
+    regardTestInstance.scriptDone();
+  }
+]]></script>
+
+  <title>Text content interface test.</title>
+  <text x="50%" y="45" class="title">Text content interface test</text>
+  
+  <defs>
+    <rect id="box" x="-2.5" y="-2.5" width="5" height="5" 
+      stroke="red" fill="none"/>
+    <rect id="dot" x="-1" y="-1" width="2" height="2" 
+      stroke="none" fill="green"/>
+    <line stroke-width="1" id="line" stroke="#0CF"
+      x1="-2.5" y1="0" x2="2.5" y2="0" />
+    <path id="Path1" style="fill:none; stroke:blue;" 
+      transform="scale(0.30,0.50)"
+      d="M 50 100 C50 0 350 0 350 100"/>
+
+    <font horiz-adv-x="600" id="stroke">
+      <font-face
+        font-family="Stroke"
+        font-weight="normal"
+        units-per-em="1000"
+        ascent="1000"
+        descent="250"
+        alphabetic="0"/>
+      <missing-glyph horiz-adv-x="600" d="M0 0 V75 H50 V0 z"/>
+      
+      <glyph id="MyABC" unicode="ABC" glyph-name="ABC" horiz-adv-x="1800"
+        d="M661,-13l-300,750c-3,8 -10,12 -18,13c-8,0 -15,-5 -19,-12l-320,-750c-4,-10 0,-22 11,-26c10,-4 22,0 
26,11c0,0 63,147 131,308l329,0c64,-160 123,-307 123,-307c4,-10 16,-15 26,-11c10,4 15,16 11,26zM190,320c68,159 
137,320 153,358c15,-38 80,-199 143,-358l-296,0z
+        M675,750c-11,0 -20,-9 -20,-20l0,-750c0,-11 9,-20 20,-20l224,0c158,0 241,111 241,221c0,81 -45,162 
-132,200c87,33 132,104 132,175c0,96 -83,194 -241,194l-224,0zM900,710c138,0 201,-80 201,-154c0,-74 -63,-154 
-201,-154c0,0 -170,0 -204,0c0,151 0,292 0,308c33,0 204,0 204,0zM900,362c138,0 201,-94 201,-181c0,-87 -63,-181 
-201,-181c0,0 -170,0 -204,0c0,19 0,181 0,362c33,0 204,0 204,0z
+        M1100,355c0,-218 126,-395 282,-395c93,0 180,64 233,172c5,10 1,22 -9,27c-10,5 -22,1 -27,-9c-46,-93 
-119,-149 -197,-149c-133,0 -242,159 -242,355c0,196 108,355 242,355c78,0 151,-56 197,-149c5,-10 17,-14 
27,-9c10,5 14,17 9,27c-52,107 -139,172 -233,172c-155,0 -282,-177 -282,-395z"/>
+
+      <glyph id="MyDE" unicode="DE" glyph-name="DE" horiz-adv-x="1080"
+        d="M20,750c-11,0 -20,-9 -20,-20l0,-750c0,-11 9,-20 20,-20l224,0c165,0 241,205 241,395c0,190 -75,395 
-241,395l-224,0zM244,710c132,0 201,-179 201,-355c0,-176 -69,-355 -201,-355c0,0 -170,0 -204,0c0,37 0,673 
0,710c33,0 204,0 204,0z
+        M920,0c0,0 -344,0 -380,0c0,19 0,192 0,362l251,0c11,0 20,9 20,20c0,11 -9,20 -20,20l-251,0c0,151 0,291 
0,308c36,0 380,0 380,0c11,0 20,9 20,20c0,11 -9,20 -20,20l-400,0c-11,0 -20,-9 -20,-20l0,-750c0,-11 9,-20 
20,-20l400,0c11,0 20,9 20,20c0,11 -9,20 -20,20z"/>
+
+      <glyph id="MyA" unicode="A" glyph-name="A" horiz-adv-x="780"
+        d="M661,-13l-300,750c-3,8 -10,12 -18,13c-8,0 -15,-5 -19,-12l-320,-750c-4,-10 0,-22 11,-26c10,-4 22,0 
26,11c0,0 63,147 131,308l329,0c64,-160 123,-307 123,-307c4,-10 16,-15 26,-11c10,4 15,16 11,26zM190,320c68,159 
137,320 153,358c15,-38 80,-199 143,-358l-296,0z"/>
+      <glyph id="MyB" unicode="B" glyph-name="B" horiz-adv-x="630"
+        d="M20,750c-11,0 -20,-9 -20,-20l0,-750c0,-11 9,-20 20,-20l224,0c158,0 241,111 241,221c0,81 -45,162 
-132,200c87,33 132,104 132,175c0,96 -83,194 -241,194l-224,0zM244,710c138,0 201,-80 201,-154c0,-74 -63,-154 
-201,-154c0,0 -170,0 -204,0c0,151 0,292 0,308c33,0 204,0 204,0zM244,362c138,0 201,-94 201,-181c0,-87 -63,-181 
-201,-181c0,0 -170,0 -204,0c0,19 0,181 0,362c33,0 204,0 204,0z"/>
+      <glyph id="MyC" unicode="C" glyph-name="C" horiz-adv-x="650"
+        d="M0,355c0,-218 126,-395 282,-395c93,0 180,64 233,172c5,10 1,22 -9,27c-10,5 -22,1 -27,-9c-46,-93 
-119,-149 -197,-149c-133,0 -242,159 -242,355c0,196 108,355 242,355c78,0 151,-56 197,-149c5,-10 17,-14 
27,-9c10,5 14,17 9,27c-52,107 -139,172 -233,172c-155,0 -282,-177 -282,-395z"/>
+      <glyph id="MyD" unicode="D" glyph-name="D" horiz-adv-x="630"
+        d="M20,750c-11,0 -20,-9 -20,-20l0,-750c0,-11 9,-20 20,-20l224,0c165,0 241,205 241,395c0,190 -75,395 
-241,395l-224,0zM244,710c132,0 201,-179 201,-355c0,-176 -69,-355 -201,-355c0,0 -170,0 -204,0c0,37 0,673 
0,710c33,0 204,0 204,0z"/>
+      <glyph id="MyE" unicode="E" glyph-name="E" horiz-adv-x="580"
+        d="M420,0c0,0 -344,0 -380,0c0,19 0,192 0,362l251,0c11,0 20,9 20,20c0,11 -9,20 -20,20l-251,0c0,151 
0,291 0,308c36,0 380,0 380,0c11,0 20,9 20,20c0,11 -9,20 -20,20l-400,0c-11,0 -20,-9 -20,-20l0,-750c0,-11 9,-20 
20,-20l400,0c11,0 20,9 20,20c0,11 -9,20 -20,20z"/>
+
+    </font>
+
+    <altGlyphDef id="MyAltGlyphDef1">
+         <glyphRef xlink:href="#MyA"/>
+         <glyphRef xlink:href="#MyB"/>
+         <glyphRef xlink:href="#MyC"/>
+         <glyphRef xlink:href="#MyD"/>
+         <glyphRef xlink:href="#MyE"/>
+      </altGlyphDef>
+    <altGlyphDef id="MyAGTest">
+         <glyphRef xlink:href="#MyA"/>
+         <glyphRef xlink:href="#MyB"/>
+         <glyphRef xlink:href="#MyC"/>
+         <glyphRef xlink:href="#MyD"/>
+      </altGlyphDef>
+      <altGlyphDef id="MyAltGlyphDef4">
+         <altGlyphItem>
+            <glyphRef xlink:href="#MyA"/>
+            <glyphRef xlink:href="#NoSuchId"/>
+            <glyphRef xlink:href="#MyC"/>
+         </altGlyphItem>
+         <altGlyphItem>
+            <glyphRef xlink:href="#MyA"/>
+            <glyphRef xlink:href="#MyB"/>
+            <glyphRef xlink:href="#MyC"/>
+            <glyphRef xlink:href="#MyD"/>
+            <glyphRef xlink:href="#MyE"/>
+         </altGlyphItem>
+      </altGlyphDef>
+      <altGlyphDef id="MyAltGlyphDef5">
+         <altGlyphItem>
+            <glyphRef xlink:href="#MyA"/>
+            <glyphRef xlink:href="#NoSuchId"/>
+            <glyphRef xlink:href="#MyA"/>
+         </altGlyphItem>
+         <altGlyphItem>
+            <glyphRef xlink:href="#MyB"/>
+            <glyphRef xlink:href="#MyB"/>
+            <glyphRef xlink:href="#NoSuchId"/>
+         </altGlyphItem>
+      </altGlyphDef>
+  </defs>
+
+  <defs>
+  </defs>
+
+  <g id="test-content" style="font-size:18">
+    <text id="simple" x="25" y="100">Simple Text</text>
+    <text x="25" y="130">Using 
+      <tspan id="tspans" fill="blue">Tspan</tspan></text>
+    <text id="dxdy" x="25" y="160">Tspan 
+      <tspan fill="blue" dx="2 -1 0 -1 2" dy="-5 10 -5 -5 10"
+        >Dx/Dy</tspan></text>
+    <text id="xy" x="25" y="190">Tspan 
+      <tspan fill="blue" x="85" y="195"
+        >X/Y</tspan></text>
+
+    <g transform="translate(230,65)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text id="tp_start" style="text-anchor:start">
+        <textPath xlink:href="#Path1" startOffset="50%">Text <tspan fill="red" dy="-10">on</tspan><tspan 
dy="10"> a Path</tspan></textPath>
+      </text>
+    </g>  
+
+    <g transform="translate(230,125)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text id="tp_middle" style="text-anchor:middle">
+        <textPath xlink:href="#Path1" startOffset="50%">Text <tspan fill="red" dy="-10">on</tspan><tspan 
dy="10"> a Path</tspan></textPath>
+      </text>
+    </g>  
+
+    <g transform="translate(230,185)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text id="tp_end" style="text-anchor:end">
+        <textPath xlink:href="#Path1" startOffset="50%">Text <tspan 
+            fill="red" dy="-10">on</tspan><tspan dy="10"
+            > a Path</tspan></textPath>
+      </text>
+    </g>  
+
+    <g transform="translate(10,210)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text id="tp_ag_middle" style="text-anchor:middle">
+        <textPath xlink:href="#Path1" startOffset="50%">glyphRefs: "<altGlyph 
+            rotate="10,10,10,10,10" dx="0,2,2,2,2" dy="0,2,2,-2,-2" 
+            fill="green" xlink:href="#MyAltGlyphDef1">No Match</altGlyph
+            >"</textPath>
+      </text>
+    </g>  
+
+    <text x="170" y="270" id="test" >phRefs: "<altGlyph
+            rotate="10,10,10,10,10" dx="0,2,2,2,2" dy="0,2,2,-2,-2" 
+            fill="green" xlink:href="#MyAGTest">No Match</altGlyph
+            ></text>
+      
+    <text id="ag1" x="5" y="300">5 valid glyphRefs: "<altGlyph 
+        fill="green" xlink:href="#MyAltGlyphDef1">No Match</altGlyph>"</text>
+
+      <text id="ag2" x="5" y="330">2 altGlyphItems, both
+      <tspan fill="red">invalid</tspan>: "<altGlyph 
+        fill="red" xlink:href="#MyAltGlyphDef5">No Match</altGlyph>"</text>
+
+    <text id="ag3" x="5" y="360">2 altGlyphItems, 2nd valid: "<altGlyph 
+        fill="green" xlink:href="#MyAltGlyphDef4">No Match</altGlyph>"</text>
+
+    <text id="ag4" x="5" y="390">5 glyphRefs, dx/dy/rotate: "<altGlyph 
+        rotate="10,10,10,10,10" dx="0,2,2,2,2" dy="0,2,2,-2,-2" 
+        fill="green" xlink:href="#MyAltGlyphDef1">No Match</altGlyph>"</text>
+
+    <text id="ligature" x="5" y="420">ligature <tspan  
+        font-family="stroke" fill="green">ABCDE</tspan></text>
+
+    <g transform="translate(10,430)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text id="tp_lig" style="text-anchor:middle">
+        <textPath xlink:href="#Path1" startOffset="50%">ligature <tspan  
+        font-family="stroke" fill="green">ABCDE</tspan></textPath></text>
+    </g>  
+
+    <text id="lig2" x="235" y="420">ligature <tspan  
+        font-family="stroke" fill="green">ABC</tspan></text>
+
+    <g transform="translate(235,430)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text id="tp_lig2" style="text-anchor:middle">
+        <textPath xlink:href="#Path1" startOffset="65%">ligature <tspan  
+            font-family="stroke" fill="green">ABCDE</tspan></textPath></text>
+    </g>  
+  </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/text_dxlist1.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/text_dxlist1.svg
new file mode 100644
index 0000000..e0639fb
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/text_dxlist1.svg
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ================================================================      -->
+<!-- Modification of a x attributes                                        -->
+<!--                                                                       -->
+<!-- @author nicolas socheleau bitflash com                                -->
+<!-- @version $Id: text_dxlist1.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>&lt;text&gt; dx attribute &apos;onload&apos;</title>
+  <style type="text/css"><![CDATA[
+        .test { fill:orange; font-size:16 }
+        .testshadow { fill:#bbb; font-size:16  }
+  ]]></style>
+  <text x="50%" y="45" class="title">&lt;text&gt; getDx() in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[    
+        function getNumberOfItems(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getDx().getBaseVal().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" "+nb+" dx");    
+        }
+        function clear(evt) 
+        {        
+           var elt = evt.target;
+           elt.getDx().getBaseVal().clear()
+           nb = elt.getDx().getBaseVal().getNumberOfItems();                
+           var text = elt.getOwnerDocument().getElementById('test2_text');        
+           text.getFirstChild().appendData(" "+nb+" dx");    
+        }
+        function getItem(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getDx().getBaseVal().getItem(0);        
+           var text = elt.getOwnerDocument().getElementById('test3_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function insertItemBefore(evt,index,x) 
+        {        
+           var elt = evt.target;        
+           l = elt.getOwnerDocument().getDocumentElement().createSVGLength();
+           l.setValue(x);
+           nb = elt.getDx().getBaseVal().insertItemBefore(l,index);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function replaceItem(evt,index,unit,x) 
+        {        
+           var elt = evt.target;        
+           l = elt.getOwnerDocument().getDocumentElement().createSVGLength();
+           l.newValueSpecifiedUnits(unit,x);
+
+           nb = elt.getDx().getBaseVal().replaceItem(l,index);        
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function removeItem(evt,index) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getDx().getBaseVal().removeItem(index);        
+           var text = elt.getOwnerDocument().getElementById('test6_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function initializeAppendItem(evt,x1,x2) 
+        {        
+           var elt = evt.target;        
+           l = elt.getOwnerDocument().getDocumentElement().createSVGLength();
+           l.setValue(x1);
+
+           nb = elt.getDx().getBaseVal().initialize(l);        
+           var text = elt.getOwnerDocument().getElementById('test71_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+           l.setValue(x2);
+
+           nb = elt.getDx().getBaseVal().appendItem(l);        
+           text = elt.getOwnerDocument().getElementById('test72_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+        }
+        function setAttribute(evt,dxList) 
+        {        
+           var elt = evt.target;
+           var points = elt.getDx().getBaseVal();
+           nb = points.getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test81_text');        
+           text.getFirstChild().appendData(" "+nb+" dx");
+
+           elt.setAttributeNS(null,"dx",dxList);
+
+           nb = points.getNumberOfItems();        
+           text = elt.getOwnerDocument().getElementById('test82_text');        
+           text.getFirstChild().appendData(" "+nb+" dx");
+        
+        }
+
+        function setAttribute2(evt,dxList) 
+        {        
+           var elt = evt.target;
+           var points = elt.getDx().getBaseVal();
+           nb = points.getItem(0);        
+           var text = elt.getOwnerDocument().getElementById('test91_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+
+           elt.setAttributeNS(null,"dx",dxList);
+
+           text = elt.getOwnerDocument().getElementById('test92_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+        
+        }
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -148.27586 -91.37931)">
+     <g>
+       <!-- onload="getNumberOfItems(evt)" -->
+       <text x="180" y="160" font-size="11">getNumberOfItems</text>
+       <text class="testshadow" x="150" dx="10 5 7 5" y="240">SVGLengthList</text>
+       <text class="test" x="150" dx="10 5 7 5" y="220" 
+             onload="getNumberOfItems(evt)"
+        >SVGLengthList</text>
+       <text x="160" font-size="9" y="290" id="test1_text">
+          text with
+       </text>
+     </g>
+     <g transform="translate(150,0)">
+        <!-- onload="clear(evt)" -->
+       <text x="180" y="160" font-size="11">clear</text>
+       <text class="testshadow" x="150" dx="10 5 7 5" y="240">SVGLengthList</text>
+       
+       <text class="test" x="150" dx="10 5 7 5" y="220" 
+             onload="clear(evt)"
+        >SVGLengthList</text>        
+       
+
+       <text x="160" font-size="9" y="290" id="test2_text">
+          text with
+       </text>
+     </g>
+
+     <g transform="translate(300,0)">
+        <!-- onload="getItem(evt)" -->
+        <text x="180" y="160" font-size="11" >getItem</text>
+
+       <text class="testshadow" x="150" dx="10 5 7 5" y="240">SVGLengthList</text>
+       <text class="test" x="150" dx="10 5 7 5" y="220"
+             onload="getItem(evt)"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="290" id="test3_text">
+        first point
+     </text>
+     </g>
+     <g transform="translate(0,150)" >
+        <!-- onload="insertItemBefore(evt)" -->
+        <text x="180" y="160" font-size="11"  >insertItemBefore</text>
+
+       <text class="testshadow" x="150" dx="10 5 7 5" y="240">SVGLengthList</text>
+       <text class="test" x="150" dx="10 5 7 5" y="220"
+             onload="insertItemBefore(evt,1,-5)"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        inserted point
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="replaceItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >replaceItem</text>
+
+       <text class="testshadow" x="150" dx="10 5 7 5" y="240">SVGLengthList</text>
+       <text class="test" x="150" dx="10 5 7 5" y="220"
+             onload="replaceItem(evt,2,3,2)"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        replaced point
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="removeItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >removeItem</text>
+
+       <text class="testshadow" x="150" dx="10 5 7 5" y="240">SVGLengthList</text>
+       <text class="test" x="150" dx="10 5 7 5" y="220"
+             onload="removeItem(evt,0)"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="290"  id="test6_text">
+        removed point
+     </text>
+    </g>
+
+     <g transform="translate(0,300)" >
+        <!-- onload="initialize/appendItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >initialize/appendItem</text>
+
+       <text class="testshadow" x="150" dx="10 5 7 5" y="240">SVGLengthList</text>
+       <text class="test" x="150" dx="10 5 7 5" y="220"
+             onload="initializeAppendItem(evt,30,2)"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="275"  id="test71_text">
+        intialized point 
+     </text>
+     <text x="160" font-size="9" y="285"  id="test72_text">
+        appended point
+     </text>
+    </g>
+
+     <g transform="translate(150,300)" >
+        <!-- onload="setAttribute(evt)" -->
+        <text x="180" y="160" font-size="11"  >setAttribute</text>
+
+       <text class="testshadow" x="150" dx="10 5 7 5" y="240">SVGLengthList</text>
+       <text class="test" x="150" dx="10 5 7 5" y="220"
+             onload="setAttribute(evt,'2 10 2 10 2 10')"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="275"  id="test81_text">
+        before
+     </text>
+     <text x="160" font-size="9" y="285"  id="test82_text">
+        after
+     </text>
+    </g>
+
+     <g transform="translate(300,300)" >
+        <!-- onload="setAttribute2(evt)" -->
+        <text x="180" y="160" font-size="11"  >setAttribute2</text>
+
+       <text class="testshadow" x="150" dx="10 5 7 5" y="240">SVGLengthList</text>
+       <text class="test" x="150" dx="10 5 7 5" y="220"
+             onload="setAttribute2(evt,'2 10 2 10 2 10')"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="275"  id="test91_text">
+        point 0 before
+     </text>
+     <text x="160" font-size="9" y="285"  id="test92_text">
+        point 0 after
+     </text>
+    </g>
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/text_dxlist2.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/text_dxlist2.svg
new file mode 100644
index 0000000..7d9f26c
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/text_dxlist2.svg
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+--><!--      ======================================================================      -->
+<!--      Modification of a x attributes                                        -->
+<!--                                                                                  -->
+<!--      @author nicolas socheleau bitflash com                                      -->
+<!--      @version $Id: text_dxlist2.svg 475477 2006-11-15 22:44:28Z cam $      -->
+<!--      ======================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>&lt;text&gt; dx attribute &apos;onload&apos;</title>
+  <style type="text/css"><![CDATA[
+        .test { fill:orange; font-size:16 }
+        .testshadow { fill:#bbb; font-size:16  }
+  ]]></style>
+  <text x="50%" y="45" class="title">&lt;text&gt; getDx() in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[    
+        function getNumberOfItems(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getDx().getBaseVal().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" "+nb+" dx");    
+        }
+
+        function insertItemBefore(evt,fromIndex,index) 
+        {        
+           var elt = evt.target;        
+           lengthProvider = elt.getOwnerDocument().getElementById('test1');
+           l = lengthProvider.getDx().getBaseVal().getItem(fromIndex);
+           nb = elt.getDx().getBaseVal().insertItemBefore(l,index);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function replaceItem(evt,fromIndex,index) 
+        {        
+           var elt = evt.target;        
+           lengthProvider = elt.getOwnerDocument().getElementById('test1');
+           l = lengthProvider.getDx().getBaseVal().getItem(fromIndex);
+           nb = elt.getDx().getBaseVal().replaceItem(l,index);        
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+
+        function initializeAppendItem(evt,fromIndex1,fromIndex2) 
+        {        
+           var elt = evt.target;        
+           lengthProvider = elt.getOwnerDocument().getElementById('test1');
+           l = lengthProvider.getDx().getBaseVal().getItem(fromIndex1);
+           nb = elt.getDx().getBaseVal().initialize(l);        
+           var text = elt.getOwnerDocument().getElementById('test71_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+           l = lengthProvider.getDx().getBaseVal().getItem(fromIndex2);
+           nb = elt.getDx().getBaseVal().appendItem(l);        
+           text = elt.getOwnerDocument().getElementById('test72_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+        }
+
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -148.27586 -91.37931)">
+     <g>
+       <!-- onload="getNumberOfItems(evt)" -->
+       <text x="180" y="160" font-size="11">getNumberOfItems</text>
+       <text class="testshadow" x="150" dx="10% 5mm 0.1in 5 10" y="240">SVGLengthList</text>
+       <text class="test" id="test1" x="150" dx="10% 5mm 0.1in 5 10" y="220" 
+             onload="getNumberOfItems(evt)"
+        >SVGLengthList</text>
+       <text x="160" font-size="9" y="290" id="test1_text">
+          text with
+       </text>
+     </g>
+
+     <g transform="translate(0,150)" >
+        <!-- onload="insertItemBefore(evt)" -->
+        <text x="180" y="160" font-size="11"  >insertItemBefore</text>
+
+       <text class="testshadow" x="150" dx="10 5 7 5" y="240">SVGLengthList</text>
+       <text class="test" x="150" dx="10 5 7 5" y="220"
+             onload="insertItemBefore(evt,1,0)"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        inserted point
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="replaceItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >replaceItem</text>
+
+       <text class="testshadow" x="150" dx="10 5 7 5" y="240">SVGLengthList</text>
+       <text class="test" x="150" dx="10 5 7 5" y="220"
+             onload="replaceItem(evt,1,1)"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        replaced point
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="removeItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >removeItem</text>
+
+       <text class="testshadow" x="150" dx="10 5 7 5" y="240">SVGLengthList</text>
+       <text class="test" x="150" dx="10 5 7 5" y="220"
+             onload="initializeAppendItem(evt,0,0)"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="275"  id="test71_text">
+        intialized point 
+     </text>
+     <text x="160" font-size="9" y="285"  id="test72_text">
+        appended point
+     </text>
+    </g>
+
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/text_dylist1.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/text_dylist1.svg
new file mode 100644
index 0000000..59d216c
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/text_dylist1.svg
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+--><!--      ======================================================================      -->
+<!--      Modification of a x attributes                                        -->
+<!--                                                                                  -->
+<!--      @author nicolas socheleau bitflash com                                      -->
+<!--      @version $Id: text_dylist1.svg 475477 2006-11-15 22:44:28Z cam $      -->
+<!--      ======================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>&lt;text&gt; dy attribute &apos;onload&apos;</title>
+  <style type="text/css"><![CDATA[
+        .test { fill:orange; font-size:16 }
+        .testshadow { fill:#bbb; font-size:16  }
+  ]]></style>
+  <defs>
+     <text id="myText">SVGLengthList</text>
+  </defs>
+  <text x="50%" y="45" class="title">&lt;text&gt; getDy() in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[    
+        function getNumberOfItems(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getDy().getBaseVal().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" "+nb+" dy");    
+        }
+        function clear(evt) 
+        {        
+           var elt = evt.target;
+           elt.getDy().getBaseVal().clear()
+           nb = elt.getDy().getBaseVal().getNumberOfItems();                
+           var text = elt.getOwnerDocument().getElementById('test2_text');        
+           text.getFirstChild().appendData(" "+nb+" dy");    
+        }
+        function getItem(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getDy().getBaseVal().getItem(0);        
+           var text = elt.getOwnerDocument().getElementById('test3_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function insertItemBefore(evt,index,y) 
+        {        
+           var elt = evt.target;        
+           l = elt.getOwnerDocument().getDocumentElement().createSVGLength();
+           l.setValue(y);
+           nb = elt.getDy().getBaseVal().insertItemBefore(l,index);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function replaceItem(evt,index,unit,y) 
+        {        
+           var elt = evt.target;        
+           l = elt.getOwnerDocument().getDocumentElement().createSVGLength();
+           l.newValueSpecifiedUnits(unit,y);
+
+           nb = elt.getDy().getBaseVal().replaceItem(l,index);        
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function removeItem(evt,index) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getDy().getBaseVal().removeItem(index);        
+           var text = elt.getOwnerDocument().getElementById('test6_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function initializeAppendItem(evt,y1,y2) 
+        {        
+           var elt = evt.target;        
+           l = elt.getOwnerDocument().getDocumentElement().createSVGLength();
+           l.setValue(y1);
+
+           nb = elt.getDy().getBaseVal().initialize(l);        
+           var text = elt.getOwnerDocument().getElementById('test71_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+           l.setValue(y2);
+
+           nb = elt.getDy().getBaseVal().appendItem(l);        
+           text = elt.getOwnerDocument().getElementById('test72_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+        }
+        function setAttribute(evt,dyList) 
+        {        
+           var elt = evt.target;
+           var points = elt.getDy().getBaseVal();
+           nb = points.getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test81_text');        
+           text.getFirstChild().appendData(" "+nb+" dy");
+
+           elt.setAttributeNS(null,"dy",dyList);
+
+           nb = points.getNumberOfItems();        
+           text = elt.getOwnerDocument().getElementById('test82_text');        
+           text.getFirstChild().appendData(" "+nb+" dy");
+        
+        }
+
+        function setAttribute2(evt,dyList) 
+        {        
+           var elt = evt.target;
+           var points = elt.getDy().getBaseVal();
+           nb = points.getItem(0);        
+           var text = elt.getOwnerDocument().getElementById('test91_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+
+           elt.setAttributeNS(null,"dy",dyList);
+
+           text = elt.getOwnerDocument().getElementById('test92_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+        
+        }
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -148.27586 -91.37931)">
+     <g>
+       <!-- onload="getNumberOfItems(evt)" -->
+       <text x="180" y="160" font-size="11">getNumberOfItems</text>
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tspan x="160" y="220" dy="10 -4 2 8">SVGLengthList</tspan></text>
+       </g>
+       <text class="test"><tspan x="160" y="220" dy="10 -4 2 8"
+             onload="getNumberOfItems(evt)"
+        >SVGLengthList</tspan></text>
+       <text x="160" font-size="9" y="290" id="test1_text">
+          text with
+       </text>
+     </g>
+     <g transform="translate(150,0)">
+        <!-- onload="clear(evt)" -->
+       <text x="180" y="160" font-size="11">clear</text>
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tspan x="160" y="220" dy="10 -4 2 8">SVGLengthList</tspan></text>
+       </g>
+
+       <text class="test" ><tspan x="160" y="220" dy="10 -4 2 8"
+             onload="clear(evt)"
+        >SVGLengthList</tspan></text>        
+
+
+       <text x="160" font-size="9" y="290" id="test2_text">
+          text with
+       </text>
+     </g>
+
+     <g transform="translate(300,0)">
+        <!-- onload="getItem(evt)" -->
+        <text x="180" y="160" font-size="11" >getItem</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tspan x="160" y="220" dy="10 -4 2 8">SVGLengthList</tspan></text>
+       </g>
+       <text class="test"><tspan x="160" y="220" dy="10 -4 2 8"
+             onload="getItem(evt)"
+        >SVGLengthList</tspan></text>        
+
+     <text x="160" font-size="9" y="290" id="test3_text">
+        first point
+     </text>
+     </g>
+     <g transform="translate(0,150)" >
+        <!-- onload="insertItemBefore(evt)" -->
+        <text x="180" y="160" font-size="11"  >insertItemBefore</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tspan x="160" y="220" dy="10 -4 2 8">SVGLengthList</tspan></text>
+       </g>
+       <text class="test"><tspan x="160" y="220" dy="10 -4 2 8"
+             onload="insertItemBefore(evt,1,5)"
+        >SVGLengthList</tspan></text>        
+
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        inserted point
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="replaceItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >replaceItem</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tspan x="160" y="220" dy="10 -4 2 8">SVGLengthList</tspan></text>
+       </g>
+       <text class="test"><tspan x="160" y="220" dy="10 -4 2 8"
+             onload="replaceItem(evt,2,4,2)"
+        >SVGLengthList</tspan></text>        
+
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        replaced point
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="removeItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >removeItem</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tspan x="160" y="220" dy="10 -4 2 8">SVGLengthList</tspan></text>
+       </g>
+       <text class="test"><tspan x="160" y="220" dy="10 -4 2 8"
+             onload="removeItem(evt,0)"
+        >SVGLengthList</tspan></text>        
+
+     <text x="160" font-size="9" y="290"  id="test6_text">
+        removed point
+     </text>
+    </g>
+
+     <g transform="translate(0,300)" >
+        <!-- onload="initialize/appendItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >initialize/appendItem</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tspan x="160" y="220" dy="10 -4 2 8">SVGLengthList</tspan></text>
+       </g>
+       <text class="test"><tspan x="160" y="220" dy="10 -4 2 8"
+             onload="initializeAppendItem(evt,-5,10)"
+        >SVGLengthList</tspan></text>        
+
+     <text x="160" font-size="9" y="275"  id="test71_text">
+        intialized point 
+     </text>
+     <text x="160" font-size="9" y="285"  id="test72_text">
+        appended point
+     </text>
+    </g>
+
+     <g transform="translate(150,300)" >
+        <!-- onload="setAttribute(evt)" -->
+        <text x="180" y="160" font-size="11"  >setAttribute</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tspan x="160" y="220" dy="10 -4 2 8">SVGLengthList</tspan></text>
+       </g>
+       <text class="test"><tspan x="160" y="220" dy="10 -4 2 8"
+             onload="setAttribute(evt,'-5 10 -10 10 -10 10')"
+        >SVGLengthList</tspan></text>        
+
+     <text x="160" font-size="9" y="275"  id="test81_text">
+        before
+     </text>
+     <text x="160" font-size="9" y="285"  id="test82_text">
+        after
+     </text>
+    </g>
+
+     <g transform="translate(300,300)" >
+        <!-- onload="setAttribute2(evt)" -->
+        <text x="180" y="160" font-size="11"  >setAttribute2</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tspan x="160" y="220" dy="10 -4 2 8">SVGLengthList</tspan></text>
+       </g>
+       <text class="test"><tspan x="160" y="220" dy="10 -4 2 8"
+             onload="setAttribute2(evt,'-5 10 -10 10 -10 10')"
+        >SVGLengthList</tspan></text>        
+
+     <text x="160" font-size="9" y="275"  id="test91_text">
+        point 0 before
+     </text>
+     <text x="160" font-size="9" y="285"  id="test92_text">
+        point 0 after
+     </text>
+    </g>
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/text_dylist2.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/text_dylist2.svg
new file mode 100644
index 0000000..f9a6075
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/text_dylist2.svg
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+--><!--      ======================================================================      -->
+<!--      Modification of a x attributes                                        -->
+<!--                                                                                  -->
+<!--      @author nicolas socheleau bitflash com                                      -->
+<!--      @version $Id: text_dylist2.svg 475477 2006-11-15 22:44:28Z cam $      -->
+<!--      ======================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>&lt;text&gt; dy attribute &apos;onload&apos;</title>
+  <style type="text/css"><![CDATA[
+        .test { fill:orange; font-size:16 }
+        .testshadow { fill:#bbb; font-size:16  }
+  ]]></style>
+  <defs>
+     <text id="myText">SVGLengthList</text>
+  </defs>
+  <text x="50%" y="45" class="title">&lt;text&gt; getDy() in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[    
+        function getNumberOfItems(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getDy().getBaseVal().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" "+nb+" dy");    
+        }
+
+        function insertItemBefore(evt,fromIndex,index) 
+        {        
+           var elt = evt.target;        
+           lengthProvider = elt.getOwnerDocument().getElementById('test1');
+           l = lengthProvider.getDy().getBaseVal().getItem(fromIndex);
+           nb = elt.getDy().getBaseVal().insertItemBefore(l,index);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function replaceItem(evt,fromIndex,index) 
+        {        
+           var elt = evt.target;        
+           lengthProvider = elt.getOwnerDocument().getElementById('test1');
+           l = lengthProvider.getDy().getBaseVal().getItem(fromIndex);
+           nb = elt.getDy().getBaseVal().replaceItem(l,index);        
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+
+        function initializeAppendItem(evt,fromIndex1,fromIndex2) 
+        {        
+           var elt = evt.target;        
+           lengthProvider = elt.getOwnerDocument().getElementById('test1');
+           l = lengthProvider.getDy().getBaseVal().getItem(fromIndex1);
+           nb = elt.getDy().getBaseVal().initialize(l);        
+           var text = elt.getOwnerDocument().getElementById('test71_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+           l = lengthProvider.getDy().getBaseVal().getItem(fromIndex2);
+           nb = elt.getDy().getBaseVal().appendItem(l);        
+           text = elt.getOwnerDocument().getElementById('test72_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+        }
+
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -148.27586 -91.37931)">
+     <g>
+       <!-- onload="getNumberOfItems(evt)" -->
+       <text x="180" y="160" font-size="11">getNumberOfItems</text>
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tspan x="160" y="220" dy="-5% -0.4cm 1ex -4% 
2pc">SVGLengthList</tspan></text>
+       </g>
+       <text class="test"><tspan id="test1" x="160" y="220" dy="-5% -0.4cm 1ex -4% 2pc"
+             onload="getNumberOfItems(evt)"
+        >SVGLengthList</tspan></text>
+       <text x="160" font-size="9" y="290" id="test1_text">
+          text with
+       </text>
+     </g>
+
+     <g transform="translate(0,150)" >
+        <!-- onload="insertItemBefore(evt)" -->
+        <text x="180" y="160" font-size="11"  >insertItemBefore</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tspan x="160" y="220" dy="10 -4 2 8">SVGLengthList</tspan></text>
+       </g>
+       <text class="test"><tspan x="160" y="220" dy="10 -4 2 8"
+             onload="insertItemBefore(evt,1,0)"
+        >SVGLengthList</tspan></text>
+
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        inserted point
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="replaceItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >replaceItem</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tspan x="160" y="220" dy="10 -4 2 8">SVGLengthList</tspan></text>
+       </g>
+       <text class="test"><tspan x="160" y="220" dy="10 -4 2 8"
+             onload="replaceItem(evt,2,1)"
+        >SVGLengthList</tspan></text>
+
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        replaced point
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="removeItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >removeItem</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tspan x="160" y="220" dy="10 -4 2 8">SVGLengthList</tspan></text>
+       </g>
+       <text class="test"><tspan x="160" y="220" dy="10 -4 2 8"
+             onload="initializeAppendItem(evt,0,0)"
+        >SVGLengthList</tspan></text>
+
+     <text x="160" font-size="9" y="275"  id="test71_text">
+        intialized point 
+     </text>
+     <text x="160" font-size="9" y="285"  id="test72_text">
+        appended point
+     </text>
+    </g>
+
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/text_xlist1.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/text_xlist1.svg
new file mode 100644
index 0000000..22f37d5
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/text_xlist1.svg
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+--><!--      ======================================================================      -->
+<!--      Modification of a x attributes                                        -->
+<!--                                                                                  -->
+<!--      @author nicolas socheleau bitflash com                                      -->
+<!--      @version $Id: text_xlist1.svg 475477 2006-11-15 22:44:28Z cam $      -->
+<!--      ======================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>&lt;text&gt; x attribute &apos;onload&apos;</title>
+  <style type="text/css"><![CDATA[
+        .test { fill:orange; font-size:16 }
+        .testshadow { fill:#bbb; font-size:16  }
+  ]]></style>
+  <text x="50%" y="45" class="title">&lt;text&gt; getX() in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[    
+        function getNumberOfItems(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getX().getBaseVal().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" "+nb+" x");    
+        }
+        function clear(evt) 
+        {        
+           var elt = evt.target;
+           elt.getX().getBaseVal().clear()
+           nb = elt.getX().getBaseVal().getNumberOfItems();                
+           var text = elt.getOwnerDocument().getElementById('test2_text');        
+           text.getFirstChild().appendData(" "+nb+" x");    
+        }
+        function getItem(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getX().getBaseVal().getItem(0);        
+           var text = elt.getOwnerDocument().getElementById('test3_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function insertItemBefore(evt,index,x) 
+        {        
+           var elt = evt.target;        
+           l = elt.getOwnerDocument().getDocumentElement().createSVGLength();
+           l.setValue(x);
+           nb = elt.getX().getBaseVal().insertItemBefore(l,index);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function replaceItem(evt,index,unit,x) 
+        {        
+           var elt = evt.target;        
+           l = elt.getOwnerDocument().getDocumentElement().createSVGLength();
+           l.newValueSpecifiedUnits(unit,x);
+
+           nb = elt.getX().getBaseVal().replaceItem(l,index);        
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function removeItem(evt,index) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getX().getBaseVal().removeItem(index);        
+           var text = elt.getOwnerDocument().getElementById('test6_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function initializeAppendItem(evt,x1,x2) 
+        {        
+           var elt = evt.target;        
+           l = elt.getOwnerDocument().getDocumentElement().createSVGLength();
+           l.setValue(x1);
+
+           nb = elt.getX().getBaseVal().initialize(l);        
+           var text = elt.getOwnerDocument().getElementById('test71_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+           l.setValue(x2);
+
+           nb = elt.getX().getBaseVal().appendItem(l);        
+           text = elt.getOwnerDocument().getElementById('test72_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+        }
+        function setAttribute(evt,xList) 
+        {        
+           var elt = evt.target;
+           var points = elt.getX().getBaseVal();
+           nb = points.getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test81_text');        
+           text.getFirstChild().appendData(" "+nb+" x");
+
+           elt.setAttributeNS(null,"x",xList);
+
+           nb = points.getNumberOfItems();        
+           text = elt.getOwnerDocument().getElementById('test82_text');        
+           text.getFirstChild().appendData(" "+nb+" x");
+        
+        }
+
+        function setAttribute2(evt,xList) 
+        {        
+           var elt = evt.target;
+           var points = elt.getX().getBaseVal();
+           nb = points.getItem(0);        
+           var text = elt.getOwnerDocument().getElementById('test91_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+
+           elt.setAttributeNS(null,"x",xList);
+
+           text = elt.getOwnerDocument().getElementById('test92_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+        
+        }
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -148.27586 -91.37931)">
+     <g>
+       <!-- onload="getNumberOfItems(evt)" -->
+       <text x="180" y="160" font-size="11">getNumberOfItems</text>
+       <text class="testshadow" x="180 200 205 220" y="240">SVGLengthList</text>
+       <text class="test" x="180 200 205 220" y="220" 
+             onload="getNumberOfItems(evt)"
+        >SVGLengthList</text>
+       <text x="160" font-size="9" y="290" id="test1_text">
+          text with
+       </text>
+     </g>
+     <g transform="translate(150,0)">
+        <!-- onload="clear(evt)" -->
+       <text x="180" y="160" font-size="11">clear</text>
+       <text class="testshadow" x="180 200 205 220" y="240">SVGLengthList</text>
+       <g transform="translate(180,0)">
+       <text class="test" x="180 200 205 220" y="220" 
+             onload="clear(evt)"
+        >SVGLengthList</text>        
+       </g>
+
+       <text x="160" font-size="9" y="290" id="test2_text">
+          text with
+       </text>
+     </g>
+
+     <g transform="translate(300,0)">
+        <!-- onload="getItem(evt)" -->
+        <text x="180" y="160" font-size="11" >getItem</text>
+
+       <text class="testshadow" x="180 200 205 220" y="240">SVGLengthList</text>
+       <text class="test" x="180 200 205 220" y="220"
+             onload="getItem(evt)"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="290" id="test3_text">
+        first point
+     </text>
+     </g>
+     <g transform="translate(0,150)" >
+        <!-- onload="insertItemBefore(evt)" -->
+        <text x="180" y="160" font-size="11"  >insertItemBefore</text>
+
+       <text class="testshadow" x="180 200 205 220" y="240">SVGLengthList</text>
+       <text class="test" x="180 200 205 220" y="220"
+             onload="insertItemBefore(evt,1,195)"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        inserted point
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="replaceItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >replaceItem</text>
+
+       <text class="testshadow" x="180 200 205 220" y="240">SVGLengthList</text>
+       <text class="test" x="180 200 205 220" y="220"
+             onload="replaceItem(evt,2,6,6)"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        replaced point
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="removeItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >removeItem</text>
+
+       <text class="testshadow" x="180 200 205 220" y="240">SVGLengthList</text>
+       <text class="test" x="180 200 205 220" y="220"
+             onload="removeItem(evt,0)"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="290"  id="test6_text">
+        removed point
+     </text>
+    </g>
+
+     <g transform="translate(0,300)" >
+        <!-- onload="initialize/appendItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >initialize/appendItem</text>
+
+       <text class="testshadow" x="180 200 205 220" y="240">SVGLengthList</text>
+       <text class="test" x="180 200 205 220" y="220"
+             onload="initializeAppendItem(evt,190,195)"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="275"  id="test71_text">
+        intialized point 
+     </text>
+     <text x="160" font-size="9" y="285"  id="test72_text">
+        appended point
+     </text>
+    </g>
+
+     <g transform="translate(150,300)" >
+        <!-- onload="setAttribute(evt)" -->
+        <text x="180" y="160" font-size="11"  >setAttribute</text>
+
+       <text class="testshadow" x="180 200 205 220" y="240">SVGLengthList</text>
+       <text class="test" x="180 200 205 220" y="220"
+             onload="setAttribute(evt,'170 171 172 173 174 175')"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="275"  id="test81_text">
+        before
+     </text>
+     <text x="160" font-size="9" y="285"  id="test82_text">
+        after
+     </text>
+    </g>
+
+     <g transform="translate(300,300)" >
+        <!-- onload="setAttribute2(evt)" -->
+        <text x="180" y="160" font-size="11"  >setAttribute2</text>
+
+       <text class="testshadow" x="180 200 205 220" y="240">SVGLengthList</text>
+       <text class="test" x="180 200 205 220" y="220"
+             onload="setAttribute2(evt,'170 171 172 173 174 175')"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="275"  id="test91_text">
+        point 0 before
+     </text>
+     <text x="160" font-size="9" y="285"  id="test92_text">
+        point 0 after
+     </text>
+    </g>
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/text_xlist2.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/text_xlist2.svg
new file mode 100644
index 0000000..fd08806
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/text_xlist2.svg
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+--><!--      ======================================================================      -->
+<!--      Modification of a x attributes                                        -->
+<!--                                                                                  -->
+<!--      @author nicolas socheleau bitflash com                                      -->
+<!--      @version $Id: text_xlist2.svg 475477 2006-11-15 22:44:28Z cam $      -->
+<!--      ======================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>&lt;text&gt; x attribute &apos;onload&apos;</title>
+  <style type="text/css"><![CDATA[
+        .test { fill:orange; font-size:16 }
+        .testshadow { fill:#bbb; font-size:16  }
+  ]]></style>
+  <text x="50%" y="45" class="title">&lt;text&gt; getX() in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[    
+        function getNumberOfItems(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getX().getBaseVal().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" "+nb+" x");    
+        }
+
+        function insertItemBefore(evt,fromIndex,index) 
+        {        
+           var elt = evt.target;        
+           lengthProvider = elt.getOwnerDocument().getElementById('test1');
+           l = lengthProvider.getX().getBaseVal().getItem(fromIndex);
+           nb = elt.getX().getBaseVal().insertItemBefore(l,index);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function replaceItem(evt,fromIndex,index) 
+        {        
+           var elt = evt.target;        
+           lengthProvider = elt.getOwnerDocument().getElementById('test1');
+           l = lengthProvider.getX().getBaseVal().getItem(fromIndex);
+           nb = elt.getX().getBaseVal().replaceItem(l,index);        
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+
+        function initializeAppendItem(evt,fromIndex1,fromIndex2) 
+        {        
+           var elt = evt.target;        
+           lengthProvider = elt.getOwnerDocument().getElementById('test1');
+           l = lengthProvider.getX().getBaseVal().getItem(fromIndex1);
+           nb = elt.getX().getBaseVal().initialize(l);        
+           var text = elt.getOwnerDocument().getElementById('test71_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+           l = lengthProvider.getX().getBaseVal().getItem(fromIndex2);
+           nb = elt.getX().getBaseVal().appendItem(l);        
+           text = elt.getOwnerDocument().getElementById('test72_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+        }
+
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -148.27586 -91.37931)">
+     <g>
+       <!-- onload="getNumberOfItems(evt)" -->
+       <text x="180" y="160" font-size="11">getNumberOfItems</text>
+       <text class="testshadow" x="180 6cm 205px 60% 180" y="240">SVGLengthList</text>
+       <text class="test" id="test1" x="180 6cm 205px 60% 180" y="220" 
+             onload="getNumberOfItems(evt)"
+        >SVGLengthList</text>
+       <text x="160" font-size="9" y="290" id="test1_text">
+          text with
+       </text>
+     </g>
+
+     <g transform="translate(0,150)" >
+        <!-- onload="insertItemBefore(evt)" -->
+        <text x="180" y="160" font-size="11"  >insertItemBefore</text>
+
+       <text class="testshadow" x="180 200 205 220" y="240">SVGLengthList</text>
+       <text class="test" x="180 200 205 220" y="220"
+             onload="insertItemBefore(evt,1,0)"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        inserted point
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="replaceItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >replaceItem</text>
+
+       <text class="testshadow" x="180 200 205 220" y="240">SVGLengthList</text>
+       <text class="test" x="180 200 205 220" y="220"
+             onload="replaceItem(evt,2,1)"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        replaced point
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="removeItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >removeItem</text>
+
+       <text class="testshadow" x="180 200 205 220" y="240">SVGLengthList</text>
+       <text class="test" x="180 200 205 220" y="220"
+             onload="initializeAppendItem(evt,0,0)"
+        >SVGLengthList</text>        
+
+     <text x="160" font-size="9" y="275"  id="test71_text">
+        intialized point 
+     </text>
+     <text x="160" font-size="9" y="285"  id="test72_text">
+        appended point
+     </text>
+    </g>
+
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/text_ylist1.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/text_ylist1.svg
new file mode 100644
index 0000000..605c059
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/text_ylist1.svg
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+--><!--      ======================================================================      -->
+<!--      Modification of a x attributes                                        -->
+<!--                                                                                  -->
+<!--      @author nicolas socheleau bitflash com                                      -->
+<!--      @version $Id: text_ylist1.svg 475477 2006-11-15 22:44:28Z cam $      -->
+<!--      ======================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>&lt;text&gt; y attribute &apos;onload&apos;</title>
+  <style type="text/css"><![CDATA[
+        .test { fill:orange; font-size:16 }
+        .testshadow { fill:#bbb; font-size:16  }
+  ]]></style>
+  <defs>
+     <text id="myText">SVGLengthList</text>
+  </defs>
+  <text x="50%" y="45" class="title">&lt;text&gt; getY() in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[    
+        function getNumberOfItems(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getY().getBaseVal().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" "+nb+" y");    
+        }
+        function clear(evt) 
+        {        
+           var elt = evt.target;
+           elt.getY().getBaseVal().clear()
+           nb = elt.getY().getBaseVal().getNumberOfItems();                
+           var text = elt.getOwnerDocument().getElementById('test2_text');        
+           text.getFirstChild().appendData(" "+nb+" y");    
+        }
+        function getItem(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getY().getBaseVal().getItem(0);        
+           var text = elt.getOwnerDocument().getElementById('test3_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function insertItemBefore(evt,index,y) 
+        {        
+           var elt = evt.target;        
+           l = elt.getOwnerDocument().getDocumentElement().createSVGLength();
+           l.setValue(y);
+           nb = elt.getY().getBaseVal().insertItemBefore(l,index);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function replaceItem(evt,index,unit,y) 
+        {        
+           var elt = evt.target;        
+           l = elt.getOwnerDocument().getDocumentElement().createSVGLength();
+           l.newValueSpecifiedUnits(unit,y);
+
+           nb = elt.getY().getBaseVal().replaceItem(l,index);        
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function removeItem(evt,index) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getY().getBaseVal().removeItem(index);        
+           var text = elt.getOwnerDocument().getElementById('test6_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function initializeAppendItem(evt,y1,y2) 
+        {        
+           var elt = evt.target;        
+           l = elt.getOwnerDocument().getDocumentElement().createSVGLength();
+           l.setValue(y1);
+
+           nb = elt.getY().getBaseVal().initialize(l);        
+           var text = elt.getOwnerDocument().getElementById('test71_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+           l.setValue(y2);
+
+           nb = elt.getY().getBaseVal().appendItem(l);        
+           text = elt.getOwnerDocument().getElementById('test72_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+        }
+        function setAttribute(evt,yList) 
+        {        
+           var elt = evt.target;
+           var points = elt.getY().getBaseVal();
+           nb = points.getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test81_text');        
+           text.getFirstChild().appendData(" "+nb+" y");
+
+           elt.setAttributeNS(null,"y",yList);
+
+           nb = points.getNumberOfItems();        
+           text = elt.getOwnerDocument().getElementById('test82_text');        
+           text.getFirstChild().appendData(" "+nb+" y");
+        
+        }
+
+        function setAttribute2(evt,yList) 
+        {        
+           var elt = evt.target;
+           var points = elt.getY().getBaseVal();
+           nb = points.getItem(0);        
+           var text = elt.getOwnerDocument().getElementById('test91_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+
+           elt.setAttributeNS(null,"y",yList);
+
+           text = elt.getOwnerDocument().getElementById('test92_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+        
+        }
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -148.27586 -91.37931)">
+     <g>
+       <!-- onload="getNumberOfItems(evt)" -->
+       <text x="180" y="160" font-size="11">getNumberOfItems</text>
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tref xlink:href="#myText" x="160" y="220 210 230 220"></tref></text>
+       </g>
+       <text class="test"><tref xlink:href="#myText" x="160" y="220 210 230 220"
+             onload="getNumberOfItems(evt)"
+        ></tref></text>
+       <text x="160" font-size="9" y="290" id="test1_text">
+          text with
+       </text>
+     </g>
+     <g transform="translate(150,0)">
+        <!-- onload="clear(evt)" -->
+       <text x="180" y="160" font-size="11">clear</text>
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tref xlink:href="#myText" x="160" y="220 210 230 220"></tref></text>
+       </g>
+       <g transform="translate(0,220)">
+       <text class="test" ><tref xlink:href="#myText" x="160" y="220 210 230 220"
+             onload="clear(evt)"
+        ></tref></text>        
+       </g>
+
+       <text x="160" font-size="9" y="290" id="test2_text">
+          text with
+       </text>
+     </g>
+
+     <g transform="translate(300,0)">
+        <!-- onload="getItem(evt)" -->
+        <text x="180" y="160" font-size="11" >getItem</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tref xlink:href="#myText" x="160" y="220 210 230 220"></tref></text>
+       </g>
+       <text class="test"><tref xlink:href="#myText" x="160" y="220px 210 230 220"
+             onload="getItem(evt)"
+        ></tref></text>        
+
+     <text x="160" font-size="9" y="290" id="test3_text">
+        first point
+     </text>
+     </g>
+     <g transform="translate(0,150)" >
+        <!-- onload="insertItemBefore(evt)" -->
+        <text x="180" y="160" font-size="11"  >insertItemBefore</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tref xlink:href="#myText" x="160" y="220 210 230 220"></tref></text>
+       </g>
+       <text class="test"><tref xlink:href="#myText" x="160" y="220 210 230 220"
+             onload="insertItemBefore(evt,1,195)"
+        ></tref></text>        
+
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        inserted point
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="replaceItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >replaceItem</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tref xlink:href="#myText" x="160" y="220 210 230 220"></tref></text>
+       </g>
+       <text class="test"><tref xlink:href="#myText" x="160" y="220 210 230 220"
+             onload="replaceItem(evt,2,6,6)"
+        ></tref></text>        
+
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        replaced point
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="removeItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >removeItem</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tref xlink:href="#myText" x="160" y="220 210 230 220"></tref></text>
+       </g>
+       <text class="test"><tref xlink:href="#myText" x="160" y="220 210 230 220"
+             onload="removeItem(evt,0)"
+        ></tref></text>        
+
+     <text x="160" font-size="9" y="290"  id="test6_text">
+        removed point
+     </text>
+    </g>
+
+     <g transform="translate(0,300)" >
+        <!-- onload="initialize/appendItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >initialize/appendItem</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tref xlink:href="#myText" x="160" y="220 210 230 220"></tref></text>
+       </g>
+       <text class="test"><tref xlink:href="#myText" x="160" y="220 210 230 220"
+             onload="initializeAppendItem(evt,190,195)"
+        ></tref></text>        
+
+     <text x="160" font-size="9" y="275"  id="test71_text">
+        intialized point 
+     </text>
+     <text x="160" font-size="9" y="285"  id="test72_text">
+        appended point
+     </text>
+    </g>
+
+     <g transform="translate(150,300)" >
+        <!-- onload="setAttribute(evt)" -->
+        <text x="180" y="160" font-size="11"  >setAttribute</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tref xlink:href="#myText" x="160" y="220 210 230 220"></tref></text>
+       </g>
+       <text class="test"><tref xlink:href="#myText" x="160" y="220 210 230 220"
+             onload="setAttribute(evt,'180 181 182 183 184 185')"
+        ></tref></text>        
+
+     <text x="160" font-size="9" y="275"  id="test81_text">
+        before
+     </text>
+     <text x="160" font-size="9" y="285"  id="test82_text">
+        after
+     </text>
+    </g>
+
+     <g transform="translate(300,300)" >
+        <!-- onload="setAttribute2(evt)" -->
+        <text x="180" y="160" font-size="11"  >setAttribute2</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tref xlink:href="#myText" x="160" y="220 210 230 220"></tref></text>
+       </g>
+       <text class="test"><tref xlink:href="#myText" x="160" y="220 210 230 220"
+             onload="setAttribute2(evt,'180 181 182 183 184 185')"
+        ></tref></text>        
+
+     <text x="160" font-size="9" y="275"  id="test91_text">
+        point 0 before
+     </text>
+     <text x="160" font-size="9" y="285"  id="test92_text">
+        point 0 after
+     </text>
+    </g>
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/text_ylist2.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/text_ylist2.svg
new file mode 100644
index 0000000..2ba1acb
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/text_ylist2.svg
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+--><!--      ======================================================================      -->
+<!--      Modification of a x attributes                                        -->
+<!--                                                                                  -->
+<!--      @author nicolas socheleau bitflash com                                      -->
+<!--      @version $Id: text_ylist2.svg 475477 2006-11-15 22:44:28Z cam $      -->
+<!--      ======================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>&lt;text&gt; y attribute &apos;onload&apos;</title>
+  <style type="text/css"><![CDATA[
+        .test { fill:orange; font-size:16 }
+        .testshadow { fill:#bbb; font-size:16  }
+  ]]></style>
+  <defs>
+     <text id="myText">SVGLengthList</text>
+  </defs>
+  <text x="50%" y="45" class="title">&lt;text&gt; getY() in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[    
+        function getNumberOfItems(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getY().getBaseVal().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" "+nb+" y");    
+        }
+
+        function insertItemBefore(evt,fromIndex,index) 
+        {        
+           var elt = evt.target;        
+           lengthProvider = elt.getOwnerDocument().getElementById('test1');
+           l = lengthProvider.getY().getBaseVal().getItem(fromIndex);
+           nb = elt.getY().getBaseVal().insertItemBefore(l,index);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+        function replaceItem(evt,fromIndex,index) 
+        {        
+           var elt = evt.target;        
+           lengthProvider = elt.getOwnerDocument().getElementById('test1');
+           l = lengthProvider.getY().getBaseVal().getItem(fromIndex);
+           nb = elt.getY().getBaseVal().replaceItem(l,index);        
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");    
+        }
+
+        function initializeAppendItem(evt,fromIndex1,fromIndex2) 
+        {        
+           var elt = evt.target;        
+           lengthProvider = elt.getOwnerDocument().getElementById('test1');
+           l = lengthProvider.getY().getBaseVal().getItem(fromIndex1);
+           nb = elt.getY().getBaseVal().initialize(l);        
+           var text = elt.getOwnerDocument().getElementById('test71_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+           l = lengthProvider.getY().getBaseVal().getItem(fromIndex2);
+           nb = elt.getY().getBaseVal().appendItem(l);        
+           text = elt.getOwnerDocument().getElementById('test72_text');        
+           text.getFirstChild().appendData(" ("+nb.getValueAsString()+")");
+        }
+
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -148.27586 -91.37931)">
+     <g>
+       <!-- onload="getNumberOfItems(evt)" -->
+       <text x="180" y="160" font-size="11">getNumberOfItems</text>
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tref xlink:href="#myText" x="160" y="220 210 230 220"></tref></text>
+       </g>
+       <text class="test"><tref id="test1" xlink:href="#myText" x="160" y="220 210 230 220 220"
+             onload="getNumberOfItems(evt)"
+        ></tref></text>
+       <text x="160" font-size="9" y="290" id="test1_text">
+          text with
+       </text>
+     </g>
+
+     <g transform="translate(0,150)" >
+        <!-- onload="insertItemBefore(evt)" -->
+        <text x="180" y="160" font-size="11"  >insertItemBefore</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tref xlink:href="#myText" x="160" y="220 210 230 220"></tref></text>
+       </g>
+       <text class="test"><tref xlink:href="#myText" x="160" y="220 210 230 220"
+             onload="insertItemBefore(evt,1,0)"
+        ></tref></text>
+
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        inserted point
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="replaceItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >replaceItem</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tref xlink:href="#myText" x="160" y="220 210 230 220"></tref></text>
+       </g>
+       <text class="test"><tref xlink:href="#myText" x="160" y="220 210 230 220"
+             onload="replaceItem(evt,2,1)"
+        ></tref></text>
+
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        replaced point
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="removeItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >removeItem</text>
+
+       <g transform="translate(0,30)">
+         <text class="testshadow"><tref xlink:href="#myText" x="160" y="220 210 230 220"></tref></text>
+       </g>
+       <text class="test"><tref xlink:href="#myText" x="160" y="220 210 230 220"
+             onload="initializeAppendItem(evt,0,0)"
+        ></tref></text>
+
+     <text x="160" font-size="9" y="275"  id="test71_text">
+        intialized point 
+     </text>
+     <text x="160" font-size="9" y="285"  id="test72_text">
+        appended point
+     </text>
+    </g>
+
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/textcontent/missing-glpyh.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/textcontent/missing-glpyh.svg
new file mode 100644
index 0000000..c38d35a
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/textcontent/missing-glpyh.svg
@@ -0,0 +1,242 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Draws <text> elements using SVG fonts with glyphs                         -->
+<!-- using the d attribute. Tests glyph layout by                              -->
+<!-- comparing equivalent SVG for the <text> element, both                     -->
+<!-- on a grid and as a mask.                                                  -->
+<!-- Kerning is also tested.                                                   -->
+<!--                                                                           -->
+<!-- @author dean jackson cmis csiro au                                        -->
+<!-- @version $Id: missing-glpyh.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500" onload="show(evt,'texts')">
+<title>Missing Glyph</title>
+
+<script><![CDATA[
+    var svgns = "http://www.w3.org/2000/svg";;
+
+    function show(evt,parent){
+
+       var doc = evt.target.getOwnerDocument();
+
+       var parentElem = doc.getElementById(parent);
+
+       processChildren(parentElem);
+
+    }
+
+    function processChildren(parent){
+        
+        var child = parent.getFirstChild();
+        
+        while ( child != null ){
+
+          if ( child.getNodeType() == child.ELEMENT_NODE ){
+              
+              if ( child.getLocalName() == "text" ){
+                 addAllCharactersBBox(child)
+              }
+              else{
+                 if ( child.getLocalName() != "defs" ){
+                    processChildren(child);
+                 }
+              }
+          }
+          child = child.getNextSibling();
+        }
+    }
+
+    function addAllCharactersBBox(textElement){
+
+      var doc = textElement.getOwnerDocument();
+
+      var bboxgroup = doc.getElementById("bboxes");
+
+      if ( bboxgroup == null ){
+        
+        bboxgroup = doc.createElementNS(svgns,"g");
+        bboxgroup.setAttributeNS(null,"id","bboxes");
+        bboxgroup.setAttributeNS(null,"style","fill:none;stroke:red;stroke-width:0.2%");
+        doc.getDocumentElement().appendChild(bboxgroup);
+      }
+
+      count = textElement.getNumberOfChars();
+
+      for( i = 0 ; i < count ; i++ ){
+        var newRect =
+            doc.createElementNS(textElement.SVG_NAMESPACE_URI,textElement.SVG_RECT_TAG);
+
+        var characterRect = textElement.getExtentOfChar(i);
+
+        newRect.setAttributeNS(null,newRect.SVG_X_ATTRIBUTE,characterRect.getX());
+        newRect.setAttributeNS(null,newRect.SVG_Y_ATTRIBUTE,characterRect.getY());
+        newRect.setAttributeNS(null,newRect.SVG_WIDTH_ATTRIBUTE,characterRect.getWidth());
+        newRect.setAttributeNS(null,newRect.SVG_HEIGHT_ATTRIBUTE,characterRect.getHeight());
+
+        bboxgroup.appendChild(newRect);
+      }      
+    }
+
+]]></script>
+
+        <text class="title" x="50%" y="50">Missing Glyphs</text>
+        <defs>
+
+            <pattern id="gridPattern" viewBox="-5 -5 10 10" x="-5" y="-5" width="10" height="10"
+                     patternContentUnits="userSpaceOnUse" patternUnits="userSpaceOnUse">
+                <g stroke="rgb(225, 225, 245)" stroke-width="1">
+                    <line x1="0" y1="-6" x2="0" y2="6" />
+                    <line x1="-6" y1="0" x2="6" y2="0" />
+                </g>
+            </pattern>
+
+            <!-- ============================= -->
+            <!-- SVG Font Definition           -->
+            <!-- ============================= -->
+     
+            <!-- This is an encoding of Microsoft's Comic Sans font -->
+            <!-- in SVG format (as allowed in the license). For the -->
+            <!-- true type version of this font, refer to           -->
+            <!-- http://www.microsoft.com/truetype                  -->
+            <!-- Converted using SteadyState's TrueType/SVG font    -->
+            <!-- toolkit (http://www.steadystate.com/svg            -->
+            <!-- Horizontal Kerning has been added to the font for  -->
+            <!-- testing purposes.                                  -->
+
+            <font horiz-adv-x="959">
+            <font-face
+             font-family="SVGComic"            
+             units-per-em="2048"
+             panose-1="3 15 7 2 3 3 2 2 2 4"
+             ascent="2257"
+             descent="597"/>
+           <missing-glyph horiz-adv-x="1024" d="M128 0V1638H896V0H128zM256 128H768V1510H256V128z"> 
+           <path fill="red" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </missing-glyph>
+
+           <!-- "a" glyph -->
+           <glyph id="a" unicode="a" glyph-name="a" horiz-adv-x="1048" d="M920 -66Q901 -66 851 -22Q806 19 
784 51Q688 -1 615 -27T493 -54Q259 -54 152 78Q51 202 51 458Q51 700 217 872T615 1044Q702 1044 810 999Q946 943 
946 864Q946 837 926 816Q916 778 911 691T904 468Q903
+344 921 272Q931 228 984 96Q991 78 1007 43L1013 26Q1013 -14 985 -40T920 -66zM712 629Q712 672 717 722T734 
830Q697 849 671 858T628 867Q473 867 361 741T248 449Q248 285 306 203T480 121Q576 121 643 156Q679 175 744 
232Q712 497 712 629z"> 
+           <path fill="blue" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "b" glyph -->
+           <glyph id="b" unicode="b" glyph-name="b" horiz-adv-x="1215" d="M606 -42Q453 -42 328 18Q296 -30 
250 -30Q212 -30 186 -4T159 63Q159 89 161 140T164 217Q164 323 159 534T153 852Q153 925 154 1128T155 1406Q155 
1466 180 1514Q213 1575 271 1575Q346 1575 346 1488Q346
+1474 341 1447T336 1406L333 1187L331 932Q418 991 496 1020T644 1050Q859 1050 993 885Q1119 730 1119 504Q1119 
276 972 117T606 -42zM644 861Q562 861 476 815Q434 792 332 716L330 543L331 387L332 223Q380 201 467 167Q529 148 
606 148Q751 148 844 250T937
+504Q937 653 862 753Q781 861 644 861z"> 
+           <path fill="green" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "c" glyph -->
+           <glyph id="c" unicode="c" glyph-name="c" horiz-adv-x="1052" d="M591 -63Q386 -63 249 61Q105 191 
105 404Q105 607 240 823Q390 1063 578 1063Q676 1063 797 1017Q950 958 950 873Q950 835 925 806T863 776Q834 776 
813 793T771 828Q712 875 578 875Q476 875 376 693Q285
+526 285 404Q285 272 375 196Q459 125 591 125Q651 125 719 157L835 219Q865 235 878 235Q915 235 942 206T969 
138Q969 65 815 -3Q680 -63 591 -63z"> 
+           <path fill="orange" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "d" glyph -->
+           <glyph id="d" unicode="d" glyph-name="d" horiz-adv-x="1203" d="M1060 883Q1048 736 1048 589Q1048 
256 1079 86Q1081 72 1081 63Q1081 23 1053 -3T988 -29Q926 -29 897 61Q825 8 748 -19T586 -46Q379 -46 243 92Q103 
233 103 454Q103 721 244 882T612 1043Q728 1043
+791 1007L885 938Q899 1359 918 1505Q931 1594 1009 1594Q1100 1594 1100 1497Q1100 1358 1060 883zM616 857Q448 
857 364 758T280 458Q280 329 371 236T586 143Q670 143 728 174Q762 192 839 257Q854 270 868 288L865 461L866 
577L868 695Q830 776 767 816T616 857z"> 
+           <path fill="cyan" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "e" glyph -->
+           <glyph id="e" unicode="e" glyph-name="e" horiz-adv-x="1122" d="M606 -46Q380 -46 240 67Q87 192 87 
417Q87 677 213 853Q350 1045 579 1045Q745 1045 850 989Q979 920 979 777Q979 677 866 595Q816 559 654 483L272 
302Q328 219 411 177T606 135Q675 135 768 161Q886
+194 920 247T993 301Q1028 301 1055 275T1083 213Q1083 102 904 22Q751 -46 606 -46zM579 865Q457 865 376 771T255 
486L562 632Q743 720 820 785Q734 865 579 865z"> 
+           <path fill="magenta" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 
L256,1024z"/> 
+           </glyph>
+
+           <!-- "f" glyph -->
+           <glyph id="f" unicode="f" glyph-name="f" horiz-adv-x="1041" d="M811 1406Q569 1406 540 1070L537 
1008Q707 1020 757 1020Q916 1020 916 920Q916 847 838 833Q804 827 759 828T528 815L520 587Q520 525 524 401T528 
216Q528 26 506 -80Q489 -160 413 -160Q372 -160
+343 -134T314 -67Q314 -59 316 -47Q337 83 337 236L334 509V799Q209 789 176 789Q75 789 75 886Q75 985 250 990L346 
993Q349 1049 361 1145Q387 1367 473 1472Q577 1599 798 1599Q941 1599 941 1502Q941 1406 811 1406z"> 
+           <path fill="purple" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "g" glyph -->
+           <glyph id="g" unicode="g" glyph-name="g" horiz-adv-x="1087" d="M962 431L939 95Q933 -105 898 
-232Q853 -394 754 -471Q634 -564 407 -564Q274 -564 184 -546Q58 -521 58 -442Q58 -353 145 -353Q181 -353 265 
-370T451 -386Q643 -383 716 -200Q764 -78 767 175Q713
+75 639 25T468 -25Q287 -25 174 98T60 419Q60 689 215 854Q375 1024 651 1024Q744 1024 807 1000T903 928Q1010 925 
1010 809Q1010 738 989 619Q966 481 962 431zM641 864Q451 864 347 733Q254 615 254 433Q254 288 309 215T474 
142Q575 142 670 256Q756 361 768
+464Q789 572 813 803Q773 834 730 849T641 864z"> 
+           <path fill="gray" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "u" glyph -->
+           <glyph unicode="u" glyph-name="u" horiz-adv-x="1065" d="M955 584Q955 512 956 368T957 152Q957 130 
960 85T964 18Q964 -25 935 -52T864 -80Q787 -80 766 15Q641 -50 478 -50Q347 -50 261 8Q166 72 148 195Q109 460 109 
667Q109 804 139 979Q153 1066 234 1066Q277
+1066 306 1039T335 968Q335 922 321 821T306 667Q306 500 317 381T350 190Q383 172 415 163T478 153Q612 153 761 
196L760 399L758 593Q758 809 777 968Q788 1060 874 1060Q917 1060 946 1032T973 962L955 584z"> 
+           <path fill="khaki" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "v" glyph -->
+           <glyph unicode="v" glyph-name="v" horiz-adv-x="996" d="M600 52Q597 -40 509 -40Q436 -40 403 46L250 
452L72 911Q62 937 62 957Q62 998 93 1027T165 1056Q225 1056 251 995L505 296Q580 456 694 760Q721 840 779 986Q810 
1050 867 1050Q908 1050 939 1021T970
+952Q970 914 805 524L600 52z"> 
+           <path fill="yellow" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "w" glyph -->
+           <glyph unicode="w" glyph-name="w" horiz-adv-x="1401" d="M1336 895Q1258 569 1132 158Q1104 67 1039 
-29Q1004 -82 944 -81Q835 -79 774 190Q754 276 733 424L700 647L618 456L466 43Q453 5 428 -15Q398 -73 332 -75Q256 
-78 185 223Q149 378 113 643L89 793Q76
+883 76 944Q76 986 105 1013T177 1041Q253 1041 271 958Q284 899 292 812L307 665L366 216Q477 524 596 926Q629 
1037 711 1037Q790 1037 818 913Q844 796 883 553Q923 301 954 160L1027 432L1156 977Q1171 1038 1242 1038Q1284 
1038 1315 1010T1346 941Q1346 936
+1336 895z"> 
+           <path fill="pink" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "x" glyph -->
+           <glyph unicode="x" glyph-name="x" horiz-adv-x="1209" d="M1058 858L912 721L734 544L1060 118Q1085 
86 1085 55Q1085 16 1055 -14T987 -44Q949 -44 918 -7Q826 100 594 405L399 204Q340 151 227 39Q195 3 158 3Q120 3 
91 33T61 102Q61 133 86 165Q114 202 173
+254Q242 315 264 338L477 561L346 750Q267 863 208 915Q170 949 170 989Q170 1029 198 1060T264 1091Q323 1091 442 
937L615 698L811 878Q933 993 976 1058Q1008 1105 1052 1105Q1091 1105 1121 1076T1151 1009Q1151 954 1058 858z"> 
+           <path fill="cornflowerblue" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 
L256,1024z"/> 
+           </glyph>
+
+           <!-- "y" glyph -->
+           <glyph unicode="y" glyph-name="y" horiz-adv-x="1066" d="M1011 892L665 144Q537 -129 469 -313L403 
-507Q377 -579 313 -579Q271 -579 241 -552T210 -483Q210 -383 426 96L68 785L23 858Q-4 904 -4 935Q-4 976 27 
1007T98 1038Q144 1038 169 1003Q339 767 534
+331L682 676Q762 855 836 984Q868 1040 920 1040Q961 1040 992 1011T1024 942Q1024 920 1011 892z">
+           <path fill="brown" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <!-- "z" glyph -->
+           <glyph unicode="z" glyph-name="z" horiz-adv-x="1102" d="M964 809Q875 702 736 499Q575 263 500 
165Q605 170 683 170Q722 170 799 155T915 140Q959 140 986 112T1014 39Q1014 -6 987 -34T915 -62Q876 -62 799 
-47T683 -32Q458 -32 256 -73Q235 -77 219 -77Q122
+-77 122 8Q122 58 172 104Q433 340 740 839Q607 831 547 831Q399 831 243 854Q154 867 154 953Q154 997 181 
1026T249 1056Q298 1056 397 1045T547 1033Q615 1033 751 1042T955 1052Q1040 1052 1040 982Q1040 901 964 809z"> 
+           <path fill="aqua" fill-opacity="0.5" stroke="none" d="M256,256 L768,256 L768,1024 L256,1024z"/> 
+           </glyph>
+
+           <hkern g1="u" g2="v" k="-100"/>
+           <hkern g1="v" g2="w" k="-200"/>
+           <hkern g1="w" g2="x" k="100"/>
+           <hkern g1="x" g2="y" k="200"/>
+           <hkern g1="y" g2="z" k="-500"/>
+
+           </font>
+        </defs>
+
+   <g id="texts" font-size="24" text-anchor="middle">
+      <text x="50%" y="200"
+       >a&#06666;b&#06666;c&#06666;d&#06666;e&#06666;f&#06666;g&#06666;</text>
+
+      <text x="50%" y="250" font-family="SVGComic" 
+       >a&#06666;b&#06666;c&#06666;d&#06666;e&#06666;f&#06666;g&#06666;</text>
+
+      <text x="50%" y="300" font-family="SVGComic"
+       >&#06666;abcdefg</text>
+   </g>
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/textcontent/numberOfChars.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/textcontent/numberOfChars.svg
new file mode 100644
index 0000000..10b9ae2
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/textcontent/numberOfChars.svg
@@ -0,0 +1,354 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   
+        http://www.apache.org/licenses/LICENSE-2.0
+   
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!-- ========================================================================= -->
+<!-- Tests various text on a path                                              -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                      -->
+<!-- @version $Id: numberOfChars.svg 475477 2006-11-15 22:44:28Z cam $        -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg";
+xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" height="600"
+viewBox="0 0 450 600" onmouseover="showNumberOfChars(evt)" >
+<title>number of chars</title>
+
+    <style type="text/css"><![CDATA[
+      .description{
+         fill:gray;
+         fill-opacity:0.6;
+      }        
+      filename{
+         fill-opacity:1.0;
+      }
+    ]]></style>
+
+    <defs>
+      <path id="arrow" d="M-5 0 L 5 0 M 0 -5 L 0 5z" />
+      <line stroke-width="3" id="line" x1="-5" y1="0" x2="5" y2="0" />
+    </defs>
+
+<script><![CDATA[
+  var interval;
+  var currentFile;
+  var display;
+  var svgns   = "http://www.w3.org/2000/svg";;
+  var xlinkns = "http://www.w3.org/1999/xlink";;
+  function showNumberOfChars(evt)
+{
+  var elt = evt.target;
+
+  while (( elt != null ) && ( elt.getLocalName() != "text" )){
+    elt = elt.getParentNode();
+  }
+
+  if ( (elt != null) && ( elt.getLocalName() == "text" ) 
+       && !elt.hasAttributeNS(null,"class") )
+    {
+      var doc = elt.getOwnerDocument();
+
+      var t = doc.getElementById('numberOfChars');
+
+      var textnode = t.getFirstChild();
+
+      textnode.setData("Node has "+elt.getNumberOfChars()+" characters");
+
+      t        = doc.getElementById("extraInfo");
+      textNode = t.getFirstChild();
+      textNode.setData("");
+
+      startCharactersBBox(elt);
+    }
+}
+
+  function startCharactersBBox(elt){
+
+    rendering = elt;
+    currentIndex = 0;
+    display = 0 ;
+    run();
+
+    if ( interval == null ){
+      interval = setInterval('run()',500);
+    }      
+  }
+
+  function run(){
+    
+
+    var doc = rendering.getOwnerDocument();
+    var group = doc.getElementById('bboxGroup');
+
+    while (group.hasChildNodes() ){
+      group.removeChild(group.getFirstChild());
+    }
+
+    if ( display == 0 ) {
+      showCharactersBBox(rendering,currentIndex);
+    }
+    if ( display == 1 ) {
+      showCharactersStartPosition(rendering,currentIndex);
+      showCharactersEndPosition(rendering,currentIndex);
+    }
+    if ( display == 2 ) {
+      showRotationAngle(rendering,currentIndex);
+    }
+
+    if ( display == 3 ) {
+      showTextLength(rendering,currentIndex);
+    }
+
+    //selectAllText(rendering);
+    currentIndex++;
+    var it = doc.getElementById("charIndex");
+    var itn = it.getFirstChild();
+    itn.setData("Character: " + currentIndex);
+
+    if ( currentIndex >= rendering.getNumberOfChars() ){
+      currentIndex = 0;
+      display++;
+    }
+
+    if ( display == 4 ){
+      display = 0 ;
+      var t = doc.getElementById("extraInfo");
+      var textNode = t.getFirstChild();
+      textNode.setData("");
+    }
+    
+  }
+
+  function selectAllText(rendering){
+    rendering.selectSubString(0,rendering.getNumberOfChars());
+  }
+
+  function showCharactersBBox(elt, index) {
+    var doc = elt.getOwnerDocument();
+
+    var group = doc.getElementById('bboxGroup');
+
+    try { 
+      var box = elt.getExtentOfChar(index);
+      var mat = elt.getTransformToElement(group);
+      var root = doc.getRootElement();
+
+      var pt0  = root.createSVGPoint();
+      pt0.x = box.getX();
+      pt0.y = box.getY();
+      pt0 = pt0.matrixTransform(mat);
+
+      var pt1  = root.createSVGPoint();
+      pt1.x = box.getX()+box.getWidth();
+      pt1.y = box.getY();
+      pt1 = pt1.matrixTransform(mat);
+
+      var pt2  = root.createSVGPoint();
+      pt2.x = box.getX()+box.getWidth();
+      pt2.y = box.getY()+box.getHeight();
+      pt2 = pt2.matrixTransform(mat);
+
+      var pt3  = root.createSVGPoint();
+      pt3.x = box.getX();
+      pt3.y = box.getY()+box.getHeight();
+      pt3 = pt3.matrixTransform(mat);
+
+      var p = doc.createElementNS(svgns,"path");
+      p.setAttribute("d","M" + pt0.x + "," + pt0.y + 
+                     "L" + pt1.x + "," + pt1.y +
+                     "L" + pt2.x + "," + pt2.y +
+                     "L" + pt3.x + "," + pt3.y + "z");
+      p.setAttributeNS(null,"stroke","red");
+      group.appendChild(p);
+    } catch (e) { }
+  }
+
+  function showCharactersStartPosition(elt, index) {
+    var doc = elt.getOwnerDocument();
+    var group = doc.getElementById('bboxGroup');
+
+    try {
+      var point = elt.getStartPositionOfChar(index);
+      var mat = elt.getTransformToElement(group);
+      point = point.matrixTransform(mat);
+      var u = doc.createElementNS(svgns,"use");
+      u.setAttributeNS(null,"transform",
+                       "translate("+point.x+","+point.y+")");
+      u.setAttributeNS(xlinkns,"href","#arrow");
+      u.setAttributeNS(null,"stroke","green");
+      group.appendChild(u);
+    } catch (e) { }
+  }
+
+  function showRotationAngle(elt, index) {
+    var doc = elt.getOwnerDocument();
+    var text = doc.getElementById("extraInfo");
+    var textNode = text.getFirstChild();
+    try { 
+      var angle = elt.getRotationOfChar(index);
+
+      textNode.setData("angle : "+angle);
+
+      var group = doc.getElementById('bboxGroup');
+
+      var point1 = elt.getStartPositionOfChar(index);
+      var point2 = elt.getEndPositionOfChar(index);
+
+      var u = doc.createElementNS(svgns,"use");
+      var mat = elt.getTransformToElement(group);
+
+      point1 = point1.matrixTransform(mat);
+      point2 = point2.matrixTransform(mat);
+
+      x = ( point1.getX() + point2.getX() )/2;
+      y = ( point1.getY() + point2.getY() )/2;
+
+      u.setAttributeNS(null,"transform",
+                       "translate("+x+","+y+") rotate("+angle+")");
+      u.setAttributeNS(xlinkns,"href","#line");
+      u.setAttributeNS(null,"stroke","green");
+      group.appendChild(u);
+    } catch (e) { 
+      textNode.setData("angle : <not visible>");
+    }
+  }
+
+  function showCharactersEndPosition(elt, index) {
+    var doc = elt.getOwnerDocument();
+
+    var group = doc.getElementById('bboxGroup');
+
+    try { 
+      var point = elt.getEndPositionOfChar(index);
+      var mat = elt.getTransformToElement(group);
+      point = point.matrixTransform(mat);
+
+      var u = doc.createElementNS(svgns,"use");
+      u.setAttributeNS(null,"transform",
+                       "translate("+point.x+","+point.y+")");
+      u.setAttributeNS(xlinkns,"href","#arrow");
+      u.setAttributeNS(null,"stroke","blue");
+      group.appendChild(u);
+    } catch (e) { }
+  }
+
+  function showTextLength(elt,index) {
+    
+    var doc = elt.getOwnerDocument();
+
+    var group = doc.getElementById('bboxGroup');
+
+    try { 
+      var length = elt.getSubStringLength(0,index+1);
+      var text = doc.getElementById("extraInfo");
+      var textNode = text.getFirstChild();
+      textNode.setData("Length : "+length);
+
+      var point = elt.getStartPositionOfChar(0);
+      var mat = elt.getTransformToElement(group);
+      point = point.matrixTransform(mat);
+
+      var u = doc.createElementNS
+      (svgns,"line");
+      u.setAttributeNS(null,"x1",point.getX());
+      u.setAttributeNS(null,"y1",point.getY());
+      u.setAttributeNS(null,"x2",(point.getX()+length));
+      u.setAttributeNS(null,"y2",point.getY());
+      u.setAttributeNS(null,"stroke","red");
+      group.appendChild(u);
+    } catch (e) { }
+  }
+
+  function switchTo(evt,filename){
+    
+    if ( interval != null ){
+      clearInterval(interval);
+    }
+    interval = null;        
+
+    var doc = evt.target.getOwnerDocument();
+
+    if ( currentFile == null ){
+      currentFile = doc.getElementById('first');
+    }
+    if ( currentFile == evt.target ){
+      return;
+    }
+    currentFile.removeAttributeNS(null,'fill');
+    currentFile = evt.target;
+    currentFile.setAttributeNS(null,'fill','black');
+
+    var group = doc.getElementById('bboxGroup');
+
+    while (group.hasChildNodes() ){
+      group.removeChild(group.getFirstChild());
+    }
+    
+    var use = doc.getElementById('filename');
+    use.setAttributeNS(xlinkns,"href",filename);
+
+    var container = doc.getElementById('container');
+    container.removeChild(use);
+    container.appendChild(use);
+  }
+]]></script>
+
+     <svg id="container" x="0" y="0" width="450" height="500" viewBox="0 0 450 500" >
+        <use id="filename" xlink:href="../../text/textOnPath.svg#content" />
+
+        <g id="bboxes" fill="none" stroke="red" >
+        </g>
+
+        <g id="bboxGroup" style="fill:none;stroke-opacity:0.6">
+        </g>
+     </svg>
+
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../../batikLogo.svg#Batik_Tag_Box" />
+
+
+<text class="filename" id="numberOfChars" x="90%" y="520" 
+    style="text-anchor:end">no text selected
+</text>
+<text class="filename" id="charIndex" x="90%" y="535" style="text-anchor:end"
+    >no text selected</text>
+<text class="filename" id="extraInfo" x="90%" y="550" style="text-anchor:end"
+    >no text selected</text>
+<g fill="gray">
+<text id="first" fill="black" class="filename" x="5%" y="530" 
onclick="switchTo(evt,'../../text/textOnPath.svg#content')" >textOnPath</text>
+<text class="filename" x="5%" y="545" onclick="switchTo(evt,'../../text/textStyles.svg#testContent')" 
textStyles</text>
+<text class="filename" x="5%" y="560" onclick="switchTo(evt,'../../text/verticalText.svg#content')" 
verticalText</text>
+<text class="filename" x="5%" y="575" onclick="switchTo(evt,'../../text/textLayout.svg#testContent')" 
textLayout</text>
+<text class="filename" x="5%" y="590" onclick="switchTo(evt,'../../text/textEffect3.svg#testContent')" 
textEffect3</text>
+
+<text class="filename" x="25%" y="530" onclick="switchTo(evt,'../../fonts/fontAltGlyph.svg#content')" 
fontAltGlyph</text>
+<text class="filename" x="25%" y="545" onclick="switchTo(evt,'../../fonts/fontAltGlyph2.svg#content')" 
fontAltGlyph2</text>
+<text class="filename" x="25%" y="560" onclick="switchTo(evt,'../../fonts/fontAltGlyph3.svg#content')" 
fontAltGlyph3</text>
+<text class="filename" x="25%" y="575" onclick="switchTo(evt,'../../fonts/BatikFont.svg#content')" 
BatikFont</text>
+<text class="filename" x="25%" y="590" onclick="switchTo(evt,'../../fonts/fontDecorations.svg#content')" 
fontDecorations</text>
+
+<text class="filename" x="45%" y="545" onclick="switchTo(evt,'../../fonts/fontOnPath.svg#content')" 
fontOnPath</text>
+<text class="filename" x="45%" y="560" onclick="switchTo(evt,'../../fonts/fontGlyphsBoth.svg#content')" 
fontGlyphsBoth</text>
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/textpathProperties.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/textpathProperties.svg
new file mode 100644
index 0000000..869fdaf
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/textpathProperties.svg
@@ -0,0 +1,85 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a textPath style attributes                            -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @author nicolas socheleau bitflash com                                 -->
+<!-- @version $Id: textpathProperties.svg 475477 2006-11-15 22:44:28Z cam $                                  
                        -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;textPath&gt; CSS properties on 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;textPath&gt; CSS properties on 'onload'</text>
+
+    <script type="text/ecmascript"><![CDATA[
+        function changeStyle(evt, newValue) {
+                evt.target.setAttribute("style", newValue);
+        }
+    ]]></script>
+
+    <defs>
+        <path id="path1" transform="translate(100,100)" style="stroke:black;fill:none" d="M -100 0 C -55 15 
-45 15 0 0 C 45 -15 55 -15 100 0 C 145 15 155 15 200 0 C 245 -15 255 -15 300 0" />
+        <path id="path2" transform="translate(100,140)" style="stroke:black;fill:none" d="M -100 0 C -55 15 
-45 15 0 0  C 45 -15 55 -15 100 0 C 145 15 155 15 200 0 C 245 -15 255 -15 300 0" />
+        <path id="path3" transform="translate(100,180)" style="stroke:black;fill:none" d="M -100 0 C -55 15 
-45 15 0 0  C 45 -15 55 -15 100 0 C 145 15 155 15 200 0 C 245 -15 255 -15 300 0" />
+        <path id="path4" transform="translate(100,220)" style="stroke:black;fill:none" d="M -100 0 C -55 15 
-45 15 0 0  C 45 -15 55 -15 100 0 C 145 15 155 15 200 0 C 245 -15 255 -15 300 0" />
+        <path id="path5" transform="translate(100,260)" style="stroke:black;fill:none" d="M -100 0 C -55 15 
-45 15 0 0  C 45 -15 55 -15 100 0 C 145 15 155 15 200 0 C 245 -15 255 -15 300 0" />
+        <path id="path6" transform="translate(100,300)" style="stroke:black;fill:none" d="M -100 0 C -55 15 
-45 15 0 0 C 45 -15 55 -15 100 0 C 145 15 155 15 200 0 C 245 -15 255 -15 300 0" />
+        <path id="path7" transform="translate(100,340)" style="stroke:black;fill:none" d="M -100 0 C -55 15 
-45 15 0 0 C 45 -15 55 -15 100 0 C 145 15 155 15 200 0 C 245 -15 255 -15 300 0" />
+        <path id="path8" transform="translate(100,380)" style="stroke:black;fill:none" d="M -100 0 C -55 15 
-45 15 0 0 C 45 -15 55 -15 100 0 C 145 15 155 15 200 0 C 245 -15 255 -15 300 0" />
+        <path id="path9" transform="translate(100,420)" style="stroke:black;fill:none" d="M -100 0 C -55 15 
-45 15 0 0 C 45 -15 55 -15 100 0 C 145 15 155 15 200 0 C 245 -15 255 -15 300 0" />
+        <path id="path10" transform="translate(100,460)" style="stroke:black;fill:none" d="M -100 0 C -55 15 
-45 15 0 0 C 45 -15 55 -15 100 0 C 145 15 155 15 200 0 C 245 -15 255 -15 300 0" />
+    </defs>
+
+    <g id="test-content" style="font-size:18">
+
+     <text x="100"><textPath xlink:href="#path1" onload="changeStyle(evt, 
'font-family:Impact')">font-family:Arial</textPath></text>
+     <text x="100"><textPath xlink:href="#path2" onload="changeStyle(evt, 
'font-size:32')">font-size:32</textPath></text>
+     <text x="100"><textPath xlink:href="#path3" onload="changeStyle(evt, 
'fill:crimson')">fill:crimson</textPath></text>
+     <text x="100"><textPath xlink:href="#path4" onload="changeStyle(evt, 
'stroke:orange;font-size:18')">stroke:orange; font-size:18</textPath></text>
+     <text x="200"><textPath xlink:href="#path5" onload="changeStyle(evt, 
'text-anchor:start')">text-anchor:start</textPath></text>
+     <text x="200"><textPath xlink:href="#path6" onload="changeStyle(evt, 
'text-anchor:middle')">text-anchor:middle</textPath></text>
+     <text x="200"><textPath xlink:href="#path7" onload="changeStyle(evt, 
'text-anchor:end')">text-anchor:end</textPath></text>
+     <text x="100"><textPath xlink:href="#path8" onload="changeStyle(evt, 
'font-weight:bold')">font-weight:bold</textPath></text>
+     <text x="100"><textPath xlink:href="#path9" onload="changeStyle(evt, 
'font-style:italic')">font-style:italic</textPath></text>
+     <text x="100"><textPath xlink:href="#path10" onload="changeStyle(evt, 
'letter-spacing:10')">letter-spacing:10</textPath></text>
+
+    </g>
+<!--
+    <g>
+        <use xlink:href="#path1" />
+        <use xlink:href="#path2" />
+        <use xlink:href="#path3" />
+        <use xlink:href="#path4" />
+        <use xlink:href="#path5" />
+        <use xlink:href="#path6" />
+        <use xlink:href="#path7" />
+        <use xlink:href="#path8" />
+        <use xlink:href="#path9" />
+        <use xlink:href="#path10" />
+    </g>
+-->
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/transform.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/transform.svg
new file mode 100644
index 0000000..380fefd
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/transform.svg
@@ -0,0 +1,113 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a transform attribute                                  -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: transform.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>transform attribute in 'onload'</title>
+
+    <text x="50%" y="45" class="title">transform attributes in 'onload'</text>
+
+    <script type="text/ecmascript">
+
+    function transform(evt, transform) {
+        var elt = evt.target;
+        elt.setAttribute("transform", transform)
+    }
+
+    </script>
+
+    <g id="test-content" >
+
+
+<g>
+
+      <rect x="0" y="0" width="100" height="100" style="fill:crimson"
+        onload="transform(evt, 'translate(20 100)')"/>
+
+      <circle cx="0" cy="0" r="50" style="fill:orange"
+        onload="transform(evt, 'translate(220 150)')"/>
+
+      <ellipse cx="0" cy="0" rx="50" ry="25" style="fill:gold"
+        onload="transform(evt, 'translate(370 150)')"/>
+
+      <polygon points="50 0 100 100 0 100" style="fill:crimson"
+        onload="transform(evt, 'translate(20 250)')"/>
+
+      <polyline points="50 0 100 100 0 100 50 0" style="fill:orange"
+        onload="transform(evt, 'translate(170 250)')"/>
+
+      <path d="M50 0 L100 100 L0 100Z" style="fill:gold"
+        onload="transform(evt, 'translate(320 250)')"/>
+
+      <line x1="0" y1="0" x2="100" y2="50" 
+        style="stroke:crimson; stroke-width:8; fill:none"
+        onload="transform(evt, 'translate(20 400)')"/>
+
+      <text x="0" y="0" 
+         style="fill:orange; text-anchor:middle;font-size:48" 
+         onload="transform(evt, 'translate(220 420)')">Batik</text>
+
+      <image x="0" y="0" width="50" height="50" 
+         xlink:href="../../resources/images/png2.png"
+         onload="transform(evt, 'translate(320 400)')" />
+      <image x="0" y="0" width="50" height="50" 
+         xlink:href="../../resources/images/svg.svg"
+         onload="transform(evt, 'translate(370 400)')" />
+</g>
+
+<g style="fill:none; stroke:black">
+
+      <rect x="0" y="0" width="100" height="100" transform="translate(20 100)"/>
+
+      <circle cx="0" cy="0" r="50" transform="translate(220 150)"/>
+
+      <ellipse cx="0" cy="0" rx="50" ry="25" transform="translate(370 150)"/>
+
+      <polygon points="50 0 100 100 0 100" transform="translate(20 250)"/>
+
+      <polyline points="50 0 100 100 0 100 50 0" transform="translate(170 250)"/>
+
+      <path d="M50 0 L100 100 L0 100Z" transform="translate(320 250)"/>
+
+      <line x1="0" y1="0" x2="100" y2="50" transform="translate(20 400)"/>
+
+      <text x="0" y="0" 
+             style="stroke:black; fill:none; text-anchor:middle;font-size:48" 
+             transform="translate(220 420)">Batik</text>
+      <rect x="0" y="0" width="50" height="50" transform="translate(320 400)" 
+            style="stroke:black; fill:none;"/>
+      <rect x="0" y="0" width="50" height="50" transform="translate(370 400)"
+            style="stroke:black; fill:none;"/>
+
+</g>
+
+</g>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/transform2.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/transform2.svg
new file mode 100644
index 0000000..7b1da0b
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/transform2.svg
@@ -0,0 +1,81 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a transform attribute                                  -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: transform2.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>transform attribute in 'onload' (2)</title>
+
+    <text x="50%" y="45" class="title">transform attributes in 'onload' (2)</text>
+
+    <script type="text/ecmascript">
+
+    function transform(evt, transform) {
+        var elt = evt.target;
+        elt.setAttribute("transform", transform)
+    }
+
+    </script>
+
+    <g id="test-content" >
+<g onload="transform(evt, 'translate(175, 150)')">
+      <rect x="0" y="0" width="50" height="50" style="fill:crimson" />
+      <rect x="50" y="0" width="50" height="50" style="fill:gold" />
+      <rect x="0" y="50" width="50" height="50" style="fill:orange" />
+      <rect x="50" y="50" width="50" height="50" style="fill:#eee" />
+</g>
+
+<g onload="transform(evt, 'translate(175, 320) rotate(45 50 50)')">
+      <rect x="0" y="0" width="50" height="50" style="fill:crimson" />
+      <rect x="50" y="0" width="50" height="50" style="fill:gold" />
+      <rect x="0" y="50" width="50" height="50" style="fill:orange" />
+      <rect x="50" y="50" width="50" height="50" style="fill:#eee" />
+</g>
+
+<g style="fill:none; stroke:black">
+
+<g transform="translate(175, 150)" style="stroke:black; fill:none">
+      <rect x="0" y="0" width="50" height="50"  />
+      <rect x="50" y="0" width="50" height="50" />
+      <rect x="0" y="50" width="50" height="50" />
+      <rect x="50" y="50" width="50" height="50" />
+</g>
+
+<g transform="translate(175, 320) rotate(45 50 50)">
+      <rect x="0" y="0" width="50" height="50"  />
+      <rect x="50" y="0" width="50" height="50"  />
+      <rect x="0" y="50" width="50" height="50"  />
+      <rect x="50" y="50" width="50" height="50"  />
+</g>
+
+</g>
+
+</g>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/transform_create.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/transform_create.svg
new file mode 100644
index 0000000..fae9780
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/transform_create.svg
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+--><!--      ======================================================================      -->
+<!--      Modification of a polygon attributes                                        -->
+<!--                                                                                  -->
+<!--      @author nicolas socheleau bitflash com                                      -->
+<!--      @version $Id: transform_create.svg 475477 2006-11-15 22:44:28Z cam $      -->
+<!--      ======================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>SVGTransformable.getTransform() &apos;onload&apos;</title>
+
+  <text x="50%" y="45" class="title">SVGTransformable.getTransform() in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[    
+        function translate(evt,x,y) 
+        {        
+           var elt = evt.target;        
+           tr = elt.getOwnerDocument().getDocumentElement().createSVGTransform();
+           tr.setTranslate(x,y);
+           nb = elt.getTransform().getBaseVal().initialize(tr);        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" ( type = "+nb.getType()+")");
+        }
+        function rotate(evt,a,x,y) 
+        {        
+           var elt = evt.target;
+           tr = elt.getOwnerDocument().getDocumentElement().createSVGTransform();
+           tr.setRotate(a,x,y);
+           nb = elt.getTransform().getBaseVal().initialize(tr);        
+           var text = elt.getOwnerDocument().getElementById('test2_text');        
+           text.getFirstChild().appendData(" ( type = "+nb.getType()+")");
+        }
+        function skewX(evt,x) 
+        {        
+           var elt = evt.target;        
+           tr = elt.getOwnerDocument().getDocumentElement().createSVGTransform();
+           tr.setSkewX(x);
+           nb = elt.getTransform().getBaseVal().initialize(tr);        
+           var text = elt.getOwnerDocument().getElementById('test3_text');        
+           text.getFirstChild().appendData("( type = "+nb.getType()+")");    
+        }
+        function skewY(evt,y) 
+        {        
+           var elt = evt.target;        
+           tr = elt.getOwnerDocument().getDocumentElement().createSVGTransform();
+           tr.setSkewY(y);
+           nb = elt.getTransform().getBaseVal().initialize(tr);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ( type = "+nb.getType()+")");
+        }
+        function scale(evt,x,y) 
+        {        
+           var elt = evt.target;        
+           tr = elt.getOwnerDocument().getDocumentElement().createSVGTransform();
+           tr.setScale(x,y);
+           nb = elt.getTransform().getBaseVal().initialize(tr);        
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ( type = "+nb.getType()+")");
+        }
+        function matrix(evt,a,b,c,d,e,f) 
+        {        
+           var elt = evt.target;
+           matrix = elt.getOwnerDocument().getDocumentElement().createSVGMatrix();
+           matrix.setA(a);
+           matrix.setB(b);
+           matrix.setC(c);
+           matrix.setD(d);
+           matrix.setE(e);
+           matrix.setF(f);
+           tr = elt.getOwnerDocument().getDocumentElement().createSVGTransform();
+           tr.setMatrix(matrix);
+           nb = elt.getTransform().getBaseVal().initialize(tr);        
+           var text = elt.getOwnerDocument().getElementById('test6_text');        
+           text.getFirstChild().appendData(" ( type = "+nb.getType()+")");
+        }
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -148.27586 -91.37931)">
+
+        <!-- onload="translate(evt)" -->
+        <text x="180" y="160" font-size="11">translate</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="translate(10,30)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test1" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="translate(evt,10,30)"/>
+     <text x="160" font-size="9" y="290" id="test1_text">
+        transform
+     </text>
+     
+      <g transform="translate(150,0)" >
+        <!-- onload="rotate(evt)" -->
+        <text x="180" y="160" font-size="11"  >rotate</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="rotate(45,200,230)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test2" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="rotate(evt,45,200,230)"/>
+        <text x="160" font-size="9" y="290" id="test2_text">
+          transform
+        </text>
+        </g>
+
+      <g transform="translate(300,0)" >
+        <!-- onload="skewX(evt)" -->
+        <text x="180" y="160" font-size="11" >skewX</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="skewX(10)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test3" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="skewX(evt,10)"/>
+        <text x="160" font-size="9" y="290" id="test3_text">
+          transform 
+        </text>
+     </g>
+
+     <g transform="translate(0,150)" >
+        <!-- onload="skewY(evt)" -->
+        <text x="180" y="160" font-size="11"  >skewY</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="skewY(5)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test4" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="skewY(evt,5)"/>
+
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        transform 
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="scale(evt)" -->
+        <text x="180" y="160" font-size="11"  >scale</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="scale(0.9,1.1)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test5" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="scale(evt,0.9,1.1)"/>
+
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        transform 
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="matrix(evt)" -->
+        <text x="180" y="160" font-size="11"  >matrix</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="matrix(0.4,0.9,-0.9,0.4,328,-46)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test6" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="matrix(evt,0.4,0.9,-0.9,0.4,328,-46)"/>
+
+     <text x="160" font-size="9" y="290"  id="test6_text">
+        transform
+     </text>
+    </g>
+
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/transform_create1.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/transform_create1.svg
new file mode 100644
index 0000000..b2c1181
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/transform_create1.svg
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+--><!--      ======================================================================      -->
+<!--      Modification of a polygon attributes                                        -->
+<!--                                                                                  -->
+<!--      @author nicolas socheleau bitflash com                                      -->
+<!--      @version $Id: transform_create1.svg 527376 2007-04-11 02:37:02Z cam $      -->
+<!--      ======================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>SVGTransformable.transform &apos;onload&apos;</title>
+
+  <text x="50%" y="45" class="title">SVGTransformable.transform in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[
+        function translate(evt,x,y)
+        {
+           var elt = evt.target;
+           ma = elt.ownerDocument.documentElement.createSVGMatrix();
+           ma = ma.translate(x,y);
+           tr = elt.transform.baseVal.createSVGTransformFromMatrix(ma);
+           nb = elt.transform.baseVal.initialize(tr);
+           var text = elt.ownerDocument.getElementById('test1_text');
+           text.firstChild.appendData(" ( type = "+nb.type+")");
+        }
+        function rotate(evt,a,x,y)
+        {
+           var elt = evt.target;
+           ma = elt.ownerDocument.documentElement.createSVGMatrix();
+           ma = ma.translate(x, y);
+           ma = ma.rotate(a);
+           ma = ma.translate(-x, -y);
+           tr = elt.transform.baseVal.createSVGTransformFromMatrix(ma);
+           nb = elt.transform.baseVal.initialize(tr);
+           var text = elt.ownerDocument.getElementById('test2_text');
+           text.firstChild.appendData(" ( type = "+nb.type+")");
+        }
+        function skewX(evt,x)
+        {
+           var elt = evt.target;
+           ma = elt.ownerDocument.documentElement.createSVGMatrix();
+           ma = ma.skewX(x);
+           tr = elt.transform.baseVal.createSVGTransformFromMatrix(ma);
+           nb = elt.transform.baseVal.initialize(tr);
+           var text = elt.ownerDocument.getElementById('test3_text');
+           text.firstChild.appendData("( type = "+nb.type+")");
+        }
+        function skewY(evt,y)
+        {
+           var elt = evt.target;
+           ma = elt.ownerDocument.documentElement.createSVGMatrix();
+           ma = ma.skewY(y);
+           tr = elt.transform.baseVal.createSVGTransformFromMatrix(ma);
+           nb = elt.transform.baseVal.initialize(tr);
+           var text = elt.ownerDocument.getElementById('test4_text');
+           text.firstChild.appendData(" ( type = "+nb.type+")");
+        }
+        function scale(evt,x,y)
+        {
+           var elt = evt.target;
+           tr = elt.ownerDocument.documentElement.createSVGTransform();
+           tr.setScale(x,y);
+           nb = elt.transform.baseVal.initialize(tr);
+           var text = elt.ownerDocument.getElementById('test5_text');
+           text.firstChild.appendData(" ( type = "+nb.type+")");
+        }
+        function matrix(evt,a,b,c,d,e,f)
+        {
+           var elt = evt.target;
+           matrix = elt.ownerDocument.documentElement.createSVGMatrix();
+           matrix.a = a;
+           matrix.b = b;
+           matrix.c = c;
+           matrix.d = d;
+           matrix.e = e;
+           matrix.f = f;
+           tr = elt.ownerDocument.documentElement.createSVGTransform();
+           tr.setMatrix(matrix);
+           nb = elt.transform.baseVal.initialize(tr);
+           var text = elt.ownerDocument.getElementById('test6_text');
+           text.firstChild.appendData(" ( type = "+nb.type+")");
+        }
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -148.27586 -91.37931)">
+
+        <!-- onload="translate(evt)" -->
+        <text x="180" y="160" font-size="11">translate</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="translate(10,30)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test1" style="fill:gold; stroke:orange; 
stroke-width:4"
+               onload="translate(evt,10,30)"/>
+     <text x="160" font-size="9" y="290" id="test1_text">
+        transform
+     </text>
+
+      <g transform="translate(150,0)" >
+        <!-- onload="rotate(evt)" -->
+        <text x="180" y="160" font-size="11"  >rotate</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="rotate(45,200,230)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test1" style="fill:gold; stroke:orange; 
stroke-width:4"
+               onload="rotate(evt,45,200,230)"/>
+        <text x="160" font-size="9" y="290" id="test2_text">
+          transform
+        </text>
+        </g>
+
+      <g transform="translate(300,0)" >
+        <!-- onload="skewX(evt)" -->
+        <text x="180" y="160" font-size="11" >skewX</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="skewX(10)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test1" style="fill:gold; stroke:orange; 
stroke-width:4"
+               onload="skewX(evt,10)"/>
+        <text x="160" font-size="9" y="290" id="test3_text">
+          transform
+        </text>
+     </g>
+
+     <g transform="translate(0,150)" >
+        <!-- onload="skewY(evt)" -->
+        <text x="180" y="160" font-size="11"  >skewY</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="skewY(5)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test1" style="fill:gold; stroke:orange; 
stroke-width:4"
+               onload="skewY(evt,5)"/>
+
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        transform
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="scale(evt)" -->
+        <text x="180" y="160" font-size="11"  >scale</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="scale(0.9,1.1)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test1" style="fill:gold; stroke:orange; 
stroke-width:4"
+               onload="scale(evt,0.9,1.1)"/>
+
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        transform
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="matrix(evt)" -->
+        <text x="180" y="160" font-size="11"  >matrix</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="matrix(0.4,0.9,-0.9,0.4,328,-46)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test1" style="fill:gold; stroke:orange; 
stroke-width:4"
+               onload="matrix(evt,0.4,0.9,-0.9,0.4,328,-46)"/>
+
+     <text x="160" font-size="9" y="290"  id="test6_text">
+        transform
+     </text>
+    </g>
+
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/transform_getTransform1.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/transform_getTransform1.svg
new file mode 100644
index 0000000..f50eee1
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/transform_getTransform1.svg
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+--><!--      ======================================================================      -->
+<!--      Modification of a polygon attributes                                        -->
+<!--                                                                                  -->
+<!--      @author nicolas socheleau bitflash com                                      -->
+<!--      @version $Id: transform_getTransform1.svg 475477 2006-11-15 22:44:28Z cam $      -->
+<!--      ======================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>SVGTransformable.getTransform() &apos;onload&apos;</title>
+
+  <text x="50%" y="45" class="title">SVGTransformable.getTransform() in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[    
+        function getNumberOfItems(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getTransform().getBaseVal().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" "+nb+" transforms");    
+        }
+        function clear(evt) 
+        {        
+           var elt = evt.target;
+           elt.getTransform().getBaseVal().clear();
+           nb = elt.getTransform().getBaseVal().getNumberOfItems();             
+           var text = elt.getOwnerDocument().getElementById('test2_text');        
+           text.getFirstChild().appendData(" "+nb+" transforms");    
+        }
+        function getItem(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getTransform().getBaseVal().getItem(0);        
+           var text = elt.getOwnerDocument().getElementById('test3_text');        
+           text.getFirstChild().appendData("( type = "+nb.getType()+")");    
+        }
+        function insertItemBefore(evt,index) 
+        {        
+           var elt = evt.target;        
+           tr = elt.getOwnerDocument().getDocumentElement().createSVGTransform();
+           tr.setRotate(45,0,0);
+           nb = elt.getTransform().getBaseVal().insertItemBefore(tr,index);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ( type = "+nb.getType()+")");
+        }
+        function replaceItem(evt,index) 
+        {        
+           var elt = evt.target;        
+           tr = elt.getOwnerDocument().getDocumentElement().createSVGTransform();
+           tr.setRotate(45,0,0);
+           nb = elt.getTransform().getBaseVal().replaceItem(tr,index);        
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ( type = "+nb.getType()+")");
+        }
+        function removeItem(evt,index) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getTransform().getBaseVal().removeItem(index);        
+           var text = elt.getOwnerDocument().getElementById('test6_text');        
+           text.getFirstChild().appendData(" ( type = "+nb.getType()+")");
+        }
+        function initializeAppendItem(evt) 
+        {        
+           var elt = evt.target;        
+           tr = elt.getOwnerDocument().getDocumentElement().createSVGTransform();
+           tr.setRotate(45,200,230);
+           nb = elt.getTransform().getBaseVal().initialize(tr);        
+           var text = elt.getOwnerDocument().getElementById('test71_text');        
+           text.getFirstChild().appendData(" ( type = "+nb.getType()+")");
+
+           tr = elt.getOwnerDocument().getDocumentElement().createSVGTransform();
+           tr.setTranslate(10,10);
+           nb = elt.getTransform().getBaseVal().appendItem(tr);        
+           text = elt.getOwnerDocument().getElementById('test72_text');        
+           text.getFirstChild().appendData(" ( type = "+nb.getType()+")");
+        }
+        function setAttribute(evt,pointsList) 
+        {        
+           var elt = evt.target;
+           var points = elt.getTransform().getBaseVal();
+           nb = points.getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test81_text');        
+           text.getFirstChild().appendData(" "+nb+" transforms");
+
+           elt.setAttributeNS(null,"transform",pointsList);
+
+           nb = points.getNumberOfItems();        
+           text = elt.getOwnerDocument().getElementById('test82_text');        
+           text.getFirstChild().appendData(" "+nb+" transforms");
+        
+        }
+
+        function setAttribute2(evt,pointsList) 
+        {        
+           var elt = evt.target;
+           var points = elt.getTransform().getBaseVal();
+           nb = points.getItem(0);        
+           var text = elt.getOwnerDocument().getElementById('test91_text');        
+           text.getFirstChild().appendData(" ( type = "+nb.getType()+")");
+
+           elt.setAttributeNS(null,"transform",pointsList);
+
+           text = elt.getOwnerDocument().getElementById('test92_text');        
+           text.getFirstChild().appendData(" ( type = "+nb.getType()+")");
+        
+        }
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -148.27586 -91.37931)">
+
+        <!-- onload="getNumberOfItems(evt)" -->
+        <text x="180" y="160" font-size="11">getNumberOfItems</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test1" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="getNumberOfItems(evt)"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+     <text x="160" font-size="9" y="290" id="test1_text">
+        rect with
+     </text>
+     
+      <g transform="translate(150,0)" >
+        <!-- onload="clear(evt)" -->
+        <text x="180" y="160" font-size="11"  >clear</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test2" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="clear(evt)"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+        <text x="160" font-size="9" y="290" id="test2_text">
+          rect with
+        </text>
+        </g>
+
+      <g transform="translate(300,0)" >
+        <!-- onload="getItem(evt)" -->
+        <text x="180" y="160" font-size="11" >getItem</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test3" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="getItem(evt)"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+        <text x="160" font-size="9" y="290" id="test3_text">
+          transform 0 
+        </text>
+     </g>
+
+     <g transform="translate(0,150)" >
+        <!-- onload="insertItemBefore(evt)" -->
+        <text x="180" y="160" font-size="11"  >insertItemBefore</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test4" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="insertItemBefore(evt,1)"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        inserted transform 
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="replaceItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >replaceItem</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test5" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="replaceItem(evt,1)"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        replaced transform 
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="removeItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >removeItem</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test6" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="removeItem(evt,1)"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+
+     <text x="160" font-size="9" y="290"  id="test6_text">
+        removed point
+     </text>
+    </g>
+
+     <g transform="translate(0,300)" >
+        <!-- onload="initialize/appendItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >initialize/appendItem</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test7" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="initializeAppendItem(evt)"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+     <text x="160" font-size="9" y="275"  id="test71_text">
+        intialized transform 
+     </text>
+     <text x="160" font-size="9" y="285"  id="test72_text">
+        appended transform
+     </text>
+    </g>
+
+     <g transform="translate(150,300)" >
+        <!-- onload="setAttribute(evt)" -->
+        <text x="180" y="160" font-size="11"  >setAttribute</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test8" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="setAttribute(evt,'translate(10,10)')"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+     <text x="160" font-size="9" y="275"  id="test81_text">
+        before
+     </text>
+     <text x="160" font-size="9" y="285"  id="test82_text">
+        after
+     </text>
+    </g>
+
+     <g transform="translate(300,300)" >
+        <!-- onload="setAttribute2(evt)" -->
+        <text x="180" y="160" font-size="11"  >setAttribute2</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test9" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="setAttribute2(evt,'rotate(10,200,230)')"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+     <text x="160" font-size="9" y="275"  id="test91_text">
+        transform 0 before
+     </text>
+     <text x="160" font-size="9" y="285"  id="test92_text">
+        transform 0 after
+     </text>
+    </g>
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/transform_getTransform2.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/transform_getTransform2.svg
new file mode 100644
index 0000000..dd48b8e
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/transform_getTransform2.svg
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd"; >
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+--><!--      ======================================================================      -->
+<!--      Modification of a polygon attributes                                        -->
+<!--                                                                                  -->
+<!--      @author nicolas socheleau bitflash com                                      -->
+<!--      @version $Id: transform_getTransform2.svg 475477 2006-11-15 22:44:28Z cam $      -->
+<!--      ======================================================================      -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css"      ?>
+
+<svg width="450" viewBox="0 0 450 500" height="500" id="body">
+   <title>SVGTransformable.getTransform() &apos;onload&apos;</title>
+
+  <text x="50%" y="45" class="title">SVGTransformable.getTransform() in &apos;onload&apos;
+  </text>
+  <script type="text/ecmascript"><![CDATA[    
+        function getNumberOfItems(evt) 
+        {        
+           var elt = evt.target;        
+           nb = elt.getTransform().getBaseVal().getNumberOfItems();        
+           var text = elt.getOwnerDocument().getElementById('test1_text');        
+           text.getFirstChild().appendData(" "+nb+" transforms");    
+        }
+        function insertItemBefore(evt,index,from) 
+        {        
+           var elt = evt.target;        
+           tr = 
elt.getOwnerDocument().getElementById('transform_provider').getTransform().getBaseVal().getItem(from);
+           nb = elt.getTransform().getBaseVal().insertItemBefore(tr,index);        
+           var text = elt.getOwnerDocument().getElementById('test4_text');        
+           text.getFirstChild().appendData(" ( type = "+nb.getType()+")");
+        }
+        function replaceItem(evt,index,from) 
+        {        
+           var elt = evt.target;        
+           tr = 
elt.getOwnerDocument().getElementById('transform_provider').getTransform().getBaseVal().getItem(from);
+           nb = elt.getTransform().getBaseVal().replaceItem(tr,index);        
+           var text = elt.getOwnerDocument().getElementById('test5_text');        
+           text.getFirstChild().appendData(" ( type = "+nb.getType()+")");
+        }
+        function initializeAppendItem(evt,from1,from2) 
+        {        
+           var elt = evt.target;        
+           tr = 
elt.getOwnerDocument().getElementById('transform_provider').getTransform().getBaseVal().getItem(from1);
+           nb = elt.getTransform().getBaseVal().initialize(tr);        
+           var text = elt.getOwnerDocument().getElementById('test71_text');        
+           text.getFirstChild().appendData(" ( type = "+nb.getType()+")");
+
+           tr = 
elt.getOwnerDocument().getElementById('transform_provider').getTransform().getBaseVal().getItem(from2);
+           nb = elt.getTransform().getBaseVal().appendItem(tr);        
+           text = elt.getOwnerDocument().getElementById('test72_text');        
+           text.getFirstChild().appendData(" ( type = "+nb.getType()+")");
+        }
+   ]]></script>
+   <g id="test-content" transform="matrix(1.0 0.0 0.0 1.0 -148.27586 -91.37931)">
+
+        <!-- onload="getNumberOfItems(evt)" -->
+        <text x="180" y="160" font-size="11">transform_provider</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+        <rect  x="175" y="175" width="50" height="50" id="transform_provider" style="fill:gold; 
stroke:orange; stroke-width:4" 
+               onload="getNumberOfItems(evt)"
+               transform="translate(200,230) rotate(45) rotate(60) translate(-200,-230)"/>
+     <text x="160" font-size="9" y="290" id="test1_text">
+        rect with
+     </text>
+     
+     <g transform="translate(0,150)" >
+        <!-- onload="insertItemBefore(evt)" -->
+        <text x="180" y="160" font-size="11"  >insertItemBefore</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test2" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="insertItemBefore(evt,1,2)"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+
+     <text x="160" font-size="9" y="290"  id="test4_text">
+        inserted transform 
+     </text>
+    </g>
+
+     <g transform="translate(150,150)" >
+        <!-- onload="replaceItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >replaceItem</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test3" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="replaceItem(evt,1,1)"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+
+     <text x="160" font-size="9" y="290"  id="test5_text">
+        replaced transform 
+     </text>
+    </g>
+
+     <g transform="translate(300,150)" >
+        <!-- onload="initialize/appendItem(evt)" -->
+        <text x="180" y="160" font-size="11"  >initialize/appendItem</text>
+        <rect  x="175" y="175" width="50" height="50" style="opacity:0.5;fill:#eee; stroke:#aaa; 
stroke-width:4"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+        <rect  x="175" y="175" width="50" height="50" id="test4" style="fill:gold; stroke:orange; 
stroke-width:4" 
+               onload="initializeAppendItem(evt,0,0)"
+               transform="translate(200,230) rotate(60) translate(-200,-230)"/>
+     <text x="160" font-size="9" y="275"  id="test71_text">
+        intialized transform 
+     </text>
+     <text x="160" font-size="9" y="285"  id="test72_text">
+        appended transform
+     </text>
+    </g>
+
+
+</g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/trefProperties.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/trefProperties.svg
new file mode 100644
index 0000000..a7cf42d
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/trefProperties.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a tref attributes                                      -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @author nicolas socheleau bitflash com                                 -->
+<!-- @version $Id: trefProperties.svg 475477 2006-11-15 22:44:28Z cam $                                      
                    -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;tref&gt; CSS properties on 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;tref&gt; CSS properties on 'onload'</text>
+
+    <script type="text/ecmascript"><![CDATA[
+        function changeStyle(evt, newValue) {
+                evt.target.setAttribute("style", newValue);
+        }
+    ]]></script>
+
+    <defs>
+        <text id="text1">font-family:Arial</text>
+        <text id="text2">font-size:32</text>
+        <text id="text3">fill:crimson</text>
+        <text id="text4">stroke:orange; font-size:18</text>
+        <text id="text5">text-anchor:start</text>
+        <text id="text6">text-anchor:middle</text>
+        <text id="text7">text-anchor:end</text>
+        <text id="text8">font-weight:bold</text>
+        <text id="text9">font-style:italic</text>
+        <text id="text10">letter-spacing:10</text>
+    </defs>
+
+    <g id="test-content" style="font-size:18">
+
+     <text x="100" y="100"><tref xlink:href="#text1" onload="changeStyle(evt, 'font-family:Impact')"/></text>
+     <text x="100" y="140"><tref xlink:href="#text2" onload="changeStyle(evt, 'font-size:32')"/></text>
+     <text x="100" y="180"><tref xlink:href="#text3" onload="changeStyle(evt, 'fill:crimson')"/></text>
+     <text x="100" y="220"><tref xlink:href="#text4" onload="changeStyle(evt, 
'stroke:orange;font-size:18')"/></text>
+
+     <text x="50%" y="260"><tref xlink:href="#text5" onload="changeStyle(evt, 'text-anchor:start')"/></text>
+     <text x="50%" y="300"><tref xlink:href="#text6" onload="changeStyle(evt, 'text-anchor:middle')"/></text>
+     <text x="50%" y="340"><tref xlink:href="#text7" onload="changeStyle(evt, 'text-anchor:end')"/></text>
+     <text x="100" y="380"><tref xlink:href="#text8" onload="changeStyle(evt, 'font-weight:bold')"/></text>
+     <text x="100" y="420"><tref xlink:href="#text9" onload="changeStyle(evt, 'font-style:italic')"/></text>
+     <text x="100" y="460"><tref xlink:href="#text10" onload="changeStyle(evt, 'letter-spacing:10')"/></text>
+
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/tspan.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/tspan.svg
new file mode 100644
index 0000000..1055334
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/tspan.svg
@@ -0,0 +1,104 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a tspan attributes                                    -->
+<!--                                                                        -->
+<!-- @author nicolas socheleau bitflash com                                 -->
+<!-- @version $Id: tspan.svg 475477 2006-11-15 22:44:28Z cam $                                               
           -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500" xmlns:xlink="http://www.w3.org/1999/xlink";>
+    <title>&lt;tspan&gt; attributes 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;tspan&gt; attributes in 'onload'</text>
+
+    <script type="text/ecmascript"><![CDATA[
+
+    function initXY(evt, x, y) {
+        var elt = evt.target;
+        elt.setAttribute("x", x)
+        elt.setAttribute("y", y)
+    }
+    function initDXDY(evt, dx, dy) {
+        var elt = evt.target;
+        elt.setAttribute("dx", dx)
+        elt.setAttribute("dy", dy)
+    }
+    function initRotate(evt, rotate) {
+        var elt = evt.target;
+        elt.setAttribute("rotate", rotate)
+    }
+
+   ]]></script>
+
+    <g id="test-content">
+
+         <g id="dynamic" style="fill:orange;stroke:none;font-size:32;text-anchor:middle" >
+
+                <text x="35" y="180" >E<tspan onload="initXY(evt,120,180)"
+                    >XAMPLE</tspan>1</text>
+                <text ><tspan  onload="initDXDY(evt,200,300)" 
+                    >EXAMPLE2</tspan></text>
+                <text><tspan x="100" y="430" onload="initRotate(evt,-10)" 
+                    >EXAMPLE3</tspan></text>
+                <text><tspan onload="initXY(evt,'250 280 300 330 350 380 400 430','180 170 180 190 170 180 
190 180')" 
+                    >EXAMPLE4</tspan></text>
+                <text><tspan onload="initDXDY(evt,'650 -20 20 -20 20 -20 20 -20','300 30 -30 30 -30 30 -30 
30')" 
+                    >EXAMPLE5</tspan></text>
+                <text><tspan x="350" y="430" onload="initRotate(evt,'-10 10 -10 10 -10 10 -10 10')" 
+                    >EXAMPLE6</tspan></text>
+
+         </g>
+
+         <g id="expected" style="fill:none;stroke:black;stroke-width:1;font-size:32;text-anchor:middle">
+
+                <text x="35" y="180" >E<tspan x="120" y="180" 
+                    >XAMPLE</tspan>1</text>
+                <text onclick="showBBox(evt)"><tspan dx="200" dy="300" 
+                    >EXAMPLE2</tspan></text>
+                <text><tspan x="100" y="430" rotate="-10" onclick="showBBox(evt)"
+                    >EXAMPLE3</tspan></text>
+                <text><tspan x="250 280 300 330 350 380 400 430" y="180 170 180 190 170 180 190 180" 
onclick="showBBox(evt)"
+                    >EXAMPLE4</tspan></text>
+                <text onclick="showBBox(evt)" ><tspan dx="650 -20 20 -20 20 -20 20 -20" dy="300 30 -30 30 
-30 30 -30 30" 
+                    >EXAMPLE5</tspan></text>
+                <text><tspan x="350" y="430" rotate="-10 10 -10 10 -10 10 -10 10" onclick="showBBox(evt)"
+                    >EXAMPLE6</tspan></text>
+                
+         </g>
+    </g>
+
+    <g id="legend" >
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="100" y="230" >x, y</text>
+                <text x="100" y="350" >dx, dy</text>
+                <text x="100" y="470" >rotate</text>
+
+                <text x="350" y="230" >x, y ( list )</text>
+                <text x="350" y="350" >dx, dy ( list )</text>
+                <text x="350" y="470" >rotate ( list )</text>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/tspanProperties.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/tspanProperties.svg
new file mode 100644
index 0000000..6052a19
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/tspanProperties.svg
@@ -0,0 +1,59 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a tspan attributes                                     -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @author nicolas socheleau bitflash com                                 -->
+<!-- @version $Id: tspanProperties.svg 475477 2006-11-15 22:44:28Z cam $                                     
                     -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;tspan&gt; CSS properties on 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;tspan&gt; CSS properties on 'onload'</text>
+
+    <script type="text/ecmascript"><![CDATA[
+        function changeStyle(evt, newValue) {
+                evt.target.setAttribute("style", newValue);
+        }
+    ]]></script>
+
+    <g id="test-content" style="font-size:18">
+
+     <text x="100" y="100"><tspan onload="changeStyle(evt, 
'font-family:Impact')">font-family:Arial</tspan></text>
+     <text x="100" y="140"><tspan onload="changeStyle(evt, 'font-size:32')">font-size:32</tspan></text>
+     <text x="100" y="180"><tspan onload="changeStyle(evt, 'fill:crimson')">fill:crimson</tspan></text>
+     <text x="100" y="220"><tspan onload="changeStyle(evt, 'stroke:orange;font-size:18')">stroke:orange; 
font-size:18</tspan></text>
+
+     <text x="50%" y="260"><tspan onload="changeStyle(evt, 
'text-anchor:start')">text-anchor:start</tspan></text>
+     <text x="50%" y="300"><tspan onload="changeStyle(evt, 
'text-anchor:middle')">text-anchor:middle</tspan></text>
+     <text x="50%" y="340"><tspan onload="changeStyle(evt, 'text-anchor:end')">text-anchor:end</tspan></text>
+     <text x="100" y="380"><tspan onload="changeStyle(evt, 
'font-weight:bold')">font-weight:bold</tspan></text>
+     <text x="100" y="420"><tspan onload="changeStyle(evt, 
'font-style:italic')">font-style:italic</tspan></text>
+     <text x="100" y="460"><tspan onload="changeStyle(evt, 
'letter-spacing:10')">letter-spacing:10</tspan></text>
+
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/tspan_children1.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/tspan_children1.svg
new file mode 100644
index 0000000..f196017
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/tspan_children1.svg
@@ -0,0 +1,152 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of tspan children                                          -->
+<!--                                                                        -->
+<!-- @author nicolas socheleau bitflash com                                 -->
+<!-- @version $Id: tspan_children1.svg 475477 2006-11-15 22:44:28Z cam $                                     
                     -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;tspan&gt; children 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;tspan&gt; children in 'onload'</text>
+
+    <script type="text/ecmascript"><![CDATA[
+    function addText(evt){
+        insertText(evt,'the quick ','tspan1');
+        appendText(evt,'fox');
+    }
+
+    function addCDATAText(evt){
+        insertCDATAText(evt,'the quick ','tspan2');
+        appendCDATAText(evt,'fox');
+    }
+
+    function insertText(evt,text,nextsiblingID) {
+
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var next = doc.getElementById(nextsiblingID);
+
+        var textnode = doc.createTextNode(text);
+
+        elt.insertBefore(textnode,next);
+    }
+
+    function insertCDATAText(evt,text,nextsiblingID) {
+
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var next = doc.getElementById(nextsiblingID);
+
+        var textnode = doc.createCDATASection(text);
+
+        elt.insertBefore(textnode,next);
+    }
+
+    function appendText(evt, text){
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var textnode = doc.createTextNode(text);
+
+        elt.appendChild(textnode);
+    }
+
+    function appendCDATAText(evt, text){
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var textnode = doc.createCDATASection(text);
+
+        elt.appendChild(textnode);
+    }
+
+    function removeText(evt) {
+        var elt = evt.target;
+
+        while ( elt.hasChildNodes() ){
+
+           var child = elt.getFirstChild();
+
+           elt.removeChild( child )
+        }
+    }
+    
+    ]]>
+    </script>
+
+    <g id="test-content">
+        <g style="font-size:40" >
+
+          <text><tspan x="70" y="135" style="fill:orange" 
+                onload="addText(evt)" >
+            <tspan id="tspan1" onload="appendText(evt,'brown')" style="fill:brown"></tspan>
+          </tspan></text>
+
+          <text><tspan x="70" y="175" style="fill:orange" 
+                onload="addCDATAText(evt)" >
+            <tspan id="tspan2" onload="appendCDATAText(evt,'brown')" style="fill:brown"></tspan>
+          </tspan></text>
+
+          <text><tspan x="70" y="335" style="fill:gold" 
+                onload="removeText(evt)" >
+            the quick brown fox
+          </tspan></text>
+          <text><tspan x="70" y="375" style="fill:gold" 
+                onload="removeText(evt)" ><![CDATA[
+            the quick brown fox
+          ]]></tspan></text>
+
+        </g>
+
+        <g style="stroke:black;fill:none;stroke-width:1;font-size:40">
+          <text><tspan x="70" y="135">
+            the quick <tspan>brown</tspan> fox
+          </tspan></text>
+          <text><tspan x="70" y="175">
+            the quick <tspan>brown</tspan> fox
+          </tspan></text>
+          <text><tspan x="70" y="335">
+            the quick brown fox
+          </tspan></text>
+          <text><tspan x="70" y="375">
+            the quick brown fox
+          </tspan></text>
+        </g>
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="225" y="230" >insert nodes 
+                   <tspan style="font-size:8">( TEXT_NODE and CDATA_SECTION_NODE )</tspan>
+                </text>
+                <text x="225" y="430" >remove nodes 
+                   <tspan style="font-size:8">( TEXT_NODE and CDATA_SECTION_NODE )</tspan>
+                </text>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/tspan_children2.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/tspan_children2.svg
new file mode 100644
index 0000000..fc8737c
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/tspan_children2.svg
@@ -0,0 +1,98 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of tspan children                                          -->
+<!--                                                                        -->
+<!-- @author nicolas socheleau bitflash com                                 -->
+<!-- @version $Id: tspan_children2.svg 475477 2006-11-15 22:44:28Z cam $                                     
                     -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;tspan&gt; children updates 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;tspan&gt; children in 'onload'</text>
+
+    <script type="text/ecmascript">
+
+    function text_append(evt, text) {
+        var elt = evt.target;
+        var textNode = elt.getFirstChild();
+
+        textNode.appendData(text);
+    }
+    function text_delete(evt, offset, count) {
+        var elt = evt.target;
+        var textNode = elt.getFirstChild();
+
+        textNode.deleteData(offset,count);
+    }
+    function text_insert(evt, offset, text) {
+        var elt = evt.target;
+        var textNode = elt.getFirstChild();
+
+        textNode.insertData(offset,text);
+    }
+    function text_replace(evt, offset,count,text) {
+        var elt = evt.target;
+        var textNode = elt.getFirstChild();
+
+        textNode.replaceData(offset,count,text);
+    }
+
+    </script>
+
+    <g id="test-content">
+        <g style="text-anchor:middle;font-size:24;stroke:none;fill:crimson" >
+
+          <text x="100" y="155" dy="0 -2 5 -5 5 -5 5 -5 5 -5 5 -5 5 -2"
+             xml:space="preserve" ><tspan onload="text_append(evt,' the end')" >append at</tspan></text>
+          <text x="100" y="355" dy="0 -2 5 -5 5 -5 5 -5 5 -2"
+             xml:space="preserve" ><tspan onload="text_delete(evt,7,4)" >delete any words</tspan></text>
+          <text x="325" y="155" dy="0 -2 5 -5 5 -5 5 -5 5 -5 5 -5 5 -2"
+             xml:space="preserve" ><tspan onload="text_insert(evt,6,' between')" >insert words</tspan></text>
+          <text x="325" y="355" dy="0 -2 5 -5 5 -5 5 -5 5 -5 5 -5 5 -2"
+             xml:space="preserve" ><tspan onload="text_replace(evt,10,8,'string')" >replace a 
sentence</tspan></text>
+
+        </g>
+
+        <g style="stroke:black; fill:none; stroke-width:1 ;text-anchor:middle; font-size:24">
+          <text x="100" y="155" dy="0 -2 5 -5 5 -5 5 -5 5 -5 5 -5 5 -2"
+             ><tspan>append at the end</tspan></text>
+          <text x="100" y="355" dy="0 -2 5 -5 5 -5 5 -5 5 -2"
+             ><tspan>delete words</tspan></text>
+          <text x="325" y="155" dy="0 -2 5 -5 5 -5 5 -5 5 -5 5 -5 5 -2"
+             ><tspan>insert between words</tspan></text>
+          <text x="325" y="355" dy="0 -2 5 -5 5 -5 5 -5 5 -5 5 -5 5 -2"
+             ><tspan>replace a string</tspan></text>
+        </g>
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="100" y="230" >TEXT_NODE.append</text>
+                <text x="100" y="430" >TEXT_NODE.delete</text>
+                <text x="325" y="230" >TEXT_NODE.insert</text>
+                <text x="325" y="430" >TEXT_NODE.replace</text>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/tspan_children3.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/tspan_children3.svg
new file mode 100644
index 0000000..970e591
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/tspan_children3.svg
@@ -0,0 +1,142 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of tspan children                                          -->
+<!--                                                                        -->
+<!-- @author nicolas socheleau bitflash com                                 -->
+<!-- @version $Id: tspan_children3.svg 475477 2006-11-15 22:44:28Z cam $                                     
                     -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+        xmlns:xlink="http://www.w3.org/1999/xlink"; >
+
+  <defs>
+        <text id="browndef"> brown</text>
+        <path id="pathdef" d="M250,180 C300,250 500,250 500,180" />
+        <path id="pathdef1" d="M250,380 C300,250 500,250 500,380" />
+  </defs>
+
+    <title>&lt;tspan&gt; children 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;tspan&gt; children in 'onload'</text>
+
+    <script type="text/ecmascript"><![CDATA[
+    function remove(evt,target){
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+        
+        var remove = doc.getElementById(target);
+        elt = remove.getParentNode();
+        elt.removeChild(remove);
+    }
+    function addtspan(evt,pos,t,s){
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var textnode = elt.getFirstChild();
+
+        textnode = textnode.splitText(pos);
+
+        var tspan = doc.createElementNS(elt.getNamespaceURI(),'tspan');
+        tspan.setAttribute('style',s);
+
+        var newtextnode = doc.createTextNode(t);
+        
+        tspan.appendChild(newtextnode);
+
+        elt.insertBefore(tspan,textnode);
+   }
+    function addtref(evt,pos,ref,s){
+        var elt = evt.target;
+        var doc = elt.getOwnerDocument();
+
+        var textnode = elt.getFirstChild();
+
+        textnode = textnode.splitText(pos);
+
+        var tref = doc.createElementNS(elt.getNamespaceURI(),'tref');
+        tref.setAttribute('style',s);
+        var attr = doc.createAttributeNS("http://www.w3.org/1999/xlink","href";);
+        attr.setValue(ref);
+        tref.setAttributeNodeNS(attr);
+
+        elt.insertBefore(tref,textnode);
+
+
+   }
+    
+    ]]>
+    </script>
+
+    <g id="test-content">
+        <g style="font-size:40" >
+
+          <text x="70" y="115" style="fill:orange" >
+                <tspan onload="addtspan(evt,9,' brown','fill:brown')" >the quick fox</tspan></text>
+
+          <text x="70" y="155" style="fill:orange" >
+                <tspan onload="addtref(evt,9,'#browndef','fill:brown')" >the quick fox</tspan></text>
+
+          <text x="70" y="315" style="fill:orange" >
+            <tspan onload="remove(evt,'tspan')" >
+              the quick
+            <tspan id="tspan" style="fill:brown">brown</tspan>
+              fox
+          </tspan></text>
+
+          <text x="70" y="355" style="fill:orange" >
+            <tspan onload="remove(evt,'tref')" >
+              the quick
+            <tref id="tref" style="fill:brown" xlink:href="#browndef"/>
+              fox
+          </tspan></text>
+
+        </g>
+
+        <g style="stroke:black;fill:none;stroke-width:1;font-size:40">
+          <text x="70" y="115">
+            the quick <tspan>brown</tspan> fox
+          </text>
+          <text x="70" y="155">
+            the quick <tref xlink:href="#browndef" /> fox
+          </text>
+          <text x="70" y="315">
+            the quick  fox
+          </text>
+          <text x="70" y="355">
+            the quick  fox
+          </text>
+        </g>
+
+        <g style="fill:black; stroke:none; text-anchor:middle">
+                <text x="225" y="230" >insert nodes 
+                   <tspan style="font-size:8">( &lt;tspan&gt;,&lt;tref&gt; )</tspan>
+                </text>
+                <text x="225" y="430" >remove nodes 
+                   <tspan style="font-size:8">( &lt;tspan&gt;,&lt;tref&gt; )</tspan>
+                </text>
+        </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/use.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/use.svg
new file mode 100644
index 0000000..a171711
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/use.svg
@@ -0,0 +1,253 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Dynamic update for use                                                    -->
+<!--                                                                           -->
+<!-- @author vincent hardy sun com                                             -->
+<!-- @version $Id: use.svg 475477 2006-11-15 22:44:28Z cam $     -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Update on &lt;use&gt;</title>
+
+    <text x="50%" y="45" class="title">x/y/transform update on &lt;use&gt;</text>
+
+    <script type="text/ecmascript"> <![CDATA[
+    var xlinkNS = 'http://www.w3.org/1999/xlink';
+    var svgNS = 'http://www.w3.org/2000/svg';
+
+    function runTest(){
+        document.getElementById('x').setAttributeNS(null, 'x', '20');
+        document.getElementById('y').setAttributeNS(null, 'y', '15');
+        document.getElementById('transform').setAttributeNS(null, 'transform', 'rotate(20)');
+        document.getElementById('xlink').setAttributeNS(xlinkNS, 'xlink:href', '#symbol2');
+
+        var mutated = document.getElementById('mutatedSymbol');
+        while(mutated.firstChild != null) {
+            mutated.removeChild(mutated.firstChild);
+        }
+        var r = document.createElementNS(svgNS, 'rect');
+        r.setAttributeNS(null, "x", "-10");
+        r.setAttributeNS(null, "y", "-10");
+        r.setAttributeNS(null, "width", "20");
+        r.setAttributeNS(null, "height", "20");
+        r.setAttributeNS(null, "stroke-width", "4");
+        r.setAttributeNS(null, "stroke", "gold");
+        r.setAttributeNS(null, "fill", "crimson");
+        mutated.appendChild(r);
+
+        var t = document.createElementNS(svgNS, "text");
+        mutated.appendChild(t);
+        t.setAttributeNS(null, "text-anchor", "middle");
+        t.setAttributeNS(null, "fill", "gold");
+        t.setAttributeNS(null, "stroke", "none");
+        t.setAttributeNS(null, "y", "5");
+        var msg = document.createTextNode("Hello");
+        t.appendChild(msg);
+
+        msg.data = "Hi";
+    }
+
+    ]]> </script>        <rect id="symbol" x="-10" y="-10" width="20" height="20" />
+
+
+
+    <defs>    
+        <rect id="symbol" x="-10" y="-10" width="20" height="20" />
+        <rect id="symbol2" x="-10" y="-10" width="20" height="20" stroke-width="4" stroke="gold" 
fill="crimson" />
+
+        <g id="mutatedSymbolReference">
+            <rect x="-10" y="-10" width="20" height="20" stroke-width="4" stroke="gold" fill="crimson" />
+            <text text-anchor="middle" y="5" fill="gold" stroke="none">Hi</text>
+        </g>
+
+        <g id="mutatedSymbol">
+            <rect x="-12" y="-12" width="24" height="24" class="reference" />
+        </g>
+
+        <rect id="titleCell" x="-60" y="-15" width="120" height="20" />
+        <rect id="tableCell" x="-60" y="-20" width="120" height="40" />
+        <rect id="button" x="-30" y="-15" width="60" height="20" />
+
+    </defs>
+
+    <style type="text/css"><![CDATA[
+        use.tableHeader  {
+            fill: #eeeeee;
+            stroke: black;
+        }
+
+        text.tableHeader {
+            text-anchor: middle;
+            stroke: none;
+            fill: black;
+        }
+
+        use.tableCell {
+            fill: white;
+            stroke: black;
+        }
+
+        text.tableCell {
+            text-anchor: middle;
+            stroke: none;
+            fill: black;
+        }
+
+        use.button {
+            fill: #eeeeee;
+            stroke: black;
+        }
+
+        text.button {
+            fill: black;
+            stroke: none;
+            text-anchor: middle;
+        }
+
+        .reference {
+            fill: none;
+            stroke: black;
+        }
+
+        .symbol {
+            fill: gold;
+            stroke: crimson;
+            stroke-width: 4;
+        }
+        
+    ]]></style>
+
+    <g transform="translate(165, 120)">
+        <g id="tableHeader" class="tableHeader">
+            <g>
+                <use class="tableHeader" xlink:href="#titleCell" />
+                <text class="tableHeader">Attribute</text>
+            </g>
+
+            <g transform="translate(120,0)">
+                <use class="tableHeader" xlink:href="#titleCell" />
+                <text class="tableHeader">&lt;use&gt; and ref</text>
+            </g>
+
+        </g>
+
+        <g id="xRow" transform="translate(0,25)">
+            <g>
+                <use class="tableCell" xlink:href="#tableCell" />
+                <text class="tableCell">x</text>
+            </g>
+
+            <g transform="translate(120,0)" >
+                <use class="tableCell" xlink:href="#tableCell" />
+                <use id="x" x="10" y="5" class="symbol" xlink:href="#symbol"/>
+                <use        x="20" y="5"  class="reference" xlink:href="#symbol"/>
+            </g>
+
+        </g>
+
+        <g id="yRow" transform="translate(0,65)">
+            <g>
+                <use class="tableCell" xlink:href="#tableCell" />
+                <text class="tableCell">y</text>
+            </g>
+
+            <g transform="translate(120,0)" >
+                <use class="tableCell" xlink:href="#tableCell" />
+                <use id="y" x="10" y="0" class="symbol" xlink:href="#symbol"/>
+                <use        x="10" y="15" class="reference" xlink:href="#symbol"/>
+            </g>
+
+        </g>
+
+        <g id="transformRow" transform="translate(0,105)">
+            <g>
+                <use class="tableCell" xlink:href="#tableCell" />
+                <text class="tableCell">transform</text>
+            </g>
+
+            <g transform="translate(120,0)" >
+                <use class="tableCell" xlink:href="#tableCell" />
+                <use id="transform" 
+                     x="10" y="5"  class="symbol" xlink:href="#symbol"/>
+                <use x="10" y="5"  transform="rotate(20)" class="reference" xlink:href="#symbol"/>
+            </g>
+
+        </g>
+
+        <g id="xlinkRow" transform="translate(0,145)">
+            <g>
+                <use class="tableCell" xlink:href="#tableCell" />
+                <text class="tableCell">xlink:href</text>
+            </g>
+
+            <g transform="translate(120,0)" >
+                <use class="tableCell" xlink:href="#tableCell" />
+                <use id="xlink" 
+                     x="5" y="0"  class="symbol" xlink:href="#symbol"/>
+                <use x="5" y="0"  class="reference" xlink:href="#symbol"/>
+            </g>
+
+        </g>
+
+        <g id="mutation" transform="translate(0,185)">
+            <g>
+                <use class="tableCell" xlink:href="#tableCell" />
+                <text class="tableCell">mutation</text>
+            </g>
+
+            <g transform="translate(120,0)" >
+                <use class="tableCell" xlink:href="#tableCell" />
+                <use id="xlink" 
+                     x="-25" y="0"  class="symbol" xlink:href="#mutatedSymbolReference"/>
+                <use x="25" y="0"  class="reference" xlink:href="#mutatedSymbol"/>
+            </g>
+
+        </g>
+
+        <g onclick="runTest()" transform="translate(0, 80)">
+            <use class="button" xlink:href="#button" x="60" y="200" />
+            <text class="button" x="60" y="200">Run Test</text>
+        </g>
+    </g>
+ 
+
+
+    <script type="text/ecmascript"><![CDATA[
+function onDone() {
+    if (!(regardTestInstance == null)) {
+        regardTestInstance.scriptDone();   
+    } else {
+        alert("This button only works when run in the regard framework");
+    }
+}
+    ]]></script>
+    <g id="done" transform="translate(195, 468)" cursor="pointer" onclick="onDone()">
+        <rect rx="5" ry="5" width="60" height="25" fill="#eeeeee" stroke="black" />
+        <text x="30" y="18" font-size="14" font-weight="bold" text-anchor="middle">Done</text>
+    </g>
+
+
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/viewBoxOnLoad.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/viewBoxOnLoad.svg
new file mode 100644
index 0000000..4a3497c
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/viewBoxOnLoad.svg
@@ -0,0 +1,59 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of viewbox on outermost svg onLoad                        -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: viewBoxOnLoad.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     onload="setViewBoxTo(evt,'50 25 150 166.7')">
+
+    <title>'viewBox' modification in 'onload'</title>
+
+    <script type="text/ecmascript">
+    function setViewBoxTo(evt, val){
+        var svg = evt.getTarget();
+        svg.setAttribute('viewBox', val);
+    }
+    </script>
+
+    <rect x="0" y="0" width="450" height="500" fill="#F88"/>
+
+    <rect x="50" y="25" width="150" height="166.7" fill="#AAA"/>
+
+    <svg x="75" y="75" width="100" height="100" overflow="visible"
+         viewBox="0 0 100 100"
+         onload="setViewBoxTo(evt, '-10 -10 120 120')">
+        <rect x="-10" y="-10" width="120" height="120" fill="#F88"/>
+    </svg>
+
+    <rect x="75" y="75" width="100" height="100" fill="#AAF"/>
+    
+    <text x="125" y="45" class="title">viewBox modification
+        <tspan x="125" dy="1.2em"> in 'onload'</tspan></text>
+
+    <text x="125" y="188" class="legend">No red should show</text>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/visibility.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/visibility.svg
new file mode 100644
index 0000000..38cc44a
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/visibility.svg
@@ -0,0 +1,104 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a rect's attributes                                    -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: visibility.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+  <title>'visibility' property on 'onload'</title>
+
+  <text x="50%" y="45" class="title">'visibility' property on 'onload'</text>
+
+  <script type="text/ecmascript"><![CDATA[
+    function changeVisibility(evt, newValue) {
+    evt.target.getStyle().setProperty("visibility", newValue, "");
+    }
+    ]]></script>
+
+  <linearGradient id="grad">
+    <stop style="stop-color:crimson" offset="0" />
+    <stop style="stop-color:gold" offset="1" />
+  </linearGradient>
+
+  <g id="test-content" stroke="black" stroke-width="1">
+
+    <g onload="changeVisibility(evt, 'hidden')" style="visibility:visible">
+      <rect x="100" y="100" width="100" height="50" style="fill:#eee"/>
+      <rect x="150" y="100" width="100" height="50" style="fill:gold"/>
+      <rect x="200" y="100" width="100" height="50" style="fill:crimson"/>
+      <rect x="250" y="100" width="100" height="50" style="fill:url(#grad)"/>
+      <image x="300" y="100" width="50" height="50" 
+        xlink:href="../../resources/images/png2.png"/>
+    </g>
+    <g >
+      <rect x="100" y="175" width="100" height="50"
+        onload="changeVisibility(evt, 'hidden')" 
+        style="fill:#eee; visibility:visible"/>
+      <rect x="150" y="175" width="100" height="50" 
+        onload="changeVisibility(evt, 'hidden')" 
+        style="fill:gold; visibility:visible"/>
+      <rect x="200" y="175" width="100" height="50"
+        onload="changeVisibility(evt, 'hidden')" 
+        style="fill:crimson; visibility:visible"/>
+      <rect x="250" y="175" width="100" height="50" 
+        onload="changeVisibility(evt, 'hidden')" 
+        style="fill:url(#grad); visibility:visible"/>
+      <image x="300" y="175" width="50" height="50" 
+        onload="changeVisibility(evt, 'hidden')" 
+        xlink:href="../../resources/images/png2.png"/>
+    </g>
+
+    <g onload="changeVisibility(evt, 'visible')" style="visibility:hidden">
+      <rect x="100" y="250" width="100" height="50" style="fill:#eee"/>
+      <rect x="150" y="250" width="100" height="50" style="fill:gold"/>
+      <rect x="200" y="250" width="100" height="50" style="fill:crimson"/>
+      <rect x="250" y="250" width="100" height="50" style="fill:url(#grad)"/>
+      <image x="300" y="250" width="50" height="50" 
+        xlink:href="../../resources/images/png2.png"/>
+    </g>
+    <g >
+      <rect x="100" y="325" width="100" height="50"
+        onload="changeVisibility(evt, 'visible')" 
+        style="fill:#eee; visibility:hidden"/>
+      <rect x="150" y="325" width="100" height="50"
+        onload="changeVisibility(evt, 'visible')" 
+        style="fill:gold; visibility:hidden"/>
+      <rect x="200" y="325" width="100" height="50"
+        onload="changeVisibility(evt, 'visible')" 
+        style="fill:crimson; visibility:hidden"/>
+      <rect x="250" y="325" width="100" height="50"
+        onload="changeVisibility(evt, 'visible')" 
+         style="fill:url(#grad); visibility:hidden"/>
+      <image x="300" y="325" width="50" height="50" 
+        xlink:href="../../resources/images/png2.png"
+        onload="changeVisibility(evt, 'visible')" 
+         style="visibility:hidden"/>
+    </g>
+
+  </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/visibilityOnClick.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/visibilityOnClick.svg
new file mode 100644
index 0000000..f715d73
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/visibilityOnClick.svg
@@ -0,0 +1,135 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of the visibility property                                -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: visibilityOnClick.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+  <title>'visibility' property on 'onclick</title>
+
+  <text x="50%" y="45" class="title">'visibility' property on 'onclick'</text>
+
+  <script type="text/ecmascript"><![CDATA[
+    function changeVisibility(elem, newValue) {
+       elem.style.setProperty("visibility", newValue, "");
+    }
+    function doChange() {
+       changeVisibility(document.getElementById("gHide"),  "hidden");
+       changeVisibility(document.getElementById("r1Hide"), "hidden");
+       changeVisibility(document.getElementById("r2Hide"), "hidden");
+       changeVisibility(document.getElementById("r3Hide"), "hidden");
+       changeVisibility(document.getElementById("r4Hide"), "hidden");
+       changeVisibility(document.getElementById("i1Hide"), "hidden");
+
+       changeVisibility(document.getElementById("gShow"),  "visible");
+       changeVisibility(document.getElementById("r1Show"), "visible");
+       changeVisibility(document.getElementById("r2Show"), "visible");
+       changeVisibility(document.getElementById("r3Show"), "visible");
+       changeVisibility(document.getElementById("r4Show"), "visible");
+       changeVisibility(document.getElementById("i1Show"), "visible");
+    }
+
+    // This function is only called if test is run from regard.
+    function regardStart() {
+       doChange();
+       setTimeout('regardTestInstance.scriptDone()', 200);
+    }
+    ]]></script>
+
+  <linearGradient id="grad">
+    <stop style="stop-color:crimson" offset="0" />
+    <stop style="stop-color:gold" offset="1" />
+  </linearGradient>
+
+
+
+  <g id="test-content" stroke="black" stroke-width="1">
+      <g stroke="black" onclick="doChange()" >
+         <circle cx="100" cy="100"  r="10"           fill="crimson"/>
+         <line   x1="85"  x2="115" y1="100" y2="100" fill="none" />
+         <line   x1="100" x2="100" y1="85"  y2="115" fill="none" />
+      </g>
+      <text class="legend" style="text-anchor:start" stroke="none">
+         <tspan x="150" y="97">Click on the Click Target (crimson circle)</tspan>
+         <tspan x="150" y="113">to toggle visibility on elements.</tspan>
+      </text>
+
+    <g id="gHide" style="visibility:visible">
+      <rect  x="100" y="150" width="100" height="50" style="fill:#eee"/>
+      <rect  x="150" y="150" width="100" height="50" style="fill:gold"/>
+      <rect  x="200" y="150" width="100" height="50" style="fill:crimson"/>
+      <rect  x="250" y="150" width="100" height="50" style="fill:url(#grad)"/>
+      <image x="350" y="150" width="50"  height="50" 
+        xlink:href="../../resources/images/png2.png"/>
+    </g>
+
+    <g>
+      <g style="fill:#eee">
+         <rect  id="r1Hide" x="100" y="225" width="100" height="50"
+                style="visibility:visible"/></g>
+      <g style="fill:gold">
+         <rect  id="r2Hide" x="150" y="225" width="100" height="50" 
+                style="visibility:visible"/></g>
+      <g style="fill:crimson">
+         <rect  id="r3Hide" x="200" y="225" width="100" height="50"
+                style="visibility:visible"/></g>
+      <g style="fill:url(#grad)">
+         <rect  id="r4Hide" x="250" y="225" width="100" height="50" 
+                style="visibility:visible"/></g>
+      <image id="i1Hide" x="350" y="225" width="50" height="50" 
+             xlink:href="../../resources/images/png2.png"/>
+    </g>
+
+    <g id="gShow" style="visibility:hidden">
+      <rect  x="100" y="300" width="100" height="50" style="fill:#eee"/>
+      <rect  x="150" y="300" width="100" height="50" style="fill:gold"/>
+      <rect  x="200" y="300" width="100" height="50" style="fill:crimson"/>
+      <rect  x="250" y="300" width="100" height="50" style="fill:url(#grad)"/>
+      <image x="350" y="300" width="50"  height="50" 
+        xlink:href="../../resources/images/png2.png"/>
+    </g>
+
+    <g>
+     <g style="fill:#eee">
+         <rect  id="r1Show" x="100" y="375" width="100" height="50"
+                style="visibility:hidden"/></g>
+      <g style="fill:gold">
+         <rect  id="r2Show" x="150" y="375" width="100" height="50"
+                style="visibility:hidden"/></g>
+      <g style="fill:crimson">
+         <rect  id="r3Show" x="200" y="375" width="100" height="50"
+                style="visibility:hidden"/></g>
+      <g style="fill:url(#grad)">
+         <rect  id="r4Show" x="250" y="375" width="100" height="50"
+                style="visibility:hidden"/></g>
+      <g><image id="i1Show" x="350" y="375" width="50" height="50" 
+                style="visibility:hidden"
+                xlink:href="../../resources/images/png2.png"/></g>
+    </g>
+  </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/xAnimOnClick.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/xAnimOnClick.svg
new file mode 100644
index 0000000..6ddfaf8
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/xAnimOnClick.svg
@@ -0,0 +1,109 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of a rect's x attribute repeatedly starting from an       -->
+<!-- 'onclick' event handler.                                               -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: xAnimOnClick.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;rect&gt; x Animation in 'onclick'</title>
+
+    <text x="50%" y="45" class="title">&lt;rect&gt; x Animation in 'onclick'</text>
+
+    <script type="text/ecmascript">
+    var t, start, end, inc, cont, frac=0;    
+
+    function startAnim(evt, target, xStart, xEnd){
+        if (cont == 1) return;
+        t = document.getElementById(target);
+        start = xStart
+        end   = xEnd;
+        cont = 1;
+        cyclopse();
+    }
+
+    function stopAnim(evt) {
+        cont = 0;
+    }
+
+    function cyclopse() {
+        t.setAttribute('x', (end-start)*frac/100+start);
+        if (frac == 100) inc = -2;
+        if (frac ==   0) inc =  2;
+        frac += inc;
+        if (cont == 1)
+          setTimeout('cyclopse()', 50);
+    }
+    </script>
+
+    <g id="test-content">
+        <g transform="translate(75,125)">
+            <text class="legend" x="75" y="70">Position A</text>
+
+            <rect id="originalPlaceShadowBorder" stroke="black" fill="none"
+                  x="32" y="77" width="86" height="46" />
+
+            <g>
+                <circle cx="75" cy="100" r="10" style="fill:crimson;stroke:black;"/>
+                <line x1="75" x2="75" y1="90" y2="110" style="stroke:black;fill:none" />
+                <line x1="65" x2="85" y1="100" y2="100" style="stroke:black;fill:none" />
+            </g>
+        </g>
+
+        <g transform="translate(225,125)">
+            <text class="legend" x="75" y="70">Position B</text>
+
+            <rect id="targetPlaceShadowBorder"  fill="lightBlue" stroke="black"
+                  x="32" y="77" width="86" height="46"/>
+
+            <g >
+                <circle cx="75" cy="100" r="10" style="fill:crimson;stroke:black;"/>
+                <line x1="75" x2="75" y1="90" y2="110" style="stroke:black;fill:none" />
+                <line x1="65" x2="85" y1="100" y2="100" style="stroke:black;fill:none" />
+            </g>
+        </g>
+
+        <g id="play" onclick="startAnim(evt, 'targetRect', 110, 260)"
+           stroke="black" fill="#DDD" transform="translate(160, 260)" >
+            <rect x="0" y="0" width="50" height="40" rx="5" ry="5"/>
+            <polygon fill="green" points="10,10 40,20 10,30"/>
+        </g>
+
+        <g id="play" onclick="stopAnim(evt)"
+           stroke="black" fill="#DDD" transform="translate(240, 260)" >
+            <rect x="0" y="0" width="50" height="40" rx="5" ry="5"/>
+            <rect fill="yellow" x="10" y="10" width="10" height="20"/>
+            <rect fill="yellow" x="30" y="10" width="10" height="20"/>
+        </g>
+
+        <rect id="targetRect" x="110" y="205" width="80" height="40" style="fill:red;fill-opacity:0.5" />
+
+        <text class="legend">
+        <tspan x="225" y="330">Click on Play button (green triangle) to start animation</tspan>
+        <tspan x="225" y="345">Click on Pause button (yellow rects) to stop animation</tspan></text>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/xyModifOnClick.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/xyModifOnClick.svg
new file mode 100644
index 0000000..74049f4
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/xyModifOnClick.svg
@@ -0,0 +1,77 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Modification of a rect's x attribute in an 'onclick' event handler.       -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: xyModifOnClick.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;rect&gt; x modification in 'onclick'</title>
+
+    <text x="50%" y="45" class="title">&lt;rect&gt; x modification in 'onclick'</text>
+
+    <script type="text/ecmascript">
+
+    function moveToX(evt, target, val){
+        var r = evt.target;
+        var doc = r.ownerDocument;
+        var t = doc.getElementById(target);
+        t.setAttribute('x', val);
+    }
+
+    </script>
+
+    <g id="test-content" transform="translate(0,125)">
+        <g transform="translate(75,0)">
+            <text class="legend" x="75" y="70">Position A</text>
+
+            <rect id="originalPlaceShadowBorder" x="32" y="77" width="86" height="46" style="fill:none; 
stroke:black" />
+
+            <g onclick="moveToX(evt, 'targetRect', '110')">
+                <circle cx="75" cy="100" r="10" style="fill:crimson;stroke:black;"/>
+                <line x1="75" x2="75" y1="90" y2="110" style="stroke:black;fill:none" />
+                <line x1="65" x2="85" y1="100" y2="100" style="stroke:black;fill:none" />
+            </g>
+        </g>
+
+        <g transform="translate(225,0)">
+            <text class="legend" x="75" y="70">Position B</text>
+
+            <rect id="targetPlaceShadowBorder" x="32" y="77" width="86" height="46" style="fill:none; 
stroke:black" />
+
+            <g onclick="moveToX(evt, 'targetRect', '260')">
+                <circle cx="75" cy="100" r="10" style="fill:crimson;stroke:black;"/>
+                <line x1="75" x2="75" y1="90" y2="110" style="stroke:black;fill:none" />
+                <line x1="65" x2="85" y1="100" y2="100" style="stroke:black;fill:none" />
+            </g>
+        </g>
+
+        <rect id="targetRect" x="110" y="80" width="80" height="40" style="fill:crimson;" />
+
+        <text class="legend" x="225" y="145">Click on the Position A or Position B</text>
+        <text class="legend" x="225" y="160">target (crimson circle) to move the rectangle</text>
+        <text class="legend" x="225" y="175">to a new position</text>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/xyModifOnLoad.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/xyModifOnLoad.svg
new file mode 100644
index 0000000..3398d40
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/xyModifOnLoad.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Modification of an element used in a BackgroundImage                   -->
+<!--                                                                        -->
+<!-- @author vhardy apache org                                              -->
+<!-- @version $Id: xyModifOnLoad.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+<svg id="body" width="450" height="500" viewBox="0 0 450 500">
+    <title>&lt;rect&gt; x modification in 'onload'</title>
+
+    <text x="50%" y="45" class="title">&lt;rect&gt; x modification in 'onload'</text>
+
+    <script type="text/ecmascript">
+
+    function setXTo(evt, val){
+        // alert('In setXTo');
+        var r = evt.getTarget();
+        r.setAttribute('x', val);
+    }
+
+    </script>
+
+    <g id="test-content" transform="translate(0,125)">
+        <g transform="translate(75,0)">
+            <rect id="originalPlaceShadow" x="35" y="80" width="80" height="40" style="fill:crimson;"/>
+            <rect id="originalPlaceShadowBorder" x="32" y="77" width="86" height="46" style="fill:none; 
stroke:black" />
+
+            <text class="legend" x="75" y="135">&lt;rect&gt; position</text>
+            <text class="legend" x="75" y="150">before onload</text>
+        </g>
+
+        <g transform="translate(225,0)">
+            <rect id="targetPlaceShadow" x="35" y="80" width="80" height="40" style="fill:crimson;"/>
+            <rect id="targetPlaceShadowBorder" x="32" y="77" width="86" height="46" style="fill:none; 
stroke:black" />
+
+            <text class="legend" x="75" y="135">&lt;rect&gt; position</text>
+            <text class="legend" x="75" y="150">after onload</text>
+        </g>
+
+        <rect id="targetRect" x="110" y="80" width="80" height="40" style="fill:orange" 
onload="setXTo(evt,'260')"/>
+
+        <text class="legend" x="225" y="185">The modified rectangle is orange</text>
+        <text class="legend" x="225" y="200">and should show on the right</text>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/ignore-scripting/zeroSize.svg 
b/tests/data/svg/batik/tests/spec/ignore-scripting/zeroSize.svg
new file mode 100644
index 0000000..c70e5c1
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/ignore-scripting/zeroSize.svg
@@ -0,0 +1,238 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
+"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+
+<!-- ====================================================================== -->
+<!-- Modification of a rect's attributes                                    -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: zeroSize.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+  onload="doShowBounds=false">
+  <title>Resizing zero w/h items 'onload'</title>
+  <text x="50%" y="45" class="title">Resizing zero w/h items 'onload'</text>
+
+  <script type="text/ecmascript"><![CDATA[
+    var svgns = "http://www.w3.org/2000/svg";;
+    var root  = document.getRootElement();
+    var doShowBounds = true;
+    var stressTest   = false;
+
+    function resizeRect(id, w, h) {
+      var rect = document.getElementById(id);
+      var ow = rect.getAttribute("width");
+      var oh = rect.getAttribute("height");
+      rect.setAttribute("width",  w);
+      rect.setAttribute("height", h);
+      showBounds(rect);
+      if (stressTest)
+        setTimeout("resizeRect('"+id+"',"+ow+","+oh+")", 1000);
+    }
+
+    function resizeCircle(id, r) {
+      var circle = document.getElementById(id);
+      var or = circle.getAttribute("r");
+      circle.setAttribute("r",  r);
+      showBounds(circle);
+      if (stressTest)
+        setTimeout("resizeCircle('"+id+"',"+or+")", 1000);
+    }
+    function resizeEllipse(id, rx, ry) {
+      var ellipse = document.getElementById(id);
+      var orx = ellipse.getAttribute("rx");
+      var ory = ellipse.getAttribute("ry");
+      ellipse.setAttribute("rx",  rx);
+      ellipse.setAttribute("ry",  ry);
+      showBounds(ellipse);
+      if (stressTest)
+        setTimeout("resizeEllipse('"+id+"',"+orx+","+ory+")", 1000);
+    }
+
+    function showBounds(shape) {
+      if (!doShowBounds) return;
+      var bbox = shape.getBBox();
+      var elem;
+//      System.err.println("XXX: [" + bbox.x + ", " +bbox.y + ", " + 
+//                         bbox.width + ", " + bbox.height + "]");
+      if (bbox.width == 0) {
+         if (bbox.height == 0) {
+           elem = document.createElementNS(svgns, "circle");
+           elem.setAttribute("cx", ""+bbox.x);
+           elem.setAttribute("cy", ""+bbox.y);
+           elem.setAttribute("r", "5");
+           elem.setAttribute("stroke","none");
+           elem.setAttribute("fill","lime");
+           elem.setAttribute("fill-opacity", ".5");
+           shape.parentNode.insertBefore(elem, shape.nextSibling);
+           return;
+         } else {
+           elem = document.createElementNS(svgns, "line");
+           elem.setAttribute("x1", ""+bbox.x);
+           elem.setAttribute("y1", ""+bbox.y);
+           elem.setAttribute("x2", ""+bbox.x);
+           elem.setAttribute("y2", ""+(bbox.y+bbox.height));
+         }
+      } else if (bbox.height == 0) {
+           elem = document.createElementNS(svgns, "line");
+           elem.setAttribute("x1", ""+bbox.x);
+           elem.setAttribute("y1", ""+bbox.y);
+           elem.setAttribute("x2", ""+(bbox.x+bbox.width));
+           elem.setAttribute("y2", ""+bbox.y);
+      } else {
+        elem = document.createElementNS(svgns, "rect");
+        elem.setAttribute("x", ""+bbox.x);
+        elem.setAttribute("y", ""+bbox.y);
+        elem.setAttribute("width", ""+bbox.width);
+        elem.setAttribute("height", ""+bbox.height);
+      }
+      elem.setAttribute("fill","none");
+      elem.setAttribute("stroke-width", "5");
+      elem.setAttribute("stroke", "lime");
+      elem.setAttribute("stroke-opacity", ".5");
+      shape.parentNode.insertBefore(elem, shape.nextSibling);
+    }
+    ]]></script>
+
+  <linearGradient id="testGrad" gradientUnits="objectBoundingBox"
+    x1="0" y1="1" x2="1" y2="0">
+    <stop offset="0" style="stop-color:crimson" />
+    <stop offset="1" style="stop-color:gold" />
+  </linearGradient>
+
+  <g id="test-content">
+    <g fill="red" stroke="black" stroke-width="2">
+       <rect id="r1-1" x="10" y="60" width="0" height="0" 
+        onload="resizeRect('r1-1', '50', '50')"/>
+       <rect id="r1-2" x="70" y="60" width="50" height="0" 
+        onload="resizeRect('r1-2', '50', '50')"/>
+       <rect id="r1-3" x="130" y="60" width="0" height="50" 
+        onload="resizeRect('r1-3', '50', '50')"/>
+       <circle id="c1-1" cx="215" cy="85" r="0" 
+        onload="resizeCircle('c1-1', '25')"/>
+       <ellipse id="e1-1" cx="275" cy="85" rx="0" ry="0" 
+        onload="resizeEllipse('e1-1', '25', '15')"/>
+       <ellipse id="e1-2" cx="335" cy="85" rx="25" ry="0" 
+        onload="resizeEllipse('e1-2', '25', '15')"/>
+       <ellipse id="e1-3" cx="395" cy="85" rx="0" ry="15" 
+        onload="resizeEllipse('e1-3', '25', '15')"/>
+    </g>
+
+    <g fill="url(#testGrad)" stroke="black" stroke-width="2">
+       <rect id="r2-1" x="10" y="120" width="0" height="0" 
+        onload="resizeRect('r2-1', '50', '50')"/>
+       <rect id="r2-2" x="70" y="120" width="50" height="0" 
+        onload="resizeRect('r2-2', '50', '50')"/>
+       <rect id="r2-3" x="130" y="120" width="0" height="50" 
+        onload="resizeRect('r2-3', '50', '50')"/>
+       <circle id="c2-1" cx="215" cy="145" r="0" 
+        onload="resizeCircle('c2-1', '25')"/>
+       <ellipse id="e2-1" cx="275" cy="145" rx="0" ry="0" 
+        onload="resizeEllipse('e2-1', '25', '15')"/>
+       <ellipse id="e2-2" cx="335" cy="145" rx="50" ry="0" 
+        onload="resizeEllipse('e2-2', '25', '15')"/>
+       <ellipse id="e2-3" cx="395" cy="145" rx="0" ry="50" 
+        onload="resizeEllipse('e2-3', '25', '15')"/>
+    </g>
+          
+    <g fill="red" stroke="black" stroke-width="2">
+       <rect id="r3-1" x="10" y="180" width="50" height="50" 
+        onload="resizeRect('r3-1', '0', '0')"/>
+       <rect id="r3-2" x="70" y="180" width="50" height="50" 
+        onload="resizeRect('r3-2', '50', '0')"/>
+       <rect id="r3-3" x="130" y="180" width="50" height="50" 
+        onload="resizeRect('r3-3', '0', '50')"/>
+       <circle id="c3-1" cx="215" cy="205" r="25" 
+        onload="resizeCircle('c3-1', '0')"/>
+       <ellipse id="e3-1" cx="275" cy="205" rx="25" ry="15" 
+        onload="resizeEllipse('e3-1', '0', '0')"/>
+       <ellipse id="e3-2" cx="335" cy="205" rx="25" ry="15" 
+        onload="resizeEllipse('e3-2', '25', '0')"/>
+       <ellipse id="e3-3" cx="395" cy="205" rx="25" ry="15" 
+        onload="resizeEllipse('e3-3', '0', '15')"/>
+    </g>
+
+    <g fill="url(#testGrad)" stroke="black" stroke-width="2">
+       <rect id="r4-1" x="10" y="240" width="50" height="50" 
+        onload="resizeRect('r4-1', '0', '0')"/>
+       <rect id="r4-2" x="70" y="240" width="50" height="50" 
+        onload="resizeRect('r4-2', '50', '0')"/>
+       <rect id="r4-3" x="130" y="240" width="50" height="50" 
+        onload="resizeRect('r4-3', '0', '50')"/>
+       <circle id="c4-1" cx="215" cy="265" r="25" 
+        onload="resizeCircle('c4-1', '0')"/>
+       <ellipse id="e4-1" cx="275" cy="265" rx="25" ry="15" 
+        onload="resizeEllipse('e4-1', '0', '0')"/>
+       <ellipse id="e4-2" cx="335" cy="265" rx="25" ry="15" 
+        onload="resizeEllipse('e4-2', '25', '0')"/>
+       <ellipse id="e4-3" cx="395" cy="265" rx="25" ry="15" 
+        onload="resizeEllipse('e4-3', '0', '15')"/>
+    </g>
+
+    <g transform="translate(0,300)">
+       <image id="i5-1" x="10" y="0" width="50" height="50" 
+        xlink:href="../../resources/images/png2.png"
+        onload="resizeRect('i5-1', '0', '0')"/>
+       <image id="i5-2" x="70" y="0" width="50" height="50" 
+        xlink:href="../../resources/images/png2.png"
+        onload="resizeRect('i5-2', '50', '0')"/>
+       <image id="i5-3" x="130" y="0" width="50" height="50" 
+        xlink:href="../../resources/images/png2.png"
+        onload="resizeRect('i5-3', '0', '50')"/>
+
+       <image id="i5-4" x="190" y="0" width="0" height="0" 
+        xlink:href="../../resources/images/png2.png"
+        onload="resizeRect('i5-4', '50', '50')"/>
+       <image id="i5-5" x="250" y="0" width="50" height="0" 
+        xlink:href="../../resources/images/png2.png"
+        onload="resizeRect('i5-5', '50', '50')"/>
+       <image id="i5-6" x="310" y="0" width="0" height="50" 
+        xlink:href="../../resources/images/png2.png"
+        onload="resizeRect('i5-6', '50', '50')"/>
+    </g>
+
+    <g transform="translate(0,360)">
+       <image id="i6-1" x="10" y="0" width="50" height="50" 
+        xlink:href="../../resources/images/svg2.svg"
+        onload="resizeRect('i6-1', '0', '0')"/>
+       <image id="i6-2" x="70" y="0" width="50" height="50" 
+        xlink:href="../../resources/images/svg2.svg"
+        onload="resizeRect('i6-2', '50', '0')"/>
+       <image id="i6-3" x="130" y="0" width="50" height="50" 
+        xlink:href="../../resources/images/svg2.svg"
+        onload="resizeRect('i6-3', '0', '50')"/>
+
+       <image id="i6-4" x="190" y="0" width="0" height="0" 
+        xlink:href="../../resources/images/svg2.svg"
+        onload="resizeRect('i6-4', '50', '50')"/>
+       <image id="i6-5" x="250" y="0" width="50" height="0" 
+        xlink:href="../../resources/images/svg2.svg"
+        onload="resizeRect('i6-5', '50', '50')"/>
+       <image id="i6-6" x="310" y="0" width="0" height="50" 
+        xlink:href="../../resources/images/svg2.svg"
+        onload="resizeRect('i6-6', '50', '50')"/>
+    </g>
+  </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/linking/anchor.png 
b/tests/data/svg/batik/tests/spec/linking/anchor.png
new file mode 100644
index 0000000..9e2cd22
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/linking/anchor.png differ
diff --git a/tests/data/svg/batik/tests/spec/linking/anchor.svg 
b/tests/data/svg/batik/tests/spec/linking/anchor.svg
new file mode 100644
index 0000000..701cb71
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/linking/anchor.svg
@@ -0,0 +1,728 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- This interactive test validates that the <anchor> tag works on the     -->
+<!-- various element types.                                                 -->
+<!--                                                                        -->
+<!-- @author vhardy apache org                                              -->
+<!-- @version $Id: anchor.svg 503215 2007-02-03 14:53:42Z deweese $ -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; >
+<title>Anchor (&lt;a/&gt;) Test</title>
+
+    <style type="text/css"><![CDATA[
+        .label { text-anchor: middle; }
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40"
+             >Anchor (&lt;a&gt;) Test<desc
+             >Click in any of the links in the 
+              table. You should see a smilley.</desc></text>
+
+        <defs>
+            <g id="smilley">
+                <g  transform="scale(.8, .8) translate(-15,-15)">
+                    <circle cx="15" cy="15" r="10"/>
+                    <circle cx="12" cy="12" r="1.5" fill="black"/>
+                    <circle cx="17" cy="12" r="1.5" fill="black"/>
+                    <path d="M 10 19 A 8 8 0 0 0 20 19" 
+                          stroke="black" stroke-width="1"/>
+                </g>
+            </g>
+
+            <g id="unsmilley">
+                <g  transform="scale(.8, .8) translate(-15,-15)">
+                    <circle cx="15" cy="15" r="10"/>
+                    <circle cx="12" cy="12" r="1.5" fill="black"/>
+                    <circle cx="17" cy="12" r="1.5" fill="black"/>
+                    <path d="M 10 19 A 8 8 0 0 1 20 19" fill="none"
+                          stroke="black" stroke-width="1"/>
+                </g>
+            </g>
+
+            <g id="success" fill="rgb(0,255,0)">
+                <use xlink:href="#smilley" />
+            </g>
+
+            <g id="failure" fill="rgb(255,0,0)">
+                <use xlink:href="#unsmilley" />
+            </g>
+
+        </defs>
+
+        <g transform="translate(5, 5) scale(.2)">
+            <a xlink:href="#svgView(viewBox(0,0,450,500))">
+                <use xlink:href="#success"/>
+                <text y="-11" font-size="2" fill="blue" text-decoration="underline" 
text-anchor="middle">Return to test</text>
+            </a>
+        </g>
+
+        <g transform="translate(10, 5) scale(.2)">
+            <a xlink:href="#svgView(viewBox(0,0,450,500))">
+                <use xlink:href="#failure"/>
+                <text y="-11" font-size="2" fill="blue" text-decoration="underline" 
text-anchor="middle">Return to test</text>
+            </a>
+        </g>
+
+
+
+        <g id="graphicsElementsTable" transform="translate(4, 60)">
+
+            <g id="additionalInfoHeader">
+               <g stroke="black">
+                  <rect x="60"  y="0" width="60" height="40" fill="#AFA"/>
+                  <rect x="120" y="0" width="90" height="40" fill="#FCC"/>
+                  <rect x="210" y="0" width="90" height="40" fill="#FCC"/>
+                  <rect x="300" y="0" width="70" height="40" fill="#AFA"/>
+                  <rect x="370" y="0" width="70" height="40" fill="#FCC"/>
+               </g>
+               <g id="additionalInfoHeaderLabels" class="label">
+                  <text x="90"  y="15">Link</text>
+
+                  <text x="165" y="15">preventDefault</text>
+                  <text x="165" y="30">inside a</text>
+
+                  <text x="255" y="15">preventDefault</text>
+                  <text x="255" y="30">outside a</text>
+
+                  <text x="335" y="15">mouseover</text>
+                  <text x="335" y="30">prvtDflt</text>
+
+                  <text x="405" y="15">click</text>
+                  <text x="405" y="30">prvtDflt</text>
+               </g>
+            </g>
+
+            <g id="rectRow" transform="translate(0, 40)">
+                <g fill="white" stroke="black">
+                    <rect x="0"    y="0" width="60" height="20"/>
+                    <rect x="60 "  y="0" width="60" height="20"/>
+                    <rect x="120"  y="0" width="90" height="20"/>
+                    <rect x="210"  y="0" width="90" height="20"/>
+                    <rect x="300"  y="0" width="70" height="20"/>
+                    <rect x="370"  y="0" width="70" height="20"/>
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;rect&gt;</text>
+
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                   <rect id="testRect" x="80" y="3" fill="gold" width="20" height="14" />
+                </a>
+
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <rect onclick="evt.preventDefault()"
+                         onmouseover="evt.preventDefault()"
+                         x="155" y="3" fill="gold" width="20" height="14" />
+                </a>
+
+                <g transform="translate(90,0)"
+                   onclick="evt.preventDefault()"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <rect x="155" y="3" fill="gold" width="20" height="14" />
+                </a>
+                </g>
+
+                <g transform="translate(170,0)"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                   <rect x="155" y="3" fill="gold" width="20" height="14" />
+                </a>
+                </g>
+
+                <g transform="translate(240,0)"
+                   onclick="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <rect x="155" y="3" fill="gold" width="20" height="14" />
+                </a>
+                </g>
+
+            </g> <!-- "rectRow" -->
+
+            <g id="circleRow" transform="translate(0, 60)">
+                <g fill="white" stroke="black">
+                    <rect x="0"    y="0" width="60" height="20"/>
+                    <rect x="60 "  y="0" width="60" height="20"/>
+                    <rect x="120"  y="0" width="90" height="20"/>
+                    <rect x="210"  y="0" width="90" height="20"/>
+                    <rect x="300"  y="0" width="70" height="20"/>
+                    <rect x="370"  y="0" width="70" height="20"/>
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;circle&gt;</text>
+
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                   <circle id="testCircle" cx="90" cy="10" r="8" fill="crimson" />
+                </a>
+
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <circle id="testCirclePd1" 
+                           onclick    ="evt.preventDefault()"
+                           onmouseover="evt.preventDefault()"
+                           cx="165" cy="10" r="8" fill="crimson" />
+                </a>
+
+                <g transform="translate(90,0)"
+                   onclick="evt.preventDefault()"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <circle cx="165" cy="10" r="8" fill="crimson" />
+                </a>
+                </g>
+
+                <g transform="translate(170,0)"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                   <circle cx="165" cy="10" r="8" fill="crimson" />
+                </a>
+                </g>
+
+                <g transform="translate(240,0)"
+                   onclick="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <circle cx="165" cy="10" r="8" fill="crimson" />
+                </a>
+                </g>
+                            </g> <!-- "circleRow" -->
+
+            <g id="ellipseRow" transform="translate(0, 80)">
+                <g fill="white" stroke="black">
+                    <rect x="0"    y="0" width="60" height="20"/>
+                    <rect x="60 "  y="0" width="60" height="20"/>
+                    <rect x="120"  y="0" width="90" height="20"/>
+                    <rect x="210"  y="0" width="90" height="20"/>
+                    <rect x="300"  y="0" width="70" height="20"/>
+                    <rect x="370"  y="0" width="70" height="20"/>
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;ellipse&gt;</text>
+
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                   <ellipse cx="90" cy="10" rx="20" ry="6" fill="gold" />
+                </a>
+
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <ellipse onclick    ="evt.preventDefault()"
+                            onmouseover="evt.preventDefault()"
+                            cx="165" cy="10" rx="20" ry="6" fill="gold" />
+                </a>
+
+                <g transform="translate(90,0)"
+                   onclick="evt.preventDefault()"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <ellipse cx="165" cy="10" rx="20" ry="6" fill="gold" />
+                </a>
+                </g>
+
+                <g transform="translate(170,0)"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                   <ellipse cx="165" cy="10" rx="20" ry="6" fill="gold" />
+                </a>
+                </g>
+
+                <g transform="translate(240,0)"
+                   onclick="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <ellipse cx="165" cy="10" rx="20" ry="6" fill="gold" />
+                </a>
+                </g>
+            </g> <!-- "ellipseRow" -->
+
+            <g id="lineRow" transform="translate(0, 100)">
+                <g fill="white" stroke="black">
+                    <rect x="0"    y="0" width="60" height="20"/>
+                    <rect x="60 "  y="0" width="60" height="20"/>
+                    <rect x="120"  y="0" width="90" height="20"/>
+                    <rect x="210"  y="0" width="90" height="20"/>
+                    <rect x="300"  y="0" width="70" height="20"/>
+                    <rect x="370"  y="0" width="70" height="20"/>
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;line&gt;</text>
+
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                   <line x1="70" y1="10" x2="110" y2="10" stroke="gold" stroke-width="4" />
+                </a>
+
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <line onclick="evt.preventDefault()"
+                         onmouseover="evt.preventDefault()"
+                         x1="145" y1="10" x2="185" y2="10" 
+                         stroke="gold" stroke-width="4" />
+                </a>
+
+
+                <g transform="translate(90,0)"
+                   onclick="evt.preventDefault()"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <line x1="145" y1="10" x2="185" y2="10" 
+                         stroke="gold" stroke-width="4" />
+                </a>
+                </g>
+
+                <g transform="translate(170,0)"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                   <line x1="145" y1="10" x2="185" y2="10" 
+                         stroke="gold" stroke-width="4" />
+                </a>
+                </g>
+
+                <g transform="translate(240,0)"
+                   onclick="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <line x1="145" y1="10" x2="185" y2="10" 
+                         stroke="gold" stroke-width="4" />
+                </a>
+                </g>
+            </g> <!-- "lineRow" -->
+
+            <g id="polylineRow" transform="translate(0, 120)">
+                <g fill="white" stroke="black">
+                    <rect x="0"    y="0" width="60" height="20"/>
+                    <rect x="60 "  y="0" width="60" height="20"/>
+                    <rect x="120"  y="0" width="90" height="20"/>
+                    <rect x="210"  y="0" width="90" height="20"/>
+                    <rect x="300"  y="0" width="70" height="20"/>
+                    <rect x="370"  y="0" width="70" height="20"/>
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;polyline&gt;</text>
+
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                   <polyline transform="translate(60, 0)" points="5,10 5,15 30,15 30,5 55,5 55,10" 
+                             fill="none" stroke="gold" stroke-width="4" />
+                </a>
+
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <polyline onclick="evt.preventDefault()"
+                             onmouseover="evt.preventDefault()"
+                             points="140,10 140,15 165,15 165,5 190,5 190,10" 
+                             fill="none" stroke="gold" stroke-width="4" />
+                </a>
+                <g transform="translate(90,0)"
+                   onclick="evt.preventDefault()"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <polyline points="140,10 140,15 165,15 165,5 190,5 190,10" 
+                             fill="none" stroke="gold" stroke-width="4" />
+                </a>
+                </g>
+
+                <g transform="translate(170,0)"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                   <polyline points="140,10 140,15 165,15 165,5 190,5 190,10" 
+                             fill="none" stroke="gold" stroke-width="4" />
+                </a>
+                </g>
+
+                <g transform="translate(240,0)"
+                   onclick="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <polyline points="140,10 140,15 165,15 165,5 190,5 190,10" 
+                             fill="none" stroke="gold" stroke-width="4" />
+                </a>
+                </g>
+            </g> <!-- "polylineRow" -->
+
+            <g id="polygonRow" transform="translate(0, 140)">
+                <g fill="white" stroke="black">
+                    <rect x="0"    y="0" width="60" height="20"/>
+                    <rect x="60 "  y="0" width="60" height="20"/>
+                    <rect x="120"  y="0" width="90" height="20"/>
+                    <rect x="210"  y="0" width="90" height="20"/>
+                    <rect x="300"  y="0" width="70" height="20"/>
+                    <rect x="370"  y="0" width="70" height="20"/>
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;polygon&gt;</text>
+
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                   <polygon points="65,10 65,15 90,15 90,5 115,5 115,10"
+                            fill="gold" stroke="black" stroke-width="1" />
+                </a>
+
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <polygon onclick="evt.preventDefault()"
+                            onmouseover="evt.preventDefault()"
+                            points="140,10 140,15 165,15 165,5 190,5 190,10"
+                            fill="gold" stroke="black" stroke-width="1" />
+                </a>
+
+                <g transform="translate(90,0)"
+                   onclick="evt.preventDefault()"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <polygon points="140,10 140,15 165,15 165,5 190,5 190,10"
+                            fill="gold" stroke="black" stroke-width="1" />
+                </a>
+                </g>
+
+                <g transform="translate(170,0)"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                   <polygon points="140,10 140,15 165,15 165,5 190,5 190,10"
+                            fill="gold" stroke="black" stroke-width="1" />
+                </a>
+                </g>
+
+                <g transform="translate(240,0)"
+                   onclick="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <polygon points="140,10 140,15 165,15 165,5 190,5 190,10"
+                            fill="gold" stroke="black" stroke-width="1" />
+                </a>
+                </g>
+            </g> <!-- "polygonRow" -->
+
+            <g id="pathRow" transform="translate(0, 160)">
+                <g fill="white" stroke="black">
+                    <rect x="0"    y="0" width="60" height="20"/>
+                    <rect x="60 "  y="0" width="60" height="20"/>
+                    <rect x="120"  y="0" width="90" height="20"/>
+                    <rect x="210"  y="0" width="90" height="20"/>
+                    <rect x="300"  y="0" width="70" height="20"/>
+                    <rect x="370"  y="0" width="70" height="20"/>
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;path&gt;</text>
+
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                   <path d="M65,10l0,5l25,0l0,-10l25,0l0,5Z"
+                         fill="gold" stroke="black" stroke-width="1" />
+                </a>
+
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <path onclick="evt.preventDefault()"
+                         onmouseover="evt.preventDefault()"
+                         d="M140,10l0,5l25,0l0,-10l25,0l0,5Z"
+                         fill="gold" stroke="black" stroke-width="1" />
+                </a>
+
+                <g transform="translate(90,0)"
+                   onclick="evt.preventDefault()"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <path d="M140,10l0,5l25,0l0,-10l25,0l0,5Z"
+                         fill="gold" stroke="black" stroke-width="1" />
+                </a>
+                </g>
+
+                <g transform="translate(170,0)"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                   <path d="M140,10l0,5l25,0l0,-10l25,0l0,5Z"
+                         fill="gold" stroke="black" stroke-width="1" />
+                </a>
+                </g>
+
+                <g transform="translate(240,0)"
+                   onclick="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <path d="M140,10l0,5l25,0l0,-10l25,0l0,5Z"
+                         fill="gold" stroke="black" stroke-width="1" />
+                </a>
+                </g>
+            </g> <!-- "pathRow" -->
+
+            <g id="imageRow" transform="translate(0, 180)">
+                <g fill="white" stroke="black">
+                    <rect x="0"    y="0" width="60" height="20"/>
+                    <rect x="60 "  y="0" width="60" height="20"/>
+                    <rect x="120"  y="0" width="90" height="20"/>
+                    <rect x="210"  y="0" width="90" height="20"/>
+                    <rect x="300"  y="0" width="70" height="20"/>
+                    <rect x="370"  y="0" width="70" height="20"/>
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;image&gt;</text>
+
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                    <image x="68" y="1" width="43" height="18" 
+                           xlink:href="../../resources/images/tde.jpg"/>
+                </a>
+
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                    <image onclick="evt.preventDefault()"
+                           onmouseover="evt.preventDefault()"
+                           x="143" y="1" width="43" height="18" 
+                           xlink:href="../../resources/images/tde.jpg"/>
+                </a>
+
+                <g transform="translate(90,0)"
+                   onclick="evt.preventDefault()"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                    <image x="143" y="1" width="43" height="18" 
+                           xlink:href="../../resources/images/tde.jpg"/>
+                </a>
+                </g>
+
+                <g transform="translate(170,0)"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                    <image x="143" y="1" width="43" height="18" 
+                           xlink:href="../../resources/images/tde.jpg"/>
+                </a>
+                </g>
+
+                <g transform="translate(240,0)"
+                   onclick="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                    <image x="143" y="1" width="43" height="18" 
+                           xlink:href="../../resources/images/tde.jpg"/>
+                </a>
+                </g>
+            </g> <!-- "imageRow" -->
+
+            <g id="svgImageRow" transform="translate(0, 200)">
+                <g fill="white" stroke="black">
+                    <rect x="0"    y="0" width="60" height="20"/>
+                    <rect x="60 "  y="0" width="60" height="20"/>
+                    <rect x="120"  y="0" width="90" height="20"/>
+                    <rect x="210"  y="0" width="90" height="20"/>
+                    <rect x="300"  y="0" width="70" height="20"/>
+                    <rect x="370"  y="0" width="70" height="20"/>
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;image&gt;</text>
+
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                    <image x="80" y="2" width="24" height="18" 
+                           xlink:href="../../resources/images/svg.svg"/>
+                </a>
+
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                    <image onclick="evt.preventDefault()"
+                           onmouseover="evt.preventDefault()"
+                           x="155" y="2" width="24" height="18" 
+                           xlink:href="../../resources/images/svg.svg"/>
+                </a>
+
+                <g transform="translate(90,0)"
+                   onclick="evt.preventDefault()"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                    <image x="155" y="2" width="24" height="18" 
+                           xlink:href="../../resources/images/svg.svg"/>
+                </a>
+                </g>
+
+                <g transform="translate(170,0)"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                    <image x="155" y="2" width="24" height="18" 
+                           xlink:href="../../resources/images/svg.svg"/>
+                </a>
+                </g>
+
+                <g transform="translate(240,0)"
+                   onclick="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                    <image x="155" y="2" width="24" height="18" 
+                           xlink:href="../../resources/images/svg.svg"/>
+                </a>
+                </g>
+            </g> <!-- "svgImageRow" -->
+
+            <g id="textRow" transform="translate(0, 220)">
+                <g fill="white" stroke="black">
+                    <rect x="0"    y="0" width="60" height="20"/>
+                    <rect x="60 "  y="0" width="60" height="20"/>
+                    <rect x="120"  y="0" width="90" height="20"/>
+                    <rect x="210"  y="0" width="90" height="20"/>
+                    <rect x="300"  y="0" width="70" height="20"/>
+                    <rect x="370"  y="0" width="70" height="20"/>
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;text&gt;</text>
+
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                    <text x="90" y="15" text-anchor="middle">Ho, la, la!</text>
+                </a>
+
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <text onclick="evt.preventDefault()"
+                         onmouseover="evt.preventDefault()"
+                         x="165" y="15" text-anchor="middle">Ho, la, la!</text>
+                </a>
+
+                <g transform="translate(90,0)"
+                   onclick="evt.preventDefault()"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <text x="165" y="15" text-anchor="middle">Ho, la, la!</text>
+                </a>
+                </g>
+
+                <g transform="translate(170,0)"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                   <text x="165" y="15" text-anchor="middle">Ho, la, la!</text>
+                </a>
+                </g>
+
+                <g transform="translate(240,0)"
+                   onclick="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                   <text x="165" y="15" text-anchor="middle">Ho, la, la!</text>
+                </a>
+                </g>
+            </g> <!-- "textRow" -->
+
+            <g id="useRow" transform="translate(0, 240)">
+                <g fill="white" stroke="black">
+                    <rect x="0"    y="0" width="60" height="20"/>
+                    <rect x="60 "  y="0" width="60" height="20"/>
+                    <rect x="120"  y="0" width="90" height="20"/>
+                    <rect x="210"  y="0" width="90" height="20"/>
+                    <rect x="300"  y="0" width="70" height="20"/>
+                    <rect x="370"  y="0" width="70" height="20"/>
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;use&gt;</text>
+
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                    <use xlink:href="#testRect" />
+                </a>
+
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                    <use onclick="evt.preventDefault()"
+                         onmouseover="evt.preventDefault()"
+                         x="75" xlink:href="#testRect" />
+                </a>
+
+                <g transform="translate(90,0)"
+                   onclick="evt.preventDefault()"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                    <use x="75" xlink:href="#testRect" />
+                </a>
+                </g>
+
+                <g transform="translate(170,0)"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                    <use x="75" xlink:href="#testRect" />
+                </a>
+                </g>
+
+                <g transform="translate(240,0)"
+                   onclick="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                    <use x="75" xlink:href="#testRect" />
+                </a>
+                </g>
+
+            </g> <!-- "useRow" -->
+
+            <g id="groupRow" transform="translate(0, 260)">
+                <g fill="white" stroke="black">
+                    <rect x="0"    y="0" width="60" height="20"/>
+                    <rect x="60 "  y="0" width="60" height="20"/>
+                    <rect x="120"  y="0" width="90" height="20"/>
+                    <rect x="210"  y="0" width="90" height="20"/>
+                    <rect x="300"  y="0" width="70" height="20"/>
+                    <rect x="370"  y="0" width="70" height="20"/>
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;g&gt;</text>
+
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                    <g>
+                        <use        xlink:href="#testRect" />
+                        <use x="10" xlink:href="#testCircle"/>
+                    </g>
+                </a>
+
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                    <g onclick="evt.preventDefault()"
+                         onmouseover="evt.preventDefault()">
+                        <use x="75" xlink:href="#testRect" />
+                        <use x="85" xlink:href="#testCircle"/>
+                    </g>
+                </a>
+
+                <g transform="translate(90,0)"
+                   onclick="evt.preventDefault()"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                    <g>
+                        <use x="75" xlink:href="#testRect" />
+                        <use x="85" xlink:href="#testCircle"/>
+                    </g>
+                </a>
+                </g>
+
+                <g transform="translate(170,0)"
+                   onmouseover="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                    <g>
+                        <use x="75" xlink:href="#testRect" />
+                        <use x="85" xlink:href="#testCircle"/>
+                    </g>
+                </a>
+                </g>
+
+                <g transform="translate(240,0)"
+                   onclick="evt.preventDefault()">
+                <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                    <g>
+                        <use x="75" xlink:href="#testRect" />
+                        <use x="85" xlink:href="#testCircle"/>
+                    </g>
+                </a>
+                </g>
+            </g> <!-- "groupRow" -->
+
+            <a xlink:href="#svgView(viewBox(8,2.5,4,4))">
+                <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+                    <g transform="translate(120,330)">
+                        <use        xlink:href="#testRect" />
+                        <use x="10" xlink:href="#testCircle"/>
+                    </g>
+                </a>
+            </a>
+
+            <text x="215" y="365" class="label"
+             >Element with two 'a' elems</text>
+
+        </g>
+    </g><!-- "content" -->
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/linking/anchorInsideText.png 
b/tests/data/svg/batik/tests/spec/linking/anchorInsideText.png
new file mode 100644
index 0000000..5f6e240
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/linking/anchorInsideText.png differ
diff --git a/tests/data/svg/batik/tests/spec/linking/anchorInsideText.svg 
b/tests/data/svg/batik/tests/spec/linking/anchorInsideText.svg
new file mode 100644
index 0000000..77070c2
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/linking/anchorInsideText.svg
@@ -0,0 +1,139 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- test anchor inside text                                                -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: anchorInsideText.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+        <text class="title" x="50%" y="40">test anchor inside text
+        <desc>Click in any of the links in the table. You should see a smilley.</desc></text>
+
+<g>
+
+        <defs>
+            <g id="smilley">
+                <g  transform="scale(.8, .8) translate(-15,-15)">
+                    <circle cx="15" cy="15" r="10"/>
+                    <circle cx="12" cy="12" r="1.5" fill="black"/>
+                    <circle cx="17" cy="12" r="1.5" fill="black"/>
+                    <path d="M 10 19 A 8 8 0 0 0 20 19" stroke="black" stroke-width="1"/>
+                </g>
+            </g>
+            <g id="successBlack" fill="#aaa">
+                <use xlink:href="#smilley" />
+            </g>
+            <g id="successCrimson" fill="crimson">
+                <use xlink:href="#smilley" />
+            </g>
+            <g id="successOrange" fill="orange">
+                <use xlink:href="#smilley" />
+            </g>
+            <g id="successBlue" fill="blue">
+                <use xlink:href="#smilley" />
+            </g>
+
+            <path id="Path1" style="fill:none; stroke:blue;" 
+                  d="M140 300 C140 150 280 150 280 300"/>
+
+        </defs>
+
+        <g transform="translate(5, 5) scale(.2)">
+            <use xlink:href="#successBlack"/>
+            <a xlink:href="#svgView(viewBox(0,0,450,500))">
+                <text y="-11" font-size="2" fill="blue" text-decoration="underline" 
text-anchor="middle">Return to test</text>
+            </a>
+        </g>
+        <g transform="translate(15, 5) scale(.2)">
+            <use xlink:href="#successCrimson"/>
+            <a xlink:href="#svgView(viewBox(0,0,450,500))">
+                <text y="-11" font-size="2" fill="blue" text-decoration="underline" 
text-anchor="middle">Return to test</text>
+            </a>
+        </g>
+        <g transform="translate(25, 5) scale(.2)">
+            <use xlink:href="#successOrange"/>
+            <a xlink:href="#svgView(viewBox(0,0,450,500))">
+                <text y="-11" font-size="2" fill="blue" text-decoration="underline" 
text-anchor="middle">Return to test</text>
+            </a>
+        </g>
+        <g transform="translate(35, 5) scale(.2)">
+            <use xlink:href="#successBlue"/>
+            <a xlink:href="#svgView(viewBox(0,0,450,500))">
+                <text y="-11" font-size="2" fill="blue" text-decoration="underline" 
text-anchor="middle">Return to test</text>
+            </a>
+        </g>
+
+        <view id="black" viewBox="3,2.5,4,4" />
+        <view id="crimson" viewBox="13,2.5,4,4" />
+        <view id="orange" viewBox="23,2.5,4,4" />
+        <view id="blue" viewBox="33,2.5,4,4" />
+
+<!-- ################################################## -->
+
+<a xlink:href="#black">
+<text x="50" y="100">This is simple text under the text element 
+<a xlink:href="#crimson"><tspan fill="crimson">and here is a simple tspan </tspan></a>
+and
+<tspan x="50" dy="1.1em" fill="orange"><a xlink:href="#orange">some more with nested <a 
xlink:href="#blue"><tspan fill="blue"> tspan </tspan></a>and more...</a></tspan>
+</text>
+</a>
+
+
+<!-- ################################################## -->
+
+<g transform="translate(0 300)" >
+<a xlink:href="#black">
+<text x="50" y="100">This is text with transform 
+<a xlink:href="#crimson"><tspan fill="crimson">and here is a simple tspan </tspan></a>
+and
+<tspan x="50" dy="1.1em" fill="orange"><a xlink:href="#orange">some more with nested <a 
xlink:href="#blue"><tspan fill="blue"> tspan </tspan></a> and more...</a></tspan>
+</text>
+</a>
+</g>
+
+<!-- ################################################## -->
+
+<use xlink:href="#Path1" />
+
+<a xlink:href="#black">
+<text x="50" y="300" fill="black">This is simple
+<textPath fill="crimson" xlink:href="#Path1" startOffset="0%"><a xlink:href="#crimson">text on a path
+<a xlink:href="#orange"><tspan fill="orange" dy="-10">with nested tspan</tspan></a>
+<tspan dy="10"> and dy attributes </tspan></a></textPath>
+<tspan fill="blue" dx="10"><a xlink:href="#blue">all with</a></tspan> different links.
+</text>
+</a>
+
+
+<text x="50%" y="350" text-anchor="middle">Only the 
+<a xlink:href="#crimson"><tspan fill="crimson">crimson tspan</tspan></a> has an anchor</text>
+
+</g>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/linking/linkingTransform.png 
b/tests/data/svg/batik/tests/spec/linking/linkingTransform.png
new file mode 100644
index 0000000..8651dbc
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/linking/linkingTransform.png differ
diff --git a/tests/data/svg/batik/tests/spec/linking/linkingTransform.svg 
b/tests/data/svg/batik/tests/spec/linking/linkingTransform.svg
new file mode 100644
index 0000000..59cd18c
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/linking/linkingTransform.svg
@@ -0,0 +1,83 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Linking and viewBox test.                                                 -->
+<!--                                                                           -->
+<!-- @author Thierry Kormann sophia inria fr                                   -->
+<!-- @version $Id: linkingTransform.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Linking and transform test</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+
+    <g id="testContent">
+
+  <text x="225" y="50" class="title">
+Linking and transform test
+  </text>
+
+<defs>
+  <g id="arrow">
+    <polygon points="0 -20 20 0 10 0 10 20 -10 20 -10 0 -20 0" />
+  </g>
+</defs>
+
+<g transform="translate(20 70)">
+
+  <a xlink:href="#svgView(transform(translate(0,-50))">
+  <use xlink:href="#arrow" transform="translate(205 120)"/>
+  </a>
+
+  <a xlink:href="#svgView(transform(translate(50,0))">
+  <use xlink:href="#arrow" transform="translate(255 180)rotate(90)"/>
+  </a>
+
+  <a xlink:href="#svgView(transform(translate(-50,0))">
+  <use xlink:href="#arrow" transform="translate(155 180)rotate(-90)"/>
+  </a>
+
+  <a xlink:href="#svgView(transform(translate(0,50))">
+  <use xlink:href="#arrow" transform="translate(205 240)rotate(180)"/>
+  </a>
+
+</g>
+
+<a xlink:href="#body">
+<circle cx="225" cy="250" r="10" />
+</a>
+
+
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/linking/linkingViewBox.png 
b/tests/data/svg/batik/tests/spec/linking/linkingViewBox.png
new file mode 100644
index 0000000..bf2b9a9
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/linking/linkingViewBox.png differ
diff --git a/tests/data/svg/batik/tests/spec/linking/linkingViewBox.svg 
b/tests/data/svg/batik/tests/spec/linking/linkingViewBox.svg
new file mode 100644
index 0000000..161d0cc
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/linking/linkingViewBox.svg
@@ -0,0 +1,85 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Linking and viewBox test.                                                 -->
+<!--                                                                           -->
+<!-- @author Thierry Kormann sophia inria fr                                   -->
+<!-- @version $Id: linkingViewBox.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Linking and viewBox test</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+
+    <g id="testContent">
+
+  <text x="225" y="50" class="title">
+Linking and viewBox test
+  </text>
+
+<a xlink:href="#svgView(viewBox(125,125,100,100))">
+  <text x="120" y="90" class="title" style="fill:blue;text-decoration:underline">
+Click here to start...
+  </text>
+</a>
+
+<g transform="translate(125 125)" 
+   style="stroke:black;stroke-width:4;font-size:12;text-anchor:middle">
+
+<rect x="0"   y="0"   width="100" height="100" style="fill:crimson" />
+<a xlink:href="#svgView(viewBox(235,125,100,100))"> <!-- go to orange -->
+<text x="50" y="50" style="fill:blue;stroke:none;text-decoration:underline">Go to 'orange'</text>
+</a>
+
+
+<rect x="110" y="0"   width="100" height="100" style="fill:orange" />
+<a xlink:href="#svgView(viewBox(125,235,100,100))"> <!-- go to gold -->
+<text x="160" y="50" style="fill:blue;stroke:none;text-decoration:underline">Go to 'gold'</text>
+</a>
+
+
+<rect x="0"   y="110" width="100" height="100" style="fill:gold" />
+<a xlink:href="#svgView(viewBox(235,235,100,100))"> <!-- go to grey -->
+<text x="50" y="160" style="fill:blue;stroke:none;text-decoration:underline">Go to 'grey'</text>
+</a>
+
+
+<rect x="110" y="110" width="100" height="100" style="fill:#eee" />
+<a xlink:href="#svgView(viewBox(125,125,100,100))"> <!-- go to crimson -->
+<text x="160" y="160" style="fill:blue;stroke:none;text-decoration:underline">Back to 'crimson'</text>
+</a>
+
+</g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/linking/pointerEvents.png 
b/tests/data/svg/batik/tests/spec/linking/pointerEvents.png
new file mode 100644
index 0000000..c72a4d3
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/linking/pointerEvents.png differ
diff --git a/tests/data/svg/batik/tests/spec/linking/pointerEvents.svg 
b/tests/data/svg/batik/tests/spec/linking/pointerEvents.svg
new file mode 100644
index 0000000..1443662
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/linking/pointerEvents.svg
@@ -0,0 +1,325 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This interactive test validates that the pointer-events property          -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: pointerEvents.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Pointer Events Test</title>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">'pointer-events' Test
+        <desc>Click in any of the links in the 
+              table. You should see a smilley.</desc></text>
+
+        <defs>
+            <g id="smilley">
+                <g  transform="scale(.8, .8) translate(-15,-15)">
+                    <circle cx="15" cy="15" r="10"/>
+                    <circle cx="12" cy="12" r="1.5" fill="black"/>
+                    <circle cx="17" cy="12" r="1.5" fill="black"/>
+                    <path d="M 10 19 A 8 8 0 0 0 20 19" stroke="black" stroke-width="1"/>
+                </g>
+            </g>
+
+            <g id="success" fill="rgb(0,255,0)">
+                <use xlink:href="#smilley" />
+            </g>
+            <g id="cell">
+                <rect x="20" y="60" width="120" height="20" style="fill:#eee; stroke:black"/>
+                <rect x="20" y="80" width="120" height="100" style="fill:none; stroke:black"/>
+
+                <g>
+                    <g>
+                        <rect x="90" y="90" width="40" height="20" style="fill:#aaa"/>
+                    </g>
+
+                    <g transform="translate(0 30)">
+                        <rect x="90" y="90" width="40" height="20" style="fill:none; stroke:black; 
stroke-width:4"/>
+                    </g>
+
+                    <g transform="translate(0 60)">
+                        <rect x="90" y="90" width="40" height="20" style="fill:#aaa; stroke:black; 
stroke-width:4"/>
+                    </g>
+                </g>
+            </g>
+
+        </defs>
+
+        <g transform="translate(5, 5) scale(.2)">
+            <use xlink:href="#success"/>
+            <a xlink:href="#svgView(viewBox(0,0,450,500))">
+                <text y="-11" font-size="2" fill="blue" text-decoration="underline" 
text-anchor="middle">Return to test</text>
+            </a>
+        </g>
+
+<!-- ######################################### -->
+
+
+<g style="text-anchor:middle;">
+
+<g transform="translate(0 0)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">visiblePainted</text>
+</g>
+
+<g transform="translate(140 0)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">visibleFill</text>
+</g>
+
+<g transform="translate(280 0)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">visibleStroke</text>
+</g>
+
+<g transform="translate(0 130)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">visible</text>
+</g>
+
+<g transform="translate(140 130)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">painted</text>
+</g>
+
+<g transform="translate(280 130)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">fill</text>
+</g>
+
+<g transform="translate(0 260)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">stroke</text>
+</g>
+
+<g transform="translate(140 260)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">all</text>
+</g>
+
+<g transform="translate(280 260)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">none</text>
+</g>
+
+<!-- ######################################### -->
+
+<g transform="translate(0 0)" style="pointer-events:visiblePainted">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <g style="fill:crimson">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 30)" style="fill:none; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 60)" style="fill:crimson; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+    </a>
+</g>
+
+<g transform="translate(140 0)" style="pointer-events:visibleFill">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <g style="fill:crimson">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 30)" style="fill:none; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 60)" style="fill:crimson; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+    </a>
+</g>
+
+<g transform="translate(280 0)" style="pointer-events:visibleStroke">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <g style="fill:crimson">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 30)" style="fill:none; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 60)" style="fill:crimson; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+    </a>
+</g>
+
+<g transform="translate(0 130)" style="pointer-events:visible">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <g style="fill:crimson">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 30)" style="fill:none; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 60)" style="fill:crimson; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+    </a>
+</g>
+
+<g transform="translate(140 130)" style="pointer-events:painted">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <g style="fill:crimson">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 30)" style="fill:none; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 60)" style="fill:crimson; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+    </a>
+</g>
+
+<g transform="translate(280 130)" style="pointer-events:fill">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <g style="fill:crimson">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 30)" style="fill:none; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 60)" style="fill:crimson; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+    </a>
+</g>
+
+<g transform="translate(0 260)" style="pointer-events:stroke">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <g style="fill:crimson">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 30)" style="fill:none; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 60)" style="fill:crimson; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+    </a>
+</g>
+
+<g transform="translate(140 260)" style="pointer-events:all">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <g style="fill:crimson">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 30)" style="fill:none; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 60)" style="fill:crimson; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+    </a>
+</g>
+
+<g transform="translate(280 260)" style="pointer-events:none">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <g style="fill:crimson">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 30)" style="fill:none; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+        <g transform="translate(0 60)" style="fill:crimson; stroke:gold; stroke-width:4">
+            <rect x="30" y="90" width="40" height="20" />
+            <rect x="90" y="90" width="40" height="20" style="visibility:hidden"/>
+        </g>
+
+    </a>
+</g>
+
+</g>
+
+
+
+
+    </g><!-- "content" -->
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/linking/pointerEvents2.png 
b/tests/data/svg/batik/tests/spec/linking/pointerEvents2.png
new file mode 100644
index 0000000..d29e52b
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/linking/pointerEvents2.png differ
diff --git a/tests/data/svg/batik/tests/spec/linking/pointerEvents2.svg 
b/tests/data/svg/batik/tests/spec/linking/pointerEvents2.svg
new file mode 100644
index 0000000..a9c4139
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/linking/pointerEvents2.svg
@@ -0,0 +1,256 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   
+        http://www.apache.org/licenses/LICENSE-2.0
+   
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!-- ========================================================================= -->
+<!-- This interactive test validates that the pointer-events property          -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: pointerEvents2.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Pointer Events Test</title>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">'pointer-events' Test
+        <desc>Click in any of the links in the 
+              table. You should see a smilley.</desc></text>
+
+        <defs>
+            <g id="smilley">
+                <g  transform="scale(.8, .8) translate(-15,-15)">
+                    <circle cx="15" cy="15" r="10"/>
+                    <circle cx="12" cy="12" r="1.5" fill="black"/>
+                    <circle cx="17" cy="12" r="1.5" fill="black"/>
+                    <path d="M 10 19 A 8 8 0 0 0 20 19" stroke="black" stroke-width="1"/>
+                </g>
+            </g>
+
+            <g id="success" fill="rgb(0,255,0)">
+                <use xlink:href="#smilley" />
+            </g>
+            <g id="cell">
+                <rect x="20" y="60" width="120" height="20" style="fill:#eee; stroke:black"/>
+                <rect x="20" y="80" width="120" height="100" style="fill:none; stroke:black"/>
+
+                <g style="fill:#aaa">
+                    <rect x="35" y="90" width="35" height="14.5" />
+                    <rect x="90" y="90" width="35" height="14.5" />
+                    <rect x="25" y="120" width="50" height="28" />
+                    <rect x="80" y="120" width="50" height="28" />
+                    <rect x="35" y="158" width="30" height="16" />
+                    <rect x="90" y="158" width="30" height="16" />
+                </g>
+            </g>
+
+        </defs>
+
+        <g transform="translate(5, 5) scale(.2)">
+            <use xlink:href="#success"/>
+            <a xlink:href="#svgView(viewBox(0,0,450,500))">
+                <text y="-11" font-size="2" fill="blue" text-decoration="underline" 
text-anchor="middle">Return to test</text>
+            </a>
+        </g>
+
+<!-- ######################################### -->
+
+
+<g style="text-anchor:middle;">
+
+<g transform="translate(0 0)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">visiblePainted</text>
+</g>
+
+<g transform="translate(140 0)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">visibleFill</text>
+</g>
+
+<g transform="translate(280 0)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">visibleStroke</text>
+</g>
+
+<g transform="translate(0 130)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">visible</text>
+</g>
+
+<g transform="translate(140 130)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">painted</text>
+</g>
+
+<g transform="translate(280 130)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">fill</text>
+</g>
+
+<g transform="translate(0 260)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">stroke</text>
+</g>
+
+<g transform="translate(140 260)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">all</text>
+</g>
+
+<g transform="translate(280 260)">
+    <use xlink:href="#cell" />
+    <text x="80" y="74">none</text>
+</g>
+
+<!-- ######################################### -->
+
+<g transform="translate(0 0)" style="pointer-events:visiblePainted">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" width="35" height="14.5" />
+        <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" width="35" height="14.5" 
style="visibility:hidden"/>
+
+        <image xlink:href="../../resources/images/svg.svg" x="25" y="120" width="50" height="28" />
+        <image xlink:href="../../resources/images/svg.svg" x="80" y="120" width="50" height="28" 
style="visibility:hidden"/>
+
+        <text x="50" y="170">Batik</text>
+        <text x="105" y="170" style="visibility:hidden">Batik</text>
+    </a>
+</g>
+
+<g transform="translate(140 0)" style="pointer-events:visibleFill">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" width="35" height="14.5" />
+        <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" width="35" height="14.5" 
style="visibility:hidden"/>
+
+        <image xlink:href="../../resources/images/svg.svg" x="25" y="120" width="50" height="28" />
+        <image xlink:href="../../resources/images/svg.svg" x="80" y="120" width="50" height="28" 
style="visibility:hidden"/>
+
+        <text x="50" y="170">Batik</text>
+        <text x="105" y="170" style="visibility:hidden">Batik</text>
+    </a>
+</g>
+
+<g transform="translate(280 0)" style="pointer-events:visibleStroke">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" width="35" height="14.5" />
+        <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" width="35" height="14.5" 
style="visibility:hidden"/>
+
+        <image xlink:href="../../resources/images/svg.svg" x="25" y="120" width="50" height="28" />
+        <image xlink:href="../../resources/images/svg.svg" x="80" y="120" width="50" height="28" 
style="visibility:hidden"/>
+
+        <text x="50" y="170">Batik</text>
+        <text x="105" y="170" style="visibility:hidden">Batik</text>
+    </a>
+</g>
+
+<g transform="translate(0 130)" style="pointer-events:visible">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" width="35" height="14.5" />
+        <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" width="35" height="14.5" 
style="visibility:hidden"/>
+
+        <image xlink:href="../../resources/images/svg.svg" x="25" y="120" width="50" height="28" />
+        <image xlink:href="../../resources/images/svg.svg" x="80" y="120" width="50" height="28" 
style="visibility:hidden"/>
+
+        <text x="50" y="170">Batik</text>
+        <text x="105" y="170" style="visibility:hidden">Batik</text>
+    </a>
+</g>
+
+<g transform="translate(140 130)" style="pointer-events:painted">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" width="35" height="14.5" />
+        <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" width="35" height="14.5" 
style="visibility:hidden"/>
+
+        <image xlink:href="../../resources/images/svg.svg" x="25" y="120" width="50" height="28" />
+        <image xlink:href="../../resources/images/svg.svg" x="80" y="120" width="50" height="28" 
style="visibility:hidden"/>
+
+        <text x="50" y="170">Batik</text>
+        <text x="105" y="170" style="visibility:hidden">Batik</text>
+    </a>
+</g>
+
+<g transform="translate(280 130)" style="pointer-events:fill">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" width="35" height="14.5" />
+        <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" width="35" height="14.5" 
style="visibility:hidden"/>
+
+        <image xlink:href="../../resources/images/svg.svg" x="25" y="120" width="50" height="28" />
+        <image xlink:href="../../resources/images/svg.svg" x="80" y="120" width="50" height="28" 
style="visibility:hidden"/>
+
+        <text x="50" y="170">Batik</text>
+        <text x="105" y="170" style="visibility:hidden">Batik</text>
+    </a>
+</g>
+
+<g transform="translate(0 260)" style="pointer-events:stroke">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" width="35" height="14.5" />
+        <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" width="35" height="14.5" 
style="visibility:hidden"/>
+
+        <image xlink:href="../../resources/images/svg.svg" x="25" y="120" width="50" height="28" />
+        <image xlink:href="../../resources/images/svg.svg" x="80" y="120" width="50" height="28" 
style="visibility:hidden"/>
+
+        <text x="50" y="170">Batik</text>
+        <text x="105" y="170" style="visibility:hidden">Batik</text>
+    </a>
+</g>
+
+<g transform="translate(140 260)" style="pointer-events:all">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" width="35" height="14.5" />
+        <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" width="35" height="14.5" 
style="visibility:hidden"/>
+
+        <image xlink:href="../../resources/images/svg.svg" x="25" y="120" width="50" height="28" />
+        <image xlink:href="../../resources/images/svg.svg" x="80" y="120" width="50" height="28" 
style="visibility:hidden"/>
+
+        <text x="50" y="170">Batik</text>
+        <text x="105" y="170" style="visibility:hidden">Batik</text>
+    </a>
+</g>
+
+<g transform="translate(280 260)" style="pointer-events:none">
+    <a xlink:href="#svgView(viewBox(3,2.5,4,4))">
+        <image xlink:href="../../resources/images/tde.jpg" x="35" y="90" width="35" height="14.5" />
+        <image xlink:href="../../resources/images/tde.jpg" x="90" y="90" width="35" height="14.5" 
style="visibility:hidden"/>
+
+        <image xlink:href="../../resources/images/svg.svg" x="25" y="120" width="50" height="28" />
+        <image xlink:href="../../resources/images/svg.svg" x="80" y="120" width="50" height="28" 
style="visibility:hidden"/>
+
+        <text x="50" y="170">Batik</text>
+        <text x="105" y="170" style="visibility:hidden">Batik</text>
+    </a>
+</g>
+
+</g>
+
+
+
+
+    </g><!-- "content" -->
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/masking/clip.png 
b/tests/data/svg/batik/tests/spec/masking/clip.png
new file mode 100644
index 0000000..9166b37
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/masking/clip.png differ
diff --git a/tests/data/svg/batik/tests/spec/masking/clip.svg 
b/tests/data/svg/batik/tests/spec/masking/clip.svg
new file mode 100644
index 0000000..0947577
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/masking/clip.svg
@@ -0,0 +1,223 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author tkormann apache org                                               -->
+<!-- @version $Id: clip.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Clip Test</title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+
+    <text x="225" y="40" class="title">
+      Clip Test
+    </text>
+
+    <defs>
+        <!-- ============================================== -->
+        <!-- clipPathUnits : default (userSpaceOnUse)       -->
+        <!-- ============================================== -->
+        <clipPath id="clip_1_1">
+            <circle cx="36"  cy="60" r="36"/>
+            <circle cx="84"  cy="60" r="36"/>
+        </clipPath>
+        <!-- ============================================== -->
+        <!-- clipPathUnits : objectBoundingBox              -->
+        <!-- ============================================== -->
+        <clipPath id="clip_1_2" clipPathUnits="objectBoundingBox">
+            <circle cx=".3" cy=".5" r=".3"/>
+            <circle cx=".7" cy=".5" r=".3"/>
+        </clipPath>
+        <!-- ============================================== -->
+        <!-- clipPathUnits : userSpaceOnUse                 -->
+        <!-- ============================================== -->
+        <clipPath id="clip_1_3" clipPathUnits="userSpaceOnUse">
+            <circle cx="36"  cy="60" r="36"/>
+            <circle cx="84"  cy="60" r="36"/>
+        </clipPath>
+
+        <clipPath id="clip00" clipPathUnits="objectBoundingBox">
+            <circle cx=".5" cy=".5" r=".16"/>
+        </clipPath>
+
+        <clipPath id="clip0" clipPathUnits="objectBoundingBox">
+            <circle cx=".5" cy=".5" r=".16" style="clip-path:url(#clip00)"/>
+        </clipPath>
+
+        <clipPath id="clip" clipPathUnits="objectBoundingBox" style="clip-path:url(#clip0)">
+            <circle cx=".5" cy=".5" r=".16"/>
+        </clipPath>
+
+        <!-- ============================================== -->
+        <!-- clipPathUnits : default (userSpaceOnUse)       -->
+        <!-- clip-path on the clipPath element              -->
+        <!-- ============================================== -->
+        <clipPath id="clip_2_1" style="clip-path:url(#clip)">
+            <circle cx="36"  cy="60" r="36"/>
+            <circle cx="84"  cy="60" r="36"/>
+        </clipPath>
+        <!-- ============================================== -->
+        <!-- clipPathUnits : objectBoundingBox              -->
+        <!-- clip-path on the clipPath element              -->
+        <!-- ============================================== -->
+        <clipPath id="clip_2_2" clipPathUnits="objectBoundingBox" style="clip-path:url(#clip)">
+            <circle cx=".3" cy=".5" r=".3"/>
+            <circle cx=".7" cy=".5" r=".3"/>
+        </clipPath>
+        <!-- ============================================== -->
+        <!-- clipPathUnits : userSpaceOnUse                 -->
+        <!-- clip-path on the clipPath element              -->
+        <!-- ============================================== -->
+        <clipPath id="clip_2_3" clipPathUnits="userSpaceOnUse" style="clip-path:url(#clip)">
+            <circle cx="36"  cy="60" r="36"/>
+            <circle cx="84"  cy="60" r="36"/>
+        </clipPath>
+
+        <!-- ============================================== -->
+        <!-- clipPathUnits : default (userSpaceOnUse)       -->
+        <!-- clip-path on the clipPath children elements    -->
+        <!-- ============================================== -->
+        <clipPath id="clip_3_1">
+            <circle cx="36"  cy="60" r="36" style="clip-path:url(#clip)"/>
+            <circle cx="84"  cy="60" r="36" style="clip-path:url(#clip)"/>
+        </clipPath>
+        <!-- ============================================== -->
+        <!-- clipPathUnits : objectBoundingBox              -->
+        <!-- clip-path on the clipPath children elements    -->
+        <!-- ============================================== -->
+        <clipPath id="clip_3_2" clipPathUnits="objectBoundingBox">
+            <circle cx=".3" cy=".5" r=".3" style="clip-path:url(#clip)"/>
+            <circle cx=".7" cy=".5" r=".3" style="clip-path:url(#clip)"/>
+        </clipPath>
+        <!-- ============================================== -->
+        <!-- clipPathUnits : userSpaceOnUse                 -->
+        <!-- clip-path on the clipPath children elements    -->
+        <!-- ============================================== -->
+        <clipPath id="clip_3_3" clipPathUnits="userSpaceOnUse">
+            <circle cx="36"  cy="60" r="36" style="clip-path:url(#clip)"/>
+            <circle cx="84"  cy="60" r="36" style="clip-path:url(#clip)"/>
+        </clipPath>
+
+    </defs>
+
+    <!-- ============================================== -->
+    <!-- clip_1_*                                       -->
+    <!-- ============================================== -->
+    <g transform="translate(0 40)" class="legend">
+    <g id="c1" transform="translate(20 20)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" style="fill:PaleVioletRed; clip-path:url(#clip_1_1)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_1_1</text>
+        </g>
+    </g>
+
+    <g id="c2" transform="translate(20 160)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" style="fill:PaleVioletRed; clip-path:url(#clip_1_2)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_1_2</text>
+        </g>
+    </g>
+
+    <g id="c3" transform="translate(20 300)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" style="fill:PaleVioletRed; clip-path:url(#clip_1_3)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_1_2</text>
+        </g>
+    </g>
+
+    <!-- ============================================== -->
+    <!-- clip_2_*                                       -->
+    <!-- ============================================== -->
+
+    <g id="c4" transform="translate(160 20)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" style="fill:PaleVioletRed; clip-path:url(#clip_2_1)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_2_1</text>
+        </g>
+    </g>
+
+    <g id="c5" transform="translate(160 160)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" style="fill:PaleVioletRed; clip-path:url(#clip_2_2)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_2_2</text>
+        </g>
+    </g>
+
+    <g id="c6" transform="translate(160 300)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" style="fill:PaleVioletRed; clip-path:url(#clip_2_3)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_2_3</text>
+        </g>
+    </g>
+
+    <!-- ============================================== -->
+    <!-- clip_3_*                                       -->
+    <!-- ============================================== -->
+
+    <g id="c7" transform="translate(300 20)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" style="fill:PaleVioletRed; clip-path:url(#clip_3_1)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_3_1</text>
+        </g>
+    </g>
+
+    <g id="c8" transform="translate(300 160)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" style="fill:PaleVioletRed; clip-path:url(#clip_3_2)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_3_2</text>
+        </g>
+    </g>
+
+    <g id="c9" transform="translate(300 300)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" style="fill:PaleVioletRed; clip-path:url(#clip_3_3)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_3_2</text>
+        </g>
+    </g>
+    </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/masking/clipQuality.svg 
b/tests/data/svg/batik/tests/spec/masking/clipQuality.svg
new file mode 100644
index 0000000..6f6eeb5
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/masking/clipQuality.svg
@@ -0,0 +1,239 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+
+<!-- ====================================================================== -->
+<!-- Test clip property with 'shape-rendering' set to 'geometricPrecision'  -->
+<!--                                                                        -->
+<!-- @author tkormann apache org                                            -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: clipQuality.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+
+    <title>Clip Test (geometricPrecision)</title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+
+    <text x="225" y="40" class="title"
+     >Clip Test (geometricPrecision)</text>
+
+    <defs shape-rendering="geometricPrecision">
+        <!-- ============================================== -->
+        <!-- clipPathUnits : default (userSpaceOnUse)       -->
+        <!-- ============================================== -->
+        <clipPath id="clip_1_1">
+            <circle cx="36"  cy="60" r="36"/>
+            <circle cx="84"  cy="60" r="36"/>
+        </clipPath>
+        <!-- ============================================== -->
+        <!-- clipPathUnits : objectBoundingBox              -->
+        <!-- ============================================== -->
+        <clipPath id="clip_1_2" clipPathUnits="objectBoundingBox">
+            <circle cx=".3" cy=".5" r=".3"/>
+            <circle cx=".7" cy=".5" r=".3"/>
+        </clipPath>
+        <!-- ============================================== -->
+        <!-- clipPathUnits : userSpaceOnUse                 -->
+        <!-- ============================================== -->
+        <clipPath id="clip_1_3" clipPathUnits="userSpaceOnUse">
+            <circle cx="36"  cy="60" r="36"/>
+            <circle cx="84"  cy="60" r="36"/>
+        </clipPath>
+
+        <clipPath id="clip00" clipPathUnits="objectBoundingBox">
+            <circle cx=".5" cy=".5" r=".16"/>
+        </clipPath>
+
+        <clipPath id="clip0" clipPathUnits="objectBoundingBox">
+            <circle cx=".5" cy=".5" r=".16" style="clip-path:url(#clip00)"/>
+        </clipPath>
+
+        <clipPath id="clip" clipPathUnits="objectBoundingBox" 
+                  style="clip-path:url(#clip0)">
+            <circle cx=".5" cy=".5" r=".16"/>
+        </clipPath>
+
+        <!-- ============================================== -->
+        <!-- clipPathUnits : default (userSpaceOnUse)       -->
+        <!-- clip-path on the clipPath element              -->
+        <!-- ============================================== -->
+        <clipPath id="clip_2_1" style="clip-path:url(#clip)">
+            <circle cx="36"  cy="60" r="36"/>
+            <circle cx="84"  cy="60" r="36"/>
+        </clipPath>
+        <!-- ============================================== -->
+        <!-- clipPathUnits : objectBoundingBox              -->
+        <!-- clip-path on the clipPath element              -->
+        <!-- ============================================== -->
+        <clipPath id="clip_2_2" clipPathUnits="objectBoundingBox" 
+                  style="clip-path:url(#clip)">
+            <circle cx=".3" cy=".5" r=".3"/>
+            <circle cx=".7" cy=".5" r=".3"/>
+        </clipPath>
+        <!-- ============================================== -->
+        <!-- clipPathUnits : userSpaceOnUse                 -->
+        <!-- clip-path on the clipPath element              -->
+        <!-- ============================================== -->
+        <clipPath id="clip_2_3" clipPathUnits="userSpaceOnUse" 
+                  style="clip-path:url(#clip)">
+            <circle cx="36"  cy="60" r="36"/>
+            <circle cx="84"  cy="60" r="36"/>
+        </clipPath>
+
+        <!-- ============================================== -->
+        <!-- clipPathUnits : default (userSpaceOnUse)       -->
+        <!-- clip-path on the clipPath children elements    -->
+        <!-- ============================================== -->
+        <clipPath id="clip_3_1">
+            <circle cx="36"  cy="60" r="36" style="clip-path:url(#clip)"/>
+            <circle cx="84"  cy="60" r="36" style="clip-path:url(#clip)"/>
+        </clipPath>
+        <!-- ============================================== -->
+        <!-- clipPathUnits : objectBoundingBox              -->
+        <!-- clip-path on the clipPath children elements    -->
+        <!-- ============================================== -->
+        <clipPath id="clip_3_2" clipPathUnits="objectBoundingBox">
+            <circle cx=".3" cy=".5" r=".3" style="clip-path:url(#clip)"/>
+            <circle cx=".7" cy=".5" r=".3" style="clip-path:url(#clip)"/>
+        </clipPath>
+        <!-- ============================================== -->
+        <!-- clipPathUnits : userSpaceOnUse                 -->
+        <!-- clip-path on the clipPath children elements    -->
+        <!-- ============================================== -->
+        <clipPath id="clip_3_3" clipPathUnits="userSpaceOnUse">
+            <circle cx="36"  cy="60" r="36" style="clip-path:url(#clip)"/>
+            <circle cx="84"  cy="60" r="36" style="clip-path:url(#clip)"/>
+        </clipPath>
+
+    </defs>
+
+    <!-- ============================================== -->
+    <!-- clip_1_*                                       -->
+    <!-- ============================================== -->
+    <g transform="translate(0 40)" class="legend">
+    <g id="c1" transform="translate(20 20)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" 
+              style="fill:PaleVioletRed; clip-path:url(#clip_1_1)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_1_1</text>
+        </g>
+    </g>
+
+    <g id="c2" transform="translate(20 160)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" 
+              style="fill:PaleVioletRed; clip-path:url(#clip_1_2)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_1_2</text>
+        </g>
+    </g>
+
+    <g id="c3" transform="translate(20 300)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" 
+              style="fill:PaleVioletRed; clip-path:url(#clip_1_3)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_1_2</text>
+        </g>
+    </g>
+
+    <!-- ============================================== -->
+    <!-- clip_2_*                                       -->
+    <!-- ============================================== -->
+
+    <g id="c4" transform="translate(160 20)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" 
+              style="fill:PaleVioletRed; clip-path:url(#clip_2_1)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_2_1</text>
+        </g>
+    </g>
+
+    <g id="c5" transform="translate(160 160)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" 
+              style="fill:PaleVioletRed; clip-path:url(#clip_2_2)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_2_2</text>
+        </g>
+    </g>
+
+    <g id="c6" transform="translate(160 300)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" 
+              style="fill:PaleVioletRed; clip-path:url(#clip_2_3)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_2_3</text>
+        </g>
+    </g>
+
+    <!-- ============================================== -->
+    <!-- clip_3_*                                       -->
+    <!-- ============================================== -->
+
+    <g id="c7" transform="translate(300 20)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" 
+              style="fill:PaleVioletRed; clip-path:url(#clip_3_1)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_3_1</text>
+        </g>
+    </g>
+
+    <g id="c8" transform="translate(300 160)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" 
+              style="fill:PaleVioletRed; clip-path:url(#clip_3_2)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_3_2</text>
+        </g>
+    </g>
+
+    <g id="c9" transform="translate(300 300)">
+        <rect x="0" y="0" width="120" height="120" style="fill:FireBrick;"/>
+        <rect x="0" y="0" width="120" height="120" 
+              style="fill:PaleVioletRed; clip-path:url(#clip_3_3)"/>
+        <g transform="translate(60, 130)">
+            <text x="0" y="0" style="text-anchor:middle">clip_3_2</text>
+        </g>
+    </g>
+    </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/masking/clipTransform.png 
b/tests/data/svg/batik/tests/spec/masking/clipTransform.png
new file mode 100644
index 0000000..07e43ca
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/masking/clipTransform.png differ
diff --git a/tests/data/svg/batik/tests/spec/masking/clipTransform.svg 
b/tests/data/svg/batik/tests/spec/masking/clipTransform.svg
new file mode 100644
index 0000000..0039e08
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/masking/clipTransform.svg
@@ -0,0 +1,78 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: clipTransform.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" 
+     width="450" height="500" viewBox="0 0 450 500">
+<title>Clip Transform Test</title>
+
+    <text x="225" y="40" class="title">Clip Transform Test</text>
+
+    <defs>
+    <clipPath id="clip1">
+        <rect x="175" y="125" width="100" height="50" transform="rotate(45 225 150)" />
+        <rect x="200" y="100" width="50" height="100" transform="rotate(45 225 150)"/>
+    </clipPath>
+
+    <clipPath id="clip2" transform="rotate(45 225 350)">
+        <rect x="175" y="325" width="100" height="50" />
+        <rect x="200" y="300" width="50" height="100" />
+    </clipPath>
+
+    <linearGradient id="grad">
+        <stop style="stop-color:crimson" offset="0" />
+        <stop style="stop-color:orange" offset=".5" />
+        <stop style="stop-color:gold" offset="1" />
+    </linearGradient>
+
+    </defs>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+
+<rect x="125" y="80" width="200" height="140" style="fill:#eee" />
+<rect x="125" y="80" width="200" height="140" style="fill:url(#grad); clip-path:url(#clip1)" />
+
+<rect x="125" y="280" width="200" height="140" style="fill:#eee" />
+<rect x="125" y="280" width="200" height="140" style="fill:url(#grad); clip-path:url(#clip2)" />
+
+<text x="50%" y="240" style="text-anchor:middle">transform on &lt;clipPath></text>
+<text x="50%" y="440" style="text-anchor:middle">transform on &lt;clipPath>'s children</text>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/masking/maskRegions.png 
b/tests/data/svg/batik/tests/spec/masking/maskRegions.png
new file mode 100644
index 0000000..fbecff7
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/masking/maskRegions.png differ
diff --git a/tests/data/svg/batik/tests/spec/masking/maskRegions.svg 
b/tests/data/svg/batik/tests/spec/masking/maskRegions.svg
new file mode 100644
index 0000000..c4079bf
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/masking/maskRegions.svg
@@ -0,0 +1,139 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   
+        http://www.apache.org/licenses/LICENSE-2.0
+   
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!-- ========================================================================= -->
+<!-- Validates processing of mask regions                                      -->
+<!--                                                                           -->
+<!-- @author vincent hardy eng sun com                                         -->
+<!-- @version $Id: maskRegions.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Mask</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent" class="legend" text-anchor="middle">
+        <text x="225" y="50" class="title">
+        Mask Regions
+        </text>
+
+        <defs>
+    
+        <!-- ======================================== -->
+        <!-- Masked object definition                 -->
+        <!-- ======================================== -->
+        <linearGradient id="maskedGradient" x1="0" x2="1" y1="0" y2="1" color-interpolation="linearRGB">
+            <stop offset="0" stop-color="blue" />
+            <stop offset="1" stop-color="red" />
+        </linearGradient>
+
+        <rect id="masked" width="100" height="80" fill="url(#maskedGradient)" />
+
+        <!-- ======================================= -->
+        <!-- maskUnits: default                      -->
+        <!-- maskContentUnits: default               -->
+        <!-- maskRegion: default (-.1, -.1, 1.2, 1.2)-->
+        <!-- ======================================= -->
+        <mask id="mask_1">
+            <circle cx="25" cy="20" r="20" fill="#ffffff" />
+            <circle cx="25" cy="60" r="20" fill="#ffffff" />
+            <circle cx="75" cy="20" r="20" fill="#ffffff" />
+            <circle cx="75" cy="60" r="20" fill="#ffffff" />
+        </mask>
+
+        <!-- ======================================= -->
+        <!-- maskUnits: objectBoundingBox            -->
+        <!-- maskContentUnits: default               -->
+        <!-- maskRegion: (.25, .25, .5, .5)          -->
+        <!-- ======================================= -->
+        <mask id="mask_2" maskUnits="objectBoundingBox"
+              x=".25" y="25%" width="50%" height=".5">
+            <circle cx="25" cy="20" r="20" fill="#ffffff" />
+            <circle cx="25" cy="60" r="20" fill="#ffffff" />
+            <circle cx="75" cy="20" r="20" fill="#ffffff" />
+            <circle cx="75" cy="60" r="20" fill="#ffffff" />
+        </mask>
+
+        <!-- ======================================= -->
+        <!-- maskUnits: userSpaceOnUse               -->
+        <!-- maskContentUnits: default               -->
+        <!-- maskRegion: (25, 25, 50, 50)            -->
+        <!-- ======================================= -->
+        <mask id="mask_3" maskUnits="userSpaceOnUse" 
+              x="25" y="20" width="11.11111111%" height="8%">
+            <circle cx="25" cy="20" r="20" fill="#ffffff" />
+            <circle cx="25" cy="60" r="20" fill="#ffffff" />
+            <circle cx="75" cy="20" r="20" fill="#ffffff" />
+            <circle cx="75" cy="60" r="20" fill="#ffffff" />
+        </mask>
+
+        <!-- ======================================= -->
+        <!-- maskUnits: objectBoundingBox            -->
+        <!-- maskContentUnits: default               -->
+        <!-- maskRegion: (25, 25, 50, 50)            -->
+        <!-- ======================================= -->
+        <mask id="mask_4" maskUnits="objectBoundingBox" 
+              maskContentUnits="objectBoundingBox"
+              x="0" y="0" width="100%" height="100%">
+            <circle cx=".25" cy=".2" r=".2" fill="#ffffff" />
+            <circle cx=".25" cy=".6" r=".2" fill="#ffffff" />
+            <circle cx=".75" cy=".2" r=".2" fill="#ffffff" />
+            <circle cx=".75" cy=".6" r=".2" fill="#ffffff" />
+        </mask>
+
+        </defs>
+
+        <g transform="translate(175, 100)">
+            <use xlink:href="#masked" />
+            <text x="50" y="-3">Masked</text>
+        </g>
+
+        <g transform="translate(85, 220)">
+            <use xlink:href="#masked" mask="url(#mask_1)"/>
+            <text x="50" y="-3">Mask 1</text>
+        </g>
+
+        <g transform="translate(85, 340)">
+            <use xlink:href="#masked" mask="url(#mask_2)"/>
+            <text x="50" y="-3">Mask 2</text>
+        </g>
+
+        <g transform="translate(260, 220)">
+            <use xlink:href="#masked" mask="url(#mask_3)"/>
+            <text x="50" y="-3">Mask 3</text>
+        </g>
+
+        <g transform="translate(260, 340)">
+            <use xlink:href="#masked" mask="url(#mask_4)"/>
+            <text x="50" y="-3">Mask 4</text>
+        </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/painting/bboxOnText.png 
b/tests/data/svg/batik/tests/spec/painting/bboxOnText.png
new file mode 100644
index 0000000..92e62b5
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/painting/bboxOnText.png differ
diff --git a/tests/data/svg/batik/tests/spec/painting/bboxOnText.svg 
b/tests/data/svg/batik/tests/spec/painting/bboxOnText.svg
new file mode 100644
index 0000000..72801cd
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/painting/bboxOnText.svg
@@ -0,0 +1,60 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test created after bug submitted by cjolif ilog fr showing a problem with -->
+<!-- radialGradient with objectBoundingBox on a text element.                  -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: bboxOnText.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>ObjectBounding box on TextNode</title>
+
+  <defs>
+
+    <radialGradient id="gradient" gradientUnits="objectBoundingBox"
+cx="0.4953271150588989" cy="0.4933333396911621" fx="0.5" fy="0.5"
+r="0.6560132">
+
+      <stop offset="0.0" style="stop-color:blue" />
+
+      <stop offset="0.57697475" style="stop-color:blue" />
+
+      <stop offset="1.0" style="stop-color:#ff0033" />
+
+    </radialGradient>
+
+  </defs>
+
+    <text x="50%" y="100" text-anchor="middle" font-size="30" 
+          font-family="Verdana" fill="url(#gradient)">
+    ObjectBoundingBox
+    </text>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/painting/display.png 
b/tests/data/svg/batik/tests/spec/painting/display.png
new file mode 100644
index 0000000..92a77db
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/painting/display.png differ
diff --git a/tests/data/svg/batik/tests/spec/painting/display.svg 
b/tests/data/svg/batik/tests/spec/painting/display.svg
new file mode 100644
index 0000000..8aaf186
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/painting/display.svg
@@ -0,0 +1,177 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!--  Test 'display' property                                                  -->
+<!--                                                                           -->
+<!-- @author tkormann apache org                                               -->
+<!-- @version $Id: display.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title> Test 'display' property</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+<g id="testContent">
+
+  <text x="225" y="40" class="title">
+    Test 'display' property
+  </text>
+
+    <g id="array">
+        <g style="stroke:black;fill:none;">
+            <rect x="45" y="60" width="360" height="20" fill="#eee"/>
+            <rect x="25" y="80" width="20" height="360" fill="#eee"/>
+            <rect x="45" y="80" width="360" height="360" />
+
+            <line x1="165" y1="60" x2="165" y2="440" />
+            <line x1="285" y1="60" x2="285" y2="440" />
+
+            <line x1="25"  y1="170" x2="405" y2="170" />
+            <line x1="25"  y1="260" x2="405" y2="260" />
+            <line x1="25"  y1="350" x2="405" y2="350" />
+        </g>
+        <g style="text-anchor:middle; font-size:10pt; fill:black; stroke:none">
+            <text x="105" y="75">display:inherit</text>
+            <text x="225" y="75">display:inline</text>
+            <text x="345" y="75">display:none</text>
+
+
+            <text x="0" y="0" transform="translate(40, 125) rotate(-90)">&lt;rect></text>
+
+            <text x="0" y="0" transform="translate(40, 215) rotate(-90)">&lt;g></text>
+
+            <text x="0" y="0" transform="translate(40, 305) rotate(-90)">&lt;clipPath></text>
+
+            <text x="0" y="0" transform="translate(40, 395) rotate(-90)">&lt;mask></text>
+        </g>
+    </g>
+
+<!-- #################################################### -->
+<!-- #################################################### -->
+
+<!-- a rectangle with its display property set to 'inherit' -->
+<rect x="65" y="90" width="80" height="70" style="fill:crimson; display:inherit" />
+
+<!-- a rectangle with its display property set to 'inline' -->
+<rect x="185" y="90" width="80" height="70" style="fill:crimson; display:inline" />
+
+<!-- a rectangle with its display property set to 'none -->
+<rect x="305" y="90" width="80" height="70" style="fill:crimson; display:none" />
+
+
+<!-- #################################################### -->
+<!-- #################################################### -->
+
+<!-- a group with its display property set to 'inherit' -->
+<g style="display:inherit">
+<ellipse cx="95" cy="215" rx="30" ry="40" style="fill:crimson;" />
+<ellipse cx="115" cy="215" rx="30" ry="40" style="fill:gold;" />
+</g>
+
+<!-- a group with its display property set to 'inline' -->
+<g style="display:inline">
+<ellipse cx="215" cy="215" rx="30" ry="40" style="fill:crimson;" />
+<ellipse cx="235" cy="215" rx="30" ry="40" style="fill:gold;" />
+</g>
+
+<!-- a group with its display property set to 'none' -->
+<g style="display:none">
+<ellipse cx="335" cy="215" rx="30" ry="40" style="fill:crimson;" />
+<ellipse cx="355" cy="215" rx="30" ry="40" style="fill:gold;" />
+</g>
+
+
+<!-- #################################################### -->
+<!-- #################################################### -->
+<defs>
+    <!-- a clipPath with its children display properties set to 'inherit' -->
+    <clipPath id="clipInherit" clipPathUnits="objectBoundingBox">
+        <ellipse cx=".3" cy=".5" rx=".3" ry=".5" style="display:inherit"/>
+        <ellipse cx=".7" cy=".5" rx=".3" ry=".5" style="display:inherit"/>
+    </clipPath>
+
+    <!-- a clipPath with its children display properties set to 'inline' -->
+    <clipPath id="clipInline" clipPathUnits="objectBoundingBox">
+        <ellipse cx=".3" cy=".5" rx=".3" ry=".5" style="display:inline"/>
+        <ellipse cx=".7" cy=".5" rx=".3" ry=".5" style="display:inline"/>
+    </clipPath>
+
+    <!-- a clipPath with its children display properties set to 'none' -->
+    <clipPath id="clipNone" clipPathUnits="objectBoundingBox">
+        <ellipse cx=".3" cy=".5" rx=".3" ry=".5" style="display:none"/>
+        <ellipse cx=".7" cy=".5" rx=".3" ry=".5" style="display:none"/>
+    </clipPath>
+</defs>
+
+<rect x="65" y="270" width="80" height="70" style="fill:crimson; clip-path:url(#clipInherit);" />
+
+<rect x="185" y="270" width="80" height="70" style="fill:crimson; clip-path:url(#clipInline);" />
+
+<rect x="305" y="270" width="80" height="70" style="fill:crimson; clip-path:url(#clipNone);" />
+
+<!-- #################################################### -->
+<!-- #################################################### -->
+<defs>
+    <mask id="maskInherit" maskContentUnits="objectBoundingBox"
+        x="0" y="0" width="100%" height="100%" style="fill:white">
+        <circle cx=".2" cy=".2" r=".2" style="display:inherit"/>
+        <circle cx=".8" cy=".2" r=".2" style="display:inherit"/>
+        <circle cx=".2" cy=".8" r=".2" style="display:inherit"/>
+        <circle cx=".8" cy=".8" r=".2" style="display:inherit"/>
+    </mask>
+
+    <mask id="maskInline" maskContentUnits="objectBoundingBox"
+        x="0" y="0" width="100%" height="100%" style="fill:white">
+        <circle cx=".2" cy=".2" r=".2" style="display:inline"/>
+        <circle cx=".8" cy=".2" r=".2" style="display:inline"/>
+        <circle cx=".2" cy=".8" r=".2" style="display:inline"/>
+        <circle cx=".8" cy=".8" r=".2" style="display:inline"/>
+    </mask>
+
+    <mask id="maskNone" maskContentUnits="objectBoundingBox"
+        x="0" y="0" width="100%" height="100%" style="fill:white">
+        <circle cx=".2" cy=".2" r=".2" style="display:none"/>
+        <circle cx=".8" cy=".2" r=".2" style="display:none"/>
+        <circle cx=".2" cy=".8" r=".2" style="display:none"/>
+        <circle cx=".8" cy=".8" r=".2" style="display:none"/>
+    </mask>
+</defs>
+
+<rect x="65" y="360" width="80" height="70" style="fill:crimson; mask:url(#maskInherit)" />
+
+<rect x="185" y="360" width="80" height="70" style="fill:crimson; mask:url(#maskInline)" />
+
+<rect x="305" y="360" width="80" height="70" style="fill:crimson; mask:url(#maskNone)" />
+
+</g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/painting/image-rendering.png 
b/tests/data/svg/batik/tests/spec/painting/image-rendering.png
new file mode 100644
index 0000000..e02490e
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/painting/image-rendering.png differ
diff --git a/tests/data/svg/batik/tests/spec/painting/image-rendering.svg 
b/tests/data/svg/batik/tests/spec/painting/image-rendering.svg
new file mode 100644
index 0000000..11d1aa7
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/painting/image-rendering.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!--  Test 'image-rendering' property                                          -->
+<!--                                                                           -->
+<!-- @author tkormann apache org                                               -->
+<!-- @version $Id: image-rendering.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Test the 'text-rendering' property</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+<g id="testContent">
+  <text x="225" y="50" class="title">
+    Test the 'image-rendering' property
+  </text>
+
+  <g>
+    <image x="60" y="90" width="150" height="50" xlink:href="../../resources/images/jpeg.jpg" 
style="image-rendering:auto"/>
+    <image x="260" y="90" width="150" height="50" xlink:href="../../resources/images/jpeg.jpg" 
style="image-rendering:optimizeSpeed"/>
+    <image x="60" y="200" width="150" height="50" xlink:href="../../resources/images/jpeg.jpg" 
style="image-rendering:optimizeQuality"/>
+  </g>
+
+  <g style="font-size:11;fill:black;stroke:none;text-anchor:middle">
+    <text x="135" y="160">auto</text>
+    <text x="335" y="160">optimizeSpeed</text>
+    <text x="135" y="270">optimizeQuality</text>
+  </g>
+</g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/painting/markersExt.png 
b/tests/data/svg/batik/tests/spec/painting/markersExt.png
new file mode 100644
index 0000000..a0861a0
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/painting/markersExt.png differ
diff --git a/tests/data/svg/batik/tests/spec/painting/markersExt.svg 
b/tests/data/svg/batik/tests/spec/painting/markersExt.svg
new file mode 100644
index 0000000..7b83b7f
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/painting/markersExt.svg
@@ -0,0 +1,284 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- This test validates arcto and multiple move to                         -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: markersExt.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; >
+
+    <title>Marker Test</title>
+
+    <style type="text/css"><![CDATA[
+        .markedPath { fill:none; stroke:black; stroke-width:4; }
+        .label { filter:url(#textBG); }
+    ]]></style>
+
+    <g id="content">
+
+        <g transform="translate(0, 40)">
+            <text class="title" x="50%" y="0">Markers on paths with just moves</text>
+            <text class="title" x="50%" y="1em">and elliptical arcs</text>
+        </g>
+
+        <defs>
+            <filter id="textBG" x="-5%" y="-5%" width="110%" height="110%"
+                    color-interpolation-filters="sRGB">
+               <feFlood flood-color="lightGrey" result="foo"/>
+               <feComposite in="SourceGraphic" in2="foo" />
+            </filter>
+
+            <path id="testPathMoves" d="M 0 0 m 60 0 m 60 0" />
+
+            <path id="testPathMoves2" d="M 0 0 m 40 -15 m 40 30 m 40 -15" />
+
+            <path id="testPathArcs1" 
+                  d="M 0 0 a 50 30 30 1 1 60 0 a 50 30 30 1 0 60 0" />
+
+            <path id="testPathArcs2" 
+                  d="M 0 0 a 60 30  0 1 1 60 0 a 60 30  0 1 0 60 0" />
+
+            <path id="testPathArcs3" 
+                  d="M 0 0 a 30 15  0 1 1 60 0 a 30 15 0 1 0 60 0" />
+
+            <path id="testPathArcs4" 
+                  d="M 0 0 a 60 30  0 0 1 60 0 a 60 30  0 0 0 60 0" />
+
+            <path id="testPathArcs5" 
+                  d="M 0 0 
+                     a 60 30 30 0 1 40 -15 
+                     a 60 30 30 0 0 40 30 
+                     a 60 30 30 0 0 40 -15" />
+
+
+            <g id="crossHair" style="marker:none" stroke="black">
+                <line y1="-5" x2="0" y2="5" />
+                <line x1="-5" x2="5" y2="0" />
+            </g>
+
+            <g id="startEndCrossHairs">
+                <use x="0" y="20" xlink:href="#crossHair" />
+                <use x="30" y="0" xlink:href="#crossHair" />
+            </g>
+
+            <g id="startMidEndCrossHairs">
+                <use x="0" y="20" xlink:href="#crossHair" />
+                <use x="20" y="0" xlink:href="#crossHair" />
+                <use x="50" y="10" xlink:href="#crossHair" />
+            </g>
+
+            <g id="testPathCrossHairs">
+                <use xlink:href="#crossHair" />
+                <use x="60" xlink:href="#crossHair" />
+                <use x="120" xlink:href="#crossHair" />
+            </g>
+
+            <g id="testPathCrossHairs2">
+                <use xlink:href="#crossHair" />
+                <use x="40" y="-15" xlink:href="#crossHair" />
+                <use x="80" y="15"  xlink:href="#crossHair" />
+                <use x="120" xlink:href="#crossHair" />
+            </g>
+
+            <!-- ============================= -->
+            <!-- Simple Marker Definition      -->
+            <!-- ============================= -->
+            <marker id="markerStart" markerWidth="20" markerHeight="20" 
+                    viewBox="-1 -1 2 2" orient="auto" refX="0" refY="0" 
+                    markerUnits="strokeWidth" overflow="visible">
+                <g opacity="0.5">
+                <circle r="1.8" stroke="black" fill="blue" stroke-width=".4" />
+                <path d="M 0 -1.8 L 0.3 -0.3 L 1.8 0  L 0.3 0.3 L 0 1.8 L -.2 0.3 L -1.8 0 L -0.3 -0.3 Z" 
+                      fill="yellow" stroke="none" /> 
+                <circle r="0.2" cx="0" cy="-1.8" fill="gold"/>
+                </g>
+            </marker>
+
+            <marker id="markerMid" markerWidth="20" markerHeight="20" 
+                    viewBox="-1 -1 2 2" orient="auto" refX="0" refY="0" 
+                    markerUnits="strokeWidth" overflow="visible">
+                <g opacity="0.5">
+                <circle r="1.8" stroke="black" fill="crimson" stroke-width=".4" />
+                <path d="M 0 -1.8 L 0.3 -0.3 L 1.8 0  L 0.3 0.3 L 0 1.8 L -.2 0.3 L -1.8 0 L -0.3 -0.3 Z" 
+                      fill="yellow" stroke="none" /> 
+                <circle r="0.2" cx="0" cy="-1.8" fill="gold"/>
+                </g>
+            </marker>
+
+            <marker id="markerEnd" markerWidth="20" markerHeight="20" 
+                    viewBox="-1 -1 2 2" orient="auto" refX="0" refY="0" 
+                    markerUnits="strokeWidth" overflow="visible">
+                <g opacity="0.5">
+                <circle r="1.8" stroke="black" fill="green" stroke-width=".4" />
+                <path d="M 0 -1.8 L 0.3 -0.3 L 1.8 0  L 0.3 0.3 L 0 1.8 L -.2 0.3 L -1.8 0 L -0.3 -0.3 Z" 
+                      fill="yellow" stroke="none" /> 
+                <circle r="0.2" cx="0" cy="-1.8" fill="gold"/>
+                </g>
+            </marker>
+
+        </defs>
+
+        <g transform="translate(50, 100)">
+
+        <!-- ==================================== -->
+        <!-- Move Tests -->
+        <!-- ==================================== -->
+        <g transform="translate(0, 0)"  >
+            <!-- Top reference point -->
+            <use xlink:href="#testPathMoves" 
+                 marker-start="url(#markerStart)" 
+                 marker-mid="url(#markerMid)" 
+                 marker-end="url(#markerEnd)" 
+                 class="markedPath" style="stroke-width:1"/>
+            <use xlink:href="#testPathCrossHairs" /> 
+
+            <g class="label" transform="translate(60, 35)" text-anchor="middle">
+                <text y="0">Simple test of multiple moves</text>
+            </g>
+        </g>
+
+        <!-- ==================================== -->
+        <!-- Move Tests2  -->
+        <!-- ==================================== -->
+        <g transform="translate(230, 0)"  >
+            <!-- Top reference point -->
+            <use xlink:href="#testPathMoves2" 
+                 marker-start="url(#markerStart)" 
+                 marker-mid="url(#markerMid)" 
+                 marker-end="url(#markerEnd)" 
+                 class="markedPath" style="stroke-width:1"/>
+            <use xlink:href="#testPathCrossHairs2" /> 
+
+            <g class="label" transform="translate(60, 50)" text-anchor="middle">
+                <text y="0">Another test of multiple moves</text>
+            </g>
+        </g>
+
+        <!-- ==================================== -->
+        <!-- Arc Test 1         -->
+        <!-- ==================================== -->
+        <g transform="translate(0, 110)"  >
+            <!-- Top reference point -->
+            <use xlink:href="#testPathArcs1" 
+                 marker-start="url(#markerStart)" 
+                 marker-mid="url(#markerMid)" 
+                 marker-end="url(#markerEnd)" 
+                 class="markedPath" style="stroke-width:1"/>
+            <use xlink:href="#testPathCrossHairs" /> 
+
+            <g class="label" transform="translate(60, 50)" 
+               text-anchor="middle">
+                <text y="0">Test of rotated arcs</text>
+            </g>
+        </g>
+
+
+
+        <!-- ==================================== -->
+        <!-- Arc Test 2         -->
+        <!-- ==================================== -->
+        <g transform="translate(230, 110)"  >
+            <!-- Top reference point -->
+            <use xlink:href="#testPathArcs2" 
+                 marker-start="url(#markerStart)" 
+                 marker-mid="url(#markerMid)" 
+                 marker-end="url(#markerEnd)" 
+                 class="markedPath" style="stroke-width:1"/>
+            <use xlink:href="#testPathCrossHairs" /> 
+
+            <g class="label" transform="translate(60, 50)" text-anchor="middle">
+                <text y="0">Test of arcs 2</text>
+            </g>
+        </g>
+
+
+
+        <!-- ==================================== -->
+        <!-- Arc Test 3         -->
+        <!-- ==================================== -->
+        <g transform="translate(0, 220)"  >
+            <!-- Top reference point -->
+            <use xlink:href="#testPathArcs3" 
+                 marker-start="url(#markerStart)" 
+                 marker-mid="url(#markerMid)" 
+                 marker-end="url(#markerEnd)" 
+                 class="markedPath" style="stroke-width:1"/>
+            <use xlink:href="#testPathCrossHairs" /> 
+
+            <g class="label" transform="translate(60, 50)" text-anchor="middle">
+                <text y="0">Test of arcs 3</text>
+            </g>
+        </g>
+
+
+
+        <!-- ==================================== -->
+        <!-- Arc Test 4         -->
+        <!-- ==================================== -->
+        <g transform="translate(230, 220)"  >
+            <!-- Top reference point -->
+            <use xlink:href="#testPathArcs4" 
+                 marker-start="url(#markerStart)" 
+                 marker-mid="url(#markerMid)" 
+                 marker-end="url(#markerEnd)" 
+                 class="markedPath" style="stroke-width:1"/>
+            <use xlink:href="#testPathCrossHairs" /> 
+
+            <g class="label" transform="translate(60, 50)" text-anchor="middle">
+                <text y="0">Test of arcs 4</text>
+            </g>
+        </g>
+
+
+        <!-- ==================================== -->
+        <!-- Arc Test 5         -->
+        <!-- ==================================== -->
+        <g transform="translate(115, 320)"  >
+            <!-- Top reference point -->
+            <use xlink:href="#testPathArcs5" 
+                 marker-start="url(#markerStart)" 
+                 marker-mid="url(#markerMid)" 
+                 marker-end="url(#markerEnd)" 
+                 class="markedPath" style="stroke-width:1"/>
+            <use xlink:href="#testPathCrossHairs2" /> 
+
+            <g class="label" transform="translate(60, 50)" text-anchor="middle">
+                <text y="0">Test of arcs 5</text>
+            </g>
+        </g>
+
+
+        </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/painting/markersMisc.png 
b/tests/data/svg/batik/tests/spec/painting/markersMisc.png
new file mode 100644
index 0000000..1b851de
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/painting/markersMisc.png differ
diff --git a/tests/data/svg/batik/tests/spec/painting/markersMisc.svg 
b/tests/data/svg/batik/tests/spec/painting/markersMisc.svg
new file mode 100644
index 0000000..658b27f
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/painting/markersMisc.svg
@@ -0,0 +1,264 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This test validates handling of the orient property on maker-start and    -->
+<!-- marker-end.                                                               -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: markersMisc.svg 475477 2006-11-15 22:44:28Z cam $   -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Marker Test</title>
+
+    <style type="text/css"><![CDATA[
+        .markedPath { fill:none; stroke:black; stroke-width:4; }
+    ]]></style>
+
+    <g id="content">
+
+        <g transform="translate(0, 40)">
+            <text class="title" x="50%" y="0">Markers, Ref Point, Overflow</text>
+            <text class="title" x="50%" y="1em">markerUnits &amp; viewBox</text>
+        </g>
+
+        <defs>            
+            <g id="crossHair" style="marker:none" stroke="black">
+                <line y1="-5" x2="0" y2="5" />
+                <line x1="-5" x2="5" y2="0" />
+            </g>
+
+            <g id="startEndCrossHairs">
+                <use x="0" y="20" xlink:href="#crossHair" />
+                <use x="30" y="0" xlink:href="#crossHair" />
+            </g>
+
+            <g id="startMidEndCrossHairs">
+                <use x="0" y="20" xlink:href="#crossHair" />
+                <use x="20" y="0" xlink:href="#crossHair" />
+                <use x="50" y="10" xlink:href="#crossHair" />
+            </g>
+
+            <path id="testPath" d="M 0 0 l 60 0 l 60 0" />
+
+            <g id="testPathCrossHairs">
+                <use xlink:href="#crossHair" />
+                <use x="60" xlink:href="#crossHair" />
+                <use x="120" xlink:href="#crossHair" />
+            </g>
+
+            <g id="markerContent" fill="none" stroke="none">
+                <circle r="1.8" stroke="black" fill="crimson" stroke-width=".4" />
+                <path d="M 0 -1.8 L 0.3 -0.3 L 1.8 0  L 0.3 0.3 L 0 1.8 L -.2 0.3 L -1.8 0 L -0.3 -0.3 Z" 
+                      fill="yellow" stroke="none" /> 
+            </g>
+
+            <!-- ============================= -->
+            <!-- Simple Marker Definition      -->
+            <!-- ============================= -->
+            <marker id="markerTopRef" markerWidth="8" markerHeight="8" 
+                    viewBox="-2 -2 4 4" orient="0" refX="-1" refY="-1" 
+                    markerUnits="strokeWidth" overflow="hidden">
+                <g>
+                    <use xlink:href="#markerContent" />
+                    <circle fill="white" stroke="none" cx="-1" cy="-1" r=".4" />
+                </g>
+            </marker>
+
+            <marker id="markerCenterRef" markerWidth="8" markerHeight="8" 
+                    viewBox="-2 -2 4 4" orient="0" refX="0" refY="0" 
+                    markerUnits="strokeWidth" overflow="hidden">
+                <g>
+                    <use xlink:href="#markerContent" />
+                    <circle fill="white" stroke="none" cx="0" cy="0" r=".4" />
+                </g>
+            </marker>
+
+            <marker id="markerBottomRef" markerWidth="8" markerHeight="8" 
+                    viewBox="-2 -2 4 4" orient="0" refX="1" refY="1" 
+                    markerUnits="strokeWidth" overflow="hidden">
+                <g>
+                    <use xlink:href="#markerContent" />
+                    <circle fill="white" stroke="none" cx="1" cy="1" r=".4" /> 
+                </g>
+            </marker>
+
+            <marker id="markerHidden" markerWidth="20" markerHeight="20" 
+                    viewBox="-1 -1 2 2" orient="0" refX="0" refY="0" 
+                    markerUnits="strokeWidth" overflow="hidden">
+                <g>
+                    <use xlink:href="#markerContent" />
+                    <rect fill="none" stroke="black" stroke-width="0.1" x="-0.95" y="-0.95" width="1.9" 
height="1.9" />
+                </g>
+            </marker>
+
+            <marker id="markerOverflow" markerWidth="20" markerHeight="20" 
+                    viewBox="-1 -1 2 2" orient="0" refX="0" refY="0" 
+                    markerUnits="strokeWidth" overflow="visible">
+                <g>
+                    <use xlink:href="#markerContent" />
+                    <rect fill="none" stroke="white" stroke-width="0.1" x="-1" y="-1" width="2" height="2" />
+                </g>
+            </marker>
+
+            <marker id="markerViewBoxTopLeft" markerWidth="20" markerHeight="20" 
+                    viewBox="-2 -2 2 2" orient="0" refX="0" refY="0" 
+                    markerUnits="strokeWidth" overflow="hidden">
+                <g>
+                    <use xlink:href="#markerContent" />
+                    <rect x="-1.95" y="-1.95" width="1.9" height="1.9" stroke-width="0.1" stroke="black" 
fill="none"/>
+                </g>
+            </marker>
+
+            <marker id="markerViewBoxBottomRight" markerWidth="20" markerHeight="20" 
+                    viewBox="0 0 2 2" orient="0" refX="0" refY="0" 
+                    markerUnits="strokeWidth" overflow="hidden">
+                <g>
+                    <use xlink:href="#markerContent" />
+                    <rect x=".05" y=".05" width="1.9" height="1.9" stroke-width="0.1" stroke="black" 
fill="none"/>
+                </g>
+            </marker>
+
+            <marker id="markerViewBoxCenterSlice" markerWidth="20" markerHeight="40" 
+                    viewBox="-1 -2 2 4" orient="0" refX="0" refY="0" 
+                    markerUnits="strokeWidth" overflow="hidden">
+                <g>
+                    <use xlink:href="#markerContent" />
+                    <rect x="-.95" y="-1.95" width="1.9" height="3.9" stroke-width="0.1" stroke="black" 
fill="none"/>
+                </g>
+            </marker>
+
+            <marker id="markerStrokeWidth" markerWidth="40" markerHeight="40" 
+                    viewBox="-1 -1 2 2" orient="0" refX="0" refY="0" 
+                    markerUnits="strokeWidth" overflow="visible">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="markerUserSpace" markerWidth="20" markerHeight="20" 
+                    viewBox="-1 -1 2 2" orient="0" refX="0" refY="0" 
+                    markerUnits="userSpaceOnUse" overflow="visible">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+   
+        </defs>
+
+        <g transform="translate(50, 140)">
+
+        <!-- ==================================== -->
+        <!-- Simply test the various settings for -->
+        <!-- the refX and refY attributes         -->
+        <!-- ==================================== -->
+        <g transform="translate(0, 0)"  >
+            <!-- Top reference point -->
+            <use xlink:href="#testPath" 
+                 marker-start="url(#markerBottomRef)" 
+                 marker-mid="url(#markerCenterRef)" 
+                 marker-end="url(#markerTopRef)" 
+                 class="markedPath"/>
+            <use xlink:href="#testPathCrossHairs" /> 
+
+            <g class="label" transform="translate(60, 50)" text-anchor="middle">
+                <text y="0">Various values for refX/refY </text>
+                <text y="14">start, middle and end</text>
+            </g>
+        </g>
+
+        <!-- ==================================== -->
+        <!-- Test the various settings for the    -->
+        <!-- overflow property                    -->
+        <!-- ==================================== -->
+        <g transform="translate(0, 140)"  >
+            <!-- Top reference point -->
+            <use xlink:href="#testPath" 
+                 style="marker:url(#markerHidden); stroke-width:1; stroke:crimson"/>
+            <use xlink:href="#testPathCrossHairs" />
+            
+            <use y="70" xlink:href="#testPath" 
+                 style="marker:url(#markerOverflow);stroke-width:1; stroke:crimson"/>
+            <use y="70" xlink:href="#testPathCrossHairs" />
+
+            <g class="label" transform="translate(60, 90)" text-anchor="middle">
+                <text y="-110">overflow="hidden"</text>
+                <text y="-50">overflow="visible"</text>
+                <text y="30">Various values for the </text>
+                <text y="44">overflow property</text>
+            </g>
+        </g>
+
+        <!-- ==================================== -->
+        <!-- Test the various settings for the    -->
+        <!-- viewBox property                     -->
+        <!-- ==================================== -->
+        <g transform="translate(225, 0)"  >
+            <!-- Top reference point -->
+            <use xlink:href="#testPath" 
+                 marker-start="url(#markerViewBoxTopLeft)"
+                 marker-end="url(#markerViewBoxBottomRight)"
+                 marker-mid="url(#markerViewBoxCenterSlice)"
+                 style="stroke-width:1; stroke:crimson"/>
+            <use xlink:href="#testPathCrossHairs" />
+
+            <g class="label" transform="translate(60, 50)" text-anchor="middle">
+                <text y="0">Various values for the </text>
+                <text y="14">viewBox property</text>
+            </g>
+        </g>
+
+        <!-- ==================================== -->
+        <!-- Test the various settings for the    -->
+        <!-- markerUnits property                 -->
+        <!-- ==================================== -->
+        <g transform="translate(225, 140)"  >
+            <!-- Top reference point -->
+            <use xlink:href="#testPath" 
+                 style="marker:url(#markerStrokeWidth);stroke-width:.5; stroke:crimson"/>
+            <use xlink:href="#testPathCrossHairs" />
+
+            <use y="70" xlink:href="#testPath" 
+                 style="marker:url(#markerUserSpace); stroke-width:.5; stroke:crimson"/>
+            <use y="70" xlink:href="#testPathCrossHairs" />
+
+            <g class="label" transform="translate(60, 90)" text-anchor="middle">
+                <text y="-115">markerUnits="strokeWidth"</text>
+                <text y="-45">markerUnits="userSpaceOnUse"</text>
+                <text y="30">Various values for the </text>
+                <text y="44">markerUnits property</text>
+            </g>
+        </g>
+
+
+        </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/painting/markersOrientA.png 
b/tests/data/svg/batik/tests/spec/painting/markersOrientA.png
new file mode 100644
index 0000000..c19d711
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/painting/markersOrientA.png differ
diff --git a/tests/data/svg/batik/tests/spec/painting/markersOrientA.svg 
b/tests/data/svg/batik/tests/spec/painting/markersOrientA.svg
new file mode 100644
index 0000000..251452b
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/painting/markersOrientA.svg
@@ -0,0 +1,286 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This test validates handling of the orient property on maker-start and    -->
+<!-- marker-end.                                                               -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: markersOrientA.svg 475477 2006-11-15 22:44:28Z cam $   -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Marker Test</title>
+
+    <style type="text/css"><![CDATA[
+        .markedPath { fill:none; stroke:black; stroke-width:.5; }
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">Markers, Orient 1/2</text>
+
+        <defs>
+            <g id="arrowMarker">
+
+                <g stroke="none" >
+                    <circle r="3" />
+                    <rect x="-1" y="0" width="2" height="7" />
+                    <path d="M -3 6 l 6 0 l -3 3 z" />
+                </g>
+
+            </g>
+            
+            <g id="crossHair" style="marker:none" stroke="black">
+                <line y1="-5" x2="0" y2="5" />
+                <line x1="-5" x2="5" y2="0" />
+            </g>
+
+            <g id="startEndCrossHairs">
+                <use x="0" y="20" xlink:href="#crossHair" />
+                <use x="30" y="0" xlink:href="#crossHair" />
+            </g>
+
+            <g id="startMidEndCrossHairs">
+                <use x="0" y="20" xlink:href="#crossHair" />
+                <use x="20" y="0" xlink:href="#crossHair" />
+                <use x="50" y="10" xlink:href="#crossHair" />
+            </g>
+
+            <pattern id="gridPattern" viewBox="-5 -5 10 10" x="-5" y="-5" width="10" height="10"
+                     patternContentUnits="userSpaceOnUse" patternUnits="userSpaceOnUse">
+                <g stroke="rgb(245, 245, 255)" stroke-width="1">
+                    <line x1="0" y1="-6" x2="0" y2="6" />
+                    <line x1="-6" y1="0" x2="6" y2="0" />
+                </g>
+            </pattern>
+
+            <!-- ============================= -->
+            <!-- Simple Marker Definition      -->
+            <!-- ============================= -->
+            <marker id="startMarker" markerWidth="48" markerHeight="32" 
+                    viewBox="-10 -3 13 6" orient="auto" refX="0" refY="0"
+                    markerUnits="strokeWidth">
+                <g>
+                <use xlink:href="#arrowMarker" transform="rotate(90)" fill="crimson" />
+                </g>
+            </marker>
+                    
+            <marker id="endMarker" markerWidth="48" markerHeight="24" 
+                    viewBox="-3 -3 13 6" orient="auto" refX="0" refY="0"
+                    markerUnits="strokeWidth">
+                <g>
+                    <use xlink:href="#arrowMarker" transform="rotate(-90)" fill="orange"/> 
+                </g>
+            </marker>
+
+            <marker id="midMarker" markerWidth="64" markerHeight="48" 
+                    viewBox="-5 -10 10 13" orient="auto" refX="0" refY="0"
+                    markerUnits="strokeWidth">
+                <g>
+                    <use xlink:href="#arrowMarker" transform="rotate(180)" fill="gold"/> 
+                    <line stroke="gold" x1="-5" y1="0" x2="5" y2="0" />
+                </g>
+            </marker>
+
+        </defs>
+
+        <g transform="translate(110, 120)">
+
+        <g id="grid" stroke="black" fill="none">
+            <rect x="-30" y="-25" width="300" height="350" fill="url(markersOrientA.svg#gridPattern)"/>
+
+            <rect x="-30" y="-45" width="300" height="20" fill="rgb(240, 240, 240)" />
+            <rect x="-50" y="-25" width="20" height="350" fill="rgb(240, 240, 240)" />
+
+            <line x1="70" y1="-45" x2="70" y2="325" />
+            <line x1="170" y1="-45" x2="170" y2="325" />
+            <line x1="-50" y1="45" x2="270" y2="45" />
+            <line x1="-50" y1="115" x2="270" y2="115" />
+            <line x1="-50" y1="185" x2="270" y2="185" />
+            <line x1="-50" y1="255" x2="270" y2="255" />
+
+            <g class="legend" text-anchor="middle" fill="black" stroke="none">
+            <text transform="translate(-35, 10) rotate(-90)">
+                moveTo
+            </text>
+
+            <text transform="translate(-35, 80) rotate(-90)">
+                lineTo
+            </text>
+
+            <text transform="translate(-35, 150) rotate(-90)">
+                quadTo
+            </text>
+
+            <text transform="translate(-35, 220) rotate(-90)">
+                cubicTo
+            </text>
+
+            <text transform="translate(-35, 290) rotate(-90)">
+                close
+            </text>
+            </g>
+        </g>
+
+        <g id="gridLabels" class="legend" text-anchor="middle">
+            <text x="20" y="-30">start/end</text>
+            <text x="120" y="-30">Middle w/ moveTo</text>
+            <text x="220" y="-30">Middle w/ lineTo</text>
+
+        </g>
+
+        <!-- ==================================== -->
+        <!-- The following 6 paths have two       -->
+        <!-- points, validating the various       -->
+        <!-- possibilities for start and end      -->
+        <!-- orientations                         -->
+        <!-- Start is always a move to            -->
+        <!-- ==================================== -->
+        <g marker-start="url(#startMarker)" marker-end="url(#endMarker)" 
+           transform="translate(0, 0)"  >
+
+
+            <!-- End is a moveTo -->
+            <path d="M 0 20 M 30 0" class="markedPath"/>
+            <use xlink:href="#startEndCrossHairs" />
+
+            <!-- End is a lineTo -->
+            <g transform="translate(0, 70)">
+                <path d="M 0 20 L 30 0" class="markedPath" />
+                <use xlink:href="#startEndCrossHairs" />
+            </g>
+
+            <!-- End is a quadTo -->
+            <g transform="translate(0, 140)">
+                <path d="M 0 20 Q 10 -20 30 0" class="markedPath"/>
+                <use xlink:href="#startEndCrossHairs" />
+            </g>
+
+            <!-- End is a cubicTo -->
+            <g transform="translate(0, 210)">
+                <path d="M 0 20 C 0 -15 20 -15 30 0" class="markedPath"/>
+                <use xlink:href="#startEndCrossHairs" />
+            </g>
+
+            <!-- End is a close -->
+            <g transform="translate(0, 280)" >
+                <path d="M 0 20 Z" class="markedPath"/>
+                <use xlink:href="#startEndCrossHairs" />
+            </g>
+        </g>
+
+        <!-- ==================================== -->
+        <!-- The following 5 paths have three      -->
+        <!-- points, validating the various       -->
+        <!-- possibilities for middle orientation -->
+        <!-- when the segment ending on the       -->
+        <!-- middle point is a moveTo             -->
+        <!--                                      -->
+        <!-- in : moveTo                          -->
+        <!-- ==================================== -->
+        <g marker-mid="url(#midMarker)"
+           transform="translate(100, 0)"  >
+
+
+            <!-- Out is a moveTo -->
+            <path d="M 0 20 L 0 20 M 0 20 M 20 0 M 50 10" class="markedPath"/>
+            <use xlink:href="#startMidEndCrossHairs" />
+
+            <!-- Out is a lineTo -->
+            <g transform="translate(0, 70)">
+                <path d="M 0 20 L 0 20 M 0 20 M 20 0 L 50 10" class="markedPath" />
+                <use xlink:href="#startMidEndCrossHairs" />
+            </g>
+
+            <!-- Out is a quadTo -->
+            <g transform="translate(0, 140)">
+                <path d="M 0 20 L 0 20 M 0 20 M 20 0 Q 50 -30 50 10" class="markedPath" />
+                <use xlink:href="#startMidEndCrossHairs" />
+            </g>
+
+            <!-- Out is a cubicTo -->
+            <g transform="translate(0, 210)">
+                <path d="M 0 20 L 0 20 M 0 20 M 20 0 C 40 -10 80 -20 50 10" class="markedPath" />
+                <use xlink:href="#startMidEndCrossHairs" />
+            </g>
+
+            <!-- Out is a close -->
+            <g transform="translate(0, 280)">
+                <path d="M 0 20 L 0 20 M 0 20 M 20 0 Z" class="markedPath" />
+                <use xlink:href="#startMidEndCrossHairs" />
+            </g>
+
+        </g>
+
+        <!-- ==================================== -->
+        <!-- The following 5 paths have three     -->
+        <!-- points, validating the various       -->
+        <!-- possibilities for middle orientation -->
+        <!-- when the segment ending on the       -->
+        <!-- middle point is a lineTo             -->
+        <!--                                      -->
+        <!-- in : moveTo                          -->
+        <!-- ==================================== -->
+        <g marker-mid="url(#midMarker)"
+           transform="translate(200, 0)"  >
+
+
+            <!-- Out is a moveTo -->
+            <path d="M 0 20 L 20 0 M 50 10" class="markedPath"/>
+            <use xlink:href="#startMidEndCrossHairs" />
+
+            <!-- Out is a lineTo -->
+            <g transform="translate(0, 70)">
+                <path d="M 0 20 L 20 0 L 50 10" class="markedPath" />
+                <use xlink:href="#startMidEndCrossHairs" />
+            </g>
+
+            <!-- Out is a quadTo -->
+            <g transform="translate(0, 140)">
+                <path d="M 0 20 L 20 0 Q 50 0 50 10" class="markedPath" />
+                <use xlink:href="#startMidEndCrossHairs" />
+            </g>
+
+            <!-- Out is a cubicTo -->
+            <g transform="translate(0, 210)">
+                <path d="M 0 20 L 20 0 C 40 -10 80 -20 50 10" class="markedPath" />
+                <use xlink:href="#startMidEndCrossHairs" />
+            </g>
+
+            <!-- Out is a close -->
+            <g transform="translate(0, 280)">
+                <path d="M 0 20 L 20 0 Z" class="markedPath" />
+                <use xlink:href="#startMidEndCrossHairs" />
+            </g>
+
+        </g>
+        </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/painting/markersOrientB.png 
b/tests/data/svg/batik/tests/spec/painting/markersOrientB.png
new file mode 100644
index 0000000..346c8c5
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/painting/markersOrientB.png differ
diff --git a/tests/data/svg/batik/tests/spec/painting/markersOrientB.svg 
b/tests/data/svg/batik/tests/spec/painting/markersOrientB.svg
new file mode 100644
index 0000000..9a4a638
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/painting/markersOrientB.svg
@@ -0,0 +1,190 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This test validates handling of the orient property on maker-start and    -->
+<!-- marker-end.                                                               -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: markersOrientB.svg 475477 2006-11-15 22:44:28Z cam $   -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Marker Test</title>
+
+    <style type="text/css"><![CDATA[
+        .markedPath { fill:none; stroke:black; stroke-width:.5; }
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">Markers, Orient 2/2</text>
+
+        <g transform="translate(110, 120)">
+
+        <use xlink:href="markersOrientA.svg#grid" />
+
+        <g class="legend" stroke="none" fill="black" text-anchor="middle" >
+            <text x="20" y="-30">Middle w/quadTo</text>
+            <text x="120" y="-30">Middle w/ cubicTo</text>
+            <text x="220" y="-30">Middle w/ close</text>
+        </g>
+
+        <!-- ==================================== -->
+        <!-- The following 5 paths have two       -->
+        <!-- points, validating the various       -->
+        <!-- possibilities for middle orientation -->
+        <!-- when the segment ending on the       -->
+        <!-- middle point is a qadTo              -->
+        <!--                                      -->
+        <!-- in : quadTo                          -->
+        <!-- ==================================== -->
+        <g marker-mid="url(markersOrientA.svg#midMarker)"
+           transform="translate(0, 0)"  >
+
+
+            <!-- Out is a moveTo -->
+            <path d="M 0 20 Q 40 40 20 0 M 50 10" class="markedPath"/>
+            <use xlink:href="markersOrientA.svg#startMidEndCrossHairs" />
+
+            <!-- Out is a lineTo -->
+            <g transform="translate(0, 70)">
+                <path d="M 0 20 Q 20 20 20 0 L 50 10" class="markedPath" />
+                <use xlink:href="markersOrientA.svg#startMidEndCrossHairs" />
+            </g>
+
+            <!-- Out is a quadTo -->
+            <g transform="translate(0, 140)">
+                <path d="M 0 20 Q 20 20 20 0 Q 50 0 50 10" class="markedPath" />
+                <use xlink:href="markersOrientA.svg#startMidEndCrossHairs" />
+            </g>
+
+            <!-- Out is a cubicTo -->
+            <g transform="translate(0, 210)">
+                <path d="M 0 20 Q 20 20 20 0 C 40 -10 80 -20 50 10" class="markedPath" />
+                <use xlink:href="markersOrientA.svg#startMidEndCrossHairs" />
+            </g>
+
+            <!-- Out is a close -->
+            <g transform="translate(0, 280)">
+                <path d="M 0 20 Q 20 20 20 0 Z" class="markedPath" />
+                <use xlink:href="markersOrientA.svg#startMidEndCrossHairs" />
+            </g>
+
+        </g>
+
+        <!-- ==================================== -->
+        <!-- The following 5 paths have three     -->
+        <!-- points, validating the various       -->
+        <!-- possibilities for middle orientation -->
+        <!-- when the segment ending on the       -->
+        <!-- middle point is a cubicTo            -->
+        <!--                                      -->
+        <!-- in : cubicTo                         -->
+        <!-- ==================================== -->
+        <g marker-mid="url(markersOrientA.svg#midMarker)"
+           transform="translate(100, 0)"  >
+
+
+            <!-- Out is a moveTo -->
+            <path d="M 0 20 C 20 40 40 20 20 0 M 50 10" class="markedPath"/>
+            <use xlink:href="markersOrientA.svg#startMidEndCrossHairs" />
+
+            <!-- Out is a lineTo -->
+            <g transform="translate(0, 70)">
+                <path d="M 0 20 C 20 40 40 20 20 0 L 50 10" class="markedPath" />
+                <use xlink:href="markersOrientA.svg#startMidEndCrossHairs" />
+            </g>
+
+            <!-- Out is a quadTo -->
+            <g transform="translate(0, 140)">
+                <path d="M 0 20 C 20 40 40 20 20 0 Q 50 0 50 10" class="markedPath" />
+                <use xlink:href="markersOrientA.svg#startMidEndCrossHairs" />
+            </g>
+
+            <!-- Out is a cubicTo -->
+            <g transform="translate(0, 210)">
+                <path d="M 0 20 C 20 40 40 20 20 0 C 40 -10 80 -20 50 10" class="markedPath" />
+                <use xlink:href="markersOrientA.svg#startMidEndCrossHairs" />
+            </g>
+
+            <!-- Out is a close -->
+            <g transform="translate(0, 280)">
+                <path d="M 0 20 C 20 40 40 20 20 0 Z" class="markedPath" />
+                <use xlink:href="markersOrientA.svg#startMidEndCrossHairs" />
+            </g>
+
+        </g>
+
+        <!-- ==================================== -->
+        <!-- The following 5 paths have three     -->
+        <!-- points, validating the various       -->
+        <!-- possibilities for middle orientation -->
+        <!-- when the segment ending on the       -->
+        <!-- middle point is a close              -->
+        <!--                                      -->
+        <!-- in : close                           -->
+        <!-- ==================================== -->
+        <g marker-mid="url(markersOrientA.svg#midMarker)"
+           transform="translate(200, 0)"  >
+
+
+            <!-- Out is a moveTo -->
+            <path d="M 0 20 Z M 50 10" class="markedPath"/>
+            <use xlink:href="markersOrientA.svg#startMidEndCrossHairs" />
+
+            <!-- Out is a lineTo -->
+            <g transform="translate(0, 70)">
+                <path d="M 0 20 Z L 50 10" class="markedPath" />
+                <use xlink:href="markersOrientA.svg#startMidEndCrossHairs" />
+            </g>
+
+            <!-- Out is a quadTo -->
+            <g transform="translate(0, 140)">
+                <path d="M 0 20 Z Q 70 -30 50 10" class="markedPath" />
+                <use xlink:href="markersOrientA.svg#startMidEndCrossHairs" />
+            </g>
+
+            <!-- Out is a cubicTo -->
+            <g transform="translate(0, 210)">
+                <path d="M 0 20 Z C 40 -10 80 -20 50 10" class="markedPath" />
+                <use xlink:href="markersOrientA.svg#startMidEndCrossHairs" />
+            </g>
+
+            <!-- Out is a close : NA -->
+            <!-- 
+            <g transform="translate(0, 280)">
+                <path d="M 0 20 Z Z" class="markedPath" />
+                <use xlink:href="markersOrientA.svg#startMidEndCrossHairs" />
+            </g>
+            -->
+        </g>
+        </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/painting/markersPreserveAspectRatio.png 
b/tests/data/svg/batik/tests/spec/painting/markersPreserveAspectRatio.png
new file mode 100644
index 0000000..69b3752
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/painting/markersPreserveAspectRatio.png differ
diff --git a/tests/data/svg/batik/tests/spec/painting/markersPreserveAspectRatio.svg 
b/tests/data/svg/batik/tests/spec/painting/markersPreserveAspectRatio.svg
new file mode 100644
index 0000000..8c988b5
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/painting/markersPreserveAspectRatio.svg
@@ -0,0 +1,582 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This test validates handling of the orient property on maker-start and    -->
+<!-- marker-end.                                                               -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: markersPreserveAspectRatio.svg 475477 2006-11-15 22:44:28Z cam $   -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Marker Test</title>
+
+    <style type="text/css"><![CDATA[
+        .markedPath { fill:none; stroke:black; stroke-width:4; }
+    ]]></style>
+
+    <g id="content">
+
+        <g transform="translate(0, 40)">
+            <text class="title" x="50%" y="0">Markers, preserveAspectRatio</text>
+        </g>
+
+        <defs>            
+            <g id="markerColumn">
+                <circle cx=".5" cy=".5" r=".5" />
+                <rect x="0" y="1" width="1" height="1" />
+                <path d="M 0 3 l 1 0 l -0.5 -1 z" />
+            </g>
+
+            <g id="markerContent" stroke="none">
+                <rect x="0" y="0" width="3" height="3" fill="black" />
+                <use xlink:href="#markerColumn" fill="crimson" />
+                <use xlink:href="#markerColumn" x="1" fill="gold" />
+                <use xlink:href="#markerColumn" x="2" fill="orange" />
+            </g>
+
+            <path id="testPath" d="M 60 20 l 30 0 l 30 0" fill="none"/>
+
+            <!-- ============================= -->
+            <!-- Marker Definitions            -->
+            <!-- ============================= -->
+            <marker id="startEndMarker" markerWidth="8" markerHeight="8" 
+                    viewBox="-4 -4 8 8" orient="0" 
+                    markerUnits="strokeWidth" overflow="hidden">
+                <circle r="4" fill="black" stroke="none" />
+            </marker>
+
+        
+            <marker id="test" markerWidth="20" markerHeight="20" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <!-- ======================================================== -->
+            <!-- align = none                                             -->
+            <!-- ======================================================== -->
+            <marker id="meetNone" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="none meet">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+            
+            <marker id="sliceNone" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="none slice">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+            
+
+            <marker id="noneNone" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="none">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+            
+
+            <!-- ========================================================= -->
+            <!-- meetOrSlice = meet                                        -->
+            <!-- ========================================================= -->
+            
+            <!-- xMxx = xMin -->
+            <marker id="meetXminYmin" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMinYMin meet">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="meetXminYmid" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMinYMid meet">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="meetXminYmax" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMinYMax meet">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+
+            <!-- xMxx = xMid -->
+            <marker id="meetXmidYmin" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMidYMin meet">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="meetXmidYmid" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMidYMid meet">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="meetXmidYmax" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMidYMax meet">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <!-- xMxx = xmax -->
+            <marker id="meetXmaxYmin" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMaxYMin meet">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="meetXmaxYmid" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMaxYMid meet">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="meetXmaxYmax" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMaxYMax meet">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+
+            <!-- ========================================================= -->
+            <!-- meetOrSlice = slice                                              -->
+            <!-- ========================================================= -->
+            
+            <!-- xMxx = xMin -->
+            <marker id="sliceXminYmin" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMinYMin slice">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="sliceXminYmid" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMinYMid slice">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="sliceXminYmax" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMinYMax slice">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+
+            <!-- xMxx = xMid -->
+            <marker id="sliceXmidYmin" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMidYMin slice">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="sliceXmidYmid" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMidYMid slice">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="sliceXmidYmax" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMidYMax slice">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <!-- xMxx = xmax -->
+            <marker id="sliceXmaxYmin" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMaxYMin slice">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="sliceXmaxYmid" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMaxYMid slice">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="sliceXmaxYmax" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMaxYMax slice">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+
+            <!-- ========================================================= -->
+            <!-- meetOrSlice = none                                              -->
+            <!-- ========================================================= -->
+            
+            <!-- xMxx = xMin -->
+            <marker id="noneXminYmin" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMinYMin">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="noneXminYmid" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMinYMid">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="noneXminYmax" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMinYMax">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+
+            <!-- xMxx = xMid -->
+            <marker id="noneXmidYmin" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMidYMin">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="noneXmidYmid" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMidYMid">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="noneXmidYmax" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMidYMax">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <!-- xMxx = xmax -->
+            <marker id="noneXmaxYmin" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMaxYMin">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="noneXmaxYmid" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMaxYMid">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+            <marker id="noneXmaxYmax" markerWidth="20" markerHeight="30" 
+                    viewBox="0 0 3 3" orient="0" refX="1.5" refY="1.5" 
+                    markerUnits="strokeWidth" overflow="hidden"
+                    preserveAspectRatio="xMaxYMax">
+                <g>
+                    <use xlink:href="#markerContent" />
+                </g>
+            </marker>
+
+
+
+
+            <rect id="xMxx" x="0" y="0" width="20" height="120" />
+            <rect id="yMxx" x="20" y="0" width="20" height="40" />
+            <rect id="sampleCell" x="40" y="0" width="100" height="40" />
+
+            <g id="xMxxBlock" stroke="black">
+                <use xlink:href="#xMxx" />
+                <use xlink:href="#yMxx" fill="rgb(255, 250, 210)"/>
+                <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="35" y="20" 
+                      transform="rotate(-90, 35, 20)">
+                yMin
+                </text>
+                <use xlink:href="#yMxx" y="40" fill="rgb(255, 240, 150)"/>
+                <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="35" y="60" 
+                      transform="rotate(-90, 35, 60)">
+                yMid
+                </text>
+                <use xlink:href="#yMxx" y="80" fill="rgb(255, 235, 120)"/>
+                <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="35" y="100" 
+                      transform="rotate(-90, 35, 100)">
+                yMax
+                </text>
+            </g>
+
+            <g id="sampleColumn" stroke="black" fill="none">
+                <use xlink:href="#sampleCell" fill="rgb(255, 250, 210)"/>
+                <use xlink:href="#sampleCell" y="40" fill="rgb(255, 240, 150)"/>
+                <use xlink:href="#sampleCell" y="80" fill="rgb(255, 235, 120)"/>
+                <use xlink:href="#sampleCell" y="120" fill="rgb(255, 250, 210)"/>
+                <use xlink:href="#sampleCell" y="160" fill="rgb(255, 240, 150)"/>
+                <use xlink:href="#sampleCell" y="200" fill="rgb(255, 235, 120)"/>
+                <use xlink:href="#sampleCell" y="240" fill="rgb(255, 250, 210)"/>
+                <use xlink:href="#sampleCell" y="280" fill="rgb(255, 240, 150)"/>
+                <use xlink:href="#sampleCell" y="320" fill="rgb(255, 235, 120)"/>
+                <use xlink:href="#sampleCell" y="360"/>
+            </g>
+
+            <rect id="columnHeader" x="40" y="-20" width="100" height="20" stroke="black"/>
+
+        </defs>
+
+        <g transform="translate(50, 80)">
+            <use xlink:href="#xMxxBlock" fill="rgb(255, 250, 210)"/>
+            <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="15" y="60" 
+                      transform="rotate(-90, 15, 60)">
+            xMin
+            </text>
+
+            <use xlink:href="#xMxxBlock" y="120" fill="rgb(255, 240, 150)"/>
+            <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="15" y="180" 
+                      transform="rotate(-90, 15, 180)">
+            xMid
+            </text>
+
+            <use xlink:href="#xMxxBlock" y="240" fill="rgb(255, 235, 120)"/>
+            <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="15" y="300" 
+                      transform="rotate(-90, 15, 300)">
+            xMax
+            </text>
+
+            <use xlink:href="#sampleColumn" />
+            <use xlink:href="#sampleColumn" x="100" />
+            <use xlink:href="#sampleColumn" x="200" />
+
+            <use xlink:href="#columnHeader" fill="none"/>
+            <use xlink:href="#columnHeader" x="100" fill="none"/>
+            <use xlink:href="#columnHeader" x="200" fill="none"/>
+
+            <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="90" y="-5">
+            meet
+            </text>
+
+            <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="190" y="-5">
+            slice
+            </text>
+
+            <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="290" y="-5">
+            none
+            </text>
+
+            <rect x="0" y="360" width="40" height="40" stroke="black" fill="none" />
+            <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="25" y="380" 
+                      transform="rotate(-90, 25, 380)">
+            none
+            </text>
+
+            <!-- ============================================ -->
+            <!-- Various marker settings here                 -->
+            <!-- ============================================ -->
+            
+            <!-- =============================== -->
+            <!-- meetOrSlice = meet                    -->
+            <!-- =============================== -->
+            <g marker-start="url(#startEndMarker)" marker-end="url(#startEndMarker)" stroke="black">
+
+                <!-- xMxx = xMin -->
+                <use xlink:href="#testPath" marker-mid="url(#meetXminYmin)" />
+                <use xlink:href="#testPath" marker-mid="url(#meetXminYmid)" y="40"/>
+                <use xlink:href="#testPath" marker-mid="url(#meetXminYmax)" y="80"/>
+
+                <!-- xMxx = xMid -->
+                <g transform="translate(0, 120)">
+                    <use xlink:href="#testPath" marker-mid="url(#meetXmidYmin)" />
+                    <use xlink:href="#testPath" marker-mid="url(#meetXmidYmid)" y="40"/>
+                    <use xlink:href="#testPath" marker-mid="url(#meetXmidYmax)" y="80"/>
+                </g>
+
+                <!-- xMxx = xMax -->
+                <g transform="translate(0, 240)">
+                    <use xlink:href="#testPath" marker-mid="url(#meetXmaxYmin)" />
+                    <use xlink:href="#testPath" marker-mid="url(#meetXmaxYmid)" y="40"/>
+                    <use xlink:href="#testPath" marker-mid="url(#meetXmaxYmax)" y="80"/>
+                </g>
+
+            </g>
+           
+            <!-- =============================== -->
+            <!-- meetOrSlice = slice                    -->
+            <!-- =============================== -->
+            <g marker-start="url(#startEndMarker)" transform="translate(100, 0)"
+                marker-end="url(#startEndMarker)" stroke="black">
+
+                <!-- xMxx = xMin -->
+                <use xlink:href="#testPath" marker-mid="url(#sliceXminYmin)" />
+                <use xlink:href="#testPath" marker-mid="url(#sliceXminYmid)" y="40"/>
+                <use xlink:href="#testPath" marker-mid="url(#sliceXminYmax)" y="80"/>
+
+                <!-- xMxx = xMid -->
+                <g transform="translate(0, 120)">
+                    <use xlink:href="#testPath" marker-mid="url(#sliceXmidYmin)" />
+                    <use xlink:href="#testPath" marker-mid="url(#sliceXmidYmid)" y="40"/>
+                    <use xlink:href="#testPath" marker-mid="url(#sliceXmidYmax)" y="80"/>
+                </g>
+
+                <!-- xMxx = xMax -->
+                <g transform="translate(0, 240)">
+                    <use xlink:href="#testPath" marker-mid="url(#sliceXmaxYmin)" />
+                    <use xlink:href="#testPath" marker-mid="url(#sliceXmaxYmid)" y="40"/>
+                    <use xlink:href="#testPath" marker-mid="url(#sliceXmaxYmax)" y="80"/>
+                </g>
+
+            </g>
+           
+            <!-- =============================== -->
+            <!-- meetOrSlice = none              -->
+            <!-- =============================== -->
+            <g marker-start="url(#startEndMarker)" transform="translate(200, 0)"
+                marker-end="url(#startEndMarker)" stroke="black">
+
+                <!-- xMxx = xMin -->
+                <use xlink:href="#testPath" marker-mid="url(#noneXminYmin)" />
+                <use xlink:href="#testPath" marker-mid="url(#noneXminYmid)" y="40"/>
+                <use xlink:href="#testPath" marker-mid="url(#noneXminYmax)" y="80"/>
+
+                <!-- xMxx = xMid -->
+                <g transform="translate(0, 120)">
+                    <use xlink:href="#testPath" marker-mid="url(#noneXmidYmin)" />
+                    <use xlink:href="#testPath" marker-mid="url(#noneXmidYmid)" y="40"/>
+                    <use xlink:href="#testPath" marker-mid="url(#noneXmidYmax)" y="80"/>
+                </g>
+
+                <!-- xMxx = xMax -->
+                <g transform="translate(0, 240)">
+                    <use xlink:href="#testPath" marker-mid="url(#noneXmaxYmin)" />
+                    <use xlink:href="#testPath" marker-mid="url(#noneXmaxYmid)" y="40"/>
+                    <use xlink:href="#testPath" marker-mid="url(#noneXmaxYmax)" y="80"/>
+                </g>
+
+            </g>
+           
+            <!-- =============================== -->
+            <!-- align = none                    -->
+            <!-- =============================== -->
+            <g marker-start="url(#startEndMarker)" transform="translate(0, 360)"
+                marker-end="url(#startEndMarker)" stroke="black">
+
+                <use xlink:href="#testPath" marker-mid="url(#meetNone)" />
+                <use xlink:href="#testPath" marker-mid="url(#sliceNone)" x="100"/> 
+                <use xlink:href="#testPath" marker-mid="url(#noneNone)" x="200"/> 
+
+            </g>
+        </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/painting/markersShapes.png 
b/tests/data/svg/batik/tests/spec/painting/markersShapes.png
new file mode 100644
index 0000000..9f9e137
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/painting/markersShapes.png differ
diff --git a/tests/data/svg/batik/tests/spec/painting/markersShapes.svg 
b/tests/data/svg/batik/tests/spec/painting/markersShapes.svg
new file mode 100644
index 0000000..9654025
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/painting/markersShapes.svg
@@ -0,0 +1,151 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This test shows the various shapes that can have markers.                 -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: markersShapes.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Marker Test</title>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">Markers, Shape Test</text>
+
+        <defs>
+            <radialGradient id="whiteSphere" gradientUnits="objectBoundingBox" cx=".25" cy=".25" r=".8">
+                <stop offset="0" stop-color="white" />
+                <stop offset=".5" stop-color="rgb(230, 230, 230)" />
+                <stop offset=".8" stop-color="rgb(128, 128, 128)" />
+                <stop offset="1.4" stop-color="black" />
+            </radialGradient>
+
+            <radialGradient id="graySphere" gradientUnits="objectBoundingBox" cx=".25" cy=".25" r=".8">
+                <stop offset="0" stop-color="white" />
+                <stop offset=".8" stop-color="rgb(40, 40, 40)" />
+                <stop offset="1.4" stop-color="black" />
+            </radialGradient>
+
+            <radialGradient id="blackSphere" gradientUnits="objectBoundingBox" cx=".25" cy=".25" r=".8">
+                <stop offset="0" stop-color="white" />
+                <stop offset=".2" stop-color="rgb(40, 40, 40)" />
+                <stop offset="1.4" stop-color="black" />
+            </radialGradient>
+
+            <filter id="shadow" x="-1" y="-.2" width="2.8" height="1.4" 
+                    primitiveUnits="objectBoundingBox">
+                <feGaussianBlur stdDeviation="1 1" in="SourceAlpha"/>
+                <feColorMatrix type="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 .5 0" />
+                <feOffset dx="2" dy="2" result="offset"/>
+                <feMerge>
+                    <feMergeNode in="offset" />
+                    <feMergeNode in="SourceGraphic" />
+                </feMerge>
+            </filter>
+
+            <!-- ============================= -->
+            <!-- Simple Marker Definition      -->
+            <!-- ============================= -->
+            <marker id="startMarker" markerWidth="4" markerHeight="4" 
+                    viewBox="0 0 100 100" orient="0" refX="50" refY="50"
+                    markerUnits="strokeWidth">
+                <circle cx="50" cy="50" r="50" fill="url(#whiteSphere)" stroke="none"/>
+            </marker>
+                    
+            <marker id="midMarker" markerWidth="4" markerHeight="4" 
+                    viewBox="0 0 100 100" orient="0" refX="50" refY="50"
+                    markerUnits="strokeWidth">
+                <circle cx="50" cy="50" r="50" fill="url(#graySphere)" stroke="none"/>
+            </marker>
+                    
+            <marker id="endMarker" markerWidth="4" markerHeight="4" 
+                    viewBox="0 0 100 100" orient="0" refX="50" refY="50"
+                    markerUnits="strokeWidth">
+                <circle cx="50" cy="50" r="50" fill="url(#blackSphere)" stroke="none"/>
+            </marker>
+                    
+        </defs>
+
+        <!-- ==================================== -->
+        <!-- Path with marker                     -->
+        <!-- ==================================== -->
+        <g transform="translate(130, 120)" >
+            <path fill="none" stroke="black" stroke-width="2" d="M 0 0 q 10 0 10 10 l -10 10 q 10 0 10 10 
+                                                                 l -10 10 q 10 0 10 10 l -10 10 q 10 0 10 10 
l -10 10" 
+                  marker-start="url(#startMarker)" 
+                  marker-mid="url(#midMarker)" 
+                  marker-end="url(#endMarker)" 
+                  filter="url(#shadow)"
+                  transform="scale(3, 3)" />
+            <text x="15" y="280" text-anchor="middle" class="label">&lt;path&gt;</text>
+        </g>
+
+        <!-- ==================================== -->
+        <!-- Line with marker                     -->
+        <!-- ==================================== -->
+        <g transform="translate(50, 120)" filter="url(#shadow)"  >
+            <rect x="-10" y="-10" width="20" height="260" fill="none" stroke="none"/> 
+            <line stroke="black" stroke-width="6" x1="0" y1="0" x2="0" y2="240" 
+                  marker-start="url(#startMarker)" 
+                  marker-mid="url(#midMarker)" 
+                  marker-end="url(#endMarker)" 
+                  />
+            <text x="0" y="280" text-anchor="middle" class="label">&lt;line&gt;</text>
+        </g>
+
+        <!-- ==================================== -->
+        <!-- Polyline with marker                 -->
+        <!-- ==================================== -->
+        <g transform="translate(240, 120)" >
+            <polyline fill="none" stroke="black" stroke-width="2" points="0,0 10,10 0,20 10,30 0,40 10,50 
0,60 10,70 0,80 " 
+                  marker-start="url(#startMarker)" 
+                  marker-mid="url(#midMarker)" 
+                  marker-end="url(#endMarker)" filter="url(#shadow)" transform="scale(3, 3)" /> 
+            <text x="0" y="280" text-anchor="middle" class="label">&lt;polyline&gt;</text>
+        </g>
+
+        <!-- ==================================== -->
+        <!-- Polygon with marker                  -->
+        <!-- ==================================== -->
+        <g transform="translate(380, 120)" >
+            <polygon fill="none" stroke="black" stroke-width="2" 
+                     points="0,0 10,10 0,20 10,30 0,40 10,50 0,60 10,70 0,80 
+                     -20,80 -10,70 -20,60 -10,50 -20,40 -10,30 -20,20 -10,10 -20,0"
+                  marker-start="url(#startMarker)" 
+                  marker-mid="url(#midMarker)" 
+                  marker-end="url(#endMarker)" filter="url(#shadow)" transform="scale(3, 3)" /> 
+            <text x="-20" y="280" text-anchor="middle" class="label">&lt;polygon&gt;</text>
+        </g>
+
+  
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/painting/shape-rendering.png 
b/tests/data/svg/batik/tests/spec/painting/shape-rendering.png
new file mode 100644
index 0000000..bb08b17
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/painting/shape-rendering.png differ
diff --git a/tests/data/svg/batik/tests/spec/painting/shape-rendering.svg 
b/tests/data/svg/batik/tests/spec/painting/shape-rendering.svg
new file mode 100644
index 0000000..62341a5
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/painting/shape-rendering.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!--  Test 'shape-rendering' property                                          -->
+<!--                                                                           -->
+<!-- @author tkormann apache org                                               -->
+<!-- @version $Id: shape-rendering.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Test the 'shape-rendering' property</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+<g id="testContent">
+  <text x="225" y="50" class="title">
+    Test the 'shape-rendering' property
+  </text>
+
+  <g style="fill:gold;stroke:orange;stroke-width:8">
+
+  <circle cx="120" cy="140" r="40" style="shape-rendering:auto"/>
+  <circle cx="300" cy="140" r="40" style="shape-rendering:optimizeSpeed"/>
+  <circle cx="120" cy="290" r="40" style="shape-rendering:crispEdges"/>
+  <circle cx="300" cy="290" r="40" style="shape-rendering:geometricPrecision"/>
+  </g>
+
+  <g style="font-size:11;fill:black;stroke:none;text-anchor:middle">
+  <text x="120" y="204">auto</text>
+  <text x="300" y="204">optimizeSpeed</text>
+  <text x="120" y="354">crispEdges</text>
+  <text x="300" y="354">geometricPrecision</text>
+  </g>
+</g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/painting/stroke-rendering.png 
b/tests/data/svg/batik/tests/spec/painting/stroke-rendering.png
new file mode 100644
index 0000000..51e9dae
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/painting/stroke-rendering.png differ
diff --git a/tests/data/svg/batik/tests/spec/painting/stroke-rendering.svg 
b/tests/data/svg/batik/tests/spec/painting/stroke-rendering.svg
new file mode 100644
index 0000000..e1efbd1
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/painting/stroke-rendering.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!--  Test 'shape-rendering' property                                       -->
+<!--                                                                        -->
+<!-- @author tkormann apache org                                            -->
+<!-- @version $Id: stroke-rendering.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+
+    <title>Test the 'shape-rendering' property</title>
+        <!-- ============================================================= -->
+        <!-- Test content                                                  -->
+        <!-- ============================================================= -->
+    <g id="testContent">
+      <text x="225" y="50" class="title">Test the 'stroke-dashoffset' 
+        property</text>
+
+      <g style="fill:gold;stroke:orange;stroke-width:8">
+        <circle cx="120" cy="140" r="40" stroke-width="0"/>
+        <circle cx="300" cy="140" r="40" stroke-dasharray="10,10"/>
+        <circle cx="120" cy="290" r="40" stroke-dasharray="10,10" 
+                stroke-dashoffset="-15"/>
+        <circle cx="300" cy="290" r="40" stroke-dasharray="10" 
+                stroke-dashoffset="-25"/>
+        <circle cx="210" cy="420" r="40" stroke-dasharray="10,10" 
+                stroke-dashoffset="25"/>
+      </g>
+
+      <g style="font-size:11;fill:black;stroke:none;text-anchor:middle">
+        <text x="120" y="204">stroke-width='0'</text>
+        <text x="300" y="204">stroke-dasharray="10,10"</text>
+        <text x="120" y="354">stroke-dashoffset="-15"</text>
+        <text x="300" y="354">stroke-dashoffset="-25"</text>
+        <text x="210" y="484">stroke-dashoffset="25"</text>
+      </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/painting/text-rendering.png 
b/tests/data/svg/batik/tests/spec/painting/text-rendering.png
new file mode 100644
index 0000000..fc8feaf
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/painting/text-rendering.png differ
diff --git a/tests/data/svg/batik/tests/spec/painting/text-rendering.svg 
b/tests/data/svg/batik/tests/spec/painting/text-rendering.svg
new file mode 100644
index 0000000..7214e76
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/painting/text-rendering.svg
@@ -0,0 +1,71 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!--  Test 'text-rendering' property                                           -->
+<!--                                                                           -->
+<!-- @author tkormann apache org                                               -->
+<!-- @version $Id: text-rendering.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Test the 'text-rendering' property</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+<g id="testContent">
+  <text x="225" y="50" class="title">
+    Test the 'text-rendering' property
+  </text>
+
+  <g style="text-anchor:middle;font-size:64;font-weight:bold;fill:gold;stroke:crimson;stroke-width:2">
+
+  <text x="120" y="130" style="text-rendering:auto">Batik</text>
+  <text x="330" y="130" style="text-rendering:optimizeSpeed">Batik</text>
+  <text x="120" y="280" style="text-rendering:optimizeLegibility">Batik</text>
+  <text x="330" y="280" style="text-rendering:geometricPrecision">Batik</text>
+  </g>
+
+  <g style="text-anchor:middle;font-size:64;font-weight:bold;fill:crimson">
+      <text x="120" y="200" text-rendering="auto"              >Batik</text>
+      <text x="330" y="200" text-rendering="optimizeSpeed"     >Batik</text>
+      <text x="120" y="350" text-rendering="optimizeLegibility">Batik</text>
+      <text x="330" y="350" text-rendering="geometricPrecision">Batik</text>
+  </g>
+
+  <g style="font-size:11;fill:black;stroke:none;text-anchor:middle">
+  <text x="120" y="224" text-rendering="auto"              >auto</text>
+  <text x="330" y="224" text-rendering="optimizeSpeed"     >optimizeSpeed</text>
+  <text x="120" y="374" text-rendering="optimizeLegibility">optimizeLegibility</text>
+  <text x="330" y="374" text-rendering="geometricPrecision">geometricPrecision</text>
+  </g>
+</g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/painting/text-rendering2.png 
b/tests/data/svg/batik/tests/spec/painting/text-rendering2.png
new file mode 100644
index 0000000..cb25b11
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/painting/text-rendering2.png differ
diff --git a/tests/data/svg/batik/tests/spec/painting/text-rendering2.svg 
b/tests/data/svg/batik/tests/spec/painting/text-rendering2.svg
new file mode 100644
index 0000000..fc40f95
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/painting/text-rendering2.svg
@@ -0,0 +1,91 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!--  Test 'text-rendering' property                                           -->
+<!--                                                                           -->
+<!-- @author tkormann apache org                                               -->
+<!-- @version $Id: text-rendering2.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Test the 'text-rendering' property</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+<defs>
+
+<font id="SVGArial" horiz-adv-x="904" >
+<font-face
+    font-family="SVGArial"
+    units-per-em="2048"
+    panose-1="2 11 6 4 2 2 2 2 2 4"
+    ascent="1854"
+    descent="-434" />
+
+<missing-glyph horiz-adv-x="1536" d="M256 0V1280H1280V0H256ZM288 32H1248V1248H288V32Z" />
+
+<glyph unicode="A" glyph-name="A" horiz-adv-x="1366" d="M-3 0L560 1466H769L1369 0H1148L977 444H364L203 
0H-3ZM420 602H917L764 1008Q694 1193 660 1312Q632 1171 581 1032L420 602Z" />
+<glyph unicode="B" glyph-name="B" horiz-adv-x="1366" d="M150 0V1466H700Q868 1466 969 1422T1128 1285T1186 
1091Q1186 997 1135 914T981 780Q1114 741 1185 647T1257 425Q1257 322 1214 234T1106 97T946 25T709 0H150ZM344 
850H661Q790 850 846 867Q920 889
+957 940T995 1068Q995 1141 960 1196T860 1272T637 1293H344V850ZM344 173H709Q803 173 841 180Q908 192 953 
220T1027 301T1056 425Q1056 507 1014 567T898 652T683 677H344V173Z" />
+<glyph unicode="I" glyph-name="I" horiz-adv-x="569" d="M191 0V1466H385V0H191Z" />
+<glyph unicode="K" glyph-name="K" horiz-adv-x="1366" d="M150 0V1466H344V739L1072 1466H1335L720 872L1362 
0H1106L584 742L344 508V0H150Z" />
+<glyph unicode="T" glyph-name="T" horiz-adv-x="1251" d="M531 0V1293H48V1466H1210V1293H725V0H531Z" />
+</font>
+
+</defs>
+
+
+<g id="testContent">
+  <text x="225" y="30" class="title">
+    Test the 'text-rendering' property
+  </text>
+  <text x="225" y="50" class="title">
+    (Using SVG font)
+  </text>
+
+  <g style="font-family:SVGArial; 
text-anchor:middle;font-size:60;font-weight:bold;fill:gold;stroke:crimson;stroke-width:2">
+
+  <text x="120" y="180" style="text-rendering:auto">BATIK</text>
+  <text x="330" y="180" style="text-rendering:optimizeSpeed">BATIK</text>
+
+  <text x="120" y="330" style="text-rendering:optimizeLegibility">BATIK</text>
+  <text x="330" y="330" style="text-rendering:geometricPrecision">BATIK</text>
+  </g>
+
+  <g style="font-size:11;fill:black;stroke:none;text-anchor:middle">
+  <text x="120" y="204">auto</text>
+  <text x="330" y="204">optimizeSpeed</text>
+  <text x="120" y="354">optimizeLegibility</text>
+  <text x="330" y="354">geometricPrecision</text>
+  </g>
+</g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/painting/visibility.png 
b/tests/data/svg/batik/tests/spec/painting/visibility.png
new file mode 100644
index 0000000..99f5199
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/painting/visibility.png differ
diff --git a/tests/data/svg/batik/tests/spec/painting/visibility.svg 
b/tests/data/svg/batik/tests/spec/painting/visibility.svg
new file mode 100644
index 0000000..78ce7b5
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/painting/visibility.svg
@@ -0,0 +1,139 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   
+        http://www.apache.org/licenses/LICENSE-2.0
+   
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!-- ========================================================================= -->
+<!--  Test 'visibility' property inheritance                                   -->
+<!--                                                                           -->
+<!-- @author tkormann apache org                                               -->
+<!-- @version $Id: visibility.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title> Test 'visibility' property inheritance</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+<g id="testContent">
+  <text x="225" y="50" class="title">
+    Test 'visibility' property inheritance
+  </text>
+<g transform="translate(0 10)" style="font-size:12">
+
+    <g transform="translate(80 40)">
+      <g>
+         <rect x="0"  y="45" width="40" height="50" style="fill:#eee"/>
+         <rect x="40" y="45" width="40" height="50" style="fill:#aaa"/>
+         <rect x="80" y="45" width="40" height="50" style="fill:#444"/>
+         <text x="60" y="120" style="text-anchor:middle">inherit | inherit | inherit</text>
+         <text x="60" y="136" style="text-anchor:middle">&lt;g> inherit</text>
+      </g>
+      <g transform="translate(160, 0)">
+         <rect x="0"  y="45" width="40" height="50" style="fill:#eee"/>
+         <rect x="40" y="45" width="40" height="50" style="fill:#aaa"/>
+         <rect x="80" y="45" width="40" height="50" style="fill:#444"/>
+         <text x="60" y="120" style="text-anchor:middle">inherit | inherit | inherit</text>
+         <text x="60" y="136" style="text-anchor:middle">&lt;g> hidden</text>
+      </g>
+      <g transform="translate(0 10)">
+      <g style="visibility:inherit">
+         <rect x="0"  y="45" width="40" height="50" style="visibility:inherit; fill:gold"/>
+         <rect x="40" y="45" width="40" height="50" style="visibility:inherit; fill:orange"/>
+         <rect x="80" y="45" width="40" height="50" style="visibility:inherit; fill:crimson"/>
+      </g>
+      <g style="visibility:hidden" transform="translate(160, 0)">
+         <rect x="0"  y="45"  width="40" height="50" style="visibility:inherit; fill:gold"/>
+         <rect x="40" y="45" width="40" height="50" style="visibility:inherit; fill:orange"/>
+         <rect x="80" y="45" width="40" height="50" style="visibility:inherit; fill:crimson"/>
+      </g>
+      </g>
+    </g>
+
+<!-- ########################################################################### -->
+    <g transform="translate(80 160)">
+      <g>
+         <rect x="0"  y="45" width="40" height="50" style="fill:#eee"/>
+         <rect x="40" y="45" width="40" height="50" style="fill:#aaa"/>
+         <rect x="80" y="45" width="40" height="50" style="fill:#444"/>
+         <text x="60" y="120" style="text-anchor:middle">inherit | hidden | visible</text>
+         <text x="60" y="136" style="text-anchor:middle">&lt;g> inherit</text>
+      </g>
+      <g transform="translate(160, 0)">
+         <rect x="0"  y="45" width="40" height="50" style="fill:#eee"/>
+         <rect x="40" y="45" width="40" height="50" style="fill:#aaa"/>
+         <rect x="80" y="45" width="40" height="50" style="fill:#444"/>
+         <text x="60" y="120" style="text-anchor:middle">inherit | hidden | visible</text>
+         <text x="60" y="136" style="text-anchor:middle">&lt;g> visible</text>
+      </g>
+      <g transform="translate(0 10)">
+      <g style="visibility:inherit">
+         <rect x="0"  y="45" width="40" height="50" style="visibility:inherit; fill:gold"/>
+         <rect x="40" y="45" width="40" height="50" style="visibility:hidden; fill:orange"/>
+         <rect x="80" y="45" width="40" height="50" style="visibility:visible; fill:crimson"/>
+      </g>
+      <g style="visibility:visible" transform="translate(160, 0)">
+         <rect x="0"  y="45"  width="40" height="50" style="visibility:inherit; fill:gold"/>
+         <rect x="40" y="45" width="40" height="50" style="visibility:hidden; fill:orange"/>
+         <rect x="80" y="45" width="40" height="50" style="visibility:visible; fill:crimson"/>
+      </g>
+      </g>
+    </g>
+
+    <g transform="translate(80 280)">
+      <g>
+         <rect x="0"  y="45" width="40" height="50" style="fill:#eee"/>
+         <rect x="40" y="45" width="40" height="50" style="fill:#aaa"/>
+         <rect x="80" y="45" width="40" height="50" style="fill:#444"/>
+         <text x="60" y="120" style="text-anchor:middle">inherit | hidden | visible</text>
+         <text x="60" y="136" style="text-anchor:middle">&lt;g> collapse</text>
+      </g>
+      <g transform="translate(160, 0)">
+         <rect x="0"  y="45" width="40" height="50" style="fill:#eee"/>
+         <rect x="40" y="45" width="40" height="50" style="fill:#aaa"/>
+         <rect x="80" y="45" width="40" height="50" style="fill:#444"/>
+         <text x="60" y="120" style="text-anchor:middle">inherit | hidden | visible</text>
+         <text x="60" y="136" style="text-anchor:middle">&lt;g> hidden</text>
+      </g>
+      <g transform="translate(0 10)">
+      <g style="visibility:collapse">
+         <rect x="0"  y="45" width="40" height="50" style="visibility:inherit; fill:gold"/>
+         <rect x="40" y="45" width="40" height="50" style="visibility:hidden; fill:orange"/>
+         <rect x="80" y="45" width="40" height="50" style="visibility:visible; fill:crimson"/>
+      </g>
+      <g style="visibility:hidden" transform="translate(160, 0)">
+         <rect x="0"  y="45"  width="40" height="50" style="visibility:inherit; fill:gold"/>
+         <rect x="40" y="45" width="40" height="50" style="visibility:hidden; fill:orange"/>
+         <rect x="80" y="45" width="40" height="50" style="visibility:visible; fill:crimson"/>
+      </g>
+      </g>
+    </g>
+
+</g>
+</g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/paints/externalPaints.png 
b/tests/data/svg/batik/tests/spec/paints/externalPaints.png
new file mode 100644
index 0000000..326a926
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/paints/externalPaints.png differ
diff --git a/tests/data/svg/batik/tests/spec/paints/externalPaints.svg 
b/tests/data/svg/batik/tests/spec/paints/externalPaints.svg
new file mode 100644
index 0000000..3e35493
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/paints/externalPaints.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test external paint servers                                               -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: externalPaints.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+<title>Test external paint servers</title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+    <text x="225" y="50" class="title">External Paint Servers</text>
+    <text x="225" y="70" style="text-anchor:middle; font-size:12; font-style:italic">This file is using the 
defs.svg file to get the external resources</text>
+
+<!-- ############################### -->
+<g id="board" style="fill:none; stroke:black;">
+
+  <rect x="75" y="100" width="100" height="20" style="fill:#eee"/>
+  <rect x="175" y="100" width="100" height="20" style="fill:#eee"/>
+  <rect x="275" y="100" width="100" height="20" style="fill:#eee"/>
+
+  <rect x="55" y="120" width="20" height="100" style="fill:#eee"/>
+  <rect x="55" y="220" width="20" height="100" style="fill:#eee"/>
+  <rect x="55" y="320" width="20" height="100" style="fill:#eee"/>
+
+  <rect x="75" y="120" width="100" height="300"/>
+  <rect x="175" y="120" width="100" height="300"/>
+  <rect x="275" y="120" width="100" height="300"/>
+
+  <line x1="75" y1="220" x2="375" y2="220" />
+  <line x1="75" y1="320" x2="375" y2="320" />
+
+  <g style="font-size:12; text-anchor:middle; fill:black; stroke:none">
+    <text x="125" y="114">Linear Gradient</text>
+    <text x="225" y="114">Radial Gradient</text>
+    <text x="325" y="114">Pattern</text>
+
+    <text x="0" y="0" transform="translate(70 170) rotate(-90)">Simple Reference</text>
+    <text x="0" y="0" transform="translate(70 270) rotate(-90)">Inheritance</text>
+    <text x="0" y="0" transform="translate(70 370) rotate(-90)">Ext. Inheritance</text>
+
+  </g>
+</g>
+
+
+<!-- ############################### -->
+
+<circle cx="125" cy="170" r="40" style="fill:url(../../resources/svg/defs.svg#linearSimpleReference)"/>
+<circle cx="225" cy="170" r="40" style="fill:url(../../resources/svg/defs.svg#radialSimpleReference)"/>
+<circle cx="325" cy="170" r="40" style="fill:url(../../resources/svg/defs.svg#patternSimpleReference)" />
+
+<circle cx="125" cy="270" r="40" style="fill:url(../../resources/svg/defs.svg#linearDoubleReference)"/>
+<circle cx="225" cy="270" r="40" style="fill:url(../../resources/svg/defs.svg#radialDoubleReference)"/>
+<circle cx="325" cy="270" r="40" style="fill:url(../../resources/svg/defs.svg#patternDoubleReference)" />
+
+<circle cx="125" cy="370" r="40" style="fill:url(../../resources/svg/defs.svg#linearExtReference)"/>
+<circle cx="225" cy="370" r="40" style="fill:url(../../resources/svg/defs.svg#radialExtReference)"/>
+<circle cx="325" cy="370" r="40" style="fill:url(../../resources/svg/defs.svg#patternExtReference)"/>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/paints/gradientLimit.png 
b/tests/data/svg/batik/tests/spec/paints/gradientLimit.png
new file mode 100644
index 0000000..92aa7df
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/paints/gradientLimit.png differ
diff --git a/tests/data/svg/batik/tests/spec/paints/gradientLimit.svg 
b/tests/data/svg/batik/tests/spec/paints/gradientLimit.svg
new file mode 100644
index 0000000..29601dc
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/paints/gradientLimit.svg
@@ -0,0 +1,126 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Limit test on gradients.                                                  -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: gradientLimit.svg 475685 2006-11-16 11:16:05Z cam $   -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+    <title>Limit test on Gradients</title>
+
+    <text x="50%" y="45" class="title">Gradient Limit Test</text>
+
+    <g id="testContent">
+        <g id="closeOffsetsLinear">
+            <title>Close Offsets on linearGradient</title>
+            <desc>The last two offsets of this linearGradient are 
+                  very close (0.000001) to one-another</desc>
+            <linearGradient id="closeOffsetsLinearGradient" gradientUnits="objectBoundingBox" y1="0" x1="0" 
x2="0" y2=".1">
+              <stop  offset="0" style="stop-color:crimson"/>
+              <stop  offset="0.999999" style="stop-color:gold"/>
+              <stop  offset="1" style="stop-color:crimson"/>
+            </linearGradient>
+            <rect fill="url(#closeOffsetsLinearGradient)" x="35" y="80" width="80" height="40" />
+            <text class="legend" x="75" y="135">Two close offsets</text>
+            <text class="legend" x="75" y="150">&lt;linearGradient&gt;</text>
+        </g>
+
+        <g id="closeOffsetsLinear2" transform="translate(150, 0)">
+            <title>Close Offsets on linearGradient</title>
+            <desc>The last two offsets of this linearGradient are 
+                  very close (0.00000001) to one-another, with a
+                  difference below the single precision floating
+                  point</desc>
+            <linearGradient id="closeOffsetsLinearGradient2" gradientUnits="objectBoundingBox" y1="0" x1="0" 
x2="0" y2=".1">
+              <stop  offset="0" style="stop-color:crimson"/>
+              <stop  offset="0.99999999" style="stop-color:gold"/>
+              <stop  offset="1" style="stop-color:crimson"/>
+            </linearGradient>
+            <rect fill="url(#closeOffsetsLinearGradient2)" x="35" y="80" width="80" height="40" />
+            <text class="legend" x="75" y="135">Two very close offsets</text>
+            <text class="legend" x="75" y="150">&lt;linearGradient&gt;</text>
+        </g>
+
+        <g id="closeOffsetsRadial" transform="translate(0, 100)">
+            <title>Close Offsets on radialGradient</title>
+            <desc>The last two offsets of this radialGradient are 
+                  very close (0.000001) to one-another</desc>
+            <radialGradient id="closeOffsetsRadialGradient" gradientUnits="objectBoundingBox" r=".1">
+              <stop  offset="0" style="stop-color:crimson"/>
+              <stop  offset="0.999999" style="stop-color:gold"/>
+              <stop  offset="1" style="stop-color:crimson"/>
+            </radialGradient>
+            <rect fill="url(#closeOffsetsRadialGradient)" x="35" y="80" width="80" height="40" />
+            <text class="legend" x="75" y="135">Two close offsets</text>
+            <text class="legend" x="75" y="150">&lt;radialGradient&gt;</text>
+        </g>
+
+        <g id="closeOffsetsRadial2" transform="translate(150, 100)">
+            <title>Close Offsets on radialGradient</title>
+            <desc>The last two offsets of this radialGradient are 
+                  very close (0.00000001) to one-another</desc>
+            <radialGradient id="closeOffsetsRadialGradient2" gradientUnits="objectBoundingBox" r=".1">
+              <stop  offset="0" style="stop-color:crimson"/>
+              <stop  offset="0.99999999" style="stop-color:gold"/>
+              <stop  offset="1" style="stop-color:crimson"/>
+            </radialGradient>
+            <rect fill="url(#closeOffsetsRadialGradient2)" x="35" y="80" width="80" height="40" />
+            <text class="legend" x="75" y="135">Two very close offsets</text>
+            <text class="legend" x="75" y="150">&lt;radialGradient&gt;</text>
+        </g>
+
+        <g id="closeControlsLinear" transform="translate(300, 0)">
+            <title>Close control points on linearGradient</title>
+            <desc>The y coordinates on the gradient are close
+                  (0.00000001) to one-another</desc>
+            <linearGradient id="closeControlsLinearGradient" gradientUnits="objectBoundingBox" x1="0" y1="0" 
x2="0" y2="0.00000001">
+              <stop  offset="0" stop-color="gold"/>
+              <stop  offset="1" stop-color="crimson"/>
+            </linearGradient>
+            <rect fill="url(#closeControlsLinearGradient)" x=".35" y=".8" width=".8" height=".4" 
transform="scale(100)"/>
+            <text class="legend" x="75" y="135">Close control points</text>
+            <text class="legend" x="75" y="150">&lt;linearGradient&gt;</text>
+        </g>
+
+        <g id="smallRadiusRadial" transform="translate(300, 100)">
+            <title>Small radius on radialGradient</title>
+            <desc>The radialGradient has a very small
+                  (0.00000001) radius</desc>
+            <radialGradient id="smallRadiusRadialGradient" gradientUnits="objectBoundingBox" r="0.00000001">
+              <stop  offset="0" stop-color="gold"/>
+              <stop  offset="1" stop-color="crimson"/>
+            </radialGradient>
+            <rect fill="url(#smallRadiusRadialGradient)" x=".35" y=".8" width=".8" height=".4" 
transform="scale(100)"/>
+            <text class="legend" x="75" y="135">Small Radius</text>
+            <text class="legend" x="75" y="150">&lt;radialGradient&gt;</text>
+        </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/paints/gradientPoint.png 
b/tests/data/svg/batik/tests/spec/paints/gradientPoint.png
new file mode 100644
index 0000000..6ca1a41
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/paints/gradientPoint.png differ
diff --git a/tests/data/svg/batik/tests/spec/paints/gradientPoint.svg 
b/tests/data/svg/batik/tests/spec/paints/gradientPoint.svg
new file mode 100644
index 0000000..e7af224
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/paints/gradientPoint.svg
@@ -0,0 +1,127 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Gradients on Points.                                                   -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: gradientPoint.svg 1626072 2014-09-18 20:17:34Z vhennebert $ -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; >
+
+   <title>Gradients on Points</title>
+   <text x="50%" y="45" class="title">Gradients on Points</text>
+
+   <g id="testContent">
+
+      <defs>
+         <linearGradient id="hGrad" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse">
+                 <stop offset="0" style="stop-color:crimson" />
+                 <stop offset="1" style="stop-color:gold" />
+         </linearGradient>
+         <linearGradient id="vGrad" x1="0" y1="0" x2="0" y2="1" gradientUnits="userSpaceOnUse">
+                 <stop offset="0" style="stop-color:crimson" />
+                 <stop offset="1" style="stop-color:gold" />
+         </linearGradient>
+         <linearGradient id="hvGrad" x1="0" y1="0" x2="1" y2="1" gradientUnits="userSpaceOnUse">
+                 <stop offset="0" style="stop-color:crimson" />
+                 <stop offset="1" style="stop-color:gold" />
+         </linearGradient>
+         
+         <radialGradient id="rGrad" cx=".5" cy=".5" r="1" gradientUnits="userSpaceOnUse">
+                 <stop offset="0" style="stop-color:crimson" />
+                 <stop offset="1" style="stop-color:gold" />
+         </radialGradient>
+      </defs>
+
+      <g style="fill:#eee;stroke:black">
+         <rect x="75" y="100" width="300" height="20"  />
+         <rect x="55" y="120" width="20" height="300" />
+      </g>  
+
+      <g style="fill:none;stroke:black">
+         <rect x="75" y="120" width="300" height="300" />
+         <line x1="150" y1="100" x2="150" y2="420" />
+         <line x1="225" y1="100" x2="225" y2="420" />
+         <line x1="300" y1="100" x2="300" y2="420" />
+         
+         <line x1="55" y1="220" x2="375" y2="220" />
+         <line x1="55" y1="320" x2="375" y2="320" />
+      </g>  
+
+      <g style="text-anchor:middle; fill:black; stroke:none">
+         <text x="112" y="115">hLinGrad</text>
+         <text x="187" y="115">vLinGrad</text>
+         <text x="262" y="115">hvLinGrad</text>
+         <text x="337" y="115">radGrad</text>
+         
+         <text transform="translate(70 170)rotate(-90)">No Scale</text>
+         <text transform="translate(70 270)rotate(-90)">Scale Up</text>
+         <text transform="translate(70 370)rotate(-90)">Scale Down</text>
+      </g>  
+
+      <g stroke-linecap="round">
+         <g stroke-width="50">
+            <line transform="translate(112,170)" stroke="url(#hGrad)" />
+            <line transform="translate(187,170)" stroke="url(#vGrad)" />
+            <line transform="translate(262,170)" stroke="url(#hvGrad)"/>
+            <line transform="translate(337,170)" stroke="url(#rGrad)" />
+         </g>
+      
+        <!-- Note that I wanted to scale this even more agressively
+             But it appears that very narrow stroke-widths just get
+             clamped to something like '0.0001' - Odd! -->
+         <g stroke-width=".005">
+            <line transform="translate(112,270) scale(10000)"
+                  stroke="url(#hGrad)" />
+            <line transform="translate(187,270) scale(10000)"
+                  stroke="url(#vGrad)" />
+            <line transform="translate(262,270) scale(10000)"
+                  stroke="url(#hvGrad)" />
+            <line transform="translate(337,270) scale(10000)"
+                  stroke="url(#rGrad)" />
+         </g>
+      
+      
+         <g stroke-width="50000000">
+            <line transform="translate(112,370) scale(.000001)"
+                  stroke="url(#hGrad)" />
+            <line transform="translate(187,370) scale(.000001)"
+                  stroke="url(#vGrad)" />
+            <line transform="translate(262,370) scale(.000001)"
+                  stroke="url(#hvGrad)" />
+            <line transform="translate(337,370) scale(.000001)"
+                  stroke="url(#rGrad)" />
+         </g>
+      </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/paints/linearGradientLine.png 
b/tests/data/svg/batik/tests/spec/paints/linearGradientLine.png
new file mode 100644
index 0000000..b722537
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/paints/linearGradientLine.png differ
diff --git a/tests/data/svg/batik/tests/spec/paints/linearGradientLine.svg 
b/tests/data/svg/batik/tests/spec/paints/linearGradientLine.svg
new file mode 100644
index 0000000..3aabb1c
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/paints/linearGradientLine.svg
@@ -0,0 +1,91 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Linear gradient on line.                                                  -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: linearGradientLine.svg 1626072 2014-09-18 20:17:34Z vhennebert $ -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; 
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>Linear gradient on lines</title>
+
+    <text x="50%" y="45" class="title">Linear gradient on lines</text>
+
+    <g id="testContent">
+
+<defs>
+        <linearGradient id="hGrad" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse">
+                <stop offset="0" style="stop-color:crimson" />
+                <stop offset="1" style="stop-color:gold" />
+        </linearGradient>
+        <linearGradient id="vGrad" x1="0" y1="0" x2="0" y2="1" gradientUnits="userSpaceOnUse">
+                <stop offset="0" style="stop-color:crimson" />
+                <stop offset="1" style="stop-color:gold" />
+        </linearGradient>
+        <linearGradient id="hvGrad" x1="0" y1="0" x2="1" y2="1" gradientUnits="userSpaceOnUse">
+                <stop offset="0" style="stop-color:crimson" />
+                <stop offset="1" style="stop-color:gold" />
+        </linearGradient>
+</defs>
+
+<g style="fill:#eee;stroke:black">
+        <rect x="75" y="100" width="300" height="20"  />
+        <rect x="55" y="120" width="20" height="300" />
+</g>
+
+<g style="fill:none;stroke:black">
+        <rect x="75" y="120" width="300" height="300" />
+        <line x1="175" y1="100" x2="175" y2="420" />
+        <line x1="275" y1="100" x2="275" y2="420" />
+        <line x1="55" y1="270" x2="375" y2="270" />
+</g>
+<g style="text-anchor:middle; fill:black; stroke:none">
+        <text x="225" y="115">hGradient</text>
+        <text x="125" y="115">vGradient</text>
+        <text x="325" y="115">hvGradient</text>
+
+        <text transform="translate(70 200)rotate(-90)">horizontal &lt;line></text>
+        <text transform="translate(70 350)rotate(-90)">vertical &lt;Line></text>
+</g>
+
+<g style="stroke-width:6">
+        <line x2="1" transform="translate(85, 195) scale(80, 1)" stroke="url(#hGrad)"/>
+        <line x2="1" transform="translate(185, 195) scale(80, 1)" stroke="url(#vGrad)"/>
+        <line x2="1" transform="translate(285, 195) scale(80, 1)" stroke="url(#hvGrad)"/>
+
+        <line y2="1" transform="translate(120, 285) scale(1, 120)" stroke="url(#hGrad)"/>
+        <line y2="1" transform="translate(220, 285) scale(1, 120)" stroke="url(#vGrad)"/>
+        <line y2="1" transform="translate(320, 285) scale(1, 120)" stroke="url(#hvGrad)"/>
+</g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/paints/linearGradientOrientation.png 
b/tests/data/svg/batik/tests/spec/paints/linearGradientOrientation.png
new file mode 100644
index 0000000..e444298
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/paints/linearGradientOrientation.png differ
diff --git a/tests/data/svg/batik/tests/spec/paints/linearGradientOrientation.svg 
b/tests/data/svg/batik/tests/spec/paints/linearGradientOrientation.svg
new file mode 100644
index 0000000..01687e0
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/paints/linearGradientOrientation.svg
@@ -0,0 +1,161 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test external paint servers                                               -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: linearGradientOrientation.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+<title>Linear Gradient Orientation</title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+    <text x="225" y="50" class="title">Linear Gradient Orientation</text>
+<g transform="translate(0 -30)">
+<!-- ############################### -->
+<g id="board" style="fill:none; stroke:black;">
+
+  <rect x="75" y="100" width="150" height="20" style="fill:#eee"/>
+  <rect x="225" y="100" width="150" height="20" style="fill:#eee"/>
+  <rect x="75" y="120" width="150" height="50" />
+  <rect x="225" y="120" width="150" height="50" />
+  <g transform="translate(0 80)">
+    <rect x="75" y="100" width="150" height="20" style="fill:#eee"/>
+    <rect x="225" y="100" width="150" height="20" style="fill:#eee"/>
+    <rect x="75" y="120" width="150" height="50" />
+    <rect x="225" y="120" width="150" height="50" />
+  </g>
+  <g transform="translate(0 180)">
+    <rect x="75" y="100" width="150" height="20" style="fill:#eee"/>
+    <rect x="225" y="100" width="150" height="20" style="fill:#eee"/>
+    <rect x="75" y="120" width="150" height="50" />
+    <rect x="225" y="120" width="150" height="50" />
+  </g>
+  <g transform="translate(0 260)">
+    <rect x="75" y="100" width="150" height="20" style="fill:#eee"/>
+    <rect x="225" y="100" width="150" height="20" style="fill:#eee"/>
+    <rect x="75" y="120" width="150" height="50" />
+    <rect x="225" y="120" width="150" height="50" />
+  </g>
+  <g transform="translate(75 340)">
+    <rect x="75" y="100" width="150" height="20" style="fill:#eee"/>
+    <rect x="75" y="120" width="150" height="50" />
+  </g>
+  <g style="stroke:none; fill:black; text-anchor:middle; font-size:12">
+    <text x="150" y="114">x1 &lt; x2 / y1 = y2</text>
+    <text x="300" y="114">x1 > x2 / y1 = y2</text>
+
+    <g transform="translate(0 80)">
+      <text x="150" y="114">x1 = x2 / y1 &lt; y2</text>
+      <text x="300" y="114">x1 = x2 / y1 > y2</text>
+    </g>
+    <g transform="translate(0 180)">
+      <text x="150" y="114">x1 &lt; x2 / y1 &lt; y2</text>
+      <text x="300" y="114">x1 &lt; x2 / y1 > y2</text>
+    </g>
+    <g transform="translate(0 260)">
+      <text x="150" y="114">x1 > x2 / y1 &lt; y2</text>
+      <text x="300" y="114">x1 > x2 / y1 > y2</text>
+    </g>
+    <g transform="translate(75 340)">
+      <text x="150" y="114">x1 = x2 = y1 = y2</text>
+    </g>
+  </g>
+</g>
+
+
+<!-- ############################### -->
+<defs>
+  <linearGradient id="genericGrad">
+    <stop style="stop-color:crimson" offset="0" />
+    <stop style="stop-color:orange" offset=".5" />
+    <stop style="stop-color:gold" offset="1" />
+  </linearGradient>
+  <!-- ### first board ### -->
+  <linearGradient id="grad1" x1="0" y1="1" x2="1" y2="1"
+                  xlink:href="#genericGrad" />
+  <linearGradient id="grad2" x1="1" y1="1" x2="0" y2="1"
+                  xlink:href="#genericGrad" />
+
+  <!-- ### second board ### -->
+  <linearGradient id="grad3" x1="0" y1="0" x2="0" y2="1"
+                  xlink:href="#genericGrad" />
+  <linearGradient id="grad4" x1="0" y1="1" x2="0" y2="0"
+                  xlink:href="#genericGrad" />
+
+  <!-- ### third board ### -->
+  <linearGradient id="grad5" x1="0" y1="0" x2="1" y2="1"
+                  xlink:href="#genericGrad" />
+  <linearGradient id="grad6" x1="0" y1="1" x2="1" y2="0"
+                  xlink:href="#genericGrad" />
+
+  <!-- ### fourth board ### -->
+  <linearGradient id="grad7" x1="1" y1="0" x2="0" y2="1"
+                  xlink:href="#genericGrad" />
+  <linearGradient id="grad8" x1="1" y1="1" x2="0" y2="0"
+                  xlink:href="#genericGrad" />
+
+  <!-- ### fifth board ### -->
+  <linearGradient id="grad9" x1=".5" y1=".5" x2=".5" y2=".5"
+                  xlink:href="#genericGrad" />
+
+</defs>
+
+
+<rect x="85" y="130" width="130" height="30" fill="url(#grad1)"/>
+<rect x="235" y="130" width="130" height="30" fill="url(#grad2)"/>
+
+<g transform="translate(0 80)">
+  <rect x="85" y="130" width="130" height="30" fill="url(#grad3)"/>
+  <rect x="235" y="130" width="130" height="30" fill="url(#grad4)"/>
+</g>
+
+<g transform="translate(0 180)">
+  <rect x="85" y="130" width="130" height="30" fill="url(#grad5)"/>
+  <rect x="235" y="130" width="130" height="30" fill="url(#grad6)"/>
+</g>
+
+<g transform="translate(0 260)">
+  <rect x="85" y="130" width="130" height="30" fill="url(#grad7)"/>
+  <rect x="235" y="130" width="130" height="30" fill="url(#grad8)"/>
+</g>
+
+<g transform="translate(75 340)">
+  <rect x="85" y="130" width="130" height="30" fill="url(#grad9)"/>
+</g>
+
+    </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/paints/linearGradientRepeat.png 
b/tests/data/svg/batik/tests/spec/paints/linearGradientRepeat.png
new file mode 100644
index 0000000..b3d7825
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/paints/linearGradientRepeat.png differ
diff --git a/tests/data/svg/batik/tests/spec/paints/linearGradientRepeat.svg 
b/tests/data/svg/batik/tests/spec/paints/linearGradientRepeat.svg
new file mode 100644
index 0000000..26e3613
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/paints/linearGradientRepeat.svg
@@ -0,0 +1,161 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- @author deweese apache org                                             -->
+<!-- @author vhardy apache org                                              -->
+<!-- @version $Id: linearGradientRepeat.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+
+    <title>&lt;linearGradient&gt; Repeat Test</title>
+    <text class="title" x="50%" y="40">
+        &lt;linearGradient&gt; Repeat Test
+    </text>
+
+    <style type="text/css"><![CDATA[
+        .speed   { clip-path:url(#speedClip); color-rendering:optimizeSpeed; }
+        .default { clip-path:url(#defaultClip); color-rendering:auto; }
+        .quality { clip-path:url(#qualityClip); 
+                   color-rendering:optimizeQuality; }
+        .saqLabel {  font-family: Verdana, Helvetica; 
+                     font-size: 5;
+                     text-anchor: middle; 
+                     fill:black; stroke:none;}
+        .line { fill:none; stroke:black; stroke-width:0.25; } 
+    ]]></style>
+
+    <defs>
+        <!-- Shape filled by linear gradients -->
+        <g id="testShape">
+            <rect x="-25" y="-20" width="50" height="40" 
+                  class="quality" />
+            <rect x="-25" y="-20" width="50" height="40" 
+                  class="default" />
+            <rect x="-25" y="-20" width="50" height="40" 
+                  class="speed" />
+
+            <text x="-16.5" y="24" class="saqLabel">Q</text>
+            <line x1="-8" x2="-8" y1="20" y2="25" class="line" />
+            <text x="0" y="24" class="saqLabel">A</text>
+            <line x1="8" x2="8" y1="20" y2="25" class="line" />
+            <text x="16.5" y="24" class="saqLabel">S</text>
+        </g>
+
+        <!-- Clip paths for the various color-rendering settings... -->
+        <clipPath id="qualityClip">
+            <rect x="-25" y="-20" width="17" height="40"/>
+        </clipPath>
+
+        <clipPath id="defaultClip">
+            <rect x="-8" y="-20" width="16" height="40"/>
+        </clipPath>
+
+        <clipPath id="speedClip">
+            <rect x="8" y="-20" width="17" height="40"/>
+        </clipPath>
+
+        <!-- ========================================== -->
+        <!-- Two gradients, one with no values defined  -->
+        <!-- and one with the default values specified  -->
+        <!-- They should create the same pattern        -->
+        <!-- ========================================== -->
+        <linearGradient id="lgDefaults" spreadMethod="repeat">
+            <stop offset=".0" stop-color="gold" />
+            <stop offset=".49" stop-color="crimson" />
+            <stop offset=".51" stop-color="gold" />
+            <stop offset="1." stop-color="crimson" />
+        </linearGradient>
+
+        <linearGradient id="lgUR" xlink:href="#lgDefaults"
+            x1="25%" x2="75%" y1="75%" y2="25%"/>
+
+        <linearGradient id="lgU" xlink:href="#lgDefaults"
+            x1="25%" x2="25%" y1="75%" y2="25%"/>
+
+        <linearGradient id="lgUL" xlink:href="#lgDefaults"
+            x1="75%" x2="25%" y1="75%" y2="25%"/>
+
+        <linearGradient id="lgL" xlink:href="#lgDefaults"
+            x1="75%" x2="25%" y1="25%" y2="25%"/>
+
+        <linearGradient id="lgDL" xlink:href="#lgDefaults"
+            x1="75%" x2="25%" y1="25%" y2="75%"/>
+
+        <linearGradient id="lgD" xlink:href="#lgDefaults"
+            x1="25%" x2="25%" y1="25%" y2="75%"/>
+
+        <linearGradient id="lgDR" xlink:href="#lgDefaults"
+            x1="25%" x2="75%" y1="25%" y2="75%"/>
+
+        <linearGradient id="lgR" xlink:href="#lgDefaults"
+            x1="25%" x2="75%" y1="25%" y2="25%"/>
+    </defs>
+    <g transform="translate(70, 110) scale(2)" font-size="8">
+       <g transform="translate(0, 0)" text-anchor="middle">
+   
+           <g transform="translate(0, 0)">
+               <use xlink:href="#testShape" fill="url(#lgR)" />
+               <text y="-23">Right</text>
+           </g>
+   
+           <g transform="translate(0, 55)">
+               <use xlink:href="#testShape" fill="url(#lgUR)" />
+               <text y="-23">Up Right</text>
+           </g>
+   
+           <g transform="translate(0, 110)">
+               <use xlink:href="#testShape" fill="url(#lgU)" />
+               <text y="-23">Up</text>
+           </g>
+   
+           <g transform="translate(0, 165)">
+               <use xlink:href="#testShape" fill="url(#lgUL)" />
+               <text y="-23">Up Left</text>
+           </g>
+       </g>
+       <g transform="translate(70, 0)" text-anchor="middle">
+   
+           <g transform="translate(0, 0)">
+               <use xlink:href="#testShape" fill="url(#lgL)" />
+               <text y="-23">Left</text>
+           </g>
+   
+           <g transform="translate(0, 55)">
+               <use xlink:href="#testShape" fill="url(#lgDL)" />
+               <text y="-23">Down Left</text>
+           </g>
+   
+           <g transform="translate(0, 110)">
+               <use xlink:href="#testShape" fill="url(#lgD)" />
+               <text y="-23">Down</text>
+           </g>
+   
+           <g transform="translate(0, 165)">
+               <use xlink:href="#testShape" fill="url(#lgDR)" />
+               <text y="-23">Down Right</text>
+           </g>
+       </g>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/paints/patternPreserveAspectRatioA.png 
b/tests/data/svg/batik/tests/spec/paints/patternPreserveAspectRatioA.png
new file mode 100644
index 0000000..8055e15
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/paints/patternPreserveAspectRatioA.png differ
diff --git a/tests/data/svg/batik/tests/spec/paints/patternPreserveAspectRatioA.svg 
b/tests/data/svg/batik/tests/spec/paints/patternPreserveAspectRatioA.svg
new file mode 100644
index 0000000..8891c76
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/paints/patternPreserveAspectRatioA.svg
@@ -0,0 +1,556 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!--                                                                           -->
+<!-- @author vhardy eng sun com                                                -->
+<!-- @version $Id: patternPreserveAspectRatioA.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Pattern Region Test, B</title>
+
+    <text x="225" y="30" class="title">
+        patterns, preserveAspectRatio
+    </text>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent" >
+        <defs>
+        
+        <g id="patternColumn">
+            <circle cx=".5" cy=".5" r=".5" />
+            <rect x="0" y="1" width="1" height="1" />
+            <path d="M 0 3 l 1 0 l -0.5 -1 z" />
+        </g>
+
+        <!-- Pattern content is 24 by 24 -->
+        <g id="patternContent" transform="scale(8, 8)" >
+            <rect x="0" y="0" width="3" height="3" fill="black" />
+            <use xlink:href="#patternColumn" fill="crimson" />
+            <use xlink:href="#patternColumn" x="1" fill="gold" />
+            <use xlink:href="#patternColumn" x="2" fill="orange" />
+        </g>
+
+        <rect id="testShape" transform="translate(45, 5)" width="90" height="30" />
+
+        <!-- ============================================== -->
+        <!-- For all the following patterns:                -->
+        <!--                                                -->
+        <!-- patternUnits : userSpaceOnUse                  -->
+        <!-- patternContentUnits : default (userSpaceOnUse) -->
+        <!-- patternTransform: default (identity)           -->
+        <!-- preserveAspectRatio: variable for each test    -->
+        <!-- overflow : default (hidden)                    -->
+        <!--                                                -->
+        <!-- ============================================== -->
+
+        <!-- ============ -->
+        <!-- meetXxxxYyyy -->
+        <!-- ============ -->
+
+        <pattern id="meetXminYmin"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMinYMin meet">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="meetXminYmid"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMinYMid meet">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="meetXminYmax"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMinYMax meet">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="meetXmidYmin"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMidYMin meet">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="meetXmidYmid"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMidYMid meet">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="meetXmidYmax"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMidYMax meet">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="meetXmaxYmin"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMaxYMin meet">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="meetXmaxYmid"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMaxYMid meet">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="meetXmaxYmax"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMaxYMax meet">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+
+        <!-- ============ -->
+        <!-- sliceXxxxYyyy -->
+        <!-- ============ -->
+
+        <pattern id="sliceXminYmin"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMinYMin slice">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="sliceXminYmid"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMinYMid slice">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="sliceXminYmax"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMinYMax slice">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="sliceXmidYmin"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMidYMin slice">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="sliceXmidYmid"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMidYMid slice">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="sliceXmidYmax"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMidYMax slice">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="sliceXmaxYmin"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMaxYMin slice">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="sliceXmaxYmid"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMaxYMid slice">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="sliceXmaxYmax"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMaxYMax slice">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <!-- ============ -->
+        <!-- noneXxxxYyyy -->
+        <!-- ============ -->
+
+        <pattern id="noneXminYmin"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMinYMin">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="noneXminYmid"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMinYMid">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="noneXminYmax"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMinYMax">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="noneXmidYmin"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMidYMin">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="noneXmidYmid"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMidYMid">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="noneXmidYmax"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMidYMax">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="noneXmaxYmin"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMaxYMin">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="noneXmaxYmid"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMaxYMid">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="noneXmaxYmax"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="xMaxYMax">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <!-- ==================== -->
+        <!-- align = none         -->
+        <!-- ==================== -->
+        <pattern id="meetNone"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="none meet">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="sliceNone"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="none slice">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <pattern id="noneNone"
+                 patternUnits="userSpaceOnUse"
+                 x="0" y="0" 
+                 width="32" height="16" 
+                 viewBox="0 0 24 24"
+                 preserveAspectRatio="none">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+            <rect id="xMxx" x="0" y="0" width="20" height="120" />
+            <rect id="yMxx" x="20" y="0" width="20" height="40" />
+            <rect id="sampleCell" x="40" y="0" width="100" height="40" />
+
+            <g id="xMxxBlock" stroke="black">
+                <use xlink:href="#xMxx" />
+                <use xlink:href="#yMxx" fill="rgb(255, 250, 210)"/>
+                <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="35" y="20" 
+                      transform="rotate(-90, 35, 20)">
+                yMin
+                </text>
+                <use xlink:href="#yMxx" y="40" fill="rgb(255, 240, 150)"/>
+                <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="35" y="60" 
+                      transform="rotate(-90, 35, 60)">
+                yMid
+                </text>
+                <use xlink:href="#yMxx" y="80" fill="rgb(255, 235, 120)"/>
+                <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="35" y="100" 
+                      transform="rotate(-90, 35, 100)">
+                yMax
+                </text>
+            </g>
+
+            <g id="sampleColumn" stroke="black" fill="none">
+                <use xlink:href="#sampleCell" fill="rgb(255, 250, 210)"/>
+                <use xlink:href="#sampleCell" y="40" fill="rgb(255, 240, 150)"/>
+                <use xlink:href="#sampleCell" y="80" fill="rgb(255, 235, 120)"/>
+                <use xlink:href="#sampleCell" y="120" fill="rgb(255, 250, 210)"/>
+                <use xlink:href="#sampleCell" y="160" fill="rgb(255, 240, 150)"/>
+                <use xlink:href="#sampleCell" y="200" fill="rgb(255, 235, 120)"/>
+                <use xlink:href="#sampleCell" y="240" fill="rgb(255, 250, 210)"/>
+                <use xlink:href="#sampleCell" y="280" fill="rgb(255, 240, 150)"/>
+                <use xlink:href="#sampleCell" y="320" fill="rgb(255, 235, 120)"/>
+                <use xlink:href="#sampleCell" y="360"/>
+            </g>
+
+            <rect id="columnHeader" x="40" y="-20" width="100" height="20" stroke="black"/>
+
+        </defs>
+
+        <g transform="translate(50, 80)">
+            <use xlink:href="#xMxxBlock" fill="rgb(255, 250, 210)"/>
+            <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="15" y="60" 
+                      transform="rotate(-90, 15, 60)">
+            xMin
+            </text>
+
+            <use xlink:href="#xMxxBlock" y="120" fill="rgb(255, 240, 150)"/>
+            <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="15" y="180" 
+                      transform="rotate(-90, 15, 180)">
+            xMid
+            </text>
+
+            <use xlink:href="#xMxxBlock" y="240" fill="rgb(255, 235, 120)"/>
+            <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="15" y="300" 
+                      transform="rotate(-90, 15, 300)">
+            xMax
+            </text>
+
+            <use xlink:href="#sampleColumn" />
+            <use xlink:href="#sampleColumn" x="100" />
+            <use xlink:href="#sampleColumn" x="200" />
+
+            <use xlink:href="#columnHeader" fill="none"/>
+            <use xlink:href="#columnHeader" x="100" fill="none"/>
+            <use xlink:href="#columnHeader" x="200" fill="none"/>
+
+            <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="90" y="-5">
+            meet
+            </text>
+
+            <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="190" y="-5">
+            slice
+            </text>
+
+            <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="290" y="-5">
+            none
+            </text>
+
+            <rect x="0" y="360" width="40" height="40" stroke="black" fill="none" />
+            <text class="label" stroke="none" fill="black" 
+                      text-anchor="middle" x="25" y="380" 
+                      transform="rotate(-90, 25, 380)">
+            none
+            </text>
+
+            <!-- ============================================ -->
+            <!-- Various pattern settings here                -->
+            <!-- ============================================ -->
+            
+            <!-- =============================== -->
+            <!-- meetOrSlice = meet              -->
+            <!-- =============================== -->
+            <g>
+
+                <!-- xMxx = xMin -->
+                <use xlink:href="#testShape" fill="url(#meetXminYmin)" />
+                <use xlink:href="#testShape" fill="url(#meetXminYmid)" y="40"/>
+                <use xlink:href="#testShape" fill="url(#meetXminYmax)" y="80"/>
+
+                <!-- xMxx = xMid -->
+                <g transform="translate(0, 120)">
+                    <use xlink:href="#testShape" fill="url(#meetXmidYmin)" />
+                    <use xlink:href="#testShape" fill="url(#meetXmidYmid)" y="40"/>
+                    <use xlink:href="#testShape" fill="url(#meetXmidYmax)" y="80"/>
+                </g>
+
+                <!-- xMxx = xMax -->
+                <g transform="translate(0, 240)">
+                    <use xlink:href="#testShape" fill="url(#meetXmaxYmin)" />
+                    <use xlink:href="#testShape" fill="url(#meetXmaxYmid)" y="40"/>
+                    <use xlink:href="#testShape" fill="url(#meetXmaxYmax)" y="80"/>
+                </g>
+
+            </g>
+           
+            <!-- =============================== -->
+            <!-- meetOrSlice = slice                    -->
+            <!-- =============================== -->
+            <g marker-start="url(#startEndMarker)" transform="translate(100, 0)"
+                marker-end="url(#startEndMarker)" stroke="black">
+
+                <!-- xMxx = xMin -->
+                <use xlink:href="#testShape" fill="url(#sliceXminYmin)" />
+                <use xlink:href="#testShape" fill="url(#sliceXminYmid)" y="40"/>
+                <use xlink:href="#testShape" fill="url(#sliceXminYmax)" y="80"/>
+
+                <!-- xMxx = xMid -->
+                <g transform="translate(0, 120)">
+                    <use xlink:href="#testShape" fill="url(#sliceXmidYmin)" />
+                    <use xlink:href="#testShape" fill="url(#sliceXmidYmid)" y="40"/>
+                    <use xlink:href="#testShape" fill="url(#sliceXmidYmax)" y="80"/>
+                </g>
+
+                <!-- xMxx = xMax -->
+                <g transform="translate(0, 240)">
+                    <use xlink:href="#testShape" fill="url(#sliceXmaxYmin)" />
+                    <use xlink:href="#testShape" fill="url(#sliceXmaxYmid)" y="40"/>
+                    <use xlink:href="#testShape" fill="url(#sliceXmaxYmax)" y="80"/>
+                </g>
+
+            </g>
+           
+            <!-- =============================== -->
+            <!-- meetOrSlice = none              -->
+            <!-- =============================== -->
+            <g marker-start="url(#startEndMarker)" transform="translate(200, 0)"
+                marker-end="url(#startEndMarker)" stroke="black">
+
+                <!-- xMxx = xMin -->
+                <use xlink:href="#testShape" fill="url(#noneXminYmin)" />
+                <use xlink:href="#testShape" fill="url(#noneXminYmid)" y="40"/>
+                <use xlink:href="#testShape" fill="url(#noneXminYmax)" y="80"/>
+
+                <!-- xMxx = xMid -->
+                <g transform="translate(0, 120)">
+                    <use xlink:href="#testShape" fill="url(#noneXmidYmin)" />
+                    <use xlink:href="#testShape" fill="url(#noneXmidYmid)" y="40"/>
+                    <use xlink:href="#testShape" fill="url(#noneXmidYmax)" y="80"/>
+                </g>
+
+                <!-- xMxx = xMax -->
+                <g transform="translate(0, 240)">
+                    <use xlink:href="#testShape" fill="url(#noneXmaxYmin)" />
+                    <use xlink:href="#testShape" fill="url(#noneXmaxYmid)" y="40"/>
+                    <use xlink:href="#testShape" fill="url(#noneXmaxYmax)" y="80"/>
+                </g>
+
+            </g>
+           
+            <!-- =============================== -->
+            <!-- align = none                    -->
+            <!-- =============================== -->
+            <g marker-start="url(#startEndMarker)" transform="translate(0, 360)"
+                marker-end="url(#startEndMarker)" stroke="black">
+
+                <use xlink:href="#testShape" fill="url(#meetNone)" />
+                <use xlink:href="#testShape" fill="url(#sliceNone)" x="100"/> 
+                <use xlink:href="#testShape" fill="url(#noneNone)" x="200"/> 
+
+            </g>
+        </g>
+    </g>
+
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/paints/patternRegionA.png 
b/tests/data/svg/batik/tests/spec/paints/patternRegionA.png
new file mode 100644
index 0000000..a09ed09
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/paints/patternRegionA.png differ
diff --git a/tests/data/svg/batik/tests/spec/paints/patternRegionA.svg 
b/tests/data/svg/batik/tests/spec/paints/patternRegionA.svg
new file mode 100644
index 0000000..881a6a3
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/paints/patternRegionA.svg
@@ -0,0 +1,227 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This test file checks that the various combinations of units and viewbox  -->
+<!-- work in Batik for patternRegions                                          -->
+<!--                                                                           -->
+<!-- @author vhardy eng sun com                                                -->
+<!-- @version $Id: patternRegionA.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Pattern Region Test, A</title>
+
+    <text x="225" y="50" class="title">
+        patternRegion, x, y, width, height
+    </text>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent" >
+        <defs>
+        
+        <!-- ============================================== -->
+        <!-- The patterns in this test is always the same,  -->
+        <!-- and the various values for the patternRegion   -->
+        <!-- select different areas for that pattern.       -->
+        <!-- ============================================== -->
+        <g id="patternContent" stroke="none" opacity="1">
+            <rect x="0" y="0" width="20" height="20" fill="black" />
+
+            <g fill="crimson">
+                <rect width="5" height="5" />
+                <rect x="5" y="5" width="5" height="5" />
+            </g>
+            <g fill="yellow" transform="translate(10, 0)">
+                <rect width="5" height="5" />
+                <rect x="5" y="5" width="5" height="5" />
+            </g>
+            <g fill="white" transform="translate(0, 10)">
+                <rect width="5" height="5" />
+                <rect x="5" y="5" width="5" height="5" />
+            </g>
+            <g fill="rgb(100, 100, 255)" transform="translate(10, 10)">
+                <rect width="5" height="5" />
+                <rect x="5" y="5" width="5" height="5" />
+            </g>
+        </g>
+
+
+        <!-- ============================================== -->
+        <!-- For all the following patterns:                -->
+        <!--                                                -->
+        <!-- patternUnits : default (objectBoundingBox)     -->
+        <!-- patternContentUnits : default (userSpaceOnUse) -->
+        <!-- patternTransform: default (identity)           -->
+        <!-- viewBox : default (none)                       -->
+        <!-- preserveAspectRatio: default                   -->
+        <!-- overflow : default (hidden)                    -->
+        <!-- ============================================== -->
+
+        <!-- ============================================== -->
+        <!-- The pattern content fits exactly in the        -->
+        <!-- pattern region.                                -->
+        <!-- .2 * 100 = 20 userSpaceUnits                   -->
+        <!-- .4 * 50  = 20 userSpaceUnits                   -->
+        <!-- ============================================== -->
+        <pattern id="patternExactFit" x="0" y="0" width=".2" height=".4">
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- The pattern content is offset along the x axis -->
+        <!-- .2 * 100 = 20 userSpaceUnits                   -->
+        <!-- .4 * 50  = 20 userSpaceUnits                   -->
+        <!-- ============================================== -->
+        <pattern id="patternTranslateRegionX" 
+                 x="-.05" y="0" 
+                 width=".2" height=".4" >
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- The pattern content is offset along the y axis -->
+        <!-- .2 * 100 = 20 userSpaceUnits                   -->
+        <!-- .4 * 50  = 20 userSpaceUnits                   -->
+        <!-- ============================================== -->
+        <pattern id="patternTranslateRegionY" 
+                 x="0" y="-.1" 
+                 width=".2" height=".4" >
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- The pattern content is offset along the both   -->
+        <!-- both axis.                                     -->
+        <!-- .2 * 100 = 20 userSpaceUnits                   -->
+        <!-- .4 * 50  = 20 userSpaceUnits                   -->
+        <!-- ============================================== -->
+        <pattern id="patternTranslateRegionXY" 
+                 x=".1" y=".2" 
+                 width=".2" height=".4" >
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- The pattern content width smaller width than   -->
+        <!-- pattern region.                                -->
+        <!-- .4 * 100 = 40 userSpaceUnits                   -->
+        <!-- .4 * 50  = 20 userSpaceUnits                   -->
+        <!-- ============================================== -->
+        <pattern id="patternWiderRegion" 
+                 x="0" y="0" 
+                 width=".4" height=".4" >
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- The pattern content height smaller than        -->
+        <!-- pattern region.                                -->
+        <!-- .2 * 100 = 20 userSpaceUnits                   -->
+        <!-- .8 * 50  = 40 userSpaceUnits                   -->
+        <!-- ============================================== -->
+        <pattern id="patternHigherRegion" 
+                 x="0" y="0" 
+                 width=".2" height=".8" >
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- The pattern content width and height smaller   -->
+        <!-- than pattern region.                           -->
+        <!-- .4 * 100 = 40 userSpaceUnits                   -->
+        <!-- .8 * 50  = 40 userSpaceUnits                   -->
+        <!-- ============================================== -->
+        <pattern id="patternWiderHigherRegion" 
+                 x="0" y="0" 
+                 width=".4" height=".8" >
+            <use xlink:href="#patternContent" />
+        </pattern>
+
+        </defs>
+
+        <g transform="translate(30, 90)" >
+            <text class="legend" style="text-anchor:start" x="0" y="-5">Pattern (4 times actual size)</text>
+            <use xlink:href="#patternContent" transform="scale(4, 4)" />
+        </g>
+
+        <g transform="translate(30, 200)">
+
+            <g>
+                <text class="legend" style="text-anchor:start" x="0" y="-5">Exact Fit in patternRegion</text>
+                <rect x="0" y="0" width="100" height="50" fill="url(#patternExactFit)" stroke="black"/>
+                <rect x="0" y="0" width="20" height="20" stroke="white" fill-opacity=".12" />
+            </g>
+
+            <g transform="translate(0, 70)">
+                <text class="legend" style="text-anchor:start" x="0" y="-5">patternRegion offset to the 
left</text>
+                <rect x="0" y="0" width="100" height="50" fill="url(#patternTranslateRegionX)" 
stroke="black"/>
+                <rect x="-5" y="0" width="20" height="20" stroke="white" fill-opacity=".12"/>
+            </g>
+
+            <g transform="translate(0, 140)">
+                <text class="legend" style="text-anchor:start" x="0" y="-5">patternRegion offset to the 
top</text>
+                <rect x="0" y="0" width="100" height="50" fill="url(#patternTranslateRegionY)" 
stroke="black"/>
+                <rect x="0" y="-5" width="20" height="20" stroke="white" fill-opacity=".12" />
+            </g>
+
+            <g transform="translate(0, 210)">
+                <text class="legend" style="text-anchor:start" x="0" y="-5">patternRegion offset to the 
top/left</text>
+                <rect x="0" y="0" width="100" height="50" fill="url(#patternTranslateRegionXY)" 
stroke="black"/>
+                <rect x="10" y="10" width="20" height="20" stroke="white" fill-opacity=".12" />
+            </g>
+
+        </g>
+
+        <g transform="translate(255, 200)">
+
+            <g>
+                <text class="legend" style="text-anchor:start" x="0" y="-5">patternRegion wider than 
content</text>
+                <rect x="0" y="0" width="100" height="50" fill="url(#patternWiderRegion)" stroke="black"/>
+                <rect x="0" y="0" width="40" height="20" stroke="white" fill-opacity=".12" />
+            </g>
+
+            <g transform="translate(0, 70)">
+                <text class="legend" style="text-anchor:start" x="0" y="-5">patternRegion higher than 
content</text>
+                <rect x="0" y="0" width="100" height="50" fill="url(#patternHigherRegion)" stroke="black"/>
+                <rect x="0" y="0" width="20" height="40" stroke="white" fill-opacity=".12" />
+            </g>
+
+            <g transform="translate(0, 140)">
+                <text class="legend" style="text-anchor:start" x="0" y="-5">patternRegion higher than 
content</text>
+                <rect x="0" y="0" width="100" height="50" fill="url(#patternWiderHigherRegion)" 
stroke="black"/>
+                <rect x="0" y="0" width="40" height="40" stroke="white" fill-opacity=".12" />
+            </g>
+        </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/paints/patternRegionB.png 
b/tests/data/svg/batik/tests/spec/paints/patternRegionB.png
new file mode 100644
index 0000000..073c275
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/paints/patternRegionB.png differ
diff --git a/tests/data/svg/batik/tests/spec/paints/patternRegionB.svg 
b/tests/data/svg/batik/tests/spec/paints/patternRegionB.svg
new file mode 100644
index 0000000..b11b3d8
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/paints/patternRegionB.svg
@@ -0,0 +1,245 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This test file checks that the various combinations of units and viewbox  -->
+<!-- work in Batik for patternRegions                                          -->
+<!--                                                                           -->
+<!-- @author vhardy eng sun com                                                -->
+<!-- @version $Id: patternRegionB.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Pattern Region Test, B</title>
+
+    <text x="225" y="50" class="title">
+        patternRegion, x, y, width, height, viewBox
+    </text>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent" >
+        <defs>
+        
+        <!-- ============================================== -->
+        <!-- For all the following patterns:                -->
+        <!--                                                -->
+        <!-- patternUnits : default (objectBoundingBox)     -->
+        <!-- patternContentUnits : default (userSpaceOnUse) -->
+        <!-- patternTransform: default (identity)           -->
+        <!-- preserveAspectRatio: default (xMidyMid meet)   -->
+        <!-- overflow : default (hidden)                    -->
+        <!--                                                -->
+        <!-- Because of the default preserveAspectRatio     -->
+        <!-- value, the following patterns should be        -->
+        <!-- centered in the pattern region.                -->
+        <!-- ============================================== -->
+
+        <!-- ============================================== -->
+        <!-- The pattern content fits exactly in the        -->
+        <!-- pattern region.                                -->
+        <!-- .2 * 100 = 20 userSpaceUnits                   -->
+        <!-- .4 * 50  = 20 userSpaceUnits                   -->
+        <!-- viewBox matches the pattern content's bounds   -->
+        <!-- ============================================== -->
+        <pattern id="patternExactFit" x="0" y="0" width=".2" height=".4"
+                 viewBox="0 0 20 20">
+            <use xlink:href="patternRegionA.svg#patternContent" />
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- The pattern content is offset along the x axis -->
+        <!-- .2 * 100 = 20 userSpaceUnits                   -->
+        <!-- .4 * 50  = 20 userSpaceUnits                   -->
+        <!-- viewBox is offset to the left. This causes the -->
+        <!-- pattern content to be translated to the right  -->
+        <!-- when centered in the viewPort.                 -->
+        <!-- ============================================== -->
+        <pattern id="patternTranslateRegionX" 
+                 x="0" y="0" 
+                 width=".2" height=".4" 
+                 viewBox="-5 0 20 20" overflow="hidden">
+            <use xlink:href="patternRegionA.svg#patternContent" />
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- The pattern content is offset along the y axis -->
+        <!-- .2 * 100 = 20 userSpaceUnits                   -->
+        <!-- .4 * 50  = 20 userSpaceUnits                   -->
+        <!-- viewBox is offset to the top. This causes the  -->
+        <!-- pattern content to be translated to the bottom -->
+        <!-- when centered in the viewPort.                 -->
+        <!-- ============================================== -->
+        <pattern id="patternTranslateRegionY" 
+                 x="0" y="0" 
+                 width=".2" height=".4" 
+                 viewBox="0 -5 20 20">
+            <use xlink:href="patternRegionA.svg#patternContent" />
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- The pattern content is offset along the both   -->
+        <!-- both axis.                                     -->
+        <!-- .2 * 100 = 20 userSpaceUnits                   -->
+        <!-- .4 * 50  = 20 userSpaceUnits                   -->
+        <!-- viewBox is offset to the top/left. This causes -->
+        <!-- the pattern content to be translated to the    -->
+        <!-- bottom when centered in the viewPort.          -->
+        <!-- ============================================== -->
+        <pattern id="patternTranslateRegionXY" 
+                 x="0" y="0" 
+                 width=".2" height=".4" 
+                 viewBox="-10 -10 20 20">
+            <use xlink:href="patternRegionA.svg#patternContent" />
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- In the following tests, the                    -->
+        <!-- preserveAspectRatio attribute is set to none.  -->
+        <!-- ============================================== -->
+
+        <!-- ============================================== -->
+        <!-- The pattern content fits exactly in the        -->
+        <!-- pattern region.                                -->
+        <!-- .2 * 100 = 20 userSpaceUnits                   -->
+        <!-- .4 * 50  = 20 userSpaceUnits                   -->
+        <!-- viewBox matches the pattern content's bounds   -->
+        <!-- ============================================== -->
+        <pattern id="patternExactFitPANone" x="0" y="0" width=".2" height=".4"
+                 viewBox="0 0 20 20"
+                 preserveAspectRatio="none">
+            <use xlink:href="patternRegionA.svg#patternContent" />
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- Half of the pattern content is stretched along -->
+        <!-- the x axis.                                    -->
+        <!-- .2 * 100 = 20 userSpaceUnits                   -->
+        <!-- .4 * 50  = 20 userSpaceUnits                   -->
+        <!-- ============================================== -->
+        <pattern id="patternStretchX" 
+                 x="0" y="0" 
+                 width=".2" height=".4" 
+                 viewBox="5 0 10 20" 
+                 preserveAspectRatio="none">
+            <use xlink:href="patternRegionA.svg#patternContent" />
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- Half of the pattern content is stretched along -->
+        <!-- the y axis.                                    -->
+        <!-- ============================================== -->
+        <pattern id="patternStretchY"
+                 x="0" y="0" 
+                 width=".2" height=".4" 
+                 viewBox="0 5 20 10" 
+                 preserveAspectRatio="none">
+            <use xlink:href="patternRegionA.svg#patternContent" />
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- The pattern content is stretched along both    -->
+        <!-- axis.                                          -->
+        <!-- ============================================== -->
+        <pattern id="patternStretchXY"
+                 x="0" y="0" 
+                 width=".2" height=".4" 
+                 viewBox="5 5 10 10" 
+                 preserveAspectRatio="none">
+            <use xlink:href="patternRegionA.svg#patternContent" />
+        </pattern>
+
+        </defs>
+
+        <g transform="translate(30, 90)" >
+            <text class="legend" style="text-anchor:start" x="0" y="-5">Pattern (4 times actual size)</text>
+            <use xlink:href="patternRegionA.svg#patternContent" transform="scale(4, 4)" />
+        </g>
+
+        <g transform="translate(30, 200)">
+
+            <g>
+                <text class="legend" style="text-anchor:start" x="0" y="-5">Exact Fit in patternRegion</text>
+                <rect x="0" y="0" width="100" height="50" fill="url(#patternExactFit)" stroke="black"/>
+                <rect x="0" y="0" width="20" height="20" stroke="white" fill="none" />
+            </g>
+
+            <g transform="translate(0, 70)">
+                <text class="legend" style="text-anchor:start" x="0" y="-5">pattern content offset to the 
right</text>
+                <rect x="0" y="0" width="100" height="50" fill="url(#patternTranslateRegionX)" 
stroke="black"/>
+                <rect x="0" y="0" width="20" height="20" stroke="white" fill-opacity=".12" stroke-width="3"/>
+                <rect x="5" y="0" width="15" height="20" stroke="red" fill="none"/>
+            </g>
+
+            <g transform="translate(0, 140)">
+                <text class="legend" style="text-anchor:start" x="0" y="-5">pattern content offset to the 
bottom</text>
+                <rect x="0" y="0" width="100" height="50" fill="url(#patternTranslateRegionY)" 
stroke="black"/>
+                <rect x="0" y="0" width="20" height="20" stroke="white" fill-opacity=".12" stroke-width="3"/>
+                <rect x="0" y="5" width="20" height="15" stroke="red" fill="none"/>
+            </g>
+
+            <g transform="translate(0, 210)">
+                <text class="legend" style="text-anchor:start" x="0" y="-5">pattern content offset to the 
bottom/right</text>
+                <rect x="0" y="0" width="100" height="50" fill="url(#patternTranslateRegionXY)" 
stroke="black"/>
+                <rect x="0" y="0" width="20" height="20" stroke="white" fill-opacity=".12" stroke-width="3"/>
+                <rect x="10" y="10" width="10" height="10" stroke="red" fill="none"/>
+            </g>
+
+        </g>
+
+        <g transform="translate(255, 200)">
+            <g>
+                <text class="legend" style="text-anchor:start" x="0" y="-5">Exact Fit in patternRegion</text>
+                <rect x="0" y="0" width="100" height="50" fill="url(#patternExactFitPANone)" stroke="black"/>
+                <rect x="0" y="0" width="20" height="20" stroke="white" fill-opacity=".12" />
+            </g>
+
+            <g transform="translate(0, 70)">
+                <text class="legend" style="text-anchor:start" x="0" y="-5">pattern content X stretch</text>
+                <rect x="0" y="0" width="100" height="50" fill="url(#patternStretchX)" stroke="black"/>
+                <rect x="0" y="0" width="20" height="20" stroke="white" fill-opacity=".12" />
+            </g>
+
+            <g transform="translate(0, 140)">
+                <text class="legend" style="text-anchor:start" x="0" y="-5">pattern content Y stretch</text>
+                <rect x="0" y="0" width="100" height="50" fill="url(#patternStretchY)" stroke="black"/>
+                <rect x="0" y="0" width="20" height="20" stroke="white" fill-opacity=".12" />
+            </g>
+
+            <g transform="translate(0, 210)">
+                <text class="legend" style="text-anchor:start" x="0" y="-5">pattern content X/Y 
stretch</text>
+                <rect x="0" y="0" width="100" height="50" fill="url(#patternStretchXY)" stroke="black"/>
+                <rect x="0" y="0" width="20" height="20" stroke="white" fill-opacity=".12" />
+            </g>
+        </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/paints/patternRegions.png 
b/tests/data/svg/batik/tests/spec/paints/patternRegions.png
new file mode 100644
index 0000000..835f935
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/paints/patternRegions.png differ
diff --git a/tests/data/svg/batik/tests/spec/paints/patternRegions.svg 
b/tests/data/svg/batik/tests/spec/paints/patternRegions.svg
new file mode 100644
index 0000000..598ceda
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/paints/patternRegions.svg
@@ -0,0 +1,263 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This test file checks that the various combinations of units and viewbox  -->
+<!-- work in Batik for patternRegions                                          -->
+<!--                                                                           -->
+<!-- @author vhardy eng sun com                                                -->
+<!-- @version $Id: patternRegions.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Pattern Tests</title>
+
+    <text x="225" y="50" class="title">
+        patternUnits / patternContentUnits 
+    </text>
+    <text x="225" y="75" class="title">
+        pattern viewBox
+    </text>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent" style="font-size:10">
+        <defs>
+        <!-- ============================================== -->
+        <!-- patternUnits : default (objectBoundingBox)     -->
+        <!-- patternContentUnits : default (userSpaceOnUse) -->
+        <!-- viewBox : default (none)                       -->
+        <!-- ============================================== -->
+        <pattern id="pattern1" x="0" y="0" width=".75" height="50%">
+            <circle cx="10" cy="10" r="10" style="fill:red" />
+            <rect x="10" y="10" width="15" height="15" style="fill:green"/>
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- patternUnits : objectBoundingBox               -->
+        <!-- patternContentUnits : default (userSpaceOnUse) -->
+        <!-- viewBox : default (none)                       -->
+        <!-- ============================================== -->
+        <pattern id="pattern2" patternUnits="objectBoundingBox" x="0" y="0" width=".75" height="50%">
+            <circle cx="10" cy="10" r="10" style="fill:red" />
+            <rect x="10" y="10" width="15" height="15" style="fill:green"/>
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- patternUnits : userSpaceOnUse                  -->
+        <!-- patternContentUnits : default (userSpaceOnUse) -->
+        <!-- viewBox : default (none)                       -->
+        <!-- ============================================== -->
+        <pattern id="pattern3" 
+                 patternUnits="userSpaceOnUse" 
+                 x="0" y="0" width="30" height="15" overflow="visible">
+            <circle cx="10" cy="10" r="10" style="fill:red" />
+            <rect x="10" y="10" width="15" height="15" style="fill:green"/>
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- patternUnits : default (objectBoundingBox)     -->
+        <!-- patternContentUnits : objectBoundingBox        -->
+        <!-- viewBox : default (none)                       -->
+        <!-- ============================================== -->
+        <pattern id="pattern4" 
+                 patternContentUnits="objectBoundingBox"
+                 x="0" y="0" width=".75" height=".5" overflow="visible">
+            <circle cx="0.0556%" cy=".33333333" r=".25" style="fill:red" />
+            <rect x=".25" y=".33333333" width="0.375" height=".5" style="fill:green"/>
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- patternUnits : objectBoundingBox               -->
+        <!-- patternContentUnits : objectBoundingBox        -->
+        <!-- viewBox : default (none)                       -->
+        <!-- ============================================== -->
+        <pattern id="pattern5" 
+                 patternUnits="objectBoundingBox"
+                 patternContentUnits="objectBoundingBox"
+                 x="0" y="0" width=".75" height=".5">
+            <circle cx=".25" cy=".33333333" r=".25" style="fill:red" />
+            <rect x=".25" y=".33333333" width="0.375" height=".5" style="fill:green"/>
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- patternUnits : userSpaceOnUse                  -->
+        <!-- patternContentUnits : objectBoundingBox        -->
+        <!-- viewBox : default (none)                       -->
+        <!-- ============================================== -->
+        <pattern id="pattern6" 
+                 patternUnits="userSpaceOnUse" 
+                 patternContentUnits="objectBoundingBox"
+                 x="0" y="0" width="30" height="15">
+            <circle cx=".25" cy=".33333333" r=".25" style="fill:red" />
+            <rect x=".25" y=".33333333" width="0.375" height=".5" style="fill:green"/>
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- patternUnits : userSpaceOnUse                  -->
+        <!-- patternContentUnits : objectBoundingBox        -->
+        <!-- viewBox : set                                  -->
+        <!-- Note patternContentUnits is ignored if viewBox -->
+        <!-- is set.                                        -->
+        <!-- ============================================== -->
+        <pattern id="pattern7" 
+                 patternUnits="userSpaceOnUse" 
+                 patternContentUnits="objectBoundingBox"
+                 x="0" y="0" width="30" height="15" 
+                 viewBox="10 10 40 30" preserveAspectRatio="none">
+            <circle cx="20" cy="20" r="20" style="fill:red" />
+        </pattern>
+
+        <!-- ============================================== -->
+        <!-- patternUnits : userSpaceOnUse                  -->
+        <!-- patternContentUnits : objectBoundingBox        -->
+        <!-- viewBox : set                                  -->
+        <!-- Note patternContentUnits is ignored if viewBox -->
+        <!-- is set.                                        -->
+        <!-- ============================================== -->
+        <pattern id="pattern8" 
+                 patternUnits="userSpaceOnUse" 
+                 patternContentUnits="objectBoundingBox"
+                 x="0" y="0" width="30" height="15" 
+                 viewBox="10 10 40 30" preserveAspectRatio="xMinYMin meet">
+            <circle cx="20" cy="20" r="20" style="fill:red" />
+        </pattern>
+
+        <radialGradient id="redToYellow" >
+            <stop offset="0" stop-color="red" />
+            <stop offset="1" stop-color="yellow" />
+        </radialGradient>
+
+        <!-- ============================================== -->
+        <!-- patternUnits : userSpaceOnUse                  -->
+        <!-- patternContentUnits : userSpaceOnUse           -->
+        <!-- viewBox : set                                  -->
+        <!-- Note patternContentUnits is ignored if viewBox -->
+        <!-- is set.                                        -->
+        <!-- ============================================== -->
+        <pattern id="pattern9" 
+                 patternUnits="userSpaceOnUse" 
+                 patternContentUnits="objectBoundingBox" overflow="visible"
+                 x="0" y="0" width="30" height="15" viewBox="10 10 40 40" preserveAspectRatio="xMinYMin 
slice">
+            <circle cx="20" cy="20" r="40" style="fill:url(#redToYellow)" />
+        </pattern>
+
+    </defs>
+
+    <g transform="translate(-5, 100)">
+
+    <g id="p1" transform="translate(20, 20)">
+        <rect x="0" y="0" width="40" height="30" style="fill:url(#pattern1); stroke:black;"/>
+        <text y="-2">#pattern1</text>
+        <g transform="translate(50, 9)">
+            <text x="0" y="0">patternUnits=default</text>
+            <text x="0" y="10">contentUnits=default</text>
+            <text x="0" y="20">no viewbox</text>
+        </g>
+    </g>
+
+    <g id="p2" transform="translate(20, 70)">
+        <rect x="0" y="0" width="40" height="30" style="fill:url(#pattern2); stroke:black;"/>
+        <text y="-2">#pattern2</text>
+        <g transform="translate(50, 9)">
+            <text x="0" y="0">patternUnits=objectBoundingBox</text>
+            <text x="0" y="10">contentUnits=default</text>
+        </g>
+    </g>
+
+    <g id="p3" transform="translate(20, 120)">
+        <rect x="0" y="0" width="40" height="30" style="fill:url(#pattern3); stroke:black;"/>
+        <text y="-2">#pattern3</text>
+        <g transform="translate(50, 9)">
+            <text>patternUnits=userSpaceOnUse</text>
+            <text y="10">contentUnits=default</text>
+            <text y="20">overflow=visible</text>
+        </g>
+    </g>
+
+    <g id="p4" transform="translate(20, 170)"> 
+        <rect x="0" y="0" width="40" height="30" style="fill:url(#pattern4); stroke:black;"/>
+        <text y="-2">#pattern4</text>
+        <g transform="translate(50, 9)">
+            <text>patternUnits=default</text>
+            <text y="10">contentUnits=objectBoundingBox</text>
+            <text y="20">overflow=visible</text>
+        </g>
+    </g>
+
+    <g id="p5" transform="translate(20, 220)">
+        <rect x="0" y="0" width="40" height="30" style="fill:url(#pattern5); stroke:black;"/>
+        <text y="-2">#pattern5</text>
+        <g transform="translate(50, 9)">
+            <text>patternUnits=objectBoundingBox</text>
+            <text y="10">contentUnits=objectBoundingBox</text>
+        </g>
+    </g>
+
+    <g id="p6" transform="translate(20, 270)">
+        <rect x="0" y="0" width="40" height="30" style="fill:url(#pattern6); stroke:black;"/>
+        <text y="-2">#pattern6</text>
+        <g transform="translate(50, 9)">
+            <text>patternUnits=userSpaceOnUse</text>
+            <text y="10">contentUnits=objectBoundingBox</text>
+        </g>
+    </g>
+
+    <g id="p7" transform="translate(225, 20)">
+        <rect x="0" y="0" width="40" height="30" style="fill:url(#pattern7); stroke:black;"/>
+        <text y="-2">#pattern7</text>
+        <g transform="translate(50, 9)">
+            <text>patternUnits=userSpaceOnUse</text>
+            <text y="10">contentUnits=objectBoundingBox</text>
+            <text y="20">viewBox preserveAspectRatio=none</text>
+        </g>
+    </g>
+
+    <g id="p8" transform="translate(225, 70)">
+        <rect x="0" y="0" width="40" height="30" style="fill:url(#pattern8); stroke:black;"/>
+        <text y="-2" >#pattern8</text>
+        <g transform="translate(50, 9)">
+            <text>same as pattern#7 with</text>
+            <text y="10">preserveAspectRatio=xMinYmin meet</text>
+        </g>
+    </g>
+
+    <g id="p9" transform="translate(225, 120)">
+        <rect x="0" y="0" width="40" height="30" style="fill:url(#pattern9); stroke:black;"/>
+        <text y="-2" >#pattern9</text>
+        <g transform="translate(50, 9)">
+            <text y="0">preserveAspectRatio=xMinYmin slice</text>
+            <text y="10">overflow=visible</text>
+        </g>
+    </g>
+
+    </g>
+</g>
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/paints/radialGradient.png 
b/tests/data/svg/batik/tests/spec/paints/radialGradient.png
new file mode 100644
index 0000000..d2e2e2e
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/paints/radialGradient.png differ
diff --git a/tests/data/svg/batik/tests/spec/paints/radialGradient.svg 
b/tests/data/svg/batik/tests/spec/paints/radialGradient.svg
new file mode 100644
index 0000000..377eda3
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/paints/radialGradient.svg
@@ -0,0 +1,254 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: radialGradient.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+
+    <title>&lt;radialGradient&gt; Test 1 (Simple)</title>
+    <text class="title" x="50%" y="40">
+        &lt;radialGradient&gt; Test 1 (Simple)
+    </text>
+
+    <style type="text/css"><![CDATA[
+        .speed   { clip-path:url(#speedClip); color-rendering:optimizeSpeed; }
+        .default { clip-path:url(#defaultClip); color-rendering:auto; }
+        .quality { clip-path:url(#qualityClip); 
+                   color-rendering:optimizeQuality; }
+        .saqLabel {  font-family: Verdana, Helvetica; 
+                     font-size: 5;
+                     text-anchor: middle; 
+                     fill:black; stroke:none;}
+        .line { fill:none; stroke:black; stroke-width:0.25; } 
+    ]]></style>
+
+    <defs>
+        <!-- Shape filled by radial gradients -->
+        <g id="testShape">
+            <rect x="-25" y="-20" width="50" height="40" 
+                  class="quality" />
+            <rect x="-25" y="-20" width="50" height="40" 
+                  class="default" />
+            <rect x="-25" y="-20" width="50" height="40" 
+                  class="speed" />
+
+            <text x="-16.5" y="24" class="saqLabel">Q</text>
+            <line x1="-8" x2="-8" y1="20" y2="25" class="line" />
+            <text x="0" y="24" class="saqLabel">A</text>
+            <line x1="8" x2="8" y1="20" y2="25" class="line" />
+            <text x="16.5" y="24" class="saqLabel">S</text>
+        </g>
+
+        <!-- Clip paths for the various color-rendering settings... -->
+        <clipPath id="qualityClip">
+            <rect x="-25" y="-20" width="17" height="40"/>
+        </clipPath>
+
+        <clipPath id="defaultClip">
+            <rect x="-8" y="-20" width="16" height="40"/>
+        </clipPath>
+
+        <clipPath id="speedClip">
+            <rect x="8" y="-20" width="17" height="40"/>
+        </clipPath>
+
+
+        <!-- ========================================== -->
+        <!-- Two gradients, one with no values defined  -->
+        <!-- and one with the default values specified  -->
+        <!-- They should create the same pattern        -->
+        <!-- ========================================== -->
+        <radialGradient id="rgDefaults">
+            <stop offset="0" stop-color="gold" />
+            <stop offset="1" stop-color="crimson" />
+        </radialGradient>
+
+        <radialGradient id="rgSpecifiedDefaults" 
+                        gradientUnits="objectBoundingBox"
+                        cx="50%" cy="50%"
+                        r="50%"
+                        fx="50%" fy="50%"
+                        spreadMethod="pad" xlink:href="#rgDefaults" />
+
+        <!-- ========================================== -->
+        <!-- gradientUnits. The following gradients     -->
+        <!-- is defined so as to produce the same       -->
+        <!-- result as with the default settings        -->
+        <!-- For example, cx default is 50% in object   -->
+        <!-- bounding box, which is .5*50 = 25          -->
+        <!-- r = sqrt(50*50 + 40*40) = 22.63846284534354156643452041746 -->
+        <!-- ========================================== -->
+        <radialGradient id="rgUserSpaceOnUse" 
+            cx="0" cy="0" r="22.63846284534354156643452041746"
+            fx="0" fy="0" xlink:href="#rdDefaults" />
+
+        <radialGradient id="rgCxCyA" xlink:href="#rgDefaults"
+            cx="0%" cy="100%">
+        </radialGradient>
+
+        <radialGradient id="rgCxCyB" xlink:href="#rgDefaults"
+            cx="75%" cy="25%">
+        </radialGradient>
+
+        <radialGradient id="rgFxFyA" xlink:href="#rgCxCyA"
+            fx="0%" fy="100%">
+        </radialGradient>
+
+        <radialGradient id="rgFxFyB" xlink:href="#rgDefaults"
+            fx="60%" fy="40%">
+        </radialGradient>
+
+        <radialGradient id="rgFxFyC" xlink:href="#rgDefaults"
+            fx="0%" fy="50%">
+        </radialGradient>
+
+        <radialGradient id="rgFxFyD" xlink:href="#rgDefaults"
+            fx="0%" fy="0%">
+        </radialGradient>
+
+        <radialGradient id="rgSpreadA" xlink:href="#rgDefaults"
+            r=".125">
+        </radialGradient>
+
+        <radialGradient id="rgSpreadB" xlink:href="#rgDefaults"
+            r=".125" spreadMethod="reflect">
+        </radialGradient>
+
+        <radialGradient id="rgSpreadC" xlink:href="#rgDefaults"
+            r=".125" spreadMethod="repeat">
+        </radialGradient>
+
+        <radialGradient id="rgTxfA" xlink:href="#rgDefaults"
+            gradientTransform="translate(.5, .5)" />
+
+        <radialGradient id="rgTxfB" xlink:href="#rgDefaults"
+            cx="0%" cy="0%" gradientTransform="translate(.5, .5)" />
+
+        <radialGradient id="rgTxfC" xlink:href="#rgDefaults"
+            cx="0%" cy="0%" gradientTransform="translate(.5, .5) scale(1.5, .25)" />
+
+        <radialGradient id="rgTxfD" xlink:href="#rgFxFyD"
+            gradientTransform="scale(.5, .5)" />
+
+    </defs>
+
+    <g class="legend">
+ 
+        <g transform="translate(70, 0)">
+        <g transform="translate(0, 100)">
+            <use xlink:href="#testShape" fill="url(#rgDefaults)" />
+            <text y="-30">Defaults</text>
+        </g>
+
+        <g transform="translate(0, 170)">
+            <use xlink:href="#testShape" fill="url(#rgSpecifiedDefaults)" />
+            <text y="-30">Forced Defaults</text>
+        </g>
+
+        <g transform="translate(0, 240)">
+            <use xlink:href="#testShape" fill="url(#rgSpecifiedDefaults)" />
+            <text y="-30">userSpaceOnUse</text>
+        </g>
+
+        <g transform="translate(0, 310)">
+            <use xlink:href="#testShape" fill="url(#rgCxCyA)" />
+            <text y="-30">(cx,cy) = (0%, 100%)</text>
+        </g>
+
+        <g transform="translate(0, 380)">
+            <use xlink:href="#testShape" fill="url(#rgCxCyB)" />
+            <text y="-30">(cx,cy) = (75%, 25%)</text>
+        </g>
+
+        </g>
+
+        <g transform="translate(200, 0)">
+
+        <g transform="translate(0, 100)">
+            <use xlink:href="#testShape" fill="url(#rgFxFyB)" />
+            <text y="-30">(fx,fy)=(60%,40%)</text>
+        </g>
+
+        <g transform="translate(0, 170)">
+            <use xlink:href="#testShape" fill="url(#rgFxFyC)" />
+            <text y="-30">(fx,fy)=(0%,50%)</text>
+        </g>
+
+        <g transform="translate(0, 240)">
+            <use xlink:href="#testShape" fill="url(#rgFxFyD)" />
+            <text y="-30">(fx,fy)=(0%,0%)</text>
+        </g>
+
+        <g transform="translate(0, 310)">
+            <use xlink:href="#testShape" fill="url(#rgSpreadA)" />
+            <text y="-30">r=.125, spread=default</text>
+        </g>
+
+        <g transform="translate(0, 380)">
+            <use xlink:href="#testShape" fill="url(#rgSpreadB)" />
+            <text y="-30">r=.125, spread=reflect</text>
+        </g>
+
+        <g transform="translate(0, 450)">
+            <use xlink:href="#testShape" fill="url(#rgSpreadC)" />
+            <text y="-30">r=.125, spread=repeat</text>
+        </g>
+
+        </g>
+
+
+        <g transform="translate(330, 0)">
+
+        <g transform="translate(0, 100)">
+            <use xlink:href="#testShape" fill="url(#rgTxfA)" />
+            <text y="-30">translate(.5,.5)</text>
+        </g>
+
+        <g transform="translate(0, 170)">
+            <use xlink:href="#testShape" fill="url(#rgTxfB)" />
+            <text y="-30">(cx,cy)=(0%,0%) translate(.5,.5)</text>
+        </g>
+
+        <g transform="translate(0, 240)">
+            <use xlink:href="#testShape" fill="url(#rgTxfC)" />
+            <text y="-30">scale(1.5,.25)</text>
+        </g>
+
+        <g transform="translate(0, 310)">
+            <use xlink:href="#testShape" fill="url(#rgTxfD)" />
+            <text y="-30">(fx,fy)=(0,0) scale(.5, .5)</text>
+        </g>
+
+        <g transform="translate(0, 380)">
+            <use xlink:href="#testShape" fill="url(#rgFxFyA)" />
+            <text y="-30">(fx,fy)=(cx, cy)=(0%, 100%)</text>
+        </g>
+
+
+        </g>
+
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/paints/radialGradient2.png 
b/tests/data/svg/batik/tests/spec/paints/radialGradient2.png
new file mode 100644
index 0000000..9f60f7e
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/paints/radialGradient2.png differ
diff --git a/tests/data/svg/batik/tests/spec/paints/radialGradient2.svg 
b/tests/data/svg/batik/tests/spec/paints/radialGradient2.svg
new file mode 100644
index 0000000..900ee56
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/paints/radialGradient2.svg
@@ -0,0 +1,262 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- @author deweese apache org                                             -->
+<!-- @author vhardy apache org                                              -->
+<!-- @version $Id: radialGradient2.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; >
+
+    <title>&lt;radialGradient&gt; Test 2 (Discontinuity)</title>
+    <text class="title" x="50%" y="40">
+        &lt;radialGradient&gt; Test 2 (Discontinuity)
+    </text>
+
+    <style type="text/css"><![CDATA[
+        .speed   { clip-path:url(#speedClip); color-rendering:optimizeSpeed; }
+        .default { clip-path:url(#defaultClip); }
+        .quality { clip-path:url(#qualityClip); 
+                   color-rendering:optimizeQuality; }
+
+        .saqLabel {  font-family: Verdana, Helvetica; 
+                     font-size: 5;
+                     text-anchor: middle; 
+                     fill:black; stroke:none;}
+        .line { fill:none; stroke:black; stroke-width:0.25; } 
+    ]]></style>
+
+
+    <defs>
+        <!-- Shape filled by radial gradients -->
+        <g id="testShape">
+            <rect x="-25" y="-20" width="50" height="40" 
+                  class="quality" />
+            <rect x="-25" y="-20" width="50" height="40" 
+                  class="default" />
+            <rect x="-25" y="-20" width="50" height="40" 
+                  class="speed" />
+
+            <text x="-16.5" y="24" class="saqLabel">Q</text>
+            <line x1="-8" x2="-8" y1="20" y2="25" class="line" />
+            <text x="0" y="24" class="saqLabel">A</text>
+            <line x1="8" x2="8" y1="20" y2="25" class="line" />
+            <text x="16.5" y="24" class="saqLabel">S</text>
+        </g>
+
+        <!-- Clip paths for the various color-rendering settings... -->
+        <clipPath id="qualityClip">
+            <rect x="-25" y="-20" width="17" height="40"/>
+        </clipPath>
+
+        <clipPath id="defaultClip">
+            <rect x="-8" y="-20" width="16" height="40"/>
+        </clipPath>
+
+        <clipPath id="speedClip">
+            <rect x="8" y="-20" width="17" height="40"/>
+        </clipPath>
+
+        <!-- ========================================== -->
+        <!-- Two gradients, one with no values defined  -->
+        <!-- and one with the default values specified  -->
+        <!-- They should create the same pattern        -->
+        <!-- ========================================== -->
+        <radialGradient id="rgDefaults">
+            <stop offset=".0" stop-color="gold" />
+            <stop offset=".5" stop-color="crimson" />
+            <stop offset=".5" stop-color="gold" />
+            <stop offset="1." stop-color="crimson" />
+        </radialGradient>
+
+        <radialGradient id="rgSpecifiedDefaults" 
+                        gradientUnits="objectBoundingBox"
+                        cx="50%" cy="50%"
+                        r="50%"
+                        fx="50%" fy="50%"
+                        spreadMethod="pad" xlink:href="#rgDefaults" />
+
+        <!-- ========================================== -->
+        <!-- gradientUnits. The following gradients     -->
+        <!-- is defined so as to produce the same       -->
+        <!-- result as with the default settings        -->
+        <!-- For example, cx default is 50% in object   -->
+        <!-- bounding box, which is .5*50 = 25          -->
+        <!-- r = sqrt(50*50 + 40*40) = 22.63846284534354156643452041746 -->
+        <!-- ========================================== -->
+        <radialGradient id="rgUserSpaceOnUse" 
+            cx="0" cy="0" r="22.63846284534354156643452041746"
+            fx="0" fy="0" xlink:href="#rdDefaults" />
+
+        <radialGradient id="rgCxCyA" xlink:href="#rgDefaults"
+            cx="0%" cy="100%">
+        </radialGradient>
+
+        <radialGradient id="rgCxCyB" xlink:href="#rgDefaults"
+            cx="75%" cy="25%">
+        </radialGradient>
+
+        <radialGradient id="rgFxFyA" xlink:href="#rgCxCyA"
+            fx="0%" fy="100%">
+        </radialGradient>
+
+        <radialGradient id="rgFxFyB" xlink:href="#rgDefaults"
+            fx="60%" fy="40%">
+        </radialGradient>
+
+        <radialGradient id="rgFxFyC" xlink:href="#rgDefaults"
+            fx="0%" fy="50%">
+        </radialGradient>
+
+        <radialGradient id="rgFxFyD" xlink:href="#rgDefaults"
+            fx="0%" fy="0%">
+        </radialGradient>
+
+        <radialGradient id="rgSpreadA" xlink:href="#rgDefaults"
+            r=".125">
+        </radialGradient>
+
+        <radialGradient id="rgSpreadB" xlink:href="#rgDefaults"
+            r=".125" spreadMethod="reflect">
+        </radialGradient>
+
+        <radialGradient id="rgSpreadC" xlink:href="#rgDefaults"
+            r=".125" spreadMethod="repeat">
+        </radialGradient>
+
+        <radialGradient id="rgTxfA" xlink:href="#rgDefaults"
+            gradientTransform="translate(.5, .5)" />
+
+        <radialGradient id="rgTxfB" xlink:href="#rgDefaults"
+            cx="0%" cy="0%" gradientTransform="translate(.5, .5)" />
+
+        <radialGradient id="rgTxfC" xlink:href="#rgDefaults"
+            cx="0%" cy="0%" gradientTransform="translate(.5, .5) scale(1.5, .25)" />
+
+        <radialGradient id="rgTxfD" xlink:href="#rgFxFyD"
+            gradientTransform="scale(.5, .5)" />
+
+    </defs>
+
+    <g class="legend">
+ 
+        <g transform="translate(70, 0)">
+
+        <g transform="translate(0, 100)">
+            <use xlink:href="#testShape" fill="url(#rgDefaults)" />
+            <text y="-30">Defaults</text>
+        </g>
+
+        <g transform="translate(0, 170)">
+            <use xlink:href="#testShape" fill="url(#rgSpecifiedDefaults)" />
+            <text y="-30">Forced Defaults</text>
+        </g>
+
+        <g transform="translate(0, 240)">
+            <use xlink:href="#testShape" fill="url(#rgSpecifiedDefaults)" />
+            <text y="-30">userSpaceOnUse</text>
+        </g>
+
+        <g transform="translate(0, 310)">
+            <use xlink:href="#testShape" fill="url(#rgCxCyA)" />
+            <text y="-30">(cx,cy) = (0%, 100%)</text>
+        </g>
+
+        <g transform="translate(0, 380)">
+            <use xlink:href="#testShape" fill="url(#rgCxCyB)" />
+            <text y="-30">(cx,cy) = (75%, 25%)</text>
+        </g>
+
+        </g>
+
+        <g transform="translate(200, 0)">
+
+        <g transform="translate(0, 100)">
+            <use xlink:href="#testShape" fill="url(#rgFxFyB)" />
+            <text y="-30">(fx,fy)=(60%,40%)</text>
+        </g>
+
+        <g transform="translate(0, 170)">
+            <use xlink:href="#testShape" fill="url(#rgFxFyC)" />
+            <text y="-30">(fx,fy)=(0%,50%)</text>
+        </g>
+
+        <g transform="translate(0, 240)">
+            <use xlink:href="#testShape" fill="url(#rgFxFyD)" />
+            <text y="-30">(fx,fy)=(0%,0%)</text>
+        </g>
+
+        <g transform="translate(0, 310)">
+            <use xlink:href="#testShape" fill="url(#rgSpreadA)" />
+            <text y="-30">r=.125, spread=default</text>
+        </g>
+
+        <g transform="translate(0, 380)">
+            <use xlink:href="#testShape" fill="url(#rgSpreadB)" />
+            <text y="-30">r=.125, spread=reflect</text>
+        </g>
+
+        <g transform="translate(0, 450)">
+            <use xlink:href="#testShape" fill="url(#rgSpreadC)" />
+            <text y="-30">r=.125, spread=repeat</text>
+        </g>
+
+        </g>
+
+
+        <g transform="translate(330, 0)">
+
+        <g transform="translate(0, 100)">
+            <use xlink:href="#testShape" fill="url(#rgTxfA)" />
+            <text y="-30">translate(.5,.5)</text>
+        </g>
+
+        <g transform="translate(0, 170)">
+            <use xlink:href="#testShape" fill="url(#rgTxfB)" />
+            <text y="-30">(cx,cy)=(0%,0%) translate(.5,.5)</text>
+        </g>
+
+        <g transform="translate(0, 240)">
+            <use xlink:href="#testShape" fill="url(#rgTxfC)" />
+            <text y="-30">scale(1.5,.25)</text>
+        </g>
+
+        <g transform="translate(0, 310)">
+            <use xlink:href="#testShape" fill="url(#rgTxfD)" />
+            <text y="-30">(fx,fy)=(0,0) scale(.5, .5)</text>
+        </g>
+
+        <g transform="translate(0, 380)">
+            <use xlink:href="#testShape" fill="url(#rgFxFyA)" />
+            <text y="-30">(fx,fy)=(cx, cy)=(0%, 100%)</text>
+        </g>
+
+
+        </g>
+
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/paints/radialGradient3.png 
b/tests/data/svg/batik/tests/spec/paints/radialGradient3.png
new file mode 100644
index 0000000..509d31d
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/paints/radialGradient3.png differ
diff --git a/tests/data/svg/batik/tests/spec/paints/radialGradient3.svg 
b/tests/data/svg/batik/tests/spec/paints/radialGradient3.svg
new file mode 100644
index 0000000..a23ec31
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/paints/radialGradient3.svg
@@ -0,0 +1,257 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- @author deweese apache org                                             -->
+<!-- @author vhardy apache org                                              -->
+<!-- @version $Id: radialGradient3.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+
+    <title>&lt;radialGradient&gt; Test 3 (Complex lookup)</title>
+    <text class="title" x="50%" y="40">
+        &lt;radialGradient&gt; Test 3 (Complex lookup)
+    </text>
+
+    <style type="text/css"><![CDATA[
+        .speed   { clip-path:url(#speedClip); color-rendering:optimizeSpeed; }
+        .default { clip-path:url(#defaultClip); color-rendering:auto; }
+        .quality { clip-path:url(#qualityClip); 
+                   color-rendering:optimizeQuality; }
+        .saqLabel {  font-family: Verdana, Helvetica; 
+                     font-size: 5;
+                     text-anchor: middle; 
+                     fill:black; stroke:none;}
+        .line { fill:none; stroke:black; stroke-width:0.25; } 
+    ]]></style>
+
+    <defs>
+        <!-- Shape filled by radial gradients -->
+        <g id="testShape">
+            <rect x="-25" y="-20" width="50" height="40" 
+                  class="quality" />
+            <rect x="-25" y="-20" width="50" height="40" 
+                  class="default" />
+            <rect x="-25" y="-20" width="50" height="40" 
+                  class="speed" />
+
+            <text x="-16.5" y="24" class="saqLabel">Q</text>
+            <line x1="-8" x2="-8" y1="20" y2="25" class="line" />
+            <text x="0" y="24" class="saqLabel">A</text>
+            <line x1="8" x2="8" y1="20" y2="25" class="line" />
+            <text x="16.5" y="24" class="saqLabel">S</text>
+        </g>
+
+        <!-- Clip paths for the various color-rendering settings... -->
+        <clipPath id="qualityClip">
+            <rect x="-25" y="-20" width="17" height="40"/>
+        </clipPath>
+
+        <clipPath id="defaultClip">
+            <rect x="-8" y="-20" width="16" height="40"/>
+        </clipPath>
+
+        <clipPath id="speedClip">
+            <rect x="8" y="-20" width="17" height="40"/>
+        </clipPath>
+
+
+        <!-- ========================================== -->
+        <!-- Two gradients, one with no values defined  -->
+        <!-- and one with the default values specified  -->
+        <!-- They should create the same pattern        -->
+        <!-- ========================================== -->
+        <radialGradient id="rgDefaults">
+            <stop offset=".0" stop-color="gold" />
+            <stop offset=".49" stop-color="crimson" />
+            <stop offset=".51" stop-color="gold" />
+            <stop offset="1." stop-color="crimson" />
+        </radialGradient>
+
+        <radialGradient id="rgSpecifiedDefaults" 
+                        gradientUnits="objectBoundingBox"
+                        cx="50%" cy="50%"
+                        r="50%"
+                        fx="50%" fy="50%"
+                        spreadMethod="pad" xlink:href="#rgDefaults" />
+
+        <!-- ========================================== -->
+        <!-- gradientUnits. The following gradients     -->
+        <!-- is defined so as to produce the same       -->
+        <!-- result as with the default settings        -->
+        <!-- For example, cx default is 50% in object   -->
+        <!-- bounding box, which is .5*50 = 25          -->
+        <!-- r = sqrt(50*50 + 40*40) = 22.63846284534354156643452041746 -->
+        <!-- ========================================== -->
+        <radialGradient id="rgUserSpaceOnUse" 
+            cx="0" cy="0" r="22.63846284534354156643452041746"
+            fx="0" fy="0" xlink:href="#rdDefaults" />
+
+        <radialGradient id="rgCxCyA" xlink:href="#rgDefaults"
+            cx="0%" cy="100%">
+        </radialGradient>
+
+        <radialGradient id="rgCxCyB" xlink:href="#rgDefaults"
+            cx="75%" cy="25%">
+        </radialGradient>
+
+        <radialGradient id="rgFxFyA" xlink:href="#rgCxCyA"
+            fx="0%" fy="100%">
+        </radialGradient>
+
+        <radialGradient id="rgFxFyB" xlink:href="#rgDefaults"
+            fx="60%" fy="40%">
+        </radialGradient>
+
+        <radialGradient id="rgFxFyC" xlink:href="#rgDefaults"
+            fx="0%" fy="50%">
+        </radialGradient>
+
+        <radialGradient id="rgFxFyD" xlink:href="#rgDefaults"
+            fx="0%" fy="0%">
+        </radialGradient>
+
+        <radialGradient id="rgSpreadA" xlink:href="#rgDefaults"
+            r=".125">
+        </radialGradient>
+
+        <radialGradient id="rgSpreadB" xlink:href="#rgDefaults"
+            r=".125" spreadMethod="reflect">
+        </radialGradient>
+
+        <radialGradient id="rgSpreadC" xlink:href="#rgDefaults"
+            r=".125" spreadMethod="repeat">
+        </radialGradient>
+
+        <radialGradient id="rgTxfA" xlink:href="#rgDefaults"
+            gradientTransform="translate(.5, .5)" />
+
+        <radialGradient id="rgTxfB" xlink:href="#rgDefaults"
+            cx="0%" cy="0%" gradientTransform="translate(.5, .5)" />
+
+        <radialGradient id="rgTxfC" xlink:href="#rgDefaults"
+            cx="0%" cy="0%" gradientTransform="translate(.5, .5) scale(1.5,.25)" />
+
+        <radialGradient id="rgTxfD" xlink:href="#rgFxFyD"
+            gradientTransform="scale(.5, .5)" />
+    </defs>
+
+    <g class="legend">
+ 
+        <g transform="translate(70, 0)">
+
+        <g transform="translate(0, 100)">
+            <use xlink:href="#testShape" fill="url(#rgDefaults)" />
+            <text y="-30">Defaults</text>
+        </g>
+
+        <g transform="translate(0, 170)">
+            <use xlink:href="#testShape" fill="url(#rgSpecifiedDefaults)" />
+            <text y="-30">Forced Defaults</text>
+        </g>
+
+        <g transform="translate(0, 240)">
+            <use xlink:href="#testShape" fill="url(#rgSpecifiedDefaults)" />
+            <text y="-30">userSpaceOnUse</text>
+        </g>
+
+        <g transform="translate(0, 310)">
+            <use xlink:href="#testShape" fill="url(#rgCxCyA)" />
+            <text y="-30">(cx,cy) = (0%, 100%)</text>
+        </g>
+
+        <g transform="translate(0, 380)">
+            <use xlink:href="#testShape" fill="url(#rgCxCyB)" />
+            <text y="-30">(cx,cy) = (75%, 25%)</text>
+        </g>
+
+        </g>
+
+        <g transform="translate(200, 0)">
+
+        <g transform="translate(0, 100)">
+            <use xlink:href="#testShape" fill="url(#rgFxFyB)" />
+            <text y="-30">(fx,fy)=(60%,40%)</text>
+        </g>
+
+        <g transform="translate(0, 170)">
+            <use xlink:href="#testShape" fill="url(#rgFxFyC)" />
+            <text y="-30">(fx,fy)=(0%,50%)</text>
+        </g>
+
+        <g transform="translate(0, 240)">
+            <use xlink:href="#testShape" fill="url(#rgFxFyD)" />
+            <text y="-30">(fx,fy)=(0%,0%)</text>
+        </g>
+
+        <g transform="translate(0, 310)">
+            <use xlink:href="#testShape" fill="url(#rgSpreadA)" />
+            <text y="-30">r=.125, spread=default</text>
+        </g>
+
+        <g transform="translate(0, 380)">
+            <use xlink:href="#testShape" fill="url(#rgSpreadB)" />
+            <text y="-30">r=.125, spread=reflect</text>
+        </g>
+
+        <g transform="translate(0, 450)">
+            <use xlink:href="#testShape" fill="url(#rgSpreadC)" />
+            <text y="-30">r=.125, spread=repeat</text>
+        </g>
+
+        </g>
+
+
+        <g transform="translate(330, 0)">
+
+        <g transform="translate(0, 100)">
+            <use xlink:href="#testShape" fill="url(#rgTxfA)" />
+            <text y="-30">translate(.5,.5)</text>
+        </g>
+
+        <g transform="translate(0, 170)">
+            <use xlink:href="#testShape" fill="url(#rgTxfB)" />
+            <text y="-30">(cx,cy)=(0%,0%) translate(.5,.5)</text>
+        </g>
+
+        <g transform="translate(0, 240)">
+            <use xlink:href="#testShape" fill="url(#rgTxfC)" />
+            <text y="-30">scale(1.5,.25)</text>
+        </g>
+
+        <g transform="translate(0, 310)">
+            <use xlink:href="#testShape" fill="url(#rgTxfD)" />
+            <text y="-30">(fx,fy)=(0,0) scale(.5, .5)</text>
+        </g>
+
+        <g transform="translate(0, 380)">
+            <use xlink:href="#testShape" fill="url(#rgFxFyA)" />
+            <text y="-30">(fx,fy)=(cx, cy)=(0%, 100%)</text>
+        </g>
+
+
+        </g>
+
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/paints/radialGradientLine.png 
b/tests/data/svg/batik/tests/spec/paints/radialGradientLine.png
new file mode 100644
index 0000000..22526a6
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/paints/radialGradientLine.png differ
diff --git a/tests/data/svg/batik/tests/spec/paints/radialGradientLine.svg 
b/tests/data/svg/batik/tests/spec/paints/radialGradientLine.svg
new file mode 100644
index 0000000..9e758b9
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/paints/radialGradientLine.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Radial gradient on line.                                                  -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: radialGradientLine.svg 1626072 2014-09-18 20:17:34Z vhennebert $ -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; 
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+    <title>Radial gradient on lines</title>
+
+    <text x="50%" y="45" class="title">Radial gradient on lines</text>
+
+    <g id="testContent">
+
+<defs>
+        <radialGradient id="grad" cx=".5" cy=".5" r="1" gradientUnits="userSpaceOnUse">
+                <stop offset="0" style="stop-color:crimson" />
+                <stop offset="1" style="stop-color:gold" />
+        </radialGradient>
+</defs>
+
+<g style="fill:#eee;stroke:black">
+        <rect x="75" y="100" width="300" height="20"  />
+        <rect x="55" y="120" width="20" height="300" />
+</g>
+
+<g style="fill:none;stroke:black">
+        <rect x="75" y="120" width="300" height="300" />
+        <line x1="55" y1="270" x2="375" y2="270" />
+</g>
+<g style="text-anchor:middle; fill:black; stroke:none">
+        <text x="225" y="115">Gradient</text>
+        <text transform="translate(70 200)rotate(-90)">horizontal &lt;line></text>
+        <text transform="translate(70 350)rotate(-90)">vertical &lt;Line></text>
+</g>
+<g style="stroke-width:6">
+        <line x2="1" transform="translate(185, 195) scale(80, 1)" stroke="url(#grad)" />
+        <line y2="1" transform="translate(220, 285) scale(1, 120)" stroke="url(#grad)"/>
+</g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/paints/radialGradientOrientation.png 
b/tests/data/svg/batik/tests/spec/paints/radialGradientOrientation.png
new file mode 100644
index 0000000..f1fc4f2
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/paints/radialGradientOrientation.png differ
diff --git a/tests/data/svg/batik/tests/spec/paints/radialGradientOrientation.svg 
b/tests/data/svg/batik/tests/spec/paints/radialGradientOrientation.svg
new file mode 100644
index 0000000..2530304
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/paints/radialGradientOrientation.svg
@@ -0,0 +1,150 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   
+        http://www.apache.org/licenses/LICENSE-2.0
+   
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!-- ========================================================================= -->
+<!-- Test external paint servers                                               -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: radialGradientOrientation.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+<title>Radial Gradient Orientation</title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+    <text x="225" y="50" class="title">Radial Gradient Orientation</text>
+<g transform="translate(0 -30)">
+<!-- ############################### -->
+<g id="board" style="fill:none; stroke:black;">
+
+  <rect x="75" y="100" width="100" height="20" style="fill:#eee"/>
+  <rect x="175" y="100" width="100" height="20" style="fill:#eee"/>
+  <rect x="275" y="100" width="100" height="20" style="fill:#eee"/>
+  <rect x="75" y="120" width="100" height="50" />
+  <rect x="175" y="120" width="100" height="50" />
+  <rect x="275" y="120" width="100" height="50" />
+  <g transform="translate(0 80)">
+    <rect x="75" y="100" width="100" height="20" style="fill:#eee"/>
+    <rect x="175" y="100" width="100" height="20" style="fill:#eee"/>
+    <rect x="275" y="100" width="100" height="20" style="fill:#eee"/>
+    <rect x="75" y="120" width="100" height="50" />
+    <rect x="175" y="120" width="100" height="50" />
+    <rect x="275" y="120" width="100" height="50" />
+  </g>
+  <g transform="translate(0 160)">
+    <rect x="75" y="100" width="100" height="20" style="fill:#eee"/>
+    <rect x="175" y="100" width="100" height="20" style="fill:#eee"/>
+    <rect x="275" y="100" width="100" height="20" style="fill:#eee"/>
+    <rect x="75" y="120" width="100" height="50" />
+    <rect x="175" y="120" width="100" height="50" />
+    <rect x="275" y="120" width="100" height="50" />
+  </g>
+  <g transform="translate(0 240)">
+    <rect x="175" y="100" width="100" height="20" style="fill:#eee"/>
+    <rect x="175" y="120" width="100" height="50" />
+  </g>
+  <g style="stroke:none; fill:black; text-anchor:middle; font-size:12">
+    <text x="125" y="114">cx = cy / fx &lt; fy</text>
+    <text x="225" y="114">cx = cy / fx > fy</text>
+    <text x="325" y="114">cx = cy / fx = fy</text>
+    <g transform="translate(0 80)">
+      <text x="125" y="114">cx &lt; cy / fx &lt; fy</text>
+      <text x="225" y="114">cx &lt; cy / fx > fy</text>
+      <text x="325" y="114">cx &lt; cy / fx = fy</text>
+    </g>
+    <g transform="translate(0 160)">
+      <text x="125" y="114">cx > cy / fx &lt; fy</text>
+      <text x="225" y="114">cx > cy / fx > fy</text>
+      <text x="325" y="114">cx > cy / fx = fy</text>
+    </g>
+    <g transform="translate(0 240)">
+      <text x="225" y="114">r = 0</text>
+    </g>
+  </g>
+</g>
+
+
+<!-- ############################### -->
+<defs>
+  <radialGradient id="genericGrad">
+    <stop style="stop-color:crimson" offset="0" />
+    <stop style="stop-color:orange" offset=".5" />
+    <stop style="stop-color:gold" offset="1" />
+  </radialGradient>
+
+  <radialGradient id="grad1" cx=".5" cy=".5" fx="0" fy="1" r=".5"
+                  xlink:href="#genericGrad" />
+  <radialGradient id="grad2" cx=".5" cy=".5" fx="1" fy="0" r=".5"
+                  xlink:href="#genericGrad" />
+  <radialGradient id="grad3" cx=".5" cy=".5" fx=".5" fy=".5" r=".5"
+                  xlink:href="#genericGrad" />
+
+  <radialGradient id="grad4" cx="0" cy="1" fx="0" fy="1" r=".5"
+                  xlink:href="#genericGrad" />
+  <radialGradient id="grad5" cx="0" cy="1" fx="1" fy="0" r=".5"
+                  xlink:href="#genericGrad" />
+  <radialGradient id="grad6" cx="0" cy="1" fx=".5" fy=".5" r=".5"
+                  xlink:href="#genericGrad" />
+
+  <radialGradient id="grad7" cx="1" cy="0" fx="0" fy="1" r=".5"
+                  xlink:href="#genericGrad" />
+  <radialGradient id="grad8" cx="1" cy="0" fx="1" fy="0" r=".5"
+                  xlink:href="#genericGrad" />
+  <radialGradient id="grad9" cx="1" cy="0" fx=".5" fy=".5" r=".5"
+                  xlink:href="#genericGrad" />
+
+  <radialGradient id="grad10" r="0" xlink:href="#genericGrad" />
+</defs>
+
+<circle cx="125" cy="145" r="20" style="fill:url(#grad1)"/>
+<circle cx="225" cy="145" r="20" style="fill:url(#grad2)"/>
+<circle cx="325" cy="145" r="20" style="fill:url(#grad3)"/>
+
+<g transform="translate(0 80)">
+  <circle cx="125" cy="145" r="20" style="fill:url(#grad4)"/>
+  <circle cx="225" cy="145" r="20" style="fill:url(#grad5)"/>
+  <circle cx="325" cy="145" r="20" style="fill:url(#grad6)"/>
+</g>
+
+<g transform="translate(0 160)">
+  <circle cx="125" cy="145" r="20" style="fill:url(#grad7)"/>
+  <circle cx="225" cy="145" r="20" style="fill:url(#grad8)"/>
+  <circle cx="325" cy="145" r="20" style="fill:url(#grad9)"/>
+</g>
+
+<g transform="translate(0 240)">
+  <circle cx="225" cy="145" r="20" style="fill:url(#grad10)"/>
+</g>
+
+    </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/rendering/opacity.png 
b/tests/data/svg/batik/tests/spec/rendering/opacity.png
new file mode 100644
index 0000000..83acef1
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/rendering/opacity.png differ
diff --git a/tests/data/svg/batik/tests/spec/rendering/opacity.svg 
b/tests/data/svg/batik/tests/spec/rendering/opacity.svg
new file mode 100644
index 0000000..efc7517
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/rendering/opacity.svg
@@ -0,0 +1,125 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Opacity test. Apply 'stroke-opacity' 'fill-opacity' and 'opacity'         -->
+<!--                                                                           -->
+<!-- @author Thierry Kormann sophia inria fr                                   -->
+<!-- @version $Id: opacity.svg 475477 2006-11-15 22:44:28Z cam $     -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Opacity: stroke-opacity, fill-opacity, opacity </title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+
+    <g id="testContent">
+
+  <text x="225" y="50" class="title">
+    Opacity : stroke-opacity, fill-opacity and opacity
+  </text>
+  <g class="legend">
+    <defs>
+       <circle id="elem" cx="0" cy="0" r="35" 
+             style="fill: yellow; stroke: black; stroke-width: 8;"/>
+       <rect id="bg" x="-45" y="-45" width="90" height="90" 
+             style="fill:orange"/>
+    </defs>
+    <g transform="translate(75 130)">
+      <use xlink:href="#bg"/>
+      <use xlink:href="#elem" 
+           style="stroke-opacity:1; fill-opacity:1"/>
+      <text x="0" y="60">opacity:1</text>
+      <text x="0" y="70">stroke-opacity:1</text>
+      <text x="0" y="80">fill-opacity:1</text>
+    </g>
+    <g transform="translate(175 130)">
+      <use xlink:href="#bg"/>
+      <use xlink:href="#elem"
+           style="stroke-opacity:1; fill-opacity:.5"/>
+      <text x="0" y="60">opacity:1</text>
+      <text x="0" y="70">stroke-opacity:1</text>
+      <text x="0" y="80">fill-opacity:0.5</text>
+    </g>
+    <g transform="translate(275 130)">
+      <use xlink:href="#bg"/>
+      <use xlink:href="#elem"
+           style="stroke-opacity:.5; fill-opacity:1"/>
+      <text x="0" y="60">opacity:1</text>
+      <text x="0" y="70">stroke-opacity:0.5</text>
+      <text x="0" y="80">fill-opacity:1</text>
+    </g>
+    <g transform="translate(375 130)">
+      <use xlink:href="#bg"/>
+      <use xlink:href="#elem"
+           style="stroke-opacity:.5; fill-opacity:.5"/>
+      <text x="0" y="60">opacity:1</text>
+      <text x="0" y="70">stroke-opacity:0.5</text>
+      <text x="0" y="80">fill-opacity:0.5</text>
+    </g>
+
+    <g transform="translate(75 330)" >
+      <use xlink:href="#bg"/>
+      <use xlink:href="#elem"
+           style="stroke-opacity:1; fill-opacity:1; opacity:.5;"/>
+      <text x="0" y="60">opacity:0.5</text>
+      <text x="0" y="70">stroke-opacity:1</text>
+      <text x="0" y="80">fill-opacity:1</text>
+    </g>
+    <g transform="translate(175 330)">
+      <use xlink:href="#bg"/>
+      <use xlink:href="#elem"
+           style="stroke-opacity:1; fill-opacity:.5; opacity:.5;"/>
+      <text x="0" y="60">opacity:0.5</text>
+      <text x="0" y="70">stroke-opacity:1</text>
+      <text x="0" y="80">fill-opacity:0.5</text>
+    </g>
+    <g transform="translate(275 330)">
+      <use xlink:href="#bg"/>
+      <use xlink:href="#elem"
+           style="stroke-opacity:.5; fill-opacity:1; opacity:.5;"/>
+      <text x="0" y="60">opacity:0.5</text>
+      <text x="0" y="70">stroke-opacity:0.5</text>
+      <text x="0" y="80">fill-opacity:1</text>
+    </g>
+    <g transform="translate(375 330)">
+      <use xlink:href="#bg"/>
+      <use xlink:href="#elem"
+           style="stroke-opacity:.5; fill-opacity:.5; opacity:.5;"/>
+      <text x="0" y="60">opacity:0.5</text>
+      <text x="0" y="70">stroke-opacity:0.5</text>
+      <text x="0" y="80">fill-opacity:0.5</text>
+    </g>
+
+  </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/rendering/opacity2.png 
b/tests/data/svg/batik/tests/spec/rendering/opacity2.png
new file mode 100644
index 0000000..d32c117
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/rendering/opacity2.png differ
diff --git a/tests/data/svg/batik/tests/spec/rendering/opacity2.svg 
b/tests/data/svg/batik/tests/spec/rendering/opacity2.svg
new file mode 100644
index 0000000..a27994b
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/rendering/opacity2.svg
@@ -0,0 +1,125 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Opacity2 test. Apply 'opacity' on group                                   -->
+<!--                                                                           -->
+<!-- @author Thierry Kormann sophia inria fr                                   -->
+<!-- @version $Id: opacity2.svg 475477 2006-11-15 22:44:28Z cam $     -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Opacity: opacity on group</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+
+    <g id="testContent">
+
+  <text x="225" y="50" class="title">
+    Opacity2 : opacity on group
+  </text>
+  <g class="legend">
+    <defs>
+     <g id="elem">
+       <circle cx="-35" cy="0" r="35" 
+             style="fill: #0000FF; stroke: #0000AA; stroke-width: 8;"/>
+       <circle cx="0" cy="0" r="35" 
+             style="fill: #FF0000; stroke: #AA0000; stroke-width: 8;"/>
+     </g>
+    </defs>
+    <g transform="translate(140 120)">
+       <rect x="-80" y="-45" width="125" height="90" 
+             style="fill-opacity:1; stroke-opacity:1; opacity:1; fill:#cecece"/>
+      <g style="opacity:1">
+        <use xlink:href="#elem" 
+             style="stroke-opacity:1; fill-opacity:1"/>
+      </g>
+      <text x="-20" y="60">opacity:1</text>
+      <text x="-20" y="70">stroke-opacity:1 fill-opacity:1</text>
+    </g>
+    <g transform="translate(340 120)">
+       <rect x="-80" y="-45" width="125" height="90" 
+             style="fill-opacity:1; stroke-opacity:1; opacity:1; fill:#cecece"/>
+      <g style="opacity:.5">
+        <use xlink:href="#elem" 
+             style="stroke-opacity:1; fill-opacity:1"/>
+      </g>
+      <text x="-20" y="60">opacity:0.5</text>
+      <text x="-20" y="70">stroke-opacity:1 fill-opacity:1</text>
+    </g>
+
+    <g transform="translate(140 250)">
+       <rect x="-80" y="-45" width="125" height="90" 
+             style="fill-opacity:1; stroke-opacity:1; opacity:1; fill:#cecece"/>
+      <g style="opacity:1">
+        <use xlink:href="#elem" 
+             style="stroke-opacity:.5; fill-opacity:1"/>
+      </g>
+      <text x="-20" y="60">opacity:1</text>
+      <text x="-20" y="70">stroke-opacity:0.5 fill-opacity:1</text>
+    </g>
+    <g transform="translate(340 250)">
+       <rect x="-80" y="-45" width="125" height="90" 
+             style="fill-opacity:1; stroke-opacity:1; opacity:1; fill:#cecece"/>
+      <g style="opacity:.5">
+        <use xlink:href="#elem" 
+             style="stroke-opacity:.5; fill-opacity:1"/>
+      </g>
+      <text x="-20" y="60">opacity:0.5</text>
+      <text x="-20" y="70">stroke-opacity:0.5 fill-opacity:1</text>
+    </g>
+
+    <g transform="translate(140 380)">
+       <rect x="-80" y="-45" width="125" height="90" 
+             style="fill-opacity:1; stroke-opacity:1; opacity:1; fill:#cecece"/>
+      <g style="opacity:1">
+        <use xlink:href="#elem" 
+             style="stroke-opacity:1; fill-opacity:.5"/>
+      </g>
+      <text x="-20" y="60">opacity:1</text>
+      <text x="-20" y="70">stroke-opacity:1 fill-opacity:0.5</text>
+    </g>
+    <g transform="translate(340 380)">
+       <rect x="-80" y="-45" width="125" height="90" 
+             style="fill-opacity:1; stroke-opacity:1; opacity:1; fill:#cecece"/>
+      <g style="opacity:.5">
+        <use xlink:href="#elem" 
+             style="stroke-opacity:1; fill-opacity:.5"/>
+      </g>
+      <text x="-20" y="60">opacity:0.5</text>
+      <text x="-20" y="70">stroke-opacity:1 fill-opacity:0.5</text>
+    </g>
+
+
+  </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/rendering/paintOpacity.png 
b/tests/data/svg/batik/tests/spec/rendering/paintOpacity.png
new file mode 100644
index 0000000..9405eec
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/rendering/paintOpacity.png differ
diff --git a/tests/data/svg/batik/tests/spec/rendering/paintOpacity.svg 
b/tests/data/svg/batik/tests/spec/rendering/paintOpacity.svg
new file mode 100644
index 0000000..f506b3e
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/rendering/paintOpacity.svg
@@ -0,0 +1,232 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   
+        http://www.apache.org/licenses/LICENSE-2.0
+   
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!-- ========================================================================= -->
+<!-- This test validates that the fill and stroke opacity values are taken     -->
+<!-- into account for all the types of Paint servers                           -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: paintOpacity.svg 475477 2006-11-15 22:44:28Z cam $   -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Paint Server Opacity Test</title>
+
+    <style type="text/css"><![CDATA[
+        .markedPath { fill:none; stroke:black; stroke-width:.5; }
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">Paint Server Opacity Test</text>
+
+        <defs>
+
+            <pattern id="transparencyPattern" viewBox="0 0 10 10" x="0" y="0" width="10" height="10"
+                     patternContentUnits="userSpaceOnUse" patternUnits="userSpaceOnUse">
+                <g fill="#eee" stroke="none">
+                    <rect x="0" y="0" width="5" height="5" />
+                    <rect x="5" y="5" width="5" height="5" />
+                </g>
+            </pattern>
+
+            <pattern id="testPattern" viewBox="0 0 20 20" x="0" y="0" width="20" height="20"
+                     patternContentUnits="userSpaceOnUse" patternUnits="userSpaceOnUse">
+                <g transform="scale(2, 2)">
+                <g fill="crimson" stroke="none">
+                    <rect x="0" y="0" width="5" height="5" />
+                    <rect x="5" y="5" width="5" height="5" />
+                </g>
+                <g fill="gold" stroke="none">
+                    <rect x="5" y="0" width="5" height="5" />
+                    <rect x="0" y="5" width="5" height="5" />
+                </g>
+                </g>
+            </pattern>
+
+            <radialGradient id="testRadialGradient" gradientUnits="userSpaceOnUse" cx="10" cy="10" r="40">
+                <stop stop-color="crimson" offset="0" />
+                <stop stop-color="gold" offset=".5" />
+                <stop stop-color="gold" stop-opacity=".5" offset="1" />
+            </radialGradient>
+
+            <linearGradient id="testLinearGradient" gradientUnits="userSpaceOnUse" x1="-25" y1="0" x2="25" 
y2="0">
+                <stop stop-color="crimson" offset="0" />
+                <stop stop-color="gold" offset=".5" />
+                <stop stop-color="gold" stop-opacity=".5" offset="1" />
+            </linearGradient>
+
+            <circle id="filledShape" cx="0" cy="0" r="25" />
+        </defs>
+
+        <g transform="translate(25, 60)">
+
+        <g id="grid" stroke="black" fill="none">
+            <rect x="40" y="20" width="360" height="380" fill="url(#transparencyPattern)"/>
+        
+            <g fill="rgb(240, 240, 240)" >
+            <rect x="0" y="20" width="20" height="190" />
+            <rect x="0" y="210" width="20" height="190" />
+
+            <rect x="20" y="20" width="20" height="63" />
+            <rect x="20" y="83" width="20" height="63" />
+            <rect x="20" y="146" width="20" height="64" />
+
+            <g transform="translate(0, 190)">
+                <rect x="20" y="20" width="20" height="63" />
+                <rect x="20" y="83" width="20" height="63" />
+                <rect x="20" y="146" width="20" height="64" />
+            </g>
+
+            <rect x="40" y="0" width="90" height="20" />
+            <rect x="130" y="0" width="90" height="20" />
+            <rect x="220" y="0" width="90" height="20" />
+            <rect x="310" y="0" width="90" height="20" />
+
+            </g>
+
+            <g class="label" text-anchor="middle" stroke="none" fill="black">
+                <text x="85" y="15">rgb</text>
+                <text x="175" y="15">radial grad</text>
+                <text x="265" y="15">linear grad</text>
+                <text x="355" y="15">pattern</text>
+
+                <text x="15" y="115" transform="rotate(-90, 15, 115)">fill</text>
+                <text x="15" y="305" transform="rotate(-90, 15, 305)">stroke</text>
+
+                <text x="35" y="51.5" transform="rotate(-90, 35, 51.5)">opaque</text>
+                <text x="35" y="51.5" transform="translate(0, 63) rotate(-90, 35, 51.5)">fill-opac.</text>
+                <text x="35" y="51.5" transform="translate(0, 126) rotate(-90, 35, 51.5)">combo</text>
+
+                <g transform="translate(0, 190)">
+                <text x="35" y="51.5" transform="rotate(-90, 35, 51.5)">opaque</text>
+                <text x="35" y="51.5" transform="translate(0, 63) rotate(-90, 35, 51.5)">fill-opac.</text>
+                <text x="35" y="51.5" transform="translate(0, 126) rotate(-90, 35, 51.5)">combo</text>
+                </g>
+            </g>
+
+            <line x1="130" y1="20" x2="130" y2="400" />
+            <line x1="130" y1="20" x2="130" y2="400" transform="translate(90, 0)"/>
+            <line x1="130" y1="20" x2="130" y2="400" transform="translate(180, 0)"/>
+            <line x1="130" y1="20" x2="130" y2="400" transform="translate(270, 0)"/>
+
+            <line x1="40" y1="83" x2="400" y2="83" />
+            <line x1="40" y1="83" x2="400" y2="83" transform="translate(0, 63)"/>
+            <line x1="40" y1="83" x2="400" y2="83" transform="translate(0, 127)"/>
+            <line x1="40" y1="83" x2="400" y2="83" transform="translate(0, 190)"/>
+            <line x1="40" y1="83" x2="400" y2="83" transform="translate(0, 253)"/>
+            <line x1="40" y1="83" x2="400" y2="83" transform="translate(0, 317)"/>
+        </g>
+
+        <!-- ==================================== -->
+        <!-- rgb colors                           -->
+        <!-- ==================================== -->
+
+        <!-- fill -->
+        <use xlink:href="#filledShape" x="85" y="51.5" fill="crimson"/>
+        <use xlink:href="#filledShape" x="85" y="51.5" fill="crimson" fill-opacity=".5" 
transform="translate(0, 63)" />
+        <use xlink:href="#filledShape" x="85" y="51.5" fill="crimson" fill-opacity=".5" opacity=".5" 
transform="translate(0, 126)"/>
+
+        <!-- stroke -->
+        <g stroke="gold" stroke-width="10" fill="none" transform="translate(0, 190)">
+        <use xlink:href="#filledShape" x="85" y="51.5" />
+        <use xlink:href="#filledShape" x="85" y="51.5" stroke-opacity=".5" transform="translate(0, 63)" />
+        <use xlink:href="#filledShape" x="85" y="51.5" stroke-opacity=".5" opacity=".5" 
transform="translate(0, 126)"/>
+        </g>
+
+        <!-- ==================================== -->
+        <!-- radial gradient                      -->
+        <!-- ==================================== -->
+        
+        <g transform="translate(90, 0)">
+
+        <!-- fill -->
+        <g fill="url(#testRadialGradient)">
+        <use xlink:href="#filledShape" x="85" y="51.5" />
+        <use xlink:href="#filledShape" x="85" y="51.5" fill-opacity=".5" transform="translate(0, 63)" />
+        <use xlink:href="#filledShape" x="85" y="51.5" fill-opacity=".5" opacity=".5" 
transform="translate(0, 126)"/>
+        </g>
+
+        <!-- stroke -->
+        <g stroke="url(#testRadialGradient)" stroke-width="10" fill="none" transform="translate(0, 190)">
+        <use xlink:href="#filledShape" x="85" y="51.5" />
+        <use xlink:href="#filledShape" x="85" y="51.5" stroke-opacity=".5" transform="translate(0, 63)" />
+        <use xlink:href="#filledShape" x="85" y="51.5" stroke-opacity=".5" opacity=".5" 
transform="translate(0, 126)"/>
+        </g>
+
+        </g>
+
+        <!-- ==================================== -->
+        <!-- linear gradient                      -->
+        <!-- ==================================== -->
+        
+        <g transform="translate(180, 0)">
+
+        <!-- fill -->
+        <g fill="url(#testLinearGradient)">
+        <use xlink:href="#filledShape" x="85" y="51.5" />
+        <use xlink:href="#filledShape" x="85" y="51.5" fill-opacity=".5" transform="translate(0, 63)" />
+        <use xlink:href="#filledShape" x="85" y="51.5" fill-opacity=".5" opacity=".5" 
transform="translate(0, 126)"/>
+        </g>
+
+        <!-- stroke -->
+        <g stroke="url(#testLinearGradient)" stroke-width="10" fill="none" transform="translate(0, 190)">
+        <use xlink:href="#filledShape" x="85" y="51.5" />
+        <use xlink:href="#filledShape" x="85" y="51.5" stroke-opacity=".5" transform="translate(0, 63)" />
+        <use xlink:href="#filledShape" x="85" y="51.5" stroke-opacity=".5" opacity=".5" 
transform="translate(0, 126)"/>
+        </g>
+
+        </g>
+
+        <!-- ==================================== -->
+        <!-- patterns                             -->
+        <!-- ==================================== -->
+        
+        <g transform="translate(270, 0)">
+
+        <!-- fill -->
+        <g fill="url(#testPattern)">
+        <use xlink:href="#filledShape" x="85" y="51.5" />
+        <use xlink:href="#filledShape" x="85" y="51.5" fill-opacity=".5" transform="translate(0, 63)" />
+        <use xlink:href="#filledShape" x="85" y="51.5" fill-opacity=".5" opacity=".5" 
transform="translate(0, 126)"/>
+        </g>
+
+        <!-- stroke -->
+        <g stroke="url(#testPattern)" stroke-width="10" fill="none" transform="translate(0, 190)">
+        <use xlink:href="#filledShape" x="85" y="51.5" />
+        <use xlink:href="#filledShape" x="85" y="51.5" stroke-opacity=".5" transform="translate(0, 63)" />
+        <use xlink:href="#filledShape" x="85" y="51.5" stroke-opacity=".5" opacity=".5" 
transform="translate(0, 126)"/>
+        </g>
+
+        </g>
+
+        </g>
+
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/shapes/emptyShape.png 
b/tests/data/svg/batik/tests/spec/shapes/emptyShape.png
new file mode 100644
index 0000000..6b4123b
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/shapes/emptyShape.png differ
diff --git a/tests/data/svg/batik/tests/spec/shapes/emptyShape.svg 
b/tests/data/svg/batik/tests/spec/shapes/emptyShape.svg
new file mode 100644
index 0000000..11f155d
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/shapes/emptyShape.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!--  Test 'visibility' property inheritance                                   -->
+<!--                                                                           -->
+<!-- @author tkormann apache org                                               -->
+<!-- @version $Id: emptyShape.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink";  
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+<title>Empty 'd', 'points' on &lt;path>, &lt;polyline> and &lt;polygon></title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+<g id="testContent">
+  <text x="225" y="30" class="title">
+Empty 'd', 'points' on &lt;path>, &lt;polyline> and &lt;polygon></text>
+
+
+<path d="" />
+<polyline points="" />
+<polygon points="" />
+
+</g>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/shapes/zero.png b/tests/data/svg/batik/tests/spec/shapes/zero.png
new file mode 100644
index 0000000..c22fd43
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/shapes/zero.png differ
diff --git a/tests/data/svg/batik/tests/spec/shapes/zero.svg b/tests/data/svg/batik/tests/spec/shapes/zero.svg
new file mode 100644
index 0000000..dccccf6
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/shapes/zero.svg
@@ -0,0 +1,93 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   
+        http://www.apache.org/licenses/LICENSE-2.0
+   
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!-- ========================================================================= -->
+<!--  Test 'visibility' property inheritance                                   -->
+<!--                                                                           -->
+<!-- @author tkormann apache org                                               -->
+<!-- @version $Id: zero.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink";  id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Test zero length on various shapes</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+<g id="testContent">
+  <text x="225" y="30" class="title">Test zero length on various shapes</text>
+  <text x="225" y="50" class="title">Value of zero disables rendering of the elements</text>
+
+<!-- dashboard -->
+<g style="stroke:black; fill:none">
+        <rect x="40" y="80" width="360" height="120" />
+        <rect x="40" y="200" width="360" height="120" />
+        <rect x="40" y="320" width="360" height="120" />
+</g>
+<g style="fill:rgb(240, 240, 240); stroke:black;">
+        <rect x="40" y="80" width="20" height="120" />
+        <rect x="40" y="200" width="20" height="120" />
+        <rect x="40" y="320" width="20" height="120" />
+        <g style="stroke:none; fill:black; font-size:12pt; font-family: Arial">
+                <text transform="translate(55, 170) rotate(-90)">&lt;rect></text>
+                <text transform="translate(55, 290) rotate(-90)">&lt;circle></text>
+                <text transform="translate(55, 410) rotate(-90)">&lt;ellipse></text>
+        </g>
+</g>
+
+<!-- ########### rect ############# -->
+<g style="stroke:none; fill:crimson">
+        <rect x="90" y="95" width="0" height="80" />
+        <rect x="190" y="95" width="80" height="0" />
+        <rect x="290" y="95" width="0" height="0" />
+</g>
+<g style="stroke:none; fill:black; font-size:12; font-family: Arial; text-anchor:middle">
+        <text x="130" y="194">width="0"</text>
+        <text x="230" y="194">height="0"</text>
+        <text x="330" y="194">width &amp; height="0"</text>
+</g>
+
+<!-- ########### circle ############# -->
+<g style="stroke:none; fill:crimson">
+        <circle cx="225" cy="255" r="0"/>
+</g>
+<g style="stroke:none; fill:black; font-size:12; font-family: Arial; text-anchor:middle">
+        <text x="225" y="314">r="0"</text>
+</g>
+
+<!-- ########### ellipse ############# -->
+<g style="stroke:none; fill:crimson">
+        <ellipse cx="130" cy="365" rx="0" ry="30" />
+        <ellipse cx="230" cy="365" rx="40" ry="0" />
+        <ellipse cx="330" cy="365" rx="0" ry="0" />
+</g>
+<g style="stroke:none; fill:black; font-size:12; font-family: Arial; text-anchor:middle">
+        <text x="130" y="415">rx="0"</text>
+        <text x="230" y="415">ry="0"</text>
+        <text x="330" y="415">rx &amp; ry="0"</text>
+</g>
+
+
+
+</g>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/alternateStylesheet.png 
b/tests/data/svg/batik/tests/spec/structure/alternateStylesheet.png
new file mode 100644
index 0000000..3ed7930
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/alternateStylesheet.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/dataProtocol.png 
b/tests/data/svg/batik/tests/spec/structure/dataProtocol.png
new file mode 100644
index 0000000..6261ae9
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/dataProtocol.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/dataProtocol.svg 
b/tests/data/svg/batik/tests/spec/structure/dataProtocol.svg
new file mode 100644
index 0000000..36c3e46
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/dataProtocol.svg
@@ -0,0 +1,607 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- feTile test                                                               -->
+<!--                                                                           -->
+<!-- @author vincent hardy eng sun com                                         -->
+<!-- @version $Id: dataProtocol.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Data Protocol</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent" class="legend" style="text-anchor:middle">
+        <text x="225" y="40" class="title">
+            dataProtocol test
+        </text>
+
+    <!-- ==================================== -->
+    <!-- Initially, was an encoded JPEG imag  -->
+    <!-- ==================================== -->
+    <text x="210" y="100">Initial JPEG, encoded as PNG, data protocol</text>
+    <rect x="148" y="108" width="131" height="134" fill="rgb(200, 100, 0)" />
+    <image x="150" y="110" width="127" height="130" 
xlink:href="data:image/png;base64,/9j/4AAQSkZJRgABAgEASABIAAD//gAmRmlsZSB3cml0dGVuIGJ5IEFkb2JlIFBo
+b3Rvc2hvcKggNS4y/+4ADkFkb2JlAGRAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEB
+AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMD
+AwEBAQEBAQEBAQEBAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD
+AwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAggB/AwERAAIRAQMRAf/dAAQAEP/EAaIA
+AAAGAgMBAAAAAAAAAAAAAAcIBgUECQMKAgEACwEAAAYDAQEBAAAAAAAAAAAABgUE
+AwcCCAEJAAoLEAACAQMEAQMDAgMDAwIGCXUBAgMEEQUSBiEHEyIACDEUQTIjFQlR
+QhZhJDMXUnGBGGKRJUOhsfAmNHIKGcHRNSfhUzaC8ZKiRFRzRUY3R2MoVVZXGrLC
+0uLyZIN0k4Rlo7PD0+MpOGbzdSo5OkhJSlhZWmdoaWp2d3h5eoWGh4iJipSVlpeY
+mZqkpaanqKmqtLW2t7i5usTFxsfIycrU1dbX2Nna5OXm5+jp6vT19vf4+foRAAIB
+AwIEBAMFBAQEBgYFbQECAxEEIRIFMQYAIhNBUQcyYRRxCEKBI5EVUqFiFjMJsSTB
+0UNy8BfhgjQlklMYY0TxorImNRlUNkVkJwpzg5NGdMLS4vJVZXVWN4SFo7PD0+Pz
+KRqUpLTE1OT0laW1xdXl9ShHV2Y4doaWprbG1ub2Z3eHl6e3x9fn90hYaHiImKi4
+yNjo+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A3+Pf
+uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r
+3Xvfuvde9+691737r3Xvfuvdf//Q3+Pfuvde9+691737r3XvfuvdMe4Ny4LauPly
+u4cpS4qhhSR2mqZLFhEhkkEUShpp2SNSxCKxCgk8An3G/uf7v+2nsxy8eafc/nKy
+2fZixVDMxMk8gFfCtoEDz3M1M+FbxySUzpoCejHbNo3LebkWu2WjyzedMBR6sxoq
+j5sQOqcO9f5z/T+3t65Lpj407T3n8o+8qdKiKPrro7aGb7Y3BSVaWWM7hi2gsuF2
+hjJSSVyNfXfaxaSZlQK3vDYfen9/veW5+l+7h7GNZcsOQF3rmPXCroSVMtttcDLM
+4X40aa5UkEeJbrQqZKtOSeVtlijuucN/Z5K5gtSoIxUappAagntISPB4P59ApUVv
+89v5HSVFRgOo+pviptLKUkb4yXvPv16HfmI1glqn+7/xm29vinmkZX1R0uQrqecG
+yzGJhwcQewH3qOc1gu/cn70W52c4kJaDZoodtg8PyRXt0S5rnjI7N6tgUO4ef/bb
+YTGuye2ljP2dzXeu5Yv6jxmZABj4UUHOOg1qv5T3813d4/iO8f5j3TuKyrtpajw/
+S/ZW6qeOEIhRf45le1ttV9UUcsoD0q2RVN+SqjC0+55s8Q8S89zOa57s01O+6XTE
+0FBxb+XWpffG+PZByns0cAOFWzhFP2L0jc5/Ji/meRxDI4D+ZB17kM3T+QUtMvX3
+bvW0TiSnmSQNuPbfau6MlSiZiqNopHsjM3JUKx1bfdej2usuz+5fMMV1TDPezvT9
+rdIZfd9ryiX3Ke1vD6C3jX/AOgwzfRf/AApD+LFRW5bYPaafIbBUr/cvTbb7dwPd
+zVOPhCNIldt75T7c2jvMSyxxgtBgqqorA+pIXkvqc7g5S99OU1Rtt51G8QLXUlxR
+nYeVGkBav2GtfPovk3r273osLvl/6GQ0oYqhQfsWgp+XWXqb/hR7290nvSPqv+Y/
+8Rdz7KytC0EeZ3f1ntjdOyd74GidkpqXNbo+Pvak0WbqsbVWaeavxWaKuisaSglD
+IgP9m94Z7a6j2nnrYpNu3HA1UIQk+mqo+ddX2Dotv+Ro5oWveXdxS6tc4qCwH5fs
+4faetlX40/LL45fMPr+Ls/41du7Q7a2f5YqXI1W3K2RMvtvJTQioTC7x2tkoaDdG
+y899uRIaHK0dHV+Mh/HpIYzTY7hZblAtzY3KSwnzU/4RxH59AG4tp7WQxXETJIPI
+/wCrPRh/azpjr3v3Xuve/de697917r//0d/j37r3Xvfuvde9+690Tv5lfNrpL4Td
+X5Psjt3dNDiYYNNJicXq+6yuazNSAMfhcPiKdxX5jMVzsBFSwDWwILFFIY4a/eI+
+9RP7e77bez3s1y9HzR94K/h1x2eomy2uFqBb3eZY2VooyDrhtVZZ7gD4oI3SYi7l
+vlj97ut3uNx9Nsyt3SHi1OIjB4082yAcUJx1V/tP4nfMH+ZnlR2b839wb7+LfxQy
+NXHkNlfEXY+aq9rd79nbebxtSzfIjf2Ienr+tNv5SmTUdr4Nocyq1B89XjKiJopQ
+b7Qfc18fmGH3h+8lzFLzj7yToC0l0AbSyzqEG32lBBaQJwCxxqWNXIVyWJvuXOEd
+hA+0csRrDZKWGpRlwfxGtSzED4iSR8x1dH0d8fukfjTsOg6x6C6s2T1JsTHN5otu
+7IwNFhaWrrnjSOoy+Ynp4xXZ/P1wjBqchXS1FdVP65pXYk+887WztbGFLezt0igU
+YVQAP5dR/NPNcSNLPKzyHzJr0MPtT011737r3Xvfuvde9+690CPfXxt6H+UOypuv
+fkB1XtDtPajmeSlotzY0S1+Eq6iIQy5Pa24KR6TcW0c0YRoFdi6ujrFS4WUAkeyz
+dtl2rfbVrLd7CK4tj5OK0+anip+akH59K7K/vdumFxY3LxTDzU0r8iOBHyII61Pf
+l1/JO+Un8vzsKp+aP8pbtTsOGs2ulVk891xSSx5nf9LgonesqcBV7fWjbA9/9eBL
+q+JyFDNmYBHE6JkagGohhbceTOY+QZn3nkm4lutnWpe1J1SovE+F/vxR/vsjVgUD
+HIH1rv21cyotjzBEkN8cLMBRGPlr/gP9IGnHhw6te/lH/wA6zrn+YXRP012ziMR0
+r8yNp4b7/cPXcdU8WzO0sbRl4shvPparytbVZOso6cIs2QwdVJNksUst1lraeOWq
+WR+T+dtt5ts0kgkVbsDuX5+dAcgjzU5HkSM9BXfeX7vZZ2SRSYa4P+Cv+Q/4Or0v
+Y16IOve/de697917r//S3+Pfuvde9+690V35cfKfrj4j9Nbx7b7Gz+PweJ2vg6zM
+TzVs8MeiKBGWFYYpWH3NdX1VqejgAZp6hrBSqSFcNvvcfeQ3X2g2zl3269rrJNx9
+/ua3MG1W2nxFtIq6Zt1u04C3tsiJX7Z5xpo0UVxpGXKHLCb7dNc7hMIdlhP6jsdI
+ZqVEan1Iy1PhX0LLWsL4C/Djsn5Gdn4P+Zj8+cLXHs6vM+a+Inxt3JDIcH8YthZY
+/c4ff258FWAiq+QO7qGVap5KqMT7dhlVNKZDUKI7+7B923ZvZLly53XdZn3L3M3m
+ZrzddyuO+5vLyYmSWWVzmmtmKJwQZpqOKcz7+L6drKxOnbo+xQMDSuAAPJaD8/s4
+3v8AvK7oIde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691q7/wA6T+TRk+wc
+g3z0+C0Vd178nurstT9o7g27sJHxmY3NndrVCZ2HszreLGoHpu0sZU0QqKzHwrp3
+FoMkS/xPUmRhnnXku7269l515PjK7gnfc26YE4XJkjA4TilSB/acQPExIPdg3+G7
+t05f3xgbY9sUrf6GTjQ5PGM8AT8Pn2/CdL+Sr/Ndov5i/TmX2V2qcTtn5g9GU1Dj
+e5dqUcUWMpN74WRlosN3Ls3FAhUwO4ZwIMpSwALiMveMpFTVNAZRvybzXa81bXFd
+ROPqAo1D1+dPtww8j8iOg9vuzTbPePC6nwq4P+T/ACj1HzB6u29i/oj697917r//
+09/j37r3TXm8xQbexGTzmUm8GOxNDU5CsltqZYKWJpXEaXBlmcLpRB6nchRyR7Df
+OPNuxchcp8x868zXgt+X9qsprq4kP4YoEaR9IqNTkLpRBl3KotSQOl22bdd7vuNl
+tdjHrvLiVY0HlqYgCp8gK1YnAAJOB1ruYXa2V/mjfzH66k3rRvX/ABE+AW5MDu3f
+mCqkiqNvdpfLOphgzPXXXFbHLGI81tfpnBGLMZSnIMM1caFZ0eGumRuc33J+Td79
+4ebudvvje5tn/wAiPmWcrtkLMXWx2mIlLW2iqAKaFBd1CmRgzuuqViZX59vLTlvb
+rPk3Z5P04lpI1AC7V7nP4lZzU6STpBAU0UdbDmY3JgtvxiTMZSkodS6kilk1VMqi
+4JhpIhJVTAEf2Eb3m/7qe/3sv7JWkd37re5e07IXTUkU86/UyrUjVDaR67qZQQQT
+FC4BwTXqLdu2Xdd3cpt1hJLQ0JAoo+1zRV/MjoK8n8g+u8XIyyyZ+ojW/wC/Tbfy
+BiYA/UfcJTy/7dR7xEuf71L7ncd3LbWXN+6XcSmgli225VHzxUTrDKAePdGpocgG
+oA9sfaHnG/RWRLRHP4WuI6/8ZLD+fSUT5f8AQUVWlFm96Has0sqwxSbmxGVxdCzM
+QNUmVNLNi6OJb8tPNEoHJNgfclch/wB4B91v3AuksbDn97G7dqKL61uLdD8zOUa3
+QZ4ySp68OjS99hPc+0s2v4NhW7tVFWNvLFIw/wCbeoSMf9IjdGHwubw25MVQ53bu
+XxmewmTgWqxuYwtfSZTFZCmYkLUUOQoZZ6SrgYqQHjdlJH195h7fuFhu1lbbltd9
+Dc7dMgaOWJ1kjkU8GR0JVlPkVJB6iK5tbmyuJbS8t5IrqNqMjqVdSOIZWAIPyIr0
+5+1nTHXvfuvde9+691737r3Xvfuvde9+691pe/zevjvvr+VL84en/wCbN8RsLLS7
+Mzm9J4e5Ou8U/wDDcBlcjmRNW9jbCrxTUskNLtnt/bEFXW0QeKpGMzlJPVRBPFRR
+xwDzDav7c85We/7eunl3dJtMi8EiuTUkeipcKCwH4ZFYinYBJW2TLzTsU+23LV3S
+zjqp83hGAfm0RoPmpHzPW3x0123sXvzqbrfuzrHMJn+ve1tlbc39s/LKFSSqwO6M
+VTZbHisp1kkNFkqeGpEVVTOfLS1KPFIA6MBPFvPHcwRXELVidQwPyIr/AMX1HEkb
+xSPE4o6kg/l0JXt7qnX/1N/j37r3Vd38xz5DYXojprK5HK5Olx1Li9sbu7Jzc1WX
++2GI6+x8NXiqSrEZ1LHlN41+OVb8OsEg98zv7yzmndtx5J9tfYPlwyHdOdt9hiuF
+j+I2VrJG7ocimuZ4pFOQfp3HU8+yWyoBzbzncBAm3WoiiLmi+Pc6lJ1U8oVlQ+YM
+qnoLPgB1xkPif8OOquuK+iNL312bQVPyA+RFdVBp6/Gdu91PHvLdGOy7zPKKrLbV
+pqyl27RhraMZhadnXldcUffS++Rbfc89uOVvu++ybQH3afa4Q8+lHj2i2KKqSvGQ
+Y3vp1FYInBWOOlzMjK8CzEG2cvvzRf3nNG86/wB1NMyxKSdU2k0oG4+GnBmHFqoD
+UNpErfvZm0dh082W3hnI0qpdUz/cT+evqXtcu5kcyEn+pPv5732/nP3N5h3HmHmD
+cr3d+Zb2UyXF1cyyTSyyNxaSWQszH7SaDAxTqaeXOUt55g022zWISzTFaaI0H8h+
+Q6Jjun+YF1bjWqI6ejFVAjGFZah0bXJ9dOkem5Xn6/T3KG1/d45iuhGzdjkVoB5d
+Shae0S26pJf8yokoOQgJ/n0WzfvyX6w7GpK2nnoI8cZIJCzKA4XyXAUrwdZv7kTY
+varmTl2aGWGYyUYfLh1LPK+1xcvjQd7M0NKEMPLh1WjVfM75AfAHsCLsro7cb5LY
+tXkY6zdvU24KmpqNgb6xQZWqqepx4d2wOfanFqbLUQjq6dwAxlgMsEvU77p3u5zR
+yddxWEF85tGI8a3YkxSHhUrwV6cJFo44ElaqYV96OSdn32B7mW3UTgHw5QAHXzpX
+zX1U1X7DQ9bbfwN+c3TH8wf4+be786armghnqZdub/2NkamCbc3V/YeMpqWbP7H3
+KkAjVqmiWsinpKpUSLI4+ogqo1VZQq9oNk3m137bbbcbQ9jqCV81NKlTw4eRpkUP
+WBW4WE223ctpOO5SaH1Hr/q4dHO9m3SLr3v3Xuve/de697917r3v3Xuiy/Mn45YH
+5Z/GPuPoDPw0jjsDZuQosBVVoP2+J3ljwmX2XmZWVHlWmxu6KClknVLNLTCSK4Dn
+2F+dOXE5s5X3nYiwWaaE+Ex/BMnfC/2LIqk04rUefRxsG6Ns272O4gVjjcax/FG3
+bIv5oSB6Gh8uqGv+Ey3ee4afp75IfBHfrVtNuP4ldpNn9i4/KI1PU0vVfcNdn8pJ
+g6amklkcptjsvBZySewURDLQJb8kGezfMr8wcqQLcYvYDokU8VcEq6H+krg6vQt0
+e89bSNs3qQx5gkGpT5MpyrD5FSKfZ1s/+5b6BXX/1d/j37r3WvD/ADIavIdx/JiL
+qlzj6zrvbG8/jXs3uPFV48tJXdYDK1feXZeEl8STPSz7v2hDFjVkKNpaaIlXACnk
+R95nnDlu2++xyfuvN3jPs/KPLst2I42oxeCB76QoM1l8KckAAs2hQAcdZb8g7Xcf
+6yI22wiVtx3zdmVCV1AU0wqTkYVk+waiejbdg9003Xm0K7c2frqet3luE1GcyAjl
+WWNK3IXmSOPn00lHCUihjHEcaKo4AHvhVzPuHNnv17r82c/8yytJum77jLcTMQQB
+rc6YowSSsUS0jiStEjVEGFHQ92DkJd93aOxtIWh5VsFEKEihKR4JPq7tVnP4mJPE
+9ap38xT+YrkNqSZGeTIPWZGskngx9ACshkdg6nSHLeJUDfUWK/UH30p+7b92yHfT
+boIAlsgBd+FB/lr/AD6GfO/O23ck7Ym27TEqRqNKqAKsfU/P59a82R+YXyX7CzlT
+Pt2sy1U0eqrOLweKrMtJT0wkVFkmSmjmlWIM6rqIC6iB9T76Y7P93/292+0W1/dB
+mlC5bz+2g6xmvvczme5nM31oRK4H/F9Gw+LPzU31uDdEWzd8SStVFjEZbywFnjfx
+sk8DWKTwyXBUjg39wl7v+w2xbRtcu87HHpReKkAkfYfTqQOR/cfcb67Sw3B6seBH
+n1Zh2/BJvDYtbHVa5y9CxpEIbhvESDqYE/Q3494rcmSLs2/27xUWkncflXqZN+U3
++2yh8krjoDf5Bnza3H8L/wCaHhum87nKik6W+WW48f0vvvBzzt/DaffmVnqYOl94
+wU10iTMUO96+PDNM7KkeMztYzBmSLT2F9qN9pZbMwk/xW5jVD6avwn7a4+wnrBrn
+Tbv8YvwV/WiYkfZ5j9mfyHX0xPeQfUZde9+691inngpYZaipmip6eBGlmnnkSKGG
+NBqeSWWQqkaKBckkAD2xdXVrY2813e3McNpGpZ3dgiKo4lmYgKB5kkAdXiilnkSG
+GNnlY0CqCSSeAAGST6Dppw+5dubiNWNv7gwmdNA8cdcMPlaDJmjkmV2hSr+ynn+3
+eVY2Kh7Fgpt9PaTbd52jeYnn2fdba7hU0LQypKoJ4AlGYA/b0/d2N9YOsd9ZywyE
+YEiMhP2BgD09+zLpL1737r3Wpj0LS0/xZ/4Uz9mdfYtaimw/yx6o7fp6qH1RYqrz
+Vbh9t/JnFmihciI1OGo8BlqdBHfxxyTKoC3Ax19uWk2X3X90eWS6i1+v8eJRjF5C
+l45A9A7svoCCB1KPNQXcOTeT93Cky/TeG5+cDtAo+0qoP5g9bZ3vIrqLuv/W3+Pf
+uvdanvcnyAx+xP5lnzCxmfjrskKzdG0sXTR1Ne8dDTxUnWOyKaI1tC6yJXRR0aeO
+mJI8UTekDi3B77/3J26b57p8yblt03hz9qM9GMuhraKJljcMNIaOsbKQymNqUBCk
+Z7exsVpf8lcv2VzcmNYmd10hfiMjmucgg91RnVx6L/3539W7vrKunjqiYFD+FYHt
+GIxc2UHUoAXgC3HvEvkD2+h2iGGR4u/FajNep3u7u02+2+g29aRAZPmx8yT69ann
+zii3JvDvnEYSSXQuWq6PEYt6wyx0EVZlK+GkilmMUczpGHmBcqjMEBsCePfYn7t9
+pYwcmCO1C/UtINXr6Cvy6wv91Z7iTfdUtfCCmnX1Qfg38HuifgF0FtDojo3aeIxF
+NiMRil3tvOPF0NLu3tPeFNSePKb33xlqeFKvMZfI1csrQpK7xUFM60tMsdPGka5+
+7dt1ttltHbWyAAAVNMsfMk+Z/wAHAY6xrurqW7laWVqk8B5Aeg6qk/nOfywum+5q
+7rf5b7C2ZhNqd+7a3tjNr79zuBoKTE/6Utk7igqYkn3nHRUYOc3ZtXKUVN9hkZWW
+oFBNUU8zzIlItPiT99febLkz2dv+b5CsZS6ihc0+MShwvDiwcLk/hLVqQvU0ewlp
+JvPO8O0M1YzA8gqcL4ZUnj5FSceoHz6p2+TXUr9YbexNHVRzRA41IxEW0iR/F63+
+ga5t74x+1vNo5pv7qeNgT4hNfQVx1nRzFa2kFhFJay64aaag4qOPWp33Jns1118j
+P76bdkbH57ae6cDu/AVJaS9LmMDkqfL4yp1QSwzAwV1GjXV0fjgg8++zHtRdFuTd
+llR6yIOPzBFOsHOdIdO/X6Mva3+Xr7LOEy1Ln8NiM7QiUUWaxlBlqMTosc4pclSR
+VlOJo1eRUlEMw1AMwB4ufeZCsGVWHAivUFEUJB4jpz97611Xx8g+2Nh5DfW6uvN/
+bnx+C2/s+jxvnx+Sr46Gjq6vI4ajzkmUrFkZPN4KbIpHEHuiaCyW1kn5yv70b3a9
+2+cffm49ndjlvI/b/l+Oz020IYJdXlxbQ3bXM6gAysi3CQQh9SRrG0kQUzSM+V/t
+ZyjvWy8pbNzpsNj4u5XzynxQAWjjjmeHw1JPaGaNmcihOoBvhAHz6vmX/Mh3z0H/
+ADDW7Z+GfZFVh/8ARBu5UpMliq6sG198Y2lr6afMbM3VjqKqpYdy7Iz60ggrqORt
+EqWZCkqRyJnv9ynkfmL2/wDbXYt932F7fmG6iVijVDBDQhXHmGxVT/hp0n95OY4+
+aN0FhIVdYkUSEZHi6Rq0n1BrkdfTp643lB2L15sPsGloZcZTb72ZtfeVPjZ5kqJ8
+fBufB0ObhoZqiNI455aSOuEbOqqGK3AANvfTqKQSxRSgUDKD+0V6xaddDuleBI/Z
+0s/bnVetX35f0Axv/Cgj+XzuCgBoq6v3lm8XVVtIzU9RU01T8XezqKrp55oSkksV
+Vj2MEisSJIToa68e8U9uuWH3sebbRTRf3FZOQPMkOtT6mgp9mOHUy3UQPsvskxFT
++8bhfyGk0/bn7etoL3lZ1DXX/9ff49+691oKfzN96VHXn83L5VYGpk/dqM51dn6V
+tEkUdTQbj6W65yULReQDyinlqJKd2W6+WFwPp75kfes5MkvebN/vXSsUnhsD/wA2
+Y+H2cPtHWW/s1vyQbJtturd6agR/t26Cer3SK+oklZiPKoLJq5Gocj/AEH3hRDtH
+gRqoHDz6n573xXJPn0EO5fiThPkHkY5UEH8T8mtfHOy1kJVlMUtPMNMqTI4BUqbg
+jj2NNo95dz9s4axs4gXzpivz6Ib7kSz5sko6qXPl59bxvw/+XeW3f1LtHC974vNY
+7tfbuCxeI3NuKjxUtfhd8VdBSQ0j7rp/4bEXxeRzTRGorKRoUghnkbwuUIVMpeTP
+70H2Ci2dIPdK+vNp36EBWeO2luoLimNafTq8kbmlXjeMIDTRI9aLjhz793zmDly7
+Nxs97a3G2SE0VpVjliPHSwchWUcFZWJP4lU5Is9qbloOw4qGgkgem2nhqxczM2QU
+QS5Kup4Zo4JZoWJ8FDSRzuyq/qdyGIUqB75i/f4+/wBwfeZG1+2PtLt93be11ldC
+4lurhDFcbhdKrxx6YQxMVrCsjlFkPiSyMJHSLw0U05D2S65PkurpJQ+/3MZhAj7h
+GjEFgD+J3KgEjAAIBOo9asv8yntrbu7+yJcDtyWN6DDs9KGhZGid4zpkcEC2m4sP
+x7K/u18obhs/Lq31+pE0ormtaeXWVumfbOXNp2u9k1X2nXJ8i2aH5gdahvzF23UY
+/sNsz45DDkEYSysllEnkJjubAC6fT32P9kd0jueWvodQ1xHAr5Uz1i57hWbxbr9T
+pOlx19Xr+XX3bjvkb8EfiN3TjshT5KTfPQHWdVn5qaeSpjpt64nbFBt/f+JaeZ5J
+pZ8FvfE5CilLsXMtO2o3v7zk2q4F3ttjcA11RLX7QKMPyII6x5vIjDdXERHBz+yu
+P5dHN9mHSbrWl/np/wAqn5a/LQR9z/B7duMn37W4Wk292f01ndy0ezZN8UmLpxRY
+bcWxt15aaj27R7khoFjoqyiy1XQUU9LBHLFUxzRtFU4988fd/wCUOZ+eG9xhtMUv
+MMiRrKHC0kaFRHHJUj4xGqRmpppRKUINZN5e9y982jl4crfWum2KzlCpNVDksy0H
+4SxZhTNWP5a8vwf/AOEuPzu7P7w23L82do4n48dD4XL0mY39OvZ3XO/uwd94immW
+oqdq7Hpert172oMXkc6w+2myWUqqNMfBJJURR1cscdNKLNs5L3B5okvYlhs1pUBl
+JIH4VCkgelTSgznh0S3e/WwR2t3Mk5+RAr6moFf8vX0ZMTisbgcVjMHhqGmxmHw2
+PosVisbRxLBR4/G46mjo6GhpIUASGmpKWFI41HCqoA9yuqhVCqKKBQdA0kkkk5PT
+h731rrVM753xP2p/wos+DOx8HJT1GM2zujundVTWxIZpMdD1d8b9+bYy9NW+Ekwx
+Ve56Orp4Xay+SZBz7wr9styh5z+9F71czWc2uy26a22lCPhra21bjPAlbkSofTAP
+U9c2W77H7Rch7PPHpuLlJb1q8aTS/pfkYSh/b1tZ+81OoF6//9Df49+691oW/wDC
+n/YeS6c+fPQvfFHEaXbXfXSEe3qiskVgtRv3pzc1XRZsRVCqqBE2dvTbq+M3ZWVm
+uQ4C43e+fKke6+HeeGSXg0/mhNf5MvUre3e9NZa7fUBpkr/vXD+YPVbuxuwRncRR
+VTVEcjtDHcq7PI1lFyzH8f0984t+5cO33s8IjIAY+VB1lPt26fUwRvrBNOh62T2f
+kto5SmyePqXjenlSX0EXOgghbn+yT7j/AH3lW23i1ltriIEMKZ6Eu3bxLYzJLG9K
+Hq2jpv8AmqNsnEQ0GfwsVZIkYV5Up7u5UBVBdbH/AFz7xK5w+6kN5vXuLC60qTgE
+4HSneoeVuaGWfdRPFcjiYzgn/SnHSa72/mu7x3/hqrb20KP+AUNYjwzzQgxzyRMC
+CrNwQDf+v09nPI33Vdr2O7hvt4n8eRDUKeAPRft1lyry9IbjabN5b0fDJLkr81Xg
+D8+qjdxbtyG4cjU5TJ1T1FVUu8jO7lramLEAkk2595bbbs1tt1tFa2sQWJRTHSe6
+vpbqV5pnJcnonvyG63o9/wCBmVYmesQ+SJ1JLB1HBBP00ge5n9tuZ5+W9yRi4EBw
+R8ugHzXtEe7WrCn6nV/v/CYP+YPH1XNm/wCWx3tnDjMfndx5benxY3FmJhDihnsx
+IavfXTBqpplgoKvP5ENncDDoCVmQqMpCZTU1FDBN0H9tee9s3ONdpe5VZXNYgTxJ
+4oPmTlR5mo4kDrGTmvly7tGN6sRKKKPQeQ4Mfs4H5U8q9bt3uZugH1737r3Xvfuv
+de9+690AHyN7rx3SfXuQy6VNId25anrKDZuOqWQpJkkpy9Rmq6NjZMFtunb7uskf
+TGVVYtQkmjBxx+8/7/bN93/22v8AfpJkk5xvQ1vtdr8Tz3TCgcpxMNvqEkpNFPZF
+UPLGDJftZ7fXXuBzJFaurJsFtSW8l4BIgfgDf78mIKRjiO56aUYjUy/kgVUvzD/n
+JfLr5WU9RV5rrv419LP1RtHMyGSQ1e7Oxd1QY3HZqqqpPIs9RmsFs3dMknIeZpEk
+1WUhgL9zrkDceTvb/b5d+Z35kvVe9vHclnNzeN4h1sckha1rmpPQh96eY4N75gnW
+yCrt8JEMKqKKI4RpAVeAFaYGMY63TPeZHUJ9f//R3+PfuvdUGf8ACjn4T5H5efy6
+937p2RiHynbXxZyrd97OhpEdsnlNq4PGVdH2vtujVBJJOanZE0uVip40aarrsLSw
+x+p7EL83bZ+8dol0pWWLvA9RTuH7M/MgdG+yXf0t6lWoj4/PyP7cfn189v469usB
+HhcjVkTJpWNXf6/gFAfwfeDHubyYKtf20P6Z406yI5S34kC3lk7h0fyg3IssaOso
+IIFiDce8d7jbGRmUp1KEV2GAIbHT7Hm9Q/WP9v7L2sqfh6VLc/PrKcvf+0P9v/xv
+3X6QD8PWzOPXqNJlL/2vx/W//G/bi21Pw9Uab59NVRXRyf5yzLzccG4PBHIJtb2q
+jgZfh49MtKDx4dNlJsPFZ6vp67FSS4/N0k8FZQ1dBK9LVUddTSrPTVtJWQvHPS1V
+NNGrpIjK6OoIII9mCc0brseiRZmCKag1IIpwp0mO0We46kKDURw62yfgB/OV3Ng9
+tYLqv5sUGazEmGo6PF4bv/BY+bLZLI0dNGIo37P2/Rq1fX5Kngj/AHMtjY56isOk
+zUjTGWpkyY9u/vkbFbrDtHuMXCiireRKXIH/AC8RLV2p/vyFXdsViJq5ibmj2J3G
+UyX3Kukk5MDnSK/8Kc9o/wBK5UDycCijYE2H390l2fQwZDYHa2wt0w1EayLDjNzY
+psjErx+VVrMRNUxZWgl8R1aJ4Y3C8ke8t+XvdL235rhWbl3nrarsH8KXMXiLQVIe
+IsJEIGSHVSBxHUJ7nyfzVszmPdOXbyE+rRPpPzVwCrD5qSOlxX7z2fiqZ6zKbr21
+jaSM2eqr87i6OmQ6Wazz1FVHEp0oTyfoD7N9x505O2e1a93fmzbLWyXjJNdQRIME
+5d3VRgE8eAPSK12Hfb6YW9lst3NOeCpDI7H8lUnzHl59Fw378vOvcNHUYzrot2du
+dg8dMmCZxtWklNgtTkt0GM0NRSLctpoPu3YrpJjDaxhJ76f3insb7Wbfe2fJ26Jz
+RzgFKxxWjf4mj+TTXtPDdPMC18dmI0kxBvEEzcpfd+5t3V4r7m0DZdiwWM1PqXHm
+sdtXWrHhWbwgK1GsjSdQj+eb/M0rOvNu7j6b29vKl3H8iO0MS2H3dkMNKBjuqNhV
+CsJNv4aFJZVxlXkI5GVU1GUh3llZpHZjg57D8r+5P3sfdZvvB+9Ujvy7ZSD6OAqU
+gYxkmKG3iJIS2hJLHJMkhZ5GeRndpl5u3vZPb7lWHkzk62+nSQE0JrM2oUa4uGoK
+yOMIKAKtAqqgVRdt/wAJxPhJkPiB/Lp2fufeuHfF9sfKTKr33vCGrV1yeL2rnMZS
+UfVG3KwSCOSFqbZEMWVlp5EWakr81VQyepLDt5ynt37v2mNnSk03eR6CnaP95zTy
+JI6w03q6+pvXCtVE7R9vmf24/Lq/X2J+inr/0t/j37r3XCWKKeKSGaNJoZkeKWKV
+FkilikUpJHJG4KujqSCCCCD79xwevdfLY/nl/wAszcn8s35gZHdPXGEqaX4vd55j
+M706Oy1FE38L2jVzTrX7r6ZrZEUCiq9jVlb/ALilkLGqwMtK4klnirBFB/OPLUUE
+s0DxV26epT0Hqv8AtfL1WnnXqQdi3V5ESRXpdR0DfP5/n5/P8uia9TdxQZ2hhpqu
+o01kaqkkcjrquOLj6H3ibzjyTJt1xJLDHWAmoI6mnYt/W6iVHf8AUHRkqTPh1Vlk
+BBAsQeD/AMU9xhNtxUkFc9C5LqorXp1TM3H6/wDbH/kXtG1jTy6fFx8+uZyosfV/
+vI/4r70LP5db8evUaTJX/tf7z/X26tr8uqGb59YqfcFTj5RNTTMjqQeGI/Sbg8Ee
+7SbbFcpolSo60l28R1I1D0ajqr5SU+1mhp90Ui5amEh1+ZEASIAAqpsdTG3HuKOb
+fah92DybXJ4UlMUPE9DPZecxZFVu01pXz9OrI+tPmD8YquPzZuhGIqRDEWZkjJYi
+wVeGBAUE+8ZuZ/ZH3JjfRZTeNFU4z1KVhz9y5JGCNMUtOJFeh8/2er4b7RpmyH3a
+Vk8QDlYoIzyvJDMWPHsCL93v3b3aVbc25VDjJ6Z3DnbbgjmPmBEQjOlTXqs75pfz
+6v4PtrL9ffF/b1NhcxkoJqB93VIR5sbFIrRyVFJCgCrUWPpJ+h95VeyH3A0utys+
+YPc29MtjGwbwFwHIyAxPl69QPzj7nbbZh49pMl3uZwJJTVU+YXzPpXolP8kj+XFv
+v+ap80z2P3RFldx/HrqDcGL7E+Qm69wNUVMG/wDLmsOQ2z07TVUyyffVu+qykJyi
+K0Yo9vwVTeWKololm7A8h8n7dbRWW1bXYR2+wWaKAiKFQAfCgA/i8/lU1qR1jBzF
+vdzI093dXDSbhMT3E1Pzb7B5fOnl19RWKKKCKOGGNIYYUSKKKJFjiiijUJHHHGgC
+oiKAAAAAB7nfhgdR31z9+691/9Pf49+691737r3RVPml8Nukvnn8et6/G/vrAtld
+nbsiirMXmaBaWLdOwt4Y6OoG3t+7JydVTVa4jdOAlqZBHJoeKopZp6SoSakqaiGR
+FuFhb7layWlytY24HzU+TD0I/wA4OCR0/bXMtpMs0R7h+wj0Py6+V3/MH/l7fI7+
+Vx8hKzq7tjGz1O3snVZjJdQds42keLZ/bmycfkmpafN4xo6itjxO4KWCSD+L4Sad
+6zEzzoGMtPNTVNRBvMXLjW7SWG4RaoWrpamGHqPQ+o4j7KEyHte6iQLc2r0cUqPQ
++h+XofPoNeve7KeuSGiykop6qyqRI1lY/S6Ne3P+PuAuZOQ5bdnntE1Q/L/L1JW0
+8xpKFjmaj9GModx09XGskE6SoQCCrA2/1/z7jSfbJImKyRkN0LI7tXAKuCOndctc
+fq/3n2iNlTy6fE/z67bJgj9X+8j/AIr78LSnl1vxuosmRuL6v959ura08uqGb59N
+01fe/q9qkt/l0y0vSfyWcpqCJ5qqqSnjVSxLSaSQAfoLg/j/AFv8fZja2Etw6pFE
+WY/LpLNcpEpZ3oOitdhdxSVSyY3BSm3rR6gM1hc2uGv6m/1uPctct8kLEUutxTPE
+L0Ct25hLhobVvtPQ7/y6P5cnyF/mad+UPU3T2LqKXbuLqsRlO4u3cpSvNtPqfZmQ
+yS0tTnctJJUUUeY3DVwR1BxGEhnSsy08DhDFTw1NTTzHs+zT7nOlraR6YVpqanai
++vzPoOJ+ypAEvr+O0jaadqua0HmT/q4ny6+qn8Lfht0l8DPj1sr439C4FsVs7acU
+tZlMzXrSy7p37vDIx043Dv3e2TpaakXL7pz8tNGJJNCRU9LDBSU6Q0lNTwxzVt9h
+b7bax2lstI14nzY+bH1J/wAwGAB0Abm5lu5mmlPcf2Aeg+XRq/a3pjr3v3Xuv//U
+3+Pfuvde9+691737r3Raflj8Qvj583Onc90Z8kevcZv7YubH3FKZi9FuHamciRlo
+N1bL3HS6MptncuNZj46incCWMvBOk1NLNDIkvbG13GBra7iDRn9oPqD5H/ijjp+3
+uJrWQSwvRx/P5EeY6+d9/M0/4Tj/AC8+EmS3B2P0HjM/8qPjZDVVldR7i2Vh5q7t
+/r7EKGqo4Oy+vMPDLW19PjaYOsuewcVTjXjp2qauHFCWOn9xXvHKd7Ya5LdTPZ+o
+FWA/pL5/aKjzOnh0MLHere40rIfDn+fA/Yf8h/n1QdguxNzbecRpUvKkRKGGcsHQ
+qbMpJ9QZbWsfp7jPceV9r3HUXh0yHzH+boW2m8XlrQLJVfn0MOK7/VUC5GilDcAs
+vr/1zdSCST/X2Cbz25Ykm1uBT546EEHNQAAljNelhD3xtl0Bf7iNrC4Jt/r29Psl
+k9vt2U9ukjpevM9kRmoPWKp7521EhMSVMzWNlXkD62v6eR/h7tF7e7q5o5RR1p+Z
+7IDFSekPme/Z5VaPFULJdbLJIdNmve/JZx/sPZ/Ze3SKQ15cA54DotuOaSQRBF5d
+AznN5bh3JKRWVczLK9lpoS1mLkAJYXZyT9B+fY627Ytu2xVFvANY8zx6Dt1uV3dk
+mWQ6fTrYE/lj/wDCcb5c/NjJbf7F78xO4Piv8aZaimrKrP7xxEmO7f7AxLJ9yYes
++vczTLWUFLkITGI87nIqXHLFULUUkWT8ckHuQtn5UvtwKy3KmG09SO5h/RU/4Tjz
+FeHQXvt5t7YMkREk/wAuA+0/5B/Lr6IHxO+IXx8+EfTuB6M+N3XuM2DsXCD7iqMJ
+et3DuvOSoq1+6t6bjqteU3NuXJMo8lRUORFGEggSGmihhjlOysbXboFtrSILGP2k
++pPmf+KGOghcXE11IZZnq5/l8gPIdGW9q+mOve/de697917r/9Xf49+691737r3X
+vfuvde9+691737r3VVnzJ/ks/wAub5yVeW3J3B8fsHt/szMeeWr7g6jnbrHsepyF
+QHD5jOV+3okwO+MsA1lm3FjsuQqqttKqAS3/AC/tW4lnntQJj+Je1vtNME/6YHpf
+bbleWoCxzEoPI5H+x+VOte3uz/hHVtepq6mu+OXzUz+GoPIRR7W7s6vx25qsREOV
+ep39sXP7ShMkZCqVXbYD6i2pdIVgvcchoSTabgQPR1r/AMaBH/HejeLmNqUmtgT6
+qafyNf8AD0Q/Jf8ACQr+YlFWSJh++fhbXUAEfiqclvjvLE1jsUUyiShpfj9mYYgk
+lwpFQ+pQCQpNgWnkbda9tzbkfa4/58PSscw2dMxS1+xf+guvY3/hIV/MSlrI0zHf
+PwtoaAiTy1ON3x3llqxGCMYhHQ1Xx+w0MoeSwYmoTSpJAYix8ORt1r3XNuB9rn/n
+wdePMNnTEUtfsX/oLo+HSf8Awjq2vTVdNXfI35qZ/M0HkArNrdJ9X47bNWYgELPT
+b+31n92wiSQllCttshNIbU2oqplb8hoCDd7gSPRFp/xok/8AHekkvMbUpDbAH1Y1
+/kKf4ethL4bfyWf5c3wbq8TuTp/4/YPcHZmH8EtJ3B25O3Z3Y9NkKcIEzGDr9wxP
+gdj5YhbNNt3HYglWZbaWYEUWHL+1bcVeC1BmH4m7m+0VwD/pQOii53K8ugVkmIQ+
+QwP9n869Wp+zrpB1737r3Xvfuvde9+691737r3X/1t/j37r3Xvfuvde9+691737r
+3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691
+737r3X//19/j37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173
+7r3Xvfuvde9+691737r3Xvfuvde9+691737r3X//2e69
+"/>
+
+    <!-- ==================================== -->
+    <!-- Initially  was a PNG image           -->
+    <!-- ==================================== -->
+    <text x="210" y="300">Initial PNG, encoded with data protocol</text>
+    <rect x="148" y="308" width="131" height="134" fill="rgb(200, 100, 0)" />
+    <image x="150" y="310" width="127" height="130" 
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH8AAACCCAYAAABvsRfUAAAABGdBTUEAAFjH/Efg
+AgAAACBjSFJNAAB6JQAAgIMAAPn/AACA5gAAdS4AAOpfAAA6lwAAF29p5MQrAAAy
+PElEQVR4nGL4//8/wygemRgggAbcAaN44DBAAA24A0bxwGGAABpwB4zigcMAATTg
+DhjFA4cBAmjAHTCKBw4DBNCAO2AUDxwGCKABd8AoHjgMEEAD7gBa4x/P9jt8f7Lf
+4f3ZvsLHB+oa7+6pa7y9u67x5s66xhs76hqvba9rvLKtrvHS1rrG85vrGk+ur2s8
+saWv8P6V/Q53L+93GGj30xIDBNCAO4Bq+Pd7gX/P1wf8u1rX+Gu37aFPa2UfvVvA
+8P/VLIb/L2YC6dmM/x9OZvx/vYfx/8VOxv/n2hn/n2lj/H+yhfH/8SbG/4fqGf/v
+rmL8v66I4f+cNIb/05IY/vdEM/yvDmD43xAn+6gzz/bQmjl1jacPrg/4+vm9wID7
+lwoYIIAG3AEU4TfrA/7fyJv4/6jupX/bGf7/2874//9B5v//DzD//7CK6f/5Xob/
+WyoY/i/NY/g/O4Px/5Qkxv8T4xn/98Yy/u+JAdIxUBrI745m/N8ewfi/LYLhf1s4
+w//uKAagWob/kxMY/vcB5euCGP6X+jD8z3Vn+B9ry/A/P0L30syuvIlH9gLdMNDh
+QCYGCKABdwDJ+DOwKL4Xt/D/ad5P/08DI/sS8/9fR5n/X5rD+H9RLeP/qVXM/6eW
+M/9vi2f6n+LE8N/TgOG/tRrDfwMFhv86sqhYF4r15SEYpMZcheG/gxZEX5gFMJI9
+Gf5XBTD+L/KCRH4tMBFU+jP8z3Jl+B9vx/A/2Izhv58576em0riFZ08MrWoCIIAG
+3AFE4b/AYvZtX+H/m7KP/t8CRvhjlv+PDzH/X9fP9H9qM8v/CQXM/zNcGP5bqCIi
+1lyT91NcsO2hqoK4hVN66xoXzu4rPHVsvwMxGKQWpCcn0XdTSrjtIZC5lkDsrM3w
+P8qa4X+eByRRgHChFyQReBsy/HcCyvvayD5aBNT/6ePgrxoAAmjAHUAw0t/VNf5/
+BMzlz5n//7zG8v/IUmCEd7P8r0xm/u+ii4hsUESDImzvjvUBTx/fV6C2W25dO2+w
+cdW8xLriuIWB9rKPQKUDKNfnuEMSQzawJEgDljQ+RpCEYq3F+wnknsGcCAACaMAd
+gBX/AwbYR2CkPwdG+jtgLj/H8n/dHOb//SXM4JwHy9mgXA2K7IEI4OdP7iusXthX
+mBygewlURSTYA0sCYCLIdIG0CTz0Gf6bKAFLI83BmwgAAmjAHYCBf8xL/P8WGOkf
+Wf4/ucTyf/08YC5PReRyUA5fv3Je4mAKzBdP7yvM6MybGGzN+wmUODOBpUAqsBSI
+sGT476LD8N9QAZJYQe4eaLciY4AAGnAHwPGf8wb/P9ke+v8Z2FK/zfJ/9zKW/1Vp
+zP9doZEOyuW0KM6pjfdsmpeY5iP7KMYGWA04M/xPcoBUDzbqwMalHCTxXr8C9Osg
+cCtAAA24A8D4F7Ax9xnYkPvK8v/UQbb/bXnM/wNNh1ako+O9m+clpnrLPooDVgEZ
+wEQQA6Td9Rj+GylC/AVqVA60GwECaGADCVS3fwfm9h/M/x9eZvm/ZibL/4RAJnjx
+PhQjHR3vByaCRGfeT6ASINmRAZyordQQVdhAVl8AATRwAfMX2Cf+BqzbfwNz+zG2
+/+UpzOCuEqhuBDXiBjrSqIlBI4IL+/MmghqFoLZApBWkW2ggD/EvqHs5EO4CCKCB
+CZA/wIbPD8b/Px8z/z+yBpjbQ5nBOQHUrx5MDTlq4+vn9zvkB8s+SgGWAInAhOBl
+AOkRgPw+EI1BgACifyD8jlv4/xfT/yfAPvuKFqb/kdaDsyVMKwwqBWa2xi0EjT6C
+EoG/McN/M2VE+4aebgEIIPpH/G/m/1fPsv1vyWECt+QDXXUvDZbWLz3x4W3zEkGR
+nwztDViq0j8BAAQQnTwLLMp/+W76/4cZWL+z/8+OYf5vqgyJ+OFczBPCj26fN8jy
+4v0ESgQRVoiGICgB0CNcAAKIPh79oXvp/x8WcMTD6nd6F3GDFb95fl+hPln3Emhu
+ItKKETwJBQofUMagtd0AAUSHiAdG8s/RiMeHvwHbAc0pupfSnUElACNKCUBLewEC
+iA4Rz/z/DDDik8JGI55QAmgCJgDQqGCYJSNd2gAAAUQ7D33Lm/j/O/P/68DGXV7c
+aMQTmwAagFUAqA0AagSC1haAwq29DhiWNLAPIIBo45GfwG7bZ6b/L66z/u8qYAZ7
+AtSHH+jAHQoYlADqk3QvgcYBgpASAC26wgABRH0PgCZo3jP+//+M5f/mHub/nvqj
+rXpyEgC4BHCCjAMYQweCqN0lBggg6jocNFb/RvbR/+/ABt4G1v8JDozgAZzhMEY/
+EAmgwI/3E2hI2E0PsszMxVz2ETUzEUAAUdfRb4FF+ydgX/4I2/+EEEg9P1Dj1sMB
+P7lz3gCUAEDTw3aaDPAhcGqZDxBA1HPsx77C/6+Z/r8C1vP1mZCIB61gGegAHOr4
++M55iaDFopFIg0DUqv8BAog6jvwNLNZB6+zesvzfMpPlv5chfQYpRgpe3B23MNsN
+Mh0MWg9AraoUIICo48BHwKLoFbA/v4ftf5IvE00aJyMZf/vyXqAuRvYRaE2Aozb1
+in+AAKLccV+Adfp9xv9/HrD+n1LOAl4HP1rcUx8/uXveIM8dUvzDBoAobU8BBBDl
+DrsKbN2/Yfl/fB0reNUqtVukoxiB183ImwhaKu5nDFkIAgprSswDCCDKHPQK2PC4
+yfj/A7CRB1p3R3Zj5BcwBX8B6nsDLDFegJZsA/EzIH4KxI+B+AEQ3wc2KF8B1f0a
+uQnrO7D4b44HLQZhhBf/lDT+AAKIMgedBaa856z/dy9jBTdGQGvSiNL3B7SEK2/i
+//fARuELoNBTIH4ExHeB+AYQXwXiS0B8DohPAfERIN4NxJuBbcuVDP8/r9O99O5Q
+3sQfr0Zeu+L07nmJxT6QrWSgxh8luR8ggMh3yEtgirvE+P//A7b/U6tZiaiDgDn2
+NzAHfwU69guQ+w2IfwDxd9CqXSD+zPT//wcgBnYX/z8H4kdAfAcofg2IzwPxMUgC
++LMWGPnzGP6/mMHw/95Ehv/nJsg+enx6ZKwCguHeHN1LoNY/aPCHktwPEEDkO+Io
+MBIfsvy/upPtf7YnI/6uHSjSfwC7gr+A3N/AiPwDjNh/zEApEGaFYrb///8C8W8g
+/gHEX4Bi74D4Kcv//7eB6i4B9RwH4h2M//+uAbYzFzD8fzCJ4f+xRob/OyoY/m9v
+kn106+jISAT3Lu93AG0eBS0AAW0IITf3AwQQeQ54uT7g/0Eg8xnb/wWT2MBr0LCm
+vn/AYhm0kAMU6X+Bkf4PGHn/WSAR/Z8diDmAmBOIuTDxPyD+DZT7DFTzAqj2PlDP
+JaDeI8CEsJ0JWPwz/n89k+H/lS6G/wdqGf6vKWD4PzuV4f/yJttD718N/+HkyQW6
+l/I8GIG5nxGc+8lZ8QwQQORZfhrYx7zM9P/DZWBDL5sZe8r7BUwM4KXZDEiRzg6N
+bG4g5gFiPijmh2IQmxeC/wDxT6Cab0C1b4EJ4SlQ3y1gQjgLTAQHWP7/28D8/8tC
+RnDuP93K8H9rGcP/+RmQffX14byfLh4dXsu/0fG5ffMSG0IY/4dbMYJ3ApHT7wcI
+IJIt/ff1vsKfjUDmA5b/h1az/g+3xNKvB+23+8wAKeLBxTsbUqSDIhjUYBeEYiD7
+NzDivwLF3wMj/A0QvwJG+hMgfsANwbeAkX8NqP8iEJ8CJoADQPO2sv7/tZz5/6uZ
+jP8vA3P/3mqG/yvzgG5JYPhf5Q9ZH79z1cDviqEl7ojj/ZTuwggf9yd11A8ggEi2
+8O/NvsI/24HMJ2z/5wCLfFCLE8XSb8CI/wBk/gLldlBdDiraQUU5L2qk/wayPwEj
+/CVQ/C4wgi8B1ZwARu5hoPrDQHofx/+/uzj+/97B8f/XNvb/f2B4C7D02ArEG9n+
+/13J+v/9XOb/t/oZ/x9pAFY9xZCivzmU4X8usEEUY83wv6dm+C4g2T4vb2I9MPeH
+mDOStQUMIIBItvDHVmAdfgzY6LrO9n9yGQtqQ+87sLX/Esj8AWrQwXI7qHjnh0a6
+EDBRACP9PTDS7wMj/Czn/7/ASP61ie3/91Vs/78uZf3/eTHr/w8LWf+/mcv6/+Us
+lv8vZrL+fz2b9f/buRD6zRzW/58WQdS9nweSZ/l/bxIzsOhn/L+tnOH/AmDR3wUs
++st8IVul7YG5Ynrf8Bxx/ABs23REMv6Ps2MEnypC6nwKQACRZNmfz/cV3s4HMs8w
+/7+2juV/thsjIrWBDlJ4CNpaDYz4v6C6nQs14v8C8Vcg+yFQ7DTn/z/b2f9/A+bc
+d/NZ/j+dzvL/wRSW/3cnsQBzMfP/qz3M/y90Mv8/18H8/1IXkN8LtA+Ir3Qz/7/R
+x/L//mSW/3cmsgDZwFw/gfn/7YkQdQfrGf+vyAWdoQMp+kF740C7YkCLITasGp49
+gbmlupeKvBn/u0IbfqQU/QABRJJF367PS3wHivyzLP8X9bKAj0F5DWtZ37M99P85
+sI7/BYp4UN3OC414AUgR/xbIv8r1/89uSKS/mQuKcOb/13tBEc30/2QLEziyz7Yz
+/99bw/R/dzUEn2hhBuOjjUz/jzUx/T/dBkkUIPpkCySRXAcmCFDCOAqUX1PI8H9S
+POQULdBq2EAThv8W0KVQN64Ov0Ghw2vqGntimIClHBPJfX6AACLJore74xZ+WwFk
+nmf9P7WZFVHMfNoQ8P86A6RvDm/FQyP+B5B+zgMu4n8D62tQkX1/MvP/y8DIOt7M
+BMytTP/3VDP+31zK+H91AeP/ZbnA0iQLWHxnMvxfkg1qxIGORwPKl4GKdcb/hxqY
+gJj5/4E6JjD7RDPz/zPtkMRwAGjW+mLG/zOSGf43BEMOTQIthATNg+vSaS08vfGr
+h+cNpiYx/U9yZCJ5kSxAAJFk0aN5so9+bWD4/3kvy//OTOb/oJ2nYDnQMO8TYKv+
+D9d/RLcNGPE/gfRTYMSfBEb8Rvb/7+ezgov3K9BifQswQlfmM4LPvesHFtXtEZBI
+A+Xa6kCG/40hDP87oUeigRpyi4CJYjkwMWwARvD2Cqb/u6qY/u8HJoIjjcz/DwMT
+xB5gSbGhhPH/3HSIWaCzcsLMGf7bajD815NjGLYLTGak833KcmUEL/YkZcAHIICI
+tuDXx/sKV7uBbbr1jP/PT2cEbzJ8fGO/w5+HwGIGNAb/gR0R8f+A+DsfpLsGjPhf
+G9j+v5vH+v/2BGZw8b6jkgkc6aAIBUVSEfREK9D8AGjBJ+gQA9CZNqDZK9DRJqCD
+jiqAdXhHJDDyEkElAiM4h28pByaAakgC2AOsKrYBEwQoYYDkJ8RBjk6LsoIsgYJF
+PjldosGON/X7bmoJZ/ofZE5avQ8QQERb8P7m+oBLnQz/v6wGFs1VjOBWNFjuCDCl
+3WUB1uuwxh0Q/wBG/CNgvX8MGPHr2P6/BUY8qGEGqrO3AovuxcDivDcGEjmgIUrQ
+uTWgehm0SBH5nDxQhIG2MIOONPEzgvTdq4ClAihiFwMjeF0xqCqAJCZQxIMSw+Yy
+pv9rC4FFfwqkBAElKtBeeGSzh9v+AdCRsXMzmP+nuzKTNNoHEEBEW/Bof10jKOd/
+Wcf0f2oR83/Q/rL3t4CW7AVKP4Xm+n/QiAcV9aeALXpgjv8AjHhQyxyU47dXMP5f
+msMI7oqB6mPQsWWgoWFdtMMRsWHwGDYwkcTbQlryoJMxQWZtLAElKEjkg6oCUGJY
+V8T0fyawVKkPhiQYN13MhDWc1hw8BZbAS3KY/+d6kLZ2EiCAiLbg4mLfTdd7Gf5/
+3Q1s7NWx/t+zOG7hv2vAHHQZ2LX7DKzr/yIV9cCu3K9NwDp+ASu4WwZqwe8E5k5Q
+ZIGGX0GtcND2bEMsp2Liw6C+LEgfaEsT6IhUUN2+FtgY3ArN/SA7tkIjf246I7hK
+AR2X6mPI8N8Iza7BcCYOtfDPb+8FluYw/c9yZyJpiRdAABFtwdEJupfu9DP8/3aC
+/f+Syez/z26va/wJyvWP2SDj8J+BEf8Y1Krn+v93G/v/L4tZ/z+exgLuf4Na5quB
+RTGoCwY6qw5Un4NWopAS8TAMWsIEWspUCc39K/JAPQVEzt9SBuruMQF7DIz/++Mg
+gz0h5ogDEGB4uLX8lxbyfcrzZPxvqkS83wACiGjD1wH7z9d6gMX+GY7/J9Zz/L+5
+OW/it9VAqZsckD78fWDEn+H6/28Hx/9vy9nAI3M3+1nAfXRQhMzPYAS35EERATuK
+BBuGHZsKw6DWK7I8eF+/KaSRCOohgFr/oNy+swrS+NsKTABrgTl/aS6oywc5MBl0
+Nh7y0ax0afj9vK/w905f4dfTdY2vjkKOer93jnaTTdt7bA+BGn3ehpBGHzF6AAKI
+aMNBfe7jTQz/3+4GttzPcvz/cNxv0589wCL/KjDybwIbd6eAOX47x//vy9j+v5wF
+bNkD6/nzHcz/99Uy/V8FbNmDIgq0B91OA3ek4yqKQYtEQKkZpA40lwDawlTsDRnM
+ATXuQHYcbWIGd/lAiWB9MRM4UcxOZfzfFAoZ5oXte0fGNDkKBjTS+QhYHR5i+P9n
+E8P/D/MZ/t8EVpc7KyGTTkV+vJ+O7aN+Itg33XcTqNGX6MBMdOQDBBBRBr+4td9h
+HrB+3V3F8P/MBKb/z3ax/v9/RfHR/ytA+gZ0QmYnx/8fK9n+v5oNaeCBinvQAAwo
+MkAtc1CfPcgUez0PilhiciGolW6sCNnACGr1gwZzNpUygnsRoHbFYWDkwxp8oPbF
+zBRG8CQPaNOjLZZER/VWP2i72iNgkXub8f//W8zAkpDl/+9NzP8fTgF2S0sZ/rcC
+2ymgWVDQoFNnA3V33oIui1hbzPI/34uF6JW9AAFElMGPru13AA20gCZOzs5h+v/q
+pOGl/+eB3bur7OBW/b9tHP9/AiMeNPkCauBd7WH5fwwY8XtrISNu04GRVOINaXVj
+y/GkrPFP9Ne9BDrYsDUM2NoHlkYH6hjBg0ZXe1nAuR/U8AP1AEBtgXnAqqYzEtLi
+h017ImOi1xwSi58CI/4paDkaaCUSMEM8B+Lj7P+fzmYGDzuD2h+gc3ph7R1qHjl3
+fUdd444q1v/lAcRHPkAAEWXwg6v7HUDds43FDP8frWL+//cEMMcfBuL97P//Alv1
+35eygWfc7k1iAUcCaOz9MHgIlhk8mANKODluDP8dtTAjgNRW95sX9xVA/XdQkQ9a
+wHG5C1gSzWABNi5Z/1/sYgHbC2oDrC6ANPp6YiBn4WKzm9jikSj8GViF3Afm+A/A
+cPkLXbfwE4hv8/x/vIgV3OYBlUBWaqgJn1r239hZ17gX2AurDiJmPSUEAwQQ0ZEP
+ykGgev8YsN5/PJ3p/6clLP9/AXP7tyXQoh4Y8Ze7WcDj7KC6F1QPg1rgoBwImmUD
+nUbtgCUCyOlvr23QvQRrgzyZxvT/8wLIlO+tCazABiYL2N6V+ZDuHmhUEDSmAFvq
+TLPIvwnM9Q+BRf1XDkjEg6av/4v8//9U4P+N+ez/2yMZwaOX6OMN1Mr9oDuDDjaw
+/q8NIT7yAQKIKIOvn1wf0BIGuXtmAzD3H21kBM+hv5sLmV+/PxmS60Ate9Cky94a
+ZnDLG9TKB03UgEbzQBHgpE2dYvf+3rrGk83ARDiV8f+3Zcz/f69h+/8FWPo8msb2
+/3Q7C7jFvyKP6f/sNEhfH2Q3aIAI22AS1baVHQZSN4BV4VtgUf+LDxLxf8T+/74u
++H9fGxuwIYa9l0OtuYZbu+objzWz/W8IIz7yAQKIKIOvHF8fUBMIGVcHzZfvArZc
+z3cwgRt2oFY9KMefbAXNpzODJ1t2QvGmUkjkg4p90I0U3gao152QG/kfT9Y1vpkF
+7E2tBBazO4DF7D72/382c/x/M4/t/4VOVmCxz/x/GTTyQYNKRVC70XMdsYFEEH8H
+NlY3A5mHQauMgfX9XWAj+DH//9/XgLl+Edf/ZmAXDFuDk5qRf3t3feNJYCJrjiA+
+8gECiDiDL+13KPeFjMeDFkmCcv/hBkgLGzSVCmrcgSIeNP8OG2wBYVDDC1Tng8bZ
+Qa1z0Dg+aJweNslCbuT/uljX+As0xgDqap4BNjovAAP7AOf/D0vY/1/oYgWWOMzA
+fj4k8kFVDmgOwdcIe0+DWucHfF3E8P/jUsb/H4FtonerWf8/Wcb+/2QP2/+uaCbw
+RJWuHO0j/2wH2/+2KDai/QUQQEQZfAcY+aAA7AAWoTOBEbkyH1hX1TD+P97MDG5h
+76+DdOlADa0tUAxig/rbsNm7xlDIsC6ojw7KBRTtNrkM7KIdAeb6q8Bi9iGwmL3L
+A2xVc///CAxwUM7fBIr8HCZwax90mxaolR1ggr3YpVbk35jE++lUCwOwe8sAXp8A
+6t6C7HXXw17ikNvgxYXv7a1vvNLL/r87lvjIBwggonM+qOgE9ZlBrWzQvDpoYcVh
+6MKKPdWQFvbGUkhRD8OgkTZQg28OqPiNhgzJghIAaJoVtLwKVArcuUFinfsH2EA8
+B2wl3wbm+jfAXP8JGPHPef//P8n9/x0w559uY/m/oYQJHPnzM5ngkR9qjjjciBaB
+f2553EJQ1xPUrW0Og5yriz6biA1Ta5Tx7vb8ibcmgiKfnejIBwggogy+dXG/A2hh
+RC2w3gdFIij3rylkBBfze2tBfWtmcGSvK4bkdmQMGnBZBh1wAXW7QMOtJdD76UDn
+zrbmkFj0vwUWk3cZIbt5fgG7VH/4gYkAiI/x/H8+hx2cGEF2LsoC5Xwm8J14oMiP
+tsE+yketYhe0oqYeunoINJADmvImFPHUHGS6vsju0KUe9v81wcTX+QABRJzB5/c7
+gAZKQIEIavWDGnCgpVagHAaZR2cGRzRoQmVtISTHgzAs8lfmQUb5QMUwqNEIuqkS
+hEGNMdDs3MWdROa+78C+NGh18EfQ+gHYqiHB//9fCfz/vZf7/4OpbP/31TFDJ3aY
+/i8A5vwJcYzgRAtyPygnote91BzoObhlXiJo/xxo8olQxFP7hLKrE/k/7a5h/R9n
+z0R05AMEEHGp+tl9BdD4OCi3ggZYQH1n0NAqaAgVFNCgCAbRoL71qgIIXg2lQV2u
+ZbkQPjghANsAy3IY/i8H9hpWA9sOoAmjnRXAbttuAsOd34EJ5B2Q+RV5uRiwL/0T
+iG/y/f+wivP/xW7W/9uBpdDyPEiRPx+Y8yclMILbG6CNjaDjYtAbfdQcaAHhzWvm
+JRJan0DtiP/98b7C3cks/1cUsP531iG+OgEIIKItAG0JBh0LAqr7QcUbqBUNGkQB
+tapBgQ3Cy/IQ7BX5CLy6ELLCBtQoBC23Ai3aBI0VgO6xvdABmS18PAUYv2uBDUDQ
+PnzQrZnfgBi0DwCU28EXLwGL+h/AHP8XFPGgcBP+D+5LvxH8/+sA9//HM0BFPsv/
+NUWQHA8q8uemQyIfVFqBupqguQVTZczIoPbsHsg8UJEOSljokU6LdQTvL89LfDqP
+/f/cHLb/xorED14BBBDRFgRa8X4CTaWCLguq8IMU16DGDahuBTWulgDxYigN4oNy
+OwiDcj4o14O6fTurIKN/l7oh6+4fT2X+/3Ye8//PS5j+f13B+P/3emAE72eA7M2/
+DcSPgfgdUOwbMLf/Bq0WAi0VA23+EAViMaC48P9/l/n+v13G8f88qH9fAWnlgyJ9
+DhSDIh9UUoGqLNh6PvQieagv7Hiy3m/T6yWc/6dmspNUmgEEENEW5ETbHgLVZ6Di
+H9T4A+X+SQkM4PFzUKSDchuoqAXVtYuzIXgJNDGAEsGqfNDiSibw6B9oNBA0Fv9p
+Iev/3+vY/v/fBcSHgA2406yQUbLnrNDJEXbITl1wpINyuwgk0kH4O5B9m///l41c
+/29NZAN2N1nA1Qwox4MifXYa0/9ZqUz/pyWBppMZwXfgpkFPtERv9Q/lhR1/f74X
+eDCF6f/96Rz/a6BDu8S2YwACiGhLJrXmTQT1WUGraUHdNVBOAo33z0xlBEc6KNDn
+pUNoUEJYAE0I4MSQAykBQO0CUJ0MGn+/MxG07Yrt/7+tHP//HwVG8GUgfgQs0j9y
+QxeDwjZ9gHK6MDTSxSH0V2DE3+L//20L1//7wEbesWYWYLXCDE5wsEgH4ZlAPD0Z
+0t0DzeuDin7QgYb2aKt5aVH00wt/vjYv8RUwHPc2s/8PMoMs5CD2oGaAACLakpUL
++gpBkQ9aiQOanQKdDFUD7voxgnPXnDREcQui52ZAGlzzoQlhUTakQbixFDTuz/z/
+FLA//ggYcd9WAiN/HzDSLwIj/SkvZEvXX9iGTmi9Do54YFH/A8h+CRS/yPf/6wau
+//eQIx6YwOakISJ9RgoEgzY0gLp7oHq/Erp7F3TpMXrdP1RX9D5bKPfo02rO/wtL
+2OElGrHVGEAAEW0J6HpwB03IGDko96c6QlbTgHJUXxwjOIfNhAY8KAJAOXAOUmIA
+lQigUgDc8i8EdRGZ/59sZfl/bzLb/w9LOP7/2g5MAKeBOf4O3///z4AJ4B0wkj8C
+W/IfgPg1ED8BJogrfP9/7uH+/3oxx/+rvWzAhiMLODGBcvysNNRIB7lnGggnQXJ+
+TwwjePAFlPtBfX7Q9aygET/dIbye/9uNeYmvFzD/f7KQ839dOCvJo5YAAUSSZaBF
+kNbqkNWwoHVxoOK/HNT4i2D43wvMXRPiQf14SEIARQAsIYAiBpYYQIkAFFmgBLAd
+mAAOAlvooMba4+nARLCU4/8XYI7+tYv7/7/DPOCBm79HeP7/AvbhPwHr9lfASL8z
+BZLbQY271YXM4AQ1KxUR4ciRDsr1U4B4cgKkvw/a0QoqrUADMaARP9BMHyi3wBZX
+DKVj4f8B6/o3S2UffdnA8X9PJ8f/QGiRT2xLH4QBAogkCxNDbQ+BuhKgviSo2xRn
+hyj+W8MhuQvUup6cCAn4adDIgOVGWGIAlQSgagDWEwANEh1uZPl/DpgIrvez/X84
+jf3/81lAPJMdmCjY/98GNuhAcqCuHGjGDtSwW5IDSUgouTwZYi840oFumAzFE+OZ
+/vfHMYKrKFDuB40wwu64BTViQQkaVAqA2gGnjlNnrJ/W+MuxvIkfl7IAMwv3/6nZ
+7PB5C1IGrQACiCQLp/bWNYIiH9RgAuV+0BJq0KLMUl/IeDYo94MCelICJLfBEgEs
+ISAnBoyEkA8aFQQNEzODG4U7q1j+76hiAVcP60tAEQ6ZqQO1IZBzOnqEI0c6yB0g
+PBGc85nAibMNmEhBM4yglUUJwMQbYgbZIgYa/QONzFlp8X76PMg3dPx5vt/hw3zG
+/z+3c/6/OJPrf6ozM1nD1QABRJKloLoEVESCin9QYIFmykDr6UBr8UFdqbYIxv+d
+UZASoD+OCSMhTEFODMgJAq1kmJ2GwMgNOJA6WHFOTISD7J8AzvWgRh/T/+4YSNHf
+EAKprkBdVtAii1ALSBcQtJ8ANOOYGUXltX1UxP++3Ff4vIT308+NbP9/7OL9P7uA
+/b8l0pwFKbOUAAFEsuWgAQRQ8QhaBw9akAkqOlOgjT9QAmgOgyUAYIDHQQIeFAGw
+hDApARFRsASBnChw4SmJmBGNHNnoEQ6LdHDEQyMflChBbmsJB60mZgS3/mETTKAu
+IKghCxrIAvUGJtQNwtb/r/cC3zboXvqxmuX/v0M8/y/M4UbJ9aQOVQMEEMkOAHWJ
+QBaBxshBuQQ0NQsq/kGLJEF9/7pgRnACAOWw7mgmcCLojUVKCEiJYWICauTBSwk0
+jK4GPbLhER6HGeEg3BsLcQeozge5C1RCgXBjKCQBgHoAoEYgqBsI6saCBrJAo4HT
+mwdRAgBG/I9Nupd+ghbQHuT6/2E33//Jmewom1FI7a4CBBDJjgAtOARZBOoigbYG
+gRZl+gKLzFgbyOQJqDitD4bkLtCiRVBOgyUCeEKIRUQScoKAJwoceAIaRjYDV4SD
+Ix0c8RAMcg/IXbBE0BQKGf0DuRs0bwEqCUD+APVkQAlhdtsgSADAiP+1WffSr9VM
+//8e4AB2ifn/H5rA9T/cigllrILUxaAAAUSWY2BbqEDFvzlS/Q+6Dybfk+F/ZQAk
+AYBKAFAAd0ATQVc0JCF0x2Amhj5o6dAXhxmpGBGMFtHokY0e4SB7u6IY4REPclM7
+1F3tUAxyK6jXAioJQHMXoJVLIL+ATrme1+i7CXTo8UBE/L/35w1+b9G99GcN0/9/
+oIi/wP//wVre/zWhLCibT8lZFQUQQGQ5CNSihFkKmiQBtZJBjaVw6NBvkTfoZA1Q
+wwoSqKBuIDjAQTkOGgld4MTAhJEY4IkCD0ZXixnZkAjvjEJgkL3Ikd0BdgsTmO6C
+JkxIwoDsrAENXoEWnoCmsEH0pEzZRw+v0rcb+O9GX+GvVbyf/q5n/v//EDDiL/P/
+f3+AH9zIQ1+KTs6iFIAAIstRoJEwZItB6/FA9T9okSSs+AfV/6AEACoBQEUrqBoA
+4dYI9AhARFAXculAJO5CytldWCIbOcJhdX1rBBIbWj1BGqiQNX8gDFqsCtqoApq/
+gGEQ/9DSvImgLdE0jfiv9xX+7rY99GcV4/+/21gg2+Gu8f//dVrw/852rv8hFqjF
+PbmjkwABRLYDYQ0/cP0vCxkkcdaGtP5BAyigblSZL6gohSQAUOMKlAhAJQE4EYQj
+IgElMaAlCGJwB47IRo/w1nBEIoQnRnCpBGoLQEoQUNticiJkpHIqGDMAu5cMYHpy
+PMP/WSkM/1cU834C7Y37ReVEAD7d9Hjcwj8rGP7/3QDM7fvZ/v8/BzqBFGjNJcH/
+52fw/M90Y8bY3k7uvARAAJHtUPTcD+7+qUBGzED9ZlD3r8ATkgBAJ0SDegGgRACq
+CtATAnpiQE4QJOEIzMhGj3CQnSDcBHVDE9QNkLYJJAGAupCgMQbYhBTojB/QMjTQ
+LqGlOQzglUhrCxn+byph+H9xZdzC19fWB/z5Tl5C+AdszP29Oy/x107bQ7+WMf7/
+s57p///drJDcfhV0OqkgsLgX+n9zPs//ykAWjHMGKJmTAAggilIqcu6HJQBY/Q8b
+/SvwZPxf4gPsUgETQE0QJBHUQRMBekJATgzwBIGUMLBiNHXoORse2dAIb0TCMDeA
+MKxqAlUjoPmAeRmgCSPIyOK6YmbwyuSt5ZAzhbaWMf7fUcH4f0sZZOs1aLk2CF9d
+aHvo6Z68iW/P9BV+f7zf4dczKH663+HnUwj9+zmQfa6u8fuhuIXfNupe+raQ4f/P
+5cDifSMzJNKPAuv2S6AJLn5IxF8U+n9nEe//xjAWlH1+1JiNBAggiiIfPfeDMGhH
+jq065CQt0Ng/qP8P6keX+YH61IzgdgAoEdQGoZYGsITQiJQjm7Fg9MhtwaKmCSmy
+8UV4fTAiMYKrphBICQAr/kEji8vyQMPLLP93VLL8P1DP8v9gA2SvAvhwyGam/2fa
+GP9f6mL8fxZIn2ll+A86uubuBIb/j6Yw/H8xneH/y5lAPANyOcQrIPvDXIb/3xYx
+/v+5gun/H2DR/m8bMML3sIEPr/p/gRu8HvH/fWAhclfo/4+Tgv8vz+T53xzOgnPH
+DyUzkQABRHE9BVo4gO4g0HGnoF2x/iaQBiCoBAB1m0AlQIU/pBQAJQL0hIArMSDj
+JiwYmzqskY0W4SBcC7W/BooRXVRI93FWGjOw6Aflfpb/e2pYgRHP+v9sB+v/q72Q
+jaGgfYqg42dA+Ol05v9v5jD//zCP+f+nBcz/vy5mBu8l/Lac5f/3lSz/f6xl/f97
+I+v/f1uBkb2bHbKI5Szo0Glg8X4dmNNvQyL9/zWh/5/2Cfw/2sv1vyKAGby/AVvE
+U3q7NkAAURz5oFWo6AsVQcU/aLEEOAEYQ+bPQaNnoAEU0Dmx5X6IRFCFJSGgJwYw
+DkGNSEIYpq8OR2TDIzwQYT/MLbAE2BQGaQiCEsGMVNAUMst/0PLok61s/6/2sf9/
+OJX9/8vZoMMl2f9/WcT+/8cy9v9/VrH//7cWiDcAi+9NQLwNiHcA8W5gRB/g+v//
+COgwCx7I2oWLwFx+HRjht4DF+w0hcN3+55jg/2er+P5vruH4n+vBhLWohw3lUroC
+GCCAKI58EAYdb4LuONAIIKhxApr+BY2Xg87DS3eBJIBCL8b/pcCGIKgqQE8IsAio
+QUsMyAmCWFwbhD+yYREOwyA3gKomGAbJ14F7KpAu5ex0YBugELSWgPX/oUa2/6BN
+Eg+mcvx/NYfz/+dFnMC6m+v/33XAyN0KzM07gXgXEO8FRvJBID4CzN3HgZF9BojP
+AXP5WQEIPgeM+BOC/3/uFvj/ciXv/7N9XP9npoGuqWPEusMIhqlxpAxAAFEl8kEY
+NI+M7kA9aAIALZoAHaUCagOAjlEDjZrBGoLgROALSQTl0HYBckJALhmQEwUyrg3C
+FMMW0eiRjRzhFVAMcwcsYVZBG6rNYZASYHIi8//pKcz/l+Sy/N9czvr/QAP7/zMd
+HP+v9XP8fziN8/+bBVz/v6/h+f9zPc//Xxt4/v/dwvv/73ZgxO/i+/9vNxDv4f//
+eyf//6+b+f5/WMf3/+Vy3v93ZnL/P9bK+X9pHhvQjcz//YDVJWwJNjZMrY0mAAFE
+tcgHNTzQi3/0BAAqAWKhVUCWG2gsgBFcDRT7ICUEP0QEVPgjEgN6gkBPHFVIxTYu
+dZVouRs9wmGRDkqMILeA3eQD4YP0wUoQUHUAbhQmgBICy/+F2SzAKgG0dJzt/+Em
+9v+XezmB1QLn/xsTOP/fm8L1//50rv8PpnH9vwfENydx/b/Yw/n/ZBsnMOFw/N9Y
+xg7O6fUhzP+THRkJnk9IjeIehgECiGqRD8KwSR9sCQA0BgDyGCgBgKZPQeMAoJ5A
+rjsjuBoAJwJvSIAjJwTkxABLEBVIRTM8MgPQsD8qrsAX2UgRDot0EC6GYpDbYBjk
+xjI/RIKqDWYCdjkho40T4pmBDUSW/4tyWIElAyuwp8D6f2UBGxgvz2cD5+wFWazA
+yGb5PymB5X9bJDPQPUz/U50ZwYNjoEkyQgdTUvMcH4AAomrkgzC21j98EkgFUgKA
+JoGirSEjgaCeAOjShnxgNVAASgRICQFWIiBXD2V+2BMFMbgMLbLL0CIbOcKLkSIc
+lDhBGOQ+UHWFjGGJAZYwQVVEQwgTGNdDcR0wgdQGMQHlmIAJhgmonglc6qU4QeZD
+3Inc30dp6x4dAwQQ1SMfhGFn5uGqAkDDwKBuIGgRKGglDWgyKAuYAEABkg8N1EIs
+CQE5McASBDIuQ8Po8uCIRotsXBFehBzhXhB3gTDolEuQO3NB2B2Bc2DYDUJngzCQ
+DToKPROIM0DYhRG+ZgA0CAYqBUGlIShM0PcRoGNabCwBCCCaRD6oTkI/ORNrAjCG
+nNYBmgoGBQqoFAAFHChg8zwRCaHACzUxwBMEUqJATxhYIxdXRGPL4dBcjivSYZEN
+imDkSM6ERjLo1qs0ZwhOdYLgFCAGLRQB7XsEnSIOmgo3VcJ9agcM0+pyaoAAoknk
+gzDooCNsDUD0cQDQTCBoGTWoHQCqBtKh1UAOLFchJQTkxICSILwwIxIv9kJENHpk
+I0d4PnKEeyDlbuRId0ONdHDEO+OOeNCmF9AyMZDfwfsG8EQ6rIFHtUOj0DBAANEs
+8gklAFBqB00Fg0avQHMBoK4gqBoAjQeALkaCVQWwwIYnBLTEgJ4giMZYIhojh6Pl
+cpw5HVtud0ZEOqiLC1oWFgRdKWwHPZZmICMehAECiKaRD0sA+DwIWwwCqvtA7QBQ
+kQgrBUAbK0GBCwpoWKCjJwYYxpYo8GFYJMNwLlo9ji3C8UU6vtwOatSBGrmghh1o
+xI7Yo+ZpGfEgDBBANI98EAaNRuEqAZCrAdB2MNCCUFAOATWIQKUAqEsICuBMpEDP
+gkUGWiTBEwVawshFj1wckQyPbLRiHTnCUYp3PJEOwqBEDOrCgYp5UBsH220iuHI8
+TQ6FRsMAAUSXyIeVAPgSAKwaAOUMUHcQ1BYAlQLRKFUBIuBREoMrau6EJQxsiQMe
+uWiRjCt3o+dy9OIdW6SD9jJEQFvzoPUNoKoNNGJHqGFHj6IeGQMEEN0in5gEAK4G
+oKUAqF700INMDYMaSaD2AKjuTHJkAAc4KCGku2BPDMiJAit2Q7Cx6UOPbFgjDiWX
+44j0SGjdDmvUgXo2xOR2ekc8CAMEEF0jH5YAcI0DIGPQUiXQoBBoaxioQegPSwRW
+kF1CoDYBKOCRcyB6gkDBrjgwFrXpWIp09AiHR7ojaqSDtrGBJrNgdTsx9wfB+vH0
+jHgQBgggukc+CIP6rNgmgjCqAllIAILqStDQJ/i6NSNIPQoqVkFVAijgE6EJAYzR
+IgwjcWDBuNSnYYtspFwOKo1Au3xAm1ZBW9dB1RXouDfYpk9iIh2EQWExEBc+AQTQ
+gEQ+DCMvAcebCOQgFySB9gjYaEB6BqBiFVYagBICKCJALWvQ6BksglKxYeQcjCU3
+44psWA6HRTgoAYKqJFADFVS8g3bOkBrpIDyQlzwCBNCARj4IgzYWEmoHoHcNQYEM
+CmxQlQBqUIESAigiQBEC6laBEkOkNaTLCGksQiIvBT1CsUQwCCdDcSw0skFFergF
+JIf7QiMcVLSDGnKgqomU4h2GQaN21Dr6lVwMEEADHvkgDCryQAcjkBJ4utB2ATgh
+qEAiAjRcCkoMoIEUUG8BNG4AanGDEgVoRTEoAsGJA4atoBjKBsmBehgg9aB+OShB
+gcwBRTaotLHXgNTloAgHtd5JzeUwDPLrYLjXDyCABjzikTEoJ+CaEyCEQREByoGg
+xGCmAhk4Ah26AFr4CGovgBIG6CgWUOJwx4FBEQxSB+ppgPSCtj6DShhYZINKHVJz
++GDL7cgYIIAG3AHYMKgeJKUqwNdWAEUYKFGAxhBAEQhKHKCuJDoGiYPkQWpBJQqo
+y0lJRCNjkF8G4wXOAAE04A7AhUHFIrUSwUBhWKQPhiIeGwYIoAF3wHBMBIM90mEY
+IIAG3AGkYNB4NzHjAwOFQW6jx5g8tTBAAA24A8jBoMWioIMGiRkppDWGHaY81M7w
+A2GAABpwB1CKQUUraFEjaH0bPRIDyA6QXSA7B3uxTggDBNCAO4AWGNSdAhW/oHoX
+diEzKW0G5MucQWaAzBpMXTRqYYAAGnAHjOKBwwABNOAOGMUDhwECaMAdMIoHDgME
+0IA7YBQPHAYIoAF3wCgeOAwQQAPugFE8cBgggAbcAaN44DBAAA24A0bxwGGAABpw
+B4zigcMAATTgDhjFA4cBAmjAHTCKBw4DBNCAO2AUDxwGCKABd8AoHjgMEGAA7tFY
+4u1LsjYAAAAASUVORK5CYILA
+"/>
+
+
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/externalUseCascading.png 
b/tests/data/svg/batik/tests/spec/structure/externalUseCascading.png
new file mode 100644
index 0000000..e3e5e7f
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/externalUseCascading.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/externalUseCascading.svg 
b/tests/data/svg/batik/tests/spec/structure/externalUseCascading.svg
new file mode 100644
index 0000000..438fbc2
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/externalUseCascading.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Alternate stylesheets                                                     -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: externalUseCascading.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+<title>External &lt;use> cascading</title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+    <text x="225" y="50" class="title">External &lt;use> cascading</text>
+    <text x="225" y="70" style="text-anchor:middle; font-size:12; font-style:italic">This file is using the 
defs.svg file to get the external resources</text>
+
+<defs>
+
+  <radialGradient id="grad">
+    <stop style="stop-color:gold" offset="0" />
+    <stop style="stop-color:crimson" offset="1" />
+  </radialGradient>
+
+</defs>
+
+    <use xlink:href="../../resources/svg/defs.svg#tree1" x="120" y="120" style="fill:crimson"/>
+
+    <use xlink:href="../../resources/svg/defs.svg#tree2" x="120" y="300" style="fill:url(#grad)"/>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/image.png 
b/tests/data/svg/batik/tests/spec/structure/image.png
new file mode 100644
index 0000000..b04756e
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/image.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/image.svg 
b/tests/data/svg/batik/tests/spec/structure/image.svg
new file mode 100644
index 0000000..1d67a0c
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/image.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Image element references an SVG file                                   -->
+<!--                                                                        -->
+<!-- @author Thierry Kormann sophia inria fr                                -->
+<!-- @version $Id: image.svg 475477 2006-11-15 22:44:28Z cam $         -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; >
+
+<title>Image element references an SVG file</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+        <text x="225" y="30" class="title">
+        Image element references an SVG file
+        </text>
+
+        <g transform="translate(0, 50)">
+            <image xlink:href="../../resources/images/svg.svg" x="75" y="10" width="300" height="193.45" 
+                   preserveAspectRatio="xMidYMin meet"/>
+            <image xlink:href="../../resources/images/png.png" x="75" y="195" width="300" height="100" />
+            <image xlink:href="../../resources/images/jpeg.jpg" x="75" y="320" width="300" height="100" />
+        </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/rasterImageViewBox.png 
b/tests/data/svg/batik/tests/spec/structure/rasterImageViewBox.png
new file mode 100644
index 0000000..2b76be8
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/rasterImageViewBox.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/rasterImageViewBox.svg 
b/tests/data/svg/batik/tests/spec/structure/rasterImageViewBox.svg
new file mode 100644
index 0000000..d32fb60
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/rasterImageViewBox.svg
@@ -0,0 +1,456 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This example validates the handling of viewBox and preserveAspectRatio    -->
+<!-- for <image> elements.                                                     -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: rasterImageViewBox.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>&lt;image&gt; and viewBox &amp; preserveAspectRatio</title>
+
+    <style type="text/css"><![CDATA[
+        .label { text-anchor: middle; }
+        .oddRow { fill:white; stroke:black; }
+        .evenRow { fill:#eeeeee; stroke:black; }
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="30">viewBox &amp; preserveAspectRatio on</text>
+        <text class="title" x="50%" y="50">raster &lt;image&gt;</text>
+
+        <g id="table" class="label" transform="translate(80, 60)">
+            <rect         width="110" height="20" class="oddRow" />
+            <text x="55" y="15">meet</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(110,0)"/>
+            <text x="55" y="15" transform="translate(110, 0)">slice</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(220,0)"/>
+            <text x="55" y="15" transform="translate(220, 0)">unspecified</text>
+
+            <g id="yMXX">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+
+            <g transform="translate(0,120)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <g transform="translate(0,240)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+            <text x="-25" y="80" transform="rotate(-90,-25,80)">xMin</text>
+            
+            <g transform="translate(0,120)">
+                <rect x="-40" y="20" width="20" height="120" class="oddRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMid</text>
+            </g>
+    
+            <g transform="translate(0,240)">
+                <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMax</text>
+            </g>
+    
+            <defs>
+                <g id="row">
+                    <rect width="110" height="40" transform="translate(0  ,20)"/>
+                    <rect width="110" height="40" transform="translate(110,20)"/>
+                    <rect width="110" height="40" transform="translate(220,20)"/>
+                </g>
+            </defs>
+
+            <g id="evenRowBlock">
+                <use xlink:href="#row" class="evenRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,80)"/>
+            </g>
+
+            <g id="oddRowBlock" transform="translate(0,120)">
+                <use xlink:href="#row" class="oddRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,80)"/>
+            </g>
+
+            <use xlink:href="#evenRowBlock" transform="translate(0,240)"/>
+    
+            <rect x="-40" y="380" width="40" height="40" fill="white" stroke="black" />
+            <text x="-15" y="400" transform="rotate(-90, -15, 400)">none</text>
+            <use xlink:href="#row" class="oddRow" transform="translate(0,360)" />
+
+            <line x1="55" y1="20" x2="55" y2="420" stroke="black" />
+            <line x1="165" y1="20" x2="165" y2="420" stroke="black" />
+            <line x1="275" y1="20" x2="275" y2="420" stroke="black" />
+        </g>
+
+        <g id="testCases" transform="translate(80, 80)">
+            <defs>
+                <rect id="hViewBox" x="5" y="5" width="45" height="30" stroke="red" fill="none"/>     
+                <rect id="vViewBox" x="70" y="5" width="25" height="30" stroke="red" fill="none"/>     
+                <g id="smilley">
+                    <g  transform="translate(-15,-15)" >
+                        <rect x="5" y="5" width="20" height="20" fill="black" />
+                        <!-- <circle cx="10" cy="25" r="4" fill="crimson" />
+                        <circle cx="20" cy="25" r="4" fill="crimson" /> -->
+                        <circle cx="15" cy="15" r="10" fill="yellow"/>
+                        <circle cx="12" cy="12" r="1.5" fill="black"/>
+                        <circle cx="17" cy="12" r="1.5" fill="black"/>
+                        <path d="M 10 19 A 8 8 0 0 0 20 19" stroke="black" stroke-width="1" fill="none"/>
+                    </g>
+                </g>
+            </defs>
+
+            <!-- xMinYXXX XXX -->
+            <g>
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMin 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMin 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMin 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMin 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMin" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMin" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMid 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMid 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMid 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMid 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMid" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMid" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMax 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMax 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMax 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMax 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMax" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMinYMax" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- xMidYXXX XXX -->
+            <g transform="translate(0, 120)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMin 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMin 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMin 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMin 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMin" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMin" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMid 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMid 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMid 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMid 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMid" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMid" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMax 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMax 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMax 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMax 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMax" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMidYMax" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+            <!-- xMaxYXXX XXX -->
+            <g transform="translate(0, 240)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMin 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMin 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMin 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMin 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMin" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMin" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMid 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMid 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMid 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMid 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMid" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMid" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMax 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMax 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMax 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMax 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMax" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="xMaxYMax" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- none XXX -->
+            <g transform="translate(0,360)">
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="none meet" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="none meet" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="none slice" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="none slice" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="none" x="5" 
y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" preserveAspectRatio="none" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+            </g>
+
+
+
+        </g>
+
+    </g><!-- "content" -->
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/rasterImageViewBoxClip.png 
b/tests/data/svg/batik/tests/spec/structure/rasterImageViewBoxClip.png
new file mode 100644
index 0000000..732b3bb
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/rasterImageViewBoxClip.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/rasterImageViewBoxClip.svg 
b/tests/data/svg/batik/tests/spec/structure/rasterImageViewBoxClip.svg
new file mode 100644
index 0000000..14636da
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/rasterImageViewBoxClip.svg
@@ -0,0 +1,508 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This example validates the handling of viewBox and preserveAspectRatio    -->
+<!-- for <image> elements referencing svg content. This test sets a clip on    -->
+<!-- the <image> tag.                                                          -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: rasterImageViewBoxClip.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>&lt;image&gt; and viewBox &amp; preserveAspectRatio</title>
+
+    <style type="text/css"><![CDATA[
+        .label { text-anchor: middle; }
+        .oddRow { fill:white; stroke:black; }
+        .evenRow { fill:#eeeeee; stroke:black; }
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="30">viewBox &amp; preserveAspectRatio on</text>
+        <text class="title" x="50%" y="50">raster &lt;image&gt; clip set to rect(5,4,3,2)</text>
+
+        <g id="table" class="label" transform="translate(80, 60)">
+            <rect         width="110" height="20" class="oddRow" />
+            <text x="55" y="15">meet</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(110,0)"/>
+            <text x="55" y="15" transform="translate(110, 0)">slice</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(220,0)"/>
+            <text x="55" y="15" transform="translate(220, 0)">unspecified</text>
+
+            <g id="yMXX">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+
+            <g transform="translate(0,120)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <g transform="translate(0,240)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+            <text x="-25" y="80" transform="rotate(-90,-25,80)">xMin</text>
+            
+            <g transform="translate(0,120)">
+                <rect x="-40" y="20" width="20" height="120" class="oddRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMid</text>
+            </g>
+    
+            <g transform="translate(0,240)">
+                <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMax</text>
+            </g>
+    
+            <defs>
+                <g id="row">
+                    <rect width="110" height="40" transform="translate(0  ,20)"/>
+                    <rect width="110" height="40" transform="translate(110,20)"/>
+                    <rect width="110" height="40" transform="translate(220,20)"/>
+                </g>
+            </defs>
+
+            <g id="evenRowBlock">
+                <use xlink:href="#row" class="evenRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,80)"/>
+            </g>
+
+            <g id="oddRowBlock" transform="translate(0,120)">
+                <use xlink:href="#row" class="oddRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,80)"/>
+            </g>
+
+            <use xlink:href="#evenRowBlock" transform="translate(0,240)"/>
+    
+            <rect x="-40" y="380" width="40" height="40" fill="white" stroke="black" />
+            <text x="-15" y="400" transform="rotate(-90, -15, 400)">none</text>
+            <use xlink:href="#row" class="oddRow" transform="translate(0,360)" />
+
+            <line x1="55" y1="20" x2="55" y2="420" stroke="black" />
+            <line x1="165" y1="20" x2="165" y2="420" stroke="black" />
+            <line x1="275" y1="20" x2="275" y2="420" stroke="black" />
+        </g>
+
+        <g id="testCases" transform="translate(80, 80)">
+            <defs>
+                <rect id="hViewBox" x="12.5" y="7.5" width="30" height="25" stroke="red" fill="none"/>     
+                <rect id="vViewBox" x="72.5" y="7.5" width="20" height="25" stroke="red" fill="none"/>     
+                <rect id="hClipBox" x="14.5" y="12.5" width="24" height="17" stroke="#0A0" fill="none"/>     
+                <rect id="vClipBox" x="74.5" y="12.5" width="14" height="17" stroke="#0A0" fill="none"/>     
+            </defs>
+
+            <!-- xMinYXXX XXX -->
+            <g>
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMin meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMin meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMin slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMin slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMin" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMin" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMid meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMid meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMid slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMid slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMid" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMid" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMax meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMax meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMax slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMax slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMax" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMax" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- xMidYXXX XXX -->
+            <g transform="translate(0, 120)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMin meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMin meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMin slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMin slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMin" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMin" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMid meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMid meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMid slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMid slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMid" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMid" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMax meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMax meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMax slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMax slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMax" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMax" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+            </g>
+
+            <!-- xMaxYXXX XXX -->
+            <g transform="translate(0, 240)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMin meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMin meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMin slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMin slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMin" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMin" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMid meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMid meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMid slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMid slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMid" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMid" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMax meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMax meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMax slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMax slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMax" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMax" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- none XXX -->
+            <g transform="translate(0,360)">
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="none meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="none meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="none slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="none slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="none" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="none" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+            </g>
+
+
+
+        </g>
+
+    </g><!-- "content" -->
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/rasterImageViewBoxOverflow.png 
b/tests/data/svg/batik/tests/spec/structure/rasterImageViewBoxOverflow.png
new file mode 100644
index 0000000..a266502
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/rasterImageViewBoxOverflow.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/rasterImageViewBoxOverflow.svg 
b/tests/data/svg/batik/tests/spec/structure/rasterImageViewBoxOverflow.svg
new file mode 100644
index 0000000..b018808
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/rasterImageViewBoxOverflow.svg
@@ -0,0 +1,440 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This example validates the handling of viewBox and preserveAspectRatio    -->
+<!-- for <image> elements.                                                     -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: rasterImageViewBoxOverflow.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>&lt;image&gt; and viewBox &amp; preserveAspectRatio</title>
+
+    <style type="text/css"><![CDATA[
+        .label { text-anchor: middle; }
+        .oddRow { fill:white; stroke:black; }
+        .evenRow { fill:#eeeeee; stroke:black; }
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="30">viewBox &amp; preserveAspectRatio on</text>
+        <text class="title" x="50%" y="50">raster &lt;image&gt; with overflow="visible"</text>
+
+        <g id="table" class="label" transform="translate(80, 60)">
+            <rect         width="110" height="20" class="oddRow" />
+            <text x="55" y="15">meet</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(110,0)"/>
+            <text x="55" y="15" transform="translate(110, 0)">slice</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(220,0)"/>
+            <text x="55" y="15" transform="translate(220, 0)">unspecified</text>
+
+            <g id="yMXX">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+
+            <g transform="translate(0,120)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <g transform="translate(0,240)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+            <text x="-25" y="80" transform="rotate(-90,-25,80)">xMin</text>
+            
+            <g transform="translate(0,120)">
+                <rect x="-40" y="20" width="20" height="120" class="oddRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMid</text>
+            </g>
+    
+            <g transform="translate(0,240)">
+                <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMax</text>
+            </g>
+    
+            <defs>
+                <g id="row">
+                    <rect width="110" height="40" transform="translate(0  ,20)"/>
+                    <rect width="110" height="40" transform="translate(110,20)"/>
+                    <rect width="110" height="40" transform="translate(220,20)"/>
+                </g>
+            </defs>
+
+            <g id="evenRowBlock">
+                <use xlink:href="#row" class="evenRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,80)"/>
+            </g>
+
+            <g id="oddRowBlock" transform="translate(0,120)">
+                <use xlink:href="#row" class="oddRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,80)"/>
+            </g>
+
+            <use xlink:href="#evenRowBlock" transform="translate(0,240)"/>
+    
+            <rect x="-40" y="380" width="40" height="40" fill="white" stroke="black" />
+            <text x="-15" y="400" transform="rotate(-90, -15, 400)">none</text>
+            <use xlink:href="#row" class="oddRow" transform="translate(0,360)" />
+
+            <line x1="55" y1="20" x2="55" y2="420" stroke="black" />
+            <line x1="165" y1="20" x2="165" y2="420" stroke="black" />
+            <line x1="275" y1="20" x2="275" y2="420" stroke="black" />
+        </g>
+
+        <g id="testCases" transform="translate(80, 80)">
+            <defs>
+                <rect id="hViewBox" x="12.5" y="7.5" width="30" height="25" stroke="red" fill="none"/>     
+                <rect id="vViewBox" x="72.5" y="7.5" width="20" height="25" stroke="red" fill="none"/>     
+            </defs>
+
+            <!-- xMinYXXX XXX -->
+            <g>
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMin meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMin meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMin slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMin slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMin" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMin" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMid meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMid meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMid slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMid slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMid" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMid" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMax meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMax meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMax slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMax slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMax" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMinYMax" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- xMidYXXX XXX -->
+            <g transform="translate(0, 120)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMin meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMin meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMin slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMin slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMin" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMin" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMid meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMid meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMid slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMid slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMid" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMid" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMax meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMax meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMax slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMax slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMax" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMidYMax" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+            <!-- xMaxYXXX XXX -->
+            <g transform="translate(0, 240)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMin meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMin meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMin slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMin slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMin" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMin" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMid meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMid meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMid slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMid slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMid" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMid" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMax meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMax meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMax slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMax slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMax" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="xMaxYMax" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- none XXX -->
+            <g transform="translate(0,360)">
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="none meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="none meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="none slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="none slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="none" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/png2.png" overflow="visible" 
preserveAspectRatio="none" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+            </g>
+
+
+
+        </g>
+
+    </g><!-- "content" -->
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/requiredFeatures.png 
b/tests/data/svg/batik/tests/spec/structure/requiredFeatures.png
new file mode 100644
index 0000000..ad3d1a0
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/requiredFeatures.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/requiredFeatures.svg 
b/tests/data/svg/batik/tests/spec/structure/requiredFeatures.svg
new file mode 100644
index 0000000..bb5a9cc
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/requiredFeatures.svg
@@ -0,0 +1,192 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test the 'requiredFeatures' attribute                                     -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: requiredFeatures.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+  <title>Test the 'requiredFeatures' attribute</title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+    <text x="225" y="50" class="title">Test the 'requiredFeatures' attribute</text>
+
+
+    <g style="fill:#eee; stroke:black">
+      <rect x="50" y="80" width="360" height="20" />
+
+      <rect x="30" y="100" width="20" height="85" />
+      <rect x="30" y="185" width="20" height="85" />
+      <rect x="30" y="270" width="20" height="85" />
+      <rect x="30" y="355" width="20" height="85" />
+    </g>
+    <g style="fill:none; stroke:black">
+      <rect x="50" y="80" width="360" height="360" />
+
+      <line x1="170" y1="80" x2="170" y2="440" />
+      <line x1="290" y1="80" x2="290" y2="440" />
+
+      <line x1="50" y1="185" x2="410" y2="185" />
+      <line x1="50" y1="270" x2="410" y2="270" />
+      <line x1="50" y1="355" x2="410" y2="355" />
+    </g>
+    <g style="fill:black; text-anchor:middle;">
+      <text x="110" y="94">default</text>
+      <text x="230" y="94">org.w3c.svg.static</text>
+      <text x="350" y="94">invalid</text>
+
+      <text x="0" y="0" transform="translate(44, 145) rotate(-90)">Graphic Obj.</text>
+      <text x="0" y="0" transform="translate(44, 230) rotate(-90)">&lt;svg></text>
+      <text x="0" y="0" transform="translate(44, 315) rotate(-90)">&lt;g></text>
+      <text x="0" y="0" transform="translate(44, 400) rotate(-90)">&lt;use></text>
+
+    </g>
+
+    <defs>
+
+    </defs>
+
+    <!-- ####################################################################################### -->
+    <g transform="translate(60, 110)">
+      <g>
+        <rect x="0" y="0" width="30" height="20" style="fill:crimson" />
+        <circle cx="50" cy="10" r="10" style="fill:orange" />
+        <ellipse cx="85" cy="10" rx="15" ry="10" style="fill:gold" />
+      </g>
+
+      <g style="stroke-width:3; fill:none">
+        <line x1="0" y1="25" x2="30" y2="45" style="stroke:crimson" />
+        <polyline points="35 25 45 42 55 25 65 42" style="stroke:orange" />
+        <polygon points="70 25 80 42 90 25 100 42" style="fill: gold" />
+      </g>
+
+      <g style="stroke-width:3; fill:none">
+        <path d="M0 60C5 55 10 55 15 60C20 65 25 65 30 60" style="stroke:gold" />
+        <image xlink:href="../../resources/images/tde.jpg" x="35" y="50" width="30" height="20" />
+        <text x="85" y="65" style="fill:black; stroke:none; text-anchor:middle">text</text>
+      </g>
+
+    </g>
+
+    <g transform="translate(180, 110)">
+      <g>
+        <rect x="0" y="0" width="30" height="20" style="fill:crimson" requiredFeatures="org.w3c.svg.static" 
/>
+        <circle cx="50" cy="10" r="10" style="fill:orange" requiredFeatures="org.w3c.svg.static"/>
+        <ellipse cx="85" cy="10" rx="15" ry="10" style="fill:gold" requiredFeatures="org.w3c.svg.static"/>
+      </g>
+
+      <g style="stroke-width:3; fill:none">
+        <line x1="0" y1="25" x2="30" y2="45" style="stroke:crimson" requiredFeatures="org.w3c.svg.static"/>
+        <polyline points="35 25 45 42 55 25 65 42" style="stroke:orange" 
requiredFeatures="org.w3c.svg.static"/>
+        <polygon points="70 25 80 42 90 25 100 42" style="fill: gold" requiredFeatures="org.w3c.svg.static"/>
+      </g>
+
+      <g style="stroke-width:3; fill:none">
+        <path d="M0 60C5 55 10 55 15 60C20 65 25 65 30 60" style="stroke:gold" 
requiredFeatures="org.w3c.svg.static"/>
+        <image xlink:href="../../resources/images/tde.jpg" x="35" y="50" width="30" height="20" 
requiredFeatures="org.w3c.svg.static"/>
+        <text x="85" y="65" style="fill:black; stroke:none; text-anchor:middle" 
requiredFeatures="org.w3c.svg.static">text</text>
+      </g>
+
+    </g>
+
+    <g transform="translate(300, 110)">
+      <g>
+        <rect x="0" y="0" width="30" height="20" style="fill:crimson" requiredFeatures="invalid"/>
+        <circle cx="50" cy="10" r="10" style="fill:orange" requiredFeatures="invalid"/>
+        <ellipse cx="85" cy="10" rx="15" ry="10" style="fill:gold" requiredFeatures="invalid"/>
+      </g>
+
+      <g style="stroke-width:3; fill:none">
+        <line x1="0" y1="25" x2="30" y2="45" style="stroke:crimson" requiredFeatures="invalid"/>
+        <polyline points="35 25 45 42 55 25 65 42" style="stroke:orange" requiredFeatures="invalid"/>
+        <polygon points="70 25 80 42 90 25 100 42" style="fill: gold" requiredFeatures="invalid"/>
+      </g>
+
+      <g style="stroke-width:3; fill:none">
+        <path d="M0 60C5 55 10 55 15 60C20 65 25 65 30 60" style="stroke:gold" requiredFeatures="invalid"/>
+        <image xlink:href="../../resources/images/tde.jpg" x="35" y="50" width="30" height="20" 
requiredFeatures="invalid"/>
+        <text x="85" y="65" style="fill:black; stroke:none; text-anchor:middle" 
requiredFeatures="invalid">text</text>
+      </g>
+
+    </g>
+    <!-- ####################################################################################### -->
+
+    <g style="fill:crimson">
+      <svg x="52" y="187" width="116" height="81">
+        <rect x="0" y="0" width="100%" height="100%" />
+      </svg>
+
+      <svg x="172" y="187" width="116" height="81" requiredFeatures="org.w3c.svg.static">
+        <rect x="0" y="0" width="100%" height="100%" />
+      </svg>
+
+      <svg x="292" y="187" width="116" height="81" requiredFeatures="invalid">
+        <rect x="0" y="0" width="100%" height="100%" />
+      </svg>
+    </g>
+
+    <!-- ####################################################################################### -->
+    <g style="fill:crimson" transform="translate(0 85)">
+      <g>
+        <rect x="52" y="187" width="116" height="81" />
+      </g>
+
+      <g>
+        <rect x="172" y="187" width="116" height="81" requiredFeatures="org.w3c.svg.static" />
+      </g>
+
+      <g>
+        <rect x="292" y="187" width="116" height="81" requiredFeatures="invalid" />
+      </g>
+    </g>
+    <!-- ####################################################################################### -->
+    <defs>
+      <rect id="use" x="0" y="0" width="116" height="81" style="fill:crimson"/>
+    </defs>
+
+    <g>
+
+      <use xlink:href="#use" x="52" y="357" />
+
+      <use xlink:href="#use" x="172" y="357" requiredFeatures="org.w3c.svg.static" />
+
+      <use xlink:href="#use" x="292" y="357"   requiredFeatures="invalid" />
+
+    </g>
+
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/requiredFeaturesCombo.png 
b/tests/data/svg/batik/tests/spec/structure/requiredFeaturesCombo.png
new file mode 100644
index 0000000..58f0911
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/requiredFeaturesCombo.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/requiredFeaturesCombo.svg 
b/tests/data/svg/batik/tests/spec/structure/requiredFeaturesCombo.svg
new file mode 100644
index 0000000..b76f384
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/requiredFeaturesCombo.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test the 'requiredFeatures' attribtue combo                               -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: requiredFeaturesCombo.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+  <title>Test the 'requiredFeatures' attribute combo</title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+    <text x="225" y="50" class="title">Test the 'requiredFeatures' attribute combo</text>
+
+    <g style="stroke:black; fill:#eee">
+      <rect x="45" y="80" width="120" height="20" />
+      <rect x="165" y="80" width="120" height="20" />
+      <rect x="285" y="80" width="120" height="20" />
+
+      <rect x="25" y="100" width="20" height="120" />
+      <rect x="25" y="220" width="20" height="120" />
+      <rect x="25" y="340" width="20" height="120" />
+    </g>
+    <g style="stroke:black; fill:none">
+      <rect x="45" y="100" width="360" height="360" />
+
+      <line x1="165" y1="100" x2="165" y2="460" />
+      <line x1="285" y1="100" x2="285" y2="460" />
+
+      <line x1="45" y1="220" x2="405" y2="220" />
+
+      <line x1="45" y1="340" x2="405" y2="340" />
+    </g>
+    <g style="stroke:none; fill:black; text-anchor:middle">
+      <text x="105" y="94">org.w3c.svg</text>
+      <text x="225" y="94">org.w3c.svg.static</text>
+      <text x="345" y="94">invalid</text>
+
+      <text x="0" y="0" transform="translate(40 160) rotate(-90)">org.w3c.svg</text>
+      <text x="0" y="0" transform="translate(40 280) rotate(-90)">org.w3c.svg.static</text>
+      <text x="0" y="0" transform="translate(40 400) rotate(-90)">invalid</text>
+    </g>
+
+
+    <rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="org.w3c.svg" />
+    <rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="org.w3c.svg 
org.w3c.svg.static" transform="translate(120 0)" />
+    <rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="org.w3c.svg invalid" 
transform="translate(240 0)" />
+
+    <g transform="translate(0 120)">
+      <rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="org.w3c.svg.static 
org.w3c.svg" />
+      <rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="org.w3c.svg.static" 
transform="translate(120 0)" />
+      <rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="org.w3c.svg.static 
invalid" transform="translate(240 0)" />
+    </g>
+
+    <g transform="translate(0 240)">
+      <rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="invalid 
org.w3c.svg"/>
+      <rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="invalid 
org.w3c.svg.static" transform="translate(120 0)" />
+      <rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="invalid" 
transform="translate(240 0)" />
+    </g>
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/svgImageViewBox.png 
b/tests/data/svg/batik/tests/spec/structure/svgImageViewBox.png
new file mode 100644
index 0000000..62f20b9
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/svgImageViewBox.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/svgImageViewBox.svg 
b/tests/data/svg/batik/tests/spec/structure/svgImageViewBox.svg
new file mode 100644
index 0000000..a428bf9
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/svgImageViewBox.svg
@@ -0,0 +1,456 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This example validates the handling of viewBox and preserveAspectRatio    -->
+<!-- for <image> elements.                                                     -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: svgImageViewBox.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>&lt;image&gt; and viewBox &amp; preserveAspectRatio</title>
+
+    <style type="text/css"><![CDATA[
+        .label { text-anchor: middle; }
+        .oddRow { fill:white; stroke:black; }
+        .evenRow { fill:#eeeeee; stroke:black; }
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="30">viewBox &amp; preserveAspectRatio</text>
+        <text class="title" x="50%" y="50">on svg &lt;image&gt;</text>
+
+        <g id="table" class="label" transform="translate(80, 60)">
+            <rect         width="110" height="20" class="oddRow" />
+            <text x="55" y="15">meet</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(110,0)"/>
+            <text x="55" y="15" transform="translate(110, 0)">slice</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(220,0)"/>
+            <text x="55" y="15" transform="translate(220, 0)">unspecified</text>
+
+            <g id="yMXX">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+
+            <g transform="translate(0,120)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <g transform="translate(0,240)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+            <text x="-25" y="80" transform="rotate(-90,-25,80)">xMin</text>
+            
+            <g transform="translate(0,120)">
+                <rect x="-40" y="20" width="20" height="120" class="oddRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMid</text>
+            </g>
+    
+            <g transform="translate(0,240)">
+                <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMax</text>
+            </g>
+    
+            <defs>
+                <g id="row">
+                    <rect width="110" height="40" transform="translate(0  ,20)"/>
+                    <rect width="110" height="40" transform="translate(110,20)"/>
+                    <rect width="110" height="40" transform="translate(220,20)"/>
+                </g>
+            </defs>
+
+            <g id="evenRowBlock">
+                <use xlink:href="#row" class="evenRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,80)"/>
+            </g>
+
+            <g id="oddRowBlock" transform="translate(0,120)">
+                <use xlink:href="#row" class="oddRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,80)"/>
+            </g>
+
+            <use xlink:href="#evenRowBlock" transform="translate(0,240)"/>
+    
+            <rect x="-40" y="380" width="40" height="40" fill="white" stroke="black" />
+            <text x="-15" y="400" transform="rotate(-90, -15, 400)">none</text>
+            <use xlink:href="#row" class="oddRow" transform="translate(0,360)" />
+
+            <line x1="55" y1="20" x2="55" y2="420" stroke="black" />
+            <line x1="165" y1="20" x2="165" y2="420" stroke="black" />
+            <line x1="275" y1="20" x2="275" y2="420" stroke="black" />
+        </g>
+
+        <g id="testCases" transform="translate(80, 80)">
+            <defs>
+                <rect id="hViewBox" x="5" y="5" width="45" height="30" stroke="red" fill="none"/>     
+                <rect id="vViewBox" x="70" y="5" width="25" height="30" stroke="red" fill="none"/>     
+                <g id="smilley">
+                    <g  transform="translate(-15,-15)" >
+                        <rect x="5" y="5" width="20" height="20" fill="black" />
+                        <!-- <circle cx="10" cy="25" r="4" fill="crimson" />
+                        <circle cx="20" cy="25" r="4" fill="crimson" /> -->
+                        <circle cx="15" cy="15" r="10" fill="yellow"/>
+                        <circle cx="12" cy="12" r="1.5" fill="black"/>
+                        <circle cx="17" cy="12" r="1.5" fill="black"/>
+                        <path d="M 10 19 A 8 8 0 0 0 20 19" stroke="black" stroke-width="1" fill="none"/>
+                    </g>
+                </g>
+            </defs>
+
+            <!-- xMinYXXX XXX -->
+            <g>
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMin 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMin 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMin 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMin 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMin" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMin" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMid 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMid 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMid 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMid 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMid" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMid" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMax 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMax 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMax 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMax 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMax" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMinYMax" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- xMidYXXX XXX -->
+            <g transform="translate(0, 120)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMin 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMin 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMin 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMin 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMin" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMin" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMid 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMid 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMid 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMid 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMid" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMid" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMax 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMax 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMax 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMax 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMax" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMidYMax" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+            <!-- xMaxYXXX XXX -->
+            <g transform="translate(0, 240)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMin 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMin 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMin 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMin 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMin" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMin" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMid 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMid 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMid 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMid 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMid" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMid" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMax 
meet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMax 
meet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMax 
slice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMax 
slice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMax" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="xMaxYMax" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- none XXX -->
+            <g transform="translate(0,360)">
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="none meet" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="none meet" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="none slice" 
x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="none slice" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="none" x="5" 
y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg2.svg" preserveAspectRatio="none" 
x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+            </g>
+
+
+
+        </g>
+
+    </g><!-- "content" -->
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/svgImageViewBoxClip.png 
b/tests/data/svg/batik/tests/spec/structure/svgImageViewBoxClip.png
new file mode 100644
index 0000000..496dfb1
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/svgImageViewBoxClip.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/svgImageViewBoxClip.svg 
b/tests/data/svg/batik/tests/spec/structure/svgImageViewBoxClip.svg
new file mode 100644
index 0000000..c4395a1
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/svgImageViewBoxClip.svg
@@ -0,0 +1,508 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This example validates the handling of viewBox and preserveAspectRatio    -->
+<!-- for <image> elements referencing svg content. This test sets a clip on    -->
+<!-- the <image> tag.                                                          -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: svgImageViewBoxClip.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>&lt;image&gt; and viewBox &amp; preserveAspectRatio</title>
+
+    <style type="text/css"><![CDATA[
+        .label { text-anchor: middle; }
+        .oddRow { fill:white; stroke:black; }
+        .evenRow { fill:#eeeeee; stroke:black; }
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="30">viewBox &amp; preserveAspectRatio on</text>
+        <text class="title" x="50%" y="50">svg &lt;image&gt;clip set to rect(5,4,3,2)</text>
+
+        <g id="table" class="label" transform="translate(80, 60)">
+            <rect         width="110" height="20" class="oddRow" />
+            <text x="55" y="15">meet</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(110,0)"/>
+            <text x="55" y="15" transform="translate(110, 0)">slice</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(220,0)"/>
+            <text x="55" y="15" transform="translate(220, 0)">unspecified</text>
+
+            <g id="yMXX">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+
+            <g transform="translate(0,120)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <g transform="translate(0,240)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+            <text x="-25" y="80" transform="rotate(-90,-25,80)">xMin</text>
+            
+            <g transform="translate(0,120)">
+                <rect x="-40" y="20" width="20" height="120" class="oddRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMid</text>
+            </g>
+    
+            <g transform="translate(0,240)">
+                <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMax</text>
+            </g>
+    
+            <defs>
+                <g id="row">
+                    <rect width="110" height="40" transform="translate(0  ,20)"/>
+                    <rect width="110" height="40" transform="translate(110,20)"/>
+                    <rect width="110" height="40" transform="translate(220,20)"/>
+                </g>
+            </defs>
+
+            <g id="evenRowBlock">
+                <use xlink:href="#row" class="evenRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,80)"/>
+            </g>
+
+            <g id="oddRowBlock" transform="translate(0,120)">
+                <use xlink:href="#row" class="oddRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,80)"/>
+            </g>
+
+            <use xlink:href="#evenRowBlock" transform="translate(0,240)"/>
+    
+            <rect x="-40" y="380" width="40" height="40" fill="white" stroke="black" />
+            <text x="-15" y="400" transform="rotate(-90, -15, 400)">none</text>
+            <use xlink:href="#row" class="oddRow" transform="translate(0,360)" />
+
+            <line x1="55" y1="20" x2="55" y2="420" stroke="black" />
+            <line x1="165" y1="20" x2="165" y2="420" stroke="black" />
+            <line x1="275" y1="20" x2="275" y2="420" stroke="black" />
+        </g>
+
+        <g id="testCases" transform="translate(80, 80)">
+            <defs>
+                <rect id="hViewBox" x="12.5" y="7.5" width="30" height="25" stroke="red" fill="none"/>     
+                <rect id="vViewBox" x="72.5" y="7.5" width="20" height="25" stroke="red" fill="none"/>     
+                <rect id="hClipBox" x="14.5" y="12.5" width="24" height="17" stroke="#0A0" fill="none"/>     
+                <rect id="vClipBox" x="74.5" y="12.5" width="14" height="17" stroke="#0A0" fill="none"/>     
+            </defs>
+
+            <!-- xMinYXXX XXX -->
+            <g>
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMin meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMin meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMin slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMin slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMin" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMin" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMid meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMid meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMid slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMid slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMid" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMid" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMax meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMax meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMax slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMax slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMax" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMax" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- xMidYXXX XXX -->
+            <g transform="translate(0, 120)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMin meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMin meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMin slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMin slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMin" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMin" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMid meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMid meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMid slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMid slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMid" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMid" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMax meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMax meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMax slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMax slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMax" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMidYMax" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+            </g>
+
+            <!-- xMaxYXXX XXX -->
+            <g transform="translate(0, 240)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMin meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMin meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMin slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMin slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMin" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMin" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMid meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMid meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMid slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMid slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMid" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMid" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMax meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMax meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMax slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMax slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMax" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMaxYMax" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- none XXX -->
+            <g transform="translate(0,360)">
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="none meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="none meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="none slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="none slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="none" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="hidden" 
clip="rect(5,4,3,2)" preserveAspectRatio="none" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+            </g>
+
+
+
+        </g>
+
+    </g><!-- "content" -->
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/svgImageViewBoxOverflow.png 
b/tests/data/svg/batik/tests/spec/structure/svgImageViewBoxOverflow.png
new file mode 100644
index 0000000..7c72dd8
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/svgImageViewBoxOverflow.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/svgImageViewBoxOverflow.svg 
b/tests/data/svg/batik/tests/spec/structure/svgImageViewBoxOverflow.svg
new file mode 100644
index 0000000..0b173d0
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/svgImageViewBoxOverflow.svg
@@ -0,0 +1,445 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This example validates the handling of viewBox and preserveAspectRatio    -->
+<!-- for <image> elements.                                                     -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: svgImageViewBoxOverflow.svg 475477 2006-11-15 22:44:28Z cam $  -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>&lt;image&gt; and viewBox &amp; preserveAspectRatio</title>
+
+    <style type="text/css"><![CDATA[
+        .label { text-anchor: middle; }
+        .oddRow { fill:white; stroke:black; }
+        .evenRow { fill:#eeeeee; stroke:black; }
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="30">viewBox &amp; preserveAspectRatio</text>
+        <text class="title" x="50%" y="50">on svg &lt;image&gt;, overflow="visible"</text>
+
+        <g id="table" class="label" transform="translate(80, 60)">
+            <rect         width="110" height="20" class="oddRow" />
+            <text x="55" y="15">meet</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(110,0)"/>
+            <text x="55" y="15" transform="translate(110, 0)">slice</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(220,0)"/>
+            <text x="55" y="15" transform="translate(220, 0)">unspecified</text>
+
+            <g id="yMXX">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+
+            <g transform="translate(0,120)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <g transform="translate(0,240)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+            <text x="-25" y="80" transform="rotate(-90,-25,80)">xMin</text>
+            
+            <g transform="translate(0,120)">
+                <rect x="-40" y="20" width="20" height="120" class="oddRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMid</text>
+            </g>
+    
+            <g transform="translate(0,240)">
+                <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMax</text>
+            </g>
+    
+            <defs>
+                <g id="row">
+                    <rect width="110" height="40" transform="translate(0  ,20)"/>
+                    <rect width="110" height="40" transform="translate(110,20)"/>
+                    <rect width="110" height="40" transform="translate(220,20)"/>
+                </g>
+            </defs>
+
+            <g id="evenRowBlock">
+                <use xlink:href="#row" class="evenRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,80)"/>
+            </g>
+
+            <g id="oddRowBlock" transform="translate(0,120)">
+                <use xlink:href="#row" class="oddRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,80)"/>
+            </g>
+
+            <use xlink:href="#evenRowBlock" transform="translate(0,240)"/>
+    
+            <rect x="-40" y="380" width="40" height="40" fill="white" stroke="black" />
+            <text x="-15" y="400" transform="rotate(-90, -15, 400)">none</text>
+            <use xlink:href="#row" class="oddRow" transform="translate(0,360)" />
+
+            <line x1="55" y1="20" x2="55" y2="420" stroke="black" />
+            <line x1="165" y1="20" x2="165" y2="420" stroke="black" />
+            <line x1="275" y1="20" x2="275" y2="420" stroke="black" />
+        </g>
+
+        <g id="testCases" transform="translate(80, 80)">
+            <defs>
+                <rect id="hViewBox" x="12.5" y="7.5" width="30" height="25" stroke="red" fill="none"/>     
+                <rect id="vViewBox" x="72.5" y="7.5" width="20" height="25" stroke="red" fill="none"/>     
+            </defs>
+
+            <!-- xMinYXXX XXX -->
+            <g>
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMin meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMin meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMin slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMin slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMin" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMin" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMid meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMid meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMid slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMid slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMid" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMid" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMax meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMax meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMax slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMax slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMax" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMinYMax" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- xMidYXXX XXX -->
+            <g transform="translate(0, 120)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMin meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMin meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMin slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMin slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMin" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMin" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMid meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMid meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMid slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMid slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMid" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMid" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMax meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMax meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMax slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMax slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMax" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMidYMax" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+            <!-- xMaxYXXX XXX -->
+            <g transform="translate(0, 240)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMin meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMin meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMin slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMin slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMin" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMin" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMid meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMid meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMid slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMid slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMid" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMid" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMax meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMax meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMax slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMax slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMax" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="xMaxYMax" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- none XXX -->
+            <g transform="translate(0,360)">
+                <g>
+                    <g>
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="none meet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="none meet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="none slice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="none slice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="none" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <image xlink:href="../../resources/images/svg3.svg" overflow="visible" 
preserveAspectRatio="none" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+            </g>
+
+
+
+        </g>
+
+    </g><!-- "content" -->
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/switch.png 
b/tests/data/svg/batik/tests/spec/structure/switch.png
new file mode 100644
index 0000000..487b3fa
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/switch.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/switch.svg 
b/tests/data/svg/batik/tests/spec/structure/switch.svg
new file mode 100644
index 0000000..0d4f181
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/switch.svg
@@ -0,0 +1,57 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Image element references an SVG file                                      -->
+<!--                                                                           -->
+<!-- @author Thierry Kormann sophia inria fr                                   -->
+<!-- @version $Id: switch.svg 475477 2006-11-15 22:44:28Z cam $     -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     width="450" height="500" viewBox="0 0 450 500">
+<title>Switch element with transform</title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+    <text x="225" y="30" class="title">Switch element with transform</text>
+
+    <switch transform="translate(100, -50)">
+      <rect fill="red" x="0" y="0" width="225" height="225"
+            requiredExtensions="http://example.org/bogus"/>
+      <rect fill="green" x="0" y="225" width="225" height="225"/>
+      <rect fill="blue" x="225" y="0" width="225" height="225"/>
+    </switch>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/symbolViewBox.png 
b/tests/data/svg/batik/tests/spec/structure/symbolViewBox.png
new file mode 100644
index 0000000..4f76880
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/symbolViewBox.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/symbolViewBox.svg 
b/tests/data/svg/batik/tests/spec/structure/symbolViewBox.svg
new file mode 100644
index 0000000..9da1856
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/symbolViewBox.svg
@@ -0,0 +1,545 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This example validates the handling of viewBox and preserveAspectRatio    -->
+<!-- for <symbol> elements.                                                    -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: symbolViewBox.svg 475477 2006-11-15 22:44:28Z cam $   -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>&lt;symbol&gt; and viewBox &amp; preserveAspectRatio</title>
+
+    <style type="text/css"><![CDATA[
+        .label { text-anchor: middle; }
+        .oddRow { fill:white; stroke:black; }
+        .evenRow { fill:#eeeeee; stroke:black; }
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="40">viewBox &amp; preserveAspectRatio on &lt;symbol&gt;</text>
+
+        <g id="table" class="label" transform="translate(80, 60)">
+            <rect         width="110" height="20" class="oddRow" />
+            <text x="55" y="15">meet</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(110,0)"/>
+            <text x="55" y="15" transform="translate(110, 0)">slice</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(220,0)"/>
+            <text x="55" y="15" transform="translate(220, 0)">unspecified</text>
+
+            <g id="yMXX">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+
+            <g transform="translate(0,120)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <g transform="translate(0,240)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+            <text x="-25" y="80" transform="rotate(-90,-25,80)">xMin</text>
+            
+            <g transform="translate(0,120)">
+                <rect x="-40" y="20" width="20" height="120" class="oddRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMid</text>
+            </g>
+    
+            <g transform="translate(0,240)">
+                <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMax</text>
+            </g>
+    
+            <defs>
+                <g id="row">
+                    <rect width="110" height="40" transform="translate(0  ,20)"/>
+                    <rect width="110" height="40" transform="translate(110,20)"/>
+                    <rect width="110" height="40" transform="translate(220,20)"/>
+                </g>
+            </defs>
+
+            <g id="evenRowBlock">
+                <use xlink:href="#row" class="evenRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,80)"/>
+            </g>
+
+            <g id="oddRowBlock" transform="translate(0,120)">
+                <use xlink:href="#row" class="oddRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,80)"/>
+            </g>
+
+            <use xlink:href="#evenRowBlock" transform="translate(0,240)"/>
+    
+            <rect x="-40" y="380" width="40" height="40" fill="white" stroke="black" />
+            <text x="-15" y="400" transform="rotate(-90, -15, 400)">none</text>
+            <use xlink:href="#row" class="oddRow" transform="translate(0,360)" />
+
+            <line x1="55" y1="20" x2="55" y2="420" stroke="black" />
+            <line x1="165" y1="20" x2="165" y2="420" stroke="black" />
+            <line x1="275" y1="20" x2="275" y2="420" stroke="black" />
+        </g>
+
+        <g id="testCases" transform="translate(80, 80)">
+            <defs>
+                <rect id="hViewBox" x="5" y="5" width="45" height="30" stroke="red" fill="none"/>     
+                <rect id="vViewBox" x="70" y="5" width="25" height="30" stroke="red" fill="none"/>     
+                <g id="smilley">
+                    <g  transform="translate(-15,-15)" >
+                        <rect x="5" y="5" width="20" height="20" fill="black" />
+                        <!-- <circle cx="10" cy="25" r="4" fill="crimson" />
+                        <circle cx="20" cy="25" r="4" fill="crimson" /> -->
+                        <circle cx="15" cy="15" r="10" fill="yellow"/>
+                        <circle cx="12" cy="12" r="1.5" fill="black"/>
+                        <circle cx="17" cy="12" r="1.5" fill="black"/>
+                        <path d="M 10 19 A 8 8 0 0 0 20 19" stroke="black" stroke-width="1" fill="none"/>
+                    </g>
+                </g>
+            </defs>
+
+            <!-- xMinYXXX XXX -->
+            <g>
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <symbol id="xMinYMinMeet" viewBox="-10 -10 20 20" preserveAspectRatio="xMinYMin 
meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMinMeet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMinMeet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMinYMinSlice" viewBox="-10 -10 20 20" preserveAspectRatio="xMinYMin 
slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMinSlice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMinSlice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMinYMinUnspecified" viewBox="-10 -10 20 20" 
preserveAspectRatio="xMinYMin">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMinUnspecified" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMinUnspecified" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <symbol id="xMinYMidMeet" viewBox="-10 -10 20 20" preserveAspectRatio="xMinYMid 
meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMidMeet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMidMeet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMinYMidSlice" viewBox="-10 -10 20 20" preserveAspectRatio="xMinYMid 
slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMidSlice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMidSlice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMinYMidUnspecified" viewBox="-10 -10 20 20" 
preserveAspectRatio="xMinYMid">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMidUnspecified" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMidUnspecified" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <symbol id="xMinYMaxMeet" viewBox="-10 -10 20 20" preserveAspectRatio="xMinYMax 
meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMaxMeet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMaxMeet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMinYMaxSlice" viewBox="-10 -10 20 20" preserveAspectRatio="xMinYMax 
slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMaxSlice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMaxSlice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMinYMaxUnspecified" viewBox="-10 -10 20 20" 
preserveAspectRatio="xMinYMax">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMaxUnspecified" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMaxUnspecified" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- xMidYXXX XXX -->
+            <g transform="translate(0, 120)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <symbol id="xMidYMinMeet" viewBox="-10 -10 20 20" preserveAspectRatio="xMidYMin 
meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMinMeet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMinMeet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMidYMinSlice" viewBox="-10 -10 20 20" preserveAspectRatio="xMidYMin 
slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMinSlice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMinSlice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMidYMinUnspecified" viewBox="-10 -10 20 20" 
preserveAspectRatio="xMidYMin">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMinUnspecified" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMinUnspecified" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <symbol id="xMidYMidMeet" viewBox="-10 -10 20 20" preserveAspectRatio="xMidYMid 
meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMidMeet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMidMeet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMidYMidSlice" viewBox="-10 -10 20 20" preserveAspectRatio="xMidYMid 
slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMidSlice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMidSlice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMidYMidUnspecified" viewBox="-10 -10 20 20" 
preserveAspectRatio="xMidYMid">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMidUnspecified" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMidUnspecified" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <symbol id="xMidYMaxMeet" viewBox="-10 -10 20 20" preserveAspectRatio="xMidYMax 
meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMaxMeet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMaxMeet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMidYMaxSlice" viewBox="-10 -10 20 20" preserveAspectRatio="xMidYMax 
slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMaxSlice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMaxSlice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMidYMaxUnspecified" viewBox="-10 -10 20 20" 
preserveAspectRatio="xMidYMax">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMaxUnspecified" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMaxUnspecified" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+            <!-- xMaxYXXX XXX -->
+            <g transform="translate(0, 240)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <symbol id="xMaxYMinMeet" viewBox="-10 -10 20 20" preserveAspectRatio="xMaxYMin 
meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMinMeet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMinMeet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMaxYMinSlice" viewBox="-10 -10 20 20" preserveAspectRatio="xMaxYMin 
slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMinSlice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMinSlice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMaxYMinUnspecified" viewBox="-10 -10 20 20" 
preserveAspectRatio="xMaxYMin">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMinUnspecified" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMinUnspecified" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <symbol id="xMaxYMidMeet" viewBox="-10 -10 20 20" preserveAspectRatio="xMaxYMid 
meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMidMeet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMidMeet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMaxYMidSlice" viewBox="-10 -10 20 20" preserveAspectRatio="xMaxYMid 
slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMidSlice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMidSlice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMaxYMidUnspecified" viewBox="-10 -10 20 20" 
preserveAspectRatio="xMaxYMid">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMidUnspecified" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMidUnspecified" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <symbol id="xMaxYMaxMeet" viewBox="-10 -10 20 20" preserveAspectRatio="xMaxYMax 
meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMaxMeet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMaxMeet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMaxYMaxSlice" viewBox="-10 -10 20 20" preserveAspectRatio="xMaxYMax 
slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMaxSlice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMaxSlice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMaxYMaxUnspecified" viewBox="-10 -10 20 20" 
preserveAspectRatio="xMaxYMax">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMaxUnspecified" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMaxUnspecified" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- none XXX -->
+            <g transform="translate(0,360)">
+                <g>
+                    <g>
+                        <symbol id="noneMeet" viewBox="-10 -10 20 20" preserveAspectRatio="none meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#noneMeet" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#noneMeet" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="noneSlice" viewBox="-10 -10 20 20" preserveAspectRatio="none slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#noneSlice" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#noneSlice" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="noneUnspecified" viewBox="-10 -10 20 20" preserveAspectRatio="none">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#noneUnspecified" x="5" y="5" width="45" height="30" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#noneUnspecified" x="70" y="5" width="25" height="30" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+            </g>
+
+
+
+        </g>
+
+    </g><!-- "content" -->
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/symbolViewBoxClip.png 
b/tests/data/svg/batik/tests/spec/structure/symbolViewBoxClip.png
new file mode 100644
index 0000000..0bdc923
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/symbolViewBoxClip.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/symbolViewBoxClip.svg 
b/tests/data/svg/batik/tests/spec/structure/symbolViewBoxClip.svg
new file mode 100644
index 0000000..f256d7e
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/symbolViewBoxClip.svg
@@ -0,0 +1,645 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This example validates the handling of viewBox and preserveAspectRatio    -->
+<!-- for <symbol> elements with overflow set to hidden and a clip specified.   -->
+<!-- <symbol> elements establish a new viewport and therefore, the overflow    -->
+<!-- property applies.                                                         -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: symbolViewBoxClip.svg 475477 2006-11-15 22:44:28Z cam $    -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>&lt;symbol&gt; and viewBox &amp; preserveAspectRatio</title>
+
+    <style type="text/css"><![CDATA[
+        .label { text-anchor: middle; }
+        .oddRow { fill:white; stroke:black; }
+        .evenRow { fill:#eeeeee; stroke:black; }
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="30">viewBox &amp; preserveAspectRatio on &lt;symbol&gt;
+            <title>viewBox &amp; preserveAspectRatio on &lt;symbol&gt;</title>
+            <desc>This test validates the processing of viewBox and preserveAspectRatio
+                  on &lt;symbol&gt; elements in conjunction with the overflow property.
+                  In this test, there should be a clipping beyond the viewBox boundaries
+                  and the smilley&apos;s ears and feet should show partially.</desc></text>
+        <text class="title" x="50%" y="50">clip set to rect(5,4,3,2)</text>
+
+        <g id="table" class="label" transform="translate(80, 60)">
+            <rect         width="110" height="20" class="oddRow" />
+            <text x="55" y="15">meet</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(110,0)"/>
+            <text x="55" y="15" transform="translate(110, 0)">slice</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(220,0)"/>
+            <text x="55" y="15" transform="translate(220, 0)">unspecified</text>
+
+            <g id="yMXX">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+
+            <g transform="translate(0,120)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <g transform="translate(0,240)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+            <text x="-25" y="80" transform="rotate(-90,-25,80)">xMin</text>
+            
+            <g transform="translate(0,120)">
+                <rect x="-40" y="20" width="20" height="120" class="oddRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMid</text>
+            </g>
+    
+            <g transform="translate(0,240)">
+                <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMax</text>
+            </g>
+    
+            <defs>
+                <g id="row">
+                    <rect width="110" height="40" transform="translate(0  ,20)"/>
+                    <rect width="110" height="40" transform="translate(110,20)"/>
+                    <rect width="110" height="40" transform="translate(220,20)"/>
+                </g>
+            </defs>
+
+            <g id="evenRowBlock">
+                <use xlink:href="#row" class="evenRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,80)"/>
+            </g>
+
+            <g id="oddRowBlock" transform="translate(0,120)">
+                <use xlink:href="#row" class="oddRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,80)"/>
+            </g>
+
+            <use xlink:href="#evenRowBlock" transform="translate(0,240)"/>
+    
+            <rect x="-40" y="380" width="40" height="40" fill="white" stroke="black" />
+            <text x="-15" y="400" transform="rotate(-90, -15, 400)">none</text>
+            <use xlink:href="#row" class="oddRow" transform="translate(0,360)" />
+
+            <line x1="55" y1="20" x2="55" y2="420" stroke="black" />
+            <line x1="165" y1="20" x2="165" y2="420" stroke="black" />
+            <line x1="275" y1="20" x2="275" y2="420" stroke="black" />
+        </g>
+
+        <g id="testCases" transform="translate(80, 80)">
+            <defs>
+                <rect id="hViewBox" x="12.5" y="7.5" width="30" height="25" stroke="red" fill="none"/>     
+                <rect id="vViewBox" x="72.5" y="7.5" width="20" height="25" stroke="red" fill="none"/>     
+                <rect id="hClipBox" x="14.5" y="12.5" width="24" height="17" stroke="#0A0" fill="none"/>     
+                <rect id="vClipBox" x="74.5" y="12.5" width="14" height="17" stroke="#0A0" fill="none"/>     
+                <g id="smilley">
+                    <g  transform="translate(-15,-15)" >
+                        <circle cx="10" cy="25" r="4" fill="crimson" />
+                        <circle cx="20" cy="25" r="4" fill="crimson" /> 
+                        <circle cx="7" cy="15" r="4" fill="crimson" />
+                        <circle cx="23" cy="15" r="4" fill="crimson" /> 
+                        <circle cx="15" cy="15" r="10" fill="yellow"/>
+                        <circle cx="12" cy="12" r="1.5" fill="black"/>
+                        <circle cx="17" cy="12" r="1.5" fill="black"/>
+                        <path d="M 10 19 A 8 8 0 0 0 20 19" stroke="black" stroke-width="1" fill="none"/>
+                    </g>
+                </g>
+            </defs>
+
+            <!-- xMinYXXX XXX -->
+            <g>
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <symbol id="xMinYMinMeet" overflow="hidden"  viewBox="-10 -10 20 20" 
clip="rect(5,4,3,2)" preserveAspectRatio="xMinYMin meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMinMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+                        <use xlink:href="#xMinYMinMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMinYMinSlice" overflow="hidden"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMinYMin slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMinSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMinYMinSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMinYMinUnspecified" overflow="hidden" clip="rect(5,4,3,2)"  
viewBox="-10 -10 20 20" preserveAspectRatio="xMinYMin">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMinUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMinYMinUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <symbol id="xMinYMidMeet" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 
20 20" preserveAspectRatio="xMinYMid meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMidMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMinYMidMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMinYMidSlice" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 
20 20" preserveAspectRatio="xMinYMid slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMidSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMinYMidSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMinYMidUnspecified" overflow="hidden" clip="rect(5,4,3,2)"  
viewBox="-10 -10 20 20" preserveAspectRatio="xMinYMid">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMidUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMinYMidUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <symbol id="xMinYMaxMeet" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 
20 20" preserveAspectRatio="xMinYMax meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMaxMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMinYMaxMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMinYMaxSlice" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 
20 20" preserveAspectRatio="xMinYMax slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMaxSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMinYMaxSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMinYMaxUnspecified" overflow="hidden" clip="rect(5,4,3,2)"  
viewBox="-10 -10 20 20" preserveAspectRatio="xMinYMax">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMaxUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMinYMaxUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- xMidYXXX XXX -->
+            <g transform="translate(0, 120)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <symbol id="xMidYMinMeet" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 
20 20" preserveAspectRatio="xMidYMin meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMinMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMidYMinMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMidYMinSlice" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 
20 20" preserveAspectRatio="xMidYMin slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMinSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMidYMinSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMidYMinUnspecified" overflow="hidden" clip="rect(5,4,3,2)"  
viewBox="-10 -10 20 20" preserveAspectRatio="xMidYMin">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMinUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMidYMinUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <symbol id="xMidYMidMeet" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 
20 20" preserveAspectRatio="xMidYMid meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMidMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMidYMidMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMidYMidSlice" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 
20 20" preserveAspectRatio="xMidYMid slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMidSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMidYMidSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMidYMidUnspecified" overflow="hidden" clip="rect(5,4,3,2)"  
viewBox="-10 -10 20 20" preserveAspectRatio="xMidYMid">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMidUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMidYMidUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <symbol id="xMidYMaxMeet" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 
20 20" preserveAspectRatio="xMidYMax meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMaxMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMidYMaxMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMidYMaxSlice" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 
20 20" preserveAspectRatio="xMidYMax slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMaxSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMidYMaxSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMidYMaxUnspecified" overflow="hidden" clip="rect(5,4,3,2)"  
viewBox="-10 -10 20 20" preserveAspectRatio="xMidYMax">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMaxUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMidYMaxUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+            </g>
+
+            <!-- xMaxYXXX XXX -->
+            <g transform="translate(0, 240)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <symbol id="xMaxYMinMeet" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 
20 20" preserveAspectRatio="xMaxYMin meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMinMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMaxYMinMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMaxYMinSlice" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 
20 20" preserveAspectRatio="xMaxYMin slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMinSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMaxYMinSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMaxYMinUnspecified" overflow="hidden" clip="rect(5,4,3,2)"  
viewBox="-10 -10 20 20" preserveAspectRatio="xMaxYMin">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMinUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMaxYMinUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <symbol id="xMaxYMidMeet" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 
20 20" preserveAspectRatio="xMaxYMid meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMidMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMaxYMidMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMaxYMidSlice" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 
20 20" preserveAspectRatio="xMaxYMid slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMidSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMaxYMidSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMaxYMidUnspecified" overflow="hidden" clip="rect(5,4,3,2)"  
viewBox="-10 -10 20 20" preserveAspectRatio="xMaxYMid">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMidUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMaxYMidUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <symbol id="xMaxYMaxMeet" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 
20 20" preserveAspectRatio="xMaxYMax meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMaxMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMaxYMaxMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMaxYMaxSlice" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 
20 20" preserveAspectRatio="xMaxYMax slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMaxSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMaxYMaxSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMaxYMaxUnspecified" overflow="hidden" clip="rect(5,4,3,2)"  
viewBox="-10 -10 20 20" preserveAspectRatio="xMaxYMax">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMaxUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#xMaxYMaxUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- none XXX -->
+            <g transform="translate(0,360)">
+                <g>
+                    <g>
+                        <symbol id="noneMeet" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 20 
20" preserveAspectRatio="none meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#noneMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#noneMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="noneSlice" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 -10 20 
20" preserveAspectRatio="none slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#noneSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#noneSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="noneUnspecified" overflow="hidden" clip="rect(5,4,3,2)"  viewBox="-10 
-10 20 20" preserveAspectRatio="none">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#noneUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+                        <use xlink:href="#hClipBox" />
+
+
+                        <use xlink:href="#noneUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                        <use xlink:href="#vClipBox" />
+                    </g>
+                </g>
+
+            </g>
+
+
+
+        </g>
+
+    </g><!-- "content" -->
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/symbolViewBoxOverflow.png 
b/tests/data/svg/batik/tests/spec/structure/symbolViewBoxOverflow.png
new file mode 100644
index 0000000..4d9590c
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/symbolViewBoxOverflow.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/symbolViewBoxOverflow.svg 
b/tests/data/svg/batik/tests/spec/structure/symbolViewBoxOverflow.svg
new file mode 100644
index 0000000..1e951ed
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/symbolViewBoxOverflow.svg
@@ -0,0 +1,553 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This example validates the handling of viewBox and preserveAspectRatio    -->
+<!-- for <symbol> elements with overflow set to visible. <symbol> elements     -->
+<!-- establish a new viewport and therefore, the overflow property applies.    -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: symbolViewBoxOverflow.svg 475477 2006-11-15 22:44:28Z cam $    -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>&lt;symbol&gt; and viewBox &amp; preserveAspectRatio</title>
+
+    <style type="text/css"><![CDATA[
+        .label { text-anchor: middle; }
+        .oddRow { fill:white; stroke:black; }
+        .evenRow { fill:#eeeeee; stroke:black; }
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="30">viewBox &amp; preserveAspectRatio
+            <title>viewBox &amp; preserveAspectRatio on &lt;symbol&gt;</title>
+            <desc>This test validates the processing of viewBox and preserveAspectRatio
+                  on &lt;symbol&gt; elements in conjunction with the overflow property.
+                  In this test, there should be no clipping around the viewBox boundaries
+                  and the smilley&apos;s ears and feet should show.</desc></text>
+        <text class="title" x="50%" y="50">on &lt;symbol&gt;, overflow="visible"</text>
+
+        <g id="table" class="label" transform="translate(80, 60)">
+            <rect         width="110" height="20" class="oddRow" />
+            <text x="55" y="15">meet</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(110,0)"/>
+            <text x="55" y="15" transform="translate(110, 0)">slice</text>
+            <rect width="110" height="20" class="oddRow" transform="translate(220,0)"/>
+            <text x="55" y="15" transform="translate(220, 0)">unspecified</text>
+
+            <g id="yMXX">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+
+            <g transform="translate(0,120)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <g transform="translate(0,240)">
+                <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                <text x="-5" y="40" transform="rotate(-90,-5,40)">yMin</text>
+
+                <g transform="translate(0,40)">
+                    <rect x="-20" y="20" width="20" height="40" class="evenRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMid</text>
+                </g>
+
+                <g transform="translate(0,80)">
+                    <rect x="-20" y="20" width="20" height="40" class="oddRow" />
+                    <text x="-5" y="40" transform="rotate(-90,-5,40)">yMax</text>
+                </g>
+            </g>
+            
+            <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+            <text x="-25" y="80" transform="rotate(-90,-25,80)">xMin</text>
+            
+            <g transform="translate(0,120)">
+                <rect x="-40" y="20" width="20" height="120" class="oddRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMid</text>
+            </g>
+    
+            <g transform="translate(0,240)">
+                <rect x="-40" y="20" width="20" height="120" class="evenRow" />
+                <text x="-25" y="80" transform="rotate(-90,-25,80)">xMax</text>
+            </g>
+    
+            <defs>
+                <g id="row">
+                    <rect width="110" height="40" transform="translate(0  ,20)"/>
+                    <rect width="110" height="40" transform="translate(110,20)"/>
+                    <rect width="110" height="40" transform="translate(220,20)"/>
+                </g>
+            </defs>
+
+            <g id="evenRowBlock">
+                <use xlink:href="#row" class="evenRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,80)"/>
+            </g>
+
+            <g id="oddRowBlock" transform="translate(0,120)">
+                <use xlink:href="#row" class="oddRow" transform="translate(0,0)"/>
+                <use xlink:href="#row" class="evenRow" transform="translate(0,40)"/>
+                <use xlink:href="#row" class="oddRow" transform="translate(0,80)"/>
+            </g>
+
+            <use xlink:href="#evenRowBlock" transform="translate(0,240)"/>
+    
+            <rect x="-40" y="380" width="40" height="40" fill="white" stroke="black" />
+            <text x="-15" y="400" transform="rotate(-90, -15, 400)">none</text>
+            <use xlink:href="#row" class="oddRow" transform="translate(0,360)" />
+
+            <line x1="55" y1="20" x2="55" y2="420" stroke="black" />
+            <line x1="165" y1="20" x2="165" y2="420" stroke="black" />
+            <line x1="275" y1="20" x2="275" y2="420" stroke="black" />
+        </g>
+
+        <g id="testCases" transform="translate(80, 80)">
+            <defs>
+                <rect id="hViewBox" x="12.5" y="7.5" width="30" height="25" stroke="red" fill="none"/>     
+                <rect id="vViewBox" x="72.5" y="7.5" width="20" height="25" stroke="red" fill="none"/>     
+                <g id="smilley">
+                    <g  transform="translate(-15,-15)" >
+                        <circle cx="10" cy="25" r="4" fill="crimson" />
+                        <circle cx="20" cy="25" r="4" fill="crimson" /> 
+                        <circle cx="7" cy="15" r="4" fill="crimson" />
+                        <circle cx="23" cy="15" r="4" fill="crimson" /> 
+                        <circle cx="15" cy="15" r="10" fill="yellow"/>
+                        <circle cx="12" cy="12" r="1.5" fill="black"/>
+                        <circle cx="17" cy="12" r="1.5" fill="black"/>
+                        <path d="M 10 19 A 8 8 0 0 0 20 19" stroke="black" stroke-width="1" fill="none"/>
+                    </g>
+                </g>
+            </defs>
+
+            <!-- xMinYXXX XXX -->
+            <g>
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <symbol id="xMinYMinMeet" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMinYMin meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMinMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMinMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMinYMinSlice" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMinYMin slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMinSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMinSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMinYMinUnspecified" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMinYMin">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMinUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMinUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <symbol id="xMinYMidMeet" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMinYMid meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMidMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMidMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMinYMidSlice" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMinYMid slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMidSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMidSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMinYMidUnspecified" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMinYMid">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMidUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMidUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <symbol id="xMinYMaxMeet" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMinYMax meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMaxMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMaxMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMinYMaxSlice" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMinYMax slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMaxSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMaxSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMinYMaxUnspecified" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMinYMax">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMinYMaxUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMinYMaxUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- xMidYXXX XXX -->
+            <g transform="translate(0, 120)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <symbol id="xMidYMinMeet" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMidYMin meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMinMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMinMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMidYMinSlice" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMidYMin slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMinSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMinSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMidYMinUnspecified" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMidYMin">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMinUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMinUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <symbol id="xMidYMidMeet" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMidYMid meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMidMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMidMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMidYMidSlice" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMidYMid slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMidSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMidSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMidYMidUnspecified" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMidYMid">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMidUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMidUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <symbol id="xMidYMaxMeet" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMidYMax meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMaxMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMaxMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMidYMaxSlice" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMidYMax slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMaxSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMaxSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMidYMaxUnspecified" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMidYMax">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMidYMaxUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMidYMaxUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+            <!-- xMaxYXXX XXX -->
+            <g transform="translate(0, 240)">
+                <!-- ... YMin XXX -->
+                <g>
+                    <g>
+                        <symbol id="xMaxYMinMeet" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMaxYMin meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMinMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMinMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMaxYMinSlice" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMaxYMin slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMinSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMinSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMaxYMinUnspecified" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMaxYMin">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMinUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMinUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMid XXX -->
+                <g transform="translate(0, 40)">
+                    <g>
+                        <symbol id="xMaxYMidMeet" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMaxYMid meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMidMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMidMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMaxYMidSlice" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMaxYMid slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMidSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMidSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMaxYMidUnspecified" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMaxYMid">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMidUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMidUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+                <!-- ... YMax XXX -->
+                <g transform="translate(0, 80)">
+                    <g>
+                        <symbol id="xMaxYMaxMeet" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMaxYMax meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMaxMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMaxMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="xMaxYMaxSlice" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMaxYMax slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMaxSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMaxSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="xMaxYMaxUnspecified" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="xMaxYMax">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#xMaxYMaxUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#xMaxYMaxUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+            </g>
+
+
+            <!-- none XXX -->
+            <g transform="translate(0,360)">
+                <g>
+                    <g>
+                        <symbol id="noneMeet" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="none meet">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#noneMeet" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#noneMeet" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(110, 0)">
+                        <symbol id="noneSlice" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="none slice">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#noneSlice" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#noneSlice" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+
+                    <g transform="translate(220, 0)">
+                        <symbol id="noneUnspecified" overflow="visible"  viewBox="-10 -10 20 20" 
preserveAspectRatio="none">
+                            <use xlink:href="#smilley" />
+                        </symbol>
+                        <use xlink:href="#noneUnspecified" x="12.5" y="7.5" width="30" height="25" />
+                        <use xlink:href="#hViewBox" />
+
+                        <use xlink:href="#noneUnspecified" x="72.5" y="7.5" width="20" height="25" />
+                        <use xlink:href="#vViewBox" />
+                    </g>
+                </g>
+
+            </g>
+
+
+
+        </g>
+
+    </g><!-- "content" -->
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/systemLanguage.png 
b/tests/data/svg/batik/tests/spec/structure/systemLanguage.png
new file mode 100644
index 0000000..4dfd9aa
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/systemLanguage.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/systemLanguage.svg 
b/tests/data/svg/batik/tests/spec/structure/systemLanguage.svg
new file mode 100644
index 0000000..fbda213
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/systemLanguage.svg
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" 
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Tests systemLanguage on elements                                       -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: systemLanguage.svg 475685 2006-11-16 11:16:05Z cam $  -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg width="450" height="500" viewBox="0 0 450 500" >
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+    <text x="225" y="50" class="title">Test the 'systemLanguage' attribute</text>
+
+
+    <g style="fill:#eee; stroke:black">
+      <rect x="50" y="80" width="360" height="20" />
+
+      <rect x="30" y="100" width="20" height="85" />
+      <rect x="30" y="185" width="20" height="65" />
+      <rect x="30" y="250" width="20" height="65" />
+      <rect x="30" y="315" width="20" height="65" />
+      <rect x="30" y="380" width="20" height="65" />
+    </g>
+    <g style="fill:none; stroke:black">
+      <rect x="50" y="80" width="360" height="365" />
+
+      <line x1="170" y1="80" x2="170" y2="445" />
+      <line x1="290" y1="80" x2="290" y2="445" />
+
+      <line x1="50" y1="185" x2="410" y2="185" />
+      <line x1="50" y1="250" x2="410" y2="250" />
+      <line x1="50" y1="315" x2="410" y2="315" />
+      <line x1="50" y1="380" x2="410" y2="380" />
+    </g>
+    <g style="fill:black; text-anchor:middle;">
+      <text x="110" y="94">default</text>
+      <text x="230" y="94">english (en)</text>
+      <text x="350" y="94">french (fr)</text>
+
+      <text x="0" y="0" transform="translate(44, 145) rotate(-90)">Graphic Obj.</text>
+      <text x="0" y="0" transform="translate(44, 220) rotate(-90)">&lt;svg></text>
+      <text x="0" y="0" transform="translate(44, 285) rotate(-90)">&lt;g></text>
+      <text x="0" y="0" transform="translate(44, 350) rotate(-90)">&lt;use></text>
+      <text x="0" y="0" transform="translate(44, 415) rotate(-90)">&lt;tspan></text>
+
+    </g>
+
+    <defs>
+
+    </defs>
+
+    <!-- ####################################################################################### -->
+    <g transform="translate(60, 110)">
+      <g>
+        <rect x="0" y="0" width="30" height="20" style="fill:crimson" />
+        <circle cx="50" cy="10" r="10" style="fill:crimson" />
+        <ellipse cx="85" cy="10" rx="15" ry="10" style="fill:crimson" />
+      </g>
+
+      <g style="stroke-width:3; fill:none">
+        <line x1="0" y1="25" x2="30" y2="45" style="stroke:crimson" />
+        <polyline points="35 25 45 42 55 25 65 42" style="stroke:crimson" />
+        <polygon points="70 25 80 42 90 25 100 42" style="fill:crimson" />
+      </g>
+
+      <g style="stroke-width:3; fill:none">
+        <path d="M0 60C5 55 10 55 15 60C20 65 25 65 30 60" style="stroke:crimson" />
+        <image xlink:href="../../resources/images/tde.jpg" x="35" y="50" width="30" height="20" />
+        <text x="85" y="65" style="fill:black; stroke:none; text-anchor:middle">text</text>
+      </g>
+
+    </g>
+
+    <g transform="translate(180, 110)">
+      <g>
+        <rect x="0" y="0" width="30" height="20" style="fill:orange" systemLanguage="en" />
+        <circle cx="50" cy="10" r="10" style="fill:orange" systemLanguage="en" />
+        <ellipse cx="85" cy="10" rx="15" ry="10" style="fill:orange" systemLanguage="en" />
+      </g>
+
+      <g style="stroke-width:3; fill:none">
+        <line x1="0" y1="25" x2="30" y2="45" style="stroke:orange" systemLanguage="en"/>
+        <polyline points="35 25 45 42 55 25 65 42" style="stroke:orange" systemLanguage="en"/>
+        <polygon points="70 25 80 42 90 25 100 42" style="fill:orange" systemLanguage="en"/>
+      </g>
+
+      <g style="stroke-width:3; fill:none">
+        <path d="M0 60C5 55 10 55 15 60C20 65 25 65 30 60" style="stroke:orange" systemLanguage="en"/>
+        <image xlink:href="../../resources/images/tde.jpg" x="35" y="50" width="30" height="20" 
systemLanguage="en"/>
+        <text x="85" y="65" style="fill:black; stroke:none; text-anchor:middle" 
systemLanguage="en">text</text>
+      </g>
+
+    </g>
+
+    <g transform="translate(300, 110)">
+      <g>
+        <rect x="0" y="0" width="30" height="20" style="fill:gold" systemLanguage="fr"/>
+        <circle cx="50" cy="10" r="10" style="fill:gold" systemLanguage="fr"/>
+        <ellipse cx="85" cy="10" rx="15" ry="10" style="fill:gold" systemLanguage="fr"/>
+      </g>
+
+      <g style="stroke-width:3; fill:none">
+        <line x1="0" y1="25" x2="30" y2="45" style="stroke:gold" systemLanguage="fr"/>
+        <polyline points="35 25 45 42 55 25 65 42" style="stroke:gold" systemLanguage="fr"/>
+        <polygon points="70 25 80 42 90 25 100 42" style="fill: gold" systemLanguage="fr"/>
+      </g>
+
+      <g style="stroke-width:3; fill:none">
+        <path d="M0 60C5 55 10 55 15 60C20 65 25 65 30 60" style="stroke:gold" systemLanguage="fr"/>
+        <image xlink:href="../../resources/images/tde.jpg" x="35" y="50" width="30" height="20" 
systemLanguage="fr"/>
+        <text x="85" y="65" style="fill:black; stroke:none; text-anchor:middle" 
systemLanguage="fr">text</text>
+      </g>
+
+    </g>
+    <!-- ####################################################################################### -->
+
+    <g>
+      <svg x="52" y="187" width="116" height="62">
+        <rect x="0" y="0" width="100%" height="100%" style="fill:crimson" />
+      </svg>
+
+      <svg x="172" y="187" width="116" height="62" style="fill:orange" systemLanguage="en">
+        <rect x="0" y="0" width="100%" height="100%" />
+      </svg>
+
+      <svg x="292" y="187" width="116" height="62" style="fill:gold" systemLanguage="fr">
+        <rect x="0" y="0" width="100%" height="100%" />
+      </svg>
+    </g>
+
+    <!-- ####################################################################################### -->
+    <g transform="translate(0 65)">
+      <g>
+        <rect x="52" y="187" width="116" height="62" style="fill:crimson"/>
+      </g>
+
+      <g>
+        <rect x="172" y="187" width="116" height="62" style="fill:orange" systemLanguage="en" />
+      </g>
+
+      <g>
+        <rect x="292" y="187" width="116" height="62" style="fill:gold" systemLanguage="fr" />
+      </g>
+    </g>
+    <!-- ####################################################################################### -->
+    <defs>
+      <rect id="use" x="0" y="0" width="116" height="61" />
+    </defs>
+
+    <g>
+
+      <use xlink:href="#use" x="52" y="317" style="fill:crimson" />
+
+      <use xlink:href="#use" x="172" y="317" style="fill:orange" systemLanguage="en" />
+
+      <use xlink:href="#use" x="292" y="317" style="fill:gold" systemLanguage="fr" />
+
+    </g>
+
+    <!-- ####################################################################################### -->
+
+    <text style="text-anchor:middle">
+      <tspan x="110"  y="420" style="fill:crimson">simple &lt;tspan></tspan>
+      <tspan x="230" y="420" style="fill:orange" systemLanguage="en">simple &lt;tspan></tspan>
+      <tspan x="350" y="420" style="fill:gold" systemLanguage="fr">simple &lt;tspan></tspan>
+    </text>
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/structure/systemLanguageDialect.png 
b/tests/data/svg/batik/tests/spec/structure/systemLanguageDialect.png
new file mode 100644
index 0000000..117e0e2
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/systemLanguageDialect.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/systemLanguageDialect.svg 
b/tests/data/svg/batik/tests/spec/structure/systemLanguageDialect.svg
new file mode 100644
index 0000000..d8b77ba
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/systemLanguageDialect.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" 
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Tests systemLanguage with dialects                                     -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: systemLanguageDialect.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg width="450" height="500" viewBox="0 0 450 500" >
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+    <text x="225" y="50" class="title">Test the 'systemLanguage' attribute with dialect</text>
+
+
+    <text x="50%" y="150" style="text-anchor:middle; font-size:32" systemLanguage="en">english (en)</text>
+
+    <text x="50%" y="250" style="text-anchor:middle; font-size:32" systemLanguage="en-UK">english UK 
(en-UK)</text>
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/tiff.png 
b/tests/data/svg/batik/tests/spec/structure/tiff.png
new file mode 100644
index 0000000..87687a7
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/tiff.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/tiff.svg 
b/tests/data/svg/batik/tests/spec/structure/tiff.svg
new file mode 100644
index 0000000..fbc9937
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/tiff.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Tiff reading extension tag test                                         -->
+<!--                                                                        -->
+<!-- @author Thomas DeWeese Kodak com                                       -->
+<!-- @version $Id: tiff.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" xml:space="preserve" 
+     viewBox="0 0 450 500" >
+
+    <title>Tiff Reading Test</title>
+  
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent" class="legend" style="text-anchor:middle">
+        <text x="225" y="40" class="title">
+            Tiff Reading Test
+        </text>
+
+        <image xlink:href="../../resources/images/sm_colors.tif" 
+               x="53" y="65" width="64" height="64" />
+        <text x="85"  y="140">RGB TIFF Uncompressed</text>
+    
+        <image xlink:href="../../resources/images/sm_colors_tile.tif" 
+               x="193" y="65" width="64" height="64" />
+        <text x="225" y="140">Tiled RGB TIFF Uncompressed</text>
+    
+    
+        <image xlink:href="../../resources/images/sm_colors_pb.tif" 
+               x="53" y="165" width="64" height="64" />
+        <text x="85"  y="240">RGB TIFF PackBits</text>
+    
+        <image xlink:href="../../resources/images/sm_colors_pb_tile.tif" 
+               x="193" y="165" width="64" height="64" />
+        <text x="225" y="240">Tiled RGB TIFF PackBits</text>
+    
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/toolTips.png 
b/tests/data/svg/batik/tests/spec/structure/toolTips.png
new file mode 100644
index 0000000..e61bb2f
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/toolTips.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/toolTips.svg 
b/tests/data/svg/batik/tests/spec/structure/toolTips.svg
new file mode 100644
index 0000000..0869a1d
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/toolTips.svg
@@ -0,0 +1,491 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- This test validates handling of the title and desc elements on graphical  -->
+<!-- elements. By default, the JSVGCanvas shows a tooltip with the title and   -->
+<!-- description if present.                                                   -->
+<!-- This test validates that tooltips are shown on the various graphical      -->
+<!-- elements and that overlapping elements are treated properly (i.e., that   -->
+<!-- tooltips do not 'show through' elements.                                  -->
+<!--                                                                           -->
+<!-- @author vhardy apache org                                                 -->
+<!-- @version $Id: toolTips.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+<title>Marker Test</title>
+
+    <style type="text/css"><![CDATA[
+        .label { text-anchor: middle; }
+    ]]></style>
+
+    <g id="content">
+
+        <text class="title" x="50%" y="35">&lt;title&gt;and &lt;desc&gt;</text>
+        <text class="title" x="50%" y="50">tool tips on Graphical Elements</text>
+
+        <defs>
+           <rect id="useElem" fill="crimson" stroke="black"
+                 x="0" y="0" width="20" height="14"/>
+        </defs>
+
+        <g id="graphicsElementsTable" transform="translate(75, 60)">
+
+            <g id="additionalInfoHeader" transform="translate(60, 0)">
+                <rect x="0"   y="0" width="60" height="20" fill="#eeeeee" stroke="black" />
+                <rect x="60"  y="0" width="60" height="20" fill="#eeeeee" stroke="black" />
+                <rect x="120" y="0" width="60" height="20" fill="#eeeeee" stroke="black" />
+                <rect x="180" y="0" width="60" height="20" fill="#eeeeee" stroke="black" />
+
+                <g id="additionalInfoHeaderLabels" transform="translate(0, 15)" class="label">
+                    <text x="30"  y="0">No info</text>
+                    <text x="90"  y="0">&lt;title&gt;</text>
+                    <text x="150"  y="0">&lt;desc&gt;</text>
+                    <text x="210"  y="0">both</text>
+                </g>
+            </g>
+
+            <g id="rectRow" transform="translate(0, 20)">
+                <g fill="white" stroke="black">
+                    <rect x="0"   y="0" width="60" height="20"  />
+                    <rect x="60"  y="0" width="60" height="20"  />
+                    <rect x="120" y="0" width="60" height="20"  />
+                    <rect x="180" y="0" width="60" height="20"  />
+                    <rect x="240" y="0" width="60" height="20"  />
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;rect&gt;</text>
+
+                <g id="rectSamples" fill="gold" stroke="black">
+                    <!-- No info -->
+                    <rect transform="translate(60, 0)" x="20" y="3" width="20" height="14" />
+
+                    <!-- title -->
+                    <rect transform="translate(120, 0)" x="20" y="3" width="20" height="14" >
+                        <title>&lt;rect&gt; with title only</title>
+                    </rect>
+
+                    <!-- desc -->
+                    <rect transform="translate(180, 0)" x="20" y="3" width="20" height="14"> 
+                        <desc>&lt;rect&gt; with &lt;desc&gt; only</desc>
+                    </rect>
+
+                    <!-- title and desc -->
+                    <rect transform="translate(240, 0)" x="20" y="3" width="20" height="14"> 
+                        <title>Title: &lt;rect&gt; with title and &lt;desc&gt;</title>
+                        <desc>Description: &lt;rect&gt; with title and &lt;desc&gt;</desc>
+                    </rect>
+                </g>
+            </g> <!-- "rectRow" -->
+
+            <g id="circleRow" transform="translate(0, 40)">
+                <g fill="white" stroke="black">
+                    <rect x="0"   y="0" width="60" height="20"  />
+                    <rect x="60"  y="0" width="60" height="20"  />
+                    <rect x="120" y="0" width="60" height="20"  />
+                    <rect x="180" y="0" width="60" height="20"  />
+                    <rect x="240" y="0" width="60" height="20"  />
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;circle&gt;</text>
+
+                <g id="circleSamples" fill="gold" stroke="black">
+                    <!-- No info -->
+                    <circle transform="translate(60, 0)" cx="30" cy="10" r="8" />
+
+                    <!-- title -->
+                    <circle transform="translate(120, 0)" cx="30" cy="10" r="8" >
+                        <title>&lt;circle&gt; with &lt;title&gt; only</title>
+                    </circle>
+
+                    <!-- desc -->
+                    <circle transform="translate(180, 0)" cx="30" cy="10" r="8" > 
+                        <desc>&lt;circle&gt; with &lt;desc&gt; only</desc>
+                    </circle>
+
+                    <!-- title and desc -->
+                    <circle transform="translate(240, 0)" cx="30" cy="10" r="8" > 
+                        <title>Title: &lt;circle&gt; with &lt;title&gt; and &lt;desc&gt;</title>
+                        <desc>Description: &lt;circle&gt; with &lt;desc&gt; and &lt;desc&gt;</desc>
+                    </circle>
+                </g>
+            </g> <!-- "circleRow" -->
+
+
+            <g id="ellipseRow" transform="translate(0, 60)">
+                <g fill="white" stroke="black">
+                    <rect x="0"   y="0" width="60" height="20"  />
+                    <rect x="60"  y="0" width="60" height="20"  />
+                    <rect x="120" y="0" width="60" height="20"  />
+                    <rect x="180" y="0" width="60" height="20"  />
+                    <rect x="240" y="0" width="60" height="20"  />
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;ellipse&gt;</text>
+
+                <g id="ellipseSamples" fill="gold" stroke="black">
+                    <!-- No info -->
+                    <ellipse transform="translate(60, 0)" cx="30" cy="10" rx="20" ry="5" />
+
+                    <!-- title -->
+                    <ellipse transform="translate(120, 0)" cx="30" cy="10" rx="20" ry="5" >
+                        <title>&lt;ellipse&gt; with &lt;title&gt; only</title>
+                    </ellipse>
+
+                    <!-- desc -->
+                    <ellipse transform="translate(180, 0)" cx="30" cy="10" rx="20" ry="5" > 
+                        <desc>&lt;ellipse&gt; with &lt;desc&gt; only</desc>
+                    </ellipse>
+
+                    <!-- title and desc -->
+                    <ellipse transform="translate(240, 0)" cx="30" cy="10" rx="20" ry="5" > 
+                        <title>Title: &lt;ellipse&gt; with &lt;title&gt; and &lt;desc&gt;</title>
+                        <desc>Description: &lt;ellipse&gt; with &lt;desc&gt; and &lt;desc&gt;</desc>
+                    </ellipse>
+                </g>
+            </g> <!-- "ellipseRow" -->
+
+            <g id="lineRow" transform="translate(0, 80)">
+                <g fill="white" stroke="black">
+                    <rect x="0"   y="0" width="60" height="20"  />
+                    <rect x="60"  y="0" width="60" height="20"  />
+                    <rect x="120" y="0" width="60" height="20"  />
+                    <rect x="180" y="0" width="60" height="20"  />
+                    <rect x="240" y="0" width="60" height="20"  />
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;line&gt;</text>
+
+                <g id="lineSamples" stroke="black" stroke-width="4">
+                    <!-- No info -->
+                    <line transform="translate(60, 0)" x1="5" y1="10" x2="55" y2="10" />
+
+                    <!-- title -->
+                    <line transform="translate(120, 0)" x1="5" y1="10" x2="55" y2="10" >
+                        <title>&lt;line&gt; with &lt;title&gt; only</title>
+                    </line>
+
+                    <!-- desc -->
+                    <line transform="translate(180, 0)" x1="5" y1="10" x2="55" y2="10" > 
+                        <desc>&lt;line&gt; with &lt;desc&gt; only</desc>
+                    </line>
+
+                    <!-- title and desc -->
+                    <line transform="translate(240, 0)" x1="5" y1="10" x2="55" y2="10" > 
+                        <title>Title: &lt;line&gt; with &lt;title&gt; and &lt;desc&gt;</title>
+                        <desc>Description: &lt;line&gt; with &lt;desc&gt; and &lt;desc&gt;</desc>
+                    </line>
+                </g>
+            </g> <!-- "lineRow" -->
+
+            <g id="polylineRow" transform="translate(0, 100)">
+                <g fill="white" stroke="black">
+                    <rect x="0"   y="0" width="60" height="20"  />
+                    <rect x="60"  y="0" width="60" height="20"  />
+                    <rect x="120" y="0" width="60" height="20"  />
+                    <rect x="180" y="0" width="60" height="20"  />
+                    <rect x="240" y="0" width="60" height="20"  />
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;polyline&gt;</text>
+
+                <g id="polylineSamples" stroke="black" fill="orange">
+                    <!-- No info -->
+                    <polyline transform="translate(60, 0)" points="5,10 5,15 30,15 30,5 55,5 55,10"/>
+
+                    <!-- title -->
+                    <polyline transform="translate(120, 0)" points="5,10 5,15 30,15 30,5 55,5 55,10">
+                        <title>&lt;polyline&gt; with &lt;title&gt; only</title>
+                    </polyline>
+
+                    <!-- desc -->
+                    <polyline transform="translate(180, 0)" points="5,10 5,15 30,15 30,5 55,5 55,10"> 
+                        <desc>&lt;polyline&gt; with &lt;desc&gt; only</desc>
+                    </polyline>
+
+                    <!-- title and desc -->
+                    <polyline transform="translate(240, 0)" points="5,10 5,15 30,15 30,5 55,5 55,10"> 
+                        <title>Title: &lt;polyline&gt; with &lt;title&gt; and &lt;desc&gt;</title>
+                        <desc>Description: &lt;polyline&gt; with &lt;desc&gt; and &lt;desc&gt;</desc>
+                    </polyline>
+                </g>
+            </g> <!-- "polylineRow" -->
+
+            <g id="polygonRow" transform="translate(0, 120)">
+                <g fill="white" stroke="black">
+                    <rect x="0"   y="0" width="60" height="20"  />
+                    <rect x="60"  y="0" width="60" height="20"  />
+                    <rect x="120" y="0" width="60" height="20"  />
+                    <rect x="180" y="0" width="60" height="20"  />
+                    <rect x="240" y="0" width="60" height="20"  />
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;polygon&gt;</text>
+
+                <g id="polygonSamples" stroke="black" fill="orange">
+                    <!-- No info -->
+                    <polygon transform="translate(60, 0)" points="5,10 5,15 30,15 30,5 55,5 55,10"/>
+
+                    <!-- title -->
+                    <polygon transform="translate(120, 0)" points="5,10 5,15 30,15 30,5 55,5 55,10">
+                        <title>&lt;polygon&gt; with &lt;title&gt; only</title>
+                    </polygon>
+
+                    <!-- desc -->
+                    <polygon transform="translate(180, 0)" points="5,10 5,15 30,15 30,5 55,5 55,10"> 
+                        <desc>&lt;polygon&gt; with &lt;desc&gt; only</desc>
+                    </polygon>
+
+                    <!-- title and desc -->
+                    <polygon transform="translate(240, 0)" points="5,10 5,15 30,15 30,5 55,5 55,10"> 
+                        <title>Title: &lt;polygon&gt; with &lt;title&gt; and &lt;desc&gt;</title>
+                        <desc>Description: &lt;polygon&gt; with &lt;desc&gt; and &lt;desc&gt;</desc>
+                    </polygon>
+                </g>
+            </g> <!-- "polygonRow" -->
+
+
+            <g id="pathRow" transform="translate(0, 140)">
+                <g fill="white" stroke="black">
+                    <rect x="0"   y="0" width="60" height="20"  />
+                    <rect x="60"  y="0" width="60" height="20"  />
+                    <rect x="120" y="0" width="60" height="20"  />
+                    <rect x="180" y="0" width="60" height="20"  />
+                    <rect x="240" y="0" width="60" height="20"  />
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;path&gt;</text>
+
+                <g id="pathSamples" stroke="black" fill="orange">
+                    <!-- No info -->
+                    <path transform="translate(60, 0)" d="M5,10l0,5l25,0l0,-10l25,0l0,5Z"/>
+
+                    <!-- title -->
+                    <path transform="translate(120, 0)" d="M5,10l0,5l25,0l0,-10l25,0l0,5Z">
+                        <title>&lt;path&gt; with &lt;title&gt; only</title>
+                    </path>
+
+                    <!-- desc -->
+                    <path transform="translate(180, 0)" d="M5,10l0,5l25,0l0,-10l25,0l0,5Z"> 
+                        <desc>&lt;path&gt; with &lt;desc&gt; only</desc>
+                    </path>
+
+                    <!-- title and desc -->
+                    <path transform="translate(240, 0)" d="M5,10l0,5l25,0l0,-10l25,0l0,5Z"> 
+                        <title>Title: &lt;path&gt; with &lt;title&gt; and &lt;desc&gt;</title>
+                        <desc>Description: &lt;path&gt; with &lt;desc&gt; and &lt;desc&gt;</desc>
+                    </path>
+                </g>
+            </g> <!-- "pathRow" -->
+
+            <g id="imageRow" transform="translate(0, 160)">
+                <g fill="white" stroke="black">
+                    <rect x="0"   y="0" width="60" height="20"  />
+                    <rect x="60"  y="0" width="60" height="20"  />
+                    <rect x="120" y="0" width="60" height="20"  />
+                    <rect x="180" y="0" width="60" height="20"  />
+                    <rect x="240" y="0" width="60" height="20"  />
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;image&gt;</text>
+
+                <g id="imageSamples" stroke="black" fill="orange">
+                    <!-- No info -->
+                    <image transform="translate(60, 0)" x="8" y="2" width="43" height="18" 
xlink:href="../../resources/images/tde.jpg"/>
+
+                    <!-- title -->
+                    <image transform="translate(120, 0)" x="8" y="2" width="43" height="18" 
xlink:href="../../resources/images/tde.jpg">
+                        <title>&lt;image&gt; with &lt;title&gt; only</title>
+                    </image>
+
+                    <!-- desc -->
+                    <image transform="translate(180, 0)" x="8" y="2" width="43" height="18" 
xlink:href="../../resources/images/tde.jpg"> 
+                        <desc>&lt;image&gt; with &lt;desc&gt; only</desc>
+                    </image>
+
+                    <!-- title and desc -->
+                    <image transform="translate(240, 0)" x="8" y="2" width="43" height="18" 
xlink:href="../../resources/images/tde.jpg"> 
+                        <title>Title: &lt;image&gt; with &lt;title&gt; and &lt;desc&gt;</title>
+                        <desc>Description: &lt;image&gt; with &lt;desc&gt; and &lt;desc&gt;</desc>
+                    </image>
+                </g>
+            </g> <!-- "imageRow" -->
+
+            <g id="textRow" transform="translate(0, 180)">
+                <g fill="white" stroke="black">
+                    <rect x="0"   y="0" width="60" height="20"  />
+                    <rect x="60"  y="0" width="60" height="20"  />
+                    <rect x="120" y="0" width="60" height="20"  />
+                    <rect x="180" y="0" width="60" height="20"  />
+                    <rect x="240" y="0" width="60" height="20"  />
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;text&gt;</text>
+
+                <g id="textSamples" stroke="none" fill="crimson" text-anchor="middle">
+                    <!-- No info -->
+                    <text transform="translate(60, 0)" x="30" y="15">Ho, la, la!</text>
+
+                    <!-- title -->
+                    <text transform="translate(120, 0)" x="30" y="15">Ho, la, la!
+                        <title>&lt;text&gt; with &lt;title&gt; only</title>
+                    </text>
+
+                    <!-- desc -->
+                    <text transform="translate(180, 0)" x="30" y="15">Ho, la, la!
+                        <desc>&lt;text&gt; with &lt;desc&gt; only</desc>
+                    </text>
+
+                    <!-- title and desc -->
+                    <text transform="translate(240, 0)" x="30" y="15">Ho, la, la!
+                        <title>Title: &lt;text&gt; with &lt;title&gt; and &lt;desc&gt;</title>
+                        <desc>Description: &lt;text&gt; with &lt;desc&gt; and &lt;desc&gt;</desc>
+                    </text>
+                </g>
+            </g> <!-- "textRow" -->
+
+            <g id="useRow" transform="translate(0, 200)">
+                <g fill="white" stroke="black">
+                    <rect x="0"   y="0" width="60" height="20"  />
+                    <rect x="60"  y="0" width="60" height="20"  />
+                    <rect x="120" y="0" width="60" height="20"  />
+                    <rect x="180" y="0" width="60" height="20"  />
+                    <rect x="240" y="0" width="60" height="20"  />
+                </g>
+               
+                <text x="30" y="15" class="label">&lt;use&gt;</text>
+
+                <g id="useSamples" stroke="none" fill="none">
+                    <!-- No info -->
+                    <use transform="translate(60, 0)" x="20" y="3"
+                         xlink:href="#useElem"/>
+
+                    <!-- title -->
+                    <use transform="translate(120, 0)" x="20" y="3"
+                         xlink:href="#useElem">
+                        <title>&lt;use&gt; with &lt;title&gt; only</title>
+                    </use>
+
+                    <!-- desc -->
+                    <use transform="translate(180, 0)" x="20" y="3"
+                         xlink:href="#useElem">
+                        <desc>&lt;use&gt; with &lt;desc&gt; only</desc>
+                    </use>
+
+                    <!-- title and desc -->
+                    <use transform="translate(240, 0)" x="20" y="3"
+                         xlink:href="#useElem">
+                        <title>Title: &lt;use&gt; with &lt;title&gt; and &lt;desc&gt;</title>
+                        <desc>Description: &lt;use&gt; with &lt;desc&gt; and &lt;desc&gt;</desc>
+                    </use>
+                </g>
+            </g> <!-- "textRow" -->
+        </g> <!-- id="graphicsElementsTable"  -->
+
+        <g id="toolTipOverlaps" transform="translate(75, 300)">
+
+            <g fill="#eeeeee" stroke="black">
+                <rect x="60" width="120" height="20" />
+                <rect x="180" width="120" height="20" />
+                <rect x="40" y="20" width="20" height="80" />
+                <rect x="40" y="100" width="20" height="80" />
+
+                <rect y="20" x="60" width="120" height="80" fill="white" />
+                <rect y="100" x="60" width="120" height="80" fill="white" />
+                <rect y="20" x="180" width="120" height="80" fill="white" />
+                <rect y="100" x="180" width="120" height="80" fill="white" />
+
+                <g class="label" stroke="none" fill="black">
+                    <text x="120" y="15">Orange w/ Tip</text>
+                    <text x="240" y="15">Orange wo/ Tip</text>
+                    <text transform="rotate(-90, 55, 60)" x="55" y="60">Red w/Tip</text>
+                    <text transform="rotate(-90, 55, 140)" x="55" y="140">Red wo/Tip</text>
+                </g>
+
+                <!-- ============================== -->
+                <!-- Top Left                       -->
+                <!-- red w tip,                     -->
+                <!-- orange w tip.                  -->
+                <!-- Tip on red and orange. Orange  -->
+                <!-- tip on intersection.           -->
+                <!-- ============================== -->
+                <g transform="translate(60, 20)">
+                    <rect x="10" y="10" width="50" height="50" fill="crimson">
+                        <title>Red &lt;rect&gt; with tip</title>
+                    </rect>
+                    <rect x="30" y="30" width="80" height="40" fill="orange">
+                        <title>Orange &lt;rect&gt; with tip</title>
+                    </rect>
+                </g>
+
+                <!-- ============================== -->
+                <!-- Top Right.                     -->
+                <!-- red w tip,                     -->
+                <!-- orange wo tip.                  -->
+                <!-- Tip on red. No tip on orange.  -->
+                <!-- No tip on intersection.        -->
+                <!-- ============================== -->
+                <g transform="translate(180, 20)">
+                    <rect x="10" y="10" width="50" height="50" fill="crimson">
+                        <title>Red &lt;rect&gt; with tip</title>
+                    </rect>
+                    <rect x="30" y="30" width="80" height="40" fill="orange" />
+                </g>
+
+                <!-- ============================== -->
+                <!-- Bottom Left                    -->
+                <!-- red wo tip,                    -->
+                <!-- orange w tip.                  -->
+                <!-- No tip on red. Tip on orange.  -->
+                <!-- Orange tip on intersection.    -->
+                <!-- ============================== -->
+                <g transform="translate(60, 100)">
+                    <rect x="10" y="10" width="50" height="50" fill="crimson"/>
+                    <rect x="30" y="30" width="80" height="40" fill="orange">
+                        <title>Orange &lt;rect&gt; with tip</title>
+                    </rect>
+                </g>
+
+                <!-- ============================== -->
+                <!-- Bottom Right.                  -->
+                <!-- red wo tip,                    -->
+                <!-- orange wo tip.                 -->
+                <!-- There should be no tooltips    -->
+                <!-- shown.                         -->
+                <!-- ============================== -->
+                <g transform="translate(180, 100)">
+                    <rect x="10" y="10" width="50" height="50" fill="crimson"/>
+                    <rect x="30" y="30" width="80" height="40" fill="orange"/>
+                </g>
+
+            </g>
+        </g>
+    </g><!-- "content" -->
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/useMultiple.png 
b/tests/data/svg/batik/tests/spec/structure/useMultiple.png
new file mode 100644
index 0000000..42535f6
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/useMultiple.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/useMultiple.svg 
b/tests/data/svg/batik/tests/spec/structure/useMultiple.svg
new file mode 100644
index 0000000..48c1eff
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/useMultiple.svg
@@ -0,0 +1,98 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Multiple use combined (external and internal)                             -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: useMultiple.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+  <title>Multiple &lt;use></title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+    <text x="225" y="50" class="title">Multiple &lt;use></text>
+    <text x="225" y="70" style="text-anchor:middle; font-size:12; font-style:italic">This file is using the 
defs.svg file to get the external resources</text>
+
+    <!-- ############################### -->
+    <g id="board" style="fill:none; stroke:black;">
+
+      <rect x="75" y="100" width="150" height="20" style="fill:#eee"/>
+      <rect x="225" y="100" width="150" height="20" style="fill:#eee"/>
+
+      <rect x="55" y="120" width="20" height="150" style="fill:#eee"/>
+      <rect x="55" y="270" width="20" height="150" style="fill:#eee"/>
+
+      <rect x="75" y="120" width="150" height="300"/>
+      <rect x="225" y="120" width="150" height="300"/>
+
+      <line x1="75" y1="270" x2="375" y2="270" />
+
+      <g style="font-size:12; text-anchor:middle; fill:black; stroke:none">
+        <text x="150" y="114">&lt;use></text>
+        <text x="300" y="114">External &lt;use></text>
+
+        <text x="0" y="0" transform="translate(70 195) rotate(-90)">&lt;use></text>
+        <text x="0" y="0" transform="translate(70 345) rotate(-90)">External &lt;use></text>
+      </g>
+    </g>
+
+    <defs>
+      <rect id="r1" x="0" y="0" width="80" height="80" />
+
+      <g id="u11" style="fill:orange">
+        <rect x="0" y="0" width="80" height="80" fill="crimson" />
+        <use xlink:href="#r1" x="20" y="20" width="80" height="80" />
+        <use xlink:href="#r1" x="40" y="40" width="80" height="80" style="fill:gold" />
+      </g>
+
+      <g id="u12" style="fill:orange">
+        <rect x="0" y="0" width="80" height="80" fill="crimson" />
+        <use xlink:href="../../resources/svg/defs.svg#extR1" x="20" y="20" width="80" height="80" />
+        <use xlink:href="../../resources/svg/defs.svg#extR1" x="40" y="40" width="80" height="80" 
style="fill:gold" />
+      </g>
+
+    </defs>
+
+    <use xlink:href="#u11" x="90" y="130" />
+
+    <use xlink:href="../../resources/svg/defs.svg#u21" x="240" y="130" />
+
+    <use xlink:href="#u12" x="90" y="280" />
+
+    <use xlink:href="../../resources/svg/defs.svg#u22" x="240" y="280" />
+
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/useMultipleURI.png 
b/tests/data/svg/batik/tests/spec/structure/useMultipleURI.png
new file mode 100644
index 0000000..6ff4c58
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/useMultipleURI.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/useMultipleURI.svg 
b/tests/data/svg/batik/tests/spec/structure/useMultipleURI.svg
new file mode 100644
index 0000000..782a4de
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/useMultipleURI.svg
@@ -0,0 +1,114 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Multiple use combined (external and internal)                             -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: useMultipleURI.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+  <title>Multiple &lt;use> with CSS property values: URIs</title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+    <text x="225" y="50" class="title">Multiple &lt;use> with CSS property values: URIs</text>
+    <text x="225" y="70" style="text-anchor:middle; font-size:12; font-style:italic">This file is using the 
defs.svg file to get the external resources</text>
+
+    <!-- ############################### -->
+    <g id="board" style="fill:none; stroke:black;">
+
+      <rect x="75" y="100" width="150" height="20" style="fill:#eee"/>
+      <rect x="225" y="100" width="150" height="20" style="fill:#eee"/>
+
+      <rect x="55" y="120" width="20" height="150" style="fill:#eee"/>
+      <rect x="55" y="270" width="20" height="150" style="fill:#eee"/>
+
+      <rect x="75" y="120" width="150" height="300"/>
+      <rect x="225" y="120" width="150" height="300"/>
+
+      <line x1="75" y1="270" x2="375" y2="270" />
+
+      <g style="font-size:12; text-anchor:middle; fill:black; stroke:none">
+        <text x="150" y="114">&lt;use></text>
+        <text x="300" y="114">External &lt;use></text>
+
+        <text x="0" y="0" transform="translate(70 195) rotate(-90)">&lt;use></text>
+        <text x="0" y="0" transform="translate(70 345) rotate(-90)">External &lt;use></text>
+      </g>
+    </g>
+
+    <defs>
+
+      <linearGradient id="crimson">
+        <stop style="stop-color:crimson" offset="0" />
+        <stop style="stop-color:white" offset="1" />
+      </linearGradient>
+
+      <linearGradient id="orange">
+        <stop style="stop-color:orange" offset="0" />
+        <stop style="stop-color:white" offset="1" />
+      </linearGradient>
+
+      <linearGradient id="gold">
+        <stop style="stop-color:gold" offset="0" />
+        <stop style="stop-color:white" offset="1" />
+      </linearGradient>
+
+      <rect id="r1" x="0" y="0" width="80" height="80" />
+
+      <g id="uu11" style="fill:url(#orange)">
+        <rect x="0" y="0" width="80" height="80" fill="url(#crimson)" />
+        <use xlink:href="#r1" x="20" y="20" width="80" height="80" />
+        <use xlink:href="#r1" x="40" y="40" width="80" height="80" 
style="fill:url(../../resources/svg/defs.svg#extGold)" />
+      </g>
+
+      <g id="uu12" style="fill:url(#orange)">
+        <rect x="0" y="0" width="80" height="80" fill="url(#crimson)" />
+        <use xlink:href="../../resources/svg/defs.svg#extR1" x="20" y="20" width="80" height="80" />
+        <use xlink:href="../../resources/svg/defs.svg#extR1" x="40" y="40" width="80" height="80" 
style="fill:url(../../resources/svg/defs.svg#extGold)" />
+      </g>
+
+    </defs>
+
+    <use xlink:href="#uu11" x="90" y="130" />
+
+    <use xlink:href="../../resources/svg/defs.svg#uu21" x="240" y="130" />
+
+    <use xlink:href="#uu12" x="90" y="280" />
+
+    <use xlink:href="../../resources/svg/defs.svg#uu22" x="240" y="280" />
+
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/useStylesheet.png 
b/tests/data/svg/batik/tests/spec/structure/useStylesheet.png
new file mode 100644
index 0000000..0b6a357
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/useStylesheet.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/useStylesheet.svg 
b/tests/data/svg/batik/tests/spec/structure/useStylesheet.svg
new file mode 100644
index 0000000..b84cd68
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/useStylesheet.svg
@@ -0,0 +1,60 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test use and styling                                                      -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr -->
+<!-- @version $Id: useStylesheet.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/subdir/useStylesheet2.css" ?>
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+  <title>Test use and styling using &lt;style></title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+    <text x="225" y="60" class="title">&lt;use> and styling using &lt;style></text>
+    <text x="225" y="80" style="text-anchor:middle; font-size:12; font-style:italic">This file is using the 
defs.svg file to get the external resources</text>
+
+    <!-- ############################### -->
+    <defs>
+      <radialGradient id="grad">
+        <stop style="stop-color:gold" offset="0" />
+        <stop style="stop-color:crimson" offset="1" />
+      </radialGradient>
+
+    </defs>
+    <use xlink:href="../../resources/svg/defs.svg#tree5" x="120" y="120" class="colorClass2"/>
+
+    <use xlink:href="../../resources/svg/defs.svg#tree6" x="120" y="300" class="gradClass2" />
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/useStyling.png 
b/tests/data/svg/batik/tests/spec/structure/useStyling.png
new file mode 100644
index 0000000..0b6a357
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/useStyling.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/useStyling.svg 
b/tests/data/svg/batik/tests/spec/structure/useStyling.svg
new file mode 100644
index 0000000..977560f
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/useStyling.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test use and styling                                                      -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr -->
+<!-- @version $Id: useStyling.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+  <title>Test use and styling using &lt;style></title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+    <text x="225" y="60" class="title">&lt;use> and styling using &lt;style></text>
+    <text x="225" y="80" style="text-anchor:middle; font-size:12; font-style:italic">This file is using the 
defs.svg file to get the external resources</text>
+
+    <!-- ############################### -->
+    <style type="text/css"><![CDATA[     
+      .gradClass {
+        fill: url(#grad);
+      }
+
+      .colorClass {
+        fill: crimson;
+      }
+
+      ]]></style>
+    <defs>
+
+      <radialGradient id="grad">
+        <stop style="stop-color:gold" offset="0" />
+        <stop style="stop-color:crimson" offset="1" />
+      </radialGradient>
+
+    </defs>
+
+    <use xlink:href="../../resources/svg/defs.svg#tree3" x="120" y="120" class="colorClass"/>
+
+    <use xlink:href="../../resources/svg/defs.svg#tree4" x="120" y="300" class="gradClass" />
+
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/useStylingURI.png 
b/tests/data/svg/batik/tests/spec/structure/useStylingURI.png
new file mode 100644
index 0000000..80ca5f4
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/useStylingURI.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/useStylingURI.svg 
b/tests/data/svg/batik/tests/spec/structure/useStylingURI.svg
new file mode 100644
index 0000000..065ddf8
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/useStylingURI.svg
@@ -0,0 +1,189 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test use and styling                                                      -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr -->
+<!-- @version $Id: useStylingURI.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+<title>Test use and styling using URIs</title>
+
+<!-- ============================================================= -->
+<!-- Test content                                                  -->
+<!-- ============================================================= -->
+<g id="testContent" transform="translate(0 -40)">
+<text x="225" y="60" class="title">&lt;use> and styling using URIs</text>
+<text x="225" y="80" style="text-anchor:middle; font-size:12; font-style:italic">This file is using the 
defs.svg file to get the external resources</text>
+
+<g font-size="10">
+<text x="20" y="496">- linearGradient defined in this file (local)</text>
+<text x="20" y="508">- radialGradient defined in defs.svg (external)</text>
+<text x="20" y="520">- gold/crimson: gradient on &lt;rect>, white/black: gradient on &lt;use></text>
+<text x="26" y="532">yellow/green: inherited from &lt;g></text>
+</g>
+
+<!-- ############################### -->
+<g id="board" style="fill:none; stroke:black;">
+
+<g style="fill:#eee">
+<rect x="75" y="100" width="150" height="20" />
+<rect x="225" y="100" width="150" height="20" />
+
+<rect x="35" y="120" width="20" height="120" />
+<rect x="35" y="240" width="20" height="120" />
+<rect x="35" y="360" width="20" height="120" />
+
+</g>
+
+<g style="fill:#ccc">
+<rect x="55" y="120" width="20" height="60" />
+<rect x="55" y="180" width="20" height="60" />
+<rect x="55" y="240" width="20" height="60" />
+<rect x="55" y="300" width="20" height="60" />
+<rect x="55" y="360" width="20" height="60" />
+<rect x="55" y="420" width="20" height="60" />
+</g>
+
+<rect x="75" y="120" width="150" height="360" />
+<rect x="225" y="120" width="150" height="360" />
+
+<line x1="75" y1="180" x2="375" y2="180" />
+<line x1="75" y1="240" x2="375" y2="240" />
+<line x1="75" y1="300" x2="375" y2="300" />
+<line x1="75" y1="360" x2="375" y2="360" />
+<line x1="75" y1="420" x2="375" y2="420" />
+<line x1="75" y1="480" x2="375" y2="480" />
+
+<g style="font-size:12; text-anchor:middle; fill:black; stroke:none">
+<text x="150" y="114">Local &lt;use></text>
+<text x="300" y="114">External &lt;use></text>
+
+<text x="0" y="0" transform="translate(50 180) rotate(-90)">internal style on</text>
+<text x="0" y="0" transform="translate(50 300) rotate(-90)">external style on</text>
+<text x="0" y="0" transform="translate(50 420) rotate(-90)">inherited style</text>
+
+<text x="0" y="0" transform="translate(70 150) rotate(-90)">&lt;rect></text>
+<text x="0" y="0" transform="translate(70 210) rotate(-90)">&lt;use></text>
+<text x="0" y="0" transform="translate(70 270) rotate(-90)">&lt;rect></text>
+<text x="0" y="0" transform="translate(70 330) rotate(-90)">&lt;use></text>
+<text x="0" y="0" transform="translate(70 390) rotate(-90)">internal</text>
+<text x="0" y="0" transform="translate(70 450) rotate(-90)">external</text>
+</g>
+</g>
+
+
+<!-- ############################### -->
+<defs>
+
+<linearGradient id="grad1">
+<stop style="stop-color:gold" offset="0" />
+<stop style="stop-color:crimson" offset="1" />
+</linearGradient>
+
+<linearGradient id="grad2">
+<stop style="stop-color:white" offset="0" />
+<stop style="stop-color:black" offset="1" />
+</linearGradient>
+
+<linearGradient id="grad3">
+<stop style="stop-color:gold" offset="0" />
+<stop style="stop-color:green" offset="1" />
+</linearGradient>
+
+<g style="fill:black;"> <!-- ### NOTHING SHOULD BE BLACK ON THE SCREEN ### -->
+<circle id="e" cx="25" cy="25" r="20" />
+<circle id="e1" cx="25" cy="25" r="20" style="fill:url(#grad1)" />
+<circle id="e3" cx="25" cy="25" r="20" style="fill:url(../../resources/svg/defs.svg#extGrad1)" />
+</g>
+
+</defs>
+
+<!-- ############################### -->
+<!-- LOCAL USE -->
+<!-- ############################### -->
+<g>
+
+<!-- fill: internal URI on the referenced element -->
+<use xlink:href="#e1" x="125" y="125" />
+
+<!-- fill:internal URI on the use -->
+<use xlink:href="#e" x="125" y="185" style="fill:url(#grad2)"/>
+
+<!-- fill: external URI on the referenced element -->
+<use xlink:href="#e3" x="125" y="245" />
+
+<!-- fill: external URI on the use -->
+<use xlink:href="#e" x="125" y="305" style="fill:url(../../resources/svg/defs.svg#extGrad2)" />
+
+<g style="fill:url(#grad3)">
+<!-- fill: inherited local URI -->
+<use xlink:href="#e" x="125" y="365" />
+</g>
+
+<g style="fill:url(../../resources/svg/defs.svg#extGrad3)">
+<!-- fill: inherited external URI -->
+<use xlink:href="#e" x="125" y="425" />
+</g>
+</g>
+
+
+<!-- ############################### -->
+<!-- EXTERNAL USE -->
+<!-- ############################### -->
+<g>
+
+<!-- fill: internal URI on the referenced element -->
+<use xlink:href="../../resources/svg/defs.svg#extE1" x="275" y="125" />
+
+<!-- fill:internal URI on the use -->
+<use xlink:href="../../resources/svg/defs.svg#extE" x="275" y="185" style="fill:url(#grad2)"/>
+
+<!-- fill: external URI on the referenced element -->
+<use xlink:href="../../resources/svg/defs.svg#extE2" x="275" y="245" />
+
+<!-- fill: external URI on the use -->
+<use xlink:href="../../resources/svg/defs.svg#extE" x="275" y="305" 
style="fill:url(../../resources/svg/defs.svg#extGrad2)"/>
+
+<!-- fill: inherited local URI -->
+<g style="fill:url(#grad3)">
+<use xlink:href="../../resources/svg/defs.svg#extE" x="275" y="365" />
+</g>
+
+<!-- fill: inherited external URI -->
+<g style="fill:url(../../resources/svg/defs.svg#extGrad3)">
+<use xlink:href="../../resources/svg/defs.svg#extE" x="275" y="425" />
+</g>
+
+</g>
+
+</g>
+
+<!-- ============================================================= -->
+<!-- Batik sample mark                                             -->
+<!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/useTargets.png 
b/tests/data/svg/batik/tests/spec/structure/useTargets.png
new file mode 100644
index 0000000..d57a2c6
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/useTargets.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/useTargets.svg 
b/tests/data/svg/batik/tests/spec/structure/useTargets.svg
new file mode 100644
index 0000000..1c565cc
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/useTargets.svg
@@ -0,0 +1,117 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Alternate stylesheets                                                  -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: useTargets.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+  <title>&lt;use> targets</title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+    <text x="225" y="50" class="title">&lt;use> targets</text>
+    <text x="225" y="70" style="text-anchor:middle; font-size:12; font-style:italic">This file is using the 
defs.svg file to get the external resources</text>
+
+    <!-- ############################### -->
+    <g id="board" style="fill:none; stroke:black;">
+
+      <rect x="75" y="100" width="150" height="20" style="fill:#eee"/>
+      <rect x="225" y="100" width="150" height="20" style="fill:#eee"/>
+
+      <rect x="55" y="120" width="20" height="100" style="fill:#eee"/>
+      <rect x="55" y="220" width="20" height="100" style="fill:#eee"/>
+      <rect x="55" y="320" width="20" height="100" style="fill:#eee"/>
+
+      <rect x="75" y="120" width="150" height="300"/>
+      <rect x="225" y="120" width="150" height="300"/>
+
+      <line x1="75" y1="220" x2="375" y2="220" />
+      <line x1="75" y1="320" x2="375" y2="320" />
+
+      <g style="font-size:12; text-anchor:middle; fill:black; stroke:none">
+        <text x="150" y="114">&lt;use></text>
+        <text x="300" y="114">External &lt;use></text>
+
+        <text x="0" y="0" transform="translate(70 170) rotate(-90)">Symbol</text>
+        <text x="0" y="0" transform="translate(70 270) rotate(-90)">SVG</text>
+        <text x="0" y="0" transform="translate(70 370) rotate(-90)">Other</text>
+      </g>
+    </g>
+
+    <defs>
+
+      <symbol id="symbol" viewBox="-50 -50 100 100" style="stroke:crimson; stroke-width:4">
+        <rect x="-50" y="-50" width="100%" height="100%" style="fill:gold; stroke:none"/>
+        <circle cx="0" cy="0" r="25%"/>
+      </symbol>
+
+      <svg id="svg" width="50" height="50" viewBox="-50 -50 100 100" style="stroke:crimson; stroke-width:4">
+        <rect x="-50" y="-50" width="100%" height="100%" style="fill:gold; stroke:none"/>
+        <circle cx="0" cy="0" r="25%"/>
+      </svg>
+
+      <g id="other" style="stroke:crimson; stroke-width:4">
+        <rect x="-50" y="-50" width="100" height="100" style="fill:gold; stroke:none"/>
+        <circle cx="0" cy="0" r="25"/>
+      </g>
+
+    </defs>
+
+    <!-- ### use ### -->
+    <use xlink:href="#symbol" x="115" y="130" width="75" height="75" style="fill:orange" />
+    <rect x="115" y="130" width="75" height="75" style="stroke:black; fill:none;" />
+
+    <use xlink:href="#svg" x="115" y="230" width="75" height="75" style="fill:orange" />
+    <rect x="115" y="230" width="75" height="75" style="stroke:black; fill:none;" />
+
+    <use xlink:href="#other" x="115" y="330" style="fill:orange" 
+         transform="translate(152.5, 367.5) scale(.75) translate(-115 -330)"/>
+    <rect x="115" y="330" width="75" height="75" style="stroke:black; fill:none;" />
+
+
+    <!-- ### external use ### -->
+    <use xlink:href="../../resources/svg/defs.svg#extSymbol" x="265" y="130" width="75" height="75" 
style="fill:orange" />
+    <rect x="265" y="130" width="75" height="75" style="stroke:black; fill:none;" />
+
+    <use xlink:href="../../resources/svg/defs.svg#extSvg" x="265" y="230" width="75" height="75" 
style="fill:orange" />
+    <rect x="265" y="230" width="75" height="75" style="stroke:black; fill:none;" />
+
+    <use xlink:href="../../resources/svg/defs.svg#extOther" x="265" y="330" style="fill:orange" 
+         transform="translate(302.5, 367.5) scale(.75) translate(-265, -330)"/>
+    <rect x="265" y="330" width="75" height="75" style="stroke:black; fill:none;" />
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/useTargets2.png 
b/tests/data/svg/batik/tests/spec/structure/useTargets2.png
new file mode 100644
index 0000000..ff184ea
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/useTargets2.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/useTargets2.svg 
b/tests/data/svg/batik/tests/spec/structure/useTargets2.svg
new file mode 100644
index 0000000..e37fd91
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/useTargets2.svg
@@ -0,0 +1,196 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- use targets                                                            -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: useTargets2.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg width="450" height="500" viewBox="0 0 450 500"
+  xmlns="http://www.w3.org/2000/svg"; 
+  xmlns:xlink="http://www.w3.org/1999/xlink";>
+
+  <title>&lt;use> Targets2</title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= --> 
+  <text x="225" y="25" class="title">&lt;use> Targets 2</text>
+  <g id="testContent" transform="translate(0 0)">
+
+    <defs>
+      <symbol id="symbol" viewBox="-100 -100 200 200" 
+              style="stroke:crimson; stroke-width:8">
+        <rect x="-100" y="-100" width="100%" height="100%" 
+              style="fill:crimson; stroke:none"/>
+        <circle cx="0" cy="0" r="25%" style="fill:orange; stroke:gold"/>
+      </symbol>
+
+      <svg id="svg" viewBox="-100 -100 200 200" 
+           style="stroke:crimson; stroke-width:8">
+        <rect x="-100" y="-100" width="100%" height="100%" 
+              style="fill:crimson; stroke:none"/>
+        <circle cx="0" cy="0" r="25%" style="fill:orange; stroke:gold"/>
+      </svg>
+    </defs>
+
+    <g id="board">
+      <rect x="10" y="60" width="430" height="20" 
+            style="fill:#aaa; stroke:black" />
+      <rect x="10" y="80" width="430" height="100" 
+            style="fill:#eee; stroke:black" />
+      <text x="20" y="74">&lt;use> references a &lt;symbol></text>
+
+      <g transform="translate(0 140)">
+        <rect x="10" y="60" width="430" height="20" 
+              style="fill:#aaa; stroke:black" />
+        <rect x="10" y="80" width="430" height="100" 
+              style="fill:#eee; stroke:black" />
+        <text x="20" y="74">&lt;use> references a &lt;svg></text>
+      </g>
+      <g transform="translate(0 280)">
+        <rect x="10" y="60" width="430" height="20" 
+              style="fill:#aaa; stroke:black" />
+        <rect x="10" y="80" width="430" height="100" 
+              style="fill:#eee; stroke:black" />
+        <text x="20" y="74">&lt;use> references with percentages</text>
+      </g>
+    </g>
+
+    <!-- ################################################### -->
+    <!-- use references symbol -->
+    <!-- ################################################### -->
+
+    <!-- svg width x,y and transform -->
+    <use x="1000" y="1000" width="100" height="100" xlink:href="#symbol" 
+         transform="translate(50 100) scale(.5) translate(-1000 -1000)"/>
+    <rect x="48" y="98" width="4" height="4" style="fill:blue" />
+    <text x="75" y="162" style="text-anchor:middle"
+      >x, y, w, h,<tspan x="75" dy="1.0em">transform</tspan></text>
+
+    <!-- svg width transform -->
+    <g transform="translate(150 0)">
+      <use width="100" height="100" xlink:href="#symbol" 
+           transform="translate(50 100) scale(.5)"/>
+      <rect x="48" y="98" width="4" height="4" style="fill:blue" />
+      <text x="75" y="170" style="text-anchor:middle">w, h, transform</text>
+    </g>
+
+    <!-- equivalent svg -->
+    <g transform="translate(300 0)">
+      <g transform="translate(50 100) scale(.5) translate(-1000 -1000) translate(1000 1000)">
+        <svg width="100" height="100" viewBox="-100 -100 200 200" 
+             style="stroke:crimson; stroke-width:8">
+          <rect x="-100" y="-100" width="100%" height="100%" 
+                style="fill:crimson; stroke:none"/>
+          <circle cx="0" cy="0" r="25%" style="fill:orange; stroke:gold"/>
+        </svg>
+      </g>
+      <rect x="48" y="98" width="4" height="4" style="fill:blue" />
+      <text x="75" y="170" style="text-anchor:middle">equivalent svg</text>
+    </g>
+
+    <!-- ################################################### -->
+    <!-- use references svg -->
+    <!-- ################################################### -->
+
+    <!-- svg width x,y and transform -->
+    <g transform="translate(0 140)">
+      <use x="1000" y="1000" width="100" height="100" xlink:href="#svg" 
+           transform="translate(50 100) scale(.5) translate(-1000 -1000)"/>
+      <rect x="48" y="98" width="4" height="4" style="fill:blue" />
+      <text x="75" y="162" style="text-anchor:middle"
+        >x, y, w, h,<tspan x="75" dy="1.0em">transform</tspan></text>
+    </g>
+
+    <!-- svg width transform -->
+    <g transform="translate(150 140)">
+      <use width="100" height="100" xlink:href="#svg" 
+           transform="translate(50 100) scale(.5)"/>
+      <rect x="48" y="98" width="4" height="4" style="fill:blue" />
+      <text x="75" y="170" style="text-anchor:middle">w, h, transform</text>
+    </g>
+
+    <!-- equivalent svg -->
+    <g transform="translate(300 140)">
+      <g transform="translate(50 100) scale(.5) translate(-1000 -1000) translate(1000 1000)">
+        <svg width="100" height="100" viewBox="-100 -100 200 200" 
+             style="stroke:crimson; stroke-width:8">
+          <rect x="-100" y="-100" width="100%" height="100%" 
+                style="fill:crimson; stroke:none"/>
+          <circle cx="0" cy="0" r="25%" style="fill:orange; stroke:gold"/>
+        </svg>
+      </g>
+      <rect x="48" y="98" width="4" height="4" style="fill:blue" />
+      <text x="75" y="170" style="text-anchor:middle">equivalent svg</text>
+    </g>
+
+    <!-- ################################################### -->
+    <!-- use references with percentages -->
+    <!-- ################################################### -->
+
+    <!-- svg width, height, x,y percentages -->
+    <g transform="translate(-10 280)">
+      <use x="11.1111%" y="20%" width="11.1111%" height="10%" 
+           xlink:href="#svg"/>
+      <rect x="48" y="98" width="4" height="4" style="fill:blue" />
+      <text x="75" y="162" style="text-anchor:middle"
+        >referencing svg<tspan x="75" dy="1.0em">x, y, w, h%</tspan></text>
+    </g>
+
+    <!-- svg width transform -->
+    <g transform="translate(95 280)">
+      <use x="50" y="100" width="11.1111%" height="10%" xlink:href="#svg" />
+      <rect x="48" y="98" width="4" height="4" style="fill:blue" />
+      <text x="75" y="162" style="text-anchor:middle"
+        >referencing svg<tspan x="75" dy="1.0em">w, h%</tspan></text>
+    </g>
+
+    <!-- symbol width, height, x, y, percentages -->
+    <g transform="translate(200 280)">
+      <use x="11.1111%" y="20%" width="11.1111%" height="10%" 
+           xlink:href="#symbol" />
+      <rect x="48" y="98" width="4" height="4" style="fill:blue" />
+      <text x="75" y="162" style="text-anchor:middle"
+        >referencing symbol<tspan x="75" dy="1.0em">w, h%</tspan></text>
+    </g>
+
+    <!-- symbol width, height, percentages -->
+    <g transform="translate(305 280)">
+      <use x="50" y="100" width="11.1111%" height="10%" xlink:href="#symbol" />
+      <rect x="48" y="98" width="4" height="4" style="fill:blue" />
+      <text x="75" y="162" style="text-anchor:middle"
+        >referencing symbol<tspan x="75" dy="1.0em">w, h%</tspan></text>
+    </g>
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/xmlBase.png 
b/tests/data/svg/batik/tests/spec/structure/xmlBase.png
new file mode 100644
index 0000000..0d05a69
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/xmlBase.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/xmlBase.svg 
b/tests/data/svg/batik/tests/spec/structure/xmlBase.svg
new file mode 100644
index 0000000..952144f
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/xmlBase.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- xml:base processing test.                                              -->
+<!--                                                                        -->
+<!-- @author thomas deweese kodak com                                       -->
+<!-- @version $Id: xmlBase.svg 475477 2006-11-15 22:44:28Z cam $    -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+    <title>XML Base Test</title>
+    <g id="content" xml:base="../../../batikLogo.svg">
+       <font-face font-family="Batik SVGFont">
+          <font-face-src>
+              <font-face-uri xlink:href="#Batik"/>
+          </font-face-src>
+       </font-face>
+
+        <text x="225" y="30" class="title">
+        Test of xml:base, use and SVG fonts 
+        </text>
+
+       <use transform="translate(25, 200) scale(.5)"
+        xlink:href="#Batik_Logo_Shadow" />
+
+
+       <g transform="translate(250,200) scale(.5)" filter="url(#dropShadow)">
+        <use xlink:href="#Batik_Logo" />
+       </g> <!-- End Batik_Logo_Shadow -->
+       
+       
+       <g transform="translate(25, 350) scale(.5)" filter="url(#dropShadow)">
+          <text x="0" y="0" font-family="Batik SVGFont" 
+                font-size="180">Batik</text>
+          <use xlink:href="#Batik_Logo_Underline"/>
+       </g> <!-- End Batik_Logo_Shadow -->
+
+       <g xml:base="tests/">
+           <use transform="translate(250 350) scale(.5)" 
+                xlink:href="../batikLogo.svg#Batik_Logo_Shadow" />
+       </g>
+    </g>
+
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" /> 
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/structure/xmlBaseStyling.png 
b/tests/data/svg/batik/tests/spec/structure/xmlBaseStyling.png
new file mode 100644
index 0000000..0de2bef
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/structure/xmlBaseStyling.png differ
diff --git a/tests/data/svg/batik/tests/spec/structure/xmlBaseStyling.svg 
b/tests/data/svg/batik/tests/spec/structure/xmlBaseStyling.svg
new file mode 100644
index 0000000..c56c98a
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/structure/xmlBaseStyling.svg
@@ -0,0 +1,112 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   
+        http://www.apache.org/licenses/LICENSE-2.0
+   
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!-- ====================================================================== -->
+<!-- xml:base processing test.                                              -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: xmlBaseStyling.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+
+  <title>Test xml:base and styling</title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+    <text x="225" y="30" class="title">Test xml:base and styling</text>
+    <text x="225" y="50" style="text-anchor:middle; font-size:12; font-style:italic">This file is using the 
defs.svg file to get the external resources</text>
+
+    <!-- ############################### -->
+    <style type="text/css" xml:base="../../resources/svg/" ><![CDATA[     
+      .gradClass {
+        fill: url(defs.svg#extGrad1);
+      }
+    ]]></style>
+
+    <defs>
+      <g id="board">
+        <rect x="0" y="0" width="80" height="80" style="stroke:black; fill:none"/>
+        <rect x="80" y="0" width="300" height="80" style="stroke:black; fill:#eee"/>
+      </g>
+    </defs>
+
+    <use xlink:href="#board" x="40" y="70" />
+    <use xlink:href="#board" x="40" y="150" />
+    <use xlink:href="#board" x="40" y="230" />
+    <use xlink:href="#board" x="40" y="310" />
+    <use xlink:href="#board" x="40" y="390" />
+
+
+    <!-- ############################### -->
+    <!-- ############################### -->
+    <g>
+      <use xlink:href="../../resources/svg/defs.svg#xmlBaseStylingElement" x="80" y="110" class="gradClass"/>
+      <text x="130" y="90">xml:base on &lt;style></text>
+      <text x="130" y="104">the base URI is: ../../resources/svg/</text>
+    </g>
+
+    <g xml:base="../../resources/svg/">
+      <use xlink:href="defs.svg#xmlBaseStylingElement" x="80" y="190" style="fill:url(defs.svg#extGrad1)" />
+      <text x="130" y="170">xml:base on &lt;g> enclosing the &lt;use></text>
+      <text x="130" y="184">the base URI is: ../../resources/svg/</text>
+    </g>
+
+    <g xml:base="../../resources/svg/defs.svg">
+      <use xlink:href="#xmlBaseStylingElement" x="80" y="270" style="fill:url(#extGrad1)" />
+      <text x="130" y="250">xml:base on &lt;g> enclosing the &lt;use></text>
+      <text x="130" y="264">the base URI is: ../../resources/svg/defs.svg</text>
+    </g>
+
+    <g xml:base="../../resources/svg/">
+      <g xml:base="defs.svg">
+        <use xlink:href="#xmlBaseStylingElement" x="80" y="350" style="fill:url(#extGrad1)" />
+      </g>
+      <text x="130" y="330">xml:base on &lt;g> enclosing a &lt;g></text>
+      <text x="130" y="344">the base URI is: ../../resources/svg/</text>
+
+
+      <text x="130" y="363">xml:base on enclosed &lt;g> enclosing the &lt;use></text>
+      <text x="130" y="377">the base URI is: defs.svg</text>
+    </g>
+
+    <g xml:base="../../resources/svg/">
+      <use xml:base="defs.svg" xlink:href="#xmlBaseStylingElement" x="80" y="430" 
style="fill:url(#extGrad1)" />
+      <text x="130" y="410">xml:base on &lt;g> enclosing the &lt;use></text>
+      <text x="130" y="424">the base URI is: ../../resources/svg/</text>
+
+      <text x="130" y="443">xml:base on the &lt;use></text>
+      <text x="130" y="457">the base URI is: defs.svg</text>
+    </g>
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/styling/alternateStylesheet.png 
b/tests/data/svg/batik/tests/spec/styling/alternateStylesheet.png
new file mode 100644
index 0000000..62c2f62
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/alternateStylesheet.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/alternateStylesheet.svg 
b/tests/data/svg/batik/tests/spec/styling/alternateStylesheet.svg
new file mode 100644
index 0000000..8f32f08
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/styling/alternateStylesheet.svg
@@ -0,0 +1,132 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Alternate stylesheets                                                     -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: alternateStylesheet.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<?xml-stylesheet type="text/css" title="Hot" href="../../resources/style/hot.css" alternate="yes" ?>
+<?xml-stylesheet type="text/css" title="Cold" href="../../resources/style/cold.css" alternate="yes" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+  <title>Alternate stylesheets</title>
+
+  <style type="text/css"><![CDATA[
+
+  .title {
+    font-family: Arial, Helvetica; 
+    font-size: 16;
+    text-anchor: middle;
+  }
+
+  .legend {
+    font-family: Arial, Helvetica; 
+    font-size: 10;
+    text-anchor: middle;
+  }
+
+  .light {
+   lighting-color: #eee;
+  }
+
+  ]]></style>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+    <text x="225" y="50" class="title">Alternate Stylesheets 2</text>
+
+    <text x="20" y="80" style="font-size:12; text-anchor:start">
+      <tspan>Choose your alternate stylesheet using the 'View->Use Stylesheet'</tspan>
+      <tspan x="20" y="100"> submenu items.</tspan>
+    </text>
+
+    <defs>
+      <font horiz-adv-x="838" >
+        <font-face font-family="SVGImpact"
+                   units-per-em="2048"
+                   panose-1="2 11 8 6 3 9 2 5 2 4"
+                   ascent="2066"
+                   descent="-432"/>
+
+        <missing-glyph horiz-adv-x="1536" d="M256 0V1280H1280V0H256ZM288 32H1248V1248H288V32Z" />
+
+        <glyph unicode="B" glyph-name="B" horiz-adv-x="1131" d="M84 1619H504Q703 1619 805 1588T971 1463T1034 
1158Q1034 1016 990 960T814 874Q960 841 1012 765T1064 530V380Q1064 216 1027 137T907 29T571 0H84V1619ZM505 
1342V982Q532 983 547 983Q609 983 626
+          1013T643 1188Q643 1264 629 1294T593 1333T505 1342ZM505 730V277Q594 280 618 305T643 428V579Q643 683 
621 705T505 730Z" />
+
+        <glyph unicode="a" glyph-name="a" horiz-adv-x="1032" d="M433 813H54V902Q54 1056 89 1139T232 1287T510 
1351Q715 1351 819 1279T944 1101T965 666V0H572V118Q535 47 477 12T337 -24Q231 -24 143 35T54 296V405Q54 554 101 
608T334 734Q533 812 547 839T561
+          949Q561 1053 546 1084T494 1116Q453 1116 443 1090T433 952V813ZM561 631Q464 560 449 512T433 374Q433 
271 446 241T500 211Q538 211 549 234T561 358V631Z" />
+
+        <glyph unicode="b" glyph-name="b" horiz-adv-x="1064" d="M476 1619V1236Q526 1294 587 1322T721 
1351Q804 1351 865 1325T958 1252T996 1160T1003 968V370Q1003 224 984 153T892 29T721 -24Q650 -24 589 7T476 
100L450 0H72V1619H476ZM599 950Q599 1053 586
+          1084T535 1116Q498 1116 487 1089T476 950V378Q476 271 488 241T538 211Q576 211 587 242T599 391V950Z" 
/>
+
+        <glyph unicode="i" glyph-name="i" horiz-adv-x="561" d="M488 1619V1408H72V1619H488ZM488 
1327V0H72V1327H488Z" />
+
+        <glyph unicode="k" glyph-name="k" horiz-adv-x="979" d="M942 1327L778 798L991 0H602L476 
578V0H72V1619H476V939L602 1327H942Z" />
+
+        <glyph unicode="t" glyph-name="t" horiz-adv-x="624" d="M498 1504V1295H607V1085H498V375Q498 244 511 
229T624 214V0H461Q323 0 264 11T160 64T104 159T93 411V1085H6V1295H93V1504H498Z" />
+      </font>
+
+      <filter id="emboss" >
+        <feGaussianBlur in="SourceAlpha" stdDeviation="6" result="blur"/>
+        <feSpecularLighting in="blur" surfaceScale="-3" class="light"
+                            specularConstant="1" specularExponent="20" 
+                            result="spec" kernelUnitLength="1" >
+          <feDistantLight azimuth="45" elevation="45" />
+        </feSpecularLighting>
+
+        <feComposite in="spec" in2="SourceGraphic" 
+                     operator="in" result="specOut"/>
+        <feComposite in="SourceGraphic" in2="specOut" operator="arithmetic"
+                     k1="0" k2="1" k3="1" k4="0" result="litPaint2"/> 
+      </filter>
+
+      <filter id="dropShadow" width="1.5" height="1.5">
+        <feGaussianBlur in="SourceGraphic" stdDeviation="4 4"/> 
+        <feOffset dx="4" dy="4" />
+      </filter>
+
+    </defs>
+
+    <g>
+
+      <g style="text-anchor:middle; font-size:128; font-family:SVGImpact;">
+        <text x="50%" y="50%" style="filter:url(#dropShadow); fill:black">Batik</text>
+        <text x="50%" y="50%" class="logo" style="filter:url(#emboss);">Batik</text>
+      </g>
+
+    </g>
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/styling/alternateStylesheetCold.png 
b/tests/data/svg/batik/tests/spec/styling/alternateStylesheetCold.png
new file mode 100644
index 0000000..1a100fd
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/alternateStylesheetCold.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/alternateStylesheetHot.png 
b/tests/data/svg/batik/tests/spec/styling/alternateStylesheetHot.png
new file mode 100644
index 0000000..8c7c229
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/alternateStylesheetHot.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/cssMedia.png 
b/tests/data/svg/batik/tests/spec/styling/cssMedia.png
new file mode 100644
index 0000000..4fe3a20
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/cssMedia.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/cssMedia.svg 
b/tests/data/svg/batik/tests/spec/styling/cssMedia.svg
new file mode 100644
index 0000000..1e29b75
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/styling/cssMedia.svg
@@ -0,0 +1,129 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Alternate stylesheets                                                     -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: cssMedia.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+<?xml-stylesheet type="text/css" href="../../resources/style/cssMediaScreen.css" media="screen"?>
+<?xml-stylesheet type="text/css" href="../../resources/style/cssMediaProjection.css" media="projection"?>
+<?xml-stylesheet type="text/css" href="../../resources/style/cssMediaPrint.css" media="print"?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+  <title>CSS Media</title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+    <text x="225" y="50" class="title">CSS Media</text>
+
+    <text x="20" y="80" style="font-size:12; text-anchor:start">
+      <tspan>Demonstrate how a slide can be different depending on the CSS media.</tspan>
+      <tspan x="20" y="94">Choose your media using the 'Edit=>Preference' menu item.</tspan>
+      <tspan x="20" y="108">You can switch between 'screen', 'print' or 'projection'</tspan>
+    </text>
+
+    <defs>
+      <pattern id="stripes" patternUnits="userSpaceOnUse" x="0" y="0" width="188" height="4">
+        <rect width="188" height="2" fill="black" fill-opacity=".2" />
+      </pattern>
+
+      <linearGradient id="backgroundGradient" x2="1" y2="0">
+        <stop offset="0" stop-color="rgb(125, 72, 255)" />
+        <stop offset=".25" stop-color="rgb(124, 65, 239)" />
+        <stop offset="1" stop-color="black" />
+      </linearGradient>
+      <linearGradient id="lineGradient" x2="1" y2="0">
+        <stop offset="0" stop-color="black" />
+        <stop offset=".75" stop-color="rgb(124, 65, 239)" />
+        <stop offset="1" stop-color="rgb(125, 72, 255)" />
+      </linearGradient>
+    </defs>
+
+    <g>
+
+      <!-- #################################### -->
+      <!-- background -->
+      <!-- #################################### -->
+      <rect class="background" x="10" y="130" width="430" height="300" />
+
+      <g class="fancyBackground">
+        <rect x="10" y="180" width="50" height="250" style="fill:url(#backgroundGradient)" />
+        <rect x="10" y="180" width="50" height="250" style="fill:url(#stripes)" />
+        <rect x="10" y="180" width="430" height="4" style="fill:url(#backgroundGradient)" />
+      </g>
+
+      <!-- #################################### -->
+      <!-- slide content -->
+      <!-- #################################### -->
+      <g class="sectionTitle">
+        <text x="30" y="160">What is SVG?</text>
+
+        <g>
+          <text x="30" y="210">* Stands for Scalable Vector Graphics</text>
+          <text x="30" y="285">* An XML grammar for defining vector-based 2D graphics</text>
+          <text x="30" y="360">* W3C Recommendation - 4 Sept. 2001</text>
+        </g>
+      </g>
+
+      <!-- #################################### -->
+      <!-- slide text -->
+      <!-- #################################### -->
+      <g class="sectionContent">
+
+        <text x="50" y="230"> 
+          <tspan>The specification defines the features and syntax for Scalable Vector Graphics 
(SVG),</tspan>
+          <tspan x="50" dy="12">a language for describing two-dimensional vector and mixed vector/raster 
graphics</tspan>
+          <tspan x="50" dy="12">in XML.</tspan>
+        </text>
+
+        <text x="50" y="305">
+          <tspan>SVG is a language for describing two-dimensional graphics in XML [XML10].</tspan>
+          <tspan x="50" dy="12">SVG allows for three types of graphic objects: vector graphic shapes, 
images</tspan>
+          <tspan x="50" dy="12">and text.</tspan>
+        </text>
+
+        <text x="50" y="380">
+
+          <tspan>This document has been reviewed by W3C Members and other interested parties and</tspan>
+          <tspan x="50" dy="12">has been endorsed by the Director as a W3C Recommendation. It is a 
stable</tspan>
+          <tspan x="50" dy="12">document and may be used as reference material or cited as a normative 
reference</tspan>
+          <tspan x="50" dy="12">from another document.</tspan>
+
+        </text>
+      </g>
+
+    </g>
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/styling/cssMediaList.png 
b/tests/data/svg/batik/tests/spec/styling/cssMediaList.png
new file mode 100644
index 0000000..715d477
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/cssMediaList.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/cssMediaList.svg 
b/tests/data/svg/batik/tests/spec/styling/cssMediaList.svg
new file mode 100644
index 0000000..148a7d7
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/styling/cssMediaList.svg
@@ -0,0 +1,103 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Alternate stylesheets                                                     -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: cssMediaList.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+<?xml-stylesheet type="text/css" href="../../resources/style/cssMediaList.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+  <title>CSS Media</title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+    <text x="225" y="50" class="title">CSS Media 2</text>
+
+    <text x="20" y="80" style="font-size:12; text-anchor:start">
+      <tspan>Show which CSS media is taken into account</tspan>
+      <tspan x="20" dy="14">Choose your media using the 'Edit=>Preference' menu item.</tspan>
+    </text>
+
+    <defs>
+      <polyline id="check" points="-5 -5 0 0 5 -10" style="stroke:crimson; fill:none; stroke-width:2;" />
+    </defs>
+
+    <g transform="translate(150 140)" style="stroke:black; fill:none">
+      <rect x="0" y="0" width="150" height="20" />
+      <rect x="0" y="20" width="150" height="20" />
+      <rect x="0" y="40" width="150" height="20" />
+      <rect x="0" y="60" width="150" height="20" />
+      <rect x="0" y="80" width="150" height="20" />
+
+      <rect x="0" y="100" width="150" height="20" />
+      <rect x="0" y="120" width="150" height="20" />
+      <rect x="0" y="140" width="150" height="20" />
+      <rect x="0" y="160" width="150" height="20" />
+      <rect x="0" y="180" width="150" height="20" />
+
+      <line x1="100" y1="0" x2="100" y2="200" />
+
+
+      <g style="font-size:12; text-anchor:start; stroke:none; fill:black">
+        <text x="10" y="14" >all</text>
+        <text x="10" y="34" >aural</text>
+        <text x="10" y="54" >braille</text>
+        <text x="10" y="74" >embossed</text>
+        <text x="10" y="94" >handheld</text>
+        <text x="10" y="114" >print</text>
+        <text x="10" y="134" >projection</text>
+        <text x="10" y="154" >screen</text>
+        <text x="10" y="174" >tty</text>
+        <text x="10" y="194" >tv</text>
+      </g>
+
+      <g style="visibility: hidden">
+        <use xlink:href="#check" x="125" y="15" class="all" />
+        <use xlink:href="#check" x="125" y="35" class="aural" />
+        <use xlink:href="#check" x="125" y="55" class="braille" />
+        <use xlink:href="#check" x="125" y="75" class="embossed" />
+        <use xlink:href="#check" x="125" y="95" class="handheld" />
+        <use xlink:href="#check" x="125" y="115" class="print" />
+        <use xlink:href="#check" x="125" y="135" class="projection" />
+        <use xlink:href="#check" x="125" y="155" class="screen" />
+        <use xlink:href="#check" x="125" y="175" class="tty" />
+        <use xlink:href="#check" x="125" y="195" class="tv" />
+      </g>
+
+    </g>
+
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/styling/cssMediaPrint.png 
b/tests/data/svg/batik/tests/spec/styling/cssMediaPrint.png
new file mode 100644
index 0000000..4448f8f
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/cssMediaPrint.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/cssMediaProjection.png 
b/tests/data/svg/batik/tests/spec/styling/cssMediaProjection.png
new file mode 100644
index 0000000..dcd3117
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/cssMediaProjection.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/cssMediaScreen.png 
b/tests/data/svg/batik/tests/spec/styling/cssMediaScreen.png
new file mode 100644
index 0000000..4fe3a20
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/cssMediaScreen.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/defaultFontFamily.svg 
b/tests/data/svg/batik/tests/spec/styling/defaultFontFamily.svg
new file mode 100644
index 0000000..e2341b7
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/styling/defaultFontFamily.svg
@@ -0,0 +1,29 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; 
+    width="450" height="500" viewBox="0 0 450 500">
+
+    <text x="50%" y="50%" font-size="30" text-anchor="middle">Default font-family</text>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/styling/defaultFontFamilyArial.png 
b/tests/data/svg/batik/tests/spec/styling/defaultFontFamilyArial.png
new file mode 100644
index 0000000..52c7ffa
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/defaultFontFamilyArial.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/defaultFontFamilyTimes.png 
b/tests/data/svg/batik/tests/spec/styling/defaultFontFamilyTimes.png
new file mode 100644
index 0000000..c2b01ba
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/defaultFontFamilyTimes.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/emptyStyle.png 
b/tests/data/svg/batik/tests/spec/styling/emptyStyle.png
new file mode 100644
index 0000000..213f640
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/emptyStyle.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/emptyStyle.svg 
b/tests/data/svg/batik/tests/spec/styling/emptyStyle.svg
new file mode 100644
index 0000000..724f68a
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/styling/emptyStyle.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+
+<style type="text/css" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/styling/fontShorthand.png 
b/tests/data/svg/batik/tests/spec/styling/fontShorthand.png
new file mode 100644
index 0000000..1f27671
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/fontShorthand.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/fontShorthand.svg 
b/tests/data/svg/batik/tests/spec/styling/fontShorthand.svg
new file mode 100644
index 0000000..42f66dd
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/styling/fontShorthand.svg
@@ -0,0 +1,98 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+
+<!-- ====================================================================== -->
+<!-- Image element references an SVG file                                   -->
+<!--                                                                        -->
+<!-- @author Thierry Kormann sophia inria fr                                -->
+<!-- @version $Id: fontShorthand.svg 475477 2006-11-15 22:44:28Z cam $         -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+
+    <title>Test the CSS 'font' shorthand property</title>
+    <text class="title" x="50%" y="30"
+         >Test the CSS 'font' shorthand property</text>
+
+<style type="text/css"><![CDATA[
+  @font-face { font-family: "bolder"; src: "Courier" }
+  .f1 { font: 20px Serif; }
+  .f2 { font: 20 SanSerif; }
+  .f3 { font: 20 times; }
+  .f4 { font: bold 20 times; }
+  .f5 { font: italic 20 times; }
+  .f6 { font: bold italic 20 times; }
+  .f7 { font: italic bold 20 times; }
+  .f8 { font: 700 20 times; }
+  .f9 { font: 700 small-caps 20 times; }
+  .f10 { font: small-caps 700 20 times; }
+  .f11 { font: small-caps 700 italic 20 times; }
+  .f12 { font: 700 small-caps italic 20 times; }
+  .f13 { font: small-caps italic 700 20 times; }
+  .f14 { font: 200 "bolder"; }
+  .f15 { font: 200 bolder; }
+  .f16 { font: 200px bolder; }
+  .f17 { font: bolder 200 bolder; }
+  .f18 { font: menu; }
+  .f19 { font: small-caption; }
+]]></style>
+
+    <g id="testContent" font-size="8pt" font-family="sanserif">
+       <text x="225" y="60">default</text>
+       <text class="f1" x="10" y="60">font: 20px Serif</text>
+       <text class="f2" x="10" y="80">font: 20 SanSerif</text>
+       <text class="f3" x="10" y="100">font: 20 times</text>
+       <text class="f4" x="10" y="120">font: bold 20 times</text>
+       <text class="f5" x="10" y="140">font: italic 20 times</text>
+       <text class="f6" x="10" y="160">font: bold italic 20 times</text>
+       <text class="f7" x="10" y="180">font: italic bold 20 times</text>
+       <text class="f8" x="10" y="200">font: 200 20 times</text>
+       <text class="f9"  x="10" y="220">font: 700 small-caps 20 times</text>
+       <text class="f10" x="10" y="240">font: small-caps 700 20 times</text>
+       <text class="f11" x="10" y="260">font: small-caps 700 italic 20 times</text>
+       <text class="f12" x="10" y="280">font: 700 small-caps italic 20 times</text>
+       <text class="f13" x="10" y="300">font: small-caps italic 700 20 times</text>
+       <g transform="scale(.1)">
+          <text class="f14" x="100" y="3200">font: 200 "bolder"</text>
+          <text class="f15" x="100" y="3400">font: 200 bolder</text>
+          <text class="f16" x="100" y="3600">font: 200px bolder</text>
+          <text class="f17" x="100" y="3800">font: bolder 200 bolder</text>
+       </g>
+       <g font-weight="bold">
+          <text class="f5" x="10" y="400">font: italic 20 times</text>
+       </g>
+          <text x="200" y="400">group font-weight="bold"</text>
+
+       <g font-style="italic">
+          <text class="f4" x="10" y="420">font: bold 20 times</text>
+       </g>
+          <text x="200" y="420">group font-style="italic"</text>
+
+       <text class="f18" x="10" y="440">File: menu</text>
+       <text class="f19" x="10" y="460">File: small-caption</text>
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/styling/important.png 
b/tests/data/svg/batik/tests/spec/styling/important.png
new file mode 100644
index 0000000..8905a76
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/important.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/important.svg 
b/tests/data/svg/batik/tests/spec/styling/important.svg
new file mode 100644
index 0000000..a091248
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/styling/important.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+
+<!-- ====================================================================== -->
+<!-- Test of the style element                                              -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: important.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+
+  <title>Test of CSS !important properties.</title>
+  <text x="50%" y="50" class="title"
+    >Test of CSS !important properties.</text>
+
+  <style type="text/css">
+     .t1 { fill: green !important; fill: red }
+     .t2 { fill: red !important; fill: green !important }
+     .t3 { fill: yellow; }
+     g > rect { fill: green !important; }
+
+     .t4 { fill: green !important; }
+     g > g > rect { fill: red !important; }
+     text { text-anchor: middle; }
+  </style>
+
+  <rect class="t1" x="25"  y="75"  width="100" height="100" fill="blue"/>
+  <text x="75" y="205">fill: green !important; fill: red</text>
+  <rect class="t2" x="175" y="75"  width="100" height="100" fill="blue"/>
+  <text x="225" y="190">fill: red !important; fill: green !important</text>
+  <rect x="325" y="75"  width="100" height="100" 
+        fill="blue" style="fill:green"/>
+  <text x="375" y="205">fill="blue" style="fill:green"</text>
+
+  <rect class="t1" x="25"  y="250" width="100" height="100" 
+        fill="blue" style="fill: purple"/>
+  <text x="75" y="365">fill: green !important; fill: red</text>
+<g>
+  <rect class="t3" x="175" y="250" width="100" height="100" fill="red"/>
+  <text x="225" y="365">.t3 { fill: yellow; }<tspan x="225" dy="15"
+     >g &gt; rect { fill: green !important; }</tspan></text>
+  <g>
+    <rect class="t4" x="325" y="250" width="100" height="100" fill="blue"/>
+    <text x="360" y="400">.t4 { fill: green !important; }<tspan x="360" dy="15"
+       >g &gt; g &gt; rect { fill: red !important; }</tspan></text>
+  </g>
+</g>
+
+</svg>
\ No newline at end of file
diff --git a/tests/data/svg/batik/tests/spec/styling/smiley.png 
b/tests/data/svg/batik/tests/spec/styling/smiley.png
new file mode 100644
index 0000000..85fab1d
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/smiley.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/smiley.svg 
b/tests/data/svg/batik/tests/spec/styling/smiley.svg
new file mode 100644
index 0000000..266ea96
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/styling/smiley.svg
@@ -0,0 +1,86 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Alternate stylesheets                                                     -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: smiley.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/default.css" ?>
+
+<?xml-stylesheet type="text/css" title="Smiling" href="../../resources/style/smiling.css" alternate="yes" ?>
+<?xml-stylesheet type="text/css" title="Basic Sad" href="../../resources/style/basicsad.css" alternate="yes" 
?>
+<?xml-stylesheet type="text/css" title="Wow!" href="../../resources/style/wow.css" alternate="yes" ?>
+<?xml-stylesheet type="text/css" title="Grim" href="../../resources/style/grim.css" alternate="yes" ?>
+<?xml-stylesheet type="text/css" title="Oups" href="../../resources/style/oups.css" alternate="yes" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+<title>Alternate stylesheets</title>
+
+<style type="text/css"><![CDATA[
+
+.title {
+  font-family: Arial, Helvetica; 
+  font-size: 16;
+  text-anchor: middle;
+}
+
+.legend {
+  font-family: Arial, Helvetica; 
+  font-size: 10;
+  text-anchor: middle;
+}
+
+]]> 
+
+</style>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent">
+    <text x="225" y="50" class="title">Alternate Stylesheets</text>
+
+<text x="20" y="80" style="font-size:12; text-anchor:start">
+<tspan>Choose your alternate stylesheet using the 'View->Use Stylesheet'</tspan>
+<tspan x="20" y="100"> submenu items.</tspan>
+</text>
+
+<circle cx="50%" cy="50%" r="25%" style="fill:gold; stroke:orange; stroke-width:4"/>
+<g style="font-size:128; text-anchor:middle; fill:black; stroke:none" >
+    <text class="smiling" x="50%" y="56%">:-)</text>
+    <text class="basicsad" x="50%" y="56%">:-(</text>
+    <text class="wow" x="50%" y="56%">:-o</text> 
+    <text class="grim" x="50%" y="56%">:-|</text>
+    <text class="oups" x="50%" y="56%">:-*</text>
+</g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/styling/smileyBasic Sad.png 
b/tests/data/svg/batik/tests/spec/styling/smileyBasic Sad.png
new file mode 100644
index 0000000..f77fbd0
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/smileyBasic Sad.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/smileyGrim.png 
b/tests/data/svg/batik/tests/spec/styling/smileyGrim.png
new file mode 100644
index 0000000..db1038f
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/smileyGrim.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/smileyOups.png 
b/tests/data/svg/batik/tests/spec/styling/smileyOups.png
new file mode 100644
index 0000000..0c16db2
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/smileyOups.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/smileySmiling.png 
b/tests/data/svg/batik/tests/spec/styling/smileySmiling.png
new file mode 100644
index 0000000..595fd78
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/smileySmiling.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/smileyWow!.png 
b/tests/data/svg/batik/tests/spec/styling/smileyWow!.png
new file mode 100644
index 0000000..c3797f9
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/smileyWow!.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/styleElement.png 
b/tests/data/svg/batik/tests/spec/styling/styleElement.png
new file mode 100644
index 0000000..988219e
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/styling/styleElement.png differ
diff --git a/tests/data/svg/batik/tests/spec/styling/styleElement.svg 
b/tests/data/svg/batik/tests/spec/styling/styleElement.svg
new file mode 100644
index 0000000..c1ddea7
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/styling/styleElement.svg
@@ -0,0 +1,80 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+
+<!-- ====================================================================== -->
+<!-- Test of the style element                                              -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: styleElement.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+
+  <style type="text/css">
+    rect { stroke="black" }
+  </style>
+
+<!-- The '.blue' will be applied as the comment characters will be ignored.
+     the '.green' rule will not be as the parser will abort on the invalid
+     'TEST' content because the CDATA block hides the XML comments from
+     the XML parser. --> 
+
+  <style type="text/css"><![CDATA[
+    <!-- .blue { fill: blue } -->
+    <!-- TEST -->
+    .green { fill: green }
+    /*end of css */
+  ]]></style>
+
+<!-- Only .yellow will be applied .purple will be stripped by the
+     XML parser (Note no CDATA block). --> 
+
+  <style type="text/css">
+    <!-- .purple { fill: purple } -->
+    <!-- TEST -->
+    .yellow { fill: yellow }
+    /* end of css */
+  </style>
+
+  <title>Test of XML comments in &lt;style&gt; elements</title>
+  <text x="50%" y="50" class="title"
+    >Test of XML comments in &lt;style&gt; elements</text>
+  <g id="test-content" >
+    <rect class="blue" x="10" y="100" width="100" height="50"/>
+    <text x="150" y="125">class="blue"</text>
+
+    <rect class="green" x="10" y="175" width="100" height="50"/>
+    <text x="150" y="200">class="green"</text>
+
+    <rect class="purple" x="10" y="250" width="100" height="50"/>
+    <text x="150" y="275">class="purple"</text>
+
+    <rect class="yellow" x="10" y="325" width="100" height="50"/>
+    <text x="150" y="350">class="yellow"</text>
+  </g>
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/text/longTextOnPath.png 
b/tests/data/svg/batik/tests/spec/text/longTextOnPath.png
new file mode 100644
index 0000000..10744e7
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/longTextOnPath.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/longTextOnPath.svg 
b/tests/data/svg/batik/tests/spec/text/longTextOnPath.svg
new file mode 100644
index 0000000..00d5b82
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/longTextOnPath.svg
@@ -0,0 +1,56 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Tests various text on a path                                           -->
+<!--                                                                        -->
+<!-- @author bella robinson cmis csiro au                                   -->
+<!-- @version $Id: longTextOnPath.svg 475685 2006-11-16 11:16:05Z cam $   -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+  <title>Long text on a path test for selection</title>
+
+  <g id="content">
+
+    <text class="title" x="50%" y="40">Long text on a path test for selection</text>
+
+    <defs>
+      <path id="Path" style="fill:none; stroke:blue;" 
+            d="M 25 150 h 400 m -400 20 h 400 m -400 20 h 400 m -400 20 h 400 m -400 20 h 400 m -400 20 h 
400 m -400 20 h 400 m -400 20 h 400 m -400 20 h 400 m -400 20 h 400 m -400 20 h 400 m -400 20 h 400 m -400 20 
h 400 m -400 20 h 400 m -400 20 h 400 m -400 20"/>
+
+    </defs>
+
+    <use xlink:href="#Path" fill="none" stroke="blue" />
+    <rect x="20" y="100" width="205" height="375" fill="rgb(200,200,255)"/>
+    <text font-size="20" style="text-anchor:start">
+      <textPath xlink:href="#Path" startOffset="0%">This is an example of a very long string that is split 
across multiple lines via the textPath tag. The purpose of this test is to ensure that text-selection can 
keep up even when relatively large numbers of characters are part of the selection. Since I haven't reached 
the end yet, let me keep going with more really quite useless text just to see if we hit a limit where it 
really starts to slow things down.  However if it hasn't slowed down by now I'm guessing that it won't slow 
down at all.  But you never know for sure until you try it, so I am, and here is the result.  Selection does 
bog down a little near the end but it's redraw related.</textPath>
+    </text>
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/text/smallFonts.png 
b/tests/data/svg/batik/tests/spec/text/smallFonts.png
new file mode 100644
index 0000000..eeea934
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/smallFonts.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/smallFonts.svg 
b/tests/data/svg/batik/tests/spec/text/smallFonts.svg
new file mode 100644
index 0000000..4cd4e80
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/smallFonts.svg
@@ -0,0 +1,136 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests small font sizes (<1) with various text features.                    -->
+<!-- This is basically a copy of the textFeatures test file with a small       -->
+<!-- viewbox set.                                                               -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                     -->
+<!-- @version $Id: smallFonts.svg 475685 2006-11-16 11:16:05Z cam $                                          
                   -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 9 10">
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+
+  <defs>
+    <filter id="blur" filterUnits="userSpaceOnUse" x="0" y="-1.6" width="4" height="2" filterRes="200">
+      <feGaussianBlur stdDeviation="0.04 0.04" x="0" y="-1.6" width="4" height="2"/> 
+    </filter> 
+
+    <path id="Path1" style="fill:none; stroke:green; stroke-width:5" transform="scale(0.003,0.003)"
+          d="M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100"/>
+
+  </defs>
+
+  <g id="testContent" stroke-width="0.01">
+
+    <text  x="50%" y="10%" font-size="0.3" text-anchor="middle" >
+      Small font size test (viewBox="0 0 9 10")</text>
+
+    <g font-family="dialog" font-size="0.3" 
+      text-anchor="start" fill="MidnightBlue">
+      <text x="10%" y="20%">
+        Text can change 
+        <tspan font-size="0.6">size,</tspan>
+        <tspan font-size="0.4" font-family="Serif">typeface,</tspan> 
+        <tspan fill="green">color,</tspan>
+        or 
+        <tspan fill="none" font-style="oblique" stroke="red" stroke-width="0.02">style</tspan>
+      </text>
+
+      <text fill="MidnightBlue" x="10%" y="24%"> 
+        within a single text element.
+      </text> 
+
+      <text x="10%" y="32%">Styling features include 
+        <tspan font-weight="bold">weight,</tspan> 
+        <tspan font-style="oblique">posture,</tspan> and 
+        <tspan font-family="serif">typeface.</tspan>
+      </text>
+
+      <rect x="10%" y="35%" width="45%" height="10%" fill="DodgerBlue"/>
+      <text x="10%" y="40%">
+        Graphics attributes such as 
+        <tspan fill="red" opacity="0.3">opacity</tspan> can be applied.
+      </text>
+
+      <text x="10%" y="50%">"text decoration" can include 
+        <tspan text-decoration="underline">underline,</tspan>
+        <tspan text-decoration="overline">overline,</tspan> and
+      </text> 
+
+      <text x="10%" y="54%">
+        <tspan text-decoration="line-through">strikethrough. </tspan>
+        <tspan dx="0.1" baseline-shift="super" font-size="0.2">Super</tspan> and
+        <tspan baseline-shift="sub" font-size="0.2">sub</tspan> scripts are available. 
+      </text>
+
+      <text x="10%" y="62%" stroke-linecap="round" stroke-linejoin="round">
+        Various 
+        <tspan stroke="red" fill="none" stroke-width="0.01">outline
+        </tspan>styles, 
+        <tspan stroke="red" stroke-width="0.01" fill="blue" >fill colors
+        </tspan>and
+        <tspan stroke="red" stroke-width="0.02" fill="blue" >thicknesses
+        </tspan>can be
+      </text>
+
+      <text x="10%" y="66%">used, and the outline stroke can be 
+        <tspan stroke="black" fill="none" stroke-width="0.01" 
+          stroke-linecap="round" stroke-linejoin="round">rounded</tspan>
+        or 
+        <tspan stroke="black" fill="none" stroke-width="0.01" 
+          stroke-linecap="square" stroke-linejoin="miter">mitered.</tspan>
+      </text>
+
+      <text x="10%" y="75%">Text elements also can be filtered, transformed
+        <tspan x="10%" y="79%">and placed on a path.</tspan></text>
+
+      <g font-size="0.8" transform="translate(1.5, 9)">  
+        <text x="0" y="0" filter="url(#blur)" fill="black" opacity="0.7"
+          transform="skewX(40) translate(-0.12,-0.12)">
+          Shadow
+        </text>
+        <text x="0" y="0" stroke="black" stroke-width="0.01" fill="white">
+          Shadow
+        </text>
+      </g>
+
+      <g transform="translate(5,8)">
+        <use xlink:href="#Path1"/>
+        <text font-size="0.3" style="text-anchor:start">
+          <textPath xlink:href="#Path1" startOffset="0%">Small text <tspan fill="red" 
dy="-0.1">on</tspan><tspan dy="0.1"> a Path</tspan></textPath>
+        </text>
+      </g>
+
+    </g>
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use transform="scale(0.02, 0.02)" xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textAnchor.png 
b/tests/data/svg/batik/tests/spec/text/textAnchor.png
new file mode 100644
index 0000000..de634bb
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textAnchor.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textAnchor.svg 
b/tests/data/svg/batik/tests/spec/text/textAnchor.svg
new file mode 100644
index 0000000..e6e0bf3
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textAnchor.svg
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" 
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Tests text-anchor on tspan elements                                    -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: textAnchor.svg 475477 2006-11-15 22:44:28Z cam $                                          
                -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; >
+
+    <text class="title" x="50%" y="40">text-anchor on &lt;tspan&gt;</text>
+
+    <g id="testContent" transform="translate(56.25, 82.5) scale(.75,.75)">
+
+        <g transform="translate(0,0)">
+            <rect width="450" height="167" fill="black" opacity=".1" />
+            <rect y="167" width="450" height="167" fill="white" />
+            <rect y="334" width="450" height="166" fill="black" opacity=".1" />
+
+            <line x1="150" y1="0" x2="150" y2="500" style="stroke:red; fill:none" />
+            <line x1="320" y1="0" x2="320" y2="500" style="stroke:red; fill:none" />
+            <rect width="450" height="500" stroke="red" fill="none" />
+        </g>
+
+        <g transform="translate(0, 0)">
+        <!-- ############################## -->
+        <!-- textChunk1: text-anchor:start  -->
+        <!-- textChunk2: text-anchor:start  -->
+        <!-- ############################## -->
+        <g transform="translate(0, 0)">
+    
+            <text y="50">
+                <tspan x="150" style="text-anchor:start">I am the</tspan>
+                <tspan style="fill:red"> same text chunk</tspan>
+                <tspan x="320" y="30" style="text-anchor:start">another text chunk</tspan>
+            </text>
+
+        </g>
+
+
+        <!-- ############################## -->
+        <!-- textChunk1: text-anchor:middle -->
+        <!-- textChunk2: text-anchor:start  -->
+        <!-- ############################## -->
+        <g transform="translate(0 40)">
+
+            <text y="50">
+                <tspan x="150" style="text-anchor:middle">I am the</tspan>
+                <tspan style="fill:red"> same text chunk</tspan>
+                <tspan x="320" y="30" style="text-anchor:start">another text chunk</tspan>
+            </text>
+
+        </g>
+
+        <!-- ############################## -->
+        <!-- textChunk1: text-anchor:end    -->
+        <!-- textChunk2: text-anchor:start  -->
+        <!-- ############################## -->
+        <g transform="translate(0 80)">
+
+            <text y="50">
+                <tspan x="150" style="text-anchor:end">I am the</tspan>
+                <tspan style="fill:red"> same text chunk</tspan>
+                <tspan x="320" y="30" style="text-anchor:start">another text chunk</tspan>
+            </text>
+
+        </g>
+        </g>
+
+        <!-- ############################################################################ -->
+        <!-- ############################################################################ -->
+
+        <g transform="translate(0 50)">
+        <!-- ############################## -->
+        <!-- textChunk1: text-anchor:start  -->
+        <!-- textChunk2: text-anchor:middle -->
+        <!-- ############################## -->
+        <g transform="translate(0 120)">
+
+            <text y="50">
+                <tspan x="150" style="text-anchor:start">I am the</tspan>
+                <tspan style="fill:red"> same text chunk</tspan>
+                <tspan x="320" y="30" style="text-anchor:middle">another text chunk</tspan>
+            </text>
+
+        </g>
+
+
+        <!-- ############################## -->
+        <!-- textChunk1: text-anchor:middle -->
+        <!-- textChunk2: text-anchor:middle -->
+        <!-- ############################## -->
+        <g transform="translate(0 160)">
+
+            <text y="50">
+                <tspan x="150" style="text-anchor:middle">I am the</tspan>
+                <tspan style="fill:red"> same text chunk</tspan>
+                <tspan x="320" y="30" style="text-anchor:middle">another text chunk</tspan>
+            </text>
+
+        </g>
+
+        <!-- ############################## -->
+        <!-- textChunk1: text-anchor:end    -->
+        <!-- textChunk2: text-anchor:middle -->
+        <!-- ############################## -->
+        <g transform="translate(0 200)">
+
+            <text y="50">
+                <tspan x="150" style="text-anchor:end">I am the</tspan>
+                <tspan style="fill:red"> same text chunk</tspan>
+                <tspan x="320" y="30" style="text-anchor:middle">another text chunk</tspan>
+            </text>
+
+        </g>
+        </g>
+
+        <!-- ############################################################################ -->
+        <!-- ############################################################################ -->
+        <g transform="translate(0, 80)">
+
+        <!-- ############################# -->
+        <!-- textChunk1: text-anchor:start -->
+        <!-- textChunk2: text-anchor:end   -->
+        <!-- ############################# -->
+        <g transform="translate(0 260)">
+
+            <text y="50">
+                <tspan x="150" style="text-anchor:start">I am the</tspan>
+                <tspan style="fill:red"> same text chunk</tspan>
+                <tspan x="320" y="30" style="text-anchor:end">another text chunk</tspan>
+                </text>
+
+        </g>
+
+
+        <!-- ############################## -->
+        <!-- textChunk1: text-anchor:middle -->
+        <!-- textChunk2: text-anchor:end    -->
+        <!-- ############################## -->
+        <g transform="translate(0 300)">
+
+            <text y="50">
+                <tspan x="150" style="text-anchor:middle">I am the</tspan>
+                <tspan style="fill:red"> same text chunk</tspan>
+                <tspan x="320" y="30" style="text-anchor:end">another text chunk</tspan>
+            </text>
+
+        </g>
+
+        <!-- ############################## -->
+        <!-- textChunk1: text-anchor:end    -->
+        <!-- textChunk2: text-anchor:end    -->
+        <!-- ############################## -->
+        <g transform="translate(0 340)">
+
+            <text y="50">
+                <tspan x="150" style="text-anchor:end">I am the</tspan>
+                <tspan style="fill:red"> same text chunk</tspan>
+                <tspan x="320" y="30" style="text-anchor:end">another text chunk</tspan>
+            </text>
+
+        </g>
+        </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textAnchor2.png 
b/tests/data/svg/batik/tests/spec/text/textAnchor2.png
new file mode 100644
index 0000000..f5b6aad
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textAnchor2.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textAnchor2.svg 
b/tests/data/svg/batik/tests/spec/text/textAnchor2.svg
new file mode 100644
index 0000000..087f3ee
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textAnchor2.svg
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" 
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Tests text-anchor on multiple text chunks on single tspan element      -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: textAnchor2.svg 475685 2006-11-16 11:16:05Z cam $  -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; >
+
+  <text class="title" x="50%" y="30">text-anchor on a single &lt;tspan&gt;</text>
+
+  <g id="testContent">
+
+    <!-- ################################################################# -->
+    <!-- table                                                             -->
+    <!-- ################################################################# -->
+    <g>
+      <rect x="75" y="50"  width="300" height="20" style="fill:black; stroke:black" />
+      <rect x="75" y="70" width="300" height="40" style="fill:#eee; stroke:black" />
+      <rect x="75" y="110" width="300" height="40" style="fill:white; stroke:black" />
+      <rect x="75" y="150" width="300" height="40" style="fill:#eee; stroke:black" />
+      <text x="90" y="64" style="fill:white;font-size:14">x attribute define new text chunks</text>
+      <g style="stroke:crimson; fill:none">
+        <line x1="145" y1="70" x2="145" y2="190" />
+        <line x1="185" y1="70" x2="185" y2="190" />
+        <line x1="225" y1="70" x2="225" y2="190" />
+        <line x1="265" y1="70" x2="265" y2="190" />
+        <line x1="305" y1="70" x2="305" y2="190" />
+      </g>
+    </g>
+
+    <g transform="translate(0 150)" stroke="black" >
+      <rect x="75" y="50"  width="300" height="20" style="fill:black" />
+      <rect x="75" y="70" width="300" height="40" style="fill:#eee" />
+      <rect x="75" y="110" width="300" height="40" style="fill:white" />
+      <rect x="75" y="150" width="300" height="40" style="fill:#eee" />
+      <text x="90" y="64" style="fill:white;stroke:none;font-size:14"
+        >y attribute does not define new text chunk</text>
+      <g style="stroke:crimson; fill:none">
+        <line x1="225" y1="70" x2="225" y2="190" />
+      </g>
+    </g>
+
+    <g transform="translate(0 300)">
+      <rect x="75" y="50"  width="300" height="20" style="fill:black; stroke:black" />
+      <rect x="75" y="70" width="300" height="40" style="fill:#eee; stroke:black" />
+      <rect x="75" y="110" width="300" height="40" style="fill:white; stroke:black" />
+      <rect x="75" y="150" width="300" height="40" style="fill:#eee; stroke:black" />
+      <text x="90" y="64" style="fill:white;font-size:14">x &amp; y attributes define new text chunks</text>
+      <g style="stroke:crimson; fill:none">
+        <line x1="145" y1="70" x2="145" y2="190" />
+        <line x1="185" y1="70" x2="185" y2="190" />
+        <line x1="225" y1="70" x2="225" y2="190" />
+        <line x1="265" y1="70" x2="265" y2="190" />
+        <line x1="305" y1="70" x2="305" y2="190" />
+      </g>
+    </g>
+
+    <!-- ################################################################# -->
+    <!-- x attribute defines new text chunks                               -->
+    <!-- ################################################################# -->
+
+    <text transform="translate(145 94)"><tspan x="0 40 80 120 160" 
style="text-anchor:start">Batik</tspan></text>
+    <text transform="translate(145 134)"><tspan x="0 40 80 120 160" 
style="text-anchor:middle">Batik</tspan></text>
+    <text transform="translate(145 174)"><tspan x="0 40 80 120 160" 
style="text-anchor:end">Batik</tspan></text>
+
+    <!-- ################################################################# -->
+    <!-- y attribute does not define new text chunk                        -->
+    <!-- ################################################################# -->
+    <text transform="translate(225 240)"><tspan y="0 10 0 10 0" 
style="text-anchor:start">Batik</tspan></text>
+    <text transform="translate(225 280)"><tspan y="0 10 0 10 0" 
style="text-anchor:middle">Batik</tspan></text>
+    <text transform="translate(225 320)"><tspan y="0 10 0 10 0" style="text-anchor:end">Batik</tspan></text>
+
+    <!-- ################################################################# -->
+    <!-- both x and y attributes define new text chunks                    -->
+    <!-- ################################################################# -->
+    <text transform="translate(145 390)"><tspan x="0 40 80 120 160" y="0 10 0 10 0" 
style="text-anchor:start">Batik</tspan></text>
+    <text transform="translate(145 430)"><tspan x="0 40 80 120 160" y="0 10 0 10 0" 
style="text-anchor:middle">Batik</tspan></text>
+    <text transform="translate(145 470)"><tspan x="0 40 80 120 160" y="0 10 0 10 0" 
style="text-anchor:end">Batik</tspan></text>
+
+  </g>
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textAnchor3.png 
b/tests/data/svg/batik/tests/spec/text/textAnchor3.png
new file mode 100644
index 0000000..b106850
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textAnchor3.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textAnchor3.svg 
b/tests/data/svg/batik/tests/spec/text/textAnchor3.svg
new file mode 100644
index 0000000..e312654
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textAnchor3.svg
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" 
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Tests text-anchor on multiple text chunks on single tspan element      -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: textAnchor3.svg 475685 2006-11-16 11:16:05Z cam $  -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; >
+
+   <text class="title" x="50%" y="30">text-anchor on a single &lt;tspan&gt;</text>
+
+   <g id="testContent">
+
+     <!-- ################################################################# -->
+     <!-- table                                                             -->
+     <!-- ################################################################# -->
+     <g>
+       <rect x="75" y="50"  width="300" height="20" style="fill:black; stroke:black" />
+       <rect x="75" y="70" width="300" height="40" style="fill:#eee; stroke:black" />
+       <rect x="75" y="110" width="300" height="40" style="fill:white; stroke:black" />
+       <rect x="75" y="150" width="300" height="40" style="fill:#eee; stroke:black" />
+       <text x="90" y="64" style="fill:white;font-size:14">x attributed tspan with extra text</text>
+       <g style="stroke:lightsteelblue; fill:none">
+         <line x1="150" y1="70" x2="150" y2="190" />
+         <line x1="190" y1="70" x2="190" y2="190" />
+         <line x1="230" y1="70" x2="230" y2="190" />
+         <line x1="270" y1="70" x2="270" y2="190" />
+         <line x1="310" y1="70" x2="310" y2="190" />
+       </g>
+     </g>
+
+     <g transform="translate(0 150)">
+       <rect x="75" y="50"  width="300" height="20" style="fill:black; stroke:black" />
+       <rect x="75" y="70" width="300" height="40" style="fill:#eee; stroke:black" />
+       <rect x="75" y="110" width="300" height="40" style="fill:white; stroke:black" />
+       <rect x="75" y="150" width="300" height="40" style="fill:#eee; stroke:black" />
+       <text x="90" y="64" style="fill:white;font-size:14">x attribute for some chars</text>
+       <g style="stroke:lightsteelblue; fill:none">
+         <line x1="150" y1="70" x2="150" y2="190" />
+         <line x1="190" y1="70" x2="190" y2="190" />
+         <line x1="230" y1="70" x2="230" y2="190" />
+       </g>
+     </g>
+
+     <g transform="translate(0 300)">
+       <rect x="75" y="50"  width="300" height="20" style="fill:black; stroke:black" />
+       <rect x="75" y="70" width="300" height="40" style="fill:#eee; stroke:black" />
+       <rect x="75" y="110" width="300" height="40" style="fill:white; stroke:black" />
+       <rect x="75" y="150" width="300" height="40" style="fill:#eee; stroke:black" />
+       <text x="90" y="64" style="fill:white;font-size:14">x &amp; y attributes with inheritance</text>
+       <g style="stroke:lightsteelblue; fill:none">
+         <line x1="150" y1="70" x2="150" y2="190" />
+         <line x1="190" y1="70" x2="190" y2="190" />
+         <line x1="230" y1="70" x2="230" y2="190" />
+         <line x1="270" y1="70" x2="270" y2="190" />
+       </g>
+     </g>
+
+     <!-- ################################################################# -->
+     <!-- x attribute defines new text chunks extra text after tspan        -->
+     <!-- ################################################################# -->
+
+     <text transform="translate(150  94)"><tspan x="0 40 80 120 160" y="0 0 0 0 10" 
style="text-anchor:start">Batik</tspan><tspan fill="crimson"> rules!</tspan></text>
+     <text transform="translate(150 134)"><tspan x="0 40 80 120 160" y="0 0 0 0 10" 
style="text-anchor:middle">Batik</tspan><tspan fill="crimson"> rules!</tspan></text>
+     <text transform="translate(150 174)"><tspan x="0 40 80 120 160" y="0 0 0 0 10" 
style="text-anchor:end">Batik</tspan><tspan fill="crimson"> rules!</tspan></text>
+
+     <!-- ################################################################# -->
+     <!-- x attribute defines new text chunks for only some chars           -->
+     <!-- ################################################################# -->
+     <text transform="translate(150 240)"><tspan x="0 40 80" style="text-anchor:start">Batik</tspan></text>
+     <text transform="translate(150 280)"><tspan x="0 40 80" style="text-anchor:middle">Batik</tspan></text>
+     <text transform="translate(150 320)"><tspan x="0 40 80" style="text-anchor:end">Batik</tspan></text>
+
+     <!-- ################################################################# -->
+     <!-- both x and y attributes define new text chunks                    -->
+     <!-- ################################################################# -->
+     <text transform="translate(150 390)" x="0 0 0 120"><tspan x="0 40 80" y="0 10 0 10" 
style="text-anchor:start">Batik</tspan><tspan fill="crimson"> rules!</tspan></text>
+     <text transform="translate(150 430)" x="0 0 0 120"><tspan x="0 40 80" y="0 10 0 10" 
style="text-anchor:middle">Batik</tspan><tspan fill="crimson"> rules!</tspan></text>
+     <text transform="translate(150 470)" x="0 0 0 120"><tspan x="0 40 80" y="0 10 0 10" 
style="text-anchor:end">Batik</tspan><tspan fill="crimson"> rules!</tspan></text>
+
+   </g>
+
+ </svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textBiDi-arabic-5-40.png 
b/tests/data/svg/batik/tests/spec/text/textBiDi-arabic-5-40.png
new file mode 100644
index 0000000..4c12b51
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textBiDi-arabic-5-40.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textBiDi-cyrillic-4-24.png 
b/tests/data/svg/batik/tests/spec/text/textBiDi-cyrillic-4-24.png
new file mode 100644
index 0000000..cd5f0aa
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textBiDi-cyrillic-4-24.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textBiDi-greek-0-35.png 
b/tests/data/svg/batik/tests/spec/text/textBiDi-greek-0-35.png
new file mode 100644
index 0000000..1f1f60a
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textBiDi-greek-0-35.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textBiDi-hebrew-10-20.png 
b/tests/data/svg/batik/tests/spec/text/textBiDi-hebrew-10-20.png
new file mode 100644
index 0000000..df62324
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textBiDi-hebrew-10-20.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textBiDi-latin-0-20.png 
b/tests/data/svg/batik/tests/spec/text/textBiDi-latin-0-20.png
new file mode 100644
index 0000000..b27e9bd
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textBiDi-latin-0-20.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textBiDi-latin-extended-0-15.png 
b/tests/data/svg/batik/tests/spec/text/textBiDi-latin-extended-0-15.png
new file mode 100644
index 0000000..7165587
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textBiDi-latin-extended-0-15.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textBiDi.png 
b/tests/data/svg/batik/tests/spec/text/textBiDi.png
new file mode 100644
index 0000000..c325c47
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textBiDi.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textBiDi.svg 
b/tests/data/svg/batik/tests/spec/text/textBiDi.svg
new file mode 100644
index 0000000..692c792
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textBiDi.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author bill haneman ireland sun com                                      -->
+<!-- @version $Id: textBiDi.svg 475685 2006-11-16 11:16:05Z cam $                                            
                 -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+
+  <g id="testContent">
+    <text class="title" x="50%" y="10%" font-size="15" text-anchor="middle" >
+      BiDi Text / International Text</text>
+    <text x="50%" y="25%" font-size="12.5" text-anchor="middle">Some text goes <tspan fill="blue" 
direction="rtl" unicode-bidi="bidi-override">(right to left)</tspan>, other text goes (left to right).</text>
+
+    <text x="50%" y="30%" font-size="12.5" text-anchor="middle">Some <tspan fill="darkred" direction="rtl" 
unicode-bidi="embed">(embedded bidi)</tspan> text.</text>
+
+    <text style="font-style:oblique;font-size:10;text-anchor:middle" x="50%" y="35%">
+      Text selection allows visually discontiguous 
+      selections across bi-directional text.
+    </text>
+    <g font-family="dialog" font-size="15" text-anchor="start">
+      <text id="latin" fill="MidnightBlue" x="10%" y="45%">latin:
+        ABCDEFG
+        abcdefghijklmnopqrstuvwxyz</text> 
+      <text id="latin-extended" fill="Sienna" x="10%" y="50%">latin-extended: 
+        
&#x0e6;&#x0e7;&#x0e8;&#x0e9;&#x0ea;&#x0eb;&#x0ec;&#x0ed;&#x0ee;&#x0ef;&#x0f0;&#x0f1;&#x0f2;&#x0f3;&#x0f4;</text>
+      <text id="cyrillic" fill="Indigo" x="10%" y="55%">cyrillic: 
+        
&#x411;&#x412;&#x413;&#x414;&#x415;&#x416;&#x417;&#x418;&#x419;&#x41a;&#x41b;&#x41c;&#x41d;&#x41e;&#x41f;&#x420;&#x421;&#x422;&#x423;&#x424;&#x425;&#x426;&#x427;</text>
+      <text id="greek" fill="Maroon" x="10%" y="60%">greek:
+        &#x391;&#x392;&#x393;&#x394; 
&#x3b1;&#x3b2;&#x3b3;&#x3b4;&#x3b5;&#x3b6;&#x3b7;&#x3b8;&#x3b9;&#x3ba;&#x3bb;&#x3bc;&#x3bd;&#x3be;&#x3bf;&#x3c0;&#x3c1;&#x3c2;&#x3c3;&#x3c4;&#x3c5;&#x3c6;&#x3c7;&#x3c8;&#x3c9;</text>
 
+      <text id="hebrew" fill="DarkOliveGreen" x="10%" y="65%">hebrew: 
+        
&#x5d0;&#x5d1;&#x5d2;&#x5d3;&#x5d4;&#x5d5;&#x5d6;&#x5d7;&#x5d8;&#x5d9;&#x5da;&#x5db;&#x5dc;&#x5dd;&#x5de;&#x5df;&#x5e0;&#x5e1;&#x5e2;&#x5e3;&#x5e4;&#x5e5;&#x5e6;&#x5e7;&#x5e8;&#x5e9;&#x5ea;</text>
+      <text fill="DarkOliveGreen" x="10%" y="70%" 
+        
&#x5d0;&#x5d1;&#x5d2;&#x5d3;&#x5d4;&#x5d5;&#x5d6;&#x5d7;&#x5d8;&#x5d9;&#x5da;&#x5db;&#x5dc;&#x5dd;&#x5de;&#x5df;&#x5e0;&#x5e1;&#x5e2;&#x5e3;&#x5e4;&#x5e5;&#x5e6;&#x5e7;&#x5e8;&#x5e9;&#x5ea;</text>
+      <text id="arabic" fill="DarkRed" x="10%" y="75%">arabic: 
+        
&#x621;&#x623;&#x624;&#x625;&#x626;&#x627;&#x628;&#x629;&#x62a;&#x62b;&#x62c;&#x62d;&#x62e;&#x62f;&#x630;&#x631;&#x632;&#x633;&#x634;&#x635;&#x636;&#x637;&#x638;&#x639;&#x640;&#x641;&#x642;&#x643;&#x644;&#x645;&#x646;&#x647;&#x648;&#x649;&#x650;&#x676;</text>
+      <text fill="DarkRed" x="10%" y="80%"
+        
&#x621;&#x623;&#x624;&#x625;&#x626;&#x627;&#x628;&#x629;&#x62a;&#x62b;&#x62c;&#x62d;&#x62e;&#x62f;&#x630;&#x631;&#x632;&#x633;&#x634;&#x635;&#x636;&#x637;&#x638;&#x639;&#x640;&#x641;&#x642;&#x643;&#x644;&#x645;&#x646;&#x647;&#x648;&#x649;&#x650;&#x676;</text>
+    </g>
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textBiDi2.png 
b/tests/data/svg/batik/tests/spec/text/textBiDi2.png
new file mode 100644
index 0000000..5e6d456
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textBiDi2.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textBiDi2.svg 
b/tests/data/svg/batik/tests/spec/text/textBiDi2.svg
new file mode 100644
index 0000000..95addee
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textBiDi2.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Test mixing text directions with X/Y attrs.                            -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: textBiDi.svg 201374 2004-08-18 07:17:26Z vhardy $        -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; >
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+
+    <g id="testContent">
+        <text class="title" x="50%" y="10%" font-size="15" text-anchor="middle" >
+            BiDi Text / International Text 2</text>
+
+      <g font-family="dialog" font-size="15" text-anchor="start">
+        <text id="HE" fill="DarkOliveGreen" x="40" y="110"
+         >&#x5d0;&#x5d1;&#x5d2; ABC</text>
+        <text id="EH" fill="DarkOliveGreen" x="225" y="110"
+         >ABC &#x5d0;&#x5d1;&#x5d2;</text>
+        <text id="EHE" fill="DarkOliveGreen" x="40" y="140"
+         >ABC &#x5d0;&#x5d1;&#x5d2; ABC</text>
+        <text id="HEH" fill="DarkOliveGreen" x="225" y="140"
+         >&#x5d0;&#x5d1;&#x5d2;&#x5d3; ABCD &#x5d0;&#x5d1;&#x5d2;&#x5d3;</text>
+      </g>
+   </g>
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textDecoration.png 
b/tests/data/svg/batik/tests/spec/text/textDecoration.png
new file mode 100644
index 0000000..6962219
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textDecoration.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textDecoration.svg 
b/tests/data/svg/batik/tests/spec/text/textDecoration.svg
new file mode 100644
index 0000000..8284118
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textDecoration.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests the text decoration property                                        -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                      -->
+<!-- @version $Id: textDecoration.svg 475685 2006-11-16 11:16:05Z cam $        -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+
+  <title>Text decoration test</title>
+
+  <defs>
+    <pattern id="svgPattern" viewBox="0 0 10 10" x="0" y="0" width="5" height="5"
+      patternContentUnits="userSpaceOnUse" patternUnits="userSpaceOnUse">
+      <g fill="red" stroke="none">
+        <rect x="0" y="0" width="5" height="5" />
+        <rect x="5" y="5" width="5" height="5" />
+      </g>
+      <g fill="black" stroke="none">
+        <rect x="0" y="5" width="5" height="5" />
+        <rect x="5" y="0" width="5" height="5" />
+      </g>
+
+    </pattern>
+  </defs>
+
+
+  <g id="content">
+
+    <text class="title" x="50%" y="40">Text decoration test</text>
+
+    <g font-size="20">
+
+      <g fill="#6666FF">
+        <text x="50" y="100" text-decoration="underline">Underline</text>     
+        <text x="170" y="100" text-decoration="overline">Overline</text> 
+        <text x="270" y="100" text-decoration="line-through">Line-through</text>
+      </g>
+
+      <g fill="none" stroke="#33CC33" stroke-width="0.25">
+        <text x="50" y="140" text-decoration="underline">Underline</text>     
+        <text x="170" y="140" text-decoration="overline">Overline</text> 
+        <text x="270" y="140" text-decoration="line-through">Line-through</text>
+      </g>
+
+      <g fill="url(#svgPattern)">
+        <text x="50" y="180" text-decoration="underline">Underline</text>     
+        <text x="170" y="180" text-decoration="overline">Overline</text> 
+        <text x="270" y="180" text-decoration="line-through">Line-through</text>
+      </g>
+
+
+      <text x="50" y="220" fill="#6666FF" text-decoration="underline overline">Underline and overline</text> 
 
+      <text x="50" y="260" fill="none" stroke="#33CC33" stroke-width="0.25" text-decoration="line-through 
underline overline">Underline, overline and line-through</text>
+      <text x="50" y="300" fill="url(#svgPattern)" text-decoration="underline">Decorations <tspan 
fill="black" dy="-10">with</tspan><tspan dy="10"> tspan</tspan></text> 
+      <text x="50" y="340" fill="#6666FF" fill-opacity="0.5" text-decoration="line-through">Transparent text 
<tspan fill="#33CC33" fill-opacity="1">with</tspan> tspan</text> 
+      <text x="50" y="380" text-decoration="line-through">Tspan <tspan fill="url(#svgPattern)" 
text-decoration="line-through">with own</tspan> decoration</text>
+      <text x="50" y="420" fill="#6666FF" text-decoration="overline">Tspan <tspan fill="#33CC33" 
text-decoration="none">with no</tspan> decoration</text>
+      <text x="50" y="460" fill="#6666FF" text-decoration="line-through">Nested <tspan 
fill="url(#svgPattern)" text-decoration="underline">tspan <tspan fill="#33CC33" 
text-decoration="overline">decor</tspan>ations</tspan></text>
+
+    </g>
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/text/textDecoration2.png 
b/tests/data/svg/batik/tests/spec/text/textDecoration2.png
new file mode 100644
index 0000000..4c6ce30
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textDecoration2.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textDecoration2.svg 
b/tests/data/svg/batik/tests/spec/text/textDecoration2.svg
new file mode 100644
index 0000000..7be4d07
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textDecoration2.svg
@@ -0,0 +1,129 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Test the handling of text decoration, especially in the presence of    -->
+<!-- of dx, dy attributes.                                                  -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: textDecoration2.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg id="body" width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";>
+
+  <title>Text Decoration with dx,dy Tests</title>
+    <text class="title" x="50%" y="40"
+    >Text Decoration with dx, dy tests</text>
+
+  <!-- <rect x="0" y="0" width="100%" height="100%" fill="lightgrey"/> -->
+  <g transform="translate(0, 50)" 
+    fill="rgb(0,0,0)" font-family="Lucida Sans Typewriter" font-size="15.0">
+    <text x="31.0" y="24.0" text-decoration="underline"
+        >This is a text<tspan x="31.0" dy="1.2em"
+        >that covers multiple</tspan><tspan x="31.0" dy="1.2em"
+        >lines</tspan></text>
+    
+    <text x="231.0" y="24" text-decoration="underline"
+        >This is a text<tspan x="231.0" y="41"
+        >that covers multiple</tspan><tspan x="231" y="60"
+        >lines</tspan></text>
+
+    <text x="31.0" y="100" text-decoration="line-through"
+        >Text <tspan dy="-5">that</tspan> <tspan dy="10">shifts</tspan></text>
+    
+    <text x="31.0" y="130"
+        >Text <tspan dy="-5" text-decoration="line-through" 
+        >that</tspan> <tspan dy="10">shifts</tspan></text>
+    
+    <text x="31.0" y="160"
+        >Text <tspan dy="-5">that</tspan> <tspan 
+        dy="10" text-decoration="line-through">shifts</tspan></text>
+    
+    <text x="31.0" y="200"
+        >Text <tspan dy="-5">that</tspan> <tspan 
+        dy="-5" text-decoration="line-through">shifts</tspan></text>
+
+    <text x="231.0" y="100" text-decoration="overline"
+        >Text <tspan dy="-5">that</tspan> <tspan dy="10">shifts</tspan></text>
+    
+    <text x="231.0" y="130"
+        >Text <tspan dy="-5" text-decoration="overline" 
+        >that</tspan> <tspan dy="10">shifts</tspan></text>
+    
+    <text x="231.0" y="160"
+        >Text <tspan dy="-5">that</tspan> <tspan 
+        dy="10" text-decoration="overline">shifts</tspan></text>
+    
+    <text x="231.0" y="200"
+        >Text <tspan dy="-5">that</tspan> <tspan 
+        dy="-5" text-decoration="overline">shifts</tspan></text>
+
+    <text x="31.0" y="240" text-decoration="underline" 
+        >Text <tspan dy="-5">that</tspan> <tspan dy="10">shifts</tspan></text>
+    
+    <text x="31.0" y="270"
+        >Text <tspan dy="-5" text-decoration="underline" 
+        >that</tspan> <tspan dy="10">shifts</tspan></text>
+    
+    <text x="31.0" y="300"
+        >Text <tspan dy="-5">that</tspan> <tspan 
+        dy="10" text-decoration="underline">shifts</tspan></text>
+    
+    <text x="31.0" y="330"
+        >Text <tspan dy="-5">that</tspan> <tspan 
+        dy="-5" text-decoration="underline">shifts</tspan></text>
+
+
+    <text x="231.0" y="240" text-decoration="underline" fill="blue"
+      ><tspan fill="black" stroke="none"
+      >Text <tspan dy="-5">that</tspan> <tspan dy="10"
+      >shifts</tspan></tspan></text>
+    
+    <text x="231.0" y="270" text-decoration="underline" fill="blue"
+      ><tspan fill="black"
+      >Text <tspan dy="-5" text-decoration="line-through" fill="red"
+      ><tspan fill="black">that</tspan></tspan> <tspan dy="10"
+      >shifts</tspan></tspan></text>
+    
+    <text x="231.0" y="300" text-decoration="underline" fill="blue"
+      ><tspan fill="black"
+        >Text <tspan dy="-5">that</tspan> <tspan 
+        dy="10" text-decoration="underline" fill="red">
+          <tspan fill="black">shifts</tspan></tspan></tspan></text>
+    
+    <text x="231.0" y="330" text-decoration="underline" fill="blue"
+      ><tspan fill="black"
+      >Text <tspan dy="-5" text-decoration="line-through" fill="red"
+      ><tspan fill="black"
+      >that <tspan dy="10" text-decoration="overline" fill="green"
+      ><tspan fill="black"
+      >shifts</tspan></tspan></tspan></tspan></tspan></text>
+
+    <text x="131.0" y="370" text-decoration="underline" fill="blue"
+      ><tspan fill="black">Text <tspan y="360">that</tspan> 
+      <tspan y="375" >shifts</tspan></tspan></text>
+
+    </g>
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/text/textEffect.png 
b/tests/data/svg/batik/tests/spec/text/textEffect.png
new file mode 100644
index 0000000..a7da090
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textEffect.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textEffect.svg 
b/tests/data/svg/batik/tests/spec/text/textEffect.svg
new file mode 100644
index 0000000..6e1bfee
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textEffect.svg
@@ -0,0 +1,118 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!--  text effects                                                             -->
+<!--                                                                           -->
+<!-- @author tkormann apache org                                               -->
+<!-- @version $Id: textEffect.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+  <title>Mix text transformation</title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+    <text x="225" y="30" class="title">Gradient and filter on text</text>
+    <text x="225" y="50" class="title">(Using System font and SVG font)</text>
+
+
+    <defs>
+
+      <font id="SVGArial" horiz-adv-x="904" >
+        <font-face
+          font-family="SVGArial"
+          units-per-em="2048"
+          panose-1="2 11 6 4 2 2 2 2 2 4"
+          ascent="1854"
+          descent="-434" />
+
+        <missing-glyph horiz-adv-x="1536" d="M256 0V1280H1280V0H256ZM288 32H1248V1248H288V32Z" />
+
+        <glyph unicode="A" glyph-name="A" horiz-adv-x="1366" d="M-3 0L560 1466H769L1369 0H1148L977 
444H364L203 0H-3ZM420 602H917L764 1008Q694 1193 660 1312Q632 1171 581 1032L420 602Z" />
+        <glyph unicode="B" glyph-name="B" horiz-adv-x="1366" d="M150 0V1466H700Q868 1466 969 1422T1128 
1285T1186 1091Q1186 997 1135 914T981 780Q1114 741 1185 647T1257 425Q1257 322 1214 234T1106 97T946 25T709 
0H150ZM344 850H661Q790 850 846 867Q920 889
+          957 940T995 1068Q995 1141 960 1196T860 1272T637 1293H344V850ZM344 173H709Q803 173 841 180Q908 192 
953 220T1027 301T1056 425Q1056 507 1014 567T898 652T683 677H344V173Z" />
+        <glyph unicode="I" glyph-name="I" horiz-adv-x="569" d="M191 0V1466H385V0H191Z" />
+        <glyph unicode="K" glyph-name="K" horiz-adv-x="1366" d="M150 0V1466H344V739L1072 1466H1335L720 
872L1362 0H1106L584 742L344 508V0H150Z" />
+        <glyph unicode="T" glyph-name="T" horiz-adv-x="1251" d="M531 0V1293H48V1466H1210V1293H725V0H531Z" />
+      </font>
+
+      <linearGradient id="linearGradient">
+        <stop style="stop-color:gold" offset="0"/>
+        <stop style="stop-color:orange" offset=".5"/>
+        <stop style="stop-color:crimson" offset="1"/>
+      </linearGradient>
+
+
+      <radialGradient id="radialGradient">
+        <stop style="stop-color:gold" offset="0"/>
+        <stop style="stop-color:orange" offset=".5"/>
+        <stop style="stop-color:crimson" offset="1"/>
+      </radialGradient>
+
+
+      <filter id="dropShadow"  filterUnits="objectBoundingBox">
+        <feGaussianBlur in="SourceGraphic" stdDeviation="2 2" /> 
+      </filter>
+
+    </defs>
+
+    <text x="120" y="160" style="fill:url(#linearGradient); font-size:40pt; font-family:Arial; 
text-anchor:middle">
+      BATIK
+    </text>
+
+    <text x="330" y="160" style="fill:url(#linearGradient); font-family:SVGArial; font-size:40pt; 
text-anchor:middle">
+      BATIK
+    </text>
+
+    <text x="120" y="260" style="stroke:url(#radialGradient); stroke-width:2; fill:none; font-size:40pt; 
text-anchor:middle; font-family:Arial">
+      BATIK
+    </text>
+
+    <text x="330" y="260" style="stroke:url(#radialGradient); stroke-width:2; fill:none; 
font-family:SVGArial; font-size:40pt; text-anchor:middle">
+      BATIK
+    </text>
+
+    <text x="120" y="360" style="filter:url(#dropShadow); fill:red; font-size:40pt; font-family:Arial; 
text-anchor:middle">
+      BATIK
+    </text>
+
+    <text x="330" y="360" style="filter:url(#dropShadow); fill:red; font-family:SVGArial; font-size:40pt; 
text-anchor:middle">
+      BATIK
+    </text>
+
+    <text x="120" y="400" style="font-size:12; filter:none; fill:black; text-anchor:middle">(System 
font)</text>
+    <text x="330" y="400" style="font-size:12; filter:none; fill:black; text-anchor:middle">(SVG font)</text>
+
+  </g>
+
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textEffect2.png 
b/tests/data/svg/batik/tests/spec/text/textEffect2.png
new file mode 100644
index 0000000..d8f55fe
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textEffect2.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textEffect2.svg 
b/tests/data/svg/batik/tests/spec/text/textEffect2.svg
new file mode 100644
index 0000000..c9de6e7
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textEffect2.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!--  text effects                                                             -->
+<!--                                                                           -->
+<!-- @author tkormann apache org                                               -->
+<!-- @version $Id: textEffect2.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+
+  <title>Mix text transformation</title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+    <text x="225" y="30" class="title">clip-path using text</text>
+    <text x="225" y="50" class="title">(Using System font and SVG font)</text>
+
+
+    <defs>
+
+      <font id="SVGArial" horiz-adv-x="904" >
+        <font-face
+          font-family="SVGArial"
+          units-per-em="2048"
+          panose-1="2 11 6 4 2 2 2 2 2 4"
+          ascent="1854"
+          descent="-434" />
+
+        <missing-glyph horiz-adv-x="1536" d="M256 0V1280H1280V0H256ZM288 32H1248V1248H288V32Z" />
+
+        <glyph unicode="A" glyph-name="A" horiz-adv-x="1366" d="M-3 0L560 1466H769L1369 0H1148L977 
444H364L203 0H-3ZM420 602H917L764 1008Q694 1193 660 1312Q632 1171 581 1032L420 602Z" />
+        <glyph unicode="B" glyph-name="B" horiz-adv-x="1366" d="M150 0V1466H700Q868 1466 969 1422T1128 
1285T1186 1091Q1186 997 1135 914T981 780Q1114 741 1185 647T1257 425Q1257 322 1214 234T1106 97T946 25T709 
0H150ZM344 850H661Q790 850 846 867Q920 889
+          957 940T995 1068Q995 1141 960 1196T860 1272T637 1293H344V850ZM344 173H709Q803 173 841 180Q908 192 
953 220T1027 301T1056 425Q1056 507 1014 567T898 652T683 677H344V173Z" />
+        <glyph unicode="I" glyph-name="I" horiz-adv-x="569" d="M191 0V1466H385V0H191Z" />
+        <glyph unicode="K" glyph-name="K" horiz-adv-x="1366" d="M150 0V1466H344V739L1072 1466H1335L720 
872L1362 0H1106L584 742L344 508V0H150Z" />
+        <glyph unicode="T" glyph-name="T" horiz-adv-x="1251" d="M531 0V1293H48V1466H1210V1293H725V0H531Z" />
+      </font>
+
+      <linearGradient id="grad">
+        <stop style="stop-color:gold" offset="0"/>
+        <stop style="stop-color:orange" offset=".5"/>
+        <stop style="stop-color:crimson" offset="1"/>
+      </linearGradient>
+
+      <clipPath id="clip" clipPathUnits="userSpaceOnUse">
+        <text x="100" y="200" style="font-size:40pt; font-family:Arial">BATIK</text>
+      </clipPath>
+
+      <clipPath id="svgClip" clipPathUnits="userSpaceOnUse" >
+        <text x="100" y="300" style="font-size:40pt; font-family:Arial">BATIK</text>
+      </clipPath>
+
+    </defs>
+
+    <rect x="100" y="160" width="200" height="45" style="fill:url(#grad); clip-path:url(#clip)" />
+    <text x="300" y="200" style="font-size:12; filter:none; fill:black">(System font)</text>
+
+    <rect x="100" y="260" width="200" height="45" style="fill:url(#grad); clip-path:url(#svgClip)" />
+    <text x="300" y="300" style="font-size:12; filter:none; fill:black">(SVG font)</text>
+
+  </g>
+
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textEffect3.png 
b/tests/data/svg/batik/tests/spec/text/textEffect3.png
new file mode 100644
index 0000000..c4b0e35
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textEffect3.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textEffect3.svg 
b/tests/data/svg/batik/tests/spec/text/textEffect3.svg
new file mode 100644
index 0000000..18e721a
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textEffect3.svg
@@ -0,0 +1,118 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!--  text effects                                                             -->
+<!--                                                                           -->
+<!-- @author tkormann apache org                                               -->
+<!-- @version $Id: textEffect3.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+  <title>Mix text transformation</title>
+
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+  <g id="testContent">
+    <text x="225" y="30" class="title">Gradient and filter on text and tspan</text>
+    <text x="225" y="50" class="title">(Using System font and SVG font)</text>
+
+
+    <defs>
+
+      <font id="SVGArial" horiz-adv-x="904" >
+        <font-face
+          font-family="SVGArial"
+          units-per-em="2048"
+          panose-1="2 11 6 4 2 2 2 2 2 4"
+          ascent="1854"
+          descent="-434" />
+
+        <missing-glyph horiz-adv-x="1536" d="M256 0V1280H1280V0H256ZM288 32H1248V1248H288V32Z" />
+
+        <glyph unicode="A" glyph-name="A" horiz-adv-x="1366" d="M-3 0L560 1466H769L1369 0H1148L977 
444H364L203 0H-3ZM420 602H917L764 1008Q694 1193 660 1312Q632 1171 581 1032L420 602Z" />
+        <glyph unicode="B" glyph-name="B" horiz-adv-x="1366" d="M150 0V1466H700Q868 1466 969 1422T1128 
1285T1186 1091Q1186 997 1135 914T981 780Q1114 741 1185 647T1257 425Q1257 322 1214 234T1106 97T946 25T709 
0H150ZM344 850H661Q790 850 846 867Q920 889
+          957 940T995 1068Q995 1141 960 1196T860 1272T637 1293H344V850ZM344 173H709Q803 173 841 180Q908 192 
953 220T1027 301T1056 425Q1056 507 1014 567T898 652T683 677H344V173Z" />
+        <glyph unicode="I" glyph-name="I" horiz-adv-x="569" d="M191 0V1466H385V0H191Z" />
+        <glyph unicode="K" glyph-name="K" horiz-adv-x="1366" d="M150 0V1466H344V739L1072 1466H1335L720 
872L1362 0H1106L584 742L344 508V0H150Z" />
+        <glyph unicode="T" glyph-name="T" horiz-adv-x="1251" d="M531 0V1293H48V1466H1210V1293H725V0H531Z" />
+      </font>
+
+      <linearGradient id="linearGradient">
+        <stop style="stop-color:gold" offset="0"/>
+        <stop style="stop-color:orange" offset=".5"/>
+        <stop style="stop-color:crimson" offset="1"/>
+      </linearGradient>
+
+
+      <radialGradient id="radialGradient">
+        <stop style="stop-color:gold" offset="0"/>
+        <stop style="stop-color:orange" offset=".5"/>
+        <stop style="stop-color:crimson" offset="1"/>
+      </radialGradient>
+
+
+      <filter id="dropShadow"  filterUnits="objectBoundingBox">
+        <feGaussianBlur in="SourceGraphic" stdDeviation="2 2" /> 
+      </filter>
+
+    </defs>
+
+    <text x="120" y="160" style="fill:url(#linearGradient); font-size:40pt; font-family:Arial; 
text-anchor:middle">
+      B<tspan dy="-20" style="font-size:20pt">A</tspan>T<tspan style="font-size:30pt">I</tspan><tspan 
rotate="20">K</tspan>
+    </text>
+
+    <text x="330" y="160" style="fill:url(#linearGradient); font-family:SVGArial; font-size:40pt; 
text-anchor:middle">
+      B<tspan dy="-20" style="font-size:20pt">A</tspan>T<tspan style="font-size:30pt">I</tspan><tspan 
rotate="20">K</tspan>
+    </text>
+
+    <text x="120" y="260" style="stroke:url(#radialGradient); stroke-width:2; fill:none; font-size:40pt; 
text-anchor:middle; font-family:Arial">
+      B<tspan dy="-20" style="font-size:20pt">A</tspan>T<tspan style="font-size:30pt">I</tspan><tspan 
rotate="20">K</tspan>
+    </text>
+
+    <text x="330" y="260" style="stroke:url(#radialGradient); stroke-width:2; fill:none; 
font-family:SVGArial; font-size:40pt; text-anchor:middle">
+      B<tspan dy="-20" style="font-size:20pt">A</tspan>T<tspan style="font-size:30pt">I</tspan><tspan 
rotate="20">K</tspan>
+    </text>
+
+    <text x="120" y="360" style="filter:url(#dropShadow); fill:red; font-size:40pt; font-family:Arial; 
text-anchor:middle">
+      B<tspan dy="-20" style="font-size:20pt">A</tspan>T<tspan style="font-size:30pt">I</tspan><tspan 
rotate="20">K</tspan>
+    </text>
+
+    <text x="330" y="360" style="filter:url(#dropShadow); fill:red; font-family:SVGArial; font-size:40pt; 
text-anchor:middle">
+      B<tspan dy="-20" style="font-size:20pt">A</tspan>T<tspan style="font-size:30pt">I</tspan><tspan 
rotate="20">K</tspan>
+    </text>
+
+    <text x="120" y="400" style="font-size:12; filter:none; fill:black; text-anchor:middle">(System 
font)</text>
+    <text x="330" y="400" style="font-size:12; filter:none; fill:black; text-anchor:middle">(SVG font)</text>
+
+  </g>
+
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textFeatures.png 
b/tests/data/svg/batik/tests/spec/text/textFeatures.png
new file mode 100644
index 0000000..968ee81
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textFeatures.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textFeatures.svg 
b/tests/data/svg/batik/tests/spec/text/textFeatures.svg
new file mode 100644
index 0000000..6ecf0bb
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textFeatures.svg
@@ -0,0 +1,115 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author bill haneman ireland sun com                                      -->
+<!-- @version $Id: textFeatures.svg 475685 2006-11-16 11:16:05Z cam $                                        
                     -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+  <!-- ============================================================= -->
+  <!-- Test content                                                  -->
+  <!-- ============================================================= -->
+
+  <defs>
+    <filter id="blur"  filterUnits="userSpaceOnUse" x="0" y="-80" width="200" height="100" filterRes="200">
+      <feGaussianBlur stdDeviation="2 2" x="0" y="-80" width="200" height="100"/> 
+    </filter>
+  </defs>
+
+  <g id="testContent">
+    <text class="title" x="50%" y="10%" font-size="15" text-anchor="middle" >
+      Text Element Features</text>
+    <g font-family="dialog" font-size="15" 
+      text-anchor="start" fill="MidnightBlue">
+      <text x="10%" y="20%">
+        Text can change 
+        <tspan font-size="30">size,</tspan>
+        <tspan font-size="20" font-family="Serif">typeface,</tspan> 
+        <tspan fill="green">color,</tspan>
+        or 
+        <tspan fill="none" font-style="oblique" stroke="red" stroke-width="1">style</tspan>
+      </text>
+      <text fill="MidnightBlue" x="10%" y="25%"> 
+        within a single text element.
+      </text> 
+      <text x="10%" y="35%">Styling features include 
+        <tspan font-weight="bold">weight,</tspan> 
+        <tspan font-style="oblique">posture,</tspan> and 
+        <tspan font-family="serif">typeface.</tspan>
+      </text>
+      <rect x="10%" y="40%" width="45%" height="10%" fill="DodgerBlue"/>
+      <text x="10%" y="45%">
+        Graphics attributes such as 
+        <tspan fill="red" opacity="0.3">opacity</tspan> can be applied.
+      </text>
+      <text x="10%" y="55%">"text decoration" can include 
+        <tspan text-decoration="underline">underline,</tspan>
+        <tspan text-decoration="overline">overline,</tspan> and
+      </text> 
+      <text x="10%" y="60%">
+        <tspan text-decoration="line-through">strikethrough.</tspan>
+        <tspan baseline-shift="super" font-size="75%">super</tspan>-and-
+        <tspan baseline-shift="sub" font-size="75%">sub</tspan>-scripts 
+        are available.</text>
+      <text x="10%" y="65%">Baseline can also be shifted
+        <tspan baseline-shift="50%" font-size="75%">up</tspan> and
+        <tspan baseline-shift="-50%" font-size="75%">down</tspan> 
+        by percentage.</text>
+      <text x="10%" y="75%" stroke-linecap="round" stroke-linejoin="round">
+        Various 
+        <tspan stroke="red" fill="none" stroke-width="0.5">outline
+        </tspan>styles, 
+        <tspan stroke="red" stroke-width="0.5" fill="blue" >fill colors
+        </tspan>and
+        <tspan stroke="red" stroke-width="1" fill="blue" >thicknesses
+        </tspan>can be
+      </text>
+      <text x="10%" y="80%">used, and the outline stroke can be 
+        <tspan stroke="black" fill="none" stroke-width="0.5" 
+          stroke-linecap="round" stroke-linejoin="round">rounded</tspan>
+        or 
+        <tspan stroke="black" fill="none" stroke-width="0.5" 
+          stroke-linecap="square" stroke-linejoin="miter">mitered.</tspan>
+      </text>
+      <text x="10%" y="90%">Text elements also can be</text>
+      <text x="10%" y="95%">filtered and transformed.</text>
+      <g font-size="40" transform="translate(250, 475)">  
+        <text x="0" y="0" filter="url(#blur)" fill="black" opacity="0.7"
+          transform="skewX(40) translate(-6,-6)">
+          Shadow
+        </text>
+        <text x="0" y="0" stroke="black" stroke-width="0.2" fill="white">
+          Shadow
+        </text>
+      </g>
+    </g>
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textGlyphOrientationHorizontal.png 
b/tests/data/svg/batik/tests/spec/text/textGlyphOrientationHorizontal.png
new file mode 100644
index 0000000..44587c8
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textGlyphOrientationHorizontal.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textGlyphOrientationHorizontal.svg 
b/tests/data/svg/batik/tests/spec/text/textGlyphOrientationHorizontal.svg
new file mode 100644
index 0000000..1628a91
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textGlyphOrientationHorizontal.svg
@@ -0,0 +1,104 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Test the x,dx and y,dy attributes                                      -->
+<!--                                                                        -->
+<!-- @author tkormann ilog fr                                               -->
+<!-- @version $Id: textGlyphOrientationHorizontal.svg 475685 2006-11-16 11:16:05Z cam $ -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; >
+   <title>Text Orientation Horizontal</title>
+
+   <!-- ============================================================= -->
+   <!-- Test content                                                  -->
+   <!-- ============================================================= -->
+
+   <defs> 
+     <path id="path" style="fill:none; stroke:blue;" 
+           d="M 20 40 C 40 20 60 0 80 20 C 100 40 120 60 140 40 
+              C 160 20 180 20 180 20"/>
+     <path id="lpath" style="fill:none; stroke:blue;" 
+           d="M 20 40 c 40 -20 80 -40 120 -20 c 40 20 80 40 120 20
+              c 40 -20 80 -20 80 -20"/>
+   </defs>
+
+
+   <text class="title" x="50%" y="30">Text Orientation Horizontal</text>
+
+   <g id="testContent" style="font-family:Arial; font-size:24">
+
+     <line x1="50" x2="200" y1="80" y2="80" stroke="blue" stroke-width="2"/>
+     <text x="50" y="80" glyph-orientation-horizontal="0">Batik is Good</text>
+
+     <g transform="translate(220, 60)">
+       <use xlink:href="#path" fill="none" stroke="blue" stroke-width="2"/>
+       <text glyph-orientation-horizontal="0">
+         <textPath xlink:href="#path">Batik <tspan fill="red" dy="-10">is</tspan><tspan dy="10"> 
Good</tspan></textPath>
+       </text>
+     </g>
+
+     <line x1="50" x2="400" y1="130" y2="130" stroke="blue" stroke-width="2"/>
+     <text x="50" y="130" glyph-orientation-horizontal="90"
+       >Batik is Good</text>
+
+     <g transform="translate(30, 150)">
+       <use xlink:href="#lpath" fill="none" stroke="blue" stroke-width="2"/>
+       <text glyph-orientation-horizontal="90">
+         <textPath xlink:href="#lpath">Batik <tspan fill="red" dy="-10">is</tspan><tspan dy="10"> 
Good</tspan></textPath>
+       </text>
+
+     </g>
+
+     <line x1="50" x2="200" y1="240" y2="240" stroke="blue" stroke-width="2"/>
+     <text x="50" y="240" glyph-orientation-horizontal="180"
+       >Batik is Good</text>
+
+     <g transform="translate(220, 220)">
+       <use xlink:href="#path" fill="none" stroke="blue" stroke-width="2"/>
+       <text glyph-orientation-horizontal="180">
+         <textPath xlink:href="#path">Batik <tspan fill="red" dy="-10">is</tspan><tspan dy="10"> 
Good</tspan></textPath>
+       </text>
+
+     </g>
+
+     <line x1="50" x2="400" y1="320" y2="320" stroke="blue" stroke-width="2"/>
+     <text x="50" y="320" glyph-orientation-horizontal="270"
+       >Batik is Good</text>
+
+     <g transform="translate(30, 340)">
+       <use xlink:href="#lpath" fill="none" stroke="blue" stroke-width="2"/>
+       <text glyph-orientation-horizontal="270">
+         <textPath xlink:href="#lpath">Batik <tspan fill="red" dy="-10">is</tspan><tspan dy="10"> 
Good</tspan></textPath>
+       </text>
+
+     </g>
+   </g>
+
+
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textLayout.png 
b/tests/data/svg/batik/tests/spec/text/textLayout.png
new file mode 100644
index 0000000..a32dce3
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textLayout.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textLayout.svg 
b/tests/data/svg/batik/tests/spec/text/textLayout.svg
new file mode 100644
index 0000000..2dbe23b
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textLayout.svg
@@ -0,0 +1,147 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author bill haneman ireland sun com                                      -->
+<!-- @version $Id: textLayout.svg 475477 2006-11-15 22:44:28Z cam $                                          
                   -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+<title>Text Layout Properties</title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+
+    <defs>
+     <style type="text/css"><![CDATA[
+       .Caption { font-size: 8; font-family: dialog; font-weight: normal;
+                  font-style: normal; stroke: none; stroke-width: 0; 
+                  fill: black } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .SerifPlain { font-size: 24; font-family: Serif; font-weight: normal;
+                  font-style: normal; stroke: none; stroke-width: 0; 
+                  fill: black } ]]>
+     </style>
+
+     <text x="0" y="0" text-anchor="start" id="sample">sample</text>
+
+    </defs>
+
+    <g id="testContent" text-anchor="start" font-size="30" class="SerifPlain">
+        <text text-anchor="middle" class="title" x="50%" y="10%" font-size="15" >
+            Text Layout Properties</text>
+       
+       <text x="50%" y="15%" text-anchor="middle" font-size="10">Explicit Glyph Positioning</text>
+
+        <g>
+            <text><tspan x="40,60,80,105,125,140" y="110">sample</tspan></text>
+            <text x="40" y="125" class="Caption">tspan x="40,60,80,105,125,140"</text>
+        </g>
+
+        <g>
+            <text x="185" y="110">sample</text>
+            <text x="185" y="125" class="Caption">Serif, default spacing</text>
+        </g>
+
+        <g>
+            <text x="290" y="110"><tspan dx="0,10,10,10,10,10">sample</tspan></text>
+            <text x="290" y="125" class="Caption">x="175" dx="0,10,10,10,10,10"
+</text>
+        </g>
+
+       <text x="50%" y="30%" text-anchor="middle" font-size="10">Letter Spacing Adjustment and Explicit 
Length Specification</text>
+
+        <g>
+            <text x="40" y="180" textLength="120">sample</text>
+            <text x="40" y="195" class="Caption">textLength="120"</text>
+        </g>
+
+        <g>
+            <text x="185" y="180" textLength="70">sample</text>
+            <text x="185" y="195" class="Caption">textLength="70"</text>
+        </g>
+
+        <g>
+            <text x="290" y="180" kerning="10">sample</text>
+            <text x="290" y="195" class="Caption">kerning="10"</text>
+        </g>
+
+        <g>
+            <text x="40" y="225" textLength="120" lengthAdjust="spacingAndGlyphs">sample</text>
+            <text x="40" y="240" class="Caption">textLength="120",
+            <tspan x="40" dy="10">lengthAdjust="spacingAndGlyphs"</tspan></text>
+        </g>
+
+        <g>
+            <text x="185" y="225" textLength="70" lengthAdjust="spacingAndGlyphs">sample</text>
+            <text x="185" y="240" class="Caption">textLength="70"                          <tspan x="185" 
dy="10">lengthAdjust="spacingAndGlyphs"</tspan></text>
+        </g>
+
+        <g>
+            <text x="290" y="225"  textLength="120" lengthAdjust="spacingAndGlyphs" 
kerning="10">sample</text>
+            <text x="290" y="240" class="Caption">textLength="120",kerning="10"</text>
+        </g>
+
+        <g>
+            <text x="40" y="275" letter-spacing="0.3em">sample</text>
+            <text x="40" y="290" class="Caption">letter-spacing="0.3em"</text>        
+        </g>
+
+        <g>
+            <text x="185" y="275" letter-spacing="-3">sample</text>
+            <text x="185" y="290" class="Caption">letter-spacing="-3"</text>
+       </g>
+
+        <g>
+            <text x="290" y="275" letter-spacing="10">sample</text>
+            <text x="290" y="290" class="Caption">letter-spacing="10"</text>
+        </g>
+
+       <text x="50%" y="64%" text-anchor="middle" font-size="10">Word Spacing Adjustment</text>
+
+        <g font-size="15">
+            <text x="40" y="350" textLength="350" word-spacing="3em">Wide separation between words</text>
+            <text x="40" y="365" class="Caption">textLength="350" word-spacing="3em"</text>
+        </g>
+
+        <g font-size="15">
+            <text x="40" y="395" textLength="350" word-spacing="-5">Narrow separation between words</text>
+            <text x="40" y="410" class="Caption">textLength="350" word-spacing="-5"</text>
+        </g>
+
+        <g font-size="15">
+            <text x="40" y="440" textLength="350" lengthAdjust="spacingAndGlyphs" word-spacing="-5">Narrow 
separation between words</text>
+            <text x="40" y="455" class="Caption">textLength="350" lengthAdjust="spacingAndGlyphs" 
word-spacing="-5"</text>
+        </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textLayout2.png 
b/tests/data/svg/batik/tests/spec/text/textLayout2.png
new file mode 100644
index 0000000..faaf276
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textLayout2.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textLayout2.svg 
b/tests/data/svg/batik/tests/spec/text/textLayout2.svg
new file mode 100644
index 0000000..aeeb096
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textLayout2.svg
@@ -0,0 +1,99 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author bill haneman ireland sun com                                      -->
+<!-- @version $Id: textLayout2.svg 475685 2006-11-16 11:16:05Z cam $                                         
                    -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+    <title>Text Layout Properties</title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+
+    <defs>
+     <style type="text/css"><![CDATA[
+       .Caption { font-size: 8; font-family: dialog; font-weight: normal;
+                  font-style: normal; stroke: none; stroke-width: 0; 
+                  fill: black } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .SerifPlain { font-size: 24; font-family: Serif; font-weight: normal;
+                  font-style: normal; stroke: none; stroke-width: 0; 
+                  fill: black } ]]>
+     </style>
+
+     <text x="0" y="0" text-anchor="start" id="sample">sample</text>
+
+    </defs>
+
+    <g id="testContent" text-anchor="start" font-size="30" class="SerifPlain">
+        <text text-anchor="middle" class="title" x="50%" y="10%" font-size="15" >
+            Text Layout Properties (2)</text>
+
+        <text x="50%" y="15%" text-anchor="middle" font-size="10">Baseline Properties</text>
+
+        <g text-anchor="middle">
+            <text x="225" y="110" font-size="15"><tspan baseline-shift="super" fill="blue">super</tspan> and 
<tspan baseline-shift="sub" fill="green">sub</tspan>scripts</text>
+            <text x="225" y="135" class="Caption">baseline-shift="super"/baseline-shift="sub"</text>
+        </g>
+
+        <g text-anchor="middle">
+            <text x="225" y="165" font-size="15"><tspan baseline-shift="+20%" fill="blue">positive</tspan> 
and <tspan baseline-shift="-20%" fill="green">negative </tspan>baseline-shift</text>
+            <text x="225" y="180" class="Caption">baseline-shift="+/-20%"</text>
+        </g>
+        <text x="50%" y="42%" text-anchor="middle" font-size="10">Multi-line Text Selection</text>
+
+        <text x="50%" y="45%" text-anchor="middle" font-size="7.5" font-style="italic">(Try selecting the 
following text regions)</text>
+
+        <text text-anchor="start" font-size="15">
+            <tspan x="120" y="50%">Text selections can span multiple</tspan>
+            <tspan x="120" y="53%">lines via &lt;tspan&gt; elements.</tspan>
+        </text>
+
+        <text text-anchor="start" fill="blue" font-size="20" transform="translate(90, 360)">
+            <tspan x="0 10 25 50 75 90 100 90 75 50 25 10 0" 
+                   y="0 -25 -40 -50 -40 -25 0 25 40 50 40 25 10 0">Text-circle.</tspan>
+        </text>
+
+        <text fill="green" font-size="20" transform="translate(250, 320)"
+              x="0 20 40 60 80 80 80 80 80 60 40 20 0 0 0 0" 
+              y="0 0 0 0 0 20 40 60 80 80 80 80 80 60 40 20">
+            Text-in-a-square
+        </text>
+
+        <text font-size="15" x="225" y="450" text-anchor="middle">Text with <tspan rotate="10 -10 10 -10 10 
-10 10" fill="red">rotated</tspan> glyphs</text>
+        <text font-size="15" x="225" y="465" text-anchor="middle" rotate="15">More rotated glyphs</text>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textLength.png 
b/tests/data/svg/batik/tests/spec/text/textLength.png
new file mode 100644
index 0000000..e0fe9dd
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textLength.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textLength.svg 
b/tests/data/svg/batik/tests/spec/text/textLength.svg
new file mode 100644
index 0000000..ab09951
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textLength.svg
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" 
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Tests text-anchor on tspan elements                                    -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: textLength.svg 475477 2006-11-15 22:44:28Z cam $    -->
+<!-- ====================================================================== -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg width="450" height="500" viewBox="0 0 450 500">
+
+    <text class="title" x="50%" y="20">textLength with Anchor</text>
+
+
+   <defs>
+      <g id="fill-rgn">
+         <rect x="200" y="5" width="50" height="20"
+                 fill="#DDE8FF" stroke="none"/>
+         <line x1="225" y1="3" x2="225" y2="27" stroke="red"/>
+      </g>
+
+      <g id="bg1">
+         <rect x="50"  y="0" width ="350" height="45"
+               fill="lightGrey" stroke="black"/>
+         <use xlink:href="#fill-rgn"/>
+      </g>
+
+      <g id="bg2">
+         <rect x="50"  y="0" width ="350" height="45"
+               fill="white" stroke="black"/>
+         <use xlink:href="#fill-rgn"/>
+      </g>
+   </defs>
+   
+   <g font-size="12" >
+      <!-- no lengthadjust -->
+      <g transform="translate(0,  30)">
+              <use xlink:href="#bg1"/>
+              <text x="225" y="19" text-anchor="middle">xml-batik</text>
+              <text x="225" y="40" text-anchor="middle">No textLength</text>
+      </g>
+      
+      <!-- With lengthAdjust spacingAndGlyphs -->
+      <g transform="translate(0, 75)">
+              <use xlink:href="#bg2"/>
+              <text x="225" y="19" text-anchor="middle" textLength="50"
+                      lengthAdjust="spacingAndGlyphs">B</text>
+              <text x="225" y="40" text-anchor="middle">textLength="50" 
lengthAdjust="spacingAndGlyphs"</text>
+      </g>
+      
+      <!-- with lengthAdjust spacing -->
+      <g transform="translate(0, 120)">
+              <use xlink:href="#bg1"/>
+              <text x="225" y="19" text-anchor="middle" textLength="50"
+                      lengthAdjust="spacing">B</text>
+              <text x="225" y="40" text-anchor="middle">textLength="50" lengthAdjust="spacing"</text>
+      </g>
+      
+      <!-- with lengthAdjust spacing -->
+      <g transform="translate(0, 165)">
+              <use xlink:href="#bg2"/>
+              <text x="225" y="19" text-anchor="middle" textLength="50"
+                      lengthAdjust="spacingAndGlyphs">Batik</text>
+              <text x="225" y="40" text-anchor="middle">textLength="50" 
lengthAdjust="spacingAndGlyphs"</text>
+      </g>
+      
+      <!-- with lengthAdjust spacing -->
+      <g transform="translate(0, 210)">
+              <use xlink:href="#bg1"/>
+              <text x="225" y="19" text-anchor="middle" textLength="50"
+                      lengthAdjust="spacing">Batik</text>
+              <text x="225" y="40" text-anchor="middle">textLength="50" lengthAdjust="spacing"</text>
+      </g>
+      
+      <!-- large number -->
+      <g transform="translate(0, 255)">
+              <use xlink:href="#bg2"/>
+              <text x="225" y="19" text-anchor="middle" textLength="50"
+                      lengthAdjust="spacingAndGlyphs">Apache Batik</text>
+              <text x="225" y="40" text-anchor="middle">textLength="50" lengthAdjust="spacingAndGlyphs" 
(shrinking)</text>
+      </g>
+      
+      <!-- large number, no anchor -->
+      <g transform="translate(0, 300)">
+              <use xlink:href="#bg1"/>
+              <text x="200" y="19" textLength="50"
+                      lengthAdjust="spacingAndGlyphs">Apache Batik</text>
+              <text x="225" y="40" text-anchor="middle">textLength="50" lengthAdjust="spacingAndGlyphs" (no 
anchor)</text>
+      </g>
+      
+      <!-- large number, tspan -->
+      <g transform="translate(0, 345)">
+              <use xlink:href="#bg2"/>
+              <text x="225" y="19" text-anchor="middle" textLength="50" 
+                    lengthAdjust="spacingAndGlyphs">Apache <tspan fill="red">Batik</tspan>!!</text>
+              <text x="225" y="40" text-anchor="middle">textLength="50" lengthAdjust="spacingAndGlyphs" 
(tspan)</text>
+      </g>
+
+      <!-- Big Font Squeezed alot -->
+      <g transform="translate(0, 390)">
+         <rect x="50"  y="0" width ="350" height="95"
+               fill="lightGrey" stroke="black"/>
+         <rect x="112.5" y="5" width="25" height="80"
+                 fill="#DDE8FF" stroke="none"/>
+         <line x1="125" y1="3" x2="125" y2="87" stroke="red"/>
+         <text x="125" y="79" text-anchor="middle" textLength="25" 
+               lengthAdjust="spacingAndGlyphs"
+               font-size="100">B a t i k</text>
+         <text x="160" y="40">lengthAdjust="spacingAndGlyphs"
+          <tspan x="160" dy="1.2em">textLength="25"</tspan>
+          <tspan x="160" dy="1.2em">font-size="100"</tspan></text>
+      </g>
+   </g>
+
+   <!-- ============================================================= -->
+   <!-- Batik sample mark                                             -->
+   <!-- ============================================================= -->
+   <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textOnPath.png 
b/tests/data/svg/batik/tests/spec/text/textOnPath.png
new file mode 100644
index 0000000..3c77d52
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textOnPath.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textOnPath.svg 
b/tests/data/svg/batik/tests/spec/text/textOnPath.svg
new file mode 100644
index 0000000..ac3818e
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textOnPath.svg
@@ -0,0 +1,170 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests various text on a path                                              -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                      -->
+<!-- @version $Id: textOnPath.svg 475685 2006-11-16 11:16:05Z cam $        -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+  <title>Text on a path test</title>
+
+  <g id="content">
+
+    <text class="title" x="50%" y="40">Text on a path test</text>
+
+    <defs>
+      <path id="Path2" style="fill:none; stroke:blue;" transform="scale(0.15,0.15)"
+        d="M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100"/>
+      <path id="Path1" style="fill:none; stroke:blue;" transform="scale(0.30,0.50)"
+        d="M 100 100 C100 0 400 00 400 100"/>
+
+    </defs>
+
+    <g transform="translate(0,70)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20" style="text-anchor:start">
+        <textPath xlink:href="#Path1" startOffset="0%">Text <tspan fill="red" dy="-10">on</tspan><tspan 
dy="10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="0%"</text>
+      <text font-size="10" x="35" y="70">text-anchor="start"</text>
+    </g>
+
+
+    <g transform="translate(150,70)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20" style="text-anchor:middle">
+        <textPath xlink:href="#Path1" startOffset="0%">Text <tspan fill="red" dy="-10">on</tspan><tspan 
dy="10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="0%"</text>
+      <text font-size="10" x="35" y="70">text-anchor="middle"</text>
+    </g>
+
+    <g transform="translate(300,70)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20" style="text-anchor:end">
+        <textPath xlink:href="#Path1" startOffset="50%">Text <tspan fill="red" dy="-10">on</tspan><tspan 
dy="10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="50%"</text>
+      <text font-size="10" x="35" y="70">text-anchor="end"</text>
+    </g>
+
+
+    <g transform="translate(0,170)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20" style="text-anchor:start">
+        <textPath xlink:href="#Path1" startOffset="50%">Text <tspan fill="red" dy="-10">on</tspan><tspan 
dy="10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="50%"</text>
+      <text font-size="10" x="35" y="70">text-anchor="start"</text>
+    </g>
+
+
+    <g transform="translate(150,170)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20" style="text-anchor:middle">
+        <textPath xlink:href="#Path1" startOffset="50%">Text <tspan fill="red" dy="-10">on</tspan><tspan 
dy="10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="50%"</text>
+      <text font-size="10" x="35" y="70">text-anchor="middle"</text>
+    </g>
+
+    <g transform="translate(300,170)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20" style="text-anchor:end">
+        <textPath xlink:href="#Path1" startOffset="100%">Text <tspan fill="red" dy="-10">on</tspan><tspan 
dy="10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="100%"</text>
+      <text font-size="10" x="35" y="70">text-anchor="end"</text>
+    </g>
+
+
+    <g transform="translate(0,270)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20" style="text-anchor:start">
+        <textPath xlink:href="#Path1" startOffset="35">Text <tspan fill="red" dy="-10">on</tspan><tspan 
dy="10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="35"</text>
+      <text font-size="10" x="35" y="70">text-anchor="start"</text>
+    </g>
+
+
+    <g transform="translate(150,270)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20" style="text-anchor:middle">
+        <textPath xlink:href="#Path1" startOffset="35">Text <tspan fill="red" dy="-10">on</tspan><tspan 
dy="10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="35"</text>
+      <text font-size="10" x="35" y="70">text-anchor="middle"</text>
+    </g>
+
+    <g transform="translate(300,270)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20" style="text-anchor:end">
+        <textPath xlink:href="#Path1" startOffset="35">Text <tspan fill="red" dy="-10">on</tspan><tspan 
dy="10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="35"</text>
+      <text font-size="10" x="35" y="70">text-anchor="end"</text>
+    </g>
+
+
+
+    <g transform="translate(10,370)">
+      <use xlink:href="#Path2" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="15">
+        <textPath xlink:href="#Path2"><tspan baseline-shift="super" fill="green">super</tspan> and <tspan 
baseline-shift="sub" fill="red">sub</tspan>scripts</textPath>
+      </text>
+      <text font-size="10" x="20" y="60">baseline-shift="super"</text>
+      <text font-size="10" x="20" y="70">and baseline-shift="sub"</text>
+    </g>
+
+
+    <g transform="translate(155,370)">
+      <use xlink:href="#Path2" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="15">
+        <textPath xlink:href="#Path2"><tspan baseline-shift="+20%" fill="green">positive</tspan> and <tspan 
baseline-shift="-20%" fill="red">negative </tspan></textPath>
+      </text>
+      <text font-size="10" x="20" y="60">baseline-shift="+/-20%"</text>
+    </g>
+
+    <g transform="translate(300,390)">
+      <g transform="scale(0.5)">
+        <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+        <text font-size="30" x="30" y="-20">before path
+          <textPath xlink:href="#Path1" fill="red" startOffset="10%">on path</textPath> after path
+        </text>
+      </g>
+      <text font-size="10" x="15" y="40">text before/after textPath</text>
+    </g>
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/text/textOnPath2.png 
b/tests/data/svg/batik/tests/spec/text/textOnPath2.png
new file mode 100644
index 0000000..08b025b
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textOnPath2.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textOnPath2.svg 
b/tests/data/svg/batik/tests/spec/text/textOnPath2.svg
new file mode 100644
index 0000000..c613531
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textOnPath2.svg
@@ -0,0 +1,87 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+   <title>Text on Path with trailing &lt;tspan></title>
+
+   <text class="title" x="50%" y="40"
+    >Text on Path with trailing &lt;tspan></text>
+
+   <rect fill="black" stroke="black" x="30" y="50" width="390" height="20"/>
+   <rect fill="white" stroke="black" x="30" y="70" width="390" height="120"/>
+   <text x="40" y="64" fill="white" font-size="14"
+    >Text with embedded textPath and multiple trailing tspan</text>
+
+   <rect fill="black" stroke="black" x="30" y="195" width="390" height="20"/>
+   <rect fill="white" stroke="black" x="30" y="215" width="390" height="120"/>
+   <text x="40" y="209" fill="white" font-size="14"
+    >textPath has startOffset="10%"</text>
+
+   <rect fill="black" stroke="black" x="30" y="340" width="390" height="20"/>
+   <rect fill="white" stroke="black" x="30" y="360" width="390" height="120"/>
+   <text x="40" y="354" fill="white" font-size="14"
+    >textPath with startOffset and text-anchor</text>
+   <defs>
+      <path id="path" style="fill:none; stroke:blue;" 
+            d="M100 0 c0 -125 140 -125 140 0"/>
+   </defs>
+
+   <g transform="translate(40, 185)" >
+      <use xlink:href="#path"/>      
+      <text x="10" y="0" fill="black">This is simple<textPath 
+          fill="crimson" xlink:href="#path" startOffset="0%"
+          >text on a path<tspan fill="orange" dy="-10"
+          >with nested</tspan><tspan fill="green" dy="10"
+          > tspan</tspan></textPath
+          > xxx <tspan fill="blue" dx="10"
+          >all with </tspan> different links.</text>
+  </g>
+
+
+   <g transform="translate(40, 330)" >
+      <use xlink:href="#path"/>      
+      <text x="10" y="0" fill="black">This is simple<textPath 
+          fill="crimson" xlink:href="#path" startOffset="10%"
+          >text on a path<tspan fill="orange" dy="-10"
+          >with nested</tspan><tspan fill="green" dy="10"
+          > tspan</tspan></textPath
+          > xxx <tspan fill="blue" dx="10"
+          >all with </tspan> different links.</text>
+  </g>
+
+   <g transform="translate(40, 475)" >
+      <use xlink:href="#path"/>      
+      <text x="10" y="0" fill="black">This is simple<textPath 
+          fill="crimson" xlink:href="#path" 
+          startOffset="50%" text-anchor="middle"
+          >text on a path<tspan fill="orange" dy="-10"
+          >with nested</tspan><tspan fill="green" dy="10"
+          > tspan</tspan></textPath
+          > xxx <tspan fill="blue" dx="10"
+          >all with </tspan> different links.</text>
+  </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textOnPath3.png 
b/tests/data/svg/batik/tests/spec/text/textOnPath3.png
new file mode 100644
index 0000000..ee9683e
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textOnPath3.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textOnPath3.svg 
b/tests/data/svg/batik/tests/spec/text/textOnPath3.svg
new file mode 100644
index 0000000..643b61f
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textOnPath3.svg
@@ -0,0 +1,83 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink";
+     id="body" width="450" height="500" viewBox="0 0 450 500">
+
+   <title>Text on Path with for text with an 'x'</title>
+   <text class="title" x="50%" y="40"
+    >Text on Path with for text with an 'x'</text>
+
+   <defs>
+      <path id="path" style="fill:none; stroke:blue;" 
+            d="M100 0 c0 -125 140 -125 140 0"/>
+   </defs>
+
+   <g transform="translate(40, 185)" >
+      <rect fill="black" stroke="black" x="-10" y="-135" 
+            width="390" height="20"/>
+      <rect fill="white" stroke="black" x="-10" y="-115" 
+            width="390" height="120"/>
+      <text x="-10" y="-120" fill="white" font-size="14"
+       >Text with one textPath child and x="10"</text>
+
+      <use xlink:href="#path" />
+      <text x="10" y="0" fill="black"><textPath 
+          fill="crimson" xlink:href="#path" startOffset="50%"
+          text-anchor="middle">Text on a path for text w/ 'x'.</textPath
+      ></text>
+  </g>
+
+   <g transform="translate(40, 330)" >
+      <rect fill="black" stroke="black" x="-10" y="-135" 
+            width="390" height="20"/>
+      <rect fill="white" stroke="black" x="-10" y="-115" 
+            width="390" height="120"/>
+      <text x="-10" y="-120" fill="white" font-size="14"
+       >Text with one textPath child and x="100"</text>
+
+      <use xlink:href="#path" />
+      <text x="100" y="0" fill="black"><textPath 
+          fill="crimson" xlink:href="#path" startOffset="50%"
+          text-anchor="middle">Text on a path for text w/ 'x'.</textPath
+      ></text>
+  </g>
+
+   <g transform="translate(40, 475)" >
+      <rect fill="black" stroke="black" x="-10" y="-135" 
+            width="390" height="20"/>
+      <rect fill="white" stroke="black" x="-10" y="-115" 
+            width="390" height="120"/>
+      <text x="-10" y="-120" fill="white" font-size="14"
+       >Text with one textPath child and x="-100" y="10"</text>
+
+      <use xlink:href="#path" />
+      <text x="-100" y="10" fill="black"><textPath 
+          fill="crimson" xlink:href="#path" startOffset="50%"
+          text-anchor="middle">Text on a <tspan x="50"
+          >path for text w/ 'x'.</tspan></textPath
+      ></text>
+  </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textOnPathSpaces.png 
b/tests/data/svg/batik/tests/spec/text/textOnPathSpaces.png
new file mode 100644
index 0000000..10095a7
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textOnPathSpaces.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textOnPathSpaces.svg 
b/tests/data/svg/batik/tests/spec/text/textOnPathSpaces.svg
new file mode 100644
index 0000000..0d055a7
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textOnPathSpaces.svg
@@ -0,0 +1,169 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Tests various text on a path                                              -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                      -->
+<!-- @version $Id: textOnPathSpaces.svg 475685 2006-11-16 11:16:05Z cam $        -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+  <title>Text on a path with spaces test</title>
+
+  <g id="content">
+
+    <text class="title" x="50%" y="40">Text on a path with adjusted spacing</text>
+
+    <defs>
+      <path id="Path1" style="fill:none; stroke:blue;" transform="scale(0.15,0.15)"
+        d="M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100"/>
+      <path id="Path2" style="fill:none; stroke:blue;" transform="scale(0.30,0.50)"
+        d="M 100 100 C100 0 400 00 400 100"/>
+
+    </defs>
+
+
+    <g transform="translate(0,70)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20">
+        <textPath xlink:href="#Path1"><tspan>sample</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">default spacing</text>
+    </g>
+
+    <g transform="translate(150,70)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20">
+        <textPath xlink:href="#Path1"><tspan x="10,30,50,75,95,110" y="110">sample</tspan></textPath>
+      </text>
+      <text font-size="10" x="15" y="60">tspan x="10,30,50,75,95,110"</text>
+      <text font-size="10" x="35" y="70">y="110"</text>
+    </g>
+
+    <g transform="translate(300,70)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20">
+        <textPath xlink:href="#Path1"><tspan dx="0,10,10,10,10,10">sample</tspan></textPath>
+      </text>
+      <text font-size="10" x="15" y="60">tspan dx="0,10,10,10,10,10"</text>
+    </g>
+
+
+    <g transform="translate(0,160)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20">
+        <textPath xlink:href="#Path1" textLength="140">sample</textPath>
+      </text>
+      <text font-size="10" x="35" y="60">textLength="140"</text>
+    </g>
+
+
+    <g transform="translate(150,160)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20">
+        <textPath xlink:href="#Path1" textLength="70">sample</textPath>
+      </text>
+      <text font-size="10" x="35" y="60">textLength="70"</text>
+    </g>
+
+    <g transform="translate(300,160)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20">
+        <textPath xlink:href="#Path1" kerning="10">sample</textPath>
+      </text>
+      <text font-size="10" x="35" y="60">kerning="10"</text>
+    </g>
+
+
+    <g transform="translate(0,250)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20">
+        <textPath xlink:href="#Path1" textLength="140" lengthAdjust="spacingAndGlyphs">sample</textPath>
+      </text>
+      <text font-size="10" x="35" y="60">textLength="140"</text>
+      <text font-size="10" x="35" y="70">lengthAdjust=</text>
+      <text font-size="10" x="35" y="80">"spacingAndGlyphs"</text>
+    </g>
+
+    <g transform="translate(150,250)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20">
+        <textPath xlink:href="#Path1" textLength="50" lengthAdjust="spacingAndGlyphs">sample</textPath>
+      </text>
+      <text font-size="10" x="35" y="60">textLength="50"</text>
+      <text font-size="10" x="35" y="70">lengthAdjust=</text>
+      <text font-size="10" x="35" y="80">"spacingAndGlyphs"</text>
+    </g>
+
+    <g transform="translate(300,250)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20">
+        <textPath xlink:href="#Path1" textLength="140" lengthAdjust="spacingAndGlyphs" 
kerning="10">sample</textPath>
+      </text>
+      <text font-size="10" x="5" y="60">textLength="140", kerning="10"</text>
+      <text font-size="10" x="5" y="70">lengthAdjust=</text>
+      <text font-size="10" x="5" y="80">"spacingAndGlyphs"</text>
+    </g>
+
+    <g transform="translate(0,350)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20">
+        <textPath xlink:href="#Path1" letter-spacing="-3">sample</textPath>
+      </text>
+      <text font-size="10" x="35" y="60">letter-spacing="-3"</text>
+    </g>
+
+    <g transform="translate(150,350)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20">
+        <textPath xlink:href="#Path1" textLength="140" word-spacing="2em">sample sample</textPath>
+      </text>
+      <text font-size="10" x="35" y="60">textLength="140"</text>
+      <text font-size="10" x="35" y="70">word-spacing="2em"</text>
+    </g>
+
+    <g transform="translate(300,350)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="20">
+        <textPath xlink:href="#Path1" textLength="140" lengthAdjust="spacingAndGlyphs" 
word-spacing="-5">sample sample</textPath>
+      </text>
+      <text font-size="10" x="35" y="60">textLength="140"</text>
+      <text font-size="10" x="35" y="70">word-spacing="-5"</text>
+      <text font-size="10" x="35" y="80">lengthAdjust=</text>
+      <text font-size="10" x="35" y="90">"spacingAndGlyphs"</text>
+    </g>
+
+
+
+
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/text/textPCDATA.png 
b/tests/data/svg/batik/tests/spec/text/textPCDATA.png
new file mode 100644
index 0000000..98e0b7d
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textPCDATA.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textPCDATA.svg 
b/tests/data/svg/batik/tests/spec/text/textPCDATA.svg
new file mode 100644
index 0000000..dc758ab
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textPCDATA.svg
@@ -0,0 +1,56 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Validates that CDATA sections in &lt;text&gt; elements are supported.     -->
+<!--                                                                           -->
+<!-- @author vincent hardy sun com                                             -->
+<!-- @version $Id: textPCDATA.svg 475477 2006-11-15 22:44:28Z cam $        -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+
+    <g id="content">
+
+        <text class="title" x="50%" y="30">Character Data on &lt;text&gt;</text>
+
+        <!-- Simple case: CDATA only -->
+        <g class="label" text-anchor="middle" transform="translate(225, 120)">
+            <text>CDATA only</text>
+            <text fill="crimson" y="20"><![CDATA[<text> with a CDATA section]]></text>
+        </g>
+
+        <!-- text, CDATA, text -->
+        <g class="label" text-anchor="middle" transform="translate(225, 180)">
+            <text>text, CDATA, text</text>
+            <text fill="crimson" y="20" >Text first, then <![CDATA[CDATA section in <text>]]>, text 
again</text>
+        </g>
+
+        <!-- text, CDATA, tspan, CDATA, text -->
+        <g class="label" text-anchor="middle" transform="translate(225, 240)">
+            <text>text, CDATA, tspan, CDATA, text</text>
+            <text fill="crimson" y="20">text, <![CDATA[CDATA section in <text>]]>, <tspan fill="gold">tspan 
w/<![CDATA[CDATA section in <tspan>]]></tspan>, text again</text>
+        </g>
+
+    </g>
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textPosition.png 
b/tests/data/svg/batik/tests/spec/text/textPosition.png
new file mode 100644
index 0000000..1a22eb4
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textPosition.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textPosition.svg 
b/tests/data/svg/batik/tests/spec/text/textPosition.svg
new file mode 100644
index 0000000..4a87ca1
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textPosition.svg
@@ -0,0 +1,108 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test the x,dx and y,dy attributes                                         -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: textPosition.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+<title>Text Position</title>
+
+  <style type="text/css"><![CDATA[
+    .info {
+      font-family: Arial;
+      font-size: 10;
+    }
+  ]]>
+  </style>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+
+<text class="title" x="50%" y="30">Text Position</text>
+
+<g id="testContent" style="font-family:Arial; font-size:24">
+
+<!-- ################################################################ -->
+
+<text x="50" y="80">Batik</text>
+<text x="50" y="100" class="info">&lt;text x="100" y="80"></text>
+
+<text x="240" y="80" style="letter-spacing:20">Batik</text>
+<text x="240" y="100" class="info">&lt;text x="240" y="80" letter-spacing="20"></text>
+
+
+<text x="50 70 90 110 130" y="140">Batik</text>
+<text x="50" y="160" class="info">&lt;text x="50 70 90 110 130" y="140"></text>
+
+<text dx="240 20 20 20 20" y="140">Batik</text>
+<text x="240" y="160" class="info">&lt;text dx="240 20 20 20 20" y="140"></text>
+
+<!-- ################################################################ -->
+
+<text><tspan x="50" y="200">Batik</tspan></text>
+<text x="50" y="220" class="info">&lt;tspan x="50" y="200"></text>
+
+<text><tspan x="240" y="200" style="letter-spacing:20">Batik</tspan></text>
+<text><tspan x="240" y="220" class="info">&lt;tspan x="240" y="200" letter-spacing="20"></tspan></text>
+
+
+<text><tspan x="50 70 90 110 130" y="260">Batik</tspan></text>
+<text x="50" y="280" class="info">&lt;tspan x="50 70 90 110 130" y="260"></text>
+
+<text><tspan dx="240 20 20 20 20" y="260">Batik</tspan></text>
+<text x="240" y="280" class="info">&lt;tspan dx="240 20 20 20 20" y="260"></text>
+
+<!-- ################################################################ -->
+
+<text><tspan x="50 60 70 80 90" dx="0 10 20 30 40" y="320">Batik</tspan></text>
+<text x="50" y="340" class="info">&lt;tspan x="50 60 70 80 90" <tspan x="83" dy="1.1em">dx="0 10 20 30 40" 
y="320"></tspan></text>
+
+
+<text><tspan x="240" dx="0 10 10 10 10" y="320" style="letter-spacing:10">Batik</tspan></text>
+<text x="240" y="340" class="info">&lt;tspan x="240" dx="0 10 10 10 10" <tspan x="273" dy="1.1em">y="320" 
style="letter-spacing:10"></tspan></text>
+
+
+<!-- ################################################################ -->
+
+<text><tspan x="50" letter-spacing="10" y="380">Batik</tspan><tspan x="10" y="380"/></text>
+<text x="50" y="400" class="info">Empty Trailing tspan</text>
+
+
+<text><tspan x="200" y="380"/><tspan x="240" letter-spacing="20" y="380">Batik</tspan></text>
+<text x="240" y="400" class="info">Empty Preceeding tspan</text>
+
+
+</g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/text/textPosition2.png 
b/tests/data/svg/batik/tests/spec/text/textPosition2.png
new file mode 100644
index 0000000..00c472e
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textPosition2.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textPosition2.svg 
b/tests/data/svg/batik/tests/spec/text/textPosition2.svg
new file mode 100644
index 0000000..b0726dc
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textPosition2.svg
@@ -0,0 +1,121 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test the x,dx and y,dy attributes                                         -->
+<!--                                                                           -->
+<!-- @author tkormann ilog fr                                                  -->
+<!-- @version $Id: textPosition2.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+<title>Text Position 2</title>
+
+  <style type="text/css"><![CDATA[
+    .info {
+      font-family: Arial;
+      font-size: 10;
+    }
+  ]]>
+  </style>
+
+<defs>
+<font horiz-adv-x="904" ><font-face
+    font-family="SVGArial"
+    units-per-em="2048"
+    panose-1="2 11 6 4 2 2 2 2 2 4"
+    ascent="1854"
+    descent="-434"
+    alphabetic="0" />
+<missing-glyph horiz-adv-x="1536" d="M256 0V1280H1280V0H256ZM288 32H1248V1248H288V32Z" />
+<glyph unicode="B" glyph-name="B" horiz-adv-x="1366" d="M150 0V1466H700Q868 1466 969 1422T1128 1285T1186 
1091Q1186 997 1135 914T981 780Q1114 741 1185 647T1257 425Q1257 322 1214 234T1106 97T946 25T709 0H150ZM344 
850H661Q790 850 846 867Q920 889
+957 940T995 1068Q995 1141 960 1196T860 1272T637 1293H344V850ZM344 173H709Q803 173 841 180Q908 192 953 
220T1027 301T1056 425Q1056 507 1014 567T898 652T683 677H344V173Z" />
+<glyph unicode="a" glyph-name="a" horiz-adv-x="1139" d="M828 131Q728 46 636 11T437 -24Q262 -24 168 61T74 
280Q74 358 109 422T202 526T332 585Q385 599 492 612Q710 638 813 674Q814 711 814 721Q814 831 763 876Q694 937 
558 937Q431 937 371 893T281 735L105
+759Q129 872 184 941T343 1048T584 1086Q720 1086 805 1054T930 974T986 851Q995 805 995 685V445Q995 194 1006 
128T1052 0H864Q836 56 828 131ZM813 533Q715 493 519 465Q408 449 362 429T291 371T266 285Q266 213 320 165T480 
117Q584 117 665 162T784 287Q813
+348 813 467V533Z" />
+<glyph unicode="i" glyph-name="i" horiz-adv-x="455" d="M136 1259V1466H316V1259H136ZM136 0V1062H316V0H136Z" />
+<glyph unicode="k" glyph-name="k" horiz-adv-x="1024" d="M136 0V1466H316V630L742 1062H975L569 668L1016 
0H794L443 543L316 421V0H136Z" />
+<glyph unicode="t" glyph-name="t" horiz-adv-x="569" d="M528 161L554 2Q478 -14 418 -14Q320 -14 266 17T190 
98T168 311V922H36V1062H168V1325L347 1433V1062H528V922H347V301Q347 224 356 202T387 167T449 154Q479 154 528 
161Z" />
+</font>
+
+</defs>
+
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+
+<text class="title" x="50%" y="30">Text Position 2</text>
+
+<g id="testContent" style="font-family:SVGArial; font-size:24">
+
+<!-- ################################################################ -->
+
+<text x="50" y="80">Batik</text>
+<text x="50" y="100" class="info">&lt;text x="100" y="80"></text>
+
+<text x="240" y="80" style="letter-spacing:20">Batik</text>
+<text x="240" y="100" class="info">&lt;text x="240" y="80" letter-spacing="20"></text>
+
+
+<text x="50 70 90 110 130" y="140">Batik</text>
+<text x="50" y="160" class="info">&lt;text x="50 70 90 110 130" y="140"></text>
+
+<text dx="240 20 20 20 20" y="140">Batik</text>
+<text x="240" y="160" class="info">&lt;text dx="240 20 20 20 20" y="140"></text>
+
+<!-- ################################################################ -->
+
+<text><tspan x="50" y="200">Batik</tspan></text>
+<text x="50" y="220" class="info">&lt;tspan x="50" y="200"></text>
+
+<text><tspan x="240" y="200" style="letter-spacing:20">Batik</tspan></text>
+<text><tspan x="240" y="220" class="info">&lt;tspan x="240" y="200" letter-spacing="20"></tspan></text>
+
+
+<text><tspan x="50 70 90 110 130" y="260">Batik</tspan></text>
+<text x="50" y="280" class="info">&lt;tspan x="50 70 90 110 130" y="260"></text>
+
+<text><tspan dx="240 20 20 20 20" y="260">Batik</tspan></text>
+<text x="240" y="280" class="info">&lt;tspan dx="240 20 20 20 20" y="260"></text>
+
+<!-- ################################################################ -->
+
+<text><tspan x="50 60 70 80 90" dx="0 10 20 30 40" y="320">Batik</tspan></text>
+<text x="50" y="340" class="info">&lt;tspan x="50 60 70 80 90" <tspan x="83" dy="1.1em">dx="0 10 20 30 40" 
y="320"></tspan></text>
+
+
+<text><tspan x="240" dx="0 10 10 10 10" y="320" style="letter-spacing:10">Batik</tspan></text>
+<text x="240" y="340" class="info">&lt;tspan x="240" dx="0 10 10 10 10" <tspan x="273" dy="1.1em">y="320" 
style="letter-spacing:10"></tspan></text>
+
+
+
+</g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/text/textProperties.png 
b/tests/data/svg/batik/tests/spec/text/textProperties.png
new file mode 100644
index 0000000..d7574dc
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textProperties.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textProperties.svg 
b/tests/data/svg/batik/tests/spec/text/textProperties.svg
new file mode 100644
index 0000000..4023e14
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textProperties.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author bill haneman ireland sun com                                      -->
+<!-- @version $Id: textProperties.svg 475477 2006-11-15 22:44:28Z cam $                                      
                       -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+<title>Text Properties</title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+
+    <defs>
+
+     <style type="text/css"><![CDATA[
+       .Caption { font-size: 8; font-family: dialog; font-weight: normal;
+                  font-style: normal; stroke: none; stroke-width: 0; 
+                  fill: black } ]]>
+     </style>
+
+     <filter id="gaussianBlur"  filterUnits="userSpaceOnUse" x="-100" y="-100" width="200" height="200" 
filterRes="200">
+        <feGaussianBlur stdDeviation="2 2" x="-100" y="-50" width="200" height="100"/> 
+     </filter>
+
+     <text x="0" y="0" text-anchor="middle" id="sample">sample</text>
+
+    </defs>
+
+    <g id="testContent" text-anchor="middle">
+        <text class="title" x="50%" y="10%" font-size="15" >
+            Text Alignment, Geometry, References, and Spans</text>
+
+        <g font-size="15">
+            <line x1="50%" y1="14%" x2="50%" y2="28%" stroke="Gray" stroke-width="1"/>
+            <text x="50%"  y="18%" text-anchor="start" fill="MidnightBlue">
+               text-anchor="start"</text>
+            <text x="50%"  y="22%" text-anchor="middle" fill="DarkRed">
+               text-anchor="middle"</text>
+            <text x="50%"  y="26%" text-anchor="end" fill="ForestGreen">
+               text-anchor="end"</text>
+        </g>       
+
+
+        <g transform="translate(100, 180)">
+            <text font-size="1cm">sample</text>
+            <text y="15" style="Caption">font-size="1cm"</text>
+        </g>       
+
+        <g transform="translate(225, 180)">
+            <text font-size="200%">sample</text>
+            <text y="15" style="Caption">font-size="200%"</text>
+        </g>       
+
+        <g transform="translate(350, 180)">
+            <text font-size="30pt">sample</text>
+            <text y="15" style="Caption">font-size="28"</text>
+        </g>       
+
+        <g transform="translate(100, 225)">
+            <text font-size="30"><tref xlink:href="#sample"/></text>
+            <text y="15" style="Caption">referenced text via &lt;tref&gt;</text>
+        </g>       
+
+        <g transform="translate(225, 225)">
+            <text font-size="30">
+            sa<tspan font-family="Serif" font-weight="bold" fill="DarkRed"
+            text-decoration="underline" >m</tspan>ple
+            </text>
+            <text y="15" style="Caption">use of &lt;tspan&gt;</text>
+        </g>       
+
+        <g transform="translate(350, 225)">
+            <g font-size="30">
+                <use xlink:href="#sample"/>
+            </g>
+            <text y="15" style="Caption">predefined text via &lt;use&gt;</text>
+        </g>       
+ 
+        <text x="50%" y="280" font-size="15" >
+            Text Rendering Properties</text>
+
+        <g transform="translate(100, 305)">
+            <g font-size="30" transform="rotate(180)">
+                <use xlink:href="#sample"/>
+            </g>
+            <text y="30" style="Caption">transform="rotate(180)"</text>
+        </g>       
+
+        <g transform="translate(225, 320)">
+            <g font-size="30" opacity="0.5">
+                <use xlink:href="#sample"/>
+            </g>
+            <text y="15" style="Caption">opacity="0.5"</text>
+        </g>       
+
+        <g transform="translate(350, 320)">
+            <g font-size="30" fill="DarkRed">
+                <use xlink:href="#sample"/>
+            </g>
+            <text y="15" style="Caption">fill="DarkRed"</text>
+        </g>       
+
+        <g transform="translate(100, 370)">
+            <g font-size="30" filter="url(#gaussianBlur)">
+                <use xlink:href="#sample"/>
+            </g>
+            <text y="15" style="Caption">filter="url(#gaussianBlur)"</text>
+        </g>       
+
+        <g transform="translate(225, 370)">
+            <g font-size="30" fill="yellow" stroke="MidnightBlue">
+                <use xlink:href="#sample"/>
+            </g>
+            <text y="15" style="Caption">fill="yellow";</text>
+            <text y="25" style="Caption">stroke="MidnightBlue"</text>
+        </g>       
+
+<defs>
+    <clipPath id="textClip">
+        <text font-size="30">sample</text>
+    </clipPath>
+    <linearGradient id="gradient" gradientUnits="userSpaceOnUse"
+     x1="-50" y1="-25" x2="50" y2="25">
+        <stop offset="0%" style="stop-color:blue"/>
+        <stop offset="100%" style="stop-color:green"/>
+    </linearGradient>
+</defs>
+        <g transform="translate(350, 370)">
+            <rect x="-50" y="-25" width="100" height="50" 
+               fill="url(#gradient)" 
+               clip-path="url(#textClip)"/>
+            <text y="15" style="Caption">text as clip-path</text>
+        </g>       
+
+        <text x="150" y="440" font-size="60" 
+          fill="BlancheDalmond" stroke="DarkRed" stroke-width="2"
+          stroke-linejoin="miter" stroke-linecap="square">
+         a</text>
+        <text x="150" y="455" style="Caption">stroke-linejoin="miter"</text>
+        <text x="150" y="465" style="Caption">stroke-linecap="square"</text>
+
+        <text x="300" y="440" font-size="60" 
+          fill="BlancheDalmond" stroke="DarkRed" stroke-width="2"
+          stroke-linejoin="round" stroke-linecap="round">
+         a</text>
+        <text x="300" y="455" style="Caption">stroke-linejoin="round"</text>
+        <text x="300" y="465" style="Caption">stroke-linecap="round"</text>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textProperties2.png 
b/tests/data/svg/batik/tests/spec/text/textProperties2.png
new file mode 100644
index 0000000..cae3515
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textProperties2.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textProperties2.svg 
b/tests/data/svg/batik/tests/spec/text/textProperties2.svg
new file mode 100644
index 0000000..d43a354
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textProperties2.svg
@@ -0,0 +1,110 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author bill haneman ireland sun com                                      -->
+<!-- @version $Id: textProperties2.svg 475477 2006-11-15 22:44:28Z cam $                                     
                        -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg width="450" height="500" viewBox="0 0 450 500"
+  xmlns="http://www.w3.org/2000/svg"; 
+  xmlns:xlink="http://www.w3.org/1999/xlink"; >
+
+<title>Text Properties</title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+
+    <defs>
+
+     <style type="text/css"><![CDATA[
+       .Caption { font-size: 8; font-family: dialog; font-weight: normal;
+                  font-style: normal; stroke: none; stroke-width: 0; 
+                  fill: black } 
+       text > tspan { fill: blue; }
+       text > tspan > tspan { fill: purple; }]]>
+     </style>
+    </defs>
+
+    <g id="testContent">
+        <text class="title" x="50%" y="40" font-size="15" >
+            Text display and visibility.</text>
+
+        <text x="50%" y="74" text-anchor="middle"
+         >Visibility on text &amp; tspans</text>
+        <text x="50%" y="200" text-anchor="middle"
+         >Display on text &amp; tspans</text>
+
+         <g stroke="black" stroke-width="1">
+         <rect x="12.5" y="82" width="425" height="25" fill="#EEE"/>
+         <rect x="12.5" y="107" width="425" height="25" fill="#CCC"/>
+         <rect x="12.5" y="132" width="425" height="25" fill="#EEE"/>
+         <rect x="12.5" y="157" width="425" height="25" fill="#CCC"/>
+         <line x1="340" x2="340" y1="82" y2="182"/>
+
+         <rect x="12.5" y="207" width="425" height="25" fill="#EEE"/>
+         <rect x="12.5" y="232" width="425" height="25" fill="#CCC"/>
+         <rect x="12.5" y="257" width="425" height="25" fill="#EEE"/>
+         <rect x="12.5" y="282" width="425" height="25" fill="#CCC"/>
+         <rect x="12.5" y="307" width="425" height="25" fill="#EEE"/>
+         <line x1="340" x2="340" y1="207" y2="332"/>
+         </g>
+
+         <text class="Caption" x="360" y="97" >vis, vis, vis</text>
+         <text class="Caption" x="360" y="122">vis, hid, vis</text>
+         <text class="Caption" x="360" y="147">vis, hid, hid</text>
+         <text class="Caption" x="360" y="172">hid, vis, hid</text>
+
+         <text class="Caption" x="360" y="223">inline, inline, inline</text>
+         <text class="Caption" x="360" y="248">inline, inline, none</text>
+         <text class="Caption" x="360" y="273">inline, none, inline</text>
+         <text class="Caption" x="360" y="298">inline, none, none</text>
+         <text class="Caption" x="360" y="323">none, inline, none</text>
+
+       <g transform="scale(1.25), translate(0, 10)">
+        <text x="20" y="70">Text <tspan>tspan 1 <tspan> tspan 2</tspan> more span 1</tspan> finish 
text</text>
+
+        <text x="20" y="90">Text <tspan visibility="hidden">tspan 1 <tspan visibility="visible"> tspan 
2</tspan> more span 1</tspan> finish text</text>
+
+        <text x="20" y="110">Text <tspan visibility="hidden">tspan 1 <tspan visibility="hidden"> tspan 
2</tspan> more span 1</tspan> finish text</text>
+
+        <text x="20" y="130" visibility="hidden">Text <tspan visibility="visible">tspan 1 <tspan 
visibility="hidden"> tspan 2</tspan> more span 1</tspan> finish text</text>
+
+
+        <text x="20" y="170">Text <tspan>tspan 1 <tspan>tspan 2 </tspan>more span 1</tspan> finish 
text</text>
+        <text x="20" y="190">Text <tspan display="inline">tspan 1 <tspan display="none"> tspan 2</tspan> 
more span 1</tspan> finish text</text>
+        <text x="20" y="210">Text <tspan display="none">tspan 1 <tspan display="inline"> tspan 2</tspan> 
more span 1</tspan> finish text</text>
+        <text x="20" y="230">Text <tspan display="none">tspan 1 <tspan display="none"> tspan 2</tspan> more 
span 1</tspan> finish text</text>
+        <text x="20" y="250" display="none">Text <tspan display="inline">tspan 1 <tspan display="none"> 
tspan 2</tspan> more span 1</tspan> finish text</text>
+    </g>
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/textStyles.png 
b/tests/data/svg/batik/tests/spec/text/textStyles.png
new file mode 100644
index 0000000..29bf4c4
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/textStyles.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/textStyles.svg 
b/tests/data/svg/batik/tests/spec/text/textStyles.svg
new file mode 100644
index 0000000..394a963
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/textStyles.svg
@@ -0,0 +1,228 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Test description here                                                     -->
+<!--                                                                           -->
+<!-- @author bill haneman ireland sun com                                      -->
+<!-- @version $Id: textStyles.svg 475477 2006-11-15 22:44:28Z cam $                                          
                   -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="450" height="500" 
viewBox="0 0 450 500">
+<title>Text Font Faces and Styles</title>
+
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+
+    <defs>
+     <style type="text/css"><![CDATA[
+       .Caption { font-size: 8; font-family: dialog; font-weight: normal;
+                  font-style: normal; stroke: none; stroke-width: 0; 
+                  fill: black } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .SansSerifPlain { font-family: SansSerif } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .SansSerifBold { font-family: SansSerif; font-weight: bold } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .SansSerifOblique { font-family: SansSerif; font-style: oblique } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .SerifPlain { font-family: Serif } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .SerifBold { font-family: Serif; font-weight: bold } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .SerifOblique { font-family: Serif; font-style: oblique } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .Monospaced { font-family: Monospaced } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .MonospacedBold { font-family: Monospaced; font-weight:bold } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .MonospacedOblique { font-family: Monospaced; font-style:oblique } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .Default {   } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .DefaultBoldOblique { font-style: oblique; font-weight: bold } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .DefaultOutline { stroke-width: 1; stroke: black; fill: none } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .Times { font-family: Times  } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .Arial { font-family: Arial  } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .Verdana { font-family: Verdana  } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .Helvetica { font-family: Helvetica  } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .Impact { font-family: Impact  } ]]>
+     </style>
+
+     <style type="text/css"><![CDATA[
+       .AvantGarde { font-family: AvantGarde  } ]]>
+     </style>
+
+     <text x="0" y="0" text-anchor="middle" id="sample">sample</text>
+
+    </defs>
+
+    <g id="testContent" text-anchor="middle" font-size="30">
+        <text class="title" x="50%" y="10%" font-size="15" >
+            Text Font Faces and Styles</text>
+       
+       <text x="50%" y="15%" font-size="10">Standard Font Faces</text>
+
+        <g transform="translate(100, 110)" class="SansSerifPlain">
+            <use xlink:href="#sample"/>
+            <text y="15" class="Caption">SansSerif, normal weight</text>
+        </g>
+
+        <g transform="translate(225, 110)" class="SansSerifBold">
+            <use xlink:href="#sample"/>
+            <text y="15" class="Caption">SansSerif, bold</text>
+        </g>
+
+        <g transform="translate(350, 110)" class="SansSerifOblique">
+            <use xlink:href="#sample"/>
+            <text y="15" class="Caption">SansSerif, oblique</text>
+        </g>
+
+        <g transform="translate(100, 160)" class="SerifPlain">
+            <use xlink:href="#sample"/>
+            <text y="15" class="Caption">Serif, normal weight</text>
+        </g>
+
+        <g transform="translate(225, 160)" class="SerifBold">
+            <use xlink:href="#sample"/>
+            <text y="15" class="Caption">Serif, bold</text>
+        </g>
+
+        <g transform="translate(350, 160)" class="SerifOblique">
+            <use xlink:href="#sample"/>
+            <text y="15" class="Caption">Serif, oblique</text>
+        </g>
+
+        <g transform="translate(100, 210)" class="Monospaced">
+            <use xlink:href="#sample"/>
+            <text y="15" class="Caption">Monospaced, normal weight</text>
+        </g>
+
+        <g transform="translate(225, 210)" class="MonospacedBold">
+            <use xlink:href="#sample"/>
+            <text y="15" class="Caption">Monospaced, bold</text>
+        </g>
+
+        <g transform="translate(350, 210)" class="MonospacedOblique">
+            <use xlink:href="#sample"/>
+            <text y="15" class="Caption">Monospaced, oblique</text>
+        </g>
+
+        <g transform="translate(100, 260)" class="Default">
+            <use xlink:href="#sample"/>
+            <text y="15" class="Caption">(default)</text>
+        </g>
+
+        <g transform="translate(225, 260)" class="DefaultBoldOblique">
+            <use xlink:href="#sample"/>
+            <text y="15" class="Caption">default, bold, oblique</text>
+        </g>
+
+        <g transform="translate(350, 260)" class="DefaultOutline">
+            <use xlink:href="#sample"/>
+            <text y="15" class="Caption">stroke-width=1, fill=none</text>
+        </g>
+
+        <text x="50%" y="62%" font-size="10">Named Font Families</text>
+        <text x="50%" y="65%" font-size="10" font-style="oblique">
+            (Not all typefaces are available on all systems.)
+        </text>
+
+        <g transform="translate(100, 360)" class="Times">
+            <use xlink:href="#sample"/>
+            <text y="15" class="Caption">Times</text>
+        </g>
+
+        <g transform="translate(225, 360)" class="Verdana">
+            <use xlink:href="#sample"/>
+            <text y="15" class="Caption">Verdana</text>
+        </g>
+
+        <g transform="translate(350, 360)" class="Helvetica">
+            <use xlink:href="#sample"/>
+            <text y="15" class="Caption">Helvetica</text>
+        </g>
+
+        <g transform="translate(100, 410)" class="Arial">
+            <text><tref xlink:href="#sample" text-decoration="underline"/></text>
+            <text y="15" class="Caption">Arial (underlined)</text>
+        </g>
+
+        <g transform="translate(225, 410)" class="Impact">
+            <use xlink:href="#sample"/>
+            <text y="15" class="Caption">Impact</text>
+        </g>
+
+        <g transform="translate(350, 410)" class="AvantGarde">
+            <text><tref xlink:href="#sample" text-decoration="line-through"/></text>
+            <text y="15" class="Caption">AvantGarde (line-through)</text>
+        </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/verticalText-orient0-3-18.png 
b/tests/data/svg/batik/tests/spec/text/verticalText-orient0-3-18.png
new file mode 100644
index 0000000..49f7abc
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/verticalText-orient0-3-18.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/verticalText-orient180-3-18.png 
b/tests/data/svg/batik/tests/spec/text/verticalText-orient180-3-18.png
new file mode 100644
index 0000000..7aafab9
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/verticalText-orient180-3-18.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/verticalText-orient270-3-18.png 
b/tests/data/svg/batik/tests/spec/text/verticalText-orient270-3-18.png
new file mode 100644
index 0000000..e0b3ef3
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/verticalText-orient270-3-18.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/verticalText-orient90-3-18.png 
b/tests/data/svg/batik/tests/spec/text/verticalText-orient90-3-18.png
new file mode 100644
index 0000000..9d8ee1b
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/verticalText-orient90-3-18.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/verticalText.png 
b/tests/data/svg/batik/tests/spec/text/verticalText.png
new file mode 100644
index 0000000..d8b8ff6
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/verticalText.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/verticalText.svg 
b/tests/data/svg/batik/tests/spec/text/verticalText.svg
new file mode 100644
index 0000000..150d8a4
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/verticalText.svg
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- Vertical <text>                                                           -->
+<!--                                                                           -->
+<!-- @author dean jackson cmis csiro au                                       -->
+<!-- @version $Id: verticalText.svg 475685 2006-11-16 11:16:05Z cam $     -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+
+  <title>Vertical Text Test</title>
+
+  <defs>
+    <path id="Path1" style="fill:none; stroke:blue;" transform="scale(0.15,0.15)"
+          d="M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 0 1000 100
+             C 1100 200 1200 300 1300 200 C 1400 100 1500 0 1600 100
+             C 1700 200 1800 300 1900 200 C 2000 100 2100 0 2200 100"/>
+  </defs>
+
+  <g id="content">
+
+    <text class="title" x="50%" y="40">Vertical Text Test</text>
+
+    <line x1="20" y1="75" x2="430" y2="75" stroke="black"/>
+
+    <g opacity="0.5">
+      <circle cx="50" cy="75" r="2" fill="red" />
+      <circle cx="100" cy="75" r="2" fill="red" />
+      <circle cx="150" cy="75" r="2" fill="red" />
+      <circle cx="200" cy="75" r="2" fill="red" />
+      <circle cx="250" cy="75" r="2" fill="red" />
+      <circle cx="300" cy="75" r="2" fill="red" />
+      <circle cx="350" cy="75" r="2" fill="red" />
+      <circle cx="400" cy="75" r="2" fill="red" />
+
+      <line x1="50" y1="75" x2="50" y2="450" stroke="red" />
+      <line x1="100" y1="75" x2="100" y2="450" stroke="red" />
+      <line x1="150" y1="75" x2="150" y2="450" stroke="red" />
+      <line x1="200" y1="75" x2="200" y2="450" stroke="red" />
+      <line x1="250" y1="75" x2="250" y2="450" stroke="red" />
+      <line x1="300" y1="75" x2="300" y2="450" stroke="red" />
+      <line x1="350" y1="75" x2="350" y2="450" stroke="red" />
+      <line x1="400" y1="75" x2="400" y2="450" stroke="red" />
+    </g>
+
+
+    <text x="50" y="75" writing-mode="tb" font-size="15">Writing top to bottom&#x753b;&#x50cf;</text>
+    <text x="100" y="75" glyph-orientation-vertical="auto" writing-mode="tb" font-size="15">Glyph 
Orientation:auto&#x753b;&#x50cf;</text>
+    <text id="orient0"   x="150" y="75" glyph-orientation-vertical="0deg" 
+          writing-mode="tb" font-size="15">Glyph Orientation:0&#x753b;&#x50cf;</text>
+    <text id="orient90"  x="200" y="75" glyph-orientation-vertical="90deg" 
+          writing-mode="tb" font-size="15">Glyph Orientation:90&#x753b;&#x50cf;</text>
+    <text id="orient180" x="250" y="75" glyph-orientation-vertical="180deg" 
+          writing-mode="tb" font-size="15">Glyph Orientation:180&#x753b;&#x50cf;</text>
+    <text id="orient270" x="300" y="75" glyph-orientation-vertical="270deg" 
+          writing-mode="tb" font-size="15">Glyph Orientation:270&#x753b;&#x50cf;</text>
+    <text x="350" y="75" writing-mode="tb" font-size="15">Embedded <tspan fill="red">&lt;tspan&gt;</tspan> 
element</text>
+    <text x="400" y="75" writing-mode="tb" font-size="15">Embedded <tspan fill="blue" 
glyph-orientation-vertical="0deg">orientated</tspan> element</text>
+
+
+
+
+    <g transform="translate(40,450)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="12" writing-mode="tb" glyph-orientation-vertical="0deg">
+        <textPath xlink:href="#Path1">Vertical text on a Path&#x753b;&#x50cf;</textPath>
+      </text>
+    </g>
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/tests/data/svg/batik/tests/spec/text/verticalTextOnPath-beforeafter-0-28.png 
b/tests/data/svg/batik/tests/spec/text/verticalTextOnPath-beforeafter-0-28.png
new file mode 100644
index 0000000..8cbc53d
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/verticalTextOnPath-beforeafter-0-28.png 
differ
diff --git a/tests/data/svg/batik/tests/spec/text/verticalTextOnPath-negpos-3-17.png 
b/tests/data/svg/batik/tests/spec/text/verticalTextOnPath-negpos-3-17.png
new file mode 100644
index 0000000..a164f0a
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/verticalTextOnPath-negpos-3-17.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/verticalTextOnPath-supersub-3-18.png 
b/tests/data/svg/batik/tests/spec/text/verticalTextOnPath-supersub-3-18.png
new file mode 100644
index 0000000..324ff04
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/verticalTextOnPath-supersub-3-18.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/verticalTextOnPath.png 
b/tests/data/svg/batik/tests/spec/text/verticalTextOnPath.png
new file mode 100644
index 0000000..59ae38b
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/verticalTextOnPath.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/verticalTextOnPath.svg 
b/tests/data/svg/batik/tests/spec/text/verticalTextOnPath.svg
new file mode 100644
index 0000000..bb099da
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/verticalTextOnPath.svg
@@ -0,0 +1,183 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   
+        http://www.apache.org/licenses/LICENSE-2.0
+   
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!-- ========================================================================= -->
+<!-- Tests vertical text on a path                                              -->
+<!--                                                                           -->
+<!-- @author bella robinson cmis csiro au                                      -->
+<!-- @version $Id: verticalTextOnPath.svg 475685 2006-11-16 11:16:05Z cam $        -->
+<!-- ========================================================================= -->
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+
+<svg xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; id="body" width="450" 
height="500" viewBox="0 0 450 500">
+  <title>Vertical text on a path test</title>
+
+  <g id="content">
+
+    <text class="title" x="50%" y="40">Vertical text on a path test</text>
+
+    <defs>
+      <path id="Path1" style="fill:none; stroke:blue;" transform="scale(0.15,0.15)"
+        d="M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100"/>
+      <path id="Path2" style="fill:none; stroke:blue;" transform="scale(0.30,0.50)"
+        d="M 100 100 C100 0 400 00 400 100"/>
+
+    </defs>
+
+    <g transform="translate(0,70)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="15" style="text-anchor:start" writing-mode="tb" glyph-orientation-vertical="auto">
+        <textPath xlink:href="#Path1" startOffset="0%">Text <tspan fill="red" dx="10">on</tspan><tspan 
dx="-10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="0%"</text>
+      <text font-size="10" x="35" y="70">text-anchor="start"</text>
+      <text font-size="10" x="35" y="80">glyph-orientation="auto"</text>
+    </g>
+
+
+    <g transform="translate(150,70)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="15" style="text-anchor:middle" writing-mode="tb" glyph-orientation-vertical="0deg">
+        <textPath xlink:href="#Path1" startOffset="0%">Text <tspan fill="red" dx="10">on</tspan><tspan 
dx="-10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="0%"</text>
+      <text font-size="10" x="35" y="70">text-anchor="middle"</text>
+      <text font-size="10" x="35" y="80">glyph-orientation="0deg"</text>
+    </g>
+
+    <g transform="translate(300,70)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="15" style="text-anchor:end" writing-mode="tb" glyph-orientation-vertical="180deg">
+        <textPath xlink:href="#Path1" startOffset="50%">Text <tspan fill="red" dx="10">on</tspan><tspan 
dx="-10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="50%"</text>
+      <text font-size="10" x="35" y="70">text-anchor="end"</text>
+      <text font-size="10" x="35" y="80">glyph-orientation="180deg"</text>
+    </g>
+
+
+    <g transform="translate(0,170)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="15" style="text-anchor:start" writing-mode="tb" glyph-orientation-vertical="270deg">
+        <textPath xlink:href="#Path1" startOffset="50%">Text <tspan fill="red" dx="10">on</tspan><tspan 
dx="-10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="50%"</text>
+      <text font-size="10" x="35" y="70">text-anchor="start"</text>
+      <text font-size="10" x="35" y="80">glyph-orientation="270deg"</text>
+    </g>
+
+
+    <g transform="translate(150,170)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="15" style="text-anchor:middle" writing-mode="tb" glyph-orientation-vertical="0deg">
+        <textPath xlink:href="#Path1" startOffset="50%">Text <tspan fill="red" dx="10">on</tspan><tspan 
dx="-10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="50%"</text>
+      <text font-size="10" x="35" y="70">text-anchor="middle"</text>
+      <text font-size="10" x="35" y="80">glyph-orientation="0deg"</text>
+    </g>
+
+    <g transform="translate(300,170)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="15" style="text-anchor:end" writing-mode="tb" glyph-orientation-vertical="90deg">
+        <textPath xlink:href="#Path1" startOffset="100%">Text <tspan fill="red" dx="10">on</tspan><tspan 
dx="-10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="100%"</text>
+      <text font-size="10" x="35" y="70">text-anchor="end"</text>
+      <text font-size="10" x="35" y="80">glyph-orientation="90deg"</text>
+    </g>
+
+
+    <g transform="translate(0,270)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="15" style="text-anchor:start" writing-mode="tb" glyph-orientation-vertical="180deg">
+        <textPath xlink:href="#Path1" startOffset="35">Text <tspan fill="red" dx="10">on</tspan><tspan 
dx="-10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="35"</text>
+      <text font-size="10" x="35" y="70">text-anchor="start"</text>
+      <text font-size="10" x="35" y="80">glyph-orientation="180deg"</text>
+    </g>
+
+
+    <g transform="translate(150,270)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="15" style="text-anchor:middle" writing-mode="tb" glyph-orientation-vertical="270deg">
+        <textPath xlink:href="#Path1" startOffset="35">Text <tspan fill="red" dx="10">on</tspan><tspan 
dx="-10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="35"</text>
+      <text font-size="10" x="35" y="70">text-anchor="middle"</text>
+    </g>
+
+    <g transform="translate(300,270)">
+      <use xlink:href="#Path1" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text font-size="15" style="text-anchor:end" writing-mode="tb" glyph-orientation-vertical="90deg">
+        <textPath xlink:href="#Path1" startOffset="35">Text <tspan fill="red" dx="10">on</tspan><tspan 
dx="-10"> a Path</tspan></textPath>
+      </text>
+      <text font-size="10" x="35" y="60">startOffset="35"</text>
+      <text font-size="10" x="35" y="70">text-anchor="end"</text>
+      <text font-size="10" x="35" y="80">glyph-orientation="90deg"</text>
+    </g>
+
+
+
+    <g transform="translate(10,370)">
+      <use xlink:href="#Path2" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text id="supersub" font-size="15" writing-mode="tb" 
+        glyph-orientation-vertical="auto">
+        <textPath xlink:href="#Path2"><tspan baseline-shift="super" fill="green">super</tspan> and <tspan 
baseline-shift="sub" fill="red">sub</tspan>scripts</textPath>
+      </text>
+      <text font-size="10" x="20" y="65">baseline-shift="super"</text>
+      <text font-size="10" x="20" y="75">and baseline-shift="sub"</text>
+      <text font-size="10" x="20" y="85">glyph-orientation="auto"</text>
+    </g>
+
+
+    <g transform="translate(300,370)">
+      <use xlink:href="#Path2" style="fill:none; stroke:blue; stroke-width:2"/>
+      <text id="negpos" font-size="15" writing-mode="tb" 
+        glyph-orientation-vertical="auto">
+        <textPath xlink:href="#Path2"><tspan baseline-shift="+20%" fill="green">positive</tspan> and <tspan 
baseline-shift="-20%" fill="red">negative </tspan></textPath>
+      </text>
+      <text font-size="10" x="20" y="65">baseline-shift="+/-20%"</text>
+      <text font-size="10" x="20" y="75">glyph-orientation="auto"</text>
+    </g>
+
+    <g transform="translate(180,370)">
+      <g transform="scale(0.75)">
+        <use xlink:href="#Path2" style="fill:none; stroke:blue; stroke-width:2"/>
+        <text id="beforeafter" font-size="20" x="10" y="-20" 
+          writing-mode="tb" glyph-orientation-vertical="auto">before path
+          <textPath xlink:href="#Path2" fill="red" startOffset="10%">on path</textPath>after path
+        </text>
+      </g>
+      <text font-size="10" x="0" y="100">text before/after textPath</text>
+      <text font-size="10" x="0" y="110">glyph-orientation="auto"</text>
+    </g>
+
+  </g>
+
+  <!-- ============================================================= -->
+  <!-- Batik sample mark                                             -->
+  <!-- ============================================================= -->
+  <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
+
diff --git a/tests/data/svg/batik/tests/spec/text/xmlSpace.png 
b/tests/data/svg/batik/tests/spec/text/xmlSpace.png
new file mode 100644
index 0000000..d02ce67
Binary files /dev/null and b/tests/data/svg/batik/tests/spec/text/xmlSpace.png differ
diff --git a/tests/data/svg/batik/tests/spec/text/xmlSpace.svg 
b/tests/data/svg/batik/tests/spec/text/xmlSpace.svg
new file mode 100644
index 0000000..3f7a535
--- /dev/null
+++ b/tests/data/svg/batik/tests/spec/text/xmlSpace.svg
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" 
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
+
+<!--
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ====================================================================== -->
+<!-- Tests "proper" handling of xml:space                                   -->
+<!--                                                                        -->
+<!-- @author deweese apache org                                             -->
+<!-- @version $Id: xmlSpace.svg 475477 2006-11-15 22:44:28Z cam $    -->
+<!-- ====================================================================== -->
+
+<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+
+<svg width="450" height="500" viewBox="0 0 450 500"
+     xmlns="http://www.w3.org/2000/svg"; 
+     xmlns:xlink="http://www.w3.org/1999/xlink"; 
+     xmlns:foo="http://graphics.apache.org/batik/foo";>
+
+    <text class="title" x="50%" y="40">Test of xml:space handling</text>
+
+      <font horiz-adv-x="600" id="stroke">
+         <font-face
+             font-family="BlockSpace"
+             font-weight="normal"
+             units-per-em="1000"
+             ascent="1000"
+             descent="250"
+             alphabetic="0"/>
+
+         <missing-glyph horiz-adv-x="600" d="M0 0 V800 H500 V0 z"/>
+
+         <glyph unicode=" " glyph-name=" " horiz-adv-x="600" 
+                d="M20 0 V800 H520 V0 z M 50 30 H490 V770 H50 z"/>
+      </font>
+      <style type="text/css"><![CDATA[
+        .cap { font: normal normal 8 monospaced;
+               stroke: none; stroke-width: 0; 
+                   fill: black } ]]>
+      </style>
+
+      <g font="20 BlockSpace">
+         <text x="10" y=" 75">  X  X  </text>
+            <text class="cap" x="120" y="75">no xml:space attr</text>
+
+         <text x="10" y="100" xml:space="default">  X  X  </text>
+            <text class="cap" x="120" y="100">xml:space="default"</text>
+
+         <text x="10" y="150" xml:space="preserve">  X  X  <tspan fill="red" xml:space="default"/></text>
+            <text class="cap" x="120" y="140">Empty tspan at end
+                  <tspan x="120" dy="1.2em">xml:space="default"</tspan></text>
+
+         <text x="10" y="175" xml:space="preserve">  X  X<tspan fill="red" xml:space="default">  
</tspan></text>
+            <text class="cap" x="120" y="165">tspan end 2spc
+                  <tspan x="120" dy="1.2em">xml:space="default"</tspan></text>
+
+         <text x="10" y="200" xml:space="preserve">  X  X <tspan fill="red" xml:space="default"> 
</tspan></text>
+            <text class="cap" x="120" y="190">tspan end
+                  <tspan x="120" dy="1.2em">xml:space="default"</tspan></text>
+
+         <text x="10" y="225" xml:space="preserve"><tspan fill="red" xml:space="default"> </tspan> X  X  
</text>
+            <text class="cap" x="120" y="215">tspan start
+                  <tspan x="120" dy="1.2em">xml:space="default"</tspan></text>
+
+         <text x="10" y="250" xml:space="preserve"> <tspan fill="red" xml:space="default"> </tspan>X  X  
</text>
+            <text class="cap" x="120" y="240">tspan near start
+                  <tspan x="120" dy="1.2em">xml:space="default"</tspan></text>
+
+         <text x="10" y="275" xml:space="preserve">  X<tspan fill="red" xml:space="default"> </tspan> X  
</text>
+            <text class="cap" x="120" y="265">tspan middle front 
+                  <tspan x="120" dy="1.2em">xml:space="default"</tspan></text>
+
+         <text x="10" y="300" xml:space="preserve">  X <tspan fill="red" xml:space="default"> </tspan>X  
</text>
+            <text class="cap" x="120" y="290">tspan middle end
+                  <tspan x="120" dy="1.2em">xml:space="default"</tspan></text>
+
+         <text x="10" y="325" xml:space="preserve"> <foo:xxx/> X  X  </text>
+            <text class="cap" x="120" y="315">unknown element 
+                  <tspan x="120" dy="1.2em">start</tspan></text>
+
+         <text x="10" y="350" xml:space="preserve">  X <foo:xxx/> X  </text>
+            <text class="cap" x="120" y="340">unknown element 
+                  <tspan x="120" dy="1.2em">middle</tspan></text>
+
+         <text x="10" y="375" xml:space="preserve">  X  X <foo:xxx/> </text>
+            <text class="cap" x="120" y="365">unknown element 
+                  <tspan x="120" dy="1.2em">end</tspan></text>
+
+         <!--      -->
+
+
+         <text x="235" y="100" xml:space="preserve">  X  X  </text>
+            <text class="cap" x="345" y="100">xml:space="preserve"</text>
+
+         <text x="235" y="150" xml:space="default">  X  X  <tspan fill="red" xml:space="preserve"/></text>
+            <text class="cap" x="345" y="140">Empty tspan at end
+                  <tspan x="345" dy="1.2em">xml:space="preserve"</tspan></text>
+
+         <text x="235" y="175" xml:space="default">  X  X<tspan fill="red" xml:space="preserve">  
</tspan></text>
+            <text class="cap" x="345" y="165">tspan end 2spc
+                  <tspan x="345" dy="1.2em">xml:space="preserve"</tspan></text>
+
+         <text x="235" y="200" xml:space="default">  X  X <tspan fill="red" xml:space="preserve"> 
</tspan></text>
+            <text class="cap" x="345" y="190">tspan end
+                  <tspan x="345" dy="1.2em">xml:space="preserve"</tspan></text>
+
+         <text x="235" y="225" xml:space="default"><tspan fill="red" xml:space="preserve"> </tspan> X  X  
</text>
+            <text class="cap" x="345" y="215">tspan start
+                  <tspan x="345" dy="1.2em">xml:space="preserve"</tspan></text>
+
+         <text x="235" y="250" xml:space="default"> <tspan fill="red" xml:space="preserve"> </tspan>X  X  
</text>
+            <text class="cap" x="345" y="240">tspan near start
+                  <tspan x="345" dy="1.2em">xml:space="preserve"</tspan></text>
+
+         <text x="235" y="275" xml:space="default">  X<tspan fill="red" xml:space="preserve"> </tspan> X  
</text>
+            <text class="cap" x="345" y="265">tspan middle front 
+                  <tspan x="345" dy="1.2em">xml:space="preserve"</tspan></text>
+
+         <text x="235" y="300" xml:space="default">  X <tspan fill="red" xml:space="preserve"> </tspan>X  
</text>
+            <text class="cap" x="345" y="290">tspan middle end
+                  <tspan x="345" dy="1.2em">xml:space="preserve"</tspan></text>
+
+         <text x="235" y="325" xml:space="default"> <foo:xxx/> X  X  </text>
+            <text class="cap" x="345" y="315">unknown element 
+                  <tspan x="345" dy="1.2em">start</tspan></text>
+
+         <text x="235" y="350" xml:space="default">  X <foo:xxx/> X  </text>
+            <text class="cap" x="345" y="340">unknown element 
+                  <tspan x="345" dy="1.2em">middle</tspan></text>
+
+         <text x="236" y="375" xml:space="default">  X  X <foo:xxx/> </text>
+            <text class="cap" x="345" y="365">unknown element 
+                  <tspan x="345" dy="1.2em">end</tspan></text>
+
+      </g>
+</svg>
diff --git a/tests/suite.c b/tests/suite.c
index 6f93f84..f7fd6d0 100644
--- a/tests/suite.c
+++ b/tests/suite.c
@@ -32,7 +32,8 @@ build_file_list (const char *path, GRegex *filename_regex)
                        if (g_file_test (filename, G_FILE_TEST_IS_DIR))
                                files = g_slist_concat (files, build_file_list (filename, filename_regex));
                        else if (g_file_test (filename, G_FILE_TEST_IS_REGULAR) &&
-                                g_regex_match (filename_regex, filename, 0, NULL)) {
+                                g_regex_match (filename_regex, filename, 0, NULL) &&
+                                !g_key_file_get_boolean (suite_options, entry, "ignore", NULL)) {
                                files = g_slist_prepend (files, g_strdup (filename));
                        }
 
diff --git a/tests/suite.ini b/tests/suite.ini
index cf770c6..0a7fd2a 100644
--- a/tests/suite.ini
+++ b/tests/suite.ini
@@ -5,3 +5,23 @@ ignore-cairo-status=true
 [pservers-grad-17-b.svg]
 # out of memory
 ignore-cairo-status=true
+
+[clipQuality.svg]
+# is-clipping warning
+ignore=true
+
+[clip.svg]
+# is-clipping warning
+ignore=true
+
+[defs.svg]
+# don't render
+ignore=true
+
+[defs2.svg]
+# don't render
+ignore=true
+
+[gradientPoint.svg]
+# out of memory
+ignore-cairo-status=true



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]