apike.ca

SVG Paths

The path element is the single most useful tag for creating professional looking SVG documents and it's one of the most difficult tag to hand-code in SVG. It is quite hard to visualize anything but the most simple of paths.

<path>
Attribute
Explanation
d
A set of commands which define the path. (See below)
pathLength
If present then the path will be scaled so that the computed path length of the points equals this value. A negative value is an error. (Note: Unsupported by most viewers)
transform
A list of transformations. See: Transformations
Presentation Attributes

Path Data

The path is defined in the d attribute of the 'path' tag by a string of white space seperated commands and coordinates.

Path commands are case-sensitive, An uppercase command's points use absolute postioning and a lowercase command's points are relative the last point. The one exception to this is the first point always uses absolute postioning.

Command
Parameters
Repeat
Explanation
M
x,y
Yes
moveto: Moves the pen to a new location. No line is drawn. All path data must begin with a 'moveto' command.
Line Commands
L
x,y
Yes
lineto: Draws a line from the current point to the point (x,y).
H
x
Yes
horizontal lineto: Draws a horizontal line from the current point to x.
V
y
Yes
vertical lineto: Draws a vertical line from the current point to y.
Cubic Bezier Curve Commands
C
x1 y1 x2 y2 x y
Yes
curveto: Draw a cubic bezier curve to the point (x,y) where the points (x1,y1) and (x2,y2) are the start and end control points, respectively.
S
x2 y2 x y
Yes
shorthand/smooth curveto: Draw a curve to the point (x,y) where the point (x2,y2) is the end control point and the start control point is the reflection of the last point's end control point.
Quadratic Bezier Curve Commands
Q
x1 y1 x y
Yes
Quadratic Bezier curveto: Draw a quadratic bezier between the last point and point (x,y) using the point (x1,y1) as the control point.
T
x y
Yes
Shorthand/smooth quadratic Bezier curveto: Draw a quadratic bezier between the last point and point (x,y) using the reflection of the last control point as the control point.
Elliptical Arc Curve Commands
A
**
Yes
elliptical arc: Draws and arc from the current point to x, y. The actual scale factor and position of the arc needed to bridge the two points is computed by the SVG viewer.
End Path Commands
z
-
No
closepath: Closes the path. A line is drawn from the last point to the first.
** rx ry x-axis-rotation large-arc-flag sweep-flag x y

Note: To use relative positioning simply use a lowercase letter for the command.

Line Example

Example 1. A path made using lineto commands (Download)
<path d="M100,10 L100,10 40,180 190,60 10,60 160,180 z" stroke="blue" fill="darkblue" stroke-width="4" />
Code 1. The path used in the above example.

Cubic Bezier Example

Example 2. A path made using cubic curves. The control points are circled in red. (Download)
<path d="M40,140 L40,100 10,100 C10,10 90,10 90,100 L60,100 60,140 M140,50 C70,180 195,180 190,100 " stroke="darkgreen" stroke-width="4" fill="url(#hill)" />
Code 2. The path used in the above example.

Quadratic Bezier Example

Example 3. A path made using quadratic bezier curves. The control point is circled in red (click to view). (Download)
<path id="playButton" d="M50,50 Q-30,100 50,150 100,230 150,150 230,100 150,50 100,-30 50,50" stroke="darkblue" stroke-width="4" fill="url(#myFillGrad)" />
Code 3. The path used in the above example.

Elliptical Arc Example

Example 4. A path made using arcs. (Download)
<path d="M10,150 A15 15 180 0 1 70 140 A15 25 180 0 0 130 130 A15 55 180 0 1 190 120" stroke="lightgreen" stroke-width="4" fill="none" marker-mid="url(#marker2)" marker-end="url(#marker1)" />
Code 4. The path used in the above example.
Related Topics