Skip to content

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

PortTypeDirectionDescription
text_intextinputTextData to convert (from Text or TextAnimate)
outshapeoutputShapeData 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

AttributeWhereDescription
indexper-vertex (shape.points.attributes)0..N positional index, matching every other shape source. Use with PointDelete / PointAttributes / Remap for per-vertex effects.
indexper-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.
glyphIndexper-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 glyphIndex attribute 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) with threshold keyframed -0.5 → N + 0.5
  • Reveal sub-paths one at a time (counter-forms of O separately from outline): same chain with attribute=index instead — 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-vertex index attribute
  • TextToShape is a pure conversion — no parameters needed
  • 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 glyphIndex or index attribute
  • PointDelete -- vertex-level filtering via the index attribute on text vertices