Tiny SKia is a [[BSD-3]] licensed 2D graphics library written in [[Rust]]. - Website - [Source](https://github.com/RazrFalcon/tiny-skia) - Documentation - AlternativeTo > A tiny Skia subset ported to Rust # Notability [[GUI - Skia]] but Rust. It's benchmark page is useful for comparing various graphics libraries. # Philosophy > `tiny-skia` should be viewed as a Rust 2D rendering library that uses Skia algorithms internally. We have a completely different public API. The internals are also extremely simplified. But all the core logic and math is borrowed from Skia. Hence the name. > The goal is to provide an absolute minimal, CPU only, 2D rendering library for the Rust ecosystem, with a focus on a rendering quality, speed and binary size. > Currently, `tiny-skia` is 20-100% slower than Skia on x86-64 and about 100-300% slower on ARM. Which is still faster than [cairo](https://www.cairographics.org/) and [raqote](https://github.com/jrmuizel/raqote) in many cases. See benchmark results [here](https://razrfalcon.github.io/tiny-skia/x86_64.html). > Skia is a huge library and we support only a tiny part of. And more importantly, we do not plan to support many feature at all. > As for the porting process itself, Skia uses goto, inheritance, virtual methods, linked lists, const generics and templates specialization a lot, and all of this features are unavailable in Rust. There are also a lot of pointers magic, implicit mutations and caches. Therefore we have to compromise or even rewrite some parts from scratch. # OS Support > Also note, that neither Skia or `tiny-skia` are supporting dynamic CPU detection, so by enabling newer instructions you're making the resulting binary non-portable. - [[AMD64]] - [[ARM]] (Apple [[M1]]) # Features ## Missing Features - Doesn't support text rendering. I assume it needs to be composited with an external text renderer then? - Doesn't support "Advanced Bézier path operations" or "Path effects (except dashing)". - Only supports 8-bit RGBA channels. - No bilinear + mipmap down-scaling support. - Unlike Skia, only `Pattern` is allowed to have opacity. In all other cases you should adjust colors opacity manually. # Tips # References - https://razrfalcon.github.io/tiny-skia/x86_64.html