Creating an All-Caps Font

  • by Rainer Erich Scheichelbauer
  • Tutorial
  • – Modified on

The whole point of an all-cap font is that it should not matter whether the user types the key for the lowercase or the uppercase letter. It should always produce the glyph for the capital letter.

A computer differentiates between letters (and thus, also between upper- and lowercase) by means of Unicode values. For example, uppercase K has the Unicode value U+004B while the corresponding lowercase k is represented by U+006B.

In case you were wondering what the U+ means: it is the marker for a Unicode hexadecimal code. The most important codes, the codes in the so-called ‘Basic Multilingual Plane’ (BMP) have four digits and can be represented with 4 hexadecimal digits, from U+0000 to U+FFFF, in total 65,536 code points, containing the characters for all modern writing systems. Read more in the Unicode tutorial.

A glyph in your font is either accessed by its Unicode value, or, typically the glyphs with a dot suffix, through an OpenType substitution feature, which substitutes a glyph carrying a Unicode value with a glyph that has no Unicode value associated with it. The glyphs with a Unicode value can often be typed (that is, if you have the appropriate keyboard layout), or copied and pasted as text.

Double Unicodes

Luckily, since app version 2.5, you can assign not only one, but several Unicode values to a glyph. You can even have Glyphs assign them automatically in one go:

  1. In Font View (Cmd-Opt-1), go to the left sidebar and select Categories > Letter > Lowercase.
  2. Select all glyphs (Edit > Select All, Cmd-A).
  3. Choose Glyph > Remove Glyph (Cmd-Delete). Confirm the dialog that pops up:

  4. In the left sidebar, select Categories > Letter > Uppercase.
  5. Again, select all glyphs (Edit > Select All, Cmd-A).
  6. Choose Glyph > Update Glyph Info.

Now, all Uppercase letters should have two Unicode value assigned: its original uppercase value, plus the corresponding lowercase code.

Features and Glyph Set

Do not forget to update the automatic and manual OpenType features in File > Font Info > Features (Cmd-I). And consider removing some features that may not make sense anymore when there are no lowercase letters, like the case and cpsp feature.

You may also rethink your glyph set. An all-caps font usually will not need old-style figures, and the lining figures will probably not need any height compensation and can stretch to the full cap height. You may also want to reconsider the design of your parentheses, brackets and curly braces. Your quotes, dashes, bars and slashes will only need to match the caps.


If you are converting a font from mixed case to caps-only, and you had a cpsp feature for increasing the tracking between the caps, you may want to incorporate the extra spacing into the sidebearings of the uppercase glyphs containing paths. If you are employing auto-alignment in your compound glyphs, they will follow automatically. To do so, follow these steps:

  1. In Font View (Cmd-Opt-1), open the gear menu in the lower left corner and choose Add Smart Filter.
  2. In the Smart Filter options, pick an appropriate name, then add the conditions Count of Paths: is greater than 0 and Category: is Letter, and confirm by pressing OK.
  3. Make sure the smart filter is selected, and select all glyphs displayed by the filter (Cmd-A).
  4. In Filter > Transformations > Metrics, select the Relative option, and add your cpsp increment (typically a value like 5 or 10 units) to the glyphs. Confirm with OK.

Now all your remaining uppercase letters have the sidebearings they need.

Pro tip: You may want to double check if there are some unaligned compounds, as marks may have shifted, and especially RSBs may not be what you want them to be. Again, you can use a smart filter for finding the culprits. This time with the options Count of Components: greater than 0 and Is Auto-Aligned: No.

Vertical Metrics

In File > Font Info > Masters (Cmd-I), you can probably get rid of the Alignment Zones for x-height, ascender and descender. Your Standard Stems only need to match the uppercase stems.

Do keep the Ascender and Descender values around, though, since they will be used to derive the vertical metric values written into the respective OpenType font tables OS/2 and hhea (see the Vertical Metrics tutorial for details). It is best to keep these values around the font master’s highest and lowest bounding box values, typically found in diacritics like Ccedilla and Ohungarumlaut.

Problems with Double Encodings

As much as double encodings can cut down on file size, there is also one problem with certain PDF workflows. Copying selected text from a PDF can result in garbled casing of the character stream inside the clipboard, i.e., coPiED tExt caN END uP looKiNg liKE tHiS, unless the PDF was created in a certain way (hint: not with Acrobat Distiller) and the text extraction is also done in a certain way. Don’t worry, this just affects the text in the clipboard, the representation in the PDF will be fine. Then again, text extraction from PDF is flawed anyway, and if this is not much of a concern for you, you’re good.

Otherwise, your only option is to actually duplicate the glyphs, which best is done with a single-component recipe through Glyph > Add Glyphs… creating component copies of your uppercase letters, as described in the tutorial about recipes.

Update 2018-04-24: Added Problems section. Thanks to Aaron Bell, Khaled Hosny, and John Hudson.