Here is my fourth attempt to make a narrow font that accentuates diagonals. It seems to be a good programming font at size 10. It makes it surprisingly easy to read upper case consonant names.
Design is as follows:
Monospaced of course, because code pretty much requires this. Code fonts are built for both reading and editing, and when some letters are very narrow like the i and l in most fonts, that makes them very hard to select with a mouse and therefore very hard to edit and makes these fonts very hard to use for programming. In addition block cut and paste is important for programming and monospaced is required to do this easily.
Small sizes need to be easily readable. Sometimes you need to be able to see a lot of code on one screen.
Two Dimensional - designed for two dimensional grid-like work such as spread sheets and programming. Lines to draw reader's attention vertically are preferred over lines to draw reader's attention horizontally (as in most fonts). That makes this font more difficult for reading text and less difficult for reading code.
Glyphs are wide in the center of each letter so that diagonals and crossbars are easy to see, and narrow toward the top and bottom so that the characters pull away from each other and are easy to tell apart.
Bodies of the lower case letters are made relatively tall so they are easy to read in code, yet maintaining a clear difference between the height of the lower case and upper case characters - very important.
From top to bottom: 2 blocks upper diacritics, 1/6 block space, 2 blocks stems and upper case, 5.5 blocks lower case body, 1/3 block space, 2 blocks lower diacritics.
Clear distinctions exist among the members of each of the following groups of glyphs: ({[ ])} Il1 aes Ss56$ Zz217? `' ., uUvV coCO0D pP ;: ~- to help tell exacty what each glyph is. This is critical in programming.
Numbers are really large. It doesn't hurt at all for numbers to stand out in programming. This is ok because numbers never have diacritics. The 7 has a bit of a scoop so it does not look like a 2 when underlined.
Vertical alignment - The pairs {} () and [] line up precisely vertically.
The dots are large and distinct so they show up easily in code.
Large numeric 'operators' +-/\%^~=* are easy to read in code.
At least one block touches the right edge in each glyph so that Visual Studio can figure out what's going on. This also means that many glyphs do not touch the left edge and some narrow puctuation glyphs have a tiny extra block off on the right edge.
Floating a little bit above the zero line helps in dealing with underlines.
Avoids horizontal strokes to reduce problems with pixelation at various sizes in various programming tools.
Sans Serif (mostly) so that you can cram glyphs together more tightly.
Also:
Diacritics have lots of space since the area above and below the capitals is more than 2 blocks, so they can be added later on.
Looks scripty - There is a bit of a scripty thing going on because of the wide bases for the lower case i and l, so this is enhanced a bit in the I, J, S, U, Z, f, t, u, z and s.
Narrow enough to be mistaken for an informal text font although since it is designed for two dimensional work, simple lines of text are not that easy to read.
A little too thin - A little bit too thin to be easy to read on a pixelated screen below size 10, although it does print very nicely, so I am labeling this Friendly Geek Light, and I am building a Regular and a Bold font also.
Recent Changes:
Made the 'h' lean to the right to distinguish from the 'b'. Straightened out the '+'. Made the 'F' drop below the rest of the upper case to make it look less like an 'f'. Heightened the 'v' to make it smoother.