Recipes

Tutorial
by Rainer Erich Scheichelbauer
en fr zh

5 August 2022 Published on 14 January 2013

Cook your glyphs with components. Stir gently and let it boil for a few minutes, serve hot. Enjoy.

You probably know the Glyph > Add Glyphs… (Cmd-Shift-G) command. It gives you a text entry sheet like this one:

Now you can enter glyph names as they appear in the Glyph Info panel, like germandbls, five, guillemetleft. Or you can enter the actual character, like ä or à, and Glyphs will add a glyph with the proper glyph name, in this case adieresis and agrave. The command even recognizes ligatures, so you can enter t_t and you get a ligature glyph called t_t with two t components in it. You can enter many glyph names at once, separated by spaces or carriage returns. This way, you can copy and paste complete glyph lists you keep around in text files, and you can create many glyphs at once.

Single component recipes

The really cool stuff, however, are recipes. A recipe is a string containing an equals sign, e.g. six.numr=six.sups. Glyphs tries to make a component of what’s left of the equals sign. What’s right of the equals sign is the resulting glyph name. So, in the example of six.numr=six.sups, Glyphs will create a glyph called six.sups and inject a six.numr component.

Think of the possibilities. Imagine you want to build an uppercase-only font. You could enter something like this:

A=a B=b C=c D=d E=e F=f G=g H=h I=i J=j K=k L=l M=m
N=n O=o P=p Q=q R=r S=s T=t U=u V=v W=w X=x Y=y Z=z

This creates lowercase letters a-z and inserts the caps A-Z into them, but as components! This way, upper- and lowercase letters will always stay synchronized. Cool.

Multiple components

Option 1 Mark attachment

Enter the plus sign. Take a look at this recipe:

h.short+circumflexcomb.case=hcircumflex

This recipe takes the h.short letter component, adds the circumflexcomb.case mark component and creates the glyph hcircumflex, connecting the components with their respective top and _top anchors, as you would in diacritics. You may need to add a new glyph and call it h.short. Now you can shorten the bar and reposition the top anchor, to get an even nicer hcircumflex:

In most cases, the built-in recipes will do nicely. And you only need to write the glyph name and Glyphs figures out the rest. E.g. if you enter edieresis, Glyphs will build it from e and dieresiscomb components. You can take a look at the built-in recipes in the Components column of Window > Glyph Info. If you do not agree with the pre-cooked recipe, you can roll your own with the plus sign.

Option 2 Ligature attachment

Let’s take it one step further. What happens if we do not add a mark in the recipe?

f.ligature+icaron=f_icaron.liga
f.ligatureLow+f.ligature+icaron=f_f_icaron.liga

In these cases, the second and third glyphs are not diacritical marks, but regular letters: variants of f fit for ligatures. This means that, in this example, Glyphs will insert the components of the respective letters next to each other, forming a ligature:

The components will be placed inside the ligature the same way as if the letters were typed next to each other. The placement respects kerning. Or you can take precise control of the placement with #exit and #entry anchors. In the f parts, you would place an anchor by right clicking in the canvas, choosing Add Anchor from the context menu, and renaming the anchor to #exit:

And in the idotless, which is the base component of icaron, you would place the corresponding #entry anchor:

To sum up, using recipes, you can add two glyphs to create either a diacritic or a digraph. And the best thing about it is that the resulting glyph will be made of components. You can control the exact point of connection with #exit and #entry anchors. Read more about tricks like these in the Component tricks tutorial.

Ranges

You can add complete ranges in Unicode with a colon between two glyph names, like this:

uni2500:uni257F

This, for instance, will add all box drawing characters as glyphs to your font. In short, the structure is glyphname1:glyphname2, where glyphname1 has a Unicode value smaller than that of glyphname2. Then all the characters listed in Unicode between these two will be added.

By the way, it does not matter which glyph name structure you follow. Can be nice names, can be uniXXXX names. So, this is equivalent to the example above:

boxLightHorizontal:boxHeavyUpAndLightDown

Multi-line editing

You will be confronted with situations where you have a bunch of recipe lines with a similar structure. And that is when you will find yourself repeating typing similar stuff in every line, again and again, like a robot. Ugh.

Luckily, there are text editors that allow multi-line editing, namely Sublime Text and TextMate. In TextMate you tap the Option key to switch between regular and column selection. Once you are in column selection, any editing you do is done on every line. In Sublime Text, you do the same by pressing Cmd-Shift-L.

Combine this with the ability to copy all selected glyph names: Select glyphs in the Font tab, right click to bring up the context menu, and pick Copy Glyph Names > One per Line.

Then paste in TextMate or Sublime Text, and multi-line edit away:

Pretty cool.


Sample font: Alena, courtesy of Roland Stieger.
Update 2017-10-05: added note and paragraphs about Ranges and Multi-Line Editing.
Update 2019-08-05: corrected typos (thanks Nathalie!).
Update 2022-08-05: rewrote Multiple components chapter, added tip, updated screenshots, minor formatting.
Update 2022-09-11: fixed typo (thx Curtis!).