Change Log
==========

The following log records some of the most important changes.
Bug fixing is an ongoing task, so it is implied in all sub-releases.

1.17
----

BATIK-1346: Allow configuration of rhino whitelist
BATIK-1347: Switch to empty whitelist for rhino
BATIK-1349: Block loading external resource by default

1.16
----

Java 8 or later is minimum runtime required

BATIK-1338: Block loading jar inside svg
BATIK-1345: Restrict what java classes can be run thru rhino

1.14 -> 1.15
------------

BATIK-1260: Java 11 module error
BATIK-1321: Remove Xerces
BATIK-1299: Batik-all jar has all classes so should not pull other jars also
BATIK-1329: Remove xalan
BATIK-1331: Jar url should be blocked by DefaultExternalResourceSecurity
BATIK-1333: Block external resource before calling fop
BATIK-1335: Jar url should be blocked by DefaultScriptSecurity

1.13 -> 1.14
------------

BATIK-1284: Dont load DTDs in NodePickerPanel
BATIK-1292: Remove console message "About to transcoder source of type: ..."

1.12 -> 1.13
------------

BATIK-1276: Allow blocking of external resources
BATIK-1275: Refactor shared resources.
BATIK-1274: Add .gitignore

1.11 -> 1.12
------------

Java 7 or later is minimum runtime required

BATIK-1203: ImageTagRegistry forgets to reinitialize cache
BATIK-1251: Correct policy file in Squiggle
BATIK-1253: build.sh referenced from build.xml
BATIK-1257: Rasterizer - insufficient permissions when transcoding to PDF
BATIK-1272: Update Xerces to 2.12

1.10 -> 1.11
------------

BATIK-1232: Zip release should use mvn jars
BATIK-1233: Add policy file for batik-rasterizer
BATIK-1234: Tools cannot be run using java -jar xxx.jar when built with Maven
BATIK-1240: Java 11 compile error
BATIK-1249: Fix Java 11 module error

1.9 -> 1.10
-----------

BATIK-906: Should never use Error to report runtime errors
BATIK-1123: Missing import of ImportInfo class
BATIK-1125: Rasterizer fails with base64 embedded png
BATIK-1140: Show line numbers on exception
BATIK-1142: Remove e.printStackTrace for BridgeException in SVGAbstractTranscoder
BATIK-1157: Wrong value for default JPEG quality in documentation
BATIK-1170: Incorrect ColorConvertOp alpha handling breaks masking
BATIK-1196: Run batik tests from junit
BATIK-1197: Make jython and rhino optional
BATIK-1198: TIFF transcoder looks for invalid class name for its WriteAdapter
BATIK-1200: ImagingOpException: Unable to transform src image
BATIK-1204: Remove hashtable
BATIK-1212: Show real error on URL failure
BATIK-1216: Compile error on Java 10
BATIK-1222: Only call DOMImplementation in deserialization

1.8 -> 1.9
----------

- Maven build support
- Java 6 or later is minimum runtime required
- FOP-2489: An SVG file using markers is not rendered by FOP 2.0

1.7 -> 1.8
----------

1. Bugzilla problem reports fixed:

    42408, 43411, 43847, 43950, 44553, 44590, 44919, 44936, 44966,
    45112, 45114, 45117, 45397, 45520, 45883, 45958, 46072, 46124,
    46202, 46227, 46430, 46431, 46513, 46855, 46871, 47201, 47202,
    48182, 48411, 49889, 49968, 50006, 50100, 51908, 42395

2. New features

  * Support for the printNode() script function.
  * Support for the Window and Location interface subsets from
    SVG Tiny 1.2.

3. Improvements

  * DocumentType nodes are now created for XML documents where one was
    supplied in the markup (although only the name, publicId and systemId
    properties of the DocumentType object are filled in).
  * Dynamically created <script> elements inserted into the document are
    now executed (at most once, as with HTML).
  * The location bar in Squiggle is now updated if the requested document
    followed an HTTP redirect.
  * Improve Batik's Rhino class shutter so that it works with Rhino 1.6R7.
  * Allow SVGGenerator2D to embed fonts that weren't obtained from the
    standard AWT font lookup mechanism.
  * ttf2svg no longer outputs hkern elements outside user-provided glyph range.
  * Batik now tries to access content in HTTP error responses (for example, one
    is able to setup custom content for missing - HTTP code 404 - and/or other
    erroneous situations).
  * Internally registers not only font families but also makes font available
    through their font names.
  * All CSS font weights are now handled for font selection
  * Compatibility with GNU Classpath, OpenJDK and other open JVM was improved
    (image I/O is now used by default, over the Sun proprietary classes).

4. Bug fixes

  * Better DOM serialization code.
  * The prompt() script function now returns a proper ECMAScript String
    value instead of an object.
  * Changes to a CDATA section in a <style> element are now detected.
  * Fixed tight bounds calculation for Quadradic Bezier curves.
  * Now uses float for Document Dimensions.
  * Ensure motion animations that are removed from a document don't
    cause an NPE.
  * Animations that become frozen are now not incorrectly deprioritised
    compared to other animations on the same attribute.
  * Avoid canvas repaint problems that occur in some circumstances when
    it is being resized.
  * Exceptions are now thrown if an invalid QName is passed to
    DOMImplementation.createDocumentType().
  * DocumentType.getName() now returns the correct value.
  * Fixed SVGLocatable.farthestViewportElement to return null when
    called on the outermost <svg> element.
  * JavaScript fragments using different types within the one document
    (such as text/javascript and application/ecmascript) now share the
    same script interpreter.
  * Exporting 256 color indexed PNG files in Squiggle now works.
  * Avoid an NPE in ttf2svg when resolving substitutions for Arabic script.
  * ttf2svg now correctly writes out kerning pairs for characters that have
    no name.
  * SVGGraphics2D now serializes font-size values in style="" attributes
    with a unit.
  * Avoid an NPE when disposing a document that had animations targetting
    CSS properties on elements that subsequently became display:none.
  * The startOffset="" attribute on textPath elements now allows negative
    percentages.
  * Correctly handle individual missing <view> attributes by looking at
    the closest ancestor SVG element.
  * Fixed HeadlessExceptions related to WMF transcoding.
  * Font families containing numbers (like "Univers 45 Light") no longer
    cause errors.
  * Compiling on Oracle JDK 7 and JDK 8 now works.
  * On Windows, spaces within environment variables like JAVA_HOME no longer
    cause errors (JDK 6 and above default install location were moved from
    the system drive root to a Java folder inside Program Files).
  * Fixed a manifest issue affecting several Jars which prevented proper
    integration with NetBeans and other third-party IDEs and tools.
  * Several fixes for Rasterizer Task contribution (which was not building
    in Linux nor Cygwin and more).

5. Misc

  * Minimum required Java version was raised to 1.5.


1.7beta1 -> 1.7
---------------

1. Bugzilla problem reports fixed:

    26815, 28344, 35165, 36570, 37496, 38498, 40163, 40727, 41205,
    41820, 41947, 41955, 41988, 42014, 42021, 42032, 42075, 42118,
    42137, 42168, 42169, 42196, 42209, 42210, 42212, 42221, 42228,
    42255, 42258, 42311, 42312, 42333, 42381, 42386, 42479, 42504,
    42505, 42543, 42645, 42651, 42697, 42698, 42807, 42961, 42963,
    442968, 3022, 43043, 43045, 43165, 43194, 43195, 43370, 43418,
    443446, 3638, 43657, 43744, 43760, 43764, 43787, 43854, 43871,
    443904, 3953, 44029, 44054, 44092, 44146

2. New features

  * xml:id support (http://www.w3.org/TR/xml-id/).
  * ElementTraversal support (http://www.w3.org/TR/ElementTraversal/).
  * Enhanced DOM Viewer window, contributed from Ivan Andjelkovic,
    a Google Summer of Code student.

3. Improvements

  * Support for cursor="move" on OS X, and cursor="help" on all
    platforms.
  * Improved conversion to/from WMF.
  * data: URIs now supported as external stylesheets, scripts, filters.
  * SVG 1.1 feature strings now reported.
  * The viewBox="" attribute on <svg> is now animatable.
  * Implemented SVGSVGelement.getViewBox().
  * A document's document element can now be replaced.
  * Performing animation hyperlinking backwards is now supported, as
    well as using <a> elements to hyperlink to animations.
  * Updated pdf-transcoder.jar to one built from FOP 0.94.
  * Squiggle's View Source window is now syntax highlighted.

4. Bug fixes

  * XPath interface objects now exposed to ECMAScript.
  * The three other MIME types for ECMAScript are now really supported
    (text/javascript, application/javascript, application/ecmascript).
  * Pseudo-elements now parsed properly in CSS selectors.
  * Avoid null pointer exception when event-base timing specifiers
    in animations reference an element by ID within a <use> shadow tree.
  * Invalid min="" and max="" values on animation elements now ignored.
  * Corrected CSS cascade order for rules of equal specificity.
  * Fixed CSS :lang() processing so that it matches case insenstiviely,
    using xml:lang="" as well as lang="", and using proper hyphen-
    separated tokens.
  * Gradients with gradientUnits="objectBoundingBox" disabled when the
    bounding box has zero width or height.
  * Avoid an array index exception for certain degenerate motion path
    animations.
  * Fixed mouse event button reporting.
  * Avoid null pointer exception when cloning <symbol> and <image>
    elements.
  * Make empty <filter> elements result in no rendering for the
    filtered element.
  * SVGStylable.getPresentationAttribute() now returns null if the given
    presentation attribute is not specified on the element.
  * Specifying textLength="" on text elements that have non-text nodes
    as their first children now works.
  * Avoid numerical accuracy issues when sampling frozen animations.
  * Event listeners are now removed when <text> elements are removed
    from the document.
  * Invalid SVG 1.0 feature string removed.
  * Ensure animation elements are properly deinitialised when they are
    removed from the document.
  * Allowed animations in <use> element shadow trees to have syncbase
    timing specifiers that refer to elements outside the shadow tree.
  * Fixed bug in DOM event removal/dispatch.
  * Ensure the animation engine is resumed if it is sleeping when a
    beginElement() call is made.
  * Avoid a null pointer exception in JSVGScrollPane if the document
    doesn't return a bounds.
  * Avoid a null pointer exception when painting a GraphicsNode on to an
    SVGGraphics2D.
  * Rasterizer -cssUser command line argument now resolved against
    current working directory.
  * Fixed bug in key event dispatching code.
  * Decrease memory required for storing animation elements' previous
    intervals (used for hyperlinking).
  * Avoid infinite loop for animations with multiple, identical begin
    (or end) instance times.
  * Ensure TIFF and JPEG codecs really aren't compiled unless the relevant
    Sun classes are present.
  * Avoid null pointer exception when accessing animated marker orient
    values.
  * Patched Rhino so that the ECMAScript debugger runs on OS X.
  * Ensure the animation engine is initialised before the SVGLoad event
    is dispatched.
  * Restored exception throwing from bridge classes when required
    length attributes are missing.
  * Duplicated codec classes removed from awt-util jar.
  * Avoid null pointer exceptions in DOMMouseEvent objects.
  * Motion animation transforms are now applied after the transform=""
    attribute.
  * Fixed bug in DOM event default action invocation in SVG 1.2 documents.
  * Fixed bug in CSS class name matching, which occured only when an
    element was declared to be a member of multiple classes, where one
    is a prefix of another.
  * Fixed bug on OS X where the zoom interactor overlay was not shown.

5. Misc

  * Official maven artifacts are now supplied.


1.6 -> 1.7beta1
---------------

1. Bugzilla problem reports fixed:

    22260, 25428, 28337, 29417, 29552, 32415, 34217, 34234, 34364,
    34847, 34938, 35349, 35480, 35549, 35655, 35661, 35683, 35722,
    35727, 35773, 35878, 35976, 35977, 36165, 36253, 36278, 36309,
    36455, 36483, 36485, 36493, 36511, 36613, 36614, 36615, 36743,
    36745, 36746, 36747, 36769, 36889, 36924, 36933, 37276, 37497,
    37890, 37891, 37892, 37986, 37989, 38045, 38158, 38176, 38178,
    38183, 38379, 38475, 38497, 38549, 38558, 38568, 38750, 38775,
    38782, 38785, 38831, 38872, 38930, 38932, 38933, 38990, 39032,
    39058, 39202, 39297, 39303, 39318, 39361, 39751, 39755, 39784,
    39831, 39838, 40098, 40167, 40336, 40368, 40392, 40393, 40397,
    40403, 40405, 40594, 40605, 40631, 40681, 40686, 40857, 40898,
    40927, 40994, 41079, 41165, 41216, 41234, 41288, 41329, 41331,
    41336, 41473, 43954

2. New features

  * DOM Level 3 Core/Events/XPath support.
  * Improved WMF transcoder support.
  * Override style declaration support.
  * Near complete SMIL Animation support.
  * SVG 1.2 features:
      * resource documents
      * shapechange and RenderedBBoxChange events
      * SVGGlobal startMouseCapture/stopMouseCapture methods
      * handler elements

3. Improvements

  * The SVG namespace declaration is now not assumed for the document element
    when an SVG declaration is not present.  Certain non-conformant content
    will now be identified as being in error.
  * New MacRenderer implementation that avoids 10x slowdown on
    Tiger.
  * Mutations to flowText contents now cause the rendering to update, and
    flowRegion objects are now rendered.
  * Support for normalized path segments on SVGAnimatedPathData, thanks to
    Andres Toussaint.
  * Updated pdf-transcoder.jar to one built from FOP 0.9alpha1:
      * This fixes text being drawn as text in PDF.
      * JPEG streams being embedded as JPEG.
      * Default bitmap dpi is 300.
      * Most gradients and patterns are now correct (pattern overflow isn't
        handled properly although most of the code is present), and
        gradients with complex repeats are rasterized due to difficulties
        expressing them in PDF.
  * Transcoders with the KEY_EXECUTE_ONLOAD hint set force the document
    to be dynamic.
  * Added JIIO codecs to Batik (not enabled by default)
  * Support for finding XML Parser through JAXP.
  * Enhancements to ArabicTextHandler.
  * Update Manager's MIN_REPAINT time is now adjustable.
  * GraphicsUtil warning about Graphics from BufferedImage
    w/o BUFFERED_IMAGE hint is now controllable with property.
  * JSVGScrollPane now has 'scrollbarAlwaysVisible' mode.
  * Improved Path parser so it is more conformant.
  * Updated Rhino to 1.6R5.
  * Documents in Squiggle's Go menu now have the full URI as a tooltip.
  * Better version number reporting from org.apache.batik.Version.
  * Implemented SVGPathElement.getPathSegAtLength.
  * Implemented 'getFunctionName' for built in CSS functions.
  * Exposed SAXDocumentFactory's parser to subclasses.
  * Added a -snapshotTime option to the rasteriser.
  * Now using Apache XML Commons External, for SAC, DOM 3 Core, SMIL Animation
    and SVG 1.1 DOM bindings.
  * Encoding as specified in a Content-Type header's charset parameter is now
    honoured when scripts are loaded.
  * Changed InterpreterFactory so that multiple MIME types can be associated
    with a given Interpreter.
  * text/javascript, text/ecmascript, application/javascript and
    application/ecmascript are now all supported as script types for Rhino.
    Processing of application/ecmascript is as specified in RFC 4329.
  * Improved integration when running under Mac OS X: Squiggle's menu bar
    is now at the top of the screen, the application window has a proper
    name and functional About/Preferences/Quit menu items, and a Squiggle.app
    application bundle can now be created.
  * JAR files now have Implementation-* attributes.
  * Added an interface for all ImageRenderers to get/set RenderingHints.

3. Bug fixes

  * SVGMatrix.rotate now takes deg rather than radians.
  * Fixed mouseout/mouseover tracking, which regressed some time between
    1.5beta5 and 1.6.
  * Fixed misplaced glyph for mixed LTR and RTL text.
  * Fixed handling of tooltips from title elements.
  * Fixed rendering error (bug 36511).
  * Fix for broken event propagation across 'use' element shadow tree boundary.
  * Fixed a bug in the handling of 'x', 'y', 'width', 'height',
    on feImage elements.
  * Fixed bug in EventTarget.{add,remove}EventListenerNS wrapper
    for Rhino.
  * Fixed memory leak with dynamically added title tooltips.
  * Fixed bug with update regions and filters.
  * Fixed a problem with feSpotLight and feSpecular lighting (bug 36745).
  * Fixed bug with event removal for multiple events and the same target
    (thanks Andreas).
  * Fixed problem with lowercase 'European' vowels (accented vowels).
  * Fixed duplicated fragment identifier bug.
  * Fix to allow transcoders that execute onload to work with SVG 1.2
    documents.
  * Fix incorrect reporting of modifier key states in DOM UI event objects.
  * The broken link image works again now.
  * Convert "" to null for namespace URIs given to public DOM interfaces.
  * Gradient scaleback is now 0.999 rather than 0.97.
  * ttf2svg now emits a document with an SVG namespace declaration.
  * Include the o.a.b.ext.awt.image.spi.{ImageWriter,RegistryEntry} service
    resource files in the codec jar.  (Fixes problems with data: URIs for
    images when Squiggle is run from the jars.)
  * Fixed problem with ZoomAndPan handling overriding user disabling of
    interactors.
  * More sensible handling of source 'URLs' in svgrasterizer.
  * Greyscale sources are now treated as if they have sRGB Gamma.
  * Fixed SVGTextContentElement.getExtentOfChar to use glyph metrics rather
    than the glyph shape bounding box.
  * Changed Errors to UnsupportedOperationExceptions for unimplemented methods.
  * JSVGViewerFrame uses reflection for the Rhino debugger to enable
    compilation without Rhino.
  * Fixed phantom 'double click' bug.
  * Handle 'style' elements added and removed from the document when they are
    not at the root of the addition/removal.
  * Make CSS engine not throw an NPE for extension elements that don't expose
    an OverrideStyleProvider.
  * Fixes for text-on-a-path with glyphs who's geometry doesn't "start" at 0.
  * Various deadlock fixes.
  * Fixed bug where writing TIFF with JPEG compression fails.
  * Fixed significant performance bug in creating geometry (it was
    parsing the entire path for each entry in the path, O(N^2)).
  * Fixed SVGTextContent interfaces on FlowRoot elements.
  * Fixed NPE when reloading an SVG 1.2 document quickly.
  * Fixed bug where mousing over 'a' elements would result in exceptions.
  * Avoid NPEs when loading scripts from file: URIs.
  * Fixed flowText regression by rebasing off SVGOMTextPositioningElement.
  * radialGradient has a default value of "50%" for 'r' (thanks Tonny).
  * Fixed bug in key event dispatching when compiled under JDK 1.3.
  * Avoid precision errors in stringification of transform list values
    (thanks Nick).
  * Unmaximize Squiggle window if the "Automatically resize window when
    loading documents" option is turned on.
  * Fixed improper rendering of the batik70.svg sample under OS X.
  * Fixed synchronization bug in the SVG generator.

4. Misc

  * Code now compiles under Java 1.5 and 1.6.
  * Lots of code/javadoc cleanups.
  * New Forrest-based website for Batik.
  * New about box/splash screen.
  * Visual refresh for Squiggle's toolbar icons and Preferences window.


1.5.1 -> 1.6
------------

1. Bugzilla problem reports fixed:

         28035, 28188, 28429, 28432, 28487, 29110, 29891, 30580, 30584,
         30739, 30923, 30925, 30948, 31603, 32108, 32435, 32872, 32951,
         33242, 33733, 33890, 33923, 33986, 34030, 34041, 34115

2. SVG 1.2 Features:

 * All SVG 1.2 elements/features have been moved from
   the Batik namespace into the SVG 1.2 namespace (except for
   flowText which remains, due to some loss of functionality
   with the current flowRoot and potential spec instability).
 * Implementation of SVG 1.2 flowRoot element (text flow into
   arbitrary regions with bidi support).
 * There is now an SVG12CSSEngine which has support for new
   properties in SVG 1.2

3. Improvements:

 * Massive performance improvement (>10X) for drawing on Mac OS X.
 * Document.getElementById now uses a Hashtable to speedup lookups.
 * JavaScript can now be used in an Applet out of the box.
 * Added support for 'font' shorthand property.
 * Added support for 'deselectAll' SVG DOM call.
 * getEncolsureList and getIntersectionList are implemented.
 * Added support for get[Screen]PixelUnitToMillimeterX/Y
 * SVG DOM getTotalLength, and getPointAtLength are now implemented.
 * Support for preserveAspectRatio DOM methods.
 * Squiggle browser now has a 'Save As' menu item.
   * Can toggle if xml:base should be added to saved SVG.
   * Can 'pretty print' saved XML for readability.
 * ExtensibleSVGDOMImplementation no longer exists,
   the SVGDOMImplementation is now extensible.  There is a
   new baseclass ExtensibleDOMImplementation that provides
   extension capabilities to any DOMImplementation subclass.
   As a result the name of the services meta-file has moved to:
    'org.apache.batik.dom.DomExtension'
   from:
    'org.apache.batik.dom.svg.DomExtension'.
   People with DOM extension will have to update the service file
   accordingly.
 * ExtensibleDOMImplementation now allows 'extension' elements in
   the SVG Namespace (they are always lower priority than 'buit ins').
 * When a new Document is loaded a new BridgeContext is created for it.
   As a result each document now get's it's own CSS engine.
 * ttf2svg now supports 'auto ranging' so it looks at the font
   to decide what to output.
 * DOM will now detect when the child passed to insert/remove
 * AbstractParentNode will now throw a DOM Hierarchy exception
   if you try to append a node as a child of it's self (PR 34030)
 * Anti-aliased clips (hqClip patch).  This can be disabled by setting
   the transcoding hint to vector or print (so content doesn't get
   rasterized). PR 29110.
 * Control of tiled image rendering based on rendering hint.
   Using this hint may greatly increase the amount of memory used.
 * The Marker interface now has a 'getCharIndex()' method to
   get the index of the character the Mark is associated with.
   node is not the child of the node insert/remove is called on.
 * DrawImage now defaults color model to sRGB_Unpre if the destination
   doesn't include alpha.
 * The pattern element now shares one rendering tree across all
   references.
 * Some improvements for Kerning in SVG Font (faster)
 * Arabic diacritics are now positioned relative to the right edge
   of the base glyph. Bug 28429
 * Basic DocumentType implementation, if present DOMUtilities will
   now emit a proper doctype specification
 * GVT Tree walker can now be given any node in the GVT tree and it
   walk just that subtree.
 * Many places now use getResource as Stream instead of Resource
   bundles where localization is not wanted/needed.
 * Tweaked UpdateManager repaint scheduling alg.
   It now tracks when the rendering goes 'out of date'
   with the document and runs runnables until it is out of
   them or MIN_REPAINT_TIME is exceeded.
 * Arc2D now translated to path with elliptical arc commands
   in SVGGraphics2D interface.
 * JSVGScrollPane now uses bbox of geometry if no viewBox is provided.
 * Refactored the text and flow bridges so make things cleaner.
 * Implemented textLength to return the value of
   getComputedTextLength when the textLength attribute is not
   set.
 * Potentially large optimization in BBox generation
 * The DOM tree viewer now has an option to hide text nodes that
   only contain whitespace.
 * The DOM tree viewer now includes the id of an element in the
   tree view if it has one.
 * Improvements to empty bounds handling, should decrease update areas.
 * GVT Render requests are now compressed.  This helps when doing
   live resize of large documents.
 * Some refactoring/restructuring of svggen.XmlWriter to potentially
   make it a pretty printing DOM serializer.
 * Latest pdf-transcoder from FOP which supports '-dpi' switch.
 * ScrollPane now should do a better job of fitting document w/o
   scrollbars
 * title and desc changes are now dynamically tracked.
 * ScriptFactorys now loaded via Services interface.
 * Made the JDK image loading Mediatracker static
   (so others could use it easier).
 * ParsedURL now uses the current Batik version as it's default
   UserAgent
 * Rationalized Text Selection code.  Copy to clipboard is now done
   by JGVTComponent only if 'unix style' text selection is requested
   (default).

4. Bug Fixes:

 * Fixed all known memory leaks with loading images.
 * Changing documents in JSVGScrollPane now works properly.
 * Fixed a small memory leak when changing xlink:href on a
   use referencing a local element.
 * No longer uses Thread.interrupt.  On some JVM's this can confuse the
   class loader.
 * Adding elements in the 'null' namespace nolonger causes a NPE exception.
 * Fixed colorspace error in ColorMatrixRed.
 * Line element no longer has a fill associated with it.
 * Fixed bug #29416 - problem with empty quotes in CSS.
 * Fixed bug #34210 - element selectors are now case sensitive
 * Index out of bounds error fixed in linear gradient.
 * AOI problem in PrintTranscoder now fixed.
 * Null Pointer exception when PrintingTranscoding documents
   using SVG fonts is fixed (the BridgeContext was being
   disposed of too early).
 * PrintTranscoder now uses UserAgent to report exceptions
   rather than silently swallowing them.
 * Fixed some minor bugs in the GlyphLayout code for flow regions.
 * Very minor tweaks in JSVGScrollPane.
 * Applied patch 28188, fixed tooltip text & title text, thanks Glen
 * Applied patch 28487, fixed enabled/disabled state for
   toolbar buttons, thanks Glen
 * Fixed bug in text selection (programatically selected text wouldn't
   clear properly.
 * Fixed bug 23035 - Xlink attributes initialized with wrong values.
 * Fixed Bug 28785 - 'a' element not clickable with namespace prefix.
 * Bug 30584 - Concurrent Modification believed fixed (couldn't get
               test case to fail after fix).
 * Bug 29891 - Rasterizer problem if w/h == viewBox w/h
 * No more 'flicker' when panning a dynamic document.
 * CmapFormat4 now clips charCode 0->65534.
 * All Object.wait calls are now in while loops to prevent spurious wakeups.
 * DOM keypress events will now be generated for so called
   Java 'action' keyEvents (previously only keydown/up were
   generated).
 * Fixed a bug in the PNG Encoder for some 1,2 or 4 bit/pixel images.
 * Fixed bug in PackBits TIFF files with multiple IFD's
 * The 'debug' messages are now synced with GUI messages.  Also they
   are localizable.
 * Tweaked the way we generate paths to avoid a bug
   in the Mac OS X Java implemention where a close
   followed by a moveto didn't join the path properly.
 * Fixed width/height change onload bug in transcoders submitted
   by Simon Mieth.  Thanks!
 * Fixed a bug with CSS shorthand properties not being set by presentation
   attributes.
 * DOMImplementations now return empty documents if
   qualifiedName in createDocument is null (PR 32108)
 * Fixed 'flashing' with JSVGScrollPane.
 * Fixed PR: 30923.  Text children now respect display and
   visibility properties (including dynamic changes).
 * Fixed visibility update bug reported by George Armhold.
 * Fixed visibility bug on image elements.
 * getBBox should now work per the specification.
   a) fill="none" will still give bbox
   b) It is now the tight bounds of the geometry
   c) It does not include the stroke anymore.
   d) When called on 'undisplayed' elements returns null (not sure
      what the spec really says about this).
 * Modification of use element's width/height now works.
 * Fixed potential interrupted bug in the RunnableQueue class.
 * The document loader cache now uses soft references to avoid
   being a memory leak.
 * Improved the xml:space support.
 * textPath no longer supports 'position attributes' on it's self
 * textPath now supports progression position attributes provided
   by parent/child tspan/text nodes.
 * systemLanguage, requiredFeatures, requiredExtensions now all fail
   to match when given an empty string (as specified by the SVG
   specification). Bug #33242 (thanks Rick Graham).
 * Fixed potential synchronization issues in JavaScript intervals.
 * Small optimization in Event dispatch.
 * Removed debug print from SVGOMAnimatedPreserveAspectRatio.java
 * Synchronization fix in SoftReferenceCache.
 * SAXParser now includes 'ignorableWhitespace' when building the
   DOM tree.  I also tweaked the way text and CDATA sections are
   created.
 * UpdateManager is now always the 'source' of UpdateManagerEvents
   previously in some cases it was an inner class.
 * Fix for masks when using Alpha Premultiplied (Mac OS X).
 * Improved consistency of events from the RunnableQueue.
   Calling suspend/resumeExecution should now always generate
   a runHandler event (although the events may be "compressed"
   so suspend/resume may only generate one resume event).
 * Fixed bug in handling kerning elements with multiple glyph entries
   in g/u 1or2.
 * Removed use of 'getTagName' to use 'getLocalName' to avoid issues with
   prefixed svg elements.
 * Fixed a mistake in the generation of SVG fonts that include
   arabic forms (PR 33733)
 * Fixed handling of complex paint types (base types with
   fallbacks).
 * Fixed CSS SVG DOM interfaces for complex paint types
   (see bug 33923).  Added new test for same.
 * Text Selection events are now generated even when the
   done event is not over a graphics node.
 * The double '#' bug is gone in the SVG Pretty Printer. PR 33890
 * The worst of the 'extra spaces' problem with the pretty printer
   is solved.
 * Fixed updates to SVG Font based text (PR 34041)
 * Bug fix in NumberParser (thanks dvholten)
 * Fixed bug 34115 - CSSStyleDecl doesn't collapse properties.
 * JSVGCanvas no longer holds cached viewBox so it responds
   properly when viewBox is updated in SVG content.

5. Misc:

  Documentation updates
  JavaDoc will now reference W3 and JDK docs
  Updated MAINTAIN file
  Splash/startup screen now embed font (a little simpler SVG as well).
  Some Rhino improvements.
  New Tests for bugs.

  Thanks to everyone on batik-dev/users for reporting problems and
  working on finding solutions.


1.5 -> 1.5.1
------------
1. Security:

   A script security issue was reported in the Batik Squiggle
   browser. Squiggle uses the Rhino scripting engine and some features
   of that engine can be leveraged by malicious scripts to gain access
   to otherwise protected resources (like the file system).

   The Batik team has worked with the Rhino team to fix the isssue
   that was reported and the Batik 1.5.1 patch release addresses the
   issue.

2. Features:

   Rhino JavaScript Debugger now integrated with Squiggle.
   Better line numbers in error messages.
   Zachary DelProposto's Scroll pane class is added.  Allows for
      scrollbars on SVG documents.
   Cool solitaire examples in SVG.

3. Performance fixes:

   Parents who have children added/removed no longer invalidate
      their entire area.
   When a element is removed or CSS properties changed all next
      siblings are not repainted unless CSS rules change them.
   First event dispatch is much quicker than the past.
   Switched to Xerces 2.5.0 to improve performance of data protocol.
   Changes to paint properties on text is now _much_ faster.
   When using many objects from an external file the file will only
     be loaded/parsed once.
   Modifying x/y and some viewBox changes on SVG elements is now much
     faster.
   Better JPEG embedding in PDF.

4. Conformance:
   Batik now passes all non SMIL-Animation tests from the SVG Working
     Group beSuite.

   @font-face CSS property and font-face elements are now compliant
     with SVG specification.

   Changes to the 'class' attribute now update rendering tree
     correctly.

   selectSubString now implemented.

   Dynamic modification of display, and marker properties supported.
   SVG 'a' element respects 'preventDefault' on event object.
   Pattern element no longer applies object bounding box transform
      if viewBox is specified.

5. Bugs:

   Fullscreen mode (F11) works again.
   getExtentOfChar() returns bbox in text elements coordinate system.
   SVGPoint now supports matrixTransform in more cases
   clientX/Y now correct when target is a text element.
   Bugfix in parsing some TrueType fonts fixed.
   Now applies the 'all' media type to all content.
   Image transcoders default to 400x400 rather than issuing an error
     (consistent with viewer).
   The properties opacity/filter/masking/pointer-events now work
      on SVG elements.
   Clearing text selection now works
   Zero width/height image elements now work properly.
   BBox info is correct for zero width/height items.
   Fills/strokes text when text-rendering is set to geometricPrecision
      rather than using drawGlyphVector.
   getCssText() returns the relative version of URI's
   SVG Graphics2D outputs correct rendering hints for text.
   TextNodes returns the correct bounds.
   Proper text child set as 'target' of events.
   Events handled correctly for documents that reference the same
      image multiple times.
   Image are displayed as 'broken links' instead of being an error.
   FeColorMatrix now respects color-interpolation-filters property.
   elem.style.setProperty now works for shorthand properties.
   Fixed race condition in JSVGComponent.set[SVG]Document.
   Fixed several memory leaks dealing with use element.
   Glyph element's 'd' attribute uses inherited winding-rule.
   SVG 'style' element no longer generates multiple 'xml:space' attrs.
   SAXDocumentFactory now generates only one CData node for each
     CData section in source document.
   Memory leak with addEventListener and objects that ref event target fixed.
   Click events now allow a small amount of 'slop'.
   Fixed bug in rendering with Double Buffering.
   Clicking on the Canvas no longer clears the system clipboard.
   No longer recascades elements in use tree from foreign documents
   Now supports CSS properties with the max negative 32bit int value
   Now supports more JPEG image types.
   No longer throws a Class Cast exception when using named colors
     as the fallback for icc-colors
   clearTimeout, clearInterval no longer throw exceptions for null
     objects.
   clipPath now respects clip-rule when using 'use' element.

  Bug PRs: 12536, 23030, 23038, 23079, 23177, 24919, 25251, 25463


1.5beta5 -> 1.5
---------------

1. Features:

       - With JDK 1.4 text-rendering="optimizeSpeed" will render
         non-anti-aliased hinted text (for axially aligned text).

       - The pointer-events property is now handled correctly for elements
         without fill or stroke paint.

       - Improved stroke accuracy when shape-rendering="geometricPrecision"

       - JSVGComponent.setSVGDocument with 'null' now releases all
         heavy resources and makes the Canvas display only Background.

       - Many memory leaks fixed.

       - Transcoders and JSVGComponent will now accept any Document
         and convert to a Batik SVG Document if needed.

       - Script interpreters are loaded lazily.  This means that unless you
         use them (by having event attributes or script elements) you
         don't need any script engines.

   Performance Improvements:

       - Image drawing is now 5-10x faster, for most raster images.

       - Significant performance improvement for patterns that are
         filtered or have filters applied to them (take Batik70 for
         example).

       - AbstractParentNode insertNode, removeNode, replaceNode are
         now much faster for Parents with many children.


   Library changes:

       - Updated to the Rhino 1.5R41 library

   Others:

       - Added control of floating point precision used in SVGGraphics2D
         (see the org.apache.batik.svggen.SVGGeneratorContext class)

       - Batik now almost never opens image URL's twice.

       - JSVGComponent/BridgeContext now has three levels of interactivity.
         STATIC, INTERACTIVE, DYNAMIC.  With increasing memory overhead
         and build time requirements.

       - Improved test environment with automated memory leak, performance,
         threading and interactivity tests. There are now over 1000 tests
         in the regard regression test suite.

       - Window.parseXML now returns a Document when no 'host'
         Document provided.

2. Bugs:

       See: http://nagoya.apache.org/bugzilla for details on each bug.

       - 6526 pointer-events does not work for fill="none" stroke="none"
       - 6683 JSVGCanvas - Problem adding to JScrollPane
       - 6951 see samples/tests/spec/paints/linearGradientLine.svg
       - 8854 Fix feImage implementation according to latest SVG 1.0/1.1 c
       - 9981 Improve Documentation on Scripting with Java
       - 9994 text-decoration:underline is incorrect with tspan elements.
       - 12013 Squiggle renders jagged curves/paths 12079 transcoder.wmf
       - 13870 Language Code errors
       - 14011 problem using rasterizer with the headless option
       - 14673 not-so-pretty text rendering
       - 14788 TranscoderInput(XMLReader reader) does not seem to be implem
       - 14789 TranscoderInput(Document document) is incorrect
       - 15348 SVGGraphics2D should not export scientific notation on CSS p
       - 17168 SVGGraphics2D has package level protected on DOMGroupManager
       - 17863 API to get Version info
       - 17965 SVGGraphics2D adds 'font-size' attribute to 'line' and 'circ
       - 18143 Removing attribute using Element.removeAttributeNode doesn't
       - 18566 JSVGComponent packs its parent window
       - 18640 Problem with setSVGDocument
       - 18840 A few issues with the Batik source
       - 18841 Problems with imports in Batik source
       - 19017 error when attempting SVG to PDF conversion
       - 19363 zero width on rect element causes error
       - 19392 Bug in "org.apache.batik.dom.util.DOMUtilities.java"
       - 19865 Exception rendering linked PNG file.
       - 20147 JSVGCanvas doesn't function with JInternalFrame
       - 20201 incorrect gAMA chunk for sRGB
       - 20331 bug on batik SVG DOM implementation on the SVGPathSegArcAbs
       - 20332 bug on batik SVG DOM implementation on the SVGPathSegCurveto
       - 20811 A rect disabled because of zero width or height doesn't get
       - 21125 XML comment cause css parser to abort parsing
       - 21259 Drawing on an SVGGraphics2D and then using JPEGTranscoder pr
       - 21352 XML comments inside script elements treated as script code
       - 21358 Dynamic Update of content referenced by a <use> does not wor
       - 21361 Bug on SVGPaint implementation
       - 21362 Bug on CSSStyleDeclaration on URI reference
       - 21374 Implement conformant Java Handler code
       -       Viewer now properly displays w/h x/y locations in
               'viewbox' coordinates.
       -       Fixed dirty regions for nodes that change size then
               position in the rendering tree (where the new position
               has a different rendering transform).
       -       Fixed handling Fragment URL's with colon's in them.
       -       Batik no longer considers all @font-face rules a syntax error.
               Batik now just ignores them.
       -       Fixed use elements in Documents with no base url.
       -       Runs of RTL Text now work with JDK 1.4.
               Nested embed and bidi-override properties should now work.
       -       Fixed bug setting viewBox on outermost SVG element as
               described in:
       http://koala.ilog.fr/batik/mlists/batik-users/archives/msg03513.html
       -       JSVGComponent/Canvas now repaints when it changes size
               (even when no viewBox).
       -       Modifying zero W/H rect, circle, ellipse now works properly.
       -       Fixed the handling of kerning attribute.
       -       JSVGComponent.setSVGDocument with a Document that has been
               previously viewed in the Canvas now works
       -       'style' and 'script' elements no longer include the contents
               of XML Comments (unless inside a CDATA block).
       -       Fixed a with absolute x/y attributes in non-text
               progression direction.
       -       Fixed JSVGComponent when it's working threads are
               interrupted.
       -       RhinoInterpreter once again binds the Global Object
               as 'window'


3. Extensions:

       - Updated multiImage element to match WD.


4. Documentation:

       - Updated the FAQ with frequent questions on UpdateManager, DOM
         updates and visual updates.

       - Updated the implementation status page and the home page.


1.5beta4b -> 1.5beta5
---------------------

1. Features:

   Library changes:

       - Xerces 2.3 is now the default parser. The parser can still be controlled
         through the org.apache.batik.util.XMLResourceDescriptor class.

         ** NOTE **

         While the general performance of the Xerces 2.3 parser seems equivalent
         to those of the Crimson parser used previously, there is a notable exception
         in the handling of long attributes. This makes a very visible difference
         for SVG content that uses embeded images through the 'data:' protocol which
         can be extremely slow with Xerces 2.3. The bookOfKells.svgz example, which
         used the data: protocol for rather long images has been removed from the
         distribution as it does not load in a reasonable amount of time when using
         Xerces.

       - Rhino version has been updated from 1.5R3 to 1.5R4 allowing to fix
         BR #11968 (DOM access functions should return ECMAScript strings).

       - Removed SAX and DOM sources from the Batik project. Now use xml-apis.jar
         from xml-commons.

   Others:

       - currentScale/Translate now implemented (get and set).

       - Implemented getScreenCTM, fixed getCTM (SVGLocatable)

       - onzoom, onscroll, onresize events are now implemented.

       - Integrated pdf-transcoder from FOP.

       - Ctrl-K/L work in fullscreen mode.

       - initial support for SVGList ( provided for SVGPointList in
         <polygon> and <polyline>, SVGPathSegList in <path>, SVGLengthList
         in textual elements, SVGTransformList in graphical elements )

       - RFE #12735 : added support for dynamic modifications of 'xlink:href' in image element

       - Now skips reading the SVG DTD unless validation
         is turned on (improves load times for small docs).

       - glyph-orientation-horizontal now works.

       - linearGradient's can now be anti-aliased (radial gradient
         anti-aliasing also improved).

       - PNG Transcoder can now produce 1,2,4 & 8 bit indexed PNG's.

       - rasterizer can now be used in headless mode (JDK 1.4)

       - JPEG files now have X/YDensity set according to -dpi option.

       - Batik Docs now include a dependency graph for the jar files.

       - In ECMAScript, add the ability to pass an Object instead of a
         Function to the Window.getURL() method in which case the
         operationComplete method is called once the URL is retrieved.

       - SVGUserAgent now controls the default font-family

       - Added max-width and max-height support in the rasterizer infrastructure
         (contribution by Henri Ruini, Henri.Ruini@nokia.com)

       - Improvements to the WMFTranscoder by Luan O'Caroll

       - Added better error reporting for external scripts: errors now include the uri
         of the external scripts in addition to the line number which is convenient
         when an SVG file references multiple external scripts.

       - Modified the way SVG public identifiers are mapped to system identifiers.
         The resource file now contains the mapping to the correct SVG DTD instead
         of only containing the allowed SVG 1.0 system identifiers for a hard
         coded DTD.

       - Added support for cursors.

Bug Fixes:

       - clientX/Y values in MouseEvents are now returned in screen
         pixels (it had been the viewBox coordinate system which was
         convenient but wrong and problematic for some cases).

       - Changed default extension for TIFF files to '.tif' from '.tiff'.

       - Fixed bugs in screen updating when the size/location of the
         root graphics node changed, and when transform on group
         changes after bounds on a child.

       - ToolTips no longer 'hang around' under JDK 1.4.1

       - The JSVGCanvas no longer steals focus and pops forward whenever
         the cursor passes over the canvas.

       - The JSVGCanvas will no longer thrown an exception if an SVG
         document is set prior to the component's size being set.

       - Text anchor for vertical text.

       - For corrupt/incomplete JPEG images now shows what it can.

       - Fixed bug with Indexed PNG's that have a bKGD chunk.

       - getRelatedTarget fixed for mouseout event.

       - glyph-orientation-horizontal/vertical no longer require a unit
         as per the SVG specification.

       - Fixes for 'jar' protocol.

       - Fixed compressed Tiff writing.

       - Missing Glyph's are now rendered correctly.

       - Text selection now works better with altGlyphs.

       - PrintTranscoder no longer scales 'real world' units wrong.

       - Fixed a bug involving the 'use' element with a width/height in
         an SVGFont referenced from external documents.

       - Collaboration with Philipe Converset (Qarbon) on an extension to define
         margins in filter regions. This is now supported in the Batik namespace.

2. Bugs:

        12389  Focus issue in Squiggle's URL text field
        12121  Cursor in URL field disappears
        12168  MarkerShapePainter delivers wrong PaintedArea
        12239  [PATCH] Moved some method local variables into class
        12954  add support for stroke-width:0
        15162  PNGTranscoder gives error message about TIFF transcoder
        17167  stroke-dashoffset does not support negative length
        13713  <use> element fails when using percentage values x/y coords
        17183  baseline-shift doesn't refer to parent "line-height"
        15063  Version-dependent code in package org.apache.batik.gvt.font
        12736  Allow non-element nodes to be added to g and svg elements.

       - Added Units resolutions to CSS rects

       - 'd' and 'points' can now be empty on <path>, <polygon> and
         <polylines>

       - Now support the transform attribute on the <switch> element

       - Fixed class loader delegation bug in RhinoClassLoader

       - Patch from Keiron Liddle fixing PNGTranscoder KEY_INDEXED hint type
         issue (was Boolean instead of Integer)

3. Extensions:

       - Binary distributions now include jar files that can display
         extensions.

       - The multImage element can now reference SVG images as well
          as raster images.

       - flowText now supports vertical-align.

       - flowText now uses 'flowRegion' and 'rect' to describe flow
         areas.

4. Documentation:

       - Status of Batik implementation of SVG DOM.

       - Diagram showing the various Batik jar files and their relationships.


1.5beta4 -> 1.5beta4b
---------------------

This is a patch release fixing a bug on linking.


1.5beta3 -> 1.5beta4
--------------------

1. Features

  - Squiggle Browser:

       - the F11 key lets users enter the full screen mode or exit the
         full screen mode if they are already in that mode.

       - the Browser can now handle XML files which contain a stylesheet
         declaration referencing an XSL transformation. If that transformation
         generates an SVG document, Squiggle will display it.

         By default, this feature is disabled because it requires that
         the user either uses the JDK 1.4 (or greater) version (which at
         this time is not a requirement for Batik) or that an XSL transformation
         engine (such as Xalan) be in the classpath.

         To enable the feature, uncomment the following line (i.e., remove the '#'):

         #org.apache.batik.apps.svgbrowser.XMLInputHandler

         in the:

         resources/META-INF/services/org.apache.batik.apps.svgbrowser.SquiggleInputHandler

         file.

  - Scripting:

       - Added the ability to use an ECMAScript object providing an handleEvent
         method for the listener argument of the addEventListener method on DOM objects
         (previously only ECMAScript functions were accepted as parameter). [RFE9149]

2. Bug Fixes

  - Images - bounds/hints now updated correctly when changed via script
  - Local refs now work with null Document URL.
  - Double buffered rendering now updates correctly on Mac OS X.
  - ParseXML no longer assumes doc is SVG.
  - Squiggle can now do Http authentication.
  - SVG Font bounds fix
  - Text layout fix (anchor and textLength)
  - Adding/Removing children no longer invalidates entire parent region.
  - handling of position attributes (x,y,dx,dy,rotate) on emtpy tspans has been fixed.
  - Fixed improper handling on <altGlyphItem>
  - Removed unnecessary font matching with <altGlyph> which can be found
  - 'stroke-dasharray' now works with units,
  - fixed bugs (CSS !important rules, DOM replaceChild on the root element,
    SVG paint parsing, CSS percentages).


1.5beta2 -> 1.5beta3
--------------------

1. Features:

  - Squiggle Browser:

       - now keeps a history of recently visited URIs

       - offers more control over the security features

  - Enhanced Security Support:

       - downloading of all external resources can now be
         controlled through the UserAgent. This includes
         scripting (as before) but also <image>, <use>, and
         all elements which may reference external resources
         (over 15).

       - users security policy now takes precedence over the
         application policy. Users can set the java.security.policy
         system property when starting a Batik application and it
         will take precedence.

  - Interactivity and Scripting Support Improvements:

       - filter, mask, gradients, clip, pattern and marker are now
         updated when the geometry of the referencing graphical
         element is dynamically changed.

       - implementation of keyboard events (KeyEvents from DOM Level 2
         Working Draft). In the near future, the batik team will
         implement the TextEvents from the DOM Level 3 Events module.

       - Newly supported elements (can now be modified by scripts):
         <svg>, <image> and <text> element children (such as <tspan>);

      - Support for addition/removal/modification of stylesheets

  - Misc:

       - external scripts can now be gzipped.

       - added getPixelUnitToMillimeter to UserAgent classes
         NOTE: the getPixelToMM and getPixelToMillimeter methods will be
               removed after 1.5b3 is released!

       - Improvements in the support for the <flowText> extension

      - Added support for attribute/id/adjacent selector and :first-child
        dynamic updates,

2. Bug Fixing:

  - #1075, #4834, #5233, #5347, #5806, #6642, #6683, #7053,#8330, #9740,
    #9058, #9067, #9304, #9429, #9520, #9779, #9804, #9272, #9276,
  - bug in feColorMatrix
  - DOM: getElementByTagName, invalidateElementsByTagName, cloneNode(false)
  - mouseout bug on <tspan> fixed
  - File->Open dialog bug on JDK 1.4 fixed.
  - Memory leak fixes
  - ttf2svg now emits kern elements with the proper sign
  - MultiImage now respects xml:base
  - Fixed mouse location bug

3. Documentation Update:

  - Many additional links have been added to the Batik documentation
    as well as improvements in its structure and content, thanks to
    the work of Robert Di Blasi.


1.5beta1 -> 1.5beta2
--------------------

** Note on the new security support **

- Scripts are now run in a sand-box by default for the Batik sample
  applications (the Squiggle SVG Browser and the Rasterizer). Users of
  the SVG toolkit who what to run scripts securely need to add
  security support in their application and may use the work done for
  Squiggle as an example
  (e.g., see the org.apache.batik.util.ApplicationSecurityEnforcer class).

- There is a known limitiation: scripts loaded from a 'file:' url
  cannot access (i.e., load files) under the same root. This is not
  true for scripts loaded from a server (e.g., 'http:' urls).

1. Features:

  - Scripting support for styling properties:

      - Most of the CSS properties and style attributes can now
        be changed dynad:/work/dev/svg/apache/builds/batik-1.5beta3/mically. See:
        http://xml.apache.org/batik/supportedProperties.html

      - Added support for style and class attributes dynamic updates

  - DOM support:

      - Implementation of SVGLocatable including SVGMatrix

      - All class members of type: SVGLength now works on most of the
        graphical elements (rect.x.baseVal.value)

      - Implementation of CSS DOM (getStyle, getComputedStyle...)

  - Events/Interactivity:
     - DOMFocusIn, DOMFocusOut and DOMActivate event types are not supported

  - Security:

     - Secure scripting is now in place. Scripts in ECMAScript or
       Java code are run in a sand-box by default. The Batik browser
       (called Squiggle), has the following security options:
        . secure execution of scripts can be on or off.
        . scripts for a given language can be disabled/enabled.
        . scripts can be constrained to come from the same origin
          as the document referencing them.
       In the Squiggle SVG browser, the security options can be set
       through the Preferences dialog, in the browser options panel.

  - Misc:

     - xml:base is now supported for the image element.

     - <flowText> extension element that flows text into multiple boxes.
       Trying to track the SVG 1.1 Working Group on this element.

     - getURL, parseXML supported in the Window object.

  - Testing:

     - Improved test infrastructure. There are new tests for handling
       automatic regression testing of scripting features and there are
       more tests (801 now) in the regard regression test suite.

2. Bug Fixing:

  - Fixed bugs with textPath w/ text-anchor, and textPath w/ multiple
    trailing tspan elements.

  - Work around for RenderingHints when Batik Jars loaded multiple times
    in the same JVM (through different class loaders).

  - Fixed a bug with X/Y Resolution for Tiff.

  - UIEvents are not dispatched properly on <text> children (<tspan>...)

  - <a> is now supported on <text> element children


1.1.1 -> 1.5beta1
-----------------

** Note on enhanced scripting support **

- Support for DOM Core and DOM Events (Mutation events and UI events)

- Limitations:
   - No support for dynamic modification of CSS properties.
     In particular, setAttributeNS of presentation attributes
     such as 'fill' or 'stroke' or modification of the 'style'
     attribute are not supported.

1. Features:
  - Enhanced scripting support: it is now possible to modify
    SVG documents through scripting
  - Tiff Transcoder now takes FORCE_TRANSPARENT_WHITE hint.
  - Tiff Transcoder now writes resolution tags.
  - Implementation of SVG 1.1 solidColor element (in Batik extensions)
  - Implementation of multiImage element (a Batik extension).
  - Event compression mecanism (e.g., concatenates mouseMove events)

2. Bug Fixing

  - textLength now works in all cases except nested textLengths.
  - 'image' element now respects xml:base.
  - Renderer now reuses image buffers more often.
  - Speed improvements in cases with lots of tspans.
  - Filtered Raster Images now _much_ faster.
  - Things mostly work with current Mac OS X JVM (still some trouble with
    images/filters).
  - Applying a ICC Profile no longer messes up alpha channel in some cases.
  - PNG Transcoder now always writes sRGB chunk.
  - feImage image positioning fix
  - <use> bridge fix,
  - SVG generator <use> export fix


1.1 -> 1.1.1 Release
--------------------

1. Bug fixing:

    - dx/x and dy/y now work when combined.
    - clip-path now takes transforms into account
    - AbstractRable constructors problem fixed.
    - Put in workaround for worst of Mac OS X text problems (layout
      still isn't 100% correct in most cases).
    - Removed code that is no longer needed in GlyphLayout
    - Fixed the last text layout issues on Mac OS X (GlyphVector was
      returning the metrics for the first char for all chars in the vector.
      We now use the difference in defaultGlyphPositions to get the
      character advances).
    - Fixed JViewerFrame issue with large (width/height) documents.

2. Improvements
    - Text bounds computation is now much faster


1.1rc4 -> 1.1 Release
---------------------

1. Bug Fixing and Improvements

    - Code factorization in parsers.
    - Parsers bug fixing.
    - Added examples (maps, bookOfKells example, sunRise, mathMetal).
      Maps are a contribution of Andreas Neumann,
      MathMetal is a contribution of Christophe Held.
    - Added default xmlns and xmlns:xlink on root <svg> in generator
    - Integrated Ant task contribution from Henri Ruini
    - Improved error dialog (now includes details with the error stack trace).
    - Printing fix.
    - text-anchor fix.


1.1rc3 -> 1.1rc4 Release
------------------------

1. Features:

    - rewrite of rasterizer thanks to Henri Ruini's contribution
    - improved image handling strategies in the SVG generator thanks
      to Paul Evenblij's contribution.
    - 'requiredFeatures', 'requiredExtensions' and 'systemLanguage' on
      graphical elements
    - anchor on raster images and SVG images now works properly
    - anchor inside a SVG image now works properly
    - <a> inside <text> or <tspan> is now displayed
    - many tests added (transcoder...)
    - SVG viewer: added dialog box at start up time while loading classes
    - SVG viewer: limited number of files in history

2. Bug fixing:

    - memory leak fix
    - DOM core serialization
    - Parsing of CSS comments
    - SVG generator fixes (bug 4945 and 4389)
    - rasterizer fixes
    - text now works with JDK 1.4b3. Remaining issue with
      BufferedImages.

3. Improvements:

    - general performance improvements in the build and rendering
      phases of the viewing component (for example float parsing
      has been improved).


1.1rc2 -> 1.1rc3 Release
------------------------

1. Features:
   - Support for xml:base
   - TextSearch dialog is available (with a zoom option)
   - Full support for Alternate Stylesheets
   - Full support for CSS Media (including a way to define custom media)
   - Changed Text Selection UI. (selectable in the preference dialog)
     Added Text Selection API to GVT & swing packages
   - KeyStroke on the JSVGCanvas (for pan and zoom using keyboard)
   - SVG Font: The font lookup now takes into account namespaces
   - Provide a way to set the quality of an exported JPEG image
   - Printing now uses the CSS print medium
   - More complete handling of partial URLs
   - Two new extensions solidColor (a single color 'paint server' acts
     similar to the gradients and pattern fills/stroke), & paintSwitch
     similar to a switch element but children are paint servers instead
     of graphical elements.

2. Bug fixes:
   - Fix in gradient element boundary conditions
   - Fix and performance improvements in lighting filters
   - Fix in PNG encoding for BufferedImage' subimages.
   - feDisplacementMap fix (array out of bound exception)
   - font lookup now uses namespace properly
   - 'enable-background' now work on <svg> element
   - zero length on <rect>, <circle> and <ellipse> disable the rendering
   - linear gradient with x1=y1=x2=y2
   - printing now supports SVG URI fragment
   - Javadoc improvements and clean-up
   - Source clean-up
   - DOM: getElementsByTagNameNS now works properly
   - SVGDOM: huge cleanup of the implementation
     (preparation for dynamic features)
   - CSS parser bug fix
   - Bridge: 'overflow' on SVG <image> should now work properly
   - GVT: cleanup the API - GraphicsNodeRenderContext is now obsolete


3. Testing

   - Reorganized tests (see samples/tests subdirectory)
   - Improved test reporting (i.e., better HTML report)
   - Simplified test infrastructure configuration files.
   - Lots of new tests (see samples/tests/structure/styling and
     samples/tests/spec/structure for examples) and
     samples/batikCandy.svg.


1.1rc1 -> 1.1rc2 Release
------------------------

1. Bug fixes:

  - 'preserveAspectRatio' now works properly on both raster and SVG images
  - bug fix with the 'clip' property on <symbol>, <image>, <marker>
  - thumbnail bug fix (sometimes the area of interest became hidden)
  - filename filter added to the file selection dialog in the svgbrowser when
     exporting as PNG and JPG
  - Infinite loop removed. Elliptical arc may cause an infinite loop if the end
  point of the arc was the same than current point in the <path> datas.
  - SVGGraphics2D can now generates SVG Font on demand

2. Improvements:

  - Added new custom filter extension (look at the samples/extensions/histogramNormalization.svg)
  - Added tooltips on <title> and <desc>.


1.0 -> 1.1rc1 Release
---------------------

1. Enhancements:
   a. HTTP headers fields (useragent/accepted...) now implemented.
   b. Anti-aliased gradients (when color-rendering set to quality).
   c. Small patterns are now much faster
   d. Ability to flush cached image data.
   e. full horizontal and vertical kerning now implemented for SVG fonts
   f. added support for orientation and lang <glyph> attributes
   g. improved support for Arabic text, includes handling of Arabic shaping
      and ligatures for both SVG and system fonts
   h. improved text selection
   i. improved text rendering speed

2. Bug fixes:
   a. PNG files now use the proper gamma when reading/writing
   b. Off by one bug in image rendering fixed (background shows
      through on the left and top of image).
   c. Fixes in Base64 data handling (encoding/decoding)
   d. Absolute URL's shouldn't require document URI.
   e. color-interpolation-filters should now work :)
   f. fixed bug with font sizes < 1
   g. fixed problems in text chunk algorithm
   h. fixed bug with empty text nodes
   i. text decorations are now handled properly
   j. bidirectional text (including selection of it) is now handled properly
   k. fixed problem with alignment of vertical text
   l. fixed problem with em and ex unit conversion when font size
      is not a float value (eg medium)

3. Misc:
   a. Now have automated tests for base64
   b. Now have automated tests for ParsedURL
   c. added some more test files for text and fonts


beta2 -> 1.0 Release
--------------------

1. Completed SVG Font Support.

2. Added vertical Text Support.

3. Major rework of the Batik documentation.

4. Added thumbnail

5. Bug fixes.


beta2rc9 -> beta2
-----------------

1. Contributions

   a. New contribution of a True Type Font to SVG Font converter that allows
      a set of characters from a True Type Font to be converted to the
      SVG Font format. This contribution was made by David Schweinsberg
      of SteadyState (david@steadystate.co.uk). This contribution comes at
      the right time (i.e., as we just added SVG Font rendering suppor).

2. Improvements & new features

   a. SVG Font support. Initial revision of the soon complete support of
      SVG Fonts.

   b. New image encoder/decoder infrastructure. This allows a flexible
      handling of new raster image formats.

   c. Improved PNG encoder/decoder which now support the gamma chunk
      properly.

   d. Additional tests for SVGGraphics2D.

   e. Additional samples (mostly new SVG Font support examples).


beta2rc8 -> beta2rc9
--------------------

a. Polishing of existing features.
b. Bug fixes.
c. Improved test infrastructure.


beta2rc7 -> beta2rc8
--------------------

1. Improvements

   a. Full blown in-bound and out-bound linking support. See the
      two new linking examples in the samples/test directory.

   b. Improved CSS error handling.

   c. New test infrastructure.

   d. Beanified SVG JComponent: see JSVGCanvas.

   e. Enhanced features in SVGGraphics2D to manage style properties.

   e. Improved error handling in SVGGraphics2D

2. Bug fixes


beta2rc6 -> beta2rc7
--------------------

1 - SVG Viewer Improvements

   a. Added support for double buffering (controllable by an option).

2. General

   a. Added line-number in error messages when parsing invalid
      SVG document.
   b. Maintenance and Bug fixing.
   c. JSVGCanvas is now a JavaBean which can be easily configured
      in IDE tools to add SVG viewing support in an application.
   d. Support for rendering hints such as text-rendering and
      shape-rendering.


beta2rc5 -> beta2rc6
--------------------

1 - new implementation of the swing component and viewer.

  a. it is now possible to interrupt while loading, building or painting
  b. rotations are now applied on the image in real time. document is
     repainted when the mouse button is released.
  c. real time zoom on the image with SHIFT+BUTTON 2 Drag
  d. progressive rendering has been improved
  e. toggling debug traces on/off to see performance is now possible

2 - new implementation of the bridge package

  a. code cleanup
  b. percentages are now handled correctly (both for xml attributes and CSS
     properties - samples/tests/percentagesAndUnits.svg)
  c. error handling has been improved
     (line number will be available soon)
  d. the building phase is now 30% faster
  e. bug fix with <pattern> (samples/tests/pattern*.svg)
  f. <marker> is now conformed to the current SVG spec (as of March 15)
  g. percentages are now handled correctly on the outermost SVG element (need
     to do the same for the ImageTranscoder)


3 - Transcoders. There are two new transcoders:

  a. WMF -> SVG Transcoder. This is a contribution to the Batik project from
     Luan O'Caroll (Luan.O'Carroll@boimail.com). You can run the transcoder on
     a set of Windows MetaFile (WMF) using the
     org.apache.batik.transcoder.wmf.tosvg.WMFTranscoder application.

  b. Printing Transcoder. This implementation of the Transcoder interface will
     print a set of SVG document to the default printer (see
     org.apache.batik.transcoder.print.PrintTranscoder).

4 - Misc.

  a. support for System colors (see: samples/tests/systemColors.svg)

  b. Creating custom Graphics2D implementation is now easier. A generic part of
     the SVGGraphics2D has been moved into a new package:
     org.apache.batik.ext.awt.g2d.
     This new package facilitates the creation of transcoders that will convert
     SVG documents to an arbitrary format by providing a Graphics2D implementation
     for that format that Batik can use to draw an SVG document (Batik can use
     a Graphics2D to paint an SVG document).

NOTE: Known regressions.

  a. next, previous and thumbnail have been momentarily removed from the viewer.
  b. error messages are printed in the console and not in a dialog.
  c. the partial internal linking support has been removed until
     a full implementation of linking can be done.
  d. printing has not been reintegrated into the new viewer.
  e. regressions may appear for scripting as it has been added in a hurry for
     this release. A clean pass will be done soon.
  f. text regression on tspan handling where dx/dy are temporarily not working.


beta2rc4 -> beta2rc5
---------------------

a. Text improvements.
b. Improved rendering (now uses tiling for faster panning).
c. Bug fixing.


beta2rc3 -> beta2rc4
--------------------

a. Handling of overflow property on <svg>
b. Filter and pattern optimizations
c. Color profile support
d. GVT optimizations


beta2rc2 -> beta2rc3
--------------------

a. Handling of the visibility property
b. Handling of references on gradients, patterns and filters
c. Baseline shift on text
d. Full support for markers.
e. Optimizations in filters and GVT.
f. Bug fixing (e.g., stroke's dash array)


beta2rc1 -> beta2rc2
--------------------

a. A lot of new text support (text length, letter and word spacing).
b. Some support for markers (not complete yet, but should be complete
   shortly, probably by next week).
c. Some support for views (in linking).
d. Cleaned up bridge code.
e. Improvements in the filtering code (there a some minor regressions
   which will soon be taken care of).


beta1 -> beta2rc1
-----------------

a Improved text support
b. Full filter implementation.
c. New Transcoder API.
d. Simplified package organization
