Text Layout


Block Text This node specifies layout and font style information for text rendering.
Enriched Block Text This node specifies layout and font style information for text rendering. Different font styles, text colors, scaling and positioning can be applied on a per-character basis.
Scroll Text This node provides functionality for a simple ticker or crawl.

Block Text

The Block Text node is a Content node that provides text content, layout and font specifications to a Text Renderer. The output property TextSource can be linked to a Text 2D or Text 3D node. The Font property specifies the font that should be used by a Text Renderer to display the text. By clicking the drop-down box, you can select a predefined Font Preset or select one of the installed System of Project fonts (select Edit...).

In order to set Font by a Binding or via Remoting simply use a string value containing the string displayed in the Property Editor with a leading '[' character.
Example: "[Cambria, Bold, Italic"


The Block Text node has a multitude of properties to adjust the Layout of text.
The property Kerning enables the character-pair-kerning. Please note that not every font file contains a kerning table, thus toggling Kerning will have no effect for these fonts. Enable the property RightToLeft if you wish to use languages that have a right to left writing direction. The TextWrapping property defines how text is wrapped at the end of a line:

Word The wrapping is done by moving only complete words to the next line.
Character The wrapping is done by moving characters to the next line.

TextAlignment defines the vertical alignment of the complete text. It can have the following values:

Top The top boundary of the text lies on Y = 0.
FirstLine The first line of the text lies on Y = 0.
Center The center of the complete text lies on Y = 0.
LastLine The last line of the text lies on Y = 0.
Bottom The bottom boundary of the text lies on Y = 0.

LineAlignment defines the horizontal alignment of the text. It can have the following values:

Near The beginning of every text line lies on X = 0.
Center The center of every text line lies on X = 0.
Far The end of every text line lies on X = 0.
Justify Every text line is justified over the complete possible line width.
Character The text line is moved so that the specified AlignCharacter lies on X = 0.

Using the property CharSpacing, you can add extra space between each pair of characters. The property LineSpacing is a factor to modify the space between two text lines. The property BoundingBox switches between two methods of calculating the bounding box for the complete text. Possible settings are:

Static The width and height of the bounding box is taken from the properties Width and Height. If one of these values is set to zero, the according size value is taken from the dimensions of the text.
Dynamic The bounding box is calculated similar to the static version but additionally the bounding box size is reduced to the minimum size where the text still fits in.

The property Width defines the maximum width of the text region and its bounding box. If this value is set to zero, the width is taken from width of the widest text line. The property Height defines the maximum height of the text region and its bounding box. If this value is set to zero, the height is taken from height of the text.

Via the properties in the Extended Layout category, text can be forced to render with monospaced characters. In this case every character gets the same width. This can be useful e.g. for rendering tables. The property Monospace specifies which type of characters should be layout in monospace:

Default No monospacing at all.
DigitsOnly Only digits are rendered in monospace.
AllCharacters All characters are rendered in monospace.


The property MonospaceWidth defines the width which is assigned to a monospace character. AlignCharacter specifies which character in a text line should be used for alignment if LineAlignment is in mode Character.

The property Text in the category Text takes the text content in form of a string. If TreatAsXML is enabled, Text is parsed and all XML tags are removed before the text is finally lay out.

In addition to the TextSource property, this node provides the following outputs: The properties in the category BoundingBox provide the position of the upper left corner of the text bounding box and its width and height. The output property FollowUpBaseLine specifies the Y position of a following new text line.

The properties in the category TextUsage are filled if a text does not completely fit in the specified bounding box. Consumed provides the part of the text which fits in. Remained provides the text which did not fit in and was truncated. RemainderExists indicates if the source text was truncated at all.

Enriched Block Text

The Enriched Block Text is an enhanced version of the Block Text node offering font, color and simple layout changes within a text. Via Custom Model additional colors, scale factors, Y-offsets and font style properties can be added to the Enriched Block Text node and accessed from within the actual text string by using XML tags. The properties in categories Layout, Extended Layout, BoundingBox and TextUsage have the same functionality as in the Block Text node and are described there.

The input text string of the Enriched Block Text node (EnrichedText) has to be XML encoded. Special characters have to be encoded as entities much like in HTML. A "<" for example would have to be encoded as '%lt;'. This XML format is in no way to be confused with HTML though.

The XML text for the EnrichedText property must be well-formed! Otherwise text will be not displayed correctly!


There are four types of Custom Model properties which can be added to Enriched Block Text node: Font, Color, Scaling and YOffset. The name of the property added defines the XML tag which has to be used in order to address it from within the input text. This name has to conform the XML naming convention, i.e. no special characters, no spaces and only letters and numbers with the first character in the name being a character.

By default, the Enriched Block Text node has a custom model property called RED. The default input string

<RED>Enriched</RED> Text
<style color="Gray" scale="0.73" yoff="0.2">Custom styled text</style>
<color value="Lime">Color <scale value="0.73">Scale<yoff value="0.3">YOff</yoff></scale></color>

uses this property in order to render the word Enriched in the color defined by the property; in this case red. Properties added via Custom Model can be bound to other nodes and animated as well. Please note that changing a custom property value will force a recalculation of the text and can affect the overall scene performance.

Using custom defined XML tags is straightforward. Text without any tags applies the default properties DefaultFont and DefaultFontColor. Inserting a valid XML tag overrides the current color or font and applies the corresponding property value. Closing the tag returns to the previous value.
You do not necessarily have to add Custom Model properties to modify color, scaling and Y-offset. If you use the <style> tag, these three properties can be changed by specifying the color, scale and yoff attributes in the XML tag (see example above).

Here are two other examples for valid XML text formating:

Name Type Property Value
RED Color "Red"
BLUE Color "0,0,255"
B Font "[Arial, Bold"
I Font "[Arial, Italic"
BI Font "[Arial, Italic, Bold"

String 1:

A <RED>red</RED>text in <B>bold</B>, <I>italic</I> or <BI>both</BI>. <RED>Red text can turn <BLUE>blue</BLUE> as well.</RED>

String 2:
The value of all custom properties can be controlled individually in the XML tag. The value defined by the custom property is ignored in this case.

<RED value="0,255,0">Green Text</RED> 
<B value="[Times, Bold">Times</B>

Scroll Text

The Scroll Text node does not statically render its text. Instead, it defines a small rendering region that the text is scrolled through. This Node can be used to build tickers or crawls.

The Scroll Text Node has a multitude of input properties to manipulate the scrolling functionality. In the category Layout the property Kerning enables the character-pair-kerning. Please note that not every font file contains a kerning table, thus toggling Kerning will have no effect for these fonts. Enable the property RightToLeft if you wish to use languages that have a right to left writing direction. This also changes the scrolling direction. Using the property CharSpacing, you can add extra space between each pair of characters.
The property Refresh determines what happens with the scrolling text if the text content changes. There are two possible modes:

Immediate The scrolling text changes immediately. The old text is erased and replaced by the new text.
NextLoop The old text scrolls until its end is readable, and after that the new text begins. And then only the new text is looped.

The Property Progress defines how the amount of text translation per frame is calculated. The possible values for this Property are:

FrameBased The text moves by a constant amount every frame. This means that in a scene which is rendered with 60 FPS the ticker moves double as fast as in a scene that is rendered with only 30 FPS.
TimeBased The text moves with a constant speed that is independent of the rendering frame rate.

The property Speed defines the speed of the scrolling text. The property Size defines the width of the region in which the scrolling text is visible. The category Text contains the properties AutoActivate and Text. If AutoActivate is enabled the scrolling of the text begins automatically when the scene is loaded. The category Ticker Control contains input methods to start, pause, continue and reset the text scrolling.

Beside the TextSource property, this node provides some other outputs. The properties in the category BoundingBox provide the position of the upper left corner of the text bounding box and its width and height. The events in the category Events are triggered when the scrolling text reaches certain positions. The event OnFirstAtZero is fired when the first character of the text reaches the position X = 0. X = 0 is defined as most left position for left-to-right text and as the most right position for right-to-left text. The event OnFirstIn is fired every time when the first character of the text appears at the end of the text line. The event OnLastOut is fired when the last character disappears at the start of the text line. The event OnLastIn is fired every time when the last character of the text appears at the end of the text line.