In the early years, it was a requirement to have glyph names stored within a font. There was a pre-defined list of names, but only for a selected list of Unicode codepoints. It was not a comprehensive list and since the names were mostly redundant information taking up space, nowadays most fonts are shipped without glyph names.
During production, it is important to easily identify glyphs by their name, especially when you haven’t added outlines yet. Also, some glyphs look alike, or you’ve provided alternates. For this purpose, we are not bound to the glyph names used for release, instead, we use friendly names that are also used to automate things. The glyph names are not only used to generate automated OpenType layout features, but also in glyph metrics expressions, so it is important to give your glyphs proper names.
Friendly Glyph Name Convention
So FontCreator uses friendly names for all characters and glyphs which allows you to quickly identify them, but how should you name them?
First, the friendly glyph names are case sensitive, so “adotbelow” and “Adotbelow” are two different names.
We make a distinction between a character (mapped glyph) and unmapped glyphs. A character is a glyph with a Unicode codepoint. An unmapped glyph has no codepoint assigned to it, and thus is not a character. An unmapped glyph can still represent a character, but you are not able to access it directly within a word processing application. OpenType layout features allow you to access those unmapped glyphs, and that is where the name convention comes into play.
Characters (mapped glyphs) starts with the actual friendly description of the character. If the character belongs to a non-Latin script, the abbreviation for the script (which starts with a hyphen) is added. Some examples:
Friendly Name | Code-point | Script | Unicode description |
Ccedilla | $00C7 | Latin | LATIN CAPITAL LETTER C WITH CEDILLA |
Five | $0035 | - | DIGIT FIVE |
A-cyrl | $0410 | Cyrillic | CYRILLIC CAPITAL LETTER A |
fi | $FB01 | Latin | LATIN SMALL LIGATURE FI |
zacute | $017A | Latin | LATIN SMALL LETTER Z WITH ACUTE |
Unmapped glyphs have a name that leads back to the source character(s). There are two groups of unmapped glyphs:
- Ligatures
- Character Variant
A ligature is a glyph that consist of several characters. The name for the ligature is the concatenation of the names of the glyphs that make up the ligature with an underscore between the individual glyph member names.
Friendly Name | Based On |
f_f_j | f, f, and j |
z_gravecomb | z and gravecomb |
A character variant is an alternate form of another character, glyph, or ligature. Do give it the same name as the mapped glyph and add a suffix that identifies how the glyph can be accessed through OpenType layout features. Examples:
Friendly Name | Based On | Variant |
Ccedilla.ss01 | Ccedilla | Stylistic Set 01 |
five.sups | five | Superscript |
A-cyrl.pcap | A-cyrl | Petite Capitals |
zero.zero | zero | Slashed Zero |
sheen_yehhamzaabove-arab.fina | sheen-arab and yehhamzaabove-arab | Final Form |
If a glyph name is used in an OpenType script, it could cause issues with the parser if it contains specific characters. One of them is the hyphen which is both used to provide a script to the glyph name, but also to define a range of glyphs. In such a case, the glyph name comes between double quotation marks.
Generate Glyph Names
Generate Glyph Names (available through the main menu -> Tools -> Glyph Names -> Generate) will generate glyph names for all glyphs with a known code-point. It will also try to set names for glyphs that are used in the specified OpenType layout features.
Glyph Names and Exporting Fonts
If you wish to include glyph names in your generated fonts, it is best to select “Regenerate for release” in the Export Settings. This way you can provide friendly glyph names to be used for production only.