Text to Shape
Extracts glyph outlines from TextData as vector shape paths. Enables treating text as geometry for deformation, attributes, and custom rendering.
Category: Shapes Menu path: Shapes > Text to Shape
Ports
| Port | Type | Direction | Description |
|---|---|---|---|
text_in | text | input | TextData to convert (from Text or TextAnimate) |
out | shape | output | ShapeData containing glyph outline paths |
Parameters
None.
How It Works
TextToShape converts each glyph in the TextData into bezier outline paths, positioned according to the computed layout. The output is standard ShapeData that can flow through the full shape pipeline (ShapeDeform, ShapeAttributes, DrawShape, etc.).
The shapes are in local space, centered at the text's origin position.
Attributes written
| Attribute | Where | Description |
|---|---|---|
index | per-vertex (shape.points.attributes) | 0..N positional index, matching every other shape source. Use with PointDelete / PointAttributes / Remap for per-vertex effects. |
index | per-path (path.attributes) | 0..M sub-path index. Use with PathDelete to slide through sub-paths individually — distinct from glyphIndex because multi-sub-path glyphs (O, i) share one glyphIndex but get unique index values. |
glyphIndex | per-path (path.attributes) | 0..G glyph-position index. All sub-paths of the same glyph share this value. Use with PathDelete for letter-by-letter reveals. DrawShape also uses this to group paths and apply NonZero fill correctly (counter-forms like the inside of O/B/D). |
Usage Examples
Basic: Text as shapes
Text -> TextToShape -> DrawShape (fillColor: white) -> Transform2D -> Output. Same visual result as DrawText, but now the text is in the shape pipeline.
Gradient-filled text
Text -> TextToShape -> SubdivideShape -> ShapeAttributes (target: Color, field: Gradient.colorField) -> DrawShape -> Transform2D -> Output. Text filled with smooth per-vertex color gradients.
Deformed text
Text -> TextToShape -> ShapeDeform (field: Noise.vectorField, amplitude: 10) -> DrawShape -> Transform2D -> Output. Text outlines warp based on a noise field.
Text outlines to points
Text -> TextToShape -> ResampleShape (count: 200) -> ShapeToPoints -> PointAdvect -> DrawPoints -> Transform2D -> Output. Text dissolves into particles that flow away.
Tips
- Use NonZero fill rule in DrawShape when rendering TextToShape output — EvenOdd may produce incorrect counter-forms for some glyphs
- The
glyphIndexattribute on paths enables correct rendering of overlapping glyph parts AND letter-by-letter filtering via PathDelete - For animated text, connect TextAnimate before TextToShape — the glyph positions will reflect the animation state
- Reveal text letter-by-letter:
Text → TextToShape → PathDelete (attribute=glyphIndex)withthresholdkeyframed-0.5 → N + 0.5 - Reveal sub-paths one at a time (counter-forms of
Oseparately from outline): same chain withattribute=indexinstead — slides through the underlying path array - Per-vertex effects on text:
PointDelete (attribute=index),PointAttributes (source=Index), etc. all work directly on TextToShape output thanks to the per-vertexindexattribute - TextToShape is a pure conversion — no parameters needed
Related Nodes
- Text -- creates the source TextData
- DrawText -- alternative: renders text directly (faster, less flexible)
- DrawShape -- rasterizes the shape output
- ShapeDeform -- deform glyph outlines with a field
- ShapeAttributes -- color or style glyph outlines per-vertex
- SubdivideShape -- add interior vertices for smooth gradients
- PathDelete -- drop glyphs / sub-paths by
glyphIndexorindexattribute - PointDelete -- vertex-level filtering via the
indexattribute on text vertices