Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

Releases: thorvg/thorvg

ThorVG 1.0.0-pre34

18 Dec 15:29

Choose a tag to compare

ThorVG 1.0.0-pre34 Pre-release
Pre-release

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 Trimpath rendering. #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 wiggle effect for better alignment with After Effects behavior.

πŸ–ΌοΈ Pictures

  • [svg] Prevented duplicate class declarations from overriding already-applied classes. #4017
  • [svg] Properly support the xml:space attribute 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

27 Nov 17:13

Choose a tag to compare

ThorVG 1.0.0-pre33 Pre-release
Pre-release

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 TrimPath rendering. #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 propertyIndex and pointOnPath in Expressions. #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

13 Nov 17:42

Choose a tag to compare

ThorVG 1.0.0-pre32 Pre-release
Pre-release

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

30 Oct 16:04

Choose a tag to compare

ThorVG 1.0.0-pre31 Pre-release
Pre-release

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

23 Oct 14:33

Choose a tag to compare

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

Full Changelog: v0.15.15...v0.15.16

ThorVG 1.0.0-pre30

16 Oct 13:24

Choose a tag to compare

ThorVG 1.0.0-pre30 Pre-release
Pre-release

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

25 Sep 14:36

Choose a tag to compare

ThorVG 1.0.0-pre29 Pre-release
Pre-release

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

🧩 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

11 Sep 17:05

Choose a tag to compare

ThorVG 1.0.0-pre28 Pre-release
Pre-release

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 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.

πŸ–ΌοΈ 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

05 Sep 08:06

Choose a tag to compare

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 value property 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

28 Aug 15:46

Choose a tag to compare

ThorVG 1.0.0-pre27 Pre-release
Pre-release

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