text_wf

The additional variations we’ve used in the examples so far have been normal variations that get iterated, repeating and distorting the text as they go. We can reshape a single line of text using linked transforms. Some examples are shown below. The unpolar one was made by adding a transform, changing the variation to text_wf, and changing the text to “unpolar unpolar unpolar unpolar unpolar”. Then the “L” button (next to “Add”) was clicked to add a linked transform, and the variation on that transform changed to unpolar. Back to the text_wf transform, the offset_y value was increased to make the circle bigger, scale_x increased to complete the circle, and scale_y decreased to get the right proportion. The others were made using a similar technique with different variations.

Combining reshaped text with other transforms requires knowing how to use Xaos, which we won’t cover here in detail. The need is to prevent the additional transform to feed back to the shaping transform. The easiest way to do this is to go to the Xaos tab and click View as “from” (after adding the new transform(s)) and set every line to 0 except for the From text_wf transform, which is set to 1. Here is an example of using curl to shape the text into an oval with a loop, then a new transform with linear3D was used to make a spiral from the shaped text.

To understand the font_size and antialias parameters, we need to take a brief glimpse into how text_wf works. There are two parts:

  • Initialization: The text is rasterized onto an internal grid using the specified font; basically “printing” the characters onto the grid. The size of that grid is set by the font_size parameter along with the size of the text itself. The text is scaled so it fills the grid; this produces a higher quality result, but makes it ignore the size setting in the font. Some of the grid squares will have “ink” on them and be part of the raster; the rest will not.
  • Iteration: Every iteration of text_wf picks one of the points in the raster and maps it to the flame using the scale, offset, and antialias parameters. Over many iterations, the shape of the text will be produced in the flame.

Neither of these mappings can be perfect, resulting in distortions known as aliasing. A raster made of squares can’t accurately reproduce curved and diagonal lines in the text; the result will have jagged edges, as described above. These can be reduced by using a larger font_size, which will make the squares of the internal grid smaller; ideally too small to be noticable in the resulting flame. Caution is needed, however: setting it too high will make the initialization phase take a long time, hanging JWildfire while it is working.

The raster points will rarely match the pixels of the flame when it is rendered, resulting in a different kind of aliasing. This will appear as patterns inside the text. These patterns are not easily predictable; small changes to the flame will make different patterns appear, so they are not a reliable method for texturing the text. This aliasing can be reduced using the antialias parameter, which blurs the points slightly so they blend in with each other.

The following figure demonstrates the effect of the font_size and antialias parameters. The top row has antialias=0, so no antialiasing is done (except for the global flame antialiasing done on the entire flame, controlled by settings in the Anti-aliasing / Filter tab). The middle letter has font_size=320, the default, which is a bit low for this large sized letter. Both kinds of aliasing are visible: jaggies from the initialization phase and an internal pattern from the iteration phase. The right letter has font_size=1200, which greatly reduces both the jaggies and the internal pattern, and is a better setting for this size. The left letter has font_size=50, which is extremely low and shows the raster as dots. The bottom row has the same font_size settings, but antialias=0.5, the default. Comparing the two left letters shows how antialias works; the antialias setting makes the individual dots bigger. This setting has eliminated the patterns in the other two letters. It has also pretty much eliminated the jaggies in the right letter, but not in the middle one where font_size is too small.

Using a low font_size setting to render the text as dots can make interesting flames. The technique is the same as with solid letters. This one was made using text_wf with a single character, ‘§’, with font_size 20, adding a second transform with murl and a bit of ex.

A few final quirks to be aware of:

  • Text_wf uses the fonts installed on the system. They will be different for different systems, so parameters that use text_wf may not look the same if opened on another system (or even on the same system if the font is removed).
  • Symbol fonts don’t work; every character just displays a square.
  • If JWildfire starts to slow down when using text_wf, try clearing the cache. Select Help->System Information from the menu, and click the Clear cache button.

Parameters

variation amountIgnored for text_wf.
textThe text string to display. Line breaks are ignored.
font_nameThe font to use. The size is effectively ignored; use scale_x and scale_y.
font_sizeThe size of the grid used to rasterize the text. Increase to reduce jaggies. But JWildfire can hang if it is too large; most users will want it under 1500. Small values will result in text made from dots.
antialiasThe amount of antialiasing to apply
scale_x
scale_y
Scale factors for x and y.
offset_x
offset_y
Moves the text left/right and up/down
baselineNot used. (It specifies the spacing between lines, but since the text is put on a single line, it is ignored.)

Flame pack (flames used above)

Related Posts

You may be interested in ...

3 thoughts on “text_wf”

Leave a Comment