Status

Blend2D is currently in a beta testing mode, which means that not everything has been finalized and that there may be breaking changes in the future. In addition, the code-base is new and not widely tested so we expect bugs to be discovered by Blend2D users. This page documents the overall status of the project, know issues, and future plans.

Blend2D Development

Continuous Integration

Known Issues

List of known issues that we are addressing:

  • NaNs - at the moment edge-builder doesn't process NaN values correctly and can crash if such NaN is a part of a line or curve. This is a problem that we know about and we are addressing it. The most likely solution is to refuse the whole path in that case and to return an error. Alternative approaches were discussed, but it seems that refusing such geometries completely is the best idea.

Roadmap

Blend2D roadmap provides information about features planned in next releases. It should be seen only as a high-level overview as minor features and tasks are not listed to make the list manageable. Features are sorted by priority, but can be rescheduled at any time if required. All features listed below have a different complexity; they can take a day or a month to implement. The highest priority features are these related to the rendering engine, pipeline generator, and improved text support. All other features like image filtering or IO are low priority.

Feature Status Comment
Multithreaded Rendering In Progress Multithreaded rendering context implementation.
A8 Target Pending Rendering to buffers that use A8 pixel format.
Non-Rectangular Clipping Pending Support for non-rectangular clipping (region-based and/or span-based).
Rational Bezier Curves Designing Support for rational bezier curves (conics) that can represent arcs exactly [Breaking Change].
Perspective Transformations Pending Support for perspective transformations (3x3 matrix) [Breaking Change].
Font Collections Pending Ability to have a font collection that can be used for font queries.
Advanced Text Layout Pending Advanced text layout by using more OT features.
Rasterizer Acceleration Pending Use the advantage of SSE2 in the analytic rasterizer itself (C++ part).
Compound Rasterization Pending Ability to rasterize two or more paths and combine them on-the-fly before final composition.
Gradient Dithering Pending High-performance dithered gradients that prevent banding artifacts.
Color Filters Pending Filters implementing basic color adjustments and color matrix (SVG).
Image Filters Pending Filters implementing Gaussian blur, generic convolution, erode, dilate, and displacement (SVG).
Turbulence / Noise Pending Filters generating turbulence and fractal noise (SVG).
HSL Blend Modes Pending Non-separable HSL blending (PDF specification, cairo/skia compatibility).
Path Boolean Pending Ability to perform boolean operations with two or more graphics paths.
Path on Path Pending Ability to deform a path to be on another path, for implementing text-on-path like effects.
PNG Encoder Pending Ability to encode PNG images (complementary functionality to PNG decoder).
JPEG Encoder Pending Ability to encode JPEG images (complementary functionality to JPEG decoder).