Dec 2004
Programmer's Font (inactive project)
Introduction
This font is made for clarity at small resolutions, and could be used in many other applications. I got the idea from Roedy Green's page of Student Java Projects
Screen real estate is at a premium, therefore we should make as much use out of it as we can. One way of doing this is to decrease the font size on our code windows. Unfortunately decreased size also means decreased clarity. We need to re-engineer the alphabet so that it will be clear at extremely small sizes.
I have made a TrueType version of this font, but it only works at10pt because I have not had the dedication to add all the hints.
Construction
"IliI" is hard to read. First we must be able to distinguish between letters in a word. To do this we must avoid repeating patterns, like strictly vertical lines. "mnnmnmnmn" is also hard to distinguish because the vertical lines making up M and N are merged by the eye.
Second we avoid similar shapes between letters, U, V and W all are quite similar at small font sizes: "vuvuwvvuvuv".
My first thought was to avoid vertical lines by indicating each letter with a circle and opening up a side, or weighting a side. Unfortunately this does not give enough combinations for the entire alphabet, but is a start. My diagram shows the combinations that can be made. We can see some familiar letters in the first row: O U C and small N. Some glyphs similar to 9 and 6 can also be found.
We can take this a step further and look at the glyphs that are generated when two segments are removed from each. We note that these segments must adjoin, otherwise the glyph will be separated.
Still avoiding vertical lines, my next thought was to stack smaller circles and cut openings in them. Rows of circles would not a good idea because the last circle of one letter could be mistaken for the first circle of another. Weighting the sides would not work because the circles would be too small to tell. Furthermore, the circles should be touching to avoid possible confusion between rows of text.
A diagram of the possible combinations is shown on the left. Each circle has one optional cutout. Only one cutout was chosen because 2 would either not make a significant change, or look like one of the circle glyphs above. You can see many of the english letters in this second diagram.
Upon reflection we can see that this double circle representation is logically equivalent to a regular digital display.
Now we use our artistic sense to remove the unnecessary strictness of these glyph definitions and smooth out their look. We add greater distinctiveness to each character by drawing 2 open circles differently than one open. We also squish the circle font so it has the same proportions as the double-circle font. In my artistic rendering I have reintroduced the vertical line with the belief that each letter is sufficiently distinct to allow them. Here is the result:
After the construction of the alphabet, the glyphs leftover are undesirable for use in representing the decimal digits. Undesirable because they do not remotely appear like the digits we are familiar with. A programer does not want to get a digit wrong because the font is too difficult to learn. Some letter changes were ok because words, as a whole, are still understandable but every digit of a number must be understood with clarity. For this reason we simply choose the digital representation of each digit, letting each digit rise higher than the letters. This is not a waste of space because capital letters need to be indicated by a bar overhead.
Finally the punctuation of current fonts only have a couple of problems. The distinction between the various parentheses ([{}]) and the distinction between the comma and period (;:,.). We fix these by using exaggeration.
Example
I have included a small Java program that will take a text file and make a corresponding html rendering in the Programmer Font. Many small gifs make up the individual characters. Below is the program rendered in the Programmer Font. Upon reflection I see I made it too big.






































































































































































































































































































































































































































































































































































































