The entry point into NextText is the Book, which must be created before anything else can be done. Text and Behaviours must be registered with the Book in order to affect the display. Each Book contains Pages, which in turn contain TextObjects. Pages are kind of like layers in Photoshop; lower Pages can be hidden by elements on a higher Page. The programmer can control which Pages are rendered and in what order to render them in the sketch’s draw() loop.

Text is stored in a hierarchical structure defined by a single TextObjectRoot, and many TextObjectGroups and TextObjectGlyphs. For example, the sentence “NextText is sweet” would be the TextObjectRoot. This can be split it into the words “NextText”, “is”, and “sweet”, which would be the TextObjectGroups. These words can be split further into separate letters, which would be
TextObjectGlyphs.

The Book holds a TextObjectBuilder, which makes it easy for the programmer to build a hierarchy of TextObjects and to apply Behaviours to it. It also holds a FontManager, which simplifies the loading and setting of fonts. The font file (in TrueType format, no .vlw conversion necessary) must be in the sketch’s ‘data’ folder to be loaded. These actions are all performed directly on the Book using calls familiar to Processing users such as Book.loadFont(…) and Book.addText(…).

The rules for movement and transformations of the text are set using Behaviours. Behaviours are added to and removed from the Book directly, and can be applied to any TextObjectGroup or TextObjectGlyph. Most Actions and Behaviours use the Vector3 localization object. A Vector3 has x and y coordinates representing a point on the canvas, but also holds functionality to perform vector arithmetic on these coordinates, such as moves, rotations, and scales.

Some Behaviours are already provided by NextText, but you can also build your own using building blocks called Actions. There are many types of Behaviours. Image processing Behaviours such as Colorize, control Behaviours such as OnDrag, physics modeling such as Gravity, and finally DForm
behaviours such as Throb, which modify letterform outlines. But the strength in NextText comes from the fact that all these Behaviours can be stacked and mixed to affect the TextObjects simultaneously.

History

Development on the NextText library began in 2002, with the goal of providing a way for implementing interesting and complex dynamic and interactive behaviors for text-centric creative projects. We will post more information about the history here soon; for now, we have this snazzy diagram which shows all the different projects we’ve used NextText for over the last six years.