• Stars
    star
    540
  • Rank 82,257 (Top 2 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 11 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

SVG path low level transformations toolkit

svgpath

CI NPM version Coverage Status

Low level toolkit for SVG paths transformations. Sometimes you can't use transform attributes and have to apply changes to svg paths directly. Then this package is for you :) !

Note: this package works with path data strings, not with full svg xml sources.

Install

npm install svgpath

Example

var svgpath = require('svgpath');

var transformed = svgpath(__your_path__)
                    .scale(0.5)
                    .translate(100,200)
                    .rel()
                    .round(1)
                    .toString();

API

All methods are chainable (return self).

new SvgPath(path) -> self

Constructor. Creates new SvgPath class instance with chainable methods. new can be omited.

SvgPath.from(path|SvgPath) -> self

Similar to Array.from(). Creates SvgPath instance from string or another instance (data will be cloned).

.abs() -> self

Converts all path commands to absolute.

.rel() -> self

Converts all path commands to relative. Useful to reduce output size.

.scale(sx [, sy]) -> self

Rescale path (the same as SVG scale transformation). sy = sx by default.

.translate(x [, y]) -> self

Rescale path (the same as SVG translate transformation). y = 0 by default.

.rotate(angle [, rx, ry]) -> self

Rotate path to angle degrees around (rx, ry) point. If rotation center not set, (0, 0) used. The same as SVG rotate transformation.

.skewX(degrees) -> self

Skew path along the X axis by degrees angle.

.skewY(degrees) -> self

Skew path along the Y axis by degrees angle.

.matrix([ m1, m2, m3, m4, m5, m6 ]) -> self

Apply 2x3 affine transform matrix to path. Params - array. The same as SVG matrix transformation.

.transform(string) -> self

Any SVG transform or their combination. For example rotate(90) scale(2,3). The same format, as described in SVG standard for transform attribute.

.unshort() -> self

Converts smooth curves T/t/S/s with "missed" control point to generic curves (Q/q/C/c).

.unarc() -> self

Replaces all arcs with bezier curves.

.toString() -> string

Returns final path string.

.round(precision) -> self

Round all coordinates to given decimal precision. By default round to integer. Useful to reduce resulting output string size.

.iterate(function(segment, index, x, y) [, keepLazyStack]) -> self

Apply iterator to all path segments.

  • Each iterator receives segment, index, x and y params. Where (x, y) - absolute coordinates of segment start point.
  • Iterator can modify current segment directly (return nothing in this case).
  • Iterator can return array of new segments to replace current one ([] means that current segment should be delated).

If second param keepLazyStack set to true, then iterator will not evaluate stacked transforms prior to run. That can be useful to optimize calculations.

Support svgpath

You can support this project via Tidelift subscription.

More Repositories

1

fontello

Iconic fonts scissors
JavaScript
6,972
star
2

svg2ttf

SVG -> TTF font convertor
JavaScript
520
star
3

ttf2woff

Font convertor, TTF to WOFF, for node.js
JavaScript
345
star
4

brandico.font

Font with logos of social services & messagers
HTML
298
star
5

fontelico.font

Opensource iconic font from Fontello project
CSS
180
star
6

ttf2eot

Font convertor, TTF to EOT, for node.js
JavaScript
139
star
7

font-builder

Set of script to build & transform iconic fonts
C++
122
star
8

wawoff2

WebAssembly build of Google's woff2
JavaScript
72
star
9

svg-font-create

Create SVG font from separate images
JavaScript
69
star
10

cubic2quad

Aproximates cubic bezier curves with quadratic ones.
JavaScript
34
star
11

linecons.font

Transformed Linecons font
CSS
25
star
12

svg-font-dump

Dump svg font to separate images
JavaScript
25
star
13

typicons.font

transformed Typicons
CSS
23
star
14

awesome-uni.font

transformed Font Awesome
HTML
16
star
15

zocial.font

Zocial icons, prepared for fontello
CSS
16
star
16

websymbols-uni.font

transformed WebSymbols font
Makefile
11
star
17

meteocons.font

Meteocons icons, prepared for fontello
CSS
10
star
18

maki.font

Maki icons, prepared for fontell
HTML
7
star
19

modernpics.font

transformed Modern Pictograms
HTML
6
star
20

iconic-uni.font

merged/transformed Iconic Stroke & Iconic Fill
C
5
star
21

weathercons.font

transformed Weather Icons
CSS
4
star
22

elusive.font

transformed Elusive Icons font
CSS
4
star
23

microbuffer

Light implementation of binary buffer with helpers for easy access.
JavaScript
3
star
24

fontello-design

New Fontello design
2
star
25

mfglabs.font

transformed MFG Labs font
CSS
1
star