'QUADRA' written in Quadra



Quadra is a set of characters based on the borders of a square and its diagonals. Characters in Quadra include the Latin alphabet, Arabic ciphers, and common punctuation marks and symbols.


Stroke Numbering
Stroke Sequence
Character Table
Special Character
Typesetting Guide
Typesetting Example
Short Sample Texts
Babel Text
Tricks to be Tried
Quadra Font
How I Wrote Quadra With the GIMP
Context (influences)
Version History


Uses of Quadra include, but are not limited to
- fancy texts for creative arts
- visual poetry
- science fiction script
- example for simpler problems of typesetting
- modern runes
- divination system (from random bits)
- optimization problems in computer science
- experiments in perception psychology

Quadra may be useful for texts or languages that contain a large proportion of the letters 'i' and 'I' (which are identical in Quadra).

See also tricks to be tried.


Because there are six lines, that are either drawn or not, there are 2^6 = 64 possible characters that can be coded. The 26 letters of the Latin alphabet and the 10 ciphers leave 28 characters for other purposes.

There are two forms of the letter 'I'. The letter is normally used as a vertical line on the left-hand margin of the square, to give a better typographic image. But to keep the margins without dents, or to enhance legibility, the 'I' is also written as line on the right margin (see typesetting guide).

I tried to keep the characters similar to the upper or lower case Roman letters (somewhat contorted at times).

With a prefixed special character, the diagonal lines can be used as a postfix notation for the accents aigu ('/') and grave ('\'). See the section special character for an example.

With the help of a 'shift' character, the range of possible characters can be expanded (see special character).

Stroke Numbering

The six allowed strokes (= lines) in the square are numbered from 1 to 6. Rising diagonal (bottom left to top right) = 1, lower margin = 2, left margin = 3, top margin = 4, right margin = 5, falling diagonal = 6.

The left column of the character table below is ordered by rising stroke number combinations. It starts with space, 1, 2, 3, 4, 5, and 6. Then the combinations of two, three, four, and five lines follow. The combinations are ordered numerically, i.e. 1-2, 1-3, 1-4, ..., 4-6, 5-6, 1-2-3 ('<'), 1-2-4, 1-2-5, 1-2-6, 1-3-4, ...,

For instance, one could denote the letter 'T' as 4-5. The name '5-4' is never used for 'T' because the stroke numbers in combinations have to appear in arithmetic order by definition.

Stroke Sequence

Characters that consist of more than one stroke may sometimes be written by a continuous line, i.e. without lifting the pen. For instance, a convenient stroke sequence for 1-3-4-6 ('R') starts in the upper left corner: 3-1-4-6.

Stroke sequences are not defined currently (contrary to other writing systems, e.g. Japanese). Left-handed and right-handed people may adopt the stroke sequences they like best.

Character Table

The Quadra characters try to look like Arabic numbers or the Roman alphabet either upper or lower case, whatever fits best. Many are bent (e.g. 'd', '9'), rotated (e.g. '4'), truncated (e.g. 'P', 'H'), or crushed together (e.g. 'Y', '5').

Sometimes characters with a smaller number of strokes were chosen, although they look more like some other character. For instance, normal parentheses were chosen to have only two strokes, because they occur more often in normal texts than the characters '<' and '>' at the price of legibility.
Another example: the '2' was chosen to be more legible than the letter 'Z', so the 'Z' got only two strokes.

Quadra letter and number table

Special Character

The special character (2-5-6) expands the number of characters from 64 to 126 (= 2*(64-1)). The special character has no meaning itself, but acts as a modifier.

The special character is currently used as a prefix with the intention of nearly doubling the number of characters (not yet fully defined). It may be used like a keyboard 'shift' to determine whether characters 1, 6, and 2-4 are to be interpreted as '/', '\', and ':' (without the prefix) or as the accents aigu and grave and the '=' sign (with the prefix).
Example: An è is written in Quadra as 2-3-4-6 ('e'), 2-5-6 (special character), 6 (the accent).

Use of the special character to distinguish lower from upper case letters is strongly discouraged. Quadra is intended as a script with only one case for letters.

Further extensions of Quadra with the help of the special character may include
- using 2-5-6 as a switch, similar to the caps lock on the keyboard
- using multiple special characters to denote something else
- notification of binary data or numbers

Typesetting Guide

In the following, we assume a text reading for each line from left to right, and for the lines from top to bottom (like in this text). Whenever possible, the text image should form a square. If that leaves more than a third of the last line empty, one should aim a a rectangular form. The overall goal is to leave no empty corners.
The Linux function 'factor' is a great help here. E.g. the shell commando 'factor 132' tells that 132 = 2*2*3*11. So 12*11 makes still a nice rectangle.

It may not be possible to form a rectangle with a small aspect ratio (i.e. < 3). Since prime numbers are rather frequent in the lower integers, this happens more often for shorter texts. The longer the text, the more leeway one has, generally.

Avoid to have dents in the text border - rather have the holes inside. This concerns not only the right an left margins but also top and bottom. Therefore, try to avoid
- an underline in the first line
- a dash in the last line.
Sadly, top and bottom margin dents cannot be avoided in longer texts unless one sacrifices legibility by omitting spaces.

Note that the letter 'I' is normally written with stroke 3 and the width of a normal letter or number. This can cause trouble, if the letter is the last one on a line. In that case, the vertical line is drawn on the right of the square with stroke 5 (not on the left, as usually done).
I the case of words beginning with 'I' it is a good reading aid to use the right form and save a space. Do not do this if the 'I' is the first letter on the line (the left margin would get a dent if you did).

If it still looks not right, change the text ;-)

It is debatable, if one should keep the spaces. It certainly helps in legibility, but since spaces are so common, they tend to give a 'patchy' look to the text. For text without spaces, see the typesetting example or the Babel text below.

Typesetting Example

Here is a typesetting example. The text is "INTERNET-BROWSERS HAVE, IN TIME, CHANGED". This text has 40 characters, nearly the square number 36. So, omitting some unnecessary spaces and an 'E', we get 'LANGUAGE MAKER' written in Quadra


Let me point out the errors in the text. First, the writer confused the letter T with the question mark. Second: the typesetting could be better. There is a hole in the right margin. This can easily be avoided by omitting the space there and inserting an E near the end. In this way, we do not need to sacrifice letters, only spaces. The new text reads


However, the text should be clarified, so that nobody thinks of shaving a browser ;-). For instance,


This leaves the holes inside the text block and has the same meaning. But now we have a hole in the top row! So this has to be changed again, maybe to 'LANGUAGE MAKER' written in Quadra


In the final text, we omit all spaces, have all the letters and employ a full stop. Note that the third I is a right-shifted one to approximate a space after the comma and have the beginning of INTERNET look more natural. You see, typesetting can be tricky with Quadra.

Short Sample Texts

'language maker':


Psalm 19:2-3 (KJV): 'Day unto day uttereth speech, and night unto night sheweth knowledge. There is no speech nor language where their voice is not heard.'

Ps 19:2-3 (KJV) in Quadra

Babel Text

Without spaces, the text from Genesis is 957 characters long. To come near the desired square of 31 * 31 = 961, four spaces were added. Here the character " is used as apostrophe (without the special character as prefix).

'Genesis 11:1-9 (KJV)' written in Quadra

The story of Babel is found in Genesis, chapter 11, verses 1-9 (King James Version):
"And the whole earth was of one language, and of one speech. And it came to pass, as they journeyed from the east, that they found a plain in the land of Shinar; and they dwelt there. And they said one to another, Go to, let us make brick, and burn them thoroughly. And they had brick for stone, and slime had they for mortar. And they said, Go to, let us build us a city and a tower, whose top may reach unto heaven; and let us make us a name, lest we be scattered abroad upon the face of the whole earth. And the LORD came down to see the city and the tower, which the children of men builded. And the LORD said, Behold, the people is one, and they have all one language; and this they begin to do: and now nothing will be restrained from them, which they have imagined to do. Go to, let us go down, and there confound their language, that they may not understand one another's speech. So the LORD scattered them abroad from thence upon the face of all the earth: and they left off to build the city. Therefore is the name of it called Babel; because the LORD did there confound the language of all the earth: and from thence did the LORD scatter them abroad upon the face of all the earth."


The image shows the King Wen order of the 64 I Ching hexagrams written in Quadra from left to right, from top to bottom. Yang lines are interpreted as strokes, Yin lines as no stroke. First place = stroke 1, second place is stroke 2, third place is stroke 3, and so on. Hexagrams with identical number of strokes got the same color.

The King Wen order of the I Ching hexagrams written in Quadra

To use Quadra as a divination system, only an appropriate bitstream is necessary. The number of bits has to be a multiple of six. Six bits code a Quadra character (or I Ching hexagram, if you want).

Looking a the characters and trying to make sense from this kind of oracle is similar to a Rorschach test.

Tricks to be Tried

Write a Quadra text that makes sense, even if rotated, or read from top to bottom, or if mirrored ... If you find a nice example, let me know!

Use Quadra as training patterns for an OCR system. Recognize rotated and mirrored texts and correct them.

Use Quadra as coding for a large grayscale image so that the text behind the image still makes some sense. This is similar to the greyscale images of dominoes, but with repetition of characters allowed.

Try to form texts with an approximately circular border.

Quadra Font

In 2015, Jan-Hendrik Vienup created a Quadra font with the free tool FontForge . That font was placed under the SIL open font license (OFL). Thank you very much, Jan-Hendrik!

How to proceed:

  1. download FontForge and install it on your machine
  2. download the zip (before you do that, note the agreement below)
  3. unpack the zip (e.g. with 7-zip)
  4. with FontForge, open fontforge_1.2.sfd from the unpacked zip
  5. save the font format that you need on your machine

The font is provided as-is without any claims of operability, safety, or usefulness. By downloading the zip file FontForge_Quadra.zip you agree to hold the creators, providers, and intermediaries free from any indemnity claims. If open questions remain, ask your web search engine ;-)

Here's the ZIP-file

If the above doesn't work, try here

How I Wrote Quadra With the GIMP

GIMP is the 'Photoshop for LINUX'. It is easy to write nice Quadra texts, especially if the number of letters is near a square number (e.g. 13*13=169).

- Width of the image = (number of letters per row)*48 + 16
- Height of the image = (number of letters per column)*48 + 16
- Use a greyscale image - these are smaller
- Image/Configure Grid   set width and height to 16 pixels
- View/Show Grid   set checkmark
- View/Snap to Grid   set checkmark
- Use a width 7 pencil
- Write your text by setting dots at the grid points and draw lines with the shift key pressed where appropriate. Letters are 32 by 32 pixels. The space between two letters is 16 pixels. The space between two words is 32 pixels, generally.

After you're done, blur the image with Filter/Blur/Gaussian Blur and a setting of 1. Then shrink the image to half size: Image/Scale Image ratio 0.5 (both axes), cubic scaling. Save your image as jpg with a quality of 50 %.


The idea for Quadra sprouted from influences of
Frieder Nake, Ulrike-Marie Hille, Andreas Thalmayr, Paul Klee,
Marain script, I Ching, Aluwxn, and probably many others that I do not remember right now.

Quadra is listed in the online collection of Neographies at www.langmaker.com 'LANGMAKER' written in Quadra

Version History

Version 1.0: 2005-04-01 Initial alphabetic letter table.

Version 2.0: 2005-04-05 Stroke numbering defined. Complete two-way code table with numbers, punctuation marks, etc. Some letters were altered to accomodate other characters better.

Version 2.1: 2005-04-16 minor corrections

Version 2.2: 2005-08-17 Colors added to King Wen image

Version 2.3: 2015-06-20 Quadra font by Jan-Hendrik Vienup

© Kopyrite 2005 Mario Hilgemeier
(Creative Commons License 2005,2015 by Mario Hilgemeier; may not be altered. May be freely used, if credit to author is given. Details)
email: Contact