Localize Your Font: Catalan Punt Volat

by Rainer Erich Scheichelbauer
en fr zh

12 September 2017 Published on 3 October 2012

In Catalonia, you will sometimes see a dot in mid air between two L’s. Here is why, and how to implement it in your font.

Catalans type L periodcentered L when they mean to type a punt volat between two L in order to indicate that it is an ela geminada, and not a double L, which is pronounced differently.

Typographically, there are two things to consider. Firstly, there is no word space between the two L/l. In other words, it should still look like one word, not two. So, the extra distance caused by the insertion of the middot must not be too much. Secondly, the dot needs to appear in the optical center between the two L/l.

The Kerning Solution

Type designers employ different solutions for this problem. Some prefer a pure kerning solution. For this, you’d simply kern L-periodcentered-L: Type Catalan words like COL·LEGI and paral·lel in your Edit tab, and kern it until you’re satisfied. You may also consider contextual kerning.

The good thing is that this works in language-agnostic typesetting environments, like Apple’s TextEdit and most other Cocoa apps. The Mac text engine does not allow specifying the language and thus ignores the locl feature.

There are a few problems with this approach though. It doesn’t work when kerning is disabled or if the font is used in an environment where there is no kerning available. Also, you may want to use periodcentered for other purposes as well, e.g. to indicate syllables in a dictionary, and then you may run into problems with a word like ‘col·li·sion’.

The Spacing Solution

So, this calls for a solution involving the locl feature. For this, you create a periodcentered.loclCAT next to your default periodcentered, and you space it between two l. For the uppercase L, you can use periodcentered.loclCAT.case. Also, don’t forget your small caps if you have them in your font: For those, you can create periodcentered.loclCAT.sc.

‘What do those suffixes mean?’, I hear you ask. Easy, .case stands for Case-Sensitive Forms, an OpenType feature for shifting ‘punctuation marks […] up to a position that works better with all-capital sequences or sets of lining figures’, whereas locl is the four-letter code for the Localized Forms feature, which is intended to substitute default glyphs with ‘localized variant forms’. And the CAT part is the Language System Tag for Catalan.

And if you make use of this suffix, Glyphs can automatically add the localized mid dots to the locl feature. In version 2 and above, the locl feature entry is even contextual:

language CAT;
sub l periodcentered' l by periodcentered.loclCAT;
sub L periodcentered' L by periodcentered.loclCAT.case;

Which means that, only when (a) the language is set to Catalan, and (b) the periodcentered appears between two l glyphs, it will be replaced by the Catalan periodcentered.loclCAT. And by periodcentered.loclCAT.case between two uppercase L.

All you have to do for the automatic feature generation to happen, is to go into the Features tab of your Font Info (Cmd-I) and click on the Refresh button in the bottom left corner (the one sporting the circled arrow). And Glyphs does the rest for you, including adding a corresponding line to the Languagesystems section.

Many type designers consider this the best solution, mostly because it survives increased tracking, even though the space between the dot and the surrounding lowercase l’s should not increase as much as space between two letters. And it also works in environments where there is no kerning. Consider that, by default, kerning is off in Microsoft Word.

One downside is that it requires the users to set the language of the text. And another is that it will fail in language-agnostic environments. But if you feel like you can ignore the dictionary case mentioned above, you can combine the kerning and spacing solution.

The Ligature Solution

If, next to L, l, and periodcentered, you add the two ligatures L_periodcentered_L.loclCAT and l_periodcentered_l.loclCAT to your font. And, of course, l_periodcentered_l.loclCAT.sc if you have small caps. Glyphs will auto-generate the following locl code:

language CAT;
sub l periodcentered l by l_periodcentered_l.loclCAT;
sub L periodcentered L by L_periodcentered_L.loclCAT;

By now, you can tell the pros and cons. On the plus side, we have perfect control of our ela geminada. But it will fail in language-agnostic environments, and it will not work well with increased tracking.

The Ldot solution

Or, and especially if you care a lot about backwards compatibility, we can actually build the legacy Ldot and ldot and design them in such a way that they look great with a following L or l.

Wait a minute: why ‘legacy’?

In an old 8-bit encoding from the eighties, there used to be a separate Ldot and ldot. They survive to this day as U+013F LATIN CAPITAL LETTER L WITH MIDDLE DOT and U+0140 LATIN SMALL LETTER L WITH MIDDLE DOT in Unicode. They are not supposed to be used anymore, because they are mere compatibility characters. But hey, this only applies to people who produce texts with characters. We’re the font-making people, and on the glyph level, we can do what we want, as long as it looks good. So here we go:

When you create Ldot and ldot, Glyphs gives you a glyph with an L or l component and a periodcentered. Of course you can delete, replace or decompose the periodcentered component if you want to roll your own punt volat.

If Glyphs finds an Ldot, an ldot, an L and an l in your font, it will build this locl feature automatically for you:

language CAT;
sub  l' periodcentered' l by ldot;
sub  L' periodcentered' L by Ldot;

Many type designers are not really happy with this solution, because it looks really stupid with increased tracking. Duh.

The Double Underscore Hack

Usually, the lowercase l has pretty tight sidebearings, i.e. not enough space for a dot. So you may want to adjust the width of the ldot in order to make room for the punt volat. But Glyphs thinks ldot is a diacritic and keeps its metrics synchronized with the l. To remedy this, just select and right-click the l component in your ldot and choose Disable Automatic Alignment from the context menu, and you can adjust the width freely:

Or, instead of placing periodcentered as a component in ldot, you may want to make a copy of periodcentered, and call it __periodcentered, and place that glyph as a component in ldot (__periodcentered.case for the uppercase Ldot).

Note the double underscore at the beginning of the glyph name. When you place a double underscore mark in a glyph, Glyphs will add its width to the right sidebearing while still maintaining automatic alignment. That way, you can control the width of the Ldot and ldot by spacing the __periodcentered. You can even use anchors if you like, e.g. puntvolat in L and l, and a corresponding _puntvolat in the mark glyph. Cool.

Combining Multiple Solutions

It should be easy to combine the language-agnostic solutions with the locl solutions. So, you can make it work in most environments.

But if you have multiple locl solutions, which one will the automatic feature generator pick? Well, in version 2 and above periodcentered.loclCAT will take precedence over L_periodcentered_L.loclCAT, and the ligature will take precedence over Ldot.

If you are not happy with the automatism or the precedence order, please feel free to disable the automatic generation for the locl feature, and type your own code.

And ta-daaa: Now, your font is ready for Catalan!

Update 2014-12-01: Added Spacing and Ligature solutions, double underscore hack, and combining solutions; many small improvements.
Update 2016-02-19: Updated screenshots for Glyphs 2.
Update 2016-10-16: Corrected long-standing typo in ela geminada (thx Joan Montané).
Update 2017-09-12: Fixed typo.
Update 2019-10-25: Fixed typos.