Compute bounding boxes of SVG paths.
npm install svg-path-bbox[![NPM version][npm-version-image]][npm-link]
[![License][license-image]][license-link]
[![NodeJS versions][npm-versions-image]][npm-link]
SVG paths bounding box calculator.
[![Tests][tests-image]][tests-link]
[![Coverage status][coveralls-image]][coveralls-link]
``sh`
npm install svg-path-bbox
`javascript`
> import { svgPathBbox } from "svg-path-bbox";
> svgPathBbox("M5 10l2 3z")
[ 5, 10, 7, 13 ]
> svgPathBbox("M5 10c3 0 3 3 0 3z")
[ 5, 10, 7.25, 13 ]
Returned bounding box is an array made up like viewBox SVG attributes [x0, y0, x1, y1] of unrounded values:
`bash
$ svg-path-bbox "M5 10c3 0 3 3 0 3z"
5 10 7.25 13
$ svg-path-bbox "M5 10c3 0 3 3 0 3z" "M2 8m5 5z"
5 10 7.25 13
2 8 7 13
`
`typescript
import { svgPathBbox } from "svg-path-bbox";
import type { BBox } from "svg-path-bbox";
const cases: [string, BBox][] = [["M0 0H3V6Z", [0, 0, 3, 6]]];
console.log(svgPathBbox(cases[0]));
`
# svgPathBbox(d : _string_ | typeof import('svgpath')) ⇒ [minX: _number_, minY: _number_, maxX: _number_, maxY: _number_]
Computes the bounding box of SVG path following the SVG 1.1 specification.
- d (_string_ | typeof import('svgpath')) SVG path. Can be a string or a SvgPath` interface from [svgpath].
- simple-icons/simple-icons for reference dataset.
- kpym/SVGPathy for reference implementation.
- icons8/svg-path-bounding-box because their bug has been the source of this library.
- mathandy/svgpathtools for reference implementation to compare with.
- svgpath as is used internally by svg-path-bbox to parse and transform paths before compute bounding boxes.
[npm-link]: https://www.npmjs.com/package/svg-path-bbox
[npm-version-image]: https://img.shields.io/npm/v/svg-path-bbox
[tests-image]: https://img.shields.io/github/actions/workflow/status/mondeja/svg-path-bbox/ci.yml?branch=master&logo=github&label=tests
[tests-link]: https://github.com/mondeja/svg-path-bbox/actions?query=workflow%3ATest
[coveralls-image]: https://coveralls.io/repos/github/mondeja/svg-path-bbox/badge.svg?branch=master
[coveralls-link]: https://coveralls.io/github/mondeja/svg-path-bbox?branch=master
[license-image]: https://img.shields.io/npm/l/svg-path-bbox?color=brightgreen
[license-link]: https://github.com/mondeja/svg-path-bbox/blob/master/LICENSE
[npm-versions-image]: https://img.shields.io/node/v/svg-path-bbox
[svgpath]: https://www.npmjs.com/package/svgpath