A few weeks ago a stimulating tweet from Corentin of Astora introduced me to the system of Cistercian numerals:

What is really amazing is that a single character (based in fact on a set of compound glyphs) can represent any integer between 1 and 9,999. To distinguish units, tens, hundreds and thousands, a simple symmetry is applied to the basic glyph, and all these shapes blend together perfectly into a single meta-glyph.

Building a Cistercian typeface seemed like an obvious challenge for IndyFont! I spent some time studying the symmetries and experimenting with different basic paths,

then I developed the full template, leaving out the crucial question of how combining these digits in a truly working font.

In this particular project, OpenType ligatures were definitely not an option—unless you have time to declare and draw 9,999 ligatures :-/ But positional forms sounded like a promising lead.

My idea was to process units (`1`, `2`, `3`…) as both regular and final forms, with a normal right side bearing, then I assumed than the tens, the hundreds and the thousands could be managed as either medial, initial or isolated forms respectively, subject to applying specific laws (which obviously diverge from OpenType semantics.)

The whole trick is summarized below:

Thus, the compound glyph for `123` simply results from superimposing the respective glyphs of `100`, `20` and `3`. This is done by zeroing the width of any glyph that does not reflect a unit digit.

In IndyFont, you can declare positional forms for any character and they will behave like alternates. So, for example, the character `1` (U+0031 DIGIT ONE) has five glyph variants: `/one` and `/one.final` (meaning 1), `/one.medial` (meaning 10), `/one.init` (meaning 100) and `/one.isol` (meaning 1000.)

Unfortunately those positional forms will not work “as is” in InDesign. They are just our gateway for tweaking the font through GREP styles and using the OpenType attributes.

• Want to test our nice Cistercian font?
Download the ZIP package (OTF+IDML, 365KB)

• YouTube Demo: