Text

Text as vector shapes from font outlines.

What it does

Text converts a string into vector shapes, tracing the outlines of a system font's glyphs. Like Circle and Rectangle it is an analytic shape by default: crisp at any size, composited as a flat 2D layer. Each character becomes its own shape, with correct holes for letters such as O, A, and B, and the run is laid out with real font shaping, so kerning, ligatures, and multi-line wrapping come from the font rather than an approximation.

Turn Analytical off to convert the glyphs into a Geometry mesh for the 3D scene, for extruding letters, texturing them, or bringing them into a simulation. Font, size, weight, alignment, and spacing update the shapes live as you type or animate the Text input, so titles, captions, and data callouts can be driven from upstream string logic.

When to use it

ParameterTypeDefaultWhat it does
textString"Text"The text to convert to shapes
font_familyString"Arial"Select font family from system fonts
font_styleString"Regular"Font style variant (falls back gracefully if unavailable)
font_sizeNumber72Font size in points
font_weightNumber0Variable font weight (100=Thin, 400=Regular, 700=Bold, 900=Black). 0 = font default.
font_widthNumber0Variable font width percentage (50=Condensed, 100=Normal, 200=Expanded). 0 = font default.
font_slantNumber0Variable font slant in degrees (-20 = italic). 0 = font default.
optical_sizeNumber0Variable font optical size (typically matches font size). 0 = font default.
alignmentString"Left"Horizontal text alignment. One of: Left, Center, Right.
vertical_alignmentString"Top"Vertical text alignment within text box. One of: Top, Middle, Bottom, Baseline.
line_heightNumber1.200Line height as multiplier of font size
character_spacingNumber0Additional spacing between characters
word_spacingNumber0Additional spacing between words
line_spacingNumber0Additional spacing between lines (added to line height)
paragraph_spacingNumber0Additional spacing between paragraphs (double newlines)
ligaturesBooleantrueEnable standard ligatures (fi, fl, etc.)
discretionary_ligaturesBooleanfalseEnable decorative/discretionary ligatures
small_capsString"Off"Convert letters to small capital forms. One of: Off, Lower to Small Caps, All Small Caps.
numeral_styleString"Default"Numeral glyph style (old style = varying heights, lining = uniform height). One of: Default, Old Style, Lining.
numeral_spacingString"Default"Numeral spacing (tabular = fixed width for alignment, proportional = natural width). One of: Default, Tabular, Proportional.
stylistic_setNumber0Stylistic set number (font-specific alternate glyph sets, 0 = none)
contextual_alternatesBooleantrueEnable contextual alternate glyphs
fractionsBooleanfalseEnable automatic fraction formatting (e.g., 1/2 becomes ½)
kerningBooleantrueEnable kerning (spacing adjustments between specific letter pairs)
box_sizeVec2(0, 0)Text box size in points (W, H). Set to 0 for auto-sizing.
shrink_to_fitBooleanfalseScale text down to fit within text box dimensions
overflowString"Visible"How text behaves when it exceeds the box: Visible (no clipping), Wrap (word wrap), Hidden (clip), Truncate (clip with ellipsis). One of: Visible, Wrap, Hidden, Truncate.
fillColor or Color Field or Color[] or Field or Material or Material[] or Frame Sequencergba(1.00, 1.00, 1.00, 1.00)Fill color, or connect a Fill/Color/Image node
strokeColor or Color Field or Color[] or Field or Material or Material[] or Frame Sequencergba(0.00, 0.00, 0.00, 1.00)Stroke color, or connect a Stroke/Color node
stroke_widthNumber0Stroke width (0 = no stroke)
analyticalBooleantrueAnalytic: emit resolution-independent CRC glyph paths (composites as a flat 2D layer). Turn off to ear-clip the glyphs into a Geometry mesh for the 3D scene.
positionVec3(0, 0, 0)Translation (X, Y, Z)
rotationVec3(0, 0, 0)Rotation in degrees (X, Y, Z)
scaleVec3(1, 1, 1)Scale (X, Y, Z)
anchorVec3(0, 0, 0)Pivot offset (X, Y, Z) — rotation/scale orbit this point
opacityNumber1Layer opacity (0 = transparent, 1 = opaque). Editable, wirable, keyframable.

Gotchas

An empty Text field, or a font that fails to load, produces an empty result rather than an error, so the node can be left blank while an upstream string is still being wired.

Box Size is 0 by default, meaning auto-size, and the text box grows to fit what you type. Give Box Size real width and height values to turn on Overflow behaviour (Wrap, Hidden, Truncate) and Shrink To Fit.

Scale multiplies the whole line as one block around the Anchor point, not each letter around its own centre, so a scaled line reads as a single resized word rather than letters drifting apart or piling up.

Stroke Width defaults to 0, so no outline is drawn until it is raised. Wire a Stroke colour in first for an outlined look.

Worked example

  1. Add a Text node and type your string into Text.

  2. Pick Font Family and Font Style, and set Font Size.

  3. Adjust Alignment and Line Height for multi-line text.

  4. Wire a Color or Image node into Fill to drive the surface from the graph; raise Stroke Width and set Stroke for an outline.

  5. For lettering that fits a fixed area, set Box Size and choose an Overflow mode (Wrap, Hidden, or Truncate).

  6. For 3D lettering, turn Analytical off to get a mesh you can extrude or texture.

See also

Circle · Pen · Mesh · Curves (lines & paths)