A number of interconnected vertices moving on the screen.

Can letters exist as a set of rules?

Details

Computer program to automatically generate letterforms

Role

Self-directed experiment

Tools

Processing


Thought

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.


A spread from the book. Image credits: Letterform Variations, Nigel Cottier.

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).


Screenshot from Letterform Variations, Nigel Cottier.

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.


Programming

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.


Exploring the minimum number of points required to make a lowercase 'a'.

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'.


Variations of a lowercase 'a' with 4 points; meaning n=4, where n is the number of points.

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'.


Variations of a lowercase 'a' with 4 points; meaning n=4, where n is the number of points.

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.

}

Outcome

A short video of the tool generating letterforms. Unfortunately, I cannot embed the sketch on this website since Processing is based on Java. However, you can find the code for this program here.

A collection of different lowercase 'a' generated by the program.

The code for this program can be found here.


̣̉̉̉̉̉