NovaSVG
A header-only C++17 SVG renderer: parse, query, restyle and rasterize SVG with one #include.
Documentation · Benchmarks · Single header · Python · Issues
Why NovaSVG
- Nothing to link. Drop in
novasvg.h(or theinclude/folder) and you are done. No submodules, no system libraries, no fontconfig. - Renders what real diagrams contain. Gradients, patterns, clip paths, masks, markers, a full SVG filter pipeline, CSS styling, embedded fonts, and
<foreignObject>text, which is what Mermaid uses for every label. - Close to a browser. Compared against Chromium on a 60-sample corpus, including 49 Mermaid diagrams. See how it stacks up.
- More than a renderer. Query elements with CSS selectors, rewrite styles, read bounding boxes and matrices, and render a single element on its own.
- Three ways in. C++ library, a
novasvgcommand-line tool, and Python bindings with no dependencies. - Portable. Windows, Linux and macOS, with the same text layout on every platform.
Quick start
C++
#include <novasvg/novasvg.h>
#include <iostream>
int main() {
auto doc = novasvg::Document::loadFromFile("artwork.svg");
if (!doc) return 1;
// 640 px wide, height follows the aspect ratio, white background
auto bitmap = doc->renderToBitmap(640, -1, novasvg::Color::white());
bitmap.writeToPng("artwork.png"); // also writeToJpg / writeToBmp / writeToTga
// Query it like a DOM
for (auto& rect : doc->querySelectorAll("rect"))
std::cout << rect.getAttribute("id") << '\n';
std::cout << doc->width() << " x " << doc->height() << '\n';
}
g++ -std=c++17 -O2 -Iinclude main.cpp -o main
Command line
novasvg input.svg # -> input.png
novasvg input.svg -o out.png -w 800 -b FFFFFF # width 800, white background
novasvg input.svg --style "rect { fill: tomato; }" # restyle before rendering
novasvg info input.svg # size, bounding box, element count
novasvg query "circle" input.svg --json # CSS-selector search
novasvg batch svg_dir/ png_dir/ # convert a whole folder
Python
pip install novasvg # no dependencies; NumPy is only needed for Bitmap.numpy()
import novasvg
novasvg.svg2png("artwork.svg", "artwork.png", width=800) # one call
doc = novasvg.Document.load_from_file("artwork.svg") # or keep the document
bitmap = doc.render_to_bitmap(width=800)
bitmap.write_to_png("artwork.png")
More in README_PYTHON.md.
Installation
Single header. Download novasvg.h and include it. Every function is inline, so it is safe to include from any number of translation units.
Copy the headers. Put include/novasvg/ in your project and #include <novasvg/novasvg.h>.
CMake FetchContent.
include(FetchContent)
FetchContent_Declare(novasvg
GIT_REPOSITORY https://github.com/MohammadRaziei/novasvg.git
GIT_TAG master)
FetchContent_MakeAvailable(novasvg)
target_link_libraries(my_app PRIVATE novasvg::novasvg)
Installed package.
cmake -B build && cmake --build build -j
sudo cmake --install build
find_package(novasvg REQUIRED)
target_link_libraries(my_app PRIVATE novasvg::novasvg) # or novasvg::noflag for no extra compile flags
Building from source also produces the novasvg command-line tool at build/novasvg.
How it compares
The same SVGs rendered by each engine, with Chromium as the reference. These samples were picked because the engines disagree on them.
| Sample | Chromium | novasvg | resvg | lunasvg | cairosvg | thorvg | nanosvg |
|---|---|---|---|---|---|---|---|
clip-mask |
|||||||
mermaid-02-flowchart |
|||||||
css-use-symbol |
|||||||
mermaid-47-flowchart-br-bold-label |
|||||||
mermaid-33-treemap |
|||||||
gradient-filter |
|||||||
mermaid-40-erd-relations |
|||||||
mermaid-01-venn |
|||||||
filter-primitives |
|||||||
mermaid-32-radar |
Want the numbers behind the pictures? The full benchmark page lists every one of the 60 samples with its RMSE against Chromium and its render time in ms for every engine. You can click any render to zoom in.
👉 mohammadraziei.github.io/novasvg/benchmarks
You can also rebuild all of it yourself; see benchmarks/README.md.
What it renders
| Area | Supported |
|---|---|
| Shapes and paths | rect, circle, ellipse, line, polyline, polygon, path, markers |
| Painting | solid colors, linear and radial gradients, patterns, opacity, mix-blend-mode |
| Compositing | clip-path, mask (luminance), nested groups, <use> / <symbol>, <switch> |
| Filters | feGaussianBlur, feOffset, feFlood, feComposite (Over, In, Out, Atop, Xor, arithmetic), feMerge, feDropShadow, with real in / in2 / result chaining |
| CSS | <style> sheets, class and attribute selectors, style="", !important, the CSS transform: property |
| Images | <image> with base64 data URIs |
| Text | system fonts, built-in fallback font, @font-face with embedded TTF/OTF, <foreignObject> text with word-wrap |
Not implemented yet: per-primitive filter regions, feColorMatrix / feTurbulence / feDisplacementMap, WOFF/WOFF2 fonts, and full HTML/CSS layout inside <foreignObject>. See checklist.md and COMPARISON.md for details.
Fonts
Font lookup works like a browser, with no OS font library involved. A font-family stack is walked name by name: an installed or registered font first, then a metric-compatible stand-in (arial → Liberation Sans / Arimo, times new roman → Liberation Serif / Tinos, calibri → Carlito, ...), then the generic keywords. A ~40 KB Latin subset of DejaVu Sans is compiled in as the last resort, so text renders even on a machine with no fonts installed. For the best fidelity, install a metric-compatible family such as fonts-liberation.
novasvg::addFontFaceFromFile("Inter", /*bold=*/false, /*italic=*/false, "Inter-Regular.ttf");
Disable the embedded font with -DNOVASVG_EMBED_DEFAULT_FONT=OFF or by defining NOVASVG_DISABLE_EMBEDDED_FONT.
API overview
| Class | Main members |
|---|---|
Document |
loadFromFile() · loadFromData() · renderToBitmap() · querySelectorAll() · getElementById() · applyStyleSheet() · width() / height() · boundingBox() |
Element |
getAttribute() / setAttribute() / hasAttribute() · render() · getLocalBoundingBox() / getGlobalBoundingBox() · getLocalMatrix() / getGlobalMatrix() |
Bitmap |
writeToPng() / writeToJpg() / writeToBmp() / writeToTga() · data() (ARGB32 premultiplied) · width() / height() / stride() · convertToRGBA() |
Matrix |
translate() · scale() · rotate() · shear() · inverse() · operator* |
Full reference: mohammadraziei.github.io/novasvg, or build it locally with -DNOVASVG_BUILD_DOCS=ON.
Command-line reference
| Option | Description |
|---|---|
-o, --output <file> |
Output PNG (default: input name with .png) |
-w, --width <px> / -H, --height <px> |
Output size |
-s, --scale <factor> |
Scale factor, e.g. 2.0 |
-b, --background-color <hex> |
RRGGBB or RRGGBBAA (default: transparent) |
--style <css> / --css-file <file> |
Apply CSS before rendering |
| Subcommand | Description |
|---|---|
convert |
Convert to PNG. This is the default, so novasvg in.svg works on its own |
info |
Size, bounding box and element count; add --json for machine-readable output |
query |
Find elements by CSS selector, e.g. novasvg query "rect[fill='red']" in.svg |
batch |
Convert every SVG in a directory |
novasvg --help and novasvg <subcommand> --help always list the current options.
Build options
| Option | Description | Default |
|---|---|---|
NOVASVG_BUILD_EXAMPLES |
Build the C++ examples | ON when top-level |
NOVASVG_BUILD_TESTS |
Build the unit tests | ON when top-level |
NOVASVG_BUILD_PYTHON |
Build the Python bindings | ON when top-level |
NOVASVG_BUILD_DOCS |
Build the docs with Doxygen | OFF |
NOVASVG_INSTALL |
Install the CMake package (novasvg::novasvg, novasvg::noflag) |
ON when top-level |
NOVASVG_DIST_DIR |
Generate the single-header distribution into this directory | unset |
NOVASVG_EMBED_DEFAULT_FONT |
Compile in the fallback font | ON |
Repository layout
include/novasvg/ the library (novasvg.h + detail/)
src/ command-line tool and Python bindings
examples/cpp/ small runnable samples
tests/ C++ (doctest) and Python (pytest) tests
benchmarks/ comparison against resvg, lunasvg, thorvg, nanosvg, cairosvg and Chromium
data/ sample SVGs, Mermaid corpus, bundled fonts
docs/ documentation site sources
Contributing
Issues and pull requests are welcome. Please fork, work on a feature branch, add a test when you change behaviour, and open a PR.
cmake -B build -DNOVASVG_BUILD_TESTS=ON && cmake --build build -j
ctest --test-dir build
License
Acknowledgments
NovaSVG grew out of the architecture of lunasvg, restructured as a flat, dependency-free, single-header library. The story is in docs/about.md.
Metadata
Release files for novasvg 0.10.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| novasvg-0.10.1.tar.gz | 8.9 MB | Details |
Built distributions (wheels)
Total release size: 40.7 MB
Release files / novasvg-0.10.1.tar.gz
| Download URL | novasvg-0.10.1.tar.gz |
|---|---|
| Size | 8.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1206df67cc0693702de1daa36778a40585e142af64c8680006c0d94945ac5d7f
|
|
BLAKE2b-256 checksum How to use checksums |
ea498a5d54d257b6a7efa0a983045e68ee5e9426e95766dc06a40e3329e26688
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp312-abi3-win_amd64.whl
| Download URL | novasvg-0.10.1-cp312-abi3-win_amd64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.12 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
ebe4a9dd71536489b3696bf84325d0ed2c2f41790d8ce6e02c9d352fa9177905
|
|
BLAKE2b-256 checksum How to use checksums |
b21e7b9769b1bc9ffd53f48a5d3df925f57a42f13591dba539e8d61ece19cd91
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp312-abi3-win32.whl
| Download URL | novasvg-0.10.1-cp312-abi3-win32.whl |
|---|---|
| Size | 990.7 kB |
| Tags | CPython 3.12 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
1639b3a3af61975a9b4808d74ee9ceaa7d55162db56dbe965f3c24049e3d1a38
|
|
BLAKE2b-256 checksum How to use checksums |
933072e83a1e6111c856a95df82796be4b178eb0b02264d75fae22a61e6af410
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp312-abi3-musllinux_1_2_x86_64.whl
| Download URL | novasvg-0.10.1-cp312-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
0b489285efe8c3b1a1eecd9bc3dc8069c3df2cf7b834d15d35f38548b78f85e8
|
|
BLAKE2b-256 checksum How to use checksums |
166d31ba9ce7d7b95a57a5098c36ce75f802932c2b13a2d1d586005344b53433
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | novasvg-0.10.1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
137dc3ba317bf70287e22493d67df7fe5135ce1fdabb07c0b0dae8982c66da1d
|
|
BLAKE2b-256 checksum How to use checksums |
fb7357fda77f65189bb509a44f30251664d977a264f02e6212752919594ddc72
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp312-abi3-macosx_10_15_universal2.whl
| Download URL | novasvg-0.10.1-cp312-abi3-macosx_10_15_universal2.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.12 abi3 macOS 10.15+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
1048a61e7934d0a1ff31005601af0a0a7a0f5f01dd7059adebd92df0727ef486
|
|
BLAKE2b-256 checksum How to use checksums |
06c1c3902a22a6bf9c8022b44678ae1ec2b0c39d8b902372b67cca4a2538c6a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp311-cp311-win_amd64.whl
| Download URL | novasvg-0.10.1-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
81228ea2268febf3944826d7d66991f0905e32b1f859d44c255d206a33f261c8
|
|
BLAKE2b-256 checksum How to use checksums |
c1270e6a2f9233de0e4897cd4829b9a391a67ecd931c0694bcf3de02e360c29a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp311-cp311-win32.whl
| Download URL | novasvg-0.10.1-cp311-cp311-win32.whl |
|---|---|
| Size | 991.9 kB |
| Tags | CPython 3.11 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
1804eedbec0f43251288a6dcb906f713949435d38b7c4f873bbdad52862b7307
|
|
BLAKE2b-256 checksum How to use checksums |
5993e12fcf0eb7806c4a1c92bf03a85e5a424640ba12b6a58b95506c42ab3750
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp311-cp311-musllinux_1_2_x86_64.whl
| Download URL | novasvg-0.10.1-cp311-cp311-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
14da5cb9484c0c0aaf450b9a65fedada33a0e11dcc50f79d4c2f53d2210d1da7
|
|
BLAKE2b-256 checksum How to use checksums |
fe9a2edc13883cf2b53518d6d2382b066fd13b5bea4d0b9307a6a28065914d92
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | novasvg-0.10.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
12d58f342cd31d180cff89c34d30bbed62303d29dc7e9dd7cd885937cafe1a7e
|
|
BLAKE2b-256 checksum How to use checksums |
976895e918c054493c48ad5daa87ed4ff046766152391cc1621c4f295b8f4312
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp311-cp311-macosx_10_15_universal2.whl
| Download URL | novasvg-0.10.1-cp311-cp311-macosx_10_15_universal2.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.11 macOS 10.15+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
0010d97d0aab4c4fe468fbfb9769bc1db05732ccdce3b6dc1906bbd99acb2a29
|
|
BLAKE2b-256 checksum How to use checksums |
144914b8f1ba1cba410b80ee1d53777fe8b481e513c06305d2f3a598f3f75c86
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp310-cp310-win_amd64.whl
| Download URL | novasvg-0.10.1-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
8aa289bfe7d6d334faf524c05775e258c9cff2d2a977de0cb5fd5dce818b5e42
|
|
BLAKE2b-256 checksum How to use checksums |
64d9f845a1ee9c0551a94f674b9127bdd07c910b486f17f470c8a2a8e5377d95
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp310-cp310-win32.whl
| Download URL | novasvg-0.10.1-cp310-cp310-win32.whl |
|---|---|
| Size | 991.7 kB |
| Tags | CPython 3.10 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
fc7635aa35d28f382f553b3caab86e28aaa29bfec4a297b37a4d09f068b0e45a
|
|
BLAKE2b-256 checksum How to use checksums |
332b98c092da450afd7e922c1f08df11e420a68146dcd12f5ff12c0a467111f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp310-cp310-musllinux_1_2_x86_64.whl
| Download URL | novasvg-0.10.1-cp310-cp310-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
532cf4232131d9c161a352fd9643e5274320068f10df2a62e222d2474414277e
|
|
BLAKE2b-256 checksum How to use checksums |
f512ea35b6016de2d0f8d1c5b31b1d8da872b4371a5cc48a9ed342f788bac474
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | novasvg-0.10.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
e1998dd537b15b0fa6a7176c0c595b9bd60166379763b7926eed4f6ed77e1311
|
|
BLAKE2b-256 checksum How to use checksums |
8ea9aa26e79ec12a2bc11c43923b0ab0b6826a99b7fdedd5c6452fa4e51c4f72
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp310-cp310-macosx_10_15_universal2.whl
| Download URL | novasvg-0.10.1-cp310-cp310-macosx_10_15_universal2.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.10 macOS 10.15+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
49d6f250f78c05eb24767da728829674d486e055e0e692efb2a59db3e5e57a94
|
|
BLAKE2b-256 checksum How to use checksums |
6ec73dd600858a442b5f00250cad53551dded59436067c209ba8ac03109ca0c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp39-cp39-win_amd64.whl
| Download URL | novasvg-0.10.1-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
116a963174936472aef0e4898dba931bf73ddbec9dd964253e9c1a45d57f6263
|
|
BLAKE2b-256 checksum How to use checksums |
94cc7f6984a6f906cf39a4bbaab80fc8323c8bc1b1483b49b8bacf04c6980d68
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp39-cp39-win32.whl
| Download URL | novasvg-0.10.1-cp39-cp39-win32.whl |
|---|---|
| Size | 973.7 kB |
| Tags | CPython 3.9 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
69add6dd66f5cde50cd2d5b4f65002f9fc510b5ec2c8bb73209361e4c00fb308
|
|
BLAKE2b-256 checksum How to use checksums |
9a56ce115c6010f38890469d85857102122a5302adcf8e34d465cf52f2b4da34
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp39-cp39-musllinux_1_2_x86_64.whl
| Download URL | novasvg-0.10.1-cp39-cp39-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
95dab829491045601e581ef721c84947f67dc3f2746f994368d31150114667b2
|
|
BLAKE2b-256 checksum How to use checksums |
22e8444c980aea4742237e0c758835eccc727cb6d92abbac0d1c618c53439824
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | novasvg-0.10.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
fc2c67100df97396e3c537ac8038cef4c9fbed5d6adc71ecac3370456d0ab904
|
|
BLAKE2b-256 checksum How to use checksums |
d42888690feea1aab6179e46cd954cdca0b09c09cf08cedea65e702ec85cb2e1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / novasvg-0.10.1-cp39-cp39-macosx_10_15_universal2.whl
| Download URL | novasvg-0.10.1-cp39-cp39-macosx_10_15_universal2.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.9 macOS 10.15+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
990eb2b5fbc5689d2f4329a35781fa70a780ac047d288ec0a6451ed4c48899fc
|
|
BLAKE2b-256 checksum How to use checksums |
e551b66ef69496695d5110a7d7ad4c614ef781435383725a3b8b9ecbdca5e5fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|