<link rel="match" href="reference/svg-stroke-styles.html" />
<style>
path {
stroke-width: 20;
}
path:nth-of-type(1) {
stroke-linecap: butt;
}
path:nth-of-type(2) {
stroke-linecap: round;
}
path:nth-of-type(3) {
stroke-linecap: square;
}
</style>
<svg width="600" viewBox="0 0 400 300" xmlns="http://www.w3.org/2000/svg">
<!-- Horizontal lines. -->
<path d="M20,20 h40" stroke="red"/>
<path d="M20,50 h40" stroke="yellow" />
<path d="M20,80 h40" stroke="blue" />
<!-- Vertical lines. -->
<path d="M20,250 v-40" stroke="red" stroke-linecap="butt" />
<path d="M50,250 v-40" stroke="yellow" stroke-linecap="round" />
<path d="M80,250 v-40" stroke="blue" stroke-linecap="square" />
<!-- Degenerate lines. -->
<path d="M95,20 h0" stroke="red" stroke-linecap="butt" />
<path d="M95,50 h0" stroke="yellow" stroke-linecap="round" />
<path d="M95,80 h0" stroke="blue" stroke-linecap="square" />
<!-- Degenerate line ends, but actual path. -->
<path d="M130,20 h0 l20,-10 h0" stroke="red" stroke-linecap="butt" />
<path d="M130,50 h0 l20,-10 h0" stroke="yellow" stroke-linecap="round" />
<path d="M130,80 h0 l20,-10 h0" stroke="blue" stroke-linecap="square" />
<!-- Weird line ends. -->
<path d="M190,21 l0,-1 l20,-10 l0,-1" stroke="red" stroke-linecap="butt" />
<path d="M190,51 l0,-1 l20,-10 l0,-1" stroke="yellow" stroke-linecap="round" />
<path d="M190,81 l0,-1 l20,-10 l0,-1" stroke="blue" stroke-linecap="square" />
<!-- Half-open lines. -->
<path d="M240,20 h20 h-20" stroke="red" stroke-linecap="butt"
stroke-linejoin="round" />
<path d="M240,50 h20 h-20" stroke="yellow" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M240,80 h20 h-20" stroke="blue" stroke-linecap="square"
stroke-linejoin="round" />
<!-- Closed lines. -->
<path d="M290,20 h20 z" stroke="red" stroke-linecap="butt"
stroke-linejoin="miter" />
<path d="M290,50 h20 z" stroke="yellow" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M290,80 h20 z" stroke="blue" stroke-linecap="square"
stroke-linejoin="bevel" />
<!-- Open triangle, facing down. -->
<path d="M200,130 h60 L230,170 L200,130" stroke="red"
stroke-linecap="butt" fill="none" />
<!-- Open triangle, facing down, opposite winding order. Bevel linejoins. -->
<path d="M240,210 L270,250 L300,210 h-60" stroke="red"
stroke-linecap="butt" fill="none" stroke-linejoin="bevel" />
<!-- Closed triangle, facing up. (Closed twice, in fact.) -->
<path d="M280,170 h60 L310,130 L280,170 Z Z" stroke="red"
stroke-linecap="butt" fill="none" />
<!-- Very short and wide line. -->
<path d="M370,150 h2" stroke="red"
stroke-linecap="butt" style="stroke-width: 200" fill="none" />
<!-- Very short and wide line with very thin caps -->
<path d="M375,150 h0.01 h1.98 h0.01" stroke="blue"
stroke-linecap="butt" style="stroke-width: 200" fill="none" />
<!-- Closed rect (using <rect>) -->
<rect x="20" y="120" width="50" height="50" stroke="green" fill="none"
stroke-linecap="butt" stroke-linejoin="round" stroke-width="20" />
<!-- Open rect. -->
<path d="M110,170 h50 v-50 h-50 v50" stroke="green" fill="none"
stroke-linecap="butt" stroke-linejoin="round" />
<!-- Small closed rects with line width becoming wider than rect size. -->
<rect x="100" y="200" width="20" height="20" stroke="green"
stroke-linejoin="round" stroke-width="8" fill="none" />
<rect x="130" y="200" width="15" height="15" stroke="green"
stroke-linejoin="round" stroke-width="8" fill="none" />
<rect x="155" y="200" width="10" height="10" stroke="green"
stroke-linejoin="round" stroke-width="8" fill="none" />
<!-- FIXME: Figure out why this is missing the center pixel on mac/arm64
<rect x="175" y="200" width="5" height="5" stroke="green"
stroke-linejoin="round" stroke-width="8" fill="none" /> -->
<!-- Lines with sharp angles, miter linejoins, and differing miter limits. -->
<path d="M300,290 l 5,-55 l5,55" stroke="blue" stroke-linecap="butt"
stroke-linejoin="miter" fill="none" style="stroke-width: 4" />
<path d="M320,290 l 5,-55 l5,55" stroke="blue" stroke-linecap="butt"
stroke-linejoin="miter" fill="none" stroke-miterlimit="20"
style="stroke-width: 4; stroke-miterlimit: -5" />
<!-- PDF 1.7 spec, TABLE 4.6 Examples of line dash patterns. -->
<g fill="none" stroke-linecap="butt" stroke="red" transform="translate(100, 240) scale(3)">
<path d="M0,0 h13" style="stroke-width: 1; stroke-linecap: butt" stroke-dashoffset="0" stroke-dasharray="none" />
<path d="M0,3 h13" style="stroke-width: 1; stroke-linecap: butt" stroke-dashoffset="0" stroke-dasharray="3" />
<path d="M0,6 h13" style="stroke-width: 1; stroke-linecap: butt" stroke-dashoffset="1" stroke-dasharray="2" />
<path d="M0,9 h13" style="stroke-width: 1; stroke-linecap: butt" stroke-dashoffset="0" stroke-dasharray="2 1" />
<path d="M0,12 h13" style="stroke-width: 1; stroke-linecap: butt" stroke-dashoffset="6" stroke-dasharray="3 5" />
<path d="M0,15 h13" style="stroke-width: 1; stroke-linecap: butt" stroke-dashoffset="11" stroke-dasharray="2 3" />
</g>
<!-- Dashed rect with 0 dash length. -->
<rect x="155" y="225" width="30" height="30" fill="none" stroke="green"
style="stroke-linecap: round" stroke-dashoffset="0" stroke-dasharray="0 10" stroke-width="4" />
<!-- Dashed rects with different cap styles. The last one also has a no-op negative scale factor. -->
<rect x="195" y="225" width="30" height="30" fill="none" stroke="green"
style="stroke-linecap: butt" stroke-dashoffset="1" stroke-dasharray="2 2" stroke-width="1" />
<rect x="155" y="265" width="30" height="30" fill="none" stroke="green"
style="stroke-linecap: round" stroke-dashoffset="1" stroke-dasharray="2 2" stroke-width="1" />
<g transform="scale(-1)">
<rect x="-225" y="-295" width="30" height="30" fill="none" stroke="green"
style="stroke-linecap: square" stroke-dashoffset="1" stroke-dasharray="2 2" stroke-width="1" />
</g>
<!-- Triangle with missing side -->
<path d="M230,285 L250,270 L260,295" stroke="blue" fill="green"
style="stroke-width: 4" />
<!-- A single path with multiple segments (closed, open, closed): -->
<path d="M10,270 L20,290 L30,270 z
M30,295 L40,275 L50,295
M50,270 L60,290 L70,270 z"
stroke="blue" fill="none" stroke-linejoin="round"
style="stroke-width: 8" />
<!-- A path where a 'close' is followed by a no-op move. -->
<path d="M175,185 L195,155 L215,185 L175,185 z
M175,185 L199,170"
stroke="blue" fill="none" stroke-linejoin="round"
style="stroke-width: 4" />
</svg>