The <textPath> SVG element is used to render text along the shape of a <path> element. The text must be enclosed in the <textPath> element and its href attribute is used to reference the desired <path>.
| Categories | Text content element, Text content child element |
|---|---|
| Permitted content | Character data and any number of the following elements, in any order: Descriptive elements <a>, <animate>, <set>, <tspan> |
hrefThe URL to the path or basic shape on which to render the text. If the path attribute is set, href has no effect. Value type: <URL>; Default value: none; Animatable: yes
lengthAdjustWhere length adjustment should be applied to the text: the space between glyphs, or both the space and the glyphs themselves. Value type: spacing | spacingAndGlyphs; Default value: spacing; Animatable: yes
methodWhich method to render individual glyphs along the path. Value type: align | stretch; Default value: align; Animatable: yes
path The path on which the text should be rendered. Value type: <path_data>; Default value: none; Animatable: yes
side Which side of the path the text should be rendered. Value type: left | right; Default value: left; Animatable: yes
spacingHow space between glyphs should be handled. Value type: auto | exact; Default value: exact; Animatable: yes
startOffsetHow far the beginning of the text should be offset from the beginning of the path. Value type: <length> | <percentage> | <number>; Default value: 0; Animatable: yes
textLengthThe width of the space into which the text will render. Value type: <length> | <percentage> | <number>; Default value: auto; Animatable: yes
This element implements the SVGTextPathElement interface.
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
<!-- to hide the path, it is usually wrapped in a <defs> element -->
<!-- <defs> -->
<path
id="MyPath"
fill="none"
stroke="red"
d="M10,90 Q90,90 90,45 Q90,10 50,10 Q10,10 10,40 Q10,70 45,70 Q70,70 75,50" />
<!-- </defs> -->
<text>
<textPath href="#MyPath">Quick brown fox jumps over the lazy dog.</textPath>
</text>
</svg>