# raqote backend for resvg `resvg` backend implementation using the [raqote] library. **Warning**: the `raqote` library is still in development and pretty unstable. You should prefer other backends. This backend intentionally doesn't provide a C API. ## Build Right now, this is the only backend that uses Rust-based 2D library, therefore building process is fairly straightforward. Sadly, you still need a C++ compiler to build [harfbuzz](https://github.com/harfbuzz/harfbuzz). ### on Windows using MSVC Install `stable-x86_64-pc-windows-msvc` [Rust] target. Build using `x64 Native Tools Command Prompt for VS 2017` shell: ```batch set PATH=%userprofile%\.cargo\bin;%PATH% rustup.exe default stable-x86_64-pc-windows-msvc cargo.exe build --release ``` ### on Windows using MSYS2 Install `stable-x86_64-pc-windows-gnu` [Rust] target. And then: ```sh pacman -S mingw-w64-x86_64-gcc rustup default stable-x86_64-pc-windows-gnu cargo build --release ``` You can use i686 target in the same way. ### on Linux Install `harfbuzz` using your distributive's package manager. On Ubuntu you can install it via: ```sh sudo apt install libharfbuzz-dev ``` Build `resvg`: ```sh cargo build --release ``` ### on macOS ```sh cargo build --release ``` ## Runtime dependencies `harfbuzz` on Linux. On other OS'es it will be built statically. ## Running resvg CLI ```sh cargo run --release -- in.svg out.png ``` The resulting binary can be found at: `target/release/resvg-raqote` ## Running examples A simple SVG to PNG converter: ```sh cargo run --example minimal -- in.svg out.png ``` Render image using a manually constructed SVG render tree: ```sh cargo run --example custom_rtree ``` Draw bounding boxes around all shapes on input SVG: ```sh cargo run --example draw_bboxes -- bboxes.svg bboxes.png -z 4 ``` ## License [MPLv2.0](https://www.mozilla.org/en-US/MPL/). [raqote]: https://github.com/jrmuizel/raqote [Rust]: https://www.rust-lang.org/tools/install