I've worked on asemic writing several times. Most recently I described a system based on Bézier curves, which mimics some kind of cursive. After this I started experimenting with a method to to make something that is more akin to systems such as Hangul or Katakana. I won't go into all the details of this algorithm, but the main idea is described below.
First, distribute a few nodes at random within a suitable domain. My version uses a square domain, and variation of Mitchell's best-candidate algorithm, to get nodes that are evenly distributed. Once we have the nodes, use them to create a relative neighborhood graph.
A stroke is created by selecting a node in the graph at random, then performing a short (two to four steps) random walk along connected edges. The stroke is then defined by the nodes that were visited in the walk, in the order they were visited in.
Once an edge has been traversed, it is removed from the graph. This way it can't be traversed more than once. Finally, the strokes are drawn using either connected lines, or (composite) Bézier curves.
As you can see, some of the glyphs also have a diacritical mark. These are added at the end, with the limitation that they have to be in the vicinity of one of the nodes in the graph, and that they can't intersect any of the strokes.
As with many generative algorithms, this is far from perfect. It generates a lot of rather dull results. For example, I had to wade through 4554 glyphs to select the 420 glyphs drawn in the two plotter drawings displayed here.
- A more involved version of this is known as Poisson-disc sampling.
- Traversing the relative neighborhood graph takes care of this limitation. Except in some relatively rare cases involving the Bézier splines. These have been discarded manually.