Fonts in Geometron

Computers have many ways of using software to control how human languages are displayed on a screen or printed with a printer or other machine. It all starts with ASCII, which stands for American Standard Code for Information Interchange. It consists of a map between numbers and characters, some of which are English letters, some of which are symbols on a keyboard, and some of which are unprintable actions like "delete". This system has been extended to vast numbers of characters in the so-called "unicode". Geometron takes a different path, as is discussed in other chapters, but it keeps the core ASCII starting at 040 octal or 32 decimal as space and going through 0176 which is tilde. 0177 would be delete, but we use our own delete.

We will build many fonts in many languages. Everyone! You and your friends and me and everyone else. They won't all be pretty, but they will be ours.

So the fonts will go in a grid, but not an 8x8 grid like all the other layers in the Geometron hypercube. Instead it is one 8x4 grid and one 8x8 grid with a single cell empty. Here is a font:

This font took a few hours to make, and was my second Geometron font. It has no Bezier paths, and no shapes, just the core geometry actions of point, circle, segment, and arc. Any address from 040 to 0176(inclusive) passed to doTheThing() will cause one of these letters to be drawn. When this happens, human language is just another geometry action, and all of the other actions of Geometron can be applied. This difference has its up side and its down side. The down side of course is that all of the numerous beautiful and varied fonts that are normally part of a computer software system are not in general available. By default we don't have support for hundreds of human languages, or all of the various obscure math symbols of Unicode.

But the upside is incredible: any character can be subject to any kind of transformation we can think of. For example suppose we want to use the mathematical symbol for "there exists", which is an upside-down capital E. All we need to do is flip upside down, and move the cursor both before and after so that the overal action of the letter is to move to the right as in a normal English word. Thus:

With this symbol in hand, we store it in the shape table, at address 0220 in this example, and can now use it like any other shape. Or it could be put in the font table at the location of a symbol we know we won't use, connecting it with direct keyboard input. For example to write that "there exists x < y" we can write:
Or, this could be done with the "word" command to get access to the system fonts built into the standard canvas element.
This shows how it's possible to mix Geometron with standard font information: we started with a pure Geometron font, used that and some movements to turn it into a symbol, then used that symbol in a mathematical statement which was expressed in a standard system font.

But this is just the beginning of the power of combining Geometron with the ability to build our own fonts. Let's go back to the recursion example from the previous chapter and apply that to letters.

Or we can work the same magic with various simple shapes:

Building a Line Font

How do you go about building your own font? There are numerous ways, but to get started I will outline the rules that I follow when building a Geometron font. Those are:
  1. Always start and end a letter in fourfold symmetry mode
  2. Always start and end a letter with the same size, with no increase or decrease from previous character
  3. Always check that level is exactly the same at the end as the beginning
  4. Avoid excessive divisions in either distance or angle,to make it simple to come back to original scale/angle/size/position
With these rules in mind, building a line font is just a matter of using the shape table editor, but with shapes that follow these rules and live in the address space from 040 octal to 0176 octal. It's nice in most projects to start with a default font to fall back on for characters you rarely use, and then just replace the characters you care the most about. Also, if I'm only using a few characters I usually start at 0101 which is capital A instead of lowercase a, simply because it's easy to remember and is a lower address(leaving more space after you start than "a" which is 0141.

Building a Pixel Font

One of the easiest ways to build a font is also one of the most useful: by using discrete shapes of some kind, such as circles or squares. This is a way to build fonts that look like public transit LED displays.
This method of creating a font is by far the easiest. Just about any language can be pixelated manually or an existing version can be found from somewhere that fits in 5X7 or 5X8 or so, and with the right shape to base it on, it's possible to just sit with an image of the font to copy and go through the whole table in a couple hours.

Physical Fonts

Part of the goal of using Geometron to build fonts from scratch is to make it as easy as possible to print the font using the simplest possible machine. The simplest machine capable of printing language consists of one motor controlling vertical position and another controlling horizontal, with a third actuator of some kind controlling whether a writing tool is up or down on a surface. Some of the ways one might implement this are with: Why is this worth doing? It's about lowering the barrier to entry for all technology. Every art or technology project I propose to do with physical implementations of Geometron can already be done by an expert with not much trouble. But that's the problem. Not only does expertise keep non-experts from using existing technology, the equally important problem is that for new technology on which no one is yet an expert, doing anything new with pattern creation tends to involve a lot of duplicate effort.

With Geometron it should be possible to write a simple set of design rules based on the physical nature of a system, put those into the main code, edit a shape table in the browser, the put the bytecode onto the controller of the motors, and you can immediately start printing useful things. This can be done with giant drones over a giant field, making crop circles on the km scale, or with a cryogenic STM making single atom lithography--and in both cases the same web-based software can be used to edit the pattern using a phone, tablet, or laptop! I'll discuss this more in it's own section.

But this is the font chapter, so what needs to happen here is a font needs to exist designed for the Trash Printer presented elsewhere. That means just movement in the x or y direction, on right angles. This is then a very abbreviated set of commands in the 03xx table, and the shape table will just hava few standard elements.

Comparison with Existing Systems

  1. MetaFont
  2. Unicode
  3. standard web fonts
  4. commercial fonts

Font Library

Fonts will go here. Many fonts. And you will write them.

Non English Fonts

Useful resources: cross stitch patterns, display boards from public transit in a place that uses the language, old pixelated phone displays. random hebrew typography article hebrew cross stitch