mirror of
https://github.com/storytold/craft-libs.git
synced 2026-11-12 10:03:51 +00:00
* craft-svg paths: a shape carries the name of its Inkscape layer Shape::layer is the inkscape:label (else the id) of the innermost <g inkscape:groupmode="layer"> around the element, so a CAD or cutter import can keep the drawing's layers. * craft-svg guard: bound attributes per element and over the document; find entities holding markup too_wide is the attribute check of storytold/figcraft#2251: an XML reader checks each attribute against the earlier ones on its element, so an element with millions of them is quadratic work before any other limit applies. entity_holds_markup lets a caller refuse a document type whose entities become elements, as PhotoCraft does. * craft-svg: feature `tree`, usvg behind one bounded entry point usvg 0.48.1 (Apache-2.0 OR MIT), re-exported as craft_svg::tree::usvg, so every app parses with one version and one set of checks: tree::parse runs svgz, the entity, attribute and nesting guards, the reference-chain height (VectorCraft's depth::height, on this crate's cascade), then usvg. tree::image_resolver bounds embedded SVGs (FigCraft's budget::resolver). tree::draw bounds what drawing a tree with resvg allocates (PhotoCraft's svg/limits.rs). Part of #778 and #789.