Releases: thorvg/thorvg
ThorVG 1.0.0-pre34
This release brings engine improvements across all backends, including enhanced text spacing support, performance boosts in GL, and improved stability in CPU and WGPU renderers. Lottie rendering sees more accurate effects and better edge-case handling for rounded corners. SVG parsing is now more robust, with fixes for class duplication and proper support for xml:space in text. Additionally, ThorVG examples have been moved to a dedicated repository to streamline the core project.
π Engines
- [core] Added support for text spacing functions. #3397
- [cpu] Fixed unexpected clipping by enforcing zero clipping when any clip shape is present.
- [cpu] Improved stability in edge blending scenarios.
- [cpu] Applied minor rendering stabilizations.
- [gl] Improved FPS by ~10% by skipping stencil operations for convex fills.
- [gl/wgpu] Enhanced arc tessellation stability by adjusting tolerance handling.
- [gl/es] Optimized matrix pipeline, reducing uniform buffer memory usage by ~25%. #3824
- [wgpu] Added support for rendering degenerate (2-point) paths as strokes, enhancing line quality. #2920
- [wgpu] Fixed regressions related to
Trimpathrendering. #3990 #3991 - [wgpu] Corrected clipping behavior. #3561
- [wgpu] Resolved a crash issue. #4037
- [wgpu] Eliminated unexpected rendering artifacts. #3528
β¨Lottie
- Improved rendering quality of rounded corners in edge cases. #2682
- Revised the
wiggleeffect for better alignment with After Effects behavior.
πΌοΈ Pictures
- [svg] Prevented duplicate class declarations from overriding already-applied classes. #4017
- [svg] Properly support the
xml:spaceattribute in<text>elements. #2710
π§© API Updates
- C++ API
+ Result Text::spacing(float letter, float line)
- C API
+ Tvg_Result tvg_text_spacing(Tvg_Paint text, float letter, float line)
β Additional Notes
ThorVG examples have been moved to a separate repository: thorvg.example, helping to slim down the core engine repository size.
Full Changelog: v1.0-pre33...v1.0-pre34
ThorVG 1.0.0-pre33
This release improves performance by 3% through optimized trim path handling and fixes issues with radial gradients and text kerning.
New feature include support for propertyIndex, pointOnPath in Expressions, and automatic text wrapping in Lottie. SVG style class handling is enhanced, and non-POSIX system compatibility has been improved.
π Engines
- [gl/es] Optimized trim path application, improving FPS by 3%. #3653
- [gl/es] Resolved a regression in
TrimPathrendering. #3999 - [gl/wgpu] Fixed an edge case causing broken radial gradients. #3953
- [gl/wgpu] Enhanced stroke join rendering with angle-based interpolation for smoother rounding. #3344
- [core] Fixed a minor memory issue.
β¨Lottie
- Added support for
propertyIndexandpointOnPathinExpressions. #2233 - Implemented automatic line wrapping when text reaches the bounding box edge.
πΌοΈ Pictures
- [svg] Improved support for CSS class declarations. #3662
- [svg] Added support for setting style classes. #2095
π€ TTF
- Fixed broken text kerning and positioning of composite glyphs. #3977
π οΈ Portability
- Removed
alloca()usage to ensure compatibility with non-POSIX systems. #3945
Full Changelog: v1.0-pre32...v1.0-pre33
ThorVG 1.0.0-pre32
This release brings improved text rendering stability and enhanced thread safety. Rendering issues with masking and blending on GL/ES have been resolved, and WGPU performance is improved by ~3% at TrimPath. Lottie now handles missing fonts better and supports basic text styling. Web platform gains asset resolver support for better font/image handling.
π Engines
- [core] Improved text rendering stability.
- [core] Enhanced thread safety across the core engine.
- [gl/es] Fixed rendering issues related to masking and blending compositions. #3793
- [gl/es] Added support for rendering degenerate (2-point) paths as strokes, improving line quality. #2920
- [wgpu] Optimized TrimPath rendering for both fill and stroke, resulting in ~3% FPS improvement. #3653
β¨ Lottie
- Default font is now applied when a specified font is missing. #3930
- Improved URL text rendering with basic support for fill and stroke Text-Range styles. #3867
π Web
- Added Asset Resolver binding for resolving images and fonts. thorvg/thorvg.web#153
- Correctly displays number glyphs using a fallback font when needed. #3956
π οΈ Portability
- Fixed a debug build error on MSVC. #3821
π§© API Updates
- C API
+ Tvg_Result tvg_saver_save_animation(Tvg_Saver saver, Tvg_Animation animation, const char* path, uint32_t quality, uint32_t fps)
* Tvg_Result tvg_saver_save(Tvg_Saver saver, Tvg_Paint paint, const char* path, uint32_t quality);
-> TVG_API Tvg_Result tvg_saver_save_paint(Tvg_Saver saver, Tvg_Paint paint, const char* path, uint32_t quality);
Full Changelog: v1.0-pre31...v1.0-pre32
ThorVG 1.0.0-pre31
This release brings notable improvements across all rendering engines, enhances Lottie text and slot handling, and optimizes SVG image performance through smarter resource sharing.
π© Core
- Added exception handling for the blur effect when the direction value is out of range. #3889
π Engines
- [gl/es] Enhanced stroke tessellation quality for better visual fidelity. #3665
- [wgpu] Fixed broken rendering issues related to masking and blending compositions. #3793
- [cpu] Resolved a regression causing broken image clippings. #3910
β¨ Lottie
- Improved the stability of slot overriding.
- Enhanced text rendering by supporting custom font paths and font asset resolvers. #3866
πΌοΈ Pictures
- [svg] Optimized memory usage and loading performance by sharing data across instances of identical SVG resources.
π§© API Updates
- C++ API
+ void Paint::rel(Paint* paint)
- C API
* Tvg_Result tvg_paint_del(Tvg_Paint paint)
-> Tvg_Result tvg_paint_rel(Tvg_Paint paint)
β Additional Notes
To ensure consistent and safe management of Paint instances, a dedicated API Paint::rel() has been introduced. This API safely releases Paint objects and handles nullptr gracefully. Direct use of delete on Paint instances is now prohibited.
Full Changelog: v1.0-pre30...v1.0-pre31
ThorVG v0.15.16
This release brings enhanced stability to the CPU engine, addressing issues in DropShadow, Clipping, rendering composition, and memory handling. Lottie improvements include more accurate handling of ty properties, correct Track Matte behavior, support for mask inversion options, and fixes for TrimPath and DropShadow calculations. Picture parsing has been improved with better SVG URL handling and multiple memory-related fixes for JPEG images. Additionally, the release resolves macro conflicts in MSVC builds and includes a minor optimization in TTF codepoint conversion.
π Engines
- [cpu] Improved stability for DropShadow and Clipping features.
- [cpu] Fixed a regression bug about rendering composition.
- [cpu] Fixed potential crashes caused by 32-bit integer overflow when handling large lines. #3842
- [cpu] Improved memory safety in texmap handling.
- [cpu] Fixed incorrect behavior in 8-bit direct image rendering.
β¨Lottie
- Improved parsing logic to correctly handle ty properties, even in deferred scenarios. #3611 #3562
- Corrected Track Matte behavior to ensure matte is applied only to the immediate target, preventing unintended chaining.
- Improved support for a few Mask Inversion options that were previously omitted. #3302
- Fixed incorrect TrimPath multiplication logic. #2690
- Corrected DropShadow distance calculation. #3808
- Aligned behaviors for masking and effects combinations.
πΌοΈ Pictures
- [svg] Fixed improper parsing of URL strings with improved quote trimming. #3834
- [jpg] Resolved several memory-related issues. #3836 #3872
π€ TTF
- Minor optimization about codepoint conversion.
π οΈ Portability
- Fixed min/max macro conflicts during builds with MSVC. https://github.com/orgs/thorvg/discussions/3794
Full Changelog: v0.15.15...v0.15.16
ThorVG 1.0.0-pre30
This release introduces a new text line-wrapping feature and significantly improves stability in the CPU and WebGL engines, especially for DropShadow and texture handling. Lottie rendering is more reliable with fixes for TrimPath, Slot management, and asset injection issues. Memory handling has been enhanced across image formats like SVG, JPG, and GIF. Additionally, memory leaks in the lottie2gif tool have been resolved.
π© Core
- [text] Introduced line-wrapping support. #3397
π Engines
- [cpu] Fixed potential crashes caused by 32-bit integer overflow when handling large lines. #3842
- [cpu] Significantly improved DropShadow rendering stability. #3812 #3813 #3814
- [cpu] Added support for image texmap masking with 8-bit mask images. #3816
- [cpu] Improved memory safety in texmap handling.
- [cpu] Fixed incorrect behavior in 8-bit direct image rendering.
- [webgl] Enhanced stability during shader compilation.
- [webgl] Fixed issues with invalid composition operations. #3837
- [wgpu] Upgraded integration to wgpu-native v25/v27. #3422 #3835
β¨Lottie
- Improved stability for TextDocument slot overriding.
- Fixed incorrect TrimPath multiplication logic. #2690
- Corrected DropShadow distance calculation. #3808
- Handled invalid slot values more gracefully for Slot rendering.
- Fixed missing Asset Resolver injection in non-threaded builds. #3851
- Aligned behaviors for masking and effects combinations.
πΌοΈ Pictures
- [svg] Fixed improper parsing of URL strings with improved quote trimming. #3834
- [jpg] Resolved several memory-related issues. #3836 #3872
- [gif] Fixed memory leaks.
π€ TTF
- Added support for line feed (\n) handling in text rendering.
βοΈ Tools
- [lottie2gif] Fixed memory leaks.
π§© API Updates
- C++ API
+ enum TextWrap [None, Character, Word, Smart, Ellipsis]
+ Result Text::wrap(TextWrap mode)
- C API
+ enum Tvg_Text_Wrap [TVG_TEXT_WRAP_NONE, TVG_TEXT_WRAP_CHARACTER, TVG_TEXT_WRAP_SMART, TVG_TEXT_ELLIPSIS]
+ Tvg_Result tvg_text_wrap_mode(Tvg_Paint text, Tvg_Text_Wrap mode)
Full Changelog: v1.0-pre29...v1.0-pre30
ThorVG 1.0.0-pre29
This release improves ThorVGβs engines with stabilized DropShadow and Clipping on CPU, and adds Hit-Detection for GL/WGPU. WGPU rendering issues were fixed by correcting missing transforms, and text rendering is now faster thanks to a new Glyph Cache. Lottie support was enhanced with Layer Effects quality options, masking fixes, and an Asset Resolver, while MSVC build compatibility was also improved.
π Engines
- [cpu] Improved stability for DropShadow and Clipping features.
- [gl/wgpu] Added Hit-Detection support.#3746
- [wgpu] Fixed a shape rendering issue caused by missing transform information. #3762
β¨Lottie
- Added a Layer Effects quality option, allowing users to balance rendering quality and performance. #3795
- Improved support for a few Mask Inversion options that were previously omitted. #3302
- Introduced an Asset Resolver for flexible external asset handling. #3533
π€ TTF
- Introduced a Glyph Cache to optimize rendering performance for repeated text drawing. #3397
π οΈ Portability
- Fixed min/max macro conflicts during builds with MSVC. https://github.com/orgs/thorvg/discussions/3794
π§© API Updates
- C++ API
+ Result LottieAnimation::quality(uint8_t value)
+ Result Picture::resolver(std::function<bool(Paint* paint, const char* src, void* data)> func, void* data)
- C API
+ Tvg_Result tvg_lottie_animation_set_quality(Tvg_Animation animation, uint8_t value)
+ Tvg_Result tvg_picture_set_asset_resolver(Tvg_Paint picture, Tvg_Picture_Asset_Resolver resolver, void* data)
Full Changelog: v1.0-pre28...v1.0-pre29
ThorVG 1.0.0-pre28
This release enhances text layout handling and extends Paint::duplicate() functionality. CPU engine improvements include memory safety fixes and scalable CLAA logic. Lottie performance was optimized, with better Repeater handling and corrected Track Matte behavior.
C API now uses opaque pointer types, introducing potential breaking changes.
π§ Core
- Enhanced text bounding box logic to improve layout accuracy.
- Enabled
Canvas::target()calls during paint object push/remove operations. (See Additional Notes) - Added support for previously missing properties in
Paint::duplicate().
π Engines
- [cpu] Resolved memory violation in DropShadow. #3764
- [cpu] Enhanced to support scalable CLAA logic. #3307
β¨Lottie
- Fixed memory violation related to color stops in slot overriding. #3766
- Optimized Repeater with memory pooling, improving performance by approximately 2.3% FPS in Lottie examples.
- Improved parsing logic to correctly handle
typroperties, even in deferred scenarios. #3611 #3562 - Corrected Track Matte behavior to ensure matte is applied only to the immediate target, preventing unintended chaining.
πΌοΈ Jpeg
- Fine-tuned jpg decoder with size and performance.
- Fixed MCU block offset handling. #3699
π€ TTF
- Refined codepoint conversion logic for improved efficiency.
π§© API Updates
- C++ API
+ enum EngineOption [None, Default, SmartRender]
* Result Picture::load(uint32_t* data, uint32_t w, uint32_t h, ColorSpace cs, bool copy = false)
-> Result Picture::load(const uint32_t* data, uint32_t w, uint32_t h, ColorSpace cs, bool copy = false)
* SwCanvas* SwCanvas::gen()
-> SwCanvas* SwCanvas::gen(EngineOption op = EngineOption::Default)
- C API
+ enum [TVG_ENGINE_OPTION_NONE, TVG_ENGINE_OPTION_DEFAULT, TVG_ENGINE_OPTION_SMART_RENDER]
* Tvg_Result tvg_picture_load_raw(Tvg_Paint* picture, uint32_t *data, uint32_t w, uint32_t h, Tvg_Colorspace cs, bool copy)
-> Tvg_Result tvg_picture_load_raw(Tvg_Paint* picture, const uint32_t *data, uint32_t w, uint32_t h, Tvg_Colorspace cs, bool copy)
* Tvg_Canvas* tvg_swcanvas_create()
-> Tvg_Canvas* tvg_swcanvas_create(Tvg_Engine_Option op)
β Additional Notes
- PR #3773 This update may introduce backward compatibility issues in scenarios where applications previously depended on stricter failure checks. Developers are advised to review error-handling logic accordingly.
- PR #3537 The C API interfaces have been updated to use opaque pointer types, resulting in intentional breaking changes. This redesign improves encapsulation but requires updates in all C-based integrations.
Full Changelog: v1.0-pre27...v1.0-pre28
ThorVG v0.15.15
In this release, core stability has been improved with fixes to paint effect duplication and clipping logic. The CPU engine received performance and memory optimizations, including a fix for a DropShadow memory violation. Lottie features were updated to better align with the spec, and JPEG decoding, Web/WASM bundling, and cross-platform compatibility were also enhanced.
π§ Core
- Ensured correct duplication of paint effects. (#3631)
- Fixed incorrect clipping logic in fast-track rendering paths.
π Engines
- [cpu] Improved memory efficiency when handling stroke and fill operations.
- [cpu] Fine-tuned image composition performance.
- [cpu] Resolved memory violation in DropShadow. #3764
- [cpu] Enhanced to support scalable CLAA logic. #3307
- [cpu] Fixed a clipping issue. #3713
β¨Lottie
- Fixed
loop()expression behavior. #3652 - Aligned with Lottie spec: skipped time stretch when time remap is defined. #3591
- Corrected evaluation of the
valueproperty in Lottie expressions. #3693 - Stabilized GradientFill slot overrides. #3766
πΌοΈ Jpeg
- Fine-tuned jpg decoder with size and performance.
- Fixed MCU block offset handling. #3699
π Web
- Reduced WASM bundle size by omitting default TTF font data when the TTF loader is disabled. #3481
π οΈ Portability
- Fixed compilation issues on Windows when building ThorVG as a subproject using static libraries.
- Corrected directory path parsing issues that prevented Lottie resources from loading properly on MSYS2. #3542
Full Changelog: v0.15.14...v0.15.15
ThorVG 1.0.0-pre27
The ThorVG canvas and text features have been significantly enhanced, with new support for text outlines, alignment, and picture origin.
Rendering engines (CPU, GL/ES, WGPU) have received performance and stability improvements, while Lottie support is now more robust with refactored slots and better expression handling.
π§ Core
- Revised the ThorVG canvas interface for greater flexibility and improved efficiency. #3116
- Introduced support for rendering text outlines. #3397
- Added support for horizontal and vertical text alignment. #3397
- Enabled setting the origin point for picture elements. #1506
π Engines
- [cpu] Resolved performance regressions introduced in v1.0-pre26.
- [cpu] Improved memory efficiency when handling stroke and fill operations.
- [gl/es] Implemented comprehensive scene-level blending support, including HSL-based blend modes. #3072
- [wgpu] Addressed rendering issues where fill and stroke data were sometimes omitted. #3716
- [wgpu/gl/es] Enhanced bounding box calculations for stroked paths. #3725
β¨Lottie
- Simplified and standardized slot handling with reusable interfaces. #2591 #3099
- Corrected evaluation of the "value" property in Lottie expressions. #3693
- Various fixes to improve overall runtime stability.
π οΈ Portability
- Corrected directory path parsing issues that prevented Lottie resources from loading properly on MSYS2. #3542
π§© API Updates
- C++ API
+ Result Text::outline(float width, uint8_t r, uint8_t g, uint8_t b)
+ Result Text::align(float x, float y)
+ Result Text::layout(float w, float h)
+ Result Picture::origin(float x, float y)
+ Result Picture::origin(float* x, float* y)
- C API
+ Tvg_Result tvg_text_set_outline(Tvg_Paint* paint, float width, uint8_t r, uint8_t g, uint8_t b)
+ Tvg_Result tvg_text_align(Tvg_Paint* paint, float x, float y)
+ Tvg_Result tvg_text_layout(Tvg_Paint* paint, float w, float h)
+ Tvg_Result tvg_picture_set_origin(Tvg_Paint* picture, float x, float y)
+ Tvg_Result tvg_picture_get_origin(Tvg_Paint* picture, float* x, float* y)
* Tvg_Result tvg_text_set_fill_color() -> Tvg_Result tvg_text_set_color()
β Additional Notes
- PR #3695 This change may break backward compatibility in cases where stricter failure checks were previously expected or relied upon.
Full Changelog: v1.0-pre26...v1.0-pre27