Add craft-svg-paths: SVG geometry reader (#802)

Reads an SVG's shapes, clips and page size into kurbo paths in millimetres, with a bounded CSS cascade and fail-closed handling of unsupported content. The caller maps style to its own shape kinds.
This commit is contained in:
Dylan M. Taylor
2026-11-11 06:23:12 -05:00
committed by GitHub
parent 34685c4cdc
commit 3dcaa07a81
5 changed files with 2013 additions and 0 deletions
Generated
+9
View File
@@ -1162,6 +1162,15 @@ dependencies = [
"toml_edit",
]
[[package]]
name = "craft-svg-paths"
version = "0.1.0"
dependencies = [
"kurbo 0.13.1",
"roxmltree 0.21.2",
"thiserror 2.0.21",
]
[[package]]
name = "craft-text"
version = "0.1.0"
+1
View File
@@ -51,6 +51,7 @@ craft-print = { path = "crates/print" }
craft-proof = { path = "crates/proof" }
craft-quit = { path = "crates/quit" }
craft-settings = { path = "crates/settings" }
craft-svg-paths = { path = "crates/svg-paths" }
craft-text = { path = "crates/text" }
craft-tiff = { path = "crates/tiff" }
craft-ui = { path = "crates/ui" }
+3
View File
@@ -118,6 +118,9 @@ craft-<name> = { git = "https://github.com/storytold/craft-libs", rev = "<commit
app menu. Unsaved-document decisions and save prompts stay in each app.
- [`craft-settings`](crates/settings/README.md): `config.toml` settings storage for every app: platform folders, portable mode and overrides, atomic saves while running, backup, damaged-file recovery and schema migrations. Policy in [docs/settings-storage.md](docs/settings-storage.md).
- [`craft-svg-paths`](crates/svg-paths/src/lib.rs): SVG geometry reader: shapes,
transforms, `<use>`/`<symbol>` instances and the CSS cascade as Bézier paths in millimetres, each
tagged by the caller. Import only; not the shared SVG model.
- [`craft-text`](crates/text/README.md): text processing below the composer. Its `hyphen` module finds
hyphenation points, with a bundled US English dictionary and patterns and optional hypher patterns
for 47 more languages (one cargo feature each).
+16
View File
@@ -0,0 +1,16 @@
[package]
name = "craft-svg-paths"
description = "SVG geometry reader: shapes, transforms, use/symbol instances and the CSS cascade, as Bézier paths in millimetres"
version.workspace = true
edition.workspace = true
license.workspace = true
rust-version.workspace = true
repository.workspace = true
[lints]
workspace = true
[dependencies]
kurbo = { workspace = true }
roxmltree = "0.21.2"
thiserror = { workspace = true }
File diff suppressed because it is too large Load Diff