Releases: brunoborges/jairosvg
Releases · brunoborges/jairosvg
v1.0.10
Changelog
🧰 Tasks
- 1bfde42 remove --enable-preview flag from entire project
🛠 Build
- 75a23e0 exclude CLI jar from Maven Central publishing
- b5cf47b remove native image from release workflow
📝 Documentation
- fb1e629 update README with CLI jar download and multi-file usage
- 4b25550 Release v1.0.10
Contributors
We'd like to thank the following people for their contributions:
- Bruno Borges
- github-actions[bot]
v1.0.8
v1.0.5
Changelog
🐛 Fixes
- a5eb609 make benchmark workflow future-proof by syncing version from pom.xml
- 0d82f1d update benchmark.java dependency to 1.0.5-SNAPSHOT
🧪 Tests
- 8a451c0 push coverage to 98.1% (1089 tests, 460 missed instructions)
- 9cdd56b push coverage to 97.9% (502 missed instructions)
- eebc819 push coverage to 97.7% (1088 tests)
- d8e66bc push JaCoCo coverage to 97.5% (1070 tests)
- 991cc23 increase branch coverage for Surface, TextDrawer, FilterRenderer
- e1d5c91 Release v1.0.5
- af774e4 Read VERSION from Maven-filtered properties instead of hardcoding
- afd21f9 Delete benchmark-2026-03-31_14-02-19.log
- f2cb201 Move bump-version.sh to .github/workflows/scripts/, remove old scripts
- 6ebf0cc Restore scripts/ folder needed by release workflow
- fcd76d0 Fix file URI query/fragment handling on Windows
- c107a11 Fix Windows path handling in UrlHelper and tests
- 16ccf0e Regenerate comparison PNGs
- 26f21d6 Implement feComposite filter primitive (#184), closes #184
- a311de8 Fix patternTransform rendering for combined scale+rotate transforms (#185), closes #185
- 9cab362 Fix useElement test: check blue channel instead of dark pixels
- 5c8a639 Regenerate comparison PNGs
- 7aa4ab7 Target precise uncovered branches — 98.7% coverage
- dad1e77 Add tests for defensive paths across 7 classes
- df8069f Remove dead code, add tests for defensive paths
- 9dd49e3 Fix symbol+use rendering: path leak, width/height pollution, SVG 2 auto sizing (#183), closes #183
- eda52f7 Add CODECOV_TOKEN to Codecov upload step
- 53ed094 Integrate Codecov for dynamic coverage badge
- 11e7ddd Add Benchmark, Native Image, and Coverage badges to README
- 64803d1 Enhance README with comprehensive feature list and updated architecture
- 3ca70e5 Increase warmup to 50, reduce measurement to 500 iterations
- dd4115e Ignore requiredFeatures per SVG 2 to match modern browser rendering (#182), closes #182
- e12eff5 Set JVM CompileThreshold=500 for earlier JIT compilation
- bba0315 Optimize filter pipeline and CSS allocation hotspots
- 00fb94b Optimize allocation hotspots in Node.applyCss and FilterRenderer
- 4cfe72d old scripts
- b8fc3f0 delete old specs
- 42b5553 Fix SVG font: fall back to system font for undefined characters (#181), closes #181
- 60fa393 Use Arial font in comparison SVGs for consistent cross-platform rendering, closes #178
- 12ba8c7 Delete comparison/png/20_fe_tile_review.png
- afc5bdd Add arrow markers on cubic curve to markers comparison
- f08ef44 Fix marker orient=auto to use tangent direction at curve endpoints
- 076f681 Delete .github/workflows/codeql.yml
- d59ce78 delete old examples
- 9e8d077 Add 11 visual comparison SVGs for untested features
- 0def8e6 deleting session files
- 3edd325 Extract benchmark section to BENCHMARK.md
- d240e81 Move visual rendering comparison to separate file
- 6d6a7cd Surface.java: 100% line coverage, remove dead code
- ae3a9cd Hardcode named colors, remove colors.properties
- e6ca5db upgrade gh aw
- 0342dad Shrink benchmark images and make clickable to full size
- 3afd338 Add benchmark chart and file size comparison to site
- 4d342a2 Remove dead code and increase Helpers branch coverage
- 5afed19 Cover CLI Main.java at 100% line/branch coverage
- 618843c Cover PdfSurface at 100% line/branch coverage
- 2dab509 clean up benchmark logs
- dabd6f9 Update site documentation to reflect current codebase
- ccf5ec2 Update workflows: Node.js 24, bump CodeQL action versions
- fa34495 Add site deployment to CI workflow on push to main
- 226e716 Add branch coverage tests for Helpers, Colors, CssProcessor, and Node
- edf0a54 Add branch coverage tests for utility and rendering helper classes
- 59df9de Fix CodeQL workflow: set upload=never to avoid conflict with default setup
- b6f189b Initial plan
- 94c245e Cover JairoSVG.ConversionBuilder at 100% line/branch/method coverage
- 2d56405 Expand test coverage to 81.7% with 339 tests (+199)
- cfb222b Improve code quality, tests, and documentation
- cb2f9ae Initial plan
- 3be2eb7 Refactor Defs.java and FilterRenderer into granular classes
- 1399f0c Trigger site deployment after release
- 6757f8c Fix release workflow: add issues:write permission for milestone management
- 4903eac Make release workflow milestone step resilient to pre-existing milestones
- 4e950a8 Refresh benchmark numbers and comparison charts
- 922018e Bump version to 1.0.5-SNAPSHOT
Contributors
We'd like to thank the following people for their contributions:
- Bruno Borges
- GitHub
- brunoborges
- github-actions[bot]
v1.0.4
Changelog
🔄️ Changes
- cbcc648 cache solid AWT Colors and skip strip/toLowerCase for hex colors, closes #142
- dbe3ca8 reduce per-node overhead in draw() hot path, closes #142
- cc222af optimize stroke rendering and skip unnecessary vertex computation, closes #145
- 989d199 O(1) ID index for , eliminate AffineTransform allocations in skew/matrix transforms, closes #140 #142
- a65a56a avoid caching sub-region maskBuffer; add sub-region mask test, closes #154
🧰 Tasks
- 4856498 deps: bump github/gh-aw from 0.62.5 to 0.65.0
- 25409b8 deps: bump actions/deploy-pages from 4 to 5
- 8220af6 Release v1.0.4
- 4433dd2 Make release version input optional, default to pom.xml
- 1971282 deleted benchmark logs
- 7899270 Bump version to 1.0.4-SNAPSHOT
Contributors
We'd like to thank the following people for their contributions:
- Bruno Borges
- GitHub
- github-actions[bot]
v1.0.3
Changelog
🚀 Features
- 721fdb1 add JSVG (com.github.weisj:jsvg:2.0.0) to benchmark and generate scripts
- 7e76386 add feImage filter primitive support
- 066bbdb add feBlend filter primitive support
- 3f9687b add feTile filter primitive support
🐛 Fixes
- bf57aba improve output format for performance comparison results
- 6e0f364 clip filter output to filter region to prevent feFlood bleeding (#131), closes #130 #131
- 4c14639 replace java.awt.* wildcard with explicit imports in benchmark.java
- 67fa061 address review feedback for feImage support
🔄️ Changes
- 9f93f7f eliminate unnecessary rendering work for zero-alpha and none fills
- 3ad2520 revert mask loop to combined pass with BT.709 luminance
- 6a2a73a optimize mask rendering — sub-region + DST_IN composite
- 61893ca reduce per-render allocations and redundant string parsing
- 82b220b bounds-aware sub-region filter processing (#152), closes #152
- 4176873 optimize mask rendering pipeline (#151), closes #151
- 823d86d optimize feBlend and feFlood filter primitives (#150), closes #137 #150
- 3fb7ff2 optimize feTile with direct pixel operations (#149), closes #138 #149
- 463452e switch benchmark to collective warmup across all test cases (#148), closes #147 #148
- 73f135d optimize filter rendering - 37% faster (#146), closes #136 #146
- e6171ff use MaxRAMPercentage=75% for benchmark heap sizing
- d9d1177 match JSVG rendering defaults and expose renderingHint() API (#134), closes #134
- 85fd314 replace ConvolveOp Gaussian blur with 3-pass box-blur approximation, closes #121
- 52106a5 optimize feBlend with direct DataBufferInt access and integer math
- 34473db optimize mask luminance compositing with integer math and direct raster buffers (#127), closes #127
🧪 Tests
🧰 Tasks
- f488dcc update benchmark numbers from CI run 2026-03-27
- 54f74b3 regenerate comparison PNGs and README
- 955408c deps-dev: bump com.diffplug.spotless:spotless-maven-plugin
- 2d09be5 deps: bump github/gh-aw from 0.51.6 to 0.62.5
- 376f7b8 deps: bump actions/download-artifact from 8.0.0 to 8.0.1
- 706e670 deps: bump org.apache.pdfbox:pdfbox from 3.0.6 to 3.0.7
- 7006a50 deps: bump actions/setup-python from 5 to 6
- 4b68fc4 deps-dev: bump org.apache.maven.plugins:maven-shade-plugin
- 26b6f38 regenerate JairoSVG PNGs with updated rendering defaults
- 242befa regenerate comparison PNGs after filter region clipping fix
- f11cc63 add feTile comparison example and rendered outputs
📝 Documentation
- f09b1db update benchmark table with latest results (2026-03-27)
- ae57667 fix JSVG minimum Java version from 11+ to 8+
- 37a3f70 add JSVG to all multi-library comparisons
- 58c9d86 update benchmark numbers from 2026-03-26 run with latest EchoSVG
- 35268ec update PNG file sizes with new test cases
- 8b142a8 update benchmark table with 23 test cases and JSVG column
- be2ccd4 add feBlend comparison case and rendered outputs
- 2b95808 add feImage comparison SVG examples and rendered PNGs
- 1c4854d document intentional lack of SVG script support
- e834a76 Release v1.0.3
- a5a7a37 update benchmark charts with latest numbers and JSVG
- 56a8039 add 22_localized_masks renders for cairosvg, echosvg, and jsvg
- 3fe4a9d log benchmark to file
- 1ff6f16 remove bench log
- 832f751 Update comparison/README.md with accurate EchoSVG 2.4 information
- c802039 Initial plan
- b421f98 Run tests in headless mode to prevent AWT desktop window
- 898ddfa new test case
- b20fbc4 Bounds-aware sub-region effect buffers for masks and opacity, closes #152 #153
- c32b6ba Potential fix for code scanning alert no. 1: Workflow does not contain permissions
- 3677fbf Display deltas as percentages with 2 decimal points
- 1643446 Update README with latest results after rendering hints change
- 7535e2a Add
--no-progressmode for benchmark output and enable it in CI (#133), closes #133 - 6c7333b Merge perf/optimize-blend-direct-buffer: 2.2x faster feBlend
- 16cf860 Merge origin/main into copilot/add-feimage-filter-support
- f719165 Fix ambiguous List import in generate.java
- 0f010fb Fix artifact size description: JairoSVG is not a fat JAR
- bcdb8ce Fix porting fidelity table: JairoSVG supports .svgz input
- 9bbf569 Add JSVG to Dependencies & Footprint and Security sections
- b3b6423 Add JSVG to all comparison sections in README
- 7342bfb Add EchoSVG to PNG output file size comparison table
- d16c016 Add JSVG file sizes to PNG output comparison table
- 2af169a Fix broken markdown table separator in benchmark section
- e7c2c5a Normalize JSVG benchmark settings and add CLI args for warmup/iterations
- d042ca1 Initial plan
- f54c020 Update comparison README.md to include JSVG as fourth library; add README regeneration to generate.java
- 260eef5 Add JSVG PNG renderings for all 19 comparison test cases
- 6e587b7 Initial plan
- d10d3a3 Initial plan
- 33b22c1 Initial plan
- 809f211 Initial plan
- aba9cd0 Refine effort-labeler guard condition for issue comments
- 316c125 Gate effort-labeler issue_comment runs to /effort commands
- 1bb2b51 Document static renderer animation limitation
- f8c9734 Initial plan
- 4442e07 Initial plan
- a5f12d5 Initial plan
- c4e64fc Skip foreignObject content and document limitation
- b9cfe38 Initial plan
- b37e6b1 Add /effort slash command trigger to effort-labeler workflow
- df307f6 Fix effort labeler: skip closed issues on manual dispatch
- 37b927b Add effort labeler agentic workflow
- d9e52d2 Support non-rendering SVG metadata tags
- fd83e63 Initial plan
- cf65f19 Auto-close released milestone and create next on release
- 5e52039 Add Maven Central and Javadoc badges to README
- 4769804 Refactor benchmark table formatting for improved readability in README
- 6a5f113 Add section on ImageMagick's SVG support and performance comparison
- d86afd5 Add calc() rendering examples (SVG + PNG demos)
- 919c5bd Fix benchmark CI: update jairosvg version to 1.0.3-SNAPSHOT in comparison scripts
- 1578980 Initial plan
- 9fa44c9 Add CSS calc() function support in Helpers.size()
- ff31161 Initial plan
- 04dc94a Fix group opacity rendering and add nested SVG tests
- 35b1c24 Initial plan
- 167992e Update benchmark section in README.md to clarify JairoSVG's optional PDFBox dependency and add disk footprint details
- fba1299 Add Table of Contents to README.md for improved navigation
- 8f97a89 Update README.md to enhance benchmark comparison section with additional charts and improved layout
- 2d7915b Update benchmark SVG and PNG files with improved rendering metrics and visual adjustments
- 46b0350 Update benchmark SVG with new metrics and improved layout
- 574cb95 Update performance benchmarks in README.md for SVG conversion times
- 4cc6257 Bump version to 1.0.3-SNAPSHOT
Contributors
We'd like to thank the following people for their contributions:
- Bruno Borges
- GitHub
- brunoborges
- github-actions[bot]
v1.0.2
Changelog
🚀 Features
🐛 Fixes
- 758510f render luminance masks including gradient-filled mask content
🔄️ Changes
- b2d4dda optimize mask luminance pixel processing
🛠 Build
- cbf8144 harden native-image workflow permissions and jar detection
- 271f0f5 enforce preview flags in native-image workflow
- 50309dc add dedicated workflow for graalvm native-image cli build
📝 Documentation
- 5a9829f clarify native-image metadata behavior
- 3e3403f Release v1.0.2
- aabb679 Fix element not inheriting presentation attributes like fill, closes #86
- 84a5709 Update README.md to improve SVG benchmark table with clickable links and clarify filters/masks caveat
- 9123ca0 Update performance benchmarks in README.md for filter processing times
- 2d435db Update README.md to enhance SVG library comparison details and clarify performance metrics
- d39c0e6 Update 15_masks.png to improve mask rendering
- 497e86a Update performance benchmarks and key strengths in README.md
- 428066c Fix embedded image rendering broken by MemoryCacheImageInputStream double-close
- d43eb88 Strengthen svgz regression tests with pixel assertions
- 37b2082 Add regression tests for gzip-compressed svg inputs
- 082c7ff Initial plan
- 2721b04 Initial plan
- ff325bc Initial plan
- 14a413b Initial plan
- 459522f Add progress bar to benchmark using me.tongfei:progressbar
- 36b7011 Optimize image decoding with data: URI fast path and raster cache
- 7790801 Optimize image decoding with data: URI fast path and raster cache
- 98f0ebd Optimize image decoding with data: URI fast path and raster cache
- ec49739 Update embedded image for PNG comparison
- de31c6c Add image-rendering property to SVG images for improved rendering
- 1ee0dae Update PNG comparison images and remove outdated files
- c2f417b Support image-rendering CSS property for raster images, closes #80
- 8963481 Change default CLI output format from PDF to PNG, closes #78
- 8850b5d Update README: Enhance benchmark section with detailed comparison and reference to full results
- c2c19d7 Refactor PngSurface: Simplify import statements and method signatures for writePng
- 4fb1996 Update comparison README with 19-file benchmark and PNG size data
- 06a1afb Remove SVG re-rendering functionality and update documentation to reflect output format changes
- 7dc0052 Implement command-line interface for JairoSVG and update main class reference in POM
- 9cbefda Add --no-cairosvg, --no-echosvg and name filter args to benchmark
- 1e6efd4 Update version to 1.0.1 and implement version bump script for releases
- d48967f Bump version to 1.0.1
- c9583df Update README to clarify JairoSVG's cross-platform capabilities
- ea6efc4 Improve README formatting for benchmark and CLI options tables
- d10f4ab Update project description and improve POM formatting
- 6894496 Load benchmark SVGs from comparison/svg/ instead of hardcoded strings
- ec88b82 Set PNG default compression level to 6, matching CairoSVG/libpng
- f4972ca Revert "Replace ImageIO PNG writer with parallel PNG encoder"
- 5e81770 Replace ImageIO PNG writer with parallel PNG encoder
- 5c2c5b5 Replace DOM XML parsing with SAX direct-to-Node tree
- 58b0c60 Update jairosvg script reference to version 1.0.1
- 18d519e Update jairosvg version to 1.0.1 in README
- cdb718f Update jairosvg version and add JBang installation
- 7252cea updated png files
- 56eba9e Add SVG to PNG benchmark implementation and update references
- 76790ab Refactor comparison table formatting and improve readability in COMPARISON.md
- f0dd48a Update benchmark table with all 5 test cases and fresh numbers
- 18c09bf Bump version to 1.0.2-SNAPSHOT
Contributors
We'd like to thank the following people for their contributions:
- Bruno Borges
- GitHub
- Max Rydahl Andersen
- brunoborges
- github-actions[bot]
v1.0.1
Changelog
🚀 Features
- 941ab37 add additional benchmark SVG scenarios
🐛 Fixes
- acfb23c render svg markers on stroked paths
🧪 Tests
- 0158d21 cover marker rendering and refine marker placement
📝 Documentation
- dd5a973 add rendered marker comparison images for PR comment
- c4a58a2 Make release workflow idempotent for reruns
- 8b72661 Fix JReleaser GPG env var names
- 28e060b Release v1.0.1
- 9c1eac0 Configure JReleaser to publish to Maven Central
- 8dedc26 Bump version to 1.0.1-SNAPSHOT and auto-bump after release
- 2d33035 Fix benchmark: update version from 1.0.0-SNAPSHOT to 1.0.0
- 77e578f Rename Java package from com.jairosvg to io.brunoborges.jairosvg
- 0c4536a Include JaCoCo report in Maven site by running tests first
- 6bab0ab Fix JReleaser config: correct artifact paths and skip tag creation
- fdbd40b Initial plan
- 22bf387 Fix duplicate method/class definitions causing compilation failure
- 33241ca Initial plan
- 3e1c515 Initial plan
- 10060cb Fix CI compilation failure: remove duplicate testTextPathFollowsCurve method in ShapeRenderingTest
- 1a4a494 Initial plan
- 6910157 Refine image opacity edge blending implementation
- b620f10 Fix CI: add marker rendering code and correct test methods in ShapeRenderingTest
- fdbc505 Improve raster image edge blending for opacity rendering
- c30ea24 Initial plan
- 0fd6db0 Fix duplicate testTextPathFollowsCurve method and swap test assertions to correct tests
- d8466a7 Initial plan
- dfdf66f Fix swapped test assertions and missing closing SVG tag in ShapeRenderingTest
- c8e9f35 Initial plan
- e7929e4 Refactor test for textPath rendering validation
- e7f66b8 Add rendered embedded-image outputs for PR comparison
- c860a52 Fix embedded SVG image opacity handling
- b1472ab Initial plan
- d55607e Initial plan
Contributors
We'd like to thank the following people for their contributions:
- Bruno Borges
- GitHub
- brunoborges
- github-actions[bot]
v1.0.0
What's Changed
- Bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #1
- Bump actions/upload-pages-artifact from 3 to 4 by @dependabot[bot] in #3
- Bump org.junit.jupiter:junit-jupiter from 5.11.4 to 6.0.3 by @dependabot[bot] in #11
- Bump actions/setup-java from 4 to 5 by @dependabot[bot] in #10
- Bump org.apache.pdfbox:pdfbox from 3.0.4 to 3.0.6 by @dependabot[bot] in #2
- Bump org.apache.maven.plugins:maven-shade-plugin from 3.6.0 to 3.6.1 by @dependabot[bot] in #6
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.2 to 3.5.5 by @dependabot[bot] in #12
- Bump org.apache.maven.plugins:maven-jar-plugin from 3.4.2 to 3.5.0 by @dependabot[bot] in #4
- Bump actions/checkout from 4 to 6 by @dependabot[bot] in #5
- Bump org.jacoco:jacoco-maven-plugin from 0.8.13 to 0.8.14 by @dependabot[bot] in #7
- Bump org.apache.maven.plugins:maven-project-info-reports-plugin from 3.8.0 to 3.9.0 by @dependabot[bot] in #8
- Bump org.apache.maven.plugins:maven-compiler-plugin from 3.14.0 to 3.15.0 by @dependabot[bot] in #9
- Bump com.diffplug.spotless:spotless-maven-plugin from 2.44.5 to 3.2.1 by @dependabot[bot] in #13
- docs: add COMPARISON.md — comprehensive JairoSVG vs EchoSVG feature comparison by @Copilot in #14
- Add hsl()/hsla() color function support by @Copilot in #34
- Add SVG Fonts support (
<font>,<glyph>) by @Copilot in #33 - Fix text-anchor="middle" centering for text elements containing tspan children by @Copilot in #37
- Fix Windows file URI path resolution in UrlHelper by @Copilot in #39
- Fix site workflow: maven-site-plugin incompatible with maven-fluido-skin 2.1.0 by @Copilot in #40
- Add
patternTransformattribute support by @Copilot in #41 - Fix compile error: CssProcessor.resolveHref returns ParsedUrl instead of String by @Copilot in #43
- Add benchmark workflow and jbang catalog entry for JairoSVG vs CairoSVG by @Copilot in #42
- Add external CSS stylesheet loading via
<?xml-stylesheet?>processing instruction by @Copilot in #38 - Add CairoSVG as a third renderer in comparison assets and generator by @Copilot in #47
- Add structural pseudo-selector support in CSS processor (
:first-child,:last-child,:nth-child,:not) and accept pseudo-elements by @Copilot in #45 - fix: run jbang on host runner to access local Maven repo in benchmark workflow by @Copilot in #48
- Add JPEG output support across surface, builder API, and CLI by @Copilot in #49
- Add TIFF output support to builder and CLI conversion paths by @Copilot in #52
- Add
text-decorationrendering for SVG text (underline,overline,line-through) by @Copilot in #44 - Refresh docs to reflect current output formats and CLI/API feature set by @Copilot in #54
- Add CSS custom property (
var()) resolution for SVG style values by @Copilot in #55 - Update feature matrix to reflect CSS custom properties support by @Copilot in #56
- Fix clipped linearGradient stop offsets so clip-path fills preserve full color range by @Copilot in #62
- Render
<textPath>glyphs along referenced path geometry by @Copilot in #63 - Render SVG blur and drop-shadow filters via off-screen filter pipeline by @Copilot in #64
New Contributors
- @dependabot[bot] made their first contribution in #1
Full Changelog: https://github.com/brunoborges/jairosvg/commits/v1.0.0