Last updated: April 10 2005 ========================== This directory contains downloads for the Apache Batik project: + batik-.zip is the binary distribution + batik-src-.zip is the source distribution + batik-docs-.zip is the documentation bundle The latest stable Batik version is 1.6, which is the recommended version. However, all the builds that were offered earlier are still available in the apache archives. Change Log ========== The following log records some of the most important changes. Bug fixing is an on-going task, so it is implied in all sub-releases. 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 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 and , SVGPathSegList in , 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 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 , and - Now support the transform attribute on the 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 - Removed unnecessary font matching with 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 , , 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): , and element children (such as ); - 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 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 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. - 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 children (...) - is now supported on 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 - bridge fix, - SVG generator 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 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 - inside or 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 element - zero length on , and 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 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 , , - 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 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 and . 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 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 (samples/tests/pattern*.svg) f. 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 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