Computer program to automatically generate letterforms
Self-directed experiment
Processing
During the third year of my undergraduate study at IIAD, Nigel Cottier in the UK had published Letterform Variations: a book that resulted in 19,840 letterforms; all derived from a simple underlying framework.
What was interesting (to me) about the book was how he viewed letterforms as a set of relationships between multiple points on top of a grid. For example, the only difference between the lowercase 'a' and the lowercase 'd' in the image below is that the left-most point of the letter 'd' is its bowl, whereas it is the terminal for the lowercase 'a'. This minor difference is all that it takes to communicate a distinction between a lowercase 'a' and a 'd', when viewing letters from the same framework (or system).
I wondered what it would be like if a computer program was made aware of these relationships between the different points of a letterform, but had the ability to freely move around the points within the restrictions of the defined relationships.
While exploring the idea, I promptly realised that each latin letterform requires a different number of total points. For example, a lowercase 'a' can be made with 3 points whereas it is imppossible to make a lowercase 'b' with the same number of points.
Therefore, it became imperative to arrive at a number of the least number of points required to make every letter in the latin alphabet. Through some quick sketches of key latin alphabets, I came to the conclusion that 4 was the minimum number of points required to draw a letter.
Since the complexity to process all letterforms at the same time was too much, I decided to prototype a version of the idea for a lowercase 'a'.
The next challenge was to figure out relationships between different points. What characteristics must be retained about a lowercase 'a' to stop it from resembling a lowercase 'r'?
I called these relationships 'rules'.
When you look at the rules in the image above, it can be observed that everything is a cascade of one master point. If point A (the top most point of my letterform) moves to the right by 'x' amount, point B can only have the leeway of moving to the right between 'x' and the specified limit because of Rule 4: Point A must always be to the left of Point B.
This can also be seen in the code snippet below.
if (frameCount%120 == 0){ //Every 2 seconds
AxFinishPos = (random(350, 650)); //Range of new A position
BxFinishPos = random (AxFinishPos, 650); //Range of new B position, with the minimum being the new A position.
}
The code for this program can be found here.