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
A title, caption, label, or logotype as editable vector shapes
Text that stays crisp at any zoom: leave Analytical on
3D lettering, extruded, textured, or simulated: turn Analytical off for a mesh
Text fitted inside a fixed area: set Box Size and use Overflow and Shrink To Fit
Per-character or per-word control downstream, such as colour gradients across a word or staggered animation per letter, since each glyph arrives as its own shape
| Parameter | Type | Default |
|---|---|---|
text | String | "Text" |
font_family | String | "Arial" |
font_style | String | "Regular" |
font_size | Number | 72 |
font_weight | Number | 0 |
font_width | Number | 0 |
font_slant | Number | 0 |
optical_size | Number | 0 |
alignment | String | "Left" |
vertical_alignment | String | "Top" |
line_height | Number | 1.200 |
character_spacing | Number | 0 |
word_spacing | Number | 0 |
line_spacing | Number | 0 |
paragraph_spacing | Number | 0 |
ligatures | Boolean | true |
discretionary_ligatures | Boolean | false |
small_caps | String | "Off" |
numeral_style | String | "Default" |
numeral_spacing | String | "Default" |
stylistic_set | Number | 0 |
contextual_alternates | Boolean | true |
fractions | Boolean | false |
kerning | Boolean | true |
box_size | Vec2 | (0, 0) |
shrink_to_fit | Boolean | false |
overflow | String | "Visible" |
fill | OneOf([Color, FieldOf(Color), ColorArray, Field, Material, MaterialArray, RasterArray]) | rgba(1.00, 1.00, 1.00, 1.00) |
stroke | OneOf([Color, FieldOf(Color), ColorArray, Field, Material, MaterialArray, RasterArray]) | rgba(0.00, 0.00, 0.00, 1.00) |
stroke_width | Number | 0 |
analytical | Boolean | true |
position | Vec3 | (0, 0, 0) |
rotation | Vec3 | (0, 0, 0) |
scale | Vec3 | (1, 1, 1) |
anchor | Vec3 | (0, 0, 0) |
opacity | Number | 1 |
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
Add a Text node and type your string into Text.
Pick Font Family and Font Style, and set Font Size.
Adjust Alignment and Line Height for multi-line text.
Wire a Color or Image node into Fill to drive the surface from the graph; raise Stroke Width and set Stroke for an outline.
For lettering that fits a fixed area, set Box Size and choose an Overflow mode (Wrap, Hidden, or Truncate).
For 3D lettering, turn Analytical off to get a mesh you can extrude or texture.
See also
Circle · Pen · Mesh · Curves (lines & paths)