BabelStone Blog

Wednesday, 6 February 2008

Pigpen and Fowl Fonts

As a respite from the interminable rewriting of BabelMap and BabelPad, over the last few days I have been creating a few fun cipher fonts for my children. I am still working on several more, but to celebrate the end of the Year of the Pig I thought I would release what I have done so far, so that children of all ages might enjoy them :

BabelStone Pigpen

BabelStone Pigpen is an extended pigpen cipher font. There are many different variants of the pigpen cipher—this is one of the most common variants, with two # pens and two X pens for the letters A..Z/a..z (upper and lower case letters are not distingushed in this font). It also has an extra pigpen for the numbers 1..9 (zero is the same as the letter "O"), as well as various additional punctuation marks, symbols and letters to cover all of the graphic characters in the Basic Latin and Latin-1 Supplement blocks (U+0000..U+00FF).

BabelStone Club Penguin

BabelStone Club Penguin is a font for the Secret Agent code used in Club Penguin. It is based on "Babelstone Pigpen", but with the Club Penguin forms of the letters A..Z/a..z, and the unknown character mapped to the question mark.

BabelStone Leeson

BabelStone Leeson is a font for the variant form of pigpen cipher found on the gravestone of James Leeson (died 1794) in the graveyard of Trinity Church on Broadway in New York. This cipher represents the 24-letter alphabet of the 18th century, so that I/J and U/V are not distinguished. There are three spare berths in the third pigpen, which I have assigned to ampersand, question mark and exclamation mark.

BabelStone Centaurian

BabelStone Centaurian is based on the Centaurian alphabet used in the UK edition of Artemis Fowl : The Arctic Incident by Eoin Colfer. A version of the Centaurian font is also available from Artemis Fowl FanGathering, but not only are some of the glyphs rather poorly designed ("O" and "R" are particularly bad), but the font's creator has mistakenly created a glyph for the letter "T" (which should be blank) and has a blank glyph for the space characters (which should not be blank), so it cannot be used to replicate the actual Centaurian text used in the book.

Creating a non-blank glyph for the space character proved to be quite problematic as Windows apparently always uses the space character (U+0020) as the break character regardless of what you define the break character to be in the font (the usBreakChar member of the OS/2 table), and if the glyph mapped to U+0020 is not blank all sorts of unpleasant things happen when you try to use the font (see Sorting It All Out for further details). In my font I hack around the problem using advanced OpenType features—I make the glyph for U+0020 blank, but unconditionally substitute the desired non-blank glyph for the space character in the GSUB table. This works on Windows as long as your system has Uniscribe version 1.420.2600.2180 or later of installed (i.e. you are running Windows XP SP2 or later). If you are running an earlier version of Windows (e.g. Windows 95, 98 or Me), or if you want to use the font with an application that does not support advanced OpenType features, you can access the special space glyph by using the underscore (_) character.

None of the text samples in Centaurian that I have access to use the letters "J" or "Z", so I have devised my own glyphs for these two letters. I have also devised my own glyphs for the digits 0..9 and all the punctuation marks and symbols in the Basic Latin block (U+0000..U+007F). Note that uppercase and lowercase letters are identical.



Index of BabelStone Blog Posts