Skip to content

Releases: thorvg/thorvg

ThorVG v0.15.12

03 Apr 23:29

Choose a tag to compare

This release includes several improvements and minor bug fixes:

  • [Renderer] Improved thread safety during font loading. (#3306)
  • [Renderer] Fixed a crash caused by extremely small stroke dash sizes. (#3332)
  • [SwEngine] Resolved a crash due to out-of-bounds image access.(#3327)
  • [GlEngine] Corrected the Luma Masking equation. (#3045)
  • [Lottie] Added support for wiggle effect. (#1640)
  • [Lottie] Improved the safety and compatibility.
  • [Ttf] Improved thread safety. (#3165)
  • [Svg] Added support for embedded fonts. (#1897)

Full Changelog: v0.15.11...v0.15.12

ThorVG 1.0.0-pre18

27 Mar 16:52

Choose a tag to compare

ThorVG 1.0.0-pre18 Pre-release
Pre-release

In preparation for the ThorVG 1.0.0 release, we are conducting a pre-release for ThorVG v1.0. Please carefully review the release notes, as there may be API/ABI breaks included. Also, this release includes several improvements and minor bug fixes since v1.0.0-pre17.

  • [Renderer] Improved thread safety during font loading. #3306
  • [Renderer] Fixed a crash caused by extremely small stroke dash sizes. #3332
  • [SwEngine] Resolved a crash due to out-of-bounds image access. #3327
  • [GlEngine] Corrected the Luma Masking equation. #3045
  • [Lottie] Added experimental support for Interactive Lottie Expressions.
  • [Lottie] Added support for Text Document Expressions. #3303
  • [Lottie] Enhanced feature coverage and fixed several regression bugs from recent updates.
  • [Web] Fixed broken build environments for both SW and GL backends. #3356
  • [API Additions]
//C++ APIs (Experimental Ver.)
Result LottieAnimation::assign(const char* layer, uint32_t ix, const char* var, float val);

//C APIs (Experimental Ver.)
Tvg_Result tvg_lottie_animation_assign(Tvg_Animation* animation, const char* layer, uint32_t ix, const char* var, float val);
Tvg_Accessor* tvg_accessor_new();
Tvg_Result tvg_accessor_del(Tvg_Accessor* accessor);
Tvg_Result tvg_accessor_set(Tvg_Accessor* accessor, Tvg_Paint* paint, bool (*func)(Tvg_Paint* paint, void* data), void* data);

Full Changelog: v1.0-pre17...v1.0-pre18

ThorVG 1.0.0-pre17

20 Mar 14:29

Choose a tag to compare

ThorVG 1.0.0-pre17 Pre-release
Pre-release

In preparation for the ThorVG 1.0.0 release, we are conducting a pre-release for ThorVG v1.0. Please carefully review the release notes, as there may be API/ABI breaks included. Also, this release includes several improvements and minor bug fixes since v1.0.0-pre16.

  • [Renderer] Added APIs to query a paint's parent.
  • [Renderer] Revised the AABB bounding box calculation to apply only to transformed shapes.
  • [SwEngine] Fixed incorrect RLE cell positioning that caused rendering artifacts. #2657
  • [WgEngine] Fixed a crash occurring in a clipping corner case. #3289
  • [Lottie] Added support for Text Follow Path. #2888
  • [Lottie] Improved handling of carriage returns with local fonts. #3310
  • [Lottie] Enhanced Slots for better expression overriding. #3168
  • [Lottie] Fixed minor memory leaks in the Slot feature.
  • [SVG] Fixed incorrect assignment of <stop> elements. #3321
  • [SVG] Added support for embedded fonts. #1897
  • [Portability] Ensured compatibility with C++20 builds.
  • [Portability] Improved WASM build portability by addressing thread dependency issues.
  • [Portability] Used the default constructor for Array to ensure compatibility with wasm-bindgen compilation.
  • [C++ API Addition]
const Paint* Paint::parent() const
  • [C API Addition]
const Tvg_Paint* tvg_paint_get_parent(const Tvg_Paint* paint)
  • [C API Modification]
Tvg_Result tvg_paint_set_clip(Tvg_Paint* paint, Tvg_Paint* clipper)
 -> Tvg_Result tvg_paint_clip(Tvg_Paint* paint, Tvg_Paint* clipper)

Full Changelog: v1.0-pre16...v1.0-pre17

ThorVG v0.15.11

12 Mar 20:44

Choose a tag to compare

This release includes several improvements and minor bug fixes:

  • [Renderer] Fix potential memory leaks in font handling.
  • [SwEngine] Fix potential crash when using empty clips.
  • [SwEngine] Fix incorrect rle cell position causing rendering artifacts. #2657
  • [SwEngine] Fix an issue with drop shadow rendering. #3146
  • [SwEngine] Improve shape updates - fix disappearing stroke for updated fills. #3237
  • [GlEngine/SwEngine] Fix color burn/dodge edge cases.
  • [GlEngine] Enhance dashed stroke quality. #2729, #3222, #3231
  • [GlEngine] Add offset support in dashed strokes. #3217, #3223, #3191
  • [Lottie] Enhance dashed stroke support – any number of gaps/dashes is now supported. #3191
  • [Lottie] Add basic support for embedded font data. #3184
  • [Lottie] Add support for expression overriding. #3168
  • [Lottie] Fix potential memory leak in slots.
  • [Svg] Fix incorrect gradient element assignment. godotengine/godot#102005 (comment)
  • [Ttf] Enhance fonts rendering quality – properly handle contours starting from a point outside the shape. #3268

Full Changelog: v0.15.10...v0.15.11

ThorVG 1.0.0-pre16

06 Mar 16:27

Choose a tag to compare

ThorVG 1.0.0-pre16 Pre-release
Pre-release

In preparation for the ThorVG 1.0.0 release, we are conducting a pre-release for ThorVG v1.0. Please carefully review the release notes, as there may be API/ABI breaks included. Also, this release includes several improvements and minor bug fixes since v1.0.0-pre15.

  • [Renderer] Enhanced bounding box accuracy for Bézier curves.
  • [Renderer] Added support for object-oriented bounding boxes. #3290
  • [Renderer] Corrected an issue with fast-track stroke clipping behavior.
  • [Renderer] Fixed a font caching lookup failure.
  • [WgEngine] Added support for stroke clipping. #3063
  • [WgEngine] Resolved memory leaks at scene effects. #3292
  • [GlEngine] Added support for stroke clipping. #3063
  • [Lottie] Properly addressed the justification (horizontal alignment) in the origin font text. #3266
  • [Lottie] Resolved a minor memory leak in slot overriding.
  • [C++ API] Revision:
Result Paint::bounds(float* x, float* y, float* w, float* h, bool transform = false) const
 -> Result Paint::bounds(float* x, float* y, float* w, float* h) const
 -> Result Paint::bounds(Point* pt4) const
  • [C API] Revision:
Tvg_Result tvg_paint_get_bounds(const Tvg_Paint* paint, float* x, float* y, float* w, float* h, bool transformed);
 -> Tvg_Result tvg_paint_get_aabb(const Tvg_Paint* paint, float* x, float* y, float* w, float* h);
 -> Tvg_Result tvg_paint_get_obb(const Tvg_Paint* paint, Tvg_Point* pt4);

Full Changelog: v1.0-pre15...v1.0-pre16

ThorVG 1.0.0-pre15

27 Feb 15:22

Choose a tag to compare

ThorVG 1.0.0-pre15 Pre-release
Pre-release

In preparation for the ThorVG 1.0.0 release, we are conducting a pre-release for ThorVG v1.0. Please carefully review the release notes, as there may be API/ABI breaks included. Also, this release includes several improvements and minor bug fixes since v1.0.0-pre14.

  • [Renderer] Added support for Trim Path for shape filling. #3118
  • [WgEngine] Improved stroke dash rendering accuracy. #3265
  • [WgEngine] Added support for Drop Shadow post-processing effect. #3054
  • [WgEngine] Added support for color replacement post-processing effects (Fill, Tint, Tritone). #3054
  • [GlEngine] Fixed an incorrect line join issue in dashed strokes. #3231
  • [Lottie] Fixed an incorrect evaluation result check for Expressions undefined conditions.
  • [Lottie] Enhanced Trim Path support for shape filling. #3118
  • [Lottie] Improved rendering performance by ~7% with a more precise culling mechanism.
  • [Lottie] Added support for the .lot file extension and the lottie+json MIME type. #3248
  • [TTF] Fixed incorrect rendering by properly handling contours starting with OFF_CURVE points. #3268
  • [Web] Optimized default font data size by 40% using LZSS compression.
  • [C++ API] Modifications:
Result Shape::strokeTrim(float begin, float end, bool simultaneous = true)
 -> Result Shape::trimpath(float begin, float end, bool simultaneous = true)
  • [C API] Modifications:
Tvg_Result tvg_shape_set_stroke_trim(Tvg_Paint* paint, float begin, float end, bool simultaneous)
 -> Tvg_Result tvg_shape_set_trimpath(Tvg_Paint* paint, float begin, float end, bool simultaneous)

Please note that, according to the official IANA announcement, the allowed MIME type for ThorVG's picture data load APIs has been changed from lottie to lot or lottie+json. Please ensure that you use the updated MIME type name when loading Lottie data.

Full Changelog: v1.0-pre14...v1.0-pre15

ThorVG 1.0.0-pre14

20 Feb 15:46

Choose a tag to compare

ThorVG 1.0.0-pre14 Pre-release
Pre-release

In preparation for the ThorVG 1.0.0 release, we are conducting a pre-release for ThorVG v1.0. Please carefully review the release notes, as there may be API/ABI breaks included. Also, this release includes several improvements and minor bug fixes since v1.0.0-pre13.

  • [Renderer] Introduced customizable designated memory allocators. (#2652)
  • [Renderer] Enabled text rendering for unnamed fonts using a fallback mechanism.
  • [Renderer] Fixed potential memory leaks in font handling.
  • [SwEngine] Fixed an issue where stroke updates were being omitted. (#3237)
  • [WgEngine] Corrected dash offset behavior for an odd number of dash/gap segments.
  • [WgEngine] Introduced a vertex/index buffer pool, reducing memory usage by 14% and improving FPS by 5%. (#3159)
  • [WgEngine] Improved shape-closing precision. (#3235)
  • [WgEngine] Fixed an issue where stroke updates were being omitted in rendering.
  • [GlEngine] Enhanced stroke dash drawing quality. (#2729) (#3222)
  • [GlEngine] Properly supported dash drawing offset property. (#3223) (#3191)
  • [GlEngine] Improved shape-closing precision. (#3235)
  • [Lottie] Enabled embedded font data for basic text rendering. (#3184)
  • [Lottie] Added support for local system font rendering using a default font fallback mechanism.
  • [SVG] Added support for local system font rendering using a default font fallback mechanism.
  • [Web] Optimized WebAssembly (WASM) binary size by applying -Oz, reducing the binary by 120KB.
  • [Web] Applied DM Sans as the default font to enhance Lottie/SVG web compatibility.

Full Changelog: v1.0-pre13...v1.0-pre14

ThorVG 1.0.0-pre13

13 Feb 17:16

Choose a tag to compare

ThorVG 1.0.0-pre13 Pre-release
Pre-release

In preparation for the ThorVG 1.0.0 release, we are conducting a pre-release for ThorVG v1.0. Please carefully review the release notes, as there may be API/ABI breaks included. Also, this release includes several improvements and minor bug fixes since v1.0.0-pre12.

  • [Renderer] Fixed several edge cases in TrimPath that previously caused incorrect rendering results. #3053 #3192
  • [Renderer] Added support for path direction in Shape Rect and Circle drawing. #3179
  • [SwEngine] Fixed an issue where DropShadow was broken when the canvas width and height were different. #3146
  • [WgEngine] Improved Gaussian Blur performance by up to 25%.
  • [WgEngine] Corrected rendering of odd numbers of dashes/gaps in stroke patterns. #3205
  • [Lottie] Enhanced dash stroke support, now allowing multiple dash/gap values. #3191
  • [Lottie] Fixed minor memory leaks.
  • [C++ API] Modifications:
Result Shape::appendRect(float x, float y, float w, float h, float rx = 0, float ry = 0)
 -> Result Shape::appendRect(float x, float y, float w, float h, float rx = 0, float ry = 0, bool cw = true)
Result Shape::appendCircle(float cx, float cy, float rx, float ry)
 -> Result Shape::appendCircle(float cx, float cy, float rx, float ry, bool cw = true)
  • [C++ API] Removals:
Tvg_Result tvg_swcanvas_set_mempool(Tvg_Canvas* canvas,  Tvg_Mempool_Policy policy)
enum Tvg_Mempool_Policy
  • [C API] Modifications:
TVG_API Tvg_Result tvg_shape_append_circle(Tvg_Paint* paint, float cx, float cy, float rx, float ry)
 -> TVG_API Tvg_Result tvg_shape_append_circle(Tvg_Paint* paint, float cx, float cy, float rx, float ry, bool cw)
Tvg_Result tvg_shape_append_rect(Tvg_Paint* paint, float x, float y, float w, float h, float rx, float ry)
 -> Tvg_Result tvg_shape_append_rect(Tvg_Paint* paint, float x, float y, float w, float h, float rx, float ry, bool cw)
  • [C API] Removals:
Tvg_Result tvg_swcanvas_set_mempool(Tvg_Canvas* canvas,  Tvg_Mempool_Policy policy)
enum Tvg_Mempool_Policy

Full Changelog: v1.0-pre12...v1.0-pre13

ThorVG 1.0.0-pre12

06 Feb 15:44

Choose a tag to compare

ThorVG 1.0.0-pre12 Pre-release
Pre-release

In preparation for the ThorVG 1.0.0 release, we are conducting a pre-release for ThorVG v1.0. Please carefully review the release notes, as there may be API/ABI breaks included. Also, this release includes several improvements and minor bug fixes since v1.0.0-pre11.

  • [WgEngine] Fixed a potential crash caused by exceeding stack memory limits.
  • [WgEngine] Added support for the GaussianBlur scene effect. #3054
  • [Lottie] Improved effect parsing logic to prevent failures in edge cases.
  • [Lottie] Enabled support for expressions in text properties.
  • [Lottie] A minor optimization for internal path generations with a buffer pooling mechanism.
  • [Lottie] Added support for the frame Tweening feature (Experimental ver).
  • [Renderer] Corrected clipping inaccuracies caused by floating-point rounding in viewport calculations.
  • [Renderer] Added exception handling for ColorBurn and ColorDodge blend modes to prevent division by zero errors across render backends.
  • [Renderer] Improved path trimming across render backends. #2854

Full Changelog: v1.0-pre11...v1.0-pre12

ThorVG v0.15.10

30 Jan 12:48

Choose a tag to compare

This release includes several improvements and minor bug fixes:

  • [Renderer] Improved scalability of effects, ensuring proper scaling for blur and drop shadow effects.
  • [SwEngine] Fine-tuned blur performance with a 12% improvement.
  • [GlEngine] Added proper support for Shape::strokeOrder()
  • [Lottie] Improved safety in handling expressions.
  • [Lottie] Revised the effect parsing logic to prevent failures in corner cases.
  • [Portability] Added cstdint header properly for resolving the GCC15 build error. godotengine/godot#102022 (comment)

Full Changelog: v0.15.9...v0.15.10