Making small caps

Tutorial
by Rainer Erich Scheichelbauer
en fr zh

7 October 2021 Published on 29 October 2015

So, you’ve finished all your uppercase glyphs, and you are on a roll? Here’s how the software can generate small caps from your uppercase.

Duplicating and renaming

Glyphs employs a special naming scheme for small caps: a lowercase name plus the suffix .sc. Alternatively, there are the suffixes .smcp for lowercase to small caps, and .c2sc for uppercase to small caps.

First of all, you need to duplicate all the letters you want small caps for. Generally, that would be all uppercase letters which do not consist of components. You can easily filter them by clicking on the gear icon in the bottom left corner in the Font view, and selecting Add Smart Filter. Then, select Count of Paths, is greater than and enter 0:

Now, select your filter and Letter > Uppercase at the same time by holding down Cmd while selecting. That will give you all uppercase letters without components.

If your design requires it, don’t forget about small caps variations for figures, punctuation and marks. In this example, we will stick with uppercase letters. Select all your chosen letters and go to Glyph > Duplicate Glyph (Cmd-D). Now, all the duplicated glyphs have the suffix .001:

Now, you need to rename them, because small caps have the suffix .sc. But, you don’t have to rename them one by one. Just select all your .001 glyphs and press Shift-Cmd-F, or go to Edit > Find > Find and Replace. Enter .001 in the Find box, .sc in the Replace box, and press Replace:

To easily toggle the names of your glyphs from uppercase to lowercase, simply use the Make glyph names lowercase script in the Glyph Names folder of mekkablue’s scripts (for Glyphs 3, click here to install them directly via the Plugin Manager). It automatically changes the names of selected glyphs to lowercase.

Or, for the geeks amongst you, there’s a cooler, built-in way to do it. You can do both renaming steps (adding the suffix and lowercase) at once with this little trick:

Again, select your glyphs, go to Edit > Find > Find and Replace (Shift-Cmd-F) and enter (.*)\.001 in the Find field. The (.*) means any number of any characters, and \.001 means a literal dot, followed by ‘001’. Then, in the Replace field, enter \L\1.sc. \L turns anything that follows into lowercase, \1 stands for the first expression in parentheses, in our case (.*). And .sc is our preferred name suffix for small caps. This time, you also have to check Regex, which means Regular Expressions, which in turn are these funny dots, asterisks and parentheses that mean something. Super easy!

Scaling and fine tuning

Well, it’s not really small caps if it isn’t small. So, you need to ‘scale’ your glyphs, but keep the stem width intact at the same time. Again, you don’t have to do that all manually. If you have more than one master on the weight axis, you can use the RMX Scaler feature of Tim Ahrens’ Font Remix Tools. But they actually do much more than just scaling: The RMX Scaler tries to preserve your stem width, which is what we want for small caps. But RMX cannot guess your stem width, so you need to define a horizontal and vertical stem width for every master in Font Info > Masters (Cmd-I).

Then select your prospective small cap glyphs in Font or Edit view, run Filter > RMX Scaler, and enter values that make sense for your design:

Every column represents one master. When you place your cursor in a column, RMX Scaler will switch the Edit view to the respective master, so you always get a good preview of what you are doing. You’ll probably want your Width value to be higher than your Height value, and the height of your small caps a little above the x-height. You can also change the stems’ Weight by specifying a unit value by which your outlines will be expanded. That is, in case your small caps appear too thin, which sometimes happens in small caps, at the end of the spectrum. Usually, small caps also need a little more spacing. Enter a unit value in the Adjust Spacing field. The Vertical Shift field is for superscript glyphs, so you can ignore it here.

Remember that while RMX is a great help, and it will get you very far in one step, it won’t give you finished small caps. You will still have to do some fine-tuning manually.

So, this is what we achieved so far:

Small-cap height

You have an x-height and a cap height in your metrics, so you should also have a small cap height. There are different way to get this done ,depending on which version of Glyphs you are using,

Adding a small-cap height in Glyphs 3

Go to Font Info > Masters > Metrics, and add a new metrics entry by clicking on the plus button next to the Metrics heading:

A dialog sheet will prompt you for all the things we need to know. Make sure that as Metric Type, you choose x-Height. That is because our small-cap height is supposed to replace the x-height in small-cap glyphs:

The Name is arbitrary, I picked ‘smallcaps’. Pick whatever you like. And most importantly, in Scope, you decide in which glyphs the metric should be displayed. In our case it is easy: set the Scope to all glyphs where the Case is Smallcaps.

So, if you have done everything right, your Metrics section will now also have a new entry for small caps:

The metric entry is automatically synced across all masters. What you still have to do though, is to set the value, the actual height in font units. Typically, this will be a bit above the x-height. In my example, I pick 530, which is 50 units above the x-height of 480.

Adding a small-cap height in Glyphs 2

Go to Font Info > Masters, add a new Custom Parameter and select smallCapHeight in every master. For Value, enter the height respective of your small caps. This way, you won’t need to clutter your Edit view with dozens of guides. Finally, don’t forget about your overshoots: press the refresh button for Alignment Zones and adjust them as needed, or add it manually with the plus button.

Now, whenever you edit a .sc glyph, the small caps height is displayed instead of the x-height in your Edit view:

Add missing small caps

What about all the other letters? Easy. Glyphs keeps track of all the letters that do not have corresponding small caps yet. Go to Font view (Cmd-Opt-1), and in the left sidebar, you will find Categories > Letter > Small Caps, with a dynamic counter indicating how many small-cap letters are still missing:

In this screenshot, there are 169 potential small caps, and 0 of them are currently in the font. Right click the entry, select all suggested small caps, and click Generate.

Keep in mind that it is a dynamic counter. So, if you add more uppercase or lowercase letters later, make sure to check back with the small-cap count.

OpenType Features

For adding a small caps feature, go to File > Font Info > Features and click Update, then Compile. You should now have two additional features called smcp and c2sc. The first one, smcp, turns your lowercase glyphs into small caps, and c2sc (short for ‘caps to small caps’) does the same with your uppercase letters.

DTP applications like InDesign or QuarkXPress or Affinity Designer will typically give two choices when it comes to small caps:

  • only turning your lowercase into small caps: will trigger smcp only
  • turning all (uppecase and lowercase) letters into small caps: will trigger both smcp and c2sc

Keep this in mind in case you write your own custom feature code, and need to decide whether you put something into c2sc or smcp.

And after all that hard work, you want to know if it actually works. Read more about testing your fonts in Adobe programs.

Special cases

OK, there are some cases where you need to pay special attention. Let’s go through them:

Letters

There are two ways to handle idotless and jdotless. If you think about it, it is clear the small-cap variants should look exactly like the small caps for i and j. Assuming you already have i.sc and j.sc in your font, you can bring up the glyph creation dialog with Glyph > Add Glyphs… (Cmd-Shift-G), and type:

i.sc=idotless.sc
j.sc=jdotless.sc

… and update your features, and you are done.

Alternatively, you may be one of those people who do not appreciate duplicate glyphs in their fonts. In that case, go to File > Font Info > Features and add a second smcp feature, diable its automation, and add this code in it:

sub idotless by i.sc;
sub jdotless by j.sc;

It would look something like this:

Ligatures should not pose a problem because the small-cap features will execute before the ligature features. Unless of course you have an encoded legacy ligature, most prominently fi and fl. They should not be in use anymore, but unfortunately we still have to add them to our fonts because some Mac keyboard layouts still have them. In that case, go to File > Font Info > Features and update your ccmp feature. It should contain a lookup with at least these two enclosed lines:

lookup ccmp_latn_1 {
    sub fi by f i;
    sub fl by f l;
} ccmp_latn_1;

That way, the legacy ligatures fi and fl will always be decomposed to their respective letters, and the small-cap features can do their job.

Legacy digraphs like the Balkan digraphs Lj lj LJ Dz dz DZ etc. work the same way.

Punctuation

For punctuation glyphs, consider .c2sc as suffix instead of .sc. That will keep the punctuation out of smcp, but in c2sc. And that is a good idea because punctuation should only turn into small caps if both uppercase and lowercase letters are turned into small caps. They should stay the same if only the lowercase letters are smallcapified.

Needless to say, only a few punctuation glyphs need the small-cap treatment. For some it is optional. Think twice if you need small-cap variants of your round parentheses, square brackets and curly braces. Or design your defaults in such a way that they also fit small caps, and you do not need to add .c2sc variants.

However, you need to add these:

exclam.c2sc
exclamdown.c2sc
question.c2sc
questiondown.c2sc

And likewise for the interrobang if you have it in your font:

interrobang.c2sc
invertedinterrobang.c2sc

Why? Because your font will not work for Spanish if you do not add these. So even if you do not want to add any small-cap punctuation, you have to for all exclamation and question marks. Or market your font as ‘not supporting Spanish’. Your choice.

Legacy: adding missing small caps in Glyphs 2

If you are using Glyphs 2, you may have noticed that there is no dynamic Small Caps glyph list in the sidebar. So here’s what I suggest as a workflow if you need to operate a legacy version of Glyphs:

First, add a Smart filter, but this time, select First Master has components and Yes:

Now, select your filter and Lowercase at the same time, just like we did before with the uppercase. You know, by holding down Cmd. Select all these letters, right click and select Copy Glyph Names > Space Separated. Now all glyph names of lowercase components are in your clipboard.

Open the text editor of your choice, like TextMate, TextWrangler, Atom, Sublime, or BBEdit and paste it there. Use the Find and Replace function to replace every space with .sc plus space.

This should turn aacute, abreve, acaron, … into aacute.sc, abreve.sc, acaron.sc, …. Copy your new list and switch back to Glyphs again. Go to Glyph > Add Glyphs (Shift-Cmd-G), paste the list and press Generate. Glyphs will then build your small cap glyphs and prefer .sc components wherever possible. Done!

You can also add glyphs manually by pressing the plus button in the bottom left of the Font View, and rename them. For example, name the small cap variant of the a with the dieresis adieresis.sc, and go to Glyph > Make Component Glyph (Shift-Cmd-C). Now the glyph will be put together with the components a.sc and dieresiscomb.sc. Glyphs prefers glyphs with the same suffix, wherever possible. So, if you don’t have a dieresiscomb.sc in your font, it will default to dieresiscomb instead.


Update 2019-02-11: minor corrections, formatting and typos, added Atom link.
Update 2019-08-09: changed the name of the Make glyph names lowercase script and corrected typos (thank you Nathalie Dumont.)
Update 2021-10-06: differentiated between Glyphs 2 and 3 in the Metrics setup.
Update 2021-10-07: added ‘Special Cases’.