Ligatures for Go stones


I’m making a new version of an old GO font of mine (then in TTF and PFB format). I would like an OTF font as output. Because white and black stones could be numbered from 1 to about 400 (if I remember correctly the longest game had 411 moves) I thought it is probably a good idea to make ligatures so that input will be as natural as possible. E.g. Z123 should result in a white stone (Z is only a circle) with all three digits centered in the stone. From the point of design it would save space (I would have to make only one range of digits for white and black stones) if the mechanism works well. Do you think this is a reasonable approach? Alternatives?

The old font had three different sets for left, middle and right digits and three different black stones for 1-9, 10-99, and 100-999.


If you build ligatures, you still need a glyph for each number. What you want is contextual positioning. So you move the numbers on top of the circle. But that might only reliably with the white stones. Because overlaying might not cut out the numbers out of the black background in some environments (you need to pla with the path direction).

Ah, o.k. Where can I find more information about how to use it / set it up? I did not find it in the 2.3 handbook.
I can still use the three “base” chars:

I would not use letters for that. That all variants of the “z” glyph. So The “w” > “z.1”, “x” > “z.2”, “y” > “z.3”. You don’t need to type them, you can substitute them with a context feature.

sub z' @figures @figures @figures by z.3;
sub z' @figures @figures by z.2;
sub z' @figures by z.1; 

Thank you! Can you please give me a hint where I can find more information about contextual positioning in general (e.g. and how to use it in Glyphs (where do I define it exactly?)?

You do it in an OpenType Feature.

  1. As an intro, you can read the Contextual Kerning Tutorial. The info in there may even be enough for what you intend.
  2. Google for the AFDKO Feature Code Syntax specification.

This might help:

Thank you very much for the hints! Very much appreciated.