25 unstable releases (5 breaking)
0.6.0 | Feb 6, 2023 |
---|---|
0.4.0 | Jan 27, 2023 |
0.3.7 | Oct 24, 2022 |
0.3.5 | May 23, 2022 |
0.1.0 | Sep 28, 2020 |
#26 in Graphics APIs
4,073 downloads per month
Used in 24 crates
(13 directly)
300KB
7K
SLoC
femtovg
Join the femtovg Discord channel
Work in progress!
Antialiased 2D vector drawing library written in Rust. Ported from https://github.com/memononen/nanovg
Most of the implementation is the same as the original C code with some bug fixes, some features added and several parts have been made more Rust-y. Rendering is done via one OpenGl (ES) 3.0+ backend.
Screenshots
Demo
Run with
cargo run --example demo
Breakout
Run with
cargo run --example breakout
SVG
Run with
cargo run --example svg
Text
Run with
cargo run --example text
Features
- Anti-aliasing
- Bézier paths filling and stroking
- Solid color and image pattern fills and strokes
- Gradients - box, linear and radial
- Stroke width and miterlimit
- Stroke caps: butt, round and square
- Stroke joins: miter, round and bevel
- Fill rules - EvenOdd/NonZero
- Rectangle scissoring
- Composition modes (SourceOver, SourceIn, SourceOut, Atop, etc..)
- Global alpha
- Text filling and stroking
- Text shaping
- Text alignment: (left center right), (top, middle, alphabetic, bottom)
- Nearest font matching
- Path hit testing
- OpenGl ES2 backend
In progress
Not supported
- Stroke dashing
- Path scissoring
- Custom shaders
- 3D transforms
- Color fonts
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
Fonts used in examples:
- Roboto licensed under Apache license
- Entypo licensed under CC BY-SA 4.0.
- Amiri licensed under SIL Open Font License, Version 1.1
Dependencies
~6–13MB
~245K SLoC