Skip to content

Releases: weisJ/jsvg

v.1.7.1

18 Mar 12:17
e0ef0cd
Compare
Choose a tag to compare

Important

The last release erroneously contained byte code incompatible with Java versions before Java 21 if animations are used. This release fixes this and makes the library again compatible with Java 8.

Changes

  • Correctness improvements for text-anchor #110 7d1fb8f
  • The default resource policy now allows for embedded data uri images. 8ab4aae
  • Percentage values in startOffset of a <textPath> now properly resolve with respect to the length of the paths. Some scenarios are still unsupported e.g. negative values and values larger than the path length. #115 eef2211
  • Fix incorrect inheritance behaviour of the dominant-baseline property #116 be43583
  • Font family names within single or double quotes are now correctly resolved. #117 5614b6c
  • Fix exception when radial gradients have a non-positive radius #118 e953115
  • Fix exception when the last two gradients stops have have the same offset value #118 e953115
  • Fix exception when gradients have only one specified stop #118 55261f7

Full Changelog: v1.7.0-rc1...v1.7.1-rc1

v1.7.0

21 Jan 13:32
546ebac
Compare
Choose a tag to compare

Warning

This release erroneously contains byte code incompatible with Java versions before Java 21. This has been fixed in JSVG version 1.7.1.

Changes

  • Implementors of Output now have more control over how text gets rendered. The can opt to receive information about the text being laid out by returning a custom TextOutput in Output#textOutput.
  • ExternalResourcePolicy now applies to all resources not only referenced SVG elements.
  • Support for multi-char codepoints such as "𝄞".
  • Rudimentary support for rendering emoji. This feature does not work on every operating system and JDK version.
  • Support for more units:
    • rem
    • ch
    • Q
    • vw,vh,vmin,vmax
    • vi,vb
  • ParsedElement now has access to the document it belongs to (via ParsedElement#document) and to its parent element (via ParsedElement#parent).
  • The rx and ry attributes are now correctly applied in cases.
  • Fixed rendering of paths with repeated cubic/quadratic bezier commands.
  • Fixed usage of repeated values in the paint-order attribute.
  • stroke-opacity and fill-opacity now correctly don't accumulate to child elements.
  • Percentages in stroke related properties now correctly refer to the diagonal length of the current viewport.
  • Fixed bounds computation of empty groups for which a transform is specified.
  • Support for the transform-box property. (by @Cu3PO42 in #99)
  • Prevent DOS attacks through exponential leaf nodes using use elements. The limits for this can be configured setting custom DocumentLimits in the LoaderContext.
  • JSVG now provides OSGi metadata (by @HannesWell in #107)
  • Preview support for animations. Not many properties outside of geometry properties are animatable. Only basic animation timings are implemented.

Deprecations

See documentation for replacements.

  • LoadHelper(AttributeParser, ResourceLoader)
  • SVGDocument#render(JComponent, Graphics2D, ViewBox)
  • AttributeNode#getPercentage(String, float)
  • SVGDocumentBuilder(ParserProvider, ResourceLoader, NodeSupplier)
  • SVGLoader#load(InputStream)
  • SVGLoader#load(InputStream, ParserProvider)
  • SVGLoader#load(InputStream, ParserProvider, ResourceLoader)

Full Changelog: v1.6.1-rc1...v1.7.0-rc1

v1.6.1

14 Aug 19:18
9c73862
Compare
Choose a tag to compare

Changes:

  • NullPlatformSupport is now a singleton. Its constructor has been deprecated. Use NullPlatformSupport.INSTANCE instead. (by @VISTALL )

Fixed issues:

  • Parsing loop if paint-order is invalid (some cases) or normal #88

v1.6.0

16 Jul 19:57
fc933de
Compare
Choose a tag to compare

Caution

This release contains an issue which prevents parsing of some svg files to finish. Use version 1.6.1 instead.

Changes:

  • Support for feDropShadow
  • Added experimental support for resolving elements in href from external documents through
    LoaderContext.builder().elementLoader(
        ElementLoader.create(ExternalDocumentPolicy.ALLOW_RELATIVE)
    )
    
    passed to SVGLoader.
    By default this is disabled.

Fixed issues:

  • Filter effects outside the geometry box get clipped by mask #84
  • paint-order doesn't get inherited #83

v1.5.0

07 Jun 13:43
adef6dd
Compare
Choose a tag to compare

Changes:

  • Support for filters on root <svg> nodes #61
  • stroke-dasharray is now inherited
  • SVGDocument now exposes its ViewBox through SVGDocument.viewbox() #69
  • Support for the color-interpolation-filters property. In particular filters are now computed in the correct colorspace.
  • <feComponentTransfor> together with <feFunc[ARGB]> is now supported.
  • Introduce SVGRenderingHints.KEY_MASK_CLIP_RENDERING and SVGRenderingHints.VALUE_MASK_CLIP_RENDERING_ACCURACY to ensure proper mask/clipPath isolation to fix #74 if desired.
  • Support rendering to AWT components #77.
  • Added SVGDocument.renderWithPlatform(PlatformSupport, Graphics2D, ViewBox)

Fixed issues:

  • Improper sub pixel alignment when using masks or filters #62
  • Filters are now clipped to filter primitive regions #70
  • General correctness improvements for filters in particular <feBlend> and alpha compositing.
  • Invalid paths now render up to the point where they are valid #68
  • Unitless values for mask bounds are now correctly interpreted as percentages #75
  • Fix scenarios where masks are applied incorrectly #74

Deprecations

  • SVGDocument.render(JComponent, Graphics2D, ViewBox bounds). Replaced by SVGDocument.render(Component, Graphics2D, ViewBox bounds)
  • JComponentPlatformSupport replaced by AwtComponentPlatformSupport

v1.4.0

15 Feb 19:58
7d8555d
Compare
Choose a tag to compare

Changes:

  • The shape of a svg file can now be computed using SVGDocument.computeShape().
  • Implemented (experimental) soft clipping for <clipPath>. It can be enabled by setting the SVGRenderingsHints.KEY_SOFT_CLIPPING to SVGRenderingHints.VALUE_SOFT_CLIPPING_ON on the Graphics2D instance.

v1.3.0

28 Nov 19:38
987a371
Compare
Choose a tag to compare

Changes:

  • Support for svg resources in <img> tags. #53
  • Comments in css declarations (inside <style> tags) are now supported.
  • If an <img> tag isn't able to load the resource a replacement "missing image" visual is shown.
  • A small move towards supporting proper xml namespacing

Fixed issues:

  • The x and y properties on top level svg are now ignored as per the specification.
  • Incorrect size conversion for coordinates in ellipses and circles.
  • Numbers not separated by space e.g 5-4 i.e. 5 and -4 are now properly parsed in transform specifiers.

v1.2.0

02 Oct 13:15
194eb67
Compare
Choose a tag to compare

Changes:

  • Improved performance of SVG files with rectangular clipping areas. (by @eriklumme1)

Fixed issues:

  • Possible OOM with two stops at the same location in radialgradient.
  • Exception if a masks is applied to empty groups.

v1.1.0

03 Sep 19:21
b627505
Compare
Choose a tag to compare

Fixed issues:

  • Improved correctness of used primitive filter regions e.g. for feBlend
  • The focus radius (fr)now produces the correct result from the specification
  • Empty masks no longer produce exceptions (#44)
  • Α composite is now respected when painting shapes (#43)
  • Fixed issue where encountering e.g. "1e5.5" in path data caused an exception. It is now correctly treated as "1e5 .5"
  • The miter-limit property is now handled correctly if an invalid value is specified.
  • Fixed incorrect conversion from cm to px (#45)
  • Fixed an CSS parsing issue, where not terminating the last rule with a semicolon would throw an exception (#46)