Results 1 to 10 of 67

Thread: So I made a new "programmer font."

Threaded View

  1. #1
    Join Date
    Oct 2008
    Ubuntu 12.04 Precise Pangolin

    So I made a new "programmer font."

    Current version: 0.9.2 (download below) changes

    (left to right: sample with code, Latin charset examples, Hebrew charset samples + gtk widget)

    Note: there is a tl;dr version at the bottom for the incompetent. There are also pictures and downloads down there, but first, I've got a lot to say, and I'm going to say it, even if nobody reads it.

    Programmers tend to have very specific needs and strong opinions when it comes to fonts. Because they spend so much time looking at text, they need fonts to be very readable with good distinction between each number and letter. Fonts for coding generally need to be monospaced as well. Finally, many programmers also like very small fonts, so they can see a lot of lines at once without scrolling.

    Small and "easy to read" don't tend to go hand in hand. Normal vector fonts (such as OTF and TTF) get very blurry or sometimes distorted at small sizes (though good hinting can help). However bitmap fonts do not get blurry. The pixel is either on or off. Though bitmap fonts are not as pretty as vector fonts, they are ideal for readability in a small package.

    Though not a professional programmer, as someone who spends a lot of time working with text myself, I eventually came to appreciate these features in a font, after some coaxing, but I couldn't get over how jaggy bitmap fonts tend to be, so I set out to create my own.

    Initially, my main inspiration was one of my favorite fonts, the old OCR-A font that they used when computerized character recognition was just getting started. At first, I just used this font in the terminal for fun, cause it's quirky and looks cool, but I had another profile setup with a different font for serious work. I eventually ended up switching all of the profiles to this font. The Characters are designed to look different so that a computer can read them correctly, but it turns out that this also helps Humans read them too.

    I started out trying to copy the OCR font as closely as possible. Sometimes it looked good. Other times it looked downright bad. I eventually realized that the shapes I didn't like were happening around diagonal edges. Two undesirable things happen with diagonal lines on a bitmap: First, you see the sharp edge of every pixel. It's impossible to give the illusion of smoothness without anti-aliasing on anything other than a strait line up or down. The other problem is that diagonal lines get extremely thin when they are one pixel wide, appearing much thinner than strait lines. This lead me to embrace the fact that the pixel is a square, and to try to use strait lines as often as possible. I did use some diagonals to produce greater variation of shape in the letters (and thereby improve recognition), but when I have used diagonals, they are, as a rule, two pixels wide instead of one. This makes them a little bit thicker than the normal vertical and horizontal strokes, which isn't ideal, but I find it to be better than thinner, and you have to choose one of the two when working with a bitmap.

    I've ended up with a font that is rather different than the OCR-A font, but some letters still look quite similar (almost all of the numbers), and I've tried to retain a similar sort of feeling, even when the actual glyphs are quite different.

    So that's the story of the font. Now on to the files. There are two files. One, the one that I expect most people will have more use for, covers all characters for western encoding (aka: iso-8859-1, ascii 256, Latin-1). This means it will work with just about any program as an XFT font or a X core font, and is also suitable for most western European languages. The "bitocra-full" file contains all of these glyphs, plus a lot more. As of version 0.9.2, it contains all of the Latin Extended-A charset, which means it should work for every living language with a latin-based alphabet (as far as I know).

    It also many extra characters that I need for my work (grad student in Biblical and Ancient Near Eastern Studies; refer to pic for listing). In addition, it has a complete Hebrew character-set with niqqud (vowel points). These things are not especially interesting unless you happen to be involved in semitic linguistics, or are Israeli.

    BUGS: The extra Unicode characters in bitocra-full seem to make programs that are expecting a normal X core font freak out sometimes. If you use rxvt-unicode as your terminal, you will need to call it with an xft code to take advantage of the extra glyphs.

    There is no bold yet. If you call it as an xft, freetype will automatically generate bold characters. Sometimes they look bad, but they don't mess up the alignment (except maybe Æ and Œ, the two widest glyphs. I haven't tested them).

    I guess that's about it. Constructive criticisms are welcome. Inversely, complements are also welcome. I hope to get some of both.


    I made a very small, readable bitmap font. It supports full Western encoding. The "full" version also has a complete set of Latin Extended-A glyphs, Hebrew glyphs and characters for the transcription of Semitic and Ancient Near Eastern languages.


    v0.9.2 (Current)



    bitocra and bitocrafull are now licensed under the SIL Open Font license v1.1. Font freedom for all!

    Latest version is now available at github -

    Attached Files Attached Files
    Last edited by sffvba[e0rt; September 25th, 2011 at 02:34 AM. Reason: There was a comma in the middle of a word in the title.


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts