Skip to content

Releases: thorvg/thorvg

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

ThorVG 1.0.0-pre11

23 Jan 17:52

Choose a tag to compare

ThorVG 1.0.0-pre11 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-pre10.

  • [SwEngine] Fixed stride assignment to prevent buffer overflow. #3109
  • [SwEngine] Fixed buffer overflow in texture mapping by adding bounds checking. #3102
  • [SwEngine] Improved scalability of effects, ensuring proper scaling for blur and drop shadow effects.
  • [SwEngine] Fine-tuned blur performance with a 12% improvement.
  • [GlEngine] Corrected blending equations for ColorDodge and ColorBurn modes. #3072
  • [GlEngine] Added proper support for Shape::strokeOrder()
  • [Lottie] Fixed text stroke and fill layering order. #3126
  • [Lottie] Improved safety in handling expressions.
  • [Lottie] Updated `Animation::segment() specifications from normalized value parameters to frame counts.
  • [SVG] Added support for the Gaussian blur effect. #1367
  • [Portability] Ensured compatibility with Zephyr RTOS by addressing necessary includes and float promotions.
  • [Renderer] Revised the clamp() function to reduce unexpected overhead in web rendering.
  • [Web] Fixed a build issue related to the EMSCRIPTEN_WEBGL_CONTEXT_HANDLE declaration.
  • [Web] Fixed a build issue with the wgpu_native dependency.
  • [C++ API] Modifications:
Result Shape::fillColor(uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a = nullptr) const
 -> Result Shape::fill(uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a = nullptr) const
uint32_t Shape::pathCoords(const Point** pts) const
uint32_t Shape::pathCommands(const PathCommand** cmds) const
 -> Result Shape::path(const PathCommand** cmds, uint32_t* cmdsCnt, const Point** pts, uint32_t* ptsCnt) const
  • [C API] Modifications:
Tvg_Result tvg_shape_get_path_coords(const Tvg_Paint* paint, const Tvg_Point** pts, uint32_t* cnt)
Tvg_Result tvg_shape_get_path_commands(const Tvg_Paint* paint, const Tvg_Path_Command** cmds, uint32_t* cnt)
 -> Tvg_Result tvg_shape_get_path(const Tvg_Paint* paint, const Tvg_Path_Command** cmds, uint32_t* cmdsCnt, const Tvg_Point** pts, uint32_t* ptsCnt)

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

ThorVG 0.15.9

16 Jan 23:43

Choose a tag to compare

This release includes several improvements and minor bug fixes:

  • [SwEngine] Corrected blending equations for ColorDodge, ColorBurn, Exclusion, and SoftLight modes. #3072
  • [SwEngine] Fixed stride assignment to prevent buffer overflow. #3109
  • [SwEngine] Fixed buffer overflow in texture mapping by adding bounds checking. #3102
  • [GlEngine] Corrected blending equations for ColorDodge and ColorBurn modes. #3072
  • [Lottie] Enhanced Slot Overriding Transform properties. #2591
  • [Lottie] Fixed text stroke and fill layering order. #3126
  • [Portability] Fixed a minor runtime error on macOS. #3102
  • [Portability] Ensured compatibility with Zephyr RTOS by addressing necessary includes and float promotions.

Full Changelog: v0.15.8...v0.15.9

ThorVG 1.0.0-pre10

09 Jan 15:14

Choose a tag to compare

ThorVG 1.0.0-pre10 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-pre9.

  • [SwEngine] Fixed a regression issue with viewport clipping when resizing a Picture. #3039
  • [SwEngine] Resolved a regression bug causing broken clipping results during stroke clipping.
  • [SwEngine] Addressed an issue with RLE cell building that caused horizontal line artifacts. #2929
  • [SwEngine] Corrected blending equations for ColorDodge, ColorBurn, Exclusion, and SoftLight modes. #3072
  • [WgEngine] Corrected blending equations for ColorDodge and ColorBurn modes. #3072
  • [GlEngine] Improved handling of zero-length paths with stroke caps. #3065
  • [GlEngine] Optimized the binary size, reducing it by up to 10KB through internal refactoring.
  • [Lottie] Fixed a regression bug where masking clipping was not properly applied.
  • [Lottie] Enhanced Slot Overriding Transform properties. #2591
  • [SVG] Fixed regression bugs related to broken clipPath. #3083 #3082
  • [SVG] Resolved an issue with incorrect transformation order for clip children.
  • [SVG] Improved feature compatibility for SVG clipping and masking. #3089
  • [Portability] Fixed a minor runtime error on macOS. #3102
  • [C++ API] Modifications:
enum class FillRule:Winding
 -> enum class FillRule::NonZero
GlCanvas::target(int32_t id, uint32_t w, uint32_t h, ColorSpace cs)
 -> GlCanvas::target(void* context, int32_t id, uint32_t w, uint32_t h, ColorSpace cs)
  • [C API] Modifications:
enum Tvg_Fill_Rule::TVG_FILL_RULE_WINDING
 -> enum Tvg_Fill_Rule::TVG_FILL_RULE_NON_ZERO
 Result target(int32_t id, uint32_t w, uint32_t h, ColorSpace cs) 
 -> Result target(void* context, int32_t id, uint32_t w, uint32_t h, ColorSpace cs)

Full Changelog: v1.0-pre9...v1.0-pre10

ThorVG 0.15.8

02 Jan 23:24

Choose a tag to compare

This release includes several improvements and minor bug fixes:

  • [SwEngine] Improved handling of zero-length paths with Stroke Caps. #3065
  • [SwEngine] Corrected the rle cell building. #2929
  • [GlEngine] Improved handling of zero-length paths with Stroke Caps. #3065
  • [Lottie] Added support for Stroke Layer Effect. #2718
  • [Lottie] Fixed a regression in masking logic introduced in v0.15.7.
  • [Lottie] Improved compatibility for Windows OS by addressing file reading issues caused by \r\n line endings.
  • [Svg] Fixed transformation order for clips defined by a use node.

Full Changelog: v0.15.7...v0.15.8

ThorVG 1.0.0-pre9

26 Dec 16:27

Choose a tag to compare

ThorVG 1.0.0-pre9 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-pre8.

  • [Renderer] Added support for Fill, Tint, and Tritone Scene Effects (experimental), expanding the range of creative visual effects.
  • [Renderer] Enhanced internal data structures, resulting in up to a 4% improvement in rendering performance.
  • [Renderer] Corrected the handling of dash offset values. #1643
  • [SwEngine] Addressed incorrect radial gradient calculations for 8-bit rasterization.
  • [SwEngine] Managed clippers with boundaries extending beyond the rendering region. #2684, #3003
  • [SwEngine] Allowed stroke clipping behavior. #3063
  • [SwEngine] Improved handling of zero-length paths with Stroke Caps. #3065
  • [GlEngine] Fixed gradient color rendering issues when shape opacity is applied. #3030, #3032
  • [Lottie] Added support for Fill, Tint, Tritone, and Stroke Layer Effects. #2718
  • [Lottie] Refined masking logic and corrected mask offset application.
  • [Lottie] Optimized fast-track masking for better performance.
  • [Lottie] Improved compatibility for Windows OS by addressing file reading issues caused by \r\n line endings.
  • [Web] Added exceptional handling for WebGPU initialization failures to improve stability.
  • [Infra] Removed the ASYNCFY option to reduce the wgpu binary size by -36%
  • [Infra] Updated deprecated Meson functions to ensure compatibility and maintainability.
  • [C++ API] Modifications:
Result Accessor::set(Picture* picture, std::function<bool(const Paint* paint, void* data)> func, void* data)
 -> Result Accessor::set(Paint* paint, std::function<bool(const Paint* paint, void* data)> func, void* data)

Full Changelog: v1.0-pre8...v1.0-pre9