Glyphs 3 Handbook

OCTOBER 2021

You are reading the Glyphs Handbook from October 2021 for theapplication version 3.0. Please download the latest version of thishandbook at: glyphsapp.com/learn© 2011–2021 Glyphs GmbH
Written by Rainer Erich Scheichelbauer, Georg Seifert, andFlorian Pircher.
Thanks to Nathalie Dumont, Jeff Kellem, Rob Keller,
Toshi Omagari, and Claus Eggers Sørensen for theirinvaluable input.

Glyphs 3 Handbook, October 2021

2

Contents
1
1.1
1.2
1.3

Glyphs, 10
Glyphs Mini, 10
Community, 10
Issues, 10

4.2.102Create, 11

4.2.13

3
3.1
3.2
3.3
3.4
3.5
3.6
3.6.1
3.6.2
3.6.3

Preferences, 13
Updates, 13
Appearance, 14User Settings, 15
Sample Strings, 16
Sharing, 17
Addons, 18
Python version, 18
Console Output, 18
Alternate Plugin
Repositories, 18
Shortcuts, 20

3.7
4
4.1
4.1.1
4.1.2
4.1.3
4.2
4.2.1
4.2.2
4.2.3
4.2.4
4.2.5
4.2.6
4.2.7
4.2.8
4.2.9

Edit View, 21
Drawing Paths, 21
Draw Tool, 21
Pencil Tool, 22
Primitives, 23
Editing Paths, 23
Selecting Nodesand Paths, 23
Freeform Selections, 24
Moving Selected
Nodes and Paths, 24
Converting Nodesand Segments, 25
Nodes in
Alignment Zones, 25
Scaling & Rotating, 26
Aligning, 26
Duplicating Paths, 27
Deleting Nodes, 28

4.2.114.2.124.2.144.2.154.2.16
4.3
4.3.1
4.3.2
4.4
4.4.1
4.4.2
4.4.3
4.4.4
4.4.5
4.4.6
4.5
4.5.1
4.5.2
4.5.3
4.6
4.6.1
4.6.2
4.7
4.7.1
4.7.2
4.7.3
4.7.4
4.8

Opening andClosing Paths, 28
Cutting Paths, 29
Resegmenting
Outlines, 29
Controlling Path
Direction, 31
Extremes & Inflections, 31
Duplicate Nodes, 32
Focusing & Locking, 32
Graphic Attributes, 33
Creating Strokes, 33
Masking, 34
Anchors, 34
Adding, Editing, andRemoving Anchors, 35
Mark to Base
Positioning, 36
Mark to Mark
Positioning, 36
Cursive Attachment, 36
Ligature Carets, 36Contextual Mark
Attachment, 37
Guides, 38
Magnetic Guides, 38
Local & Global Guides, 38
Glyph-SpecificUndo History, 39
Glyph Info, 40
Horizontal Layout, 40
Vertical Layout, 40
Glyph Display, 41
Zooming, 41
Panning, 42
View Options, 42
Glyph & Layer Colors, 43
Background, 44

Glyphs 3 Handbook, October 2021

3

4.9
4.9.1
4.9.2
4.9.3
4.9.4
4.10
4.10.14.10.24.10.34.10.44.11
4.11.1
4.11.24.11.34.11.44.11.54.12
4.12.14.12.24.13
4.13.14.13.24.13.34.13.44.13.54.13.64.13.7

5
5.1
5.2
5.3
5.3.1
5.3.2
5.3.3
5.4
5.4.1

Entering Text, 44
Text Preview, 45
Sample Strings, 46
Text Tool, 46
Writing Direction, 47
Measuring, 47
Info box, 47
Measurement Tool, 48
Measurement Guides, 50
Measurement Line, 51
Annotating, 52
Annotation Cursor, 52
Annotation Text, 52
Annotation Arrow, 53
Annotation Circle, 53
Plus & Minus
Annotations, 53
Images, 54
Adding Images, 54
Manipulating Images, 54
Previewing & Testing, 55
Previewing Kerning, 55
Previewing Masters, 55
Previewing
OpenType Features, 55
Previewing
Interpolated Instances, 56
Previewing in macOS, 57
Previewing in
Adobe Applications, 58
Previewing in Web
Browsers, 58

5.4.2
5.4.3
5.4.4
5.4.5
5.4.6

Mirroring, 63
Scaling, 64
Rotating and Slanting, 64
Aligning, 64
Boolean Operations, 64

6
6.1
6.1.1
6.1.2

Filters, 66
Applying Filters, 66
Filter Menu, 66
Filters as Custom
Parameters, 66
Built-In Filters, 68
Shape Order, 68
Extrude, 69
Hatch Outline, 69
Offset Curve, 70
Roughen, 72
Round Corners, 72
Rounded Font, 73
Transformations, 73
Add Extremes, 76
Remove Overlap, 76
Third-Party Filters, 76

Palette, 60
Dimensions, 60
Fit Curve, 60
Layers, 61
Master Layers, 61
Backup Layers, 61
Special Layers, 62
Transformations, 62
Transformation Origin, 63

7.2.3
7.3
7.3.1
7.3.2
7.3.3
7.3.4
7.3.5
7.3.6
7.3.7

6.2
6.2.1
6.2.2
6.2.3
6.2.4
6.2.5
6.2.6
6.2.7
6.2.8
6.2.9
6.2.106.2.11
7
7.1
7.1.1
7.1.2
7.2
7.2.1
7.2.2

Font View, 77
Viewing Glyphs, 77
Grid View, 77
List View, 78
Managing the
Glyph Set, 78
Adding New Glyphs, 78
Copying Glyphs
Between Files, 80
Removing Glyphs, 81
Glyph Properties, 82
Glyph Name, 82
Metrics, 83
Kerning Groups, 83
Exports, 83
Color Label, 83
Tags, 84
Unicode, 84

Glyphs 3 Handbook, October 2021

4

7.3.87.3.9
7.3.10

7.5.8
7.6
7.6.1
7.6.2
7.6.3
7.6.4
7.6.5
7.6.6
7.7

Production Name, 85
Script, 86
Category &Subcategory, 86Case, 86
Writing Direction, 86
Sort Name, 86
ID, 87
Char, 87
Note, 87
Components, 87
Last Changed, 87
Batch-Processing, 87
Selecting Glyphs, 88
Batch Commands, 88
BatchRenaming Glyphs, 89
Filters, 90
Palette, 90
Plug-ins & Scripts, 90
Filtering & Sorting, 90
Search Field, 90
Categories, 91
Languages, 91
Smart Filters, 92
List Filters, 94
Manage Filters, 95
Custom Categories& Languages, 95
Glyphs Order, 95
Names and Unicode, 96
Glyph Info Database, 96
Naming Glyphs, 97
Glyph Naming Rules, 97
Copy Glyph Names, 99
Renaming Glyphs, 100
CID Mapping, 100
Images, 101

8
8.1
8.1.1

Font Info, 102
Font, 102
Family Name, 102

7.3.11
7.3.12
7.3.137.3.147.3.157.3.167.3.177.3.18
7.4
7.4.1
7.4.2
7.4.3
7.4.4
7.4.5
7.4.6
7.5
7.5.1
7.5.2
7.5.3
7.5.4
7.5.5
7.5.6
7.5.7

8.1.2
8.1.3
8.1.4
8.1.5
8.1.6
8.1.7
8.1.8
8.1.9
8.1.108.1.118.1.128.1.13
8.2
8.2.1
8.2.2
8.2.3
8.2.4
8.2.5
8.2.6
8.2.7
8.3
8.3.1
8.3.2
8.3.3
8.3.4
8.3.5
8.3.6
8.4
8.4.1
8.4.2
8.4.3
8.4.4
8.4.5
8.4.6
8.4.7

Units per Em, 103
Version, 104
Date, 104
Designer &Designer URL, 104
Manufacturer &Manufacturer URL, 105
Copyright, 105
License &License URL, 105Trademark, 105
Description, 105
Sample Texts, 105
Axes, 106
Custom Parameters, 106
Masters, 106
Managing Masters, 106
General, 107
Axes Coordinates, 107
Metrics &Alignment Zones, 108
Stems, 109
Custom Parameters, 110
Number Values, 110
Exports, 110
Active, 111
Style Name, 111
Weight & Width, 112
Axes Coordinates, 112
Style Linking, 113
Custom Parameters, 114
Features, 114
OpenType
Feature Code, 114
Automatic
Feature Code, 115
Manual Feature Code, 116
Tokens, 117
Conditional
Feature Code, 120
Naming Stylistic Sets, 121
Implicit Features, 121Glyphs 3 Handbook, October 2021

5

8.4.8
8.5
8.5.1
8.5.2
8.5.3
8.5.4
8.5.5
8.5.6
8.6
9
9.1
9.1.1
9.1.2
9.1.3
9.1.4
9.1.5

9.1.6
9.1.7
9.1.8
9.1.9
9.1.109.1.119.1.129.1.139.1.14
9.2
9.2.1
9.2.2

Export-SpecificFeatures, 122
Other Settings, 122
Grid Spacing &Subdivision, 122
Keyboard Increments, 123
Use Custom Naming, 123
Disable Automatic
Alignment, 124
Keep Alternates
Next to Base Glyph, 124File Format Version, 124
Notes, 124
Reusing Shapes, 126
Components, 126
Building Composites, 126
Turning Paths into
Components, 127
Recipes, 127
Editing Components, 128
Moving between
Base Glyphs andComposites, 128
Component
Placeholders, 129
Anchors, 129
Automatic Alignment, 130
Locking Components, 132
Decomposing, 133
Combining Paths
and Components, 133
Nesting Components, 133
Preferred Marks for
Glyph Composition, 134
Underscore
Components, 134
Smart Components, 134
Setting up Smart
Glyphs, 135
Using Smart
Components, 137

9.2.3
9.2.4
9.3
9.3.1
9.3.2
9.3.3
9.4
9.4.1
9.4.2
9.5
9.5.1
9.5.2
9.6
9.6.1
9.6.2
9.7
9.7.1
9.7.2
9.7.3
10
10.1
10.1.110.1.210.1.310.1.410.2
10.2.110.2.210.2.310.2.410.2.510.2.6

Width & Height
Properties, 137
Smart Handles, 137
Corner Components, 138
Creating Corner
Glyphs, 138
Using Corner
Components, 138
Extra Nodes, 139
Cap Components, 140
Creating Cap Glyphs, 140
Using Cap
Components, 140
Segment Components, 141
Creating Segment
Glyphs, 141
Using Segment
Components, 141
Brushes, 142
Creating Brush
Glyphs, 142
Using Brushes, 142
Pixel Tool, 143
Setup, 143
Drawing Pixels, 143
Pixel Shape, 144
Spacing & Kerning, 145
Spacing, 145
Info box, 145
Spacing Shortcuts, 146
Metrics Keys, 146
Metrics Keys andAutomatic Alignment, 148
Kerning, 148
Kerning Modes, 149
Info box, 149
Kerning Shortcuts, 149
Kerning Groups, 150
Kerning Group
Exceptions, 151
Kerning Window, 151

Glyphs 3 Handbook, October 2021

6

10.2.7

Manual Kerning Code, 153

1111.1
11.1.111.1.2
11.1.311.2
11.2.1
11.3
11.3.1
11.3.211.3.3

PostScript Hinting, 155
Font-Wide Hints, 156
Standard Stems, 156
Alignment Zones, 157
Custom Parameters, 159
Autohinting, 159
Flex Hints, 159
Manual hinting, 160
Stem Hints, 161
Ghost Hints, 162
Hinting Multiple
Masters, 163

12
12.1
12.2
12.2.112.2.212.2.312.3
12.3.112.3.212.3.312.3.412.3.512.3.612.3.712.4
12.4.112.4.212.4.312.4.412.4.512.4.6

TrueType Hinting, 164
Autohinting, 164
Font-level Hints, 165
TrueType Zones, 165
TrueType Stems, 168
TrueType BlueFuzz, 169
Glyph-level Hints, 169
Hinting Outlines, 170
Pixel Size, 171
Hint Direction, 171
Hint Order, 171
Show Point Indexes, 172
Hinting Preview, 172
Web Preview, 172
Instructions, 173
Snap (A), 173
Stem (S), 174
Shift (F), 177
Interpolate (G), 179
Delta (E), 180
Points inOverlapping
Intersections, 180
Advanced TrueType
Hinting, 181

12.5

13
13.1
13.2
13.3
13.3.113.3.213.3.313.4
13.4.113.4.213.5
13.5.1

13.5.213.5.313.5.413.6
13.6.1
13.6.213.7
13.7.1
13.7.213.7.313.8
13.8.113.8.213.8.313.9
13.9.1

Interpolation, 184
Interpolation
Applications, 185
Setting up Axes, 186
Setting up Masters, 186
Axes Coordinates, 187
Minimal Multiple
Masters Setup, 187
Elaborate Multiple
Masters Setups, 188
Setting up Instances, 188
Static Instances, 189
Variable Font Settings, 189
Outline Compatibility, 189
Identifying
Incompatible
Outlines, 190
Correcting Path
Direction, 190
Reordering Shapes, 190
Master Compatibility, 190
Intermediate Layers, 192
Intermediate
Layer Setup, 193
Virtual Masters, 193
Switching Shapes, 194
Alternate Layers, 194
Replacing Glyphs at
Export, 195
Conditional Glyph
Substitutions, 196
Editing Multiple
Masters, 196
Select All Layers Tool, 196
Show All Masters, 197
Keep Layer
Selection in Sync, 197
Working with
Multiple Fonts, 197
Grouping Fonts into
Families, 197

Glyphs 3 Handbook, October 2021

7

13.9.2

Glyphs Files,
Masters, & Instances, 198
13.9.3 Compare Fonts, 198
13.10 Variable Font Options, 198
13.10.1 Variable Font Origin, 199
13.10.2 Axis Location, 199
13.10.3 Axis Mappings, 200
13.10.4 Style Attributes Table, 202
1414.1
14.1.114.1.214.1.314.2
14.2.114.2.214.2.314.3
14.3.114.3.214.3.314.3.414.4
14.4.114.4.214.4.314.4.414.5
14.5.1
14.5.214.5.3

Color Fonts, 203
Working with
Color Fonts, 203
Keeping the Metrics
in Sync, 203
Previewing
Color Fonts, 203
ExportingColor Fonts, 203
Layered Color Fonts, 204
Initial Setup, 204
Editing Color Layers, 205
Exporting, 205
CPAL/COLR Fonts, 205
Defining the Color
Palette, 206
Master Layer as
Fallback, 206
Color Palette Layers, 206
Exporting, 207
sbix Fonts, 208
Standard Bitmap
Graphics, 208
Preparing Images, 208
Adding Images to
Glyphs, 209
Exporting, 210
SVG Color Fonts, 210
Converting to SVG, 211
Importing Existing
SVG Files, 211
Creating SVG Glyphs, 211

1515.1
15.1.115.1.215.1.315.1.415.2
15.2.115.2.215.2.315.3
15.3.1

15.7
15.7.1
15.7.2

Import & Export, 214
Exporting Font Files, 214
OpenType Export, 214
Variable Fonts Export, 216
UFO Export, 217
Metrics Export, 218
Source Formats, 218
Glyphs File, 218
Glyphs File Package, 219
Unified Font Object, 219
Opening Font Files, 220
Font File Importing
Behaviors, 220
Opening
TrueType Font, 221
Importing Multiple
Fonts Files into a
Glyphs File, 221
Importing
OpenType Features, 221
Importing
PostScript Hints, 221
Importing Font Data, 221
Importing Outlines, 221
Importing Metrics, 222
ImportingFeature Files, 223
Vector Drawing
Applications, 223
Adobe Illustrator, 224
Affinity Designer, 224
Sketch, 224
File Format
Interoperability, 224
Projects, 225
Setting up a Project, 225
Exporting a Project, 226

16
16.1
16.2
16.2.1

Extensions, 227
Plugin Manager, 227
Scripts, 228
Run Scripts, 228

15.3.215.3.315.3.415.3.515.4
15.4.1
15.4.215.4.315.5
15.5.1
15.5.215.5.3
15.6

Glyphs 3 Handbook, October 2021

8

16.2.2
16.2.316.3
16.3.1
16.3.2The Scripts Folder, 228
Creating Scripts, 229
Plug-ins, 229
Installing Plug-ins, 230
Creating Plug-ins, 230

17
17.1

Appendix, 232
Regular Expressions, 232

17.2
17.3
17.4

Custom Feature
Code Snippets, 233
Automatic Feature
Generation, 234
Custom Parameters, 239

Glyphs 3 Handbook, October 2021

9

1 Glyphs
Glyphs 3 is a professional Mac application for creating OpenType
fonts. It allows you to draw, edit and test letter shapes in a word
context, and helps you manage all aspects of modern fontproduction, including the efficient reuse of recurring shapes andthe creation of large font families. You can extend thefunctionality of Glyphs with plug-ins and Python scripts, a large
number of which is freely available and accessible from within theapplication.

1.1 GLYPHS MINIAs an alternative to the pro version, there is a slimmed-down andmore affordable variant of the app available, named Glyphs Mini.
It lacks some features of the pro app, primarily interpolation andextensibility, and has a smaller range of export formats. The
Glyphs Mini handbook is available from glyphsapp.com/learn.

1.2 COMMUNITY
Glyphs is also a vibrant community. On our website
glyphsapp.com, you will find multiple ways to engage. In the
Forum, we encourage you to ask questions and discuss issues
with other users and the developers. Find a large collection oftutorials, screencasts, online classes and more educational
material in the Learn section. Look for workshops, conferences,and the latest updates in News. If you are planning a workshop,
organizing a Glyphs-related event, or releasing a plug-in you
developed, we will be happy to share your contribution on
glyphsapp.com.

1.3 ISSUES
Should the application crash, submitting the crash report dialog,that appears the next time the app starts, will enable us toaddress the issue that caused the crash. If you can, please
describe steps for reliably reproducing the issue in the forum.
However, the most likely reason for a crash is a faulty interaction
with a plug-in. You can disable extensions if you hold down the
Option and Shift keys while the app starts.
An issue you encounter may already be fixed in the latest beta
version of the app. See section 3.1, ‘Updates’ (p. 13) for details.

Glyphs 3 Handbook, October 2021

10

2 Create
Glyphs shows the Start Window when opened without
documents: The right side contains information about the Glyphs
version and links to the Glyphs website. Uncheck Show window
on startup to hide the window on future launches.
The left side shows a list of recently opened documents.
Double-click a document to open it. Open the Start Window
anytime from the menu bar: Window → Start Window.
Tip: Control-click orright-click a document andchoose Show in Finder fromthe context menu to reveal
the file in Finder.

Click the plus
button to create a new Glyphs document. The
Start Window then lists a set of scripts. These scripts are also
shown when there are no recent files.

Click a script and include it in the new document by switching
No to Yes in the top right of the window. Included scripts are

Glyphs 3 Handbook, October 2021

11

shown with a colorful icon in the list. Customize the included
glyphs by toggling the respective checkboxes on the right side.
Search for scripts by name with the search field located in the top
right of the window.
Create a document containing empty glyphs for all selected
scripts with the Create Document button in the bottom right:

A Glyphs document can bechanged to a different fileformat at any time with File →Save As… (Cmd-Shift-S).

Save the document with File → Save (Cmd-S). Name the file andpick a folder where it is should be saved. Glyphs offers three fileformat options. See section 15.2, ‘Source Formats’ (p. 218) for
details or pick the default ‘Glyphs File’ for a start.

Create a new document anytime with File → New from Glyph
Sets… The list will remember the previous selection of scripts andglyph sets. Quickly create a new document with the basic ASCII
glyphs by choosing File → New (Cmd-N).
See the Getting Started tutorials on the Glyphs website¹ for an
introduction to working with Glyphs.
1 glyphsapp.com/learn/recommendation:get-started

CreateGlyphs 3 Handbook, October 2021

12

3 Preferences
Choose Glyphs → Preferences… from the menu bar (or press
Cmd-Comma) to open the preferences window.

3.1 UPDATESThe Updates section controls how Glyphs is updated. Check for a
new version of Glyphs by clicking on the Check Now button. If
one is available, Glyphs will offer to download the latest releaseand show a list of the new additions and changes.
Automatically check for updates will look periodically for new
updates. We recommend keeping this option enabled.
Choose Show cutting edge versions to download beta versionsof Glyphs. Beta versions are released frequently, providing
bug fixes and early feature releases. Because of the highfrequency, beta versions are not as thoroughly tested as release
versions. Therefore, we recommend working with copies of font
files when trying a Glyphs beta. Revert to the latest stable Glyphs
version by re-downloading it from glyphsapp.com/buy.
Downloading a new version or reverting to an old version ofGlyphs will not reset the application preferences.

Glyphs 3 Handbook, October 2021

13

3.2 APPEARANCEThe Appearance section defines the visual appearance ofFont View and Edit View.
Display Unicode Value controls whether glyphs with Unicodevalues show a simplified Unicode icon or display the codepoint in
the bottom right of the glyph cell.
Always use Light Mode is available for both Font View and
Edit View. These options allow Glyphs to run using the dark
appearance of the system (configurable from System Preferences)while still displaying the window content with a light appearance.
Text View Width controls the line length of text in Edit View.
The value is measured in thousandths of an em. It is independentof the units per em (UPM) of the font.
Handle size controls the size of the points, such as on-curve
nodes, control handles, and anchors. Smaller sizes present acleaner user interface; larger sizes are easier to see andclick-select.
Display Mark Cloud shows a superimposition of the
combining marks of a glyph. A ‘mark cloud’ appears for all glyphs
when an anchor is selected. The glyph info database defines themarks shown for a glyph and its anchors. (See section 7.6.1, ‘Glyph
Info Database’ (p. 96) for more on the glyph info database.)
Disable this option to suppress the display of mark clouds.

Preferences

Glyphs 3 Handbook, October 2021

14

Various colors used can be configured for both the light andthe dark system appearance. Available customization options are
the color of corner nodes , smooth nodes , alignment zones, the color of strokes on the foreground layer , thebackground layer , and other layers(made visible by clicking
on the eye / icon in the layers list), the color of the Edit View
canvas, and the kerning indicator colors (by default light blue
for negative kerning and yellow for positive kerning). Clicking
the Standard button resets all colors to their default values.

3.3 USER SETTINGS

Keep Glyph Names from Imported Files maintains the names of
the glyphs when opening a file in Glyphs instead of forcing thedefault naming scheme. This option is useful for workflows that
rely on a particular naming scheme, such as exchanging files withother apps.
Disable Automatic Alignment for Imported Files disables theautomatic positioning for all components when importing a font.
For more details on automatic alignment, see section 9.1.8,‘Automatic Alignment’ (p. 130).
Disable Localization keeps the user interface language ofGlyphs in English, rather than the localization set in System
Preferences. Glyphs needs to be restarted after toggling thisoption for the change to take effect.
Use Versions employs the Versions file saving method.
Versions automatically saves files when closing a document andallows browsing previous versions of the file. Enable this option
to match the behavior of other Mac apps like Pages or disable itto prevent autosave modifications when opening andclosing a file.

Preferences

Glyphs 3 Handbook, October 2021

15

3.4 SAMPLE STRINGSThe Sample Strings preference stores short pieces oftext—sample strings—that can quickly be inserted into Edit View
to review and edit glyphs. Sample strings are organized into
groups. Click the plus
button to add a group, and click theminusbutton to delete the selected group.
Each sample string is written on a separate line in the text field
to the right. The text field is Unicode savvy and accepts all
diacritic marks and non-ASCII characters. Write \n (a backslash
followed by a lowercase n) to include a line break in a sample
string. Specify a glyph by typing its character or writing / (aforward slash) followed by the glyph name and a space character.
The slash and glyph name is useful for glyphs without a Unicodevalue or glyphs that are difficult to type. If multiple glyph names
follow each other, the space character may be omitted. Use/Placeholder to insert a glyph that mirrors the currently
selected glyph.
So, to write ‘¡Hola’ followed by a placeholder glyph, ‘!’, then a
new line, and the text ‘second line’ write the following line of text
into the field:/exclamdown Hola /Placeholder/exclam\nsecond line

Click the Default button to reset all sample strings to the default
values and delete all custom groups.
See section 4.9.2, ‘Sample Strings’ (p. 46) to find out more
about the use of sample strings.

Preferences

Glyphs 3 Handbook, October 2021

16

3.5 SHARING

Glyphs can stream the current Edit View to a second display suchas an iPhone, iPad, or iPod Touch. Choose Enable External
Preview and download the Glyphs Viewer app from the
App Store.¹
The Mac running Glyphs and the iOS device need to beconnected to the same network. Open the iOS app and select the
Mac with which to connect. On the selected Mac, Glyphs will ask
to confirm the connection. Tap and hold anywhere on the app toreturn to its menu.
Glyphs Viewer displays the active Edit View. Pinch to zoom
with two fingers and pan around with a single finger gesture. Anychange made to the glyphs is reflected immediately on the
iOS device.
If the Glyphs Viewer app cannot find the Mac, make sure both
the Mac and the iOS device are connected to the same wirelessnetwork. If the problem persists, restart both devices and try
again. If they still cannot connect, try using a different network,or correct the router settings. If the Mac and the iOS device
communicate to the router with different wireless standards,
Glyphs Viewer cannot connect to the Mac. This issue can happen
if the router is set up to simultaneously use multiple modulation
standards (for example, g and n). Setting the router to either
802.11 g only or 802.11 n only may help in such cases. Once a
connection has been established, a Reset button is added to the
Sharing preferences, which resets the list of trusted devices.

1 appstore.com/schriftgestaltungde/glyphsviewer, or search for ‘Glyphs Viewer’Preferences

Glyphs 3 Handbook, October 2021

17

3.6 ADDONS

Glyphs can be extended with plug-ins, scripts, and modules. The
Addons preferences control how these extensions work andwhich extensions are available.
3.6.1 Python version
Python is a programming
language popular among
type designers andfont engineers. The Python
language is under active
development, and newversions with new features are
released regularly. Someplug-ins or scripts may requirea specific Python version.

Most Glyphs plug-ins and scripts require Python. Select theversion of Python that Glyphs should use for plug-ins and scripts
from the Python version field. Note that Glyphs requires Python
version 3 or later.
If no Python version is selected or the currently selectedversion does not work with the installed scripts and plug-ins, go
to the menu bar and choose Window → Plugin Manager →Modules and install Python. Switch back to the preferences
window and choose the Python version labeled ‘(Glyphs)’.
Relaunch Glyphs for the Python version change to take effect.
3.6.2 Console Output
Use system console for script output directs the log output ofplug-ins and scripts to the system console instead of the Macro
Panel console (Window → Macro Panel, Cmd-Opt-M). Select thisoption for debugging a plug-in or script when the Macro Panel isinaccessible.
3.6.3 Alternate Plugin Repositories
A plug-in repository defines a set of plug-ins, scripts, andmodules that can be installed from the Plugin Manager. In
Glyphs, there is a main plug-in repository that is accessible to all
Glyphs users. It provides some of the most popular Glyphs
plug-ins, scripts, and modules.

Preferences

Glyphs 3 Handbook, October 2021

18

Glyphs supports alternate
plug-in repository URLs withHTTP Basic authentication
over HTTPS, which requires ausername and password toaccess the repository.
Local repositories aresupported by adding the full
file path instead of an URL to
the text field.

Define alternate plug-in repositories in conjunction with themain repository by adding URLs pointing to plug-in repositories
in the Alternate Plugin Repos text field, one URL per line.
Alternate plug-in repositories are helpful to distribute preview
versions of extensions or for private scripts and plug-ins sharedwithin a company.
For the file structure, reference the main plug-in repository.² A
repository definition file must follow this structure:{
packages = {plugins = ({titles = {en = "Some Plugin";};url = "https://github.com/example/plugin";path = "Some Plugin.glyphsPlugin";descriptions = {en = "A description of the plugin.";};screenshot = "https://example.org/image.png";
},
...
);
scripts = ( ... );modules = ( ... );};}See the main plug-in repository for all available fields. Only thelists currently in use must be specified. For example, when only
distributing scripts, the plugins and modules values may
be left off.
The titles and descriptions fields can offer multiple
languages. See the package index website³ for a list of language
codes. Glyphs requests the screenshot URL with an
Accept-Language HTTP header, allowing the server to respondwith a localized screenshot.

2 github.com/schriftgestalt/glyphs-packages/blob/glyphs3/packages.plist
3 github.com/schriftgestalt/glyphs-packages

Preferences

Glyphs 3 Handbook, October 2021

19

3.7 SHORTCUTSThe Shortcuts preferences allow recording keyboard shortcuts forfrequently used actions. Invoke a shortcut by pressing one ormore modifier keys (⌘ Command, ⌥ Option, ⌃ Control, ⇧ Shift)
and a regular key like A, 5, Return, or Escape.
Click Record shortcut and press a shortcut on the keyboard to
add the shortcut to the selected action. Keep the current shortcut
by clicking the curved arrowicon or click the crossicon toremove the current shortcut from an action:
Type shortcut

New from Glyph Sets…

Shortcuts are shown using key symbols:
New from Glyph Sets…

⌥⌘N

Use the buttons at the top of the Shortcuts preferences window
to filter the actions list. All shows all actions, Customized lists
only the actions with a changed shortcut, Menu shows all actions
accessible from the menu bar at the top of the screen, andCommands shows actions within the current selection.
Actions are grouped into sections. Click the disclosure
chevron next to the title of a section to collapse and expand
the section. Filter the list of actions further by searching foractions with the search field in the top right.

Preferences

Glyphs 3 Handbook, October 2021

20

4 Edit View
Edit glyph outlines, spacing, kerning, mark-positioning, hinting,and more in Edit View. Edit a glyph by double-clicking it. Open
multiple glyphs in Edit View by selecting them and choosing
View → New Tab (Cmd-T). In Font View, a selection of glyphs canalso be edited by double-clicking the selection or pressing
Cmd-Down Arrow.
A Glyphs window can contain multiple Edit View tabs. Switch
to a tab by clicking its tab title. Press Cmd-Opt-2 throughCmd-Opt-9 to switch to the respective tab. Cmd-Opt-1 switches
to Font View (see p. 77), which is always the first tab in
the window.
Switch to the next or previous tab with View → Navigation →Show Next Tab (Ctrl-Tab) or Show Previous Tab (Ctrl-Shift-Tab).
Close a tab by moving the mouse cursor over its title and clicking
the close
button or choosing View → Close Tab (Cmd-Shift-W).
Close all tabs except for the current one by holding down the
Option key when clicking the close button. Restore an
accidentally closed tab by holding down Option and choosing
View → Reopen Last Closed Tab (Cmd-Opt-Shift-W).
Edit View has two modes: text mode and edit mode.
Use text mode to insert and remove glyphs from Edit View or
adjust the spacing and kerning between glyphs. Choose the Text
tool (shortcut T) to enter text mode. See section 4.9, ‘EnteringText’ (p. 44) and chapter 10, ‘Spacing & Kerning’ (p. 145) for
more details.
Enter edit mode by choosing a different tool or by
double-clicking a glyph. Or, press the Escape key to edit theglyph located after the text cursor.

4.1 DRAWING PATHS
4.1.1 Draw Tool
Draw outlines with the Draw tool (shortcut P as in ‘Pen’ or‘Path’). Click anywhere on the canvas to place a node. Placing
multiple nodes connects them to a path.
Click and drag to create a curved path segment. Dragging
extends two handles from the placed node. The length of thehandles controls the curvature of the segment. Hold down the
Option key to change the handle of the next segment only andGlyphs 3 Handbook, October 2021

21

This handbook uses the term
node to refer to on-curve
points, handle for off-curve
points, and point as anumbrella word for both types.

keep the handle of the previous segment as it is. Hold down theCommand key while dragging to change the length of only thenext handle while keeping both handles at the same angle. When
dragging, hold down the Space bar to reposition the node. Clickon the first node of a path to close the path.
A node can either be a smooth nodeor a corner node .
Smooth nodes always keep both of their handles in a straight line.
They appear round and green. Corner nodes appear square andblue. Their handles may form a straight line, but they can also
form any non-smooth corner. The size and colors of nodes are
configurable in the preferences (see section 3.2,
‘Appearance’, p. 14).

Handles (also called Bézier control points or off-curve points)
control the curvature of their path segment. They are displayed
as small circles and connected to their node with a thin gray line.
In open paths, start and end points are displayed as shortperpendicular blue lines. The start point also features a blue
triangle, indicating the path direction. Points are stored in pathdirection order which is significant for some path operations. See
section 4.2.13, ‘Controlling Path Direction’ (p. 31) and chapter 9,‘Reusing Shapes’ (p. 126).
Toggle the display of nodes with View → Show Nodes → In
Foreground (Cmd-Shift-N).

4.1.2 Pencil Tool
The Pencil tool (shortcut B) offers a quick way to draw freehand
curves, especially when using a drawing tablet. This includes
drawing with Apple Pencil on an iPad using Sidecar. The resulting
paths will need some cleaning up (see section 4.2, ‘Editing Paths’,p. 23) because Pencil paths usually contain too many nodes in an
attempt to reproduce the pencil drawing faithfully.

Edit View

Glyphs 3 Handbook, October 2021

22

4.1.3 Primitives
Glyphs offers rectangles and ellipses as built-in primitive shapes.
Click the Primitives tool / or press F to activate it. Clickand hold the Primitives tool icon or press Shift-F to switch
between the two shape options. Alternatively, use Draw Circle or
Draw Rectangle from the context menu to switch between thetwo modes.

Click once on the canvas to create a primitive by entering its
measurements with the keyboard. Click and drag to draw it
directly into the edit area. Hold down Shift for a perfect square or
circle. Hold down Option to draw from the center of the shape.

4.2 EDITING PATHS
4.2.1 Selecting Nodes and Paths
Click and drag with the Select tool (shortcut V) to select nodes
and handles inside a rectangular selection area. Hold down the
Option key to ignore the handles and only select on-curve nodes.

While dragging a selection, hold down the Control key to change
the selection angle. Release Control to resize the selection at its
current angle. Slanted selections are particularly helpful for
italic designs.
Click a point or a segment to select it. Hold down the Shift key
to extend or reduce the selection. Double-click near an outline
segment to select the complete path. Choose Edit → Invert
Selection (Cmd-Opt-Shift-I) to select all unselected points orEdit → Deselect All (Cmd-Opt-A) to cancel the selection. Handles
can be selected independently from the nodes. Shift-selecthandles to create a non-contiguous selection. When a single node

Edit View

Glyphs 3 Handbook, October 2021

23

or handle is selected, press the Tab key to select the following
point on the path or Shift-Tab to select the previous point.
4.2.2 Freeform Selections
Use the Lasso tool (shortcut V or Shift-V) to draw a
non-rectangular selection. This is particularly useful for glyphs
with many points where a rectangular selection would not be
precise enough.
Activate the Lasso tool when it is not displayed in the toolbar
by clicking and holding the Select tool and choosing Lasso
Select from the menu. Alternatively, press Shift-V until the Lasso
tool icon is shown.

4.2.3 Moving Selected Nodes and Paths
Move the selection using the mouse or the arrow keys. Moving
nodes will move the attached handles, even if they are notselected. Hold down Shift for increments of 10, and Command forincrements of 100. Hold down Option to move only the selected
points and not the attached handles. While moving one or morenodes, hold down both Control and Option (or add Option after
starting to drag) to ‘nudge’ them, that is, to proportionally adjust
the surrounding unselected handles at the same time.
Left: Original glyph outline
with two selected nodes.
Center: Move selected nodes,
handles stay the same.
Right: Nudge selected nodes,
handles are adjusted.

Move a handle by dragging it with the mouse or pressing thearrow keys. If multiple handles are selected, they all movesimultaneously. Moving one or more handles while holding down
the Option key preserves their angles. When using the keyboard,

Edit View

Glyphs 3 Handbook, October 202124

add the Shift key for increments of 10 or the Command key forincrements of 100.
While moving a handle of a smoothnode, hold downControl and Option simultaneously to reproduce the length andangle of that handle to its matching one on the other sideof the node.
Drag a segment to move both connected nodes and theirhandles. Option-drag a segment to change the length of thehandles but keep their respective angles.
4.2.4 Converting Nodes and Segments

Be careful when tidying up
paths: In Multiple Master
setups, superfluous points
may be necessary for outline
compatibility.

Convert between smoothconnections and corners
bydouble-clicking a node or selecting one or more nodes andpressing Return.
The Path → Tidy up Paths command (Cmd-Shift-T) applies
heuristics to set the appropriate mode for all nodes at once or aselection of nodes. It also removes superfluous points, forexample, handles on a straight segment or an on-curve point
exactly on the line between two others. Hold down Option tochoose Path → Tidy up Paths for all Masters (Cmd-Opt-Shift-T),
applying the command on all masters of the selected glyphs.
Option-clicking a line segment converts it into a curve
segment, and handles are added to the two bounding nodes.
Convert a curve back into a line segment by selecting anddeleting one or both of its handles.
4.2.5 Nodes in Alignment Zones

Nodes located exactly on a vertical metric line (see section 8.2,
‘Masters’, p. 106) are highlighted with a beige diamond . Inside
an alignment zone, the highlighting assumes the shape of a

Edit View

Glyphs 3 Handbook, October 2021

25

circle . This helps to control the position of nodes even at small
zoom scales.
4.2.6 Scaling & Rotating
The attributes of the current node selection are shown in the
Info box (View → Show Info, Cmd-Shift-I):
Tip: In all number input fields
in Glyphs, use the up anddown arrow keys to increaseor decrease the value.

When multiple nodes are selected, scale and move the selection
by changing the coordinates (X and Y) and the dimensions(� width and � height) in the Info box. Set the transformation
origin with the reference points
on the left. Close the locksymbol to scale width and height proportionally. Open thelock to scale width and height independently from each other.
Use the Up and Down arrow keys to step through the numbers.
Hold down Shift for increments of 10.
When multiple points are selected, the solid squareindicates the number of selected points. The number next to theoutlined square
represents the total number of points on thecurrent glyph layer.
Rotate and scale the selection manually with the Rotate tool
(shortcut R) and the Scale tool
(shortcut S). With one of thesetools active, click anywhere on the canvas to set thetransformation origin and then click and drag to transform thecurrent selection. Hold down the Shift key to rotate in steps of
90° or to scale proportionally.
When multiple nodes are selected, a bounding box is displayedwith transformation knobs on all four sides and corners. Drag aknob to scale the selected points with respect to the opposite
knob. Hold down Shift to scale proportionally and hold down
Option to use the center of the box as the transformation origin.
Toggle the display of the bounding box with View → Show
Bounding Box (Cmd-Opt-Shift-B). More path transformations are
possible via the Palette. See section 5.4, ‘Transformations’ (p. 62)
for further details.
4.2.7 Aligning
Choose Path → Align Selection (Cmd-Shift-A) to quickly align all
selected points. The command aligns both nodes and handles.
Glyphs will automatically choose between horizontal and vertical

Edit View

Glyphs 3 Handbook, October 2021

26

alignment, whichever is smaller for the current selection. The
Align Selection command respects the transformation origin of
the transformation palette (see also section 5.4.1, ‘Transformation
Origin’, p. 63):
Align Selection for different
transformation origins.

Alternatively, set the width or the height value of two or more
selected points to zero in the Info box. Align an anchor
horizontally above a point with the Align Selection command
while exactly one anchor and one path point are selected, or
center an anchor between two points while two points and one
anchor are selected. Glyphs respects the italic angle whenaligning anchors to nodes.
Using the Align Selection command while exactly one point
and one component are selected will align the origin point of thecomponent to the selected node. The node keeps its position.
The origin point is where the baseline crosses the left sidebearing
if the italic angle is zero. If the component glyph contains an‘origin’ anchor, its position is used as the origin point instead.
Applying Path → Align Selection on a single node will try tomove the node over the nearest node in the background. Alignpartial paths, complete paths, or components to each other using
the Transformations section in the Palette (Cmd-Opt-P). See
section 5.4, ‘Transformations’ (p. 62) for more details.

If the italic angle is not zero,
instead of the left sidebearing,
an imaginary vertical line
crossing the slanted LSB at
half x-height is used. In thatcase, the origin point is where
this line crosses the baseline. 4.2.8 Duplicating Paths

Quickly duplicate the current selection by holding down Option
while dragging a copy of the paths into their new position.
Alternatively, copy (Cmd-C) and paste (Cmd-V) the selection.
Option-dragging partial paths will duplicate the selected
segments. This can be helpful when replicating glyph parts like
serifs or spurs.

Edit View

Glyphs 3 Handbook, October 2021

27

4.2.9 Deleting Nodes
Note: If the Erase toolicon
is not visible, press Shift-E orclick and hold the Knife
tool
icon and choose
Erase. See page 29 for moreon the Knife tool.

Select a node and press the Delete key to delete it.
Alternatively, choose the Erase tool
(shortcut E) and click anode to delete it. Glyphs will keep the path closed and will try toreconstruct the same path segment without the node:

Press Opt-Delete to break the path by removing the node andboth path segments surrounding the node:

Delete a single segment between on-curve nodes with the Erase
tool by Option-clicking it. Delete all selected segments bypressing Opt-Delete. Alternatively, select a handle and erase its
segment by pressing Opt-Delete.

4.2.10 Opening and Closing Paths
With the Draw tool (shortcut P), click a node to open the pathat the node position. Short blue perpendicular lines mark open
path endings. Drag the path ends apart using the Select tool
(shortcut V).

Edit View

Glyphs 3 Handbook, October 2021

28

Close a path by dragging an open line ending on top of anotherwith the Select tool. Select two path endings and choose
Connect Nodes from the context menu to add a connecting line
segment between the nodes:→. Choose Close OpenPaths to close the selected paths fully:→.
4.2.11 Cutting Paths
With the Knife tool
(shortcut E or Shift-E), click and drag aline across a path to cut the outline into two separate outlines.
Glyphs will close the two resulting paths along the cutting line.
Cutting across several overlapping paths will rewire the segmentswith each other.
Tip: When multiple tools
share one icon in the toolbar,
such as the Knife and Erase
tools, add Shift to the tool
shortcut to toggle
between the tools.

Activate the Knife tool by clicking and holding the Erase tooland choose Knife from the menu. Alternatively, press Shift-E.

4.2.12 Resegmenting Outlines
Open corners and reconnected nodes offer finer control andallow manipulating path segments independently from eachother. This control also makes interpolating between
masters easier.
Open a corner node into two nodes by selecting it andchoosing Open Corner from the context menu:

Edit View

Glyphs 3 Handbook, October 2021

29

The top left corner of thecounter is opened with Open
Corner. Opening corners only
works on corner nodes.

Choose Reconnect Nodes from the context menu to the two
nodes of an open corner to get back to the original corner node.
Select an even number of nodes and apply Reconnect Nodes toreconnect each node with its closest neighbor:

The size of the created overlap will be approximately half the firstvalues entered for vertical and horizontal stems in File → Font
Info → Masters (Cmd-I). Thus, the reconnected nodes should
extend comfortably into the stem (when used on counterforms
such as the B in the image above) or outside the outline, such as
the s on the left.
Opened corners are considered invisible if the triangular
overlaps are small enough in relation to the neighboring visible
outline segments. That way, opened corners can also be placedon the outside of paths. If the overlap size goes beyond thethreshold size, they will be visible. These outwards facing open
corners are useful for editing bent terminals, as in a sans serif
lowercase s. Select a path segment and open the two nodes on
its extremities with the Open Corner command.

Edit View

Glyphs 3 Handbook, October 202130

4.2.13 Controlling Path Direction

Tip: Quickly create a punchedthrough counterform byoverlapping two paths andpressing Cmd-Shift-R (Path →Correct Path Direction).

The starting point of a closed path is displayed as an arrowhead(or for a smooth node) following the path direction. The end
nodes of an open path are displayed as short perpendicular bluelines where a light blue arrowhead indicates the first node. On aclosed path, make any on-curve node the first node by choosing
Make Node First from the node context menu.
All outer paths need to run counterclockwise, while enclosed
paths (such as the inner path of an O) must go clockwise. Change
the path direction of a path by selecting it and choosing Path →Reverse Contours or Reverse Selected Contours from the context
menu. When no path is selected, use Path → Reverse Contours
from the menu bar or Reverse All Contours from the context
menu to toggle all path directions in a glyph.

Path → Correct Path Direction (Cmd-Shift-R) will perform an
informed guess and find the right path directions for all paths on
the current glyph layer or all selected glyph layers. This will also
rearrange the shape order and reset the starting points of allpaths to their bottom-left node. Holding down the Option key
changes the command to Correct Path Direction for all Masters(Cmd-Opt-Shift-R). As the name indicates, it will include all
master layers, all Alternate (see p. 194), and Intermediate layers(see p. 192). The command ignores all other non-master layers.
This is useful in a Multiple Master setup.
For successful interpolations, the path order, starting points,
and path directions must be compatible and consistentthroughout all font masters. See section 13.5.2, ‘Correcting Path
Direction’ (p. 190) for details on fixing the path direction forinterpolation.
4.2.14 Extremes & Inflections
Extrema are the positions on a path with a completely horizontal
or vertical tangent. Inflections are positions in path segments

Edit View

Glyphs 3 Handbook, October 202131

where the segment changes its bend from clockwise tocounterclockwise or vice versa.
It is considered good practice to have nodes on extremum
points. Some font technologies, like hinting, require nodes at
extremum positions. Some operations, like offsetting a curve (seesection 6.2.4, ‘Offset Curve’, p. 70), work better with inflection
points placed on the undulating curves. Also, some fontrenderers may behave unexpectedly if such nodes are not inplace. Furthermore, inflection points pose a problem for outline
interpolation since they can easily cause kinks in outlines.
Insert nodes on extremum and inflection points by
Shift-clicking a segment with the Draw tool (P). A node will beinserted at the nearest extremum or inflection.
Alternatively, choose Path → Add Extremes, and nodes will be
added at extremes on all paths of the active layer. Glyphs will not
add an extreme if the resulting segment would be very short. In
this case, it assumes that the node placement was intentional.
Force Glyphs to add all extremes by opening the Path menu,
holding down Option, and choosing Force Extremes. When anode is only slightly off the extremum position, Glyphs willattempt to preserve the outline shape while moving the node into
the extremum position and turning the surrounding handles
entirely vertical or horizontal.
Extremes are added automatically at export time with a Filter
custom parameter called AddExtremes. See section 6.2.9, ‘Add
Extremes’ (p. 76) for details. This can be useful for shallow curves
or certain Multiple Master situations, where adding extremes
would make editing or interpolating unnecessarily complex.
4.2.15 Duplicate Nodes
When two adjacent on-curve nodes share the same coordinates,
they are highlighted with a red circle. Merge these nodes with
Path → Tidy up Paths (Cmd-Shift-T).

4.2.16 Focusing & Locking
Prevent accidental edits with focusing and locking.
Focus on one or multiple paths by selecting at least one point
for each path and choosing Focus on Selected Path from thecontext menu. Focusing on a path hides the controls for all other

Edit View

Glyphs 3 Handbook, October 202132

paths. Use path focusing to exclusively work on a single path,even in complex glyphs. Filters, plug-ins, and other scripts may
still operate on all paths; only the Edit View controls are hidden.
Release the focus by choosing Clear Focus on Paths from thecontext menu.
The reverse is possible by locking paths: Lock a path byControl-clicking or right-clicking one of its nodes and choosing
Lock Path from the context menu. Points of a locked path cannot
be selected or modified in Edit View. Like with focusing, locked
paths can still be changed by filters, plug-ins, and scripts. Pointsof a locked path turn red when the mouse cursor is placed onthem, indicating that they cannot be dragged. Unlock a path bychoosing Unlock Path from the context menu of any of its nodes.
Lock and unlock a glyph by choosing Locked from its context
menu. A lock icon appears in the top right corner of the glyphin Edit View and Font View. A locked glyph cannot be modified:
not with the Select tool, not by a filter, plug-in, or script. This
edit-protection is helpful if the glyph is considered final, and nofurther edits should be applied.

4.3 GRAPHIC ATTRIBUTES
Paths can be styled with graphic attributes. These attributes
include stroke styles, fill styles, and masking. The attributes areapplied to a path in the Palette (Window → Palette, Cmd-Opt-P)
and are accessible when View → Show Info (Cmd-Shift-I) is active
and a path is selected.
Copy the attributes of one path to another with the context
menu: Choose Copy Attributes on a path and apply them toanother by choosing Paste Attributes.
4.3.1 Creating Strokes
Left: an open path
Center: the path with a stroke
Right: the expanded outline

Edit View

Glyphs 3 Handbook, October 2021

33

Expand a path to a shape by selecting one or more of its points
and entering a stroke width and height in the Stroke section in
the Palette. The stroke width (W) and stroke height (H) aremeasured in font units. If no height is set, then the width is used
for both dimensions. Below the width and height fields arecontrols for the stroke placement ( along the path,to theleft of the path,to the right of the path) and controls for the
stroke ends ( , , , , ).
A stroke can be applied to both closed and open paths. For
closed paths, select the Fill checkbox from the Palette to fill thepath delineated by the new outlines.
The original path is displayed in a light gray color, while thestroke outline is black. A stroke path can be converted to aconventional outline by choosing Expand Outline from thecontext menu.
4.3.2 Masking
Select a path and check Mask from the Palette to subtract thepath from all shapes below it. Applying a mask is a
non-destructive action; the path can still be moved and modified.
Subtracting a circle from asquare by applying a mask to
the circle path.

The subtracted parts of paths are drawn in a light gray color,while the exporting outline is drawn in black.
Masking is based on the order of shapes since a masking path
only affects shapes below it. Change the shape order by choosing
Filter → Shape Order. Drag the shapes into the desired order andconfirm with OK.

4.4 ANCHORS
Anchors are special points that fulfill multiple tasks in Glyphs.
They primarily serve as a connecting pivot for automaticallyaligning components, corners, caps, mark-to-base andmark-to-mark positioning, and cursive attachment. Theseanchors adhere to certain naming conventions. For more details
on these uses, see section 9.1.7, ‘Anchors’ (p. 129). When an

Edit View

Glyphs 3 Handbook, October 2021

34

‘origin’ anchor is placed inside a glyph, it can align a component(see section 4.2.7, ‘Aligning’, p. 26) to a regular path node.
Some third-party scripts and plug-ins make use of special
anchors. Refer to their documentation for further details.
4.4.1 Adding, Editing, and Removing Anchors
Insert an anchor by Control-clicking or right-clicking theEdit View canvas and choose Add Anchor from the context menu.
An anchor named ‘new anchor’ will be placed at the click position.
Its name is already selected for renaming. After typing the newname, confirm it by pressing the Return key or clicking anywherein the canvas.
Double-click an anchor to rename it, or select it and press
Return, or select it and edit the anchor name in the Info box.
The glyph info database has default anchors associated withmany glyphs. Add these pre-defined anchors to the selectedglyphs by choosing Glyph → Set Anchors (Cmd-U) or, with the
Option key held down, Glyph → Set Anchors for all Masters(Cmd-Opt-U). Delete all existing anchors and start over with
Glyph → Reset Anchors (Cmd-Shift-U); hold down Option to reset
the anchors across all masters.
Select an anchor by clicking the orange dotthat represents
it. Select the next or previous anchor by pressing the Tab key, orShift-Tab, respectively. Select multiple anchors by Shift-clicking
them. Names are only shown for selected anchors. Select allanchors by running Edit → Select All (Cmd-A). This command mayneed to be issued twice since Select All will select all paths andonly select all anchors and components if all available paths havealready been selected.
Move an anchor like a node: either with the Select tool andmouse or arrow keys or through the coordinates in the Info box.
An anchor is diamond-shaped
if placed exactly on a metricline such as the x-height or the baseline, squarein analignment zone, and circle-shapedin all other cases. Quickly
duplicate an anchor by Option-dragging it. Since anchor names
must be unique inside a layer, an underscore will be added to theend of the name. Remove one or more selected anchors bypressing the Delete key.
Align an anchor to one or two nodes by selecting the anchor
and the nodes and choosing Path → Align Selection (Cmd-Shift-A).
See section 4.2.7, ‘Aligning’ (p. 26) for details.

Edit View

Glyphs 3 Handbook, October 2021

35

4.4.2 Mark to Base Positioning
top

_top

center_centerGlyphs can automatically build the ‘mark’ (Mark to Base) featureusing anchors. The combining diacritical marks must containunderscore-anchors (for example, ‘_top’ or ‘_bottom’), and thebase glyph must contain matching anchors without theunderscore prefix (for example, ‘top’ or ‘bottom’). Anchors withan initial underscore are displayed with a hole: , , .
Combining glyph names often carry the word ‘comb’ at the endof their names, such as acutecomb (◌́) or macroncomb (◌̄).
Combining diacritical marks have Unicode values and thus canbe typed or inserted in a text. This way, a font user can place any
mark on any base letter by first typing the regular letter and theninserting the combining mark.
Alongside the ‘mark’ feature, Glyphs will also build the ‘ccmp’(Glyph Composition and Decomposition) feature if glyphs like
idotless and jdotless are present. See section 8.4.7, ‘Implicit
Features’ (p. 121) for further details.
4.4.3 Mark to Mark Positioning
Glyphs will automatically build the ‘mkmk’ (Mark to Mark)feature if both underscore- and regular anchors are present in a
combining diacritical mark. A font user will then be able to stack
any combining mark on any other combining mark carrying
both anchors.
4.4.4 Cursive Attachment
Enable proper cursive attachment in Arabic typesetting byadding ‘exit’ and ‘entry’ anchors to the respective stroke endings
and beginnings in medial, final, and initial letterforms. The ‘entry’anchor of the instroke will be connected to the ‘exit’ anchor of
the preceding outstroke. Preview cursive attachment immediatelyin Edit View when right to left typesetting is enabled (seesection 4.9.4, ‘Writing Direction’, p. 47).
4.4.5 Ligature Carets

caret_1

caret_2

Ligature carets define the positions where a text cursor should beplaced on a ligature glyph. In a ligature glyph, these positions aredefined by special anchors on the baseline. They must be named‘caret’, followed by an underscore suffix, for example, ‘caret_1’,‘caret_2’, … The suffix needs to be different for each anchor
because anchor names must be unique inside a glyph layer. The

Edit View

Glyphs 3 Handbook, October 2021

36

numbering order does not matter and is exclusively used for
differentiating anchors.
Glyph → Set Anchors (Cmd-U) will insert appropriate caretanchors in properly named ligature glyphs. Most ligature glyphs
are named with their individual glyph names joined byunderscores such as s_t or f_f_l. For the glyph naming
convention employed by Glyphs, see section 7.6, ‘Names andUnicode’ (p. 96).
At export, Glyphs will use the caret information to build
so-called LigatureCaretByPos instructions in the GDEF OpenTypetable. At the time of this writing, the only known software
supporting ligature caret positioning are Mac applications thatmake use of the Cocoa text engine. Adobe and Microsoft apps
ignore this information.
4.4.6 Contextual Mark Attachment
Make an anchor contextual by prefixing its name with an asterisk(‘*’). Optionally add a space after the asterisk. Select the anchor
and edit the context in which it should overwrite the unprefixedcounterpart in the Anchor Context field:
Moving the ‘bottom’ anchor
to the left in case the current
glyph (sad-ar.init) is
preceded by reh-ar.
The original ‘bottom’ anchor(next to ) is used for markattachment unless the glyph isin a context that matches the
Anchor Context of ‘* bottom’.

The context field is located at the bottom of the Palette(Window → Palette, Cmd-Opt-P) and is shown when View → Show
Info (Cmd-Shift-I) is checked. Write OpenType feature code into
the Anchor Context field with * representing the current glyph.
Classes and tokens may also be used in the context. See
section 8.4, ‘Features’ (p. 114) for an overview of
OpenType features.
Differentiate multiple context anchors by appending an

Edit View

Glyphs 3 Handbook, October 2021

37

arbitrary suffix to their names. For example, the anchor ‘bottom’might have two context anchors: ‘* bottom.noon’ and‘* bottom.reh’, which have different anchor contexts.

4.5 GUIDES
4.5.1 Magnetic Guides
When dragging a node selection across the canvas, red lines willappear, indicating when the selection is aligned with other nodes
or a vertical metric. Deactivate magnetic guides temporarily byholding down the Control key.
Likewise, a node or any other object being dragged will snap
to all nodes and handles on paths, as well as in components.
When moving close to a node in a component while dragging,
Glyphs will fade in small representations of the nodes inside thecomponent. Disable node snapping by holding down theControl key.
4.5.2 Local & Global Guides

Pro Tip: Quickly create a
guide using the Measurement
tool
by simultaneously
holding down Cmd-Ctrl-Opt
and pressing the G key after
starting to drag ameasurement line.

Add a local guide to the currently displayed glyph layer by
Control-clicking or right-clicking to open the context menu andchoose Add Guide. A local horizontal guide
will be added at
the click position. If two nodes are selected while adding theguide, it will be laid through the nodes. Toggle the display ofguides in Edit View by choosing View → Show Guides(Cmd-Shift-L).
Select a guide by clicking anywhere on it. A filled knob
indicates a selected guide. Move a selected guide by dragging its
knob. Double-click the knob to turn it perpendicular to its
current orientation. Quickly duplicate one or more guides byselecting them and holding down the Option key while dragging
them to a new position.
Local guides are blue and visible only on the layer on which
they have been placed. Global guides
are red and visible
throughout a master. Create a global guide by holding down the
Option key while navigating the context menu and choose Add
Global Guide. Toggle a guide between local and global by
selecting it, and from the context menu, choose Make Global
Guide or Make Local Guide.
Lock one or more guides by choosing Lock Guides from theircontext menu. A locked guide cannot be selected and displays alock/icon instead of its knob. Unlock a guide by

Edit View

Glyphs 3 Handbook, October 2021

38

Control-clicking or right-clicking the knob and choosing Unlock
Guide from the context menu.
From top to bottom(unselected and selected):
local guide, global guide,locked local guide, locked
global guide.

Tip: Use View → Show Metrics
Names to label the vertical
metrics. No guides
are needed.

Press the Tab key to quickly select the next or Shift-Tab to selectthe previous guide. When a guide is selected, move it using thearrow keys (add Shift or Command for larger increments) or dragits knob with the mouse, just like a regular node.
Change the angle by dragging the guide anywhere outside theknob. Enter values for its position and its angle in the Info box(Cmd-Shift-I). Click the lock icon next to the angle in the
Info box to maintain the guide at the set angle until the angle isunlocked again.
By default, a guide will be positioned relative to the left
sidebearing. Click in the Info box to position it relative to theright sidebearing or
to position it relative to bothsidebearings. Click to use the left sidebearing again. This canbe useful for slanted guides, especially when they are global or
frequently changing the right side.
Select a guide and click the measurement
icon in the
Info box to turn the guide into a measurement guide. For moredetails, see section 4.10, ‘Measuring’ (p. 47).
Click Name in the Info box of a selected guide to name it.
Guide names are displayed on the left end of a guide:

Global guides are shown on all glyphs by default. Select a global
guide and choose Edit → Info for Selection (Cmd-Opt-I) to limit
the global guide to a subset of glyphs. The rules for defining thescope of a global guide work the same as smart filters. See
section 7.5.4, ‘Smart Filters’ (p. 92) for details.
4.5.3 Glyph-Specific Undo History
In Edit and Font View, the Undo mechanism works on a glyphlevel. That means that every glyph has its own undo history.

Edit View

Glyphs 3 Handbook, October 2021

39

This also implies that certain global actions, especiallymanipulating global guides, cannot be undone. That is because
global guides are associated with a master and not a glyph, andtherefore are ignored by the glyph-level undo history.

4.6 GLYPH INFOAn Info box is displayed below the current glyph. The current
glyph is the glyph currently being edited on, or, in text mode, theglyph following the text cursor. The Info box shows general
information about the glyph, including as its name, Unicodevalue, metrics, and kerning.

The glyph name is shown centered at the top of the Info box. Its
Unicode value, if any, is shown in the top right of the box. Clickthe arrow button next to the Unicode value to open it inUnicodeChecker. If UnicodeChecker is not installed, Glyphs will
present a download link. When opening UnicodeChecker withthe arrow button for the first time, the Mac will ask for permission.
Grant it so that Glyphs can launch UnicodeChecker and set thecurrent Unicode value to match the one from Edit View.
4.6.1 Horizontal Layout

UnicodeChecker¹ is a Mac
app by earthlingsoft. Use it to
explore and convert
Unicode values.

The lower half of the glyph Info box manages metrics andkerning. To the left and right of the horizontal metrics
icon
are left and right sidebearings. Below the icon is the width of theglyph. LSB, RSB, and width values can be numbers or metrics
keys. See section 10.1.3, ‘Metrics Keys’ (p. 146) for more details.
Kerning values and kerning groups are at the left and rightedge of the Info box. See section 10.2, ‘Kerning’ (p. 148) for more
information.
4.6.2 Vertical Layout
For glyphs written in a vertical layout, the vertical Info box isdisplayed instead. (See section 4.9.4, ‘Writing Direction’, p. 47 formore information on vertical layout.)

1 earthlingsoft.net/UnicodeChecker

Edit View

Glyphs 3 Handbook, October 2021

40

T and B are the top and bottom sidebearings of the glyph,
respectively. O is the vertical origin of the glyph. H is the vertical
width (or height) of the glyph. K and G define the kerning andkerning groups, both for the top and the bottom of the glyph.

4.7 GLYPH DISPLAY
4.7.1 Zooming

Tip: The Spotlight shortcut in
the System Preferences mayneed to be changed for the
Cmd-Space shortcut towork in Glyphs.

There are many ways to zoom in and out of Edit View. With atrackpad, zoom using pinch and stretch gestures. Or hold down
the Option key and use a scroll gesture or the scroll wheel of amouse. Or activate the Zoom tool (shortcut Z) and click on thecanvas to zoom in, Option-click to zoom out. Alternatively, click
and drag across an area, and it will be zoomed to fill the window.
Temporarily activate the Zoom tool by holding down Cmd-Spacefor zooming in or Cmd-Opt-Space for zooming out. If
Cmd-Space collides with another shortcut, try pressing Space
before adding the Command key.
Or use the zoom commands from the View menu: Zoom In(Cmd-Plus) and Zoom Out (Cmd-Minus). Zoom to Active Layer(Cmd-Zero) will maximize the area between ascender anddescender in the window. Zoom to Actual Size (Cmd-Opt-Zero)will zoom one font unit to the size of one screen point. (Onescreen point is one pixel on a classic low-resolution screen andtwo pixels on new high-resolution Retina screens.)

Or use the zoom / buttons in the bottom right corner of thewindow. Alternatively, set the zoom value numerically by enteringa point height in the field between the buttons. The zoom value isthe number of display points at which 1000 font units are shown.
The size of a display point depends on the physical display that
the Mac uses. Display points are independent of pixels, so one
point might correspond to one pixel on a low-resolution display
or two pixels on a high-resolution display. For example, at azoom value of 300, a 1000 font units long path would be

Edit View

Glyphs 3 Handbook, October 2021

41

displayed at 300 display points, and a path of length 500 fontunits would be displayed at 150 display points.
4.7.2 Panning

Tip: The Spotlight shortcut in
the System Preferences mayneed to be changed for the
Cmd-Space shortcut towork in Glyphs.

On a trackpad, drag two fingers to pan around Edit View. Scroll
on a mouse to pan vertically, hold down Shift to scroll
horizontally. Or, drag the scroll bars on the right and bottom
edges of the displayed canvas.
Alternatively, switch to the Hand tool (shortcut H) and dragthe canvas around, or simply hold down the Space bar totemporarily switch to the Hand tool. When in text mode, pressing
the Space bar would add a space to the text. Press Cmd-Spaceand subsequently release the Command key to avoid
inserting a space.
4.7.3 View Options
Toggle settings that influence the glyph display in Edit View fromthe View menu:
Show Nodes displays the on-curve and off-curve points of aglyph. The display of the points in the foreground layer andthe background layer can be set separately. Extra Nodes aredescribed in section 9.3.3, ‘Extra Nodes’ (p. 139).
Show Metrics shows the vertical and horizontal metrics as well as
the alignment zones of the glyph.
Show Metric Names adds labels to the metrics in Edit View.
Show Hints displays PostScript hints. Use the TrueType Instructor
tool for TrueType hints.
Show Anchors shows the anchors of the current glyph. See
section 4.4, ‘Anchors’ (p. 34).
Show Info displays the Info box as well as contextual controls at
the bottom of the Palette. See section 4.10.1, ‘Info box’ (p. 47).
Show Background displays the paths and components of the
background layer as outlines in the foreground layer. See
section 4.8, ‘Background’ (p. 44).
Show Image shows images placed on a glyph layer. See
section 4.12, ‘Images’ (p. 54).
Show Guides displays local and global guides. See section 4.5,
‘Guides’ (p. 38).
Show Measurement Line shows horizontal and vertical

Edit View

Glyphs 3 Handbook, October 2021

42

measurement lines with numbers for the amount of space
between the glyphs. Only visible when the Text tool is active.
See section 4.10.4, ‘Measurement Line’ (p. 51).
Show Annotations shows annotations placed with the
Annotation tool. See section 4.11, ‘Annotating’ (p. 52).
Show Bounding Box displays the bounding box of a selection
with transformation knobs on all four sides and corners. See
section 4.2.6, ‘Scaling & Rotating’ (p. 26).
Fill Preview fills closed paths with the foreground color. The
current glyph is not filled unless the Text, Hand, or Zoom tool
is selected. The foreground color can be changed in theapplication preferences. See section 3.2, ‘Appearance’ (p. 14)
for details.
Many third-party reporter plug-ins are available for changing or
enhancing the glyph display in Edit View. After installation, they
will also show up in the View menu. See section 16.3, ‘Plug-ins’(p. 229) for more details.
4.7.4 Glyph & Layer Colors
Label colors can be set both glyph-wide and layer-specific fromthe context menu. Control-click or right-click anywhere on thecanvas of an active glyph and pick the color from thecontext menu.

Hold down Option and choose Set Layer Color to pick a layer
color rather than a glyph color. Both glyph and layer colors will
be displayed in the Info box (View → Show Info, Cmd-Shift-I):

ampersandThe glyph color is displayed on the left half, the layer color on theright half, which corresponds to the display of label colors in
Font View. See section 7.3.5, ‘Color Label’ (p. 83) for managing
color labels in Font View.

Edit View

Glyphs 3 Handbook, October 2021

43

4.8 BACKGROUND

Tip: Change the color of
background outlines in thepreferences. See section 3.2,
‘Appearance’ (p. 14).

Each layer has a background layer, usually simply referred to as‘background’. The background is useful for temporarily storing apath or tracking changes and comparing outlines before andafter a manipulation. Some filters, such as Filter → Hatch Outline,
use the background as a backup layer to work non-destructively.
While working in the foreground, objects on the backgroundare displayed as a subtle red outline with View → Show
Background (Cmd-Shift-B). If this option is active while in the
background, the foreground objects will be displayed in the sameway. Choose View → Show Nodes → In Background to show theon- and off-curve points of the background. When the
background is displayed, snapping will also work with objects on
the background layer.
Switch to the background by choosing Path → Edit Background(Cmd-B). The window display will darken slightly to indicate thatthe background layer is active. This command is a toggle; toswitch back to the foreground use Cmd-B, again.
Path → Selection to Background (Cmd-J) replaces the current
content of the background with the active selection; this works inreverse when the background is active. Simultaneously holding
down the Option key changes the command to Add Selection to
Background (Cmd-Opt-J) and adds the current selection to what
is already in the background. Path → Swap with Background(Cmd-Ctrl-J) will exchange the foreground with the background.
Empty the background layers of selected glyphs by holding down
the Option key and choosing Path → Clear Background.
Copy the outlines of another font file using Path → Assign
Background into the background layer of all selected glyphs. Put
the same font into its own background to keep track of any otherchanges. Selecting all glyphs and choosing Path → Selection to
Background (Cmd-J) has the same effect.

4.9 ENTERING TEXT

Tip: Quickly switch between
text entry and editing thecurrent glyph by pressing theEscape key.

Edit View can display multiple glyphs to provide a context ofwords and sentences.
When using the Text tool (T), enter characters using the
keyboard. Insert non-alphabetic characters with the Character
Picker (Edit → Emoji & Symbols, Cmd-Ctrl-Space). Edit View has apreset line width. Set the maximum line width in the applicationpreferences. See section 3.2, ‘Appearance’ (p. 14).

Edit View

Glyphs 3 Handbook, October 2021

44

4.9.1 Text Preview
Keeping a lot of text in Edit View will slow down the interface.
Instead, use the Text Preview (Window → Text Preview) for
reviewing longer passages of text.
Note: The Text Preview
performs well with any
amount of text, even thecontents of an entire book.

Enter text in the text field. This text field renders a real preview ofthe font using the Core Text shaping engine by Apple, just likemost other Mac apps do. Note that characters unsupported by
the font are displayed using a system fallback font.
Control-click or right-click into the text field and choose
Layout Orientation → Vertical to switch to a vertical text layout.
Also from the context menu, use the Writing Direction submenu
to control the direction of the text and the text selection.
Choose Edit → Find → Find… (Cmd-F) to search for text or
replace text in the text field. Click the magnifying glass
icon toset options for the search. Choose Insert Pattern or press
Cmd-Ctrl-Opt-P to search for patterns such as spaces or digits.
Use the pop-up menu in the top left of the window to pick thepreview font style. The field to the right controls the font size at
which the text preview is displayed. Click the pin
icon totoggle the pinned state of the window. A pinned window stays on
top of the font window, allowing to continue editing glyphs whilestill keeping an eye on the text preview.

Edit View

Glyphs 3 Handbook, October 2021

45

4.9.2 Sample Strings

Edit and store sample strings in Glyphs → Preferences… → Sample
Strings (see section 3.4, ‘Sample Strings’, p. 16). Insert a sample
string by choosing Edit → Select Sample Text… (Cmd-Opt-F). Use
the arrow keys or click to choose a string.
Switch to the next or previous sample string without the dialog
by choosing Edit → Other → Select Next Sample String or SelectPrevious Sample String, respectively. Keyboard shortcuts to thesecommands can be assigned in the preferences. See section 3.7,
‘Shortcuts’ (p. 20) for more details. Click the pinbutton to
keep the sample strings window open.
4.9.3 Text Tool

Tip: On keyboards without
Home and End keys, press
Fn-Left Arrow andFn-Right Arrow.

Select the Text tool (shortcut T) to switch to text mode andstart typing. Enter a single character, a word, a sentence, or
multiple lines of text. Copy and paste text to and from Edit View.
Use all familiar text editing controls such as the arrow keys, theEdit menu, and macOS Application Services (Glyphs → Services).
The current glyph is the one to the right of the cursor.
Switch to the previous or next glyph in the font by pressing theHome and End key, respectively. Add Shift to advance throughthe glyphs as they are currently visible in the Font View. These
shortcuts are useful when filtering glyphs in the Font View andstepping through them in Edit View.
Edit → Add Placeholder (Cmd-Opt-Shift-P) inserts aplaceholder for the current glyph. Placeholders are dynamicallyreplaced by the currently selected glyph. Multiple placeholders
can be placed in Edit View to all reflect the same glyph. Edit a
glyph for all placeholders to mirror it. Placeholders are helpfulwhen spacing a glyph; for example, quickly switch from

Edit View

Glyphs 3 Handbook, October 2021

46

‘ononnoon’ to ‘omommoom’ if the n glyphs are placeholders.
Insert one or more glyphs by name using Edit → Find → Find …
(Cmd-F). In the dialog that appears, enter the glyph name, a partof it, or different parts of the glyph names separated by spaces.
The dialog will show a list of available glyphs whose namematches. For example, ‘dier 01’ will find all glyphs that have both‘dier’ and ‘01’ in their name, like adieresis.001 and edieresis.cv01.
Press Return to insert the selected glyphs into Edit View. Select a
range of glyphs by holding down the Shift key. For a
non-contiguous selection, hold down the Command key.
Click the magnifying glass to configure the search. Choose
Name to search by glyph name, Unicode to search by Unicodevalue, and All to search by both. The Unicode search matches theentered search query with the hexadecimal Unicode values of theglyphs (for example, 228E).
4.9.4 Writing Direction
Switch between left to right, right to left, and top to bottom
layout with the respective alignment buttons in the bottom rightcorner of the Edit View window.

4.10 MEASURING
Glyphs offers several ways to determine coordinates and tomeasure distances between points and curves.
4.10.1 Info box
Toggle the display of the Info box with View → Show Info
(Cmd-Shift-I). The Info box always displays data relevant to thecurrent selection. If there is exactly one node selected, its
coordinates will be displayed.
X 377
Y 610

Select a handle (aka off-curve point, or Bézier control point), andthe Info box will also show its delta values (∆X and ∆Y difference
to the on-curve point) and the total length of the handle (distanceto the on-curve point).
X 233

ΔX 89

Y 144

ΔY 55

Edit View

L 104.6

Glyphs 3 Handbook, October 2021

47

Tip: Quickly and precisely
measure a stem or bowl widthby selecting two nodes thatindicate the width and see
what the Info box displays
next to the width symbol.

The X and Y coordinates describe the position of the selection
bounding box. The position is measured from the layer origin at(0, 0) to the part of the selection indicated by the blue point in
the Info box. For example,
measures from the origin to theselection center.

See section 4.2.6, ‘Scaling & Rotating’ (p. 26) for more on theselection Info box.
Values in the Info box can be edited by clicking the number.
Confirm a new value by pressing Return or by exiting the field.
Use the Tab key to exit the current field and edit the next value inthe Info box. Go back by pressing Shift-Tab. Pressing Escapeexits the current field without entering a different field. Use theUp and Down arrow keys to increment or decrement the value ofa field. Hold down Shift for increments of 10.
When a component is selected, the Info box of the base letter
appears to the right. The base letter is the original glyph thecomponent points to. The base letter Info box displays the glyph
name, its X and Y offset, its horizontal � and vertical � scale inpercent, its slant to the right , and counterclockwise rotation
angle . The arrow button in the top right corner will insert
the original glyph in the Edit tab string to the left of the current
glyph and activate it for editing.

Change the glyph the component points to by clicking its namein the Info box and choosing another glyph from the glyph list in
the subsequent pop-up window. For more details on working
with components, see section 9.1, ‘Components’ (p. 126).
Changing the position only has an effect if the component is
not automatically aligned. For more details on automaticalignment, see section 9.1.8, ‘Automatic Alignment’ (p. 130).
4.10.2 Measurement Tool
Switch to the Measurement tool
(shortcut L) to see allcoordinates of all nodes and anchors at once.

Edit View

Glyphs 3 Handbook, October 2021

48

Tip: The X delta values
respect the italic angle set in
Font Info. So, an X delta ofzero indicates a line exactly in
the italic angle.

The blue numbers are the X and Y coordinates of the on-curve
points, the green numbers are the coordinates of off-curve points,
and the red numbers are the x and y delta values between the
on-curve points.
Clicking and dragging draws a ruler that displays precise
measures between all of its intersections with the outlines. Add
Shift to drag a horizontal or vertical ruler. At the end of the ruler,
its angle is displayed in counterclockwise degrees, where zero
degrees corresponds to dragging the ruler perfectly verticallytowards the top.

The Measurement tool works on all visible glyphs in Edit View.
This also applies to the measurement line:

Edit View

Glyphs 3 Handbook, October 2021

49

Temporarily activate the ruler and the display of point coordinatesby simultaneously holding down Cmd-Ctrl-Opt. Press the G key
while dragging a ruler to add a guide in measurement mode.
Holding down Command temporarily switches to the Select tool.
4.10.3 Measurement Guides
Any guide, even a global guide, can be turned into ameasurement guide. Click the guide to select it and click themeasurement symbolin the Info box. See section 4.5, ‘Guides’(p. 38) for more details.

Like the Measurement tool, guides in measurement mode will
display the distance between their intersections with outlines orcomponents. Contrary to the tool, they always do so as long as
guides are shown, no matter which tool is active.

Edit View

Glyphs 3 Handbook, October 2021

50

Note that the overlapping paths (such as the curl in the sigma
pictured above) are ignored by the Measurement tool ormeasurement guides. Such overlapping paths are drawn with alight gray color and removed when exporting a font with theRemove Overlaps filter enabled (see section 6.2.10, ‘Remove
Overlap’, p. 76).
4.10.4 Measurement Line
When in text mode, enter measurement mode by choosing View →Show Measurement Line. The measurement line will display the
sidebearings at a given height, ignoring the shape of the glyph atother positions. More precisely, the numbers displayed indicate
the distance between the left or right sidebearing and the point
where the measurement line first crosses the glyph outline. Alterthe height of the measurement line by Cmd-Ctrl-Opt-clicking or
Cmd-Ctrl-Opt-dragging. Or switch to the Measurement tool (L)and drag it to the desired height.
In measurement mode, thin gray lines indicate the widths ofthe glyphs. Kernings receive a color code: Negative kerning isdisplayed as light blue, positive kerning as yellow. The colors canbe changed in the preferences. See section 3.2, ‘Appearance’(p. 14) for more details.

Edit View

Glyphs 3 Handbook, October 2021

51

4.11 ANNOTATINGThe Annotation tool (shortcut A) adds notes and correction
marks to glyph layers. When the tool is active, the Info box(View → Show Info, Cmd-Shift-I) turns into a small palette
holding a range of annotation tools.

Choose Edit → Select All (Cmd-A) to select all annotations in thecurrently active glyph layer. Move selected annotations with thearrow keys. Hold down Shift for increments of 10, and Commandfor increments of 100 units. Press the Delete key to remove all
selected annotations.
4.11.1 Annotation Cursor
The first tool in the Annotation palette is the Annotation
Selection tool . Use it to click-select annotations. Shift-click to
select multiple annotations at once.
4.11.2 Annotation Text
Place snippets of text with the Text Annotation tool . Click to
add a new text annotation, double-click an annotation to edit its
text. A text snippet can span across multiple lines. The handle on
the right controls the width of the text box.

Edit View

Glyphs 3 Handbook, October 2021

52

4.11.3 Annotation Arrow
The Arrow Annotation tool adds red arrows onto the canvas.
Use the handle on an arrow stem to control its rotation.

4.11.4 Annotation Circle
The Circle Annotation tool adds red circles onto the canvas.
The handle at the bottom of the circle controls its diameter.

4.11.5 Plus & Minus Annotations
Many designers use plus and minus signs to indicate that acounter, a bowl, or a stem should be thickened or thinned. Clickthe plus or minus button and then click on the canvas to add
the symbols to the relevant area.

Edit View

Glyphs 3 Handbook, October 2021

53

4.12 IMAGES
4.12.1 Adding Images
All image formats supported by macOS can be added to a glyph
layer. These include JPEG, PNG, PDF, TIFF, and PSD files. Add animage by dragging the image file over a glyph cell in Font View orover a glyph in Edit View. Alternatively, choose Glyph → Add
Image… to insert an image file.
In a Glyphs document, only the relative path to an image file isstored. Thus, it is a good idea to keep images in a subfolder next
to the Glyphs file. If the path to the placed image is outdated or
broken, it will be indicated with a missing image symbol:

Toggle the display of images with View → Show Image. Images arealways displayed for empty glyphs (glyphs without paths orcomponents).
Image files are ignored at export unless exporting a bitmap
image font, like an Apple-style color font. See section 14.4, ‘sbix
Fonts’ (p. 208) for details.
4.12.2 Manipulating Images
By default, images are scaled to a size where one DTP point
corresponds to one font unit and placed at the origin point of thelayer. Consider scaling images before importing them into Glyphs
when preparing scans.
Move an image by dragging it to the desired position. Whenan image is selected, resize it with the bounding box(Cmd-Opt-Shift-B) or the Scale tool
(S). Rotate an image with
the Rotate tool (R). The Transformations palette also works
for images.

The Info box (Cmd-Shift-I) offers controls for the image position(X and Y) and dimensions (� width and � height) of the selected
image. Rotate the image by changing the degree figure next to

Edit View

Glyphs 3 Handbook, October 2021

54the curved arrow . Clicking the right-pointing arrow reveals
the original image file in Finder.
Click the lock icon to lock the image. A locked image
cannot be selected or manipulated. Unlock an image by
Control-clicking or right-clicking the image on the canvas andchoosing Unlock Image. Choose Set Crop to Layer Bounds fromthe image context menu to hide the image outside the layerbounds defined by its width, descender, and ascender.

4.13 PREVIEWING & TESTING
4.13.1 Previewing Kerning
Kerning can be previewed with three modes: no kerning,kerning , and locked kerning. See section 10.2.1, ‘Kerning
Modes’ (p. 149) for details.
4.13.2 Previewing Masters
The glyphs in Edit View are drawn for the currently selected
master. Change the current master by clicking the icon for the
master in the toolbar.

Set master icons in File → Font Info… → Masters. Switch to one of
the first nine masters of the font by pressing Command and thenumber of the master: Cmd-1, Cmd-2, …, Cmd-9. Change themaster of the currently edited glyph or the selected glyphs in
Edit View by selecting a master layer from the Layers palette. For
more details on working with multiple font masters, seechapter 13, ‘Interpolation’ (p. 184).
4.13.3 Previewing OpenType Features
Toggle OpenType features from the Features menu at thebottom left of the window in Edit View. When at least one feature
is selected, the Features menu is highlighted in an accent color.
The button will show the four-letter tags of the active features.
Activate a feature by selecting it from the Features menu.
Multiple features may be active at the same time. Select a featurefrom the menu again to deactivate it in Edit View. Deactivate allfeatures by choosing the dash (-) at the top of the menu.
Recompile the font features from the features editor (File → Font
Info… → Features) to make newly added features appear in the

Edit View

Glyphs 3 Handbook, October 2021

55

menu. Quickly select an item from the menu by typing its namewhile the menu is open. This also works with the dash.
Preview language-specific forms by enabling Localized Forms
from the menu. Pick the desired script and language from thebottom of the features menu. For this to work, a ‘locl’ feature
with valid language-specific rules must be present in File → Font
Info… → Features.
In Edit View, Glyphs previews substitution, kerning, andcursive attachment positioning features. Other positioning
features may be handled differently in third-party applications
and are not previewed in Edit View. Test these features directly insoftware by exporting the fonts. When testing in Adobe
applications, export the fonts to the Adobe Fonts folder. For
details, see section 4.13.6, ‘Previewing in Adobe Applications’(p. 58). Note that in InDesign, the OpenType features may beinterpreted differently by different composers.
4.13.4 Previewing Interpolated Instances
Click the Preview buttonin the bottom left of the window topreview font instances. The window content will be split with
Edit View above and Preview Area below. Drag the separator toadjust the size of the Preview Area.
Alternatively, open a separate window which can also beplaced on a second display via Window → Preview Panel. The
Preview Panel displays the Edit View glyphs of the current fontfile. When no Edit View tab is currently active, the Preview Panelstays blank. Click an Edit View tab, and the Preview Panel will
immediately update to show the respective glyphs.
Select the instance to be previewed from the pop-up menu in
the bottom left of the preview. Show All Instances displays thecurrent glyph across all instances of the font. Toggle the displayof individual instances in Show All Instances by clicking the eye/
icon next to an instance name. Select the dash (-) for thepreview to mirror the master used in Edit View.
Except for the Show All Instances option, the Preview Area andPreview Panel render the complete text of the current Edit View
tab on a single line. The current glyph is centered by default.
Drag the text horizontally in the Preview Area to reposition it.
Double-click a previewed glyph to edit it. The rendering respects
some custom parameters as well as intermediate and alternate
layers. Control-click or right-click the Preview Area and choose

Edit View

Glyphs 3 Handbook, October 2021

56

Always Center Active Glyph to keep the active glyph centered. If
deactivated, Glyphs will try to fill the Preview Area as best as
possible, keeping the text flush left or flush right.
Switch between black-on-white and white-on-black with theInvertbutton next to the instances pop-up menu. With the
Flip / button, flip the Preview upside-down. Flipping text canbe helpful when testing the spacing of a font. Test the legibility of
the font by blurring the font sample in the Preview with the slider
next to the Flip button.
4.13.5 Previewing in macOS
Applications on the Mac cache font files. Caching fonts is an
optimization that makes sense for most Mac users since those
fonts are typically installed just once and accessed many times bymany applications. However, when creating fonts with Glyphs,
the fonts that have already been cached prevent their subsequent
exported versions from showing up in apps. There are multiple
approaches to bypass font caching.
Firstly, quit and relaunch the app in which the fonts arepreviewed. For example, when testing a font in Pages, save thedocument and quit Pages. Export the new version of the font andrelaunch Pages.
If this approach does not work, check Test Install in the OTF
export dialog. This option writes the font data directly to thesystem memory without creating a new font file. Quitting andrelaunching may still be required for the new font version
to show up.
If the new font versions still do not show up, restart the Mac.
In case that does not fix the issue either, uninstall the affected
fonts from the system by deleting them in Font Book. Then, quit
all applications and launch the Terminal application. Enter thefollowing lines and press the Return key after each line. If
prompted for the user password, note that entering the password
does not display the typical ••• bullet points. Press Return toconfirm the password.
sudo atsutil databases -remove
atsutil server -shutdown
atsutil server -pingAfter running the three lines above, restart the Mac for thechanges to take effect.

Edit View

Glyphs 3 Handbook, October 2021

57

If the problem persists, reboot the Mac in safe mode bypressing Cmd-S at startup until the Apple logo appears.
Following that, recreate the caches by holding down Shift while
the computer completes the restart and keep holding it while
logging in.
4.13.6 Previewing in Adobe Applications

If the error message ‘The
folder can’t be found.’appears, remove the /Fonts at
the end of the text field andpress Go again. Now create
the folder by clicking New
Folder or by pressing
Cmd-Shift-N. Enter ‘Fonts’and confirm with Create.

For a complete font preview, including positioning features andmenu order, open the export dialog (File → Export, Cmd-E) andchoose the OTF export.
Set the path in Export Destination to /Library/Application
Support/Adobe/Fonts. For this, first, click the folder path toopen the folder browser. Then, press Cmd-Shift-G and enter thepath of the Adobe Fonts folder exactly as above.
Click Go and then click Open to choose the Adobe Fonts
folder and export the fonts by clicking Next…
The font becomes immediately available in all Adobe
applications. Glyphs will overwrite any previously saved instanceof the font in this folder. The font will not be available outside
Adobe apps, but this is a convenient way to circumvent any fontcache problems in macOS.
Adobe apps may need to be closed and relaunched the firsttime the Adobe Fonts folder is used. After that, the Adobe fontmenus will update immediately every time the font is exported.

4.13.7 Previewing in Web Browsers
In the export dialog (File → Export, Cmd-E), check the .woff2
option to export to WOFF2 font files. A .woff option for older
browsers is also available.
These webfont files can be loaded into an HTML webpage andpreviewed in a web browser. Reload the webpage to see the newversions of the exported fonts. The font cache of many browsers
can be bypassed by holding down the Shift key while reloading.
A simple HTML file might look like this:<!DOCTYPE html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width"><title>Webfont Preview</title><style>@font-face {Edit View

Glyphs 3 Handbook, October 2021

58

font-family: 'Some Font Name';
src: url(some-font-name.woff2) format('woff2');}
html {
font-family: 'Some Font Name';}</style>This is the test text for the webfont preview.
</html>Edit View

Glyphs 3 Handbook, October 2021

59

5 PaletteOpen the Palette sidebar with the sidebar buttonin thetop right corner of the window, or choose Window → Palette(Cmd-Opt-P). Glyphs includes four sections: Dimensions, Fit
Curve, Layers, and Transformations. Plug-ins can add additional
sections to the Palette (see p. 229). Collapse or expand a section
by clicking the chevron on the left side of the section name.

5.1 DIMENSIONSThe Dimensions section does not affect the font but serves as a
notepad where the dimensions of common font features can be
written down and referenced. Enter a value by clicking a number
or an empty field (‘--’). Values are stored per master. The fields
change according to the script attributed to the glyph. It can bechanged through Edit → Info for Selection (Cmd-Shift-I).

5.2 FIT CURVEFit Curve from 20 % to 100 %The Fit Curve section helps to create curves with a smoothcurvature. Clicking one of the eight round buttons
changesthe length of the selected handles. The leftmost button sets thehandles to the length specified in the left field, and the rightmost
button matches them to the right field. The intermediate six
buttons set the handles to intervals of even lengths. Alternatively,
activate the eight buttons with the shortcuts Ctrl-Opt-1
through Ctrl-Opt-8.
The plus
and minus
buttons uniformly increase or
decrease the handles length of the selected curve segments. Fit
Curve always works on both handles of a segment, even if only
one is selected.
When a handle is selected, a small gray indicator locatedunder the buttons shows the current handle length. The
minimum value is 1 percent, the maximum value is 100 percent. A
length of 55 % is the closest approximation to an elliptic
curvature or a circle. Such a curve segment appears equally
curved across its entire length. Curves with longer handle lengths(above 55 %) appear flattened towards their on-curve points,
making them more apt for connecting to line segments. Curves
with shorter handle lengths (below 55 %) appear flat in the middle
and highly curved towards the ends.

Glyphs 3 Handbook, October 2021

60

5.3 LAYERS
A layer contains the outline of a glyph. A single glyph can havemultiple layers, at least one for each master.
Layers are shown in the Layers section of the Palette. The
layers are sorted by their master. Drag the handle at the bottomof the Layers section to resize it. Click the eye symbol
next toa layer to toggle its display. A visible
layer is displayed with afaint blue line when a different layer of the glyph is active.
Change the color in the preferences (see section 3.2, ‘Appearance’,p. 14). Use the Select All Layers tool (shortcut Shift-V) to edit
all visible layers at once. The nodes for the current layer and all
visible layers are shown and can be manipulated simultaneously.
See section 13.8.1, ‘Select All Layers Tool’ (p. 196) for details.
Shift-click to select a range of layers or Command-click tomake a non-contiguous selection. Reorder layers by dragging alayer to a new position. Layers can only be reorderedwithin a master.
Glyphs differentiates between three types of layers: masterlayers, backup layers, and special layers.
5.3.1 Master Layers
Master layers are needed for interpolating instances. Every glyph
has a master layer for every font master. In the Layers palette,master layers are labeled with the master name and are set inbold. Master layers cannot be added, deleted, or renamed fromthe Layers section. Instead, open File → Font Info… → Masters tomanage font masters.
Choose Only Show Layers from Current Master from thefiltermenu to hide all layers not belonging to the current
master. This option can clean up the layers list and is particularly
helpful when working on fonts with many masters.
5.3.2 Backup Layers
Backup layers are used to keep a copy of previous drawings.
Click the plus
button in the bottom left of the Layers section
to create a new backup layer. By default, a backup layer is labeledwith its creation date and time. Double-click the layer name torename it. Click the minus
button to delete the selected layer.
Backup layers are indented below their master layer and set in a
regular weight. A glyph can have any number of backup layers.
Choose Hide Backup Layers from the filter
menu to hide all

PaletteGlyphs 3 Handbook, October 2021

61

backup layers.
Revert to a backup layer by choosing Use as Master from theactionsmenu. The backup layer will be deleted, its contents
will be placed on the master layer, and the contents of the current
master layer will be placed on a new backup layer. Alternatively,
drag a backup layer onto a master layer to use it instead as amaster layer.
5.3.3 Special Layers
Special layers can be intermediate and alternate layers forinterpolation or any kind of color layer. Special layers areindented below their master layer. The label reflects their typeand is set in bold.
Intermediate and alternate layers are used in Multiple Master
setups. See chapter 13, ‘Interpolation’ (p. 184) for more details.
Color layers are used for color fonts. See chapter 14, ‘Color Fonts’(p. 203) for more details. Plug-ins may define their own special
layers. Refer to their documentation for more information.

5.4 TRANSFORMATIONSThe Transformations section transforms points, paths,
components, anchors, guides, images, and more. The following
transformations are supported:
mirror the selection horizontally
scale

or reverse scaleor vertically;the selection;

rotate the selection clockwise

or counterclockwiseslant the selection left

, down, right, or upalign the selection left , right , to the top
center it vertically or horizontally ;perform boolean operations (intersection) on paths.

union,;;

or bottom,

subtraction,

Transformations can be applied in both Font View and Edit View.
According to the selection, the transformation applies tosegments, paths, or complete glyph layers.
The buttons to the left and right of text fields perform
opposite transformations. For example, clicking undoes thetransformation caused by clicking . These opposing
transformations are not subject to rounding errors that might beintroduced by the unit grid. See section 8.5.1, ‘Grid Spacing &PaletteGlyphs 3 Handbook, October 2021

62

Subdivision’ (p. 122) for details on the unit grid.
5.4.1 Transformation Origin
All transformations (except for alignment) are performed withrespect to a transformation origin. The top row of theTransformation palette controls this origin point.
The transformation box
places the transformation origin
with respect to the selection bounding box. Either one of the four
corners, or the center of one of the four edges, or the center ofthe selection box can be defined as the transformation origin.
The reference point
uses the transformation origin as
defined by the Scale tool (S) or the Rotate tool (R). Using one ofthose tools, click on the canvas to define the transformation
origin. The point is indicated as a red ring with a crosshair
when using the Scale/Rotate tool and just as a crosshair whenusing any other tool.
The metrics point
places the transformation origin at
one of the metrics defined in File → Font Info… → Masters →Metrics. Choose either the baseline, half or full x-height, or half
or full cap height. For CJK glyphs, the layer dimensions
control
is displayed instead. It places the transformation
origin at the center of the layer (half of the width and centered
between the ascender and the descender).
5.4.2 Mirroring
The mirror buttons / reflect the selection to the other side of
the transformation origin. Horizontal
mirroring reflects acrossthe horizontal center of the layer when a metrics point defines
the transformation origin.
Mirror with the transformation origin positioned in the metrics
point control at either half the x-height or half the cap height topreserve overshoots. For example, mirroring an n that overshootsthe x-height will result in an u shape that overshoots the baseline.
Mirroring a corner component (see section 9.3, ‘Corner
Components’, p. 138) will turn a left corner into a right corner andvice versa. Mirroring a glyph component upside-down willreverse the assignment of top and bottom anchors in the originalglyph. This way, a top mark can be used as a bottom mark by
mirroring the component.

PaletteGlyphs 3 Handbook, October 2021

63

5.4.3 Scaling

Scaling by 120 % using an
origin ofand.
Reverse scaling is helpful sincea scale of 120 % would not be
undone by simply scaling to
80 %, but by scaling to
83.3… % (= 100 %/120 %).

Click the scale
button to scale the selection by the specified
percentage. Percentages larger than 100 % increase the selection
size, percentages smaller than 100 % decrease the size, and apercentage of 100 % does not change the size. The scaling factor
along the horizontal axis (top field) and the vertical axis (bottom
field) can be defined independently. The top field is used for bothaxes if the lock icon is locked.
The reverse scale
button undoes a scaling operation. This
is not the same as scaling down: Scaling withby a percentage
smaller than 100 % (for example, 75 %) shrinks the selection.
Scaling withby the same percentage returns the selection toits original size. Similarly, a selection that was enlarged to a value
larger than 100 % withcan be undone using .
5.4.4 Rotating and Slanting

Slanting is sometimes also
referred to as skewing.

Rotate the selection with and . Slant the selection with , ,, and . Note that slanting a selection twice by a certain
amount does not yield the same result as slanting it once withdouble the amount.
5.4.5 Aligning
The align buttons ( , , , , , ) can be used on points,
complete and partial paths, anchors, and components. Aligning isalways done relative to the bounding box of the selection.
Quickly align the selected points with Path → Align Selection(Cmd-Shift-A). This command respects the setting for thetransformation origin. See section 4.2, ‘Editing Paths’ (p. 23) for
more details.
5.4.6 Boolean Operations
The bottom row of buttons combines closed paths with boolean
operations: union, subtraction, and intersection.

From left to right: twooverlapping paths, union,
subtraction, and intersection.

PaletteGlyphs 3 Handbook, October 2021

64

Union removes the overlaps in all selected paths (or all paths ofthe layer if there is no selection). Subtraction removes theselected paths from the unselected paths. Paths involved in thesubtract operation are merged first to achieve consistent results.
Intersection keeps only the parts where the selected paths
overlap the unselected paths. Both subtraction and intersection
use the frontmost path as the selected path if there is no
selection.
A union operation can be applied to all glyphs on export using
the Remove Overlap option. See section 15.1.1, ‘Options’ (p. 215)
for details.

PaletteGlyphs 3 Handbook, October 2021

65

6 Filters
Filters process glyph layers. Their functionality ranges from
simple width transformations to randomized distortions of glyph
outlines. Glyphs includes a list of built-in filters. Plug-ins can
extend this list by providing additional filters.

6.1 APPLYING FILTERS
6.1.1 Filter Menu
Apply a filter by choosing Filter → (name of the filter). The filter
will be applied to all selected glyphs in Font View. In Edit View,
the filter will be applied to a selection of glyphs made with the
Text tool or to the current glyph with any other tool.
Filters usually affect only the currently visible layer. Applying afilter to all masters of a glyph may therefore require re-runningthe filter on all other masters. Quickly apply the last used filter bypressing Cmd-R.
6.1.2 Filters as Custom Parameters
Most filters can be applied to an instance on export using custom
parameters. Add a custom parameter by navigating to File → Font
Info… → Exports → Custom Parameters. Click the plus
button,choose Filter, and click Add. A Filter parameter with a text field
will be added to the list of custom parameters.
Write the name of the filter followed by its arguments into thetext field. Arguments are separated by semicolons (;). Someargument values have a specific position in the arguments list,
and some are named. Named arguments begin with their nameand a colon (:) followed by their value.
FilterName; value1; value2; someName: value3

For example, the following line would apply the RoundCorner
filter with a radius of 15 and visual corrections activated (1 foractive, 0 for inactive):
RoundCorner; 15; 1

The order and meaning of arguments depend on the filter. Filters
built into Glyphs are described in the text that appears whenpressing the Custom Parameters plus
button andchoosing Filter.

Glyphs 3 Handbook, October 2021

66

Limit a filter to a subset of glyphs by adding an include
argument that lists all glyph names for which the filter should
be applied:RoundCorner; 15; 1; include: a, b, c

Similarly, use the exclude argument to apply a filter to all glyphs
except for the listed glyphs:
RoundCorner; 15; 1; exclude: a, b, cSpaces in filter parameters are optional and may be added to
improve legibility.
Multiple Filter parameters can be added to a single instance.
They are applied during export in the order of the custom
parameters. Filter parameters get applied after the components
of a glyph are decomposed. Use a PreFilter custom parameter
instead to run a filter before glyph decomposition. The filter rulesin the custom parameter text field are the same for PreFilter. See
section 9.1.10, ‘Decomposing’ (p. 133) for more on glyphdecomposition.

When applied from the Filter menu, many filters have an
actions
button in the lower left of their dialog window. Clickthe button and choose Copy Custom Parameter. The custom
parameter for the filter can now be pasted into an instance. Open
File → Font Info… → Exports, choose an instance from the sidebar,
click the Custom Parameters heading, and paste the filter with
Edit → Paste (Cmd-V).

Filters

Glyphs 3 Handbook, October 2021

67

6.2 BUILT-IN FILTERS
6.2.1 Shape Order
Shape Order dialog window:
One column per master/alternate/intermediate layer.
Drag to reorder shapes withina column. The insertion
position is highlighted in blue.

The Shape Order filter lists all shapes (paths and components) ofa glyph across all layers. Paths are shown in navy blue;
components in brown. Each column lists the shapes of a master/alternate/intermediate layer. Click and drag a shape to reorder it
within its column. Confirm the chosen shape order with OK orrevert to the original shape order with Cancel.
Columns are separated by a gray gutter if there are multiple
independent interpolations for the glyph. That might be the casewhen using intermediate layers (see section 13.6, ‘Intermediate
Layers’, p. 192) or when employing a complex master setup (forexample, when condensed masters interpolate independently
from extended masters).
The Shape Order filter is useful when Path → Correct Path
Directions for all Masters (Cmd-Opt-Shift-R) does not yield thedesired master compatibility.

Filters

Glyphs 3 Handbook, October 2021

68

6.2.2 Extrude

Filter → Extrude will create a solid shadow offset for the shape ofthe glyph. The following parameters are configurable:
Offset Controls the length of the shadow in font units.
Angle The direction of the extrusion in counterclockwise
degrees from a right horizontal stretch.
Don’t Subtract By default, the original shape will be subtracted
from the extruded shape. Suppress such a subtraction byenabling this option.
From left to right:
1 normal glyph
2 standard extrude
3 composition of 1 and 2
4 Don’t subtract enabled

The custom parameter rule is as follows:
Extrude;Offset ; Angle ; Don’t Subtract

For example, to offset by 100 units at an angle of −30 degrees:
Extrude; 100; -30

Don’t Subtract is disabled by default. Enable the option by
setting its value to 1:
Extrude; 100; -30; 1

6.2.3 Hatch Outline

Filters

Glyphs 3 Handbook, October 2021

69

Filter → Hatch Outline creates hatched glyphs. The following
parameters are configurable:
Origin Defines the origin point (X and Y coordinates) where thehatching pattern begins.
Step Width The distance between the strokes.
Angle The angle at which the strokes are drawn. 0° is horizontal,
90° is vertical.
Offset Path The thickness of the strokes. Disable this option tocreate open paths instead (which may be useful in
combination with other filters or plug-ins).
The custom parameter rule is as follows:
HatchOutlineFilter; OriginX: X ; OriginY: Y ;StepWidth: Distance ; Angle: Angle ; Offset: Offset

The arguments are all optional and can be written in any order. If
left out, the argument of an option will assume its default value.
For instance, for strokes, a thickness of 5 inclined at a 40° angle
and placed at every 20 units:
HatchOutlineFilter; StepWidth:20; Angle:40; Offset:5

The hatch origin will default to X = 0, Y = 0.
6.2.4 Offset Curve

Filter → Offset Curve changes the thickness of stems horizontallyand vertically. The following parameters are configurable:
Horizontal, Vertical Define the horizontal and vertical offset
from the current outline. Positive values expand the outline;
negative values contract the outline. Click the lock button to
use the horizontal field for both values.
Make Stroke Offsets the outline in both directions to form astroke along the outline. This is useful for creating outlines
from closed paths. See section 4.3.1, ‘Creating Strokes’ (p. 33)
for creating non-destructive strokes.

Filters

Glyphs 3 Handbook, October 2021

70

Auto Stroke Offsets the outline in both directions while
maintaining the vertical dimensions intact when making astroke. If enabled, it assumes a position of 50 %.
Position Controls the distribution of the stroke. 0 % places thestroke to the left of the path, 100 % places it to the right. At
50 %, the stroke is evenly distributed along the path.
From left to right:
Make Stroke with Position of
100 %, 50 %, 0 %, and 0 % with
Keep Compatible enabled.

Keep Compatible Keeps the offset curve compatible acrossmasters by not introducing any new nodes or handles.
Enabling this option might reduce the offset accuracy.
Cap Style Defines the stroke endings style when making a stroke
from an open path. Choose from flat , square , round ,round inset , and aligned to the vertical andhorizontal axes .

The custom parameter rule is as follows:
OffsetCurve;

Horizontal ; Vertical ; Make Stroke ;Position ; Keep Compatible ; cap: Cap Style
The Horizontal and Vertical offsets are in font units. Make Stroke
is 0 for false or 1 for true. Position is either a percentage (forexample, 0.5 for 50 %) or ‘auto’ for the Auto Stroke option. Set
Keep Compatible to ‘keep’ to enable the option or leave theargument off to disable it. Cap Style is 1 for , 2 for , 3 for ,4 for , and 0 or left off for . For example, for a stroke withthickness 20 (10 units on either side) and a cap style of :OffsetCurve; 10; 10; 1; 0.5; cap:1

Filters

Glyphs 3 Handbook, October 2021

71

Curves can be offset non-destructively using stroke styles. See
section 4.3.1, ‘Creating Strokes’ (p. 33) for details.
6.2.5 Roughen

Filter → Roughen segments an outline into straight line segments
and randomly moves all resulting nodes within a given limit.
Control the size of the line segments with the Segment Length
field. The Horizontal and Vertical values control the maximum
offset for each node. The custom parameter rule is as follows:
Roughenizer;

Length ; Horizontal ; Vertical

For example, the following rule would match the Roughen dialog
window shown above:
Roughenizer; 15; 15; 10

6.2.6 Round Corners
Filter → Round Corners rounds all selected corners of a path. The
filter is only applied to outwards pointing corners if nothing isselected. The Radius is defined in font units. Choose Visualcorrections to balance the rounding of acute and obtuse corners
using smaller and larger radii, respectively. Such visualcorrections tend to create more natural-looking rounding.
From left to right:
No filter, without visualcorrection, with visualcorrection, filter applied to
outwards and inwards
pointing corners.

The custom parameter rule is as follows:
RoundCorner;

Radius ; Visual Corrections

If Radius is positive, it is applied to outwards pointing corners; if
it is negative, it is applied to inwards pointing corners. Add
multiple RoundCorner custom parameter filters to control both.
Set Visual Corrections to 1 to enable it or 0 to disable it. For
example, the following rule settings apply a corner radius of 55 to
outwards pointing corners with visual corrections enabled:

Filters

Glyphs 3 Handbook, October 2021

72

RoundCorner; 55; 1

6.2.7 Rounded Font

Filter → Rounded Font rounds the stem endings with appropriate
overshoots. For this, it uses the vertical stem metrics as defined inFile → Font Info… → Masters → Stems. The custom parameter rule
is as follows:
RoundedFont;

Vertical Stem Width

If a Vertical Stem Width argument is set, its value is used insteadof the vertical stem width from the master metrics. Such an
override can be helpful when combined with the include andexclude arguments to define a different stem width for a subsetof glyphs. For example, consider three Filter custom parameters
for an instance:
RoundedFont; exclude: f, k, t, dollar, percent
RoundedFont; 74; include: f, k, tRoundedFont; 86; include: dollar, percent

Here, the glyphs f, k, t, dollar ($), and percent (%) would beprocessed with special Vertical Stem Width values. See
section 6.1.2, ‘Filters as Custom Parameters’, p. 66 for details on
include and exclude.
6.2.8 Transformations
The Transformations filter is split into three dialogs: Transform
Metrics, Transformations, and Interpolate with Background.
Transform Metrics Glyph → Transform Metrics assigns either a
new width or new sidebearings to the selected glyph layers.

Filters

Glyphs 3 Handbook, October 2021

73

Enable Width to assign a new width to all selected glyphs. Checkon both sides to modify both sides equally to match the newwidth. Otherwise, the points on the layer keep their original
coordinates.
Uncheck Width to set new sidebearings. Control whether theleft sidebearing (LSB), the right sidebearing (RSB), or both should
be changed using the checkboxes next to their fields. If Relative
is selected, the LSB and RSB values are added to the current
sidebearings (or subtracted if the entered values are negative).
Otherwise, the LSB and RSB values overwrite the existing
sidebearings.
This type of transformation is
also known as an affine
transformation.

Transformations Path → Transformations applies a linear
transformation to the selected points or selected layers.

Translate moves points by a given X and Y value. Origin defines
the point from which the transformation originates. Scale scales
the selection along the � horizontal and � vertical axis. If thelock button is locked , the horizontal value is used for both axes.

Filters

Glyphs 3 Handbook, October 2021

74

Slant skews the selection without optical correction. Click the
Slant label and choose Cursify for an optically corrected skew.
Note that Cursify requires horizontal and vertical metrics to be
set in File → Font Info… → Masters → Stems.
Interpolate with Background Path → Interpolate with
Background results in an interpolation of the foreground andbackground layers.

A value of 0 % leaves the foreground unchanged; 100 % replaces
the foreground with the background, and values in-between
result in an interpolated shape. Use a value below 0 % or above
100 % to extrapolate. Note that this filter does not work if theforeground and background are not compatible. For more details
on interpolation, see chapter 13, ‘Interpolation’ (p. 184).
Custom Parameter The custom parameter rule is as follows:
Transformations; LSB: LSB , RSB: RSB ; Width: Width ;ScaleX: Scale X ; ScaleY: Scale Y ; Slant: Slant ;SlantCorrection: Cursify ; OffsetX: X ; OffsetY: Y ;Origin: Origin Metric

LSB and RSB set the left and right sidebearings. Prefix thesevalues with a + (plus), - (minus), * (asterisk, multiply), or / (forward
slash, divide) symbol to change the sidebearings relative to theircurrent values. Width can be prefixed by + or -. For example, tomultiply the LSB by 2 and add 15 to the RSB, use the following
filter rule:
Transformations; LSB:*2; RSB:+15

Scale X and Scale Y are percentages where a value of 100 does
not scale, < 100 scales down, and > 100 scales up. Set Cursify to 0
to disable slant correction; it is 1 by default. Set Origin Metric to
0 for cap height, 1 for ½ cap height, 2 for x-height, 3 for½ x-height (default), or 4 for baseline.

Filters

Glyphs 3 Handbook, October 2021

75

For example, the following rule sets the width of all glyphs to
700, scales the glyph outlines to 120 % (both horizontally andvertically), cursifies the outlines to a 14° angle (adding
SlantCorrection:0 would use normal slanting), and moves theoutlines by 8 units to the right and 22 units down such that allthese transformations originate from the x-height:
Transformations; Width:700; ScaleX:120; ScaleY:120;
Slant:14; OffsetX:8; OffsetY:-22; Origin:2

6.2.9 Add Extremes
Path → Add Extremes adds missing nodes on extrema. See
section 4.2.14, ‘Extremes & Inflections’ (p. 31) for more details.
The custom parameter rule is the filter name AddExtremes
without any arguments.
6.2.10 Remove Overlap
Path → Remove Overlap removes the overlap of the selected
paths, or all paths if none are selected, or multiple glyphs are
selected. It also clears the selected glyphs of all open paths andstray nodes. The filter expects all outline orientations to be set
correctly (see section 4.2.13, ‘Controlling Path Direction’, p. 31).
Apply this filter as a custom parameter with theRemoveOverlap name and no arguments. Alternatively, apply
Remove Overlap by checking its checkbox in the export dialog(see section 15.1.1, ‘Options’, p. 215).
6.2.11 Third-Party Filters
Install additional filters from the Plugin Manager. These filters arealso listed in the Filter menu and applicable as custom
parameters. Refer to their documentation for details, including
the arguments of the custom parameter. For more details on
installing and managing plug-ins, see section 16.1, ‘Plugin
Manager’ (p. 227).

Filters

Glyphs 3 Handbook, October 2021

76

7 Font View
Font View provides an overview of all glyphs of a font. It isdisplayed when a new Glyphs file is created. If multiple tabs areopen, jump to Font View by clicking the leftmost tab orpressing Cmd-Opt-1.

7.1 VIEWING GLYPHS
Font View is available in two viewing modes: Grid View and
List View. Toggle between the modes with the gridand list
buttons in the top left of the font window.
7.1.1 Grid View

In Grid View , the glyphs of the font are displayed in a grid ofglyph cells. The glyph outlines reflect the currently selected
master. Use the slider
in the bottom right to control thecell size. Large glyph cells display the glyph outlines, the glyph
name, and the Unicode value of the glyph. Small cells show only
the outlines.
The Unicode value is shown in the bottom right next to theglyph name. By default, a small Unicode indicatoris displayed.
The Unicode indicator is replaced by a small rendering of theglyph set in the system font for CJK glyphs. Enable Display
Unicode Value in preferences to show the full Unicode value (seesection 3.2, ‘Appearance’, p. 14). Alternatively, select a glyph cellto show its Unicode values in the inspector located in the

Glyphs 3 Handbook, October 2021

77

bottom left of the window (see section 7.3.7, ‘Unicode’, p. 84
for details).
A warning
triangle in the top right corner of a glyph cell
indicates that the glyph has out-of-sync metrics keys (see p. 146).
A yellow note
indicates that the glyph has an annotation on
the active master layer. A black info indicates that the glyph
uses custom glyph properties (see p. 82). A red top left cornerin a glyph cell indicates that not all layers are compatible forinterpolation (see p. 189). A red ring with strokemarks anon-exporting glyph (see p. 110).
A glyph cell displays its glyph and layer colors. See
section 4.7.4, ‘Glyph & Layer Colors’ (p. 43) for details.
7.1.2 List View

Switch to List View by selecting the list
icon located in the
top left of the font window. List View shows a table where eachrow corresponds to a glyph and each column to a glyph property.
Click a column header to sort by that column. Click a header
again to reverse the sort order. Click and drag a column header
to rearrange columns. Control-click or right-click a header tohide or show columns. See section 7.3, ‘Glyph Properties’ (p. 82)
for a description of all glyph properties.

7.2 MANAGING THE GLYPH SET
7.2.1 Adding New Glyphs
New glyphs can be added to a font in various ways:

Font View

Glyphs 3 Handbook, October 2021

78

Adding Multiple Glyphs Glyph → Add Glyphs… (Cmd-Shift-G)
opens a dialog window for adding glyphs. Write glyph names(Aacute, ampersand, noon-ar.init), characters (Á, &, ‫)ﻧ‬, or Unicodevalues (uni00C1, uni0026, uni0646) separated by spaces into
the text field. Specify character ranges by placing a colon
between two glyphs: ‘uni01FC:uni01FF’ or‘Abold-math:Zbold-math’. The text field also accepts glyph
recipes. See section 9.1.3, ‘Recipes’ (p. 127) for details.

When adding glyphs that are already in the font, they will not be
added again. Instead, a dialog is shown listing the glyphs that are
already part of the font. Choose Replace to replace the existing
glyphs with new, empty glyphs. Keep Existing ignores the
duplicate glyphs and only adds the new glyphs. Choose Cancel to
not add any new glyphs.
Adding a Single Glyph Glyph → New Glyph (Cmd-Opt-Shift-N)or the plus
button located in the bottom left of Font View
adds a new empty glyph named ‘newGlyph’.
Adding From the Glyph Info Database Choose Window →Glyph Info to show a list of all glyphs known to Glyphs. Click Add
to Font to add the selected glyphs to the current font. See
section 7.6.1, ‘Glyph Info Database’ (p. 96) for details.
Adding From the Sidebar Some entries in the sidebar show abadge with the total glyph count for the entry and the count ofglyphs that are already part of the font. Control-click orright-click a sidebar entry to show a list with the missing glyphs.
Select glyphs from the list individually or select all by pressing
Cmd-A. Add the selected glyphs to the font by clicking Generate.

Font View

Glyphs 3 Handbook, October 2021

79

7.2.2 Copying Glyphs Between Files
Glyphs can be copied across font files. In Font View, copy theselected glyphs with Edit → Copy (Cmd-C) and paste them intoanother file with Edit → Paste (Cmd-V). Components are re-linked
to the glyphs in the target font. When a linked glyph does notexist in the target font, the component cannot be re-linked anddisplays as a ‘no base glyph’ triangle placeholder instead. If aglyph with the same name already exists in the target font, an
incrementing suffix like ‘A.001’, ‘A.002’, … will be added to thename of the pasted glyph.
Overwrite existing glyphs with Edit → Paste Special (hold down
Option while the menu is open or press Cmd-Opt-V). The Paste
Special dialog presents three paste modes:
Glyphs With Same Name overwrites the glyphs that have thesame names as the copied glyphs. Any glyphs that do not yet
exist in the target font are also added.
Selected Glyphs overwrites all currently selected glyphs in thetarget font with the glyphs copied from the source font. The
names of the selected glyphs are kept. If more glyphs were
copied, then there are selected glyphs in the target font, theadditional glyphs are ignored.
As Components pastes the copied glyphs as components into
the selected glyphs. Choose All Masters to paste on all
masters. Existing paths and components are preserved.
For the options Glyphs With Same Name and Selected Glyphs,

Font View

Glyphs 3 Handbook, October 2021

80

glyphs can be partially pasted by selecting the desired parts:
All Data pastes the entire glyph, including shapes, anchors, layer
attributes, and metrics. This option includes all of theoptions below it.
Content of Active Layer pastes the currently displayed layer.
Kerning Groups pastes the left and right kerning groups. This
option is useful for reduplicating kerning between
similar fonts.
Metric Keys pastes the sidebearing and width formulas.
Recalculate them after pasting with Glyph → Update Metrics(Cmd-Ctrl-M) or across all masters with Glyph → Update
Metrics for all Masters (Cmd-Ctrl-Opt-M).
LSB, RSB, Width paste the left sidebearing, right sidebearing,
and width metrics of a glyph. If both RSB and Width are
selected, the right sidebearing value takes precedence.
7.2.3 Removing Glyphs
Glyph → Remove Glyph (Cmd-Delete) deletes the selected glyphs
from the font. This command also works on the current glyph in
Edit View and selected glyphs with the Text tool active. In
Font View, the minus
button in the lower-left of the window
does the same. Before the selected glyphs are deleted, aconfirmation dialog is shown. Confirm with Remove or keep theglyphs with Cancel.
If some of the glyphs are used as components, the dialog
offers to decompose the components before deleting the glyphs.
Click Remove to delete the glyphs and all components
referencing them, or click Decompose to delete the glyphs after
decomposing all components of those glyphs to outlines.
If the metrics keys of other glyphs were linked to the metrics
of a deleted glyph, a dialog offers to unlink those metrics. For
example, in a font with two glyphs A and AE (Æ), where the left
sidebearing of AE is linked to the one of A, deleting A means that
AE can no longer reference the metrics of A. The dialog appears
with two choices: Remove dissolves the metrics keys linked tothe deleted glyphs. Cancel keeps the metrics keys, even though
they are no longer linked to a glyph. Such unlinked keys are set ina turquoise color:

Font View

Glyphs 3 Handbook, October 2021

81

Fix unlinked metrics keys by linking them to a different glyph,
replacing the keys with numeric values, or creating the glyph they
are pointing to. See section 10.1.3, ‘Metrics Keys’ (p. 146) for
more details.

7.3 GLYPH PROPERTIESGlyphs have multiple properties associated with them, such as
their name, metrics, Unicode values, and whether the glyph will
be exported. In Font View, glyph properties are shown in thebottom left corner of the window in the glyph inspector. If theinspector is closed, open it with the disclosure
button. Glyphproperties are also shown in the columns of List View (see p. 78)
and the Selection Info window (Edit → Info for Selection,
Cmd-Opt-I). Some properties are also accessible from thecontext menu on a glyph in Font View and Edit View.
The glyph inspector and the Selection Info window show theproperties of the selected glyphs. Click the disclosure chevronnext to the Unicode field in the glyph inspector to show
additional controls for the production name, script, category, andsubcategory.
When multiple glyphs are selected with different values for thesame property, a mixed value is displayed in the inspector. For
text fields, Multiple Values is shown in gray. Editing such a text
field will overwrite the current value for all selected glyphs with
the new value. The export checkbox
uses a line icon ,indicating that some selected glyphs export and some do not.
!

!

7.3.1 Glyph Name
Glyphs are identified by their name. Therefore a font cannot
contain two glyphs with the same name. The glyph name (or nicename) is used within Glyphs, while a separate production name isused for exported fonts. See section 7.3.8, ‘Production Name’(p. 85) for details on production names and section 7.6.2, ‘Naming
Glyphs’ (p. 97) for general information about the glyph
naming scheme.
Select glyphs one at a time to display and change their names
or batch rename glyphs with Edit → Find → Find and Replace

Font View

Glyphs 3 Handbook, October 2021

82

(Cmd-Shift-F). See section 7.4.3, ‘Batch-Renaming Glyphs’ (p. 89)
for more details.
7.3.2 Metrics
The metric fields show the horizontal
metrics (LSB, RSB,
width) or the vertical
metrics (TSB, BSB, vertical origin,
vertical width) of a glyph. Click the icon in the middle to switch
between the horizontal and vertical metrics. See chapter 10,‘Spacing & Kerning’ (p. 145) for information on metrics.
7.3.3 Kerning Groups
Use kerning groups to kern multiple glyphs by the same amount.
See section 10.2.4, ‘Kerning Groups’ (p. 150) for details.
7.3.4 Exports
The Exports checkbox controls whether or not a glyph should be
included in exported font files. Disable this option for component
glyphs and any other glyphs that should not be exported. Use the‘Remove Glyphs’ custom parameter on an instance to remove
additional glyphs for that instance only. A glyph is exported bydefault unless its name starts with an underscore (‘_’).
7.3.5 Color Label
From left to right:
glyph color only (schwa),
no glyph or layer color (f),glyph and layer color (g),layer color only (gbreve).

Glyphs and glyph layers can be marked with color labels. Colorlabels do not affect the exported fonts but are used to organize
glyphs during font development.
Control-click or right-click a glyph to apply one of the twelve
predefined colors. Click the crossbutton to remove the color
from a label. Hold down the Option key to define or clear thecolor label of the current layer.
The glyph color spans across the entire glyph cell. The layer
color is drawn on the right half of the cell if a glyph color is set or
across the entire cell with a cut-out in the top left if no glyphcolor is set. Filter glyphs with a particular color using smart filters.
See section 7.5.4, ‘Smart Filters’ (p. 92) for details.

Font View

Glyphs 3 Handbook, October 2021

83

In some cases, such as smart filters or scripts, color labels are
addressed by name or number. The following names andnumbers are used:
0 Red, 1 Orange, 2 Brown, 3 Yellow,
4 Light Green, 5 Dark Green, 6 Cyan, 7 Blue,
8 Purple, 9 Pink, 10 Light Gray, 11 Dark Gray.
7.3.6 Tags
Tags are short descriptions that can be attached to a glyph. A
glyph can have multiple tags. Edit tags in the Tags field in theinspector located in the bottom left of the font window. Tags can
include letters, numbers, spaces, and other punctuation marks.
Only the comma character (,) is special: Typing a comma orpressing Return will add the tag to the selected glyphs anddisplay it in a blue capsule shape. The Tags field shows the tags ofall selected glyphs if they have the same tags. Otherwise, the text
Multiple Values is displayed.
Control-click or right-click a glyph in Font View and choose
the Tags menu. It shows all tags used within the font. If no tags
are used in the font, then the Tags menu is not shown. Tags
included in any of the selected glyphs are marked with acheckmarknext to the tag name. A dash indicates that only
some of the selected glyphs include that tag. Select a tag fromthe menu to add it to all selected glyphs.
Tags can be used to filter glyphs, including in smart filters (seep. 92), metric scopes (see p. 108), and in OpenType feature tokens(see p. 118).
7.3.7 Unicode
A Unicode value (or codepoint) is a unit of text typed by a user ona keyboard or stored in a text file. The Unicode standard defines
a codepoint for most written symbols used across the globe.
Unicode values are written as ‘U+’ followed by a hexadecimal
number (digits 0–9 and A–F). For example, U+0041 is the Latin
capital letter A, U+1E900 is the Adlam capital letter Alif, andU+061F is the Arabic question mark. The font defines which
glyph is displayed for a specific Unicode value.
Typically, one glyph has one Unicode value. In an all-caps font
without lowercase letters, the A glyph might have two Unicodevalues: U+0041 and U+0061 (uppercase and lowercase Latin
letter A). This way, typing either ‘A’ or ‘a’ displays the A glyph.
Some glyphs have no Unicode values and are only accessible

Font View

Glyphs 3 Handbook, October 2021

84

Unicode defines some ranges(such as U+E000–U+F8FF) as
Private Use Area (PUA) where
the Unicode values have nopredefined meaning. PUA
codepoints are generally used
for languages that are not inUnicode or icon fonts.

using OpenType features (see section 8.4, ‘Features’, p. 114).
Glyphs that are solely used as components also have no Unicodevalues (see section 9.1, ‘Components’, p. 126).
Glyphs are assigned Unicode values based on their name. The
mapping from glyph names to Unicode values is stored in theglyph info database. See section 7.6, ‘Names and Unicode’ (p. 96)
for more details.
The Unicode values of a glyph can also be customized per
Glyphs file. Select a glyph and edit Unicode values in the
Unicode field of the inspector. In List View, the codepoints canalso be edited in the Unicode column. Alternatively, choose
Edit → Info for Selection (Cmd-Opt-I) and set the Unicode valuesof the selected glyph there.
For custom glyphs that are not defined in the glyph info
database, choose a fitting name (see section 7.6.2, ‘Naming
Glyphs’, p. 97) and set its Unicode value manually. If the Unicode
standard does not offer a suitable codepoint for a glyph, consider
encoding it with a Private Use Area codepoint. When adding acustom glyph, make sure not to use the name of a registeredglyph from the glyph info database.
Glyphs without a well-defined name (such as most Chinesecharacters) are named after their Unicode value: ‘uni’ followed byfour hexadecimal digits or ‘u’ followed by five or six digits. For
example, uni5B57 for U+5B57 and u20547 for U+20547.
7.3.8 Production Name
Not all nice names used within Glyphs (see p. 82) are compatible
with every app. Instead, production glyph names are used forexported font files. These production names are based on the
Adobe Glyph List Specification (AGL).¹ Many production names
follow the naming scheme as described in the Unicode section(section 7.3.7, ‘Unicode’, p. 84): ‘uni’ followed by four
hexadecimal digits or ‘u’ followed by five or six digits.
Production names are used automatically on export, while nicenames are used in the Glyphs interface. All glyphs have a default
production name, but it can be changed in the expanded
inspector (expand it by clicking the disclosure chevron) or bychoosing Edit → Info for Selection (Cmd-Opt-I).

1 github.com/adobe-type-tools/agl-specification

Font View

Glyphs 3 Handbook, October 2021

85

7.3.9 Script
The script property defines the writing script the glyph belongs
to. The glyph G is ‘latin’, Ya-cy is ‘cyrillic’, noon-ar is ‘arabic’,koKai-thai is ‘thai’, and so on. Glyphs belonging to multiple
scripts—like digits (one, two, …), punctuation (comma, hyphen, …),or spaces—do not have a script value.
7.3.10 Category & Subcategory
The category and subcategory of a glyph groups it with related
glyphs. All exporting glyphs belong to a category by default,
while non-exporting glyphs such as components do not. The
glyph T belongs to the category Letter, six to Number, and plus
to Symbol. Some glyphs additionally have a subcategory for finerdifferentiation. For example, guillemetright (‘»’) is defined as
Punctuation, Quote; parenleft (‘(’) is Punctuation, Parenthesis;and hyphen (‘-’) is Punctuation, Dash.
7.3.11 Case
Some scripts differentiate glyphs by case. The case of a glyph canbe uppercase, lowercase, small capital, minor, or no case.
Uppercase and lowercase are used for letters in bicameral scripts
such as Greek or Latin, but also for punctuation (for example,
question (?) is uppercase and questiondown (¿) is lowercase) andmarks (lowercase: acutecomb, uppercase: acutecomb.case).
Glyphs ending in ‘.sc’ or ‘.smcp’ are assigned the small capitalcase. The minor case is used for subscript and superscript
numbers (five.sups), letters (ainferior), and punctuation(equalinferior). All other glyphs have no case, including glyphs
from scripts without case (Arabic or CJK) and most punctuation
glyphs (for instance, comma or euro).
7.3.12 Writing Direction
A glyph has a writing direction of either left to right (LTR),
right to left (RTL), or bidirectional (BiDi). Many punctuation
glyphs are bidirectional (for example, hyphen, asterisk, andunderscore). See section 4.9.4, ‘Writing Direction’ (p. 47) for
setting the writing direction in Edit View.
7.3.13 Sort Name
The Sort Name property of the selected glyph can be edited in
the Selection Info window (Edit → Info for Selection, Cmd-Opt-I).

Font View

Glyphs 3 Handbook, October 2021

86

It defines the name by which the glyph is sorted in Font View andthe exported font files. An empty Sort Name field indicates thatthe glyph name is used for sorting instead. Select the checkbox
next to the sort name field to edit it. Sort names are not used inlist filters (see p. 94) or when using a custom glyphs order(see p. 95).
7.3.14 ID
In List View, the ID column sorts glyphs in glyph order. This is theorder in which glyphs are sorted in exported fonts. Change theorder by setting the sort name of glyphs or using the ‘glyphOrder’
custom parameter in File → Font Info… → Font.
7.3.15 CharIn List View, the Char column displays the Unicode character
using the system font. If a glyph has multiple Unicode values,
only the first one is displayed.
7.3.16 Note
Notes are accessible from List View in the Note column. A glyph
note can contain any text. Search for glyph notes with the search
field in Font View (see section 7.5.1, ‘Search Field’, p. 90).
7.3.17 Components
In List View, the components column shows a list of thecomponents used in a glyph. The components cell in List View
can be edited to add or remove components to or from a glyph.
See section 7.1.2, ‘List View’ (p. 78) for hiding andshowing columns.
7.3.18 Last Changed
The Last Changed column in List View is updated every time aglyph is modified. Add a ‘Write lastChange’ custom parameter inFile → Font Info… → Font and disable it to prevent Glyphs fromupdating this property which might be desirable when keeping
the Glyphs file under version control.

7.4 BATCH-PROCESSING
Use batch-processing operations to make changes to one or
multiple glyphs at once.

Font View

Glyphs 3 Handbook, October 2021

87

7.4.1 Selecting Glyphs
Batch-processing commands operate on all selected glyphs.
Select all glyphs currently shown in Font View by choosing Edit →Select All (Cmd-A). Choose Edit → Deselect All (Cmd-Opt-A) tocancel the selection. Edit → Invert Selection (Cmd-Opt-Shift-I)
selects only the glyphs that are currently unselected. Inverting theselection is useful to select all glyphs except for a few exceptions:
Select the exceptions first and then invert the selection.
7.4.2 Batch Commands
The following commands from the Glyph and Path menus areapplied to all selected glyphs. Commands with an asterisk (*) canbe applied to all masters at once by holding down the Option key.
Glyph → Remove Glyph (Cmd-Delete)
Glyph → Duplicate Glyph (Cmd-D)
Glyph → Update Glyph Info
Glyph → Update Metrics * (Cmd-Ctrl-M)
Glyph → Transform Metrics (see section 6.2.8, ‘Transform
Metrics’, p. 73)
Glyph → Add Component * (Cmd-Shift-C)
Glyph → Create Composite * (Cmd-Ctrl-C)
Glyph → Decompose Components * (Cmd-Shift-D)
Glyph → Add Image… (see section 7.7, ‘Images’, p. 101)
Glyph → Set Anchors * (Cmd-U)
Glyph → Reset Anchors * (Cmd-Shift-U)
Path → Reverse Contours (Cmd-Ctrl-Opt-R)
Path → Correct Path Direction * (Cmd-Shift-R)
Path → Round Coordinates *Path → Tidy up Paths * (Cmd-Shift-T)
Path → Add Extremes, or hold down Option for Force Extremes(see section 4.2.14, ‘Extremes & Inflections’, p. 31)
Path → Remove Overlap * (Cmd-Shift-O)
Path → Transformations (see section 6.2.8, ‘Transformations’, p. 74)
Path → Selection to Background (Cmd-J), or hold down Option
for Add Selection to Background (Cmd-Opt-J)

Font View

Glyphs 3 Handbook, October 2021

88

Path → Assign Background…, or hold down Option for Clear
Background.
Path → Swap with Background (Cmd-Ctrl-J)
Path → Interpolate with Background (see section 6.2.8,‘Interpolate with Background’, p. 75)
Path → Other → Convert to Cubic
Path → Other → Convert to Quadratic
7.4.3 Batch-Renaming Glyphs
Rename glyphs by searching and replacing parts of glyph names.
Select the glyphs for which parts of their name should be
replaced, choose Edit → Find → Find and Replace… (Cmd-Shift-F),
and enter the text to be replaced in the Find field. Then, enter the
replacement in the Replace field and confirm by clicking Replace.
The Replace text will replace all occurrences of the Find text inany of the selected glyph names.
For example, search for ‘.001’ and replace it with ‘.alt’ or ‘.sc’.
Or search for ‘-cyrillic’ and replace it with ‘-cy’. See section 7.6.2,‘Naming Glyphs’ (p. 97) for details on good glyph names.
Leave the Find field empty toappend the Replace text to all
selected glyph names.

Select the Regex checkbox to enable regular expression matching.
Regular expressions can find and replace patterns of characters.

The example above searches for ‘.cv’ followed by two digits andreplaces that part with ‘.ss’ followed by the same two digits. This

Font View

Glyphs 3 Handbook, October 2021

89

would replace ‘someglyph.cv03’ by ‘someglyph.ss03’ or‘otherglyph.cv15.alt’ by ‘otherglyph.ss15.alt’. The dot ‘ . ’ has a
special meaning in regular expressions and is thus preceded by abackslash ‘ \ ’ in the Find field. ‘ \d ’ matches any digits from 0 to 9,
and the parentheses around the ‘ \d\d ’ allow the two digits to bereferences in the Replace field by ‘ \1 ’. See section 17.1, ‘Regular
Expressions’ (p. 232) for details.
7.4.4 Filters
Filters can be applied to all selected glyphs from Font View. See
chapter 6, ‘Filters’ (p. 66) for details on how to apply filters.
7.4.5 Palette
Many of the controls in the Palette (Cmd-Opt-P) can be usedfrom Font View. Both Fit Curve and Transformations operations
can be applied to all selected glyphs. Palette sections provided
by third-party plug-ins may also allow batch editing in Font View.
Controls that do not operate on the entire glyph but only theselected nodes (such as Fit Curve) use the selection set in
Edit View. See chapter 5, ‘Palette’ (p. 60) for details on theindividual Palette sections.
7.4.6 Plug-ins & Scripts
Some plug-ins and scripts can be applied to all selected glyphs at
once. Refer to their documentation for guidance on batch editing.

7.5 FILTERING & SORTING
Font View can be filtered only to show a subset of glyphs. Filter
glyphs using search, glyph categories, scripts, languages, andcustom filter rules.
At the bottom-center of Font View, the number of selected,
visible, and total glyphs is shown. The number of visible glyphs
depends on the selected sidebar filter and the search query.
Select All at the top of the left sidebar and clear the search field
to show all glyphs of the font.
7.5.1 Search Field
In the top left of Font View is the glyph search field (Cmd-F).
Enter text to search by glyph name (‘dieresis’), Unicode value(‘03C3’), Unicode character (þ), or glyph note (see section 7.3.16,‘Note’, p. 87). Click the search glass
icon to search only by

Font View

Glyphs 3 Handbook, October 2021

90

name, Unicode value, or note.
Select Match Case to search only for glyphs matching thecapitalization of the search term. With this option selected,
searching for ‘Aring’ would find Aring and Aringacute, but notaring or aringacute.
Select Regex to search using regular expressions. Regularexpressions match patterns of characters. For example, ‘ . ’matches any character and thereby finds all glyphs with a single
character name. Searching for ‘ .. ’ finds glyphs with
two-character names, ‘ .*\.sc ’ finds all glyphs ending in ‘.sc’, and‘ [Aa].*-cy ’ finds all glyphs starting with an ‘A’ or ‘a’ and endingin ‘-cy’. Note that glyph names must match the entire regularexpression. See section 17.1, ‘Regular Expressions’ (p. 232)
for details.
7.5.2 Categories
Select a category filter in the left sidebar to show only the glyphs
belonging to the selected category. Click the disclosure
chevron next to a category name to show its subcategories.
Select a subcategory to show only those glyphs. The number ofglyphs in a subcategory is shown next to the subcategory name.
If Glyphs can infer that some glyphs in the subcategory might be
missing, the count is replaced by a gray badge
showing boththe current countand the total countof glyphs in thesubcategory. Add the missing glyphs as described in section 7.2.1,‘Adding From the Sidebar’ (p. 79). If all glyphs have been added, acheckmarkis displayed instead of a gray badge.
When multiple categories are selected by Command-clicking,glyphs from any of the selected categories are shown. If a
Categories entry is selected together with a Languages or Filters
entry, only glyphs that are part of both are displayed.
7.5.3 Languages
The Languages section contains script and language filters.
Expand a language filter by clicking the disclosure chevronnext to the filter name. Glyph counts, badges, and checkmarks
appear the same as in categories (see above). Command-click
script names to filter for multiple scripts at the same time, orCommand-click other filters to combine them with the selectedlanguage filters.
Only a few scripts are shown by default in the sidebar to keep

Font View

Glyphs 3 Handbook, October 2021

91the list short and tidy. Click the plus
button next to the
Languages label to edit the default list of scripts. A list opens
where individual scripts can be shown or hidden by toggling thecheckbox next to their name. A script entry is automatically
added to the sidebar if the font contains glyphs of that script.
7.5.4 Smart Filters
Smart filters show glyphs that match a set of rules. They appear
in the Filters section of the left sidebar and are identified by agear
icon. Add a smart filter by clicking the actions menu
button located in the bottom left of the font window andchoosing Add Smart Filter. Edit an existing smart filter by
double-clicking its gear icon or choose Edit Filter from theactions menu for a selected filter.
Adding or editing a smart filter opens the smart filter editor
window. It controls the name and the rules of a smart filter. The
name of the smart filter will appear in the filters sidebar. The rules
define which glyphs to include in the filtered group.
When adding a new filter, only one rule is shown in the editor.
Add additional rules by clicking a plus
button and remove arule by clicking the minus
button next to it.

The following filter rules are available:
Glyph Name The name (see p. 82) of the glyph.
Count of Paths The number of paths of the first master layer.

Font View

Glyphs 3 Handbook, October 2021

92

Count of Components The number of components (see p. 126)of the first master layer.
Tags The tags (see p. 84) of the glyph.
Script The script (see p. 86) to which the glyph belongs.
Category & Subcategory The category and subcategory (seep. 86) of the glyph.
Case Whether the glyph is uppercase, lowercase, small capital, or
has no associated case.
Master Compatible Whether the masters can be interpolated(see p. 184).
Export Glyph Whether the glyph is included in exported font
files (see p. 110).
Has Unicode Whether the glyph has at least one Unicode value(see p. 84).
Has Components Whether the layer of the selected master ofthe glyph contains components (see p. 126). Use Contains
Component to check if a specific component is on the layer.
Has Hints Whether the layer of the selected master has any
manually placed hints.
Has PostScript Hints Whether the layer of the selected masterhas any manually placed PostScript hints (see p. 155).
Has TrueType Hints Whether the layer of the selected masterhas any manually placed TrueType hints (see p. 164).
Has Corners Whether the layer of the selected master contains
corner components (see p. 138).
Has Anchors Whether the layer of the selected master contains
any anchors (see p. 34).
Contains Component Whether the layer of the selected mastercontains a specific component (see p. 126). Use Has
Components to check whether there are any components on
the layer.
Has Special Layers Whether the glyph has any special layers(see p. 62).
Has Custom Glyph Info Whether the glyph uses custom glyph
info deviating from the glyph info database (see p. 96).
Has Annotations Whether the layer of the selected mastercontains annotations (see p. 52).

Font View

Glyphs 3 Handbook, October 2021

93

Is Auto-Aligned Whether the layer of the selected master is
automatically aligned (see p. 130).
Has Metrics Keys Whether any of the glyph metrics use metrics
keys (see p. 146).
Metrics Keys Out of Sync Whether any metrics keys (see p. 146)
are out of sync and need to be updated.
Has Kerning Groups Whether the glyph uses kerning groups(see p. 150).
Color Label The color label (see p. 83) of the glyph. Comparewith Not Set to filter for glyphs without a color label.
Layer Color Label The color label (see p. 83) of the layer of theselected master. Compare with Not Set to filter for layers
without a color label.
Is Hangul Key Whether the glyph is a Hangul key according tothe ‘Hangul Composition Groups’ custom parameter.
Custom This filter rule can contain a custom glyph predicate
expression. Such an expression is formulated like a glyphpredicate token; see section 8.4.4, ‘Glyph Predicate Tokens’(p. 118) for details.
Rules can also be nested, such that all of the rules in a groupmust apply, at least one of the rules in a group must apply, or
none of the rules in a group may apply for a glyph to be includedin the filter. Create a group of rules by holding down the Option
key and clicking the dots
button. Then, pick Any (at least one
nested rule must match), All (all nested rules must match), orNone (no nested rule may match).
7.5.5 List Filters

Tip: In Font View, make aselection of glyphs and thenchoose Copy Glyph Names →One per Line to copy theglyph names in a format
suitable for list filters. See also
section 7.6.4, ‘Copy GlyphNames’ (p. 99).

A list filter shows all glyphs that are specified in a list of glyph
names. List filters appear in the Filters section in the left sidebar
with a list
icon. Add a list filter by clicking the actions menu
button located in the bottom left of the font window andchoosing Add List Filter. By default, all selected glyphs are added
to the list filter. Glyph names are separated by spaces or line
breaks. Edit an existing list filter by double-clicking its list icon or
choosing Edit Filter from the actions menu.
Change the name of a filter with the Name text field at the topof the list field editor window. Click OK to confirm or click Cancel
to discard any changes to the list filter. Select a list filter from theFont View

Glyphs 3 Handbook, October 2021

94

sidebar to see all glyphs of the font that are in the list. Glyphs are
sorted in the order of the list. See section 7.2.1, ‘Adding From theSidebar’ (p. 79) for details on adding glyphs from a list filter.
7.5.6 Manage Filters
Reorder filters by dragging them up and down in the filters list.
Choose Add Folder from the actions menu
to create a filter
folder. Click and drag to move a filter into a folder. Folders
can also be put into other folders. Hold down the Command key
to select multiple filters, or hold down Shift to select a range offilters. Font View shows all glyphs that are in at least one of theselected filters. Select a folder to show all glyphs belonging to
any of the contained filters.
Quickly edit a smart filter or list filter by double-clicking its
gear
or listicon. Double-click a filter name to rename it
without opening the editor window. Or, select a filter and press
Return to rename it.
Delete a filter by choosing Remove Filter from the actions
menu . This also works for filter folders. Note that removing afolder will also remove all filters inside it.
7.5.7 Custom Categories & Languages
The Filters sidebar section is customizable directly from within
Glyphs (as described in sections 7.5.4, 7.5.5, and 7.5.6 above).
Custom entries in the Categories and Languages sections can be
added by creating a Groups.plist file in the Glyphs Info folder.
See Custom Sidebar Entries in Font View² for details.
7.5.8 Glyphs Order
Categories, languages, and filters do not influence the glyphs
order in the exported font. Instead, glyphs are ordered by theirsort name (see p. 86). Define a custom order for all glyphs of the
font with the ‘glyphOrder’ custom parameter in File → Font
Info… → Font (Cmd-I). The parameter takes a list of glyph names,
one name per line. The order of glyphs is used both in Font View
and in exported font files.
When opening an OTF or TTF font file, Glyphs preserves theglyph order of the file by automatically adding a ‘glyphOrder’
custom parameter when Keep Glyph Names from Imported Filesis selected. See section 3.3, ‘User Settings’ (p. 15) for details.
2 glyphsapp.com/learn/custom-sidebar-entries-in-font-view

Font View

Glyphs 3 Handbook, October 2021

95

7.6 NAMES AND UNICODE
7.6.1 Glyph Info Database
Glyphs contains a glyph info database. For each glyph, thedatabase defines:
the nice glyph name that is used within Glyphs;
the production name that is used on export;
the associated Unicode value, when there is one;the components, in the case of composite glyphs;
a default set of anchors;
the associated marks displayed in the mark cloud (see p. 14);the script of the glyph;
the category and subcategory of the glyph.
Glyphs uses two kinds of names: nice names and production
names. Nice names are used within Glyphs and are intended tobe readable for humans. Production names are used in exported
font files and are intended to be read by computers. See
section 7.3.1, ‘Glyph Name’ (p. 82) and section 7.3.8, ‘Production
Name’ (p. 85) for details on both.
Glyphs uses its glyph info database to convert between nicenames, production names, and Unicode values. This glyph info
database can be viewed by choosing Window → Glyph Info. All
glyphs stored in the database are displayed in a searchable table.
Click a column header to sort the table by that column.

Use the methods described in section 7.3, ‘Glyph Properties’(p. 82) to override the glyph properties of individual glyphs for asingle Glyphs file. Make changes to glyph properties for all

Font View

Glyphs 3 Handbook, October 2021

96

Glyphs files by creating a custom GlyphData.xml file.³
Suffixed glyphs inherit the glyphs info properties of theirunsuffixed counterpart. For example, A.alt, A.ss01, and A.001 alluse the same glyph properties as the unsuffixed glyph A.
However, names like Aalt, Ass01, or A001 would not inherit any
properties since they are missing the dot between the base nameand the suffix. While such glyph names are valid, they require allproperties to be set up manually. If possible, it is best to use
glyph names from the glyph info database and use dot suffixes
for glyph variants. See section 17.3, ‘Automatic Feature
Generation’ (p. 234) for details on how specific dot suffixes canhelp generate OpenType features, automatically.
7.6.2 Naming Glyphs
Glyph names appear underneath their glyph cell in Grid View ortheir column in List View. Edit a glyph name by clicking it once.
When adding a glyph by character (ä) or by Unicode name(‘uni00E4’), Glyphs will automatically assign a nice name to theglyph (adieresis in this case).
Based on the glyph name, Glyphs can automatically assign
Unicode values, a glyph category, subcategory, and generate
OpenType features. See section 7.2.1, ‘Adding New Glyphs’ (p. 78)
for more details.
This automated glyph renaming can be disabled for a font inFile → Font Info… → Other → Use Custom Naming. Note that
automatic feature code generation or automated assignment of
categories does not work with custom names. Using a custom
glyph info database (see p. 96) can provide automated behavior
like assigning Unicode values or categories based on
glyph names.
Unicode-value-based glyph names start with ‘uni’ followed byfour hexadecimal digits or ‘u’ followed by five or six digits. See
section 7.3.7, ‘Unicode’ (p. 84) for details.
7.6.3 Glyph Naming Rules
A font containing glyphs with invalid names cannot be exported.
Ensure that every glyph nameonly contains letters A–Z and a–z, numerals 0–9, underscore (‘_’),hyphen (‘-’) or period (‘.’);3 glyphsapp.com/learn/roll-your-own-glyph-data

Font View

Glyphs 3 Handbook, October 2021

97

starts with a letter (except for non-exporting glyphs and thespecial .notdef glyph).
In particular, glyph names may not contain white spacecharacters (space, tab, line break) or non-ASCII characters.
In this export results dialog, anerror for the Glyph named ‘₹’is shown. The glyph should
instead use the name‘rupeeIndian’.

Not adhering to these guidelines yields an error message atexport time stating ‘Illegal glyph name’, followed by an
explanation of where the invalid character is located in the glyphname. Click the Show button to open the invalid glyph in a newtab. Such error messages can also occur when trying to compile
the OpenType feature code in File → Font Info… → Features.
A glyph whose name starts with an underscore is not exported
by default. These names are used by component glyphs such as_part.something, _smart.something, _cap.something, or_corner.something. See section 9.1, ‘Components’ (p. 126) for
details on component glyphs and their naming rules.
Hyphens are used to indicate the script a glyph belongs to.
Most Latin and Greek glyphs have no hyphen suffix. This way, theglyph named A represents the Latin A, A-cy represents the CyrillicA, and Alpha represents the Greek A. Arabic uses the suffix ‘-ar’,Hebrew uses ‘-hb’, Korean uses ‘-ko’, and Thai uses ‘-thai’. Openthe Glyph Info window (see p. 40) for all available script suffixes.
Special glyphs used in mathematics (‘-math’), Braille (‘-braille’),Fraktur (‘-fraktur’), or music (‘-musical’) also use this naming
scheme. Some glyphs, like the Han glyphs used in Chinese, do
not have a nice name and use the Unicode name instead.
Alternate glyphs such as small caps and initial/medial/final
forms use a dot suffix: The name is the same as the regular glyph
but followed by a period (.) and an identifier. For example, thesmall caps alternate of the glyph x is named x.sc and the initial
form of noon-ar is noon-ar.init. Some suffixes are recognized by
Glyphs and used to generate OpenType features automatically.
See section 17.3, ‘Automatic Feature Generation’ (p. 234) for a list

Font View

Glyphs 3 Handbook, October 2021

98

of all special glyph name suffixes.
Dot-suffixes can be chained. For the automatic feature
generation to work, suffixes should be ordered in the same orderas the features in File → Font Info… → Features. For example,
x.sc.ss01 is the name of the glyph x as a small cap with the firststylistic set enabled since stylistic sets are typically ordered after
small caps.
Ligature glyphs combine the names of their components withan underscore. For example, f_f_l is the ffl Ligature. Script andalternate suffixes can also be applied to ligature names. Suffixes
must be added only at the end of the name and not for every
component. For example, the ligature of lam-ar and alif-ar isnamed lam_alif-ar, and its final form is named lam_alif-ar.fina.
7.6.4 Copy Glyph Names
Control-click or right-click a glyph or a selection of multiple
glyphs and choose from the Copy Glyph Names menu how towrite the glyph names to the pasteboard.

The glyph names can be written in a variety of formats to thepasteboard:
Space Separated The names are formatted on a single line andjoined by single space characters. Example: ‘one two three’.
One per Line Copies the glyph names with each name on its
own line and no other separator characters.
Comma Separated Formats the glyph names on a single linewith a comma and a space after each glyph name. Example:‘one, two, three,’.
Slashed Prefixes each glyph name with a slash ‘/’ and joins them

Font View

Glyphs 3 Handbook, October 202199

together on a single line. Example: ‘/one/two/three’. This
format can be pasted into Edit View.
Python List Formats the names as items of a Python list. Eachname is enclosed in double quotes (") and separated bycommas and line breaks. This format is useful when working
with the Macro Panel or when writing scripts. Example:"one","two","three",Unicodes Writes the Unicode values of the glyphs as
hexadecimal numbers to the pasteboard, one per line. Values
are padded to at least four digits with leading zeros. Glyphs
without Unicode values are written as ‘- # someGlyph’. If aglyph has multiple Unicode values, they are written on thesame line and separated by a comma and a space. Example:
005B
005D
- # bracketleft.case- # bracketright.case
27E8, 3008
27E9, 3009

7.6.5 Renaming Glyphs
Click a glyph name to edit it. Changing a glyph name will alsochange some of its properties, such as the Unicode value or the
category. If only the suffix after the period is changed, noproperties will be modified since the base name stays the same.
For example, renaming eacute to plus will change the glyphproperties, while renaming eacute.sc to eacute.pc will not.
See section 7.4.3, ‘Batch-Renaming Glyphs’ (p. 89) for details
on renaming multiple glyphs at once.
7.6.6 CID Mapping
CJK fonts use CID mapping, where glyphs are not accessed byglyph name but by a character identifier (CID). Glyphs can map
nice glyph names to CIDs. A ROS (Registry, Ordering,
Supplement) determines which glyph is assigned to which CID.
Exporting glyphs that the ROS does not cover are added to theend of the CID mapping at export.

Font View

Glyphs 3 Handbook, October 2021100

7.7 IMAGES
Add an image by dragging it from Finder onto a glyph cell. The
image will be added to the currently active layer. Alternatively,
choose Glyph → Add Image… to insert an image file to theselected glyph.
Add images to multiple glyphs at once by choosing Glyph →Add Image… and then selecting multiple image files. The images
will be placed on the layer of the current master of the glyphs
that correspond to an image name. For example, Thorn.png is
added to the glyph Thorn, and Djecy.jpeg is added to Dje-cy.
Note that while glyph names are case-sensitive (A is different
from a), file names in macOS are case-insensitive, by default(A.png is considered the same file name as a.png). Uppercase
and lowercase files can thus not coexist in the same folder. As aworkaround, place images for uppercase letters in a different
folder than lowercase letters.
Images are shown in Font View when View → Show Image isselected. If a glyph is empty (no paths or components are placedin the glyph), the image is displayed regardless of the Show Image
option. See section 4.12, ‘Images’ (p. 54) for information on
working with images in Edit View.

Font View

Glyphs 3 Handbook, October 2021

101

8 Font Info
The Font Info window contains general information about a
Glyphs file, such as the font family name, the masters, theexported font instances, and the OpenType features. Open
Font Info by choosing File → Font Info… (Cmd-I) or click the
Info button located in the top left of the main window.
Font Info is split into multiple tabs. The Font, Masters, andExports tabs control the font metadata with rows of fields. Clickthe plus
button to the right of the bold headings to add
additional fields. Click the minus
button to the right of a row
to delete it. For rows with a plus button to the right, hold down
the Option key to reveal the minus button. Alternatively, click a
row to select it, then delete it by pressing Cmd-Delete.
Family Name
Localized Family Names

Handbook
Default!
"

Handbook

German!
"Handbuch

French!
"ManuelItalian!
"ManualeChinese (Simplified)

!
"

⼿册

Some fields can be localized into multiple languages. These
display a language menu and a plus
button to the right of the
field. Click the plus button to add additional localizations andpick the respective language from the languages menu.
Select one or multiple rows by Command-clicking and copy
them by choosing Edit → Copy (Cmd-C). Paste rows with Edit →Paste (Cmd-V).

8.1 FONTThe Font tab contains information that applies to all exported
font files. Click the plus
button to the right of the General
heading to add additional fields.
The Axes (see p. 106) and Custom Parameters (see p. 106) of
the Font tab are described in more detail at the end of
this section.
8.1.1 Family Name
The ‘Family Name’ is the name given to the exported fonts. This
name will appear in font menus. Fonts with the same family

Glyphs 3 Handbook, October 2021

102

Name IDs refer to the entriesof the OpenType Naming
Table stored in OTF and TTF
fonts. See the OpenTypename table specification¹ for alist of all possible nametable entries.

name will be grouped into the same styles submenu. A familyname should only contain ASCII letters (a–z and A–Z), digits (0–9),
and spaces. Any other characters may prevent the fonts fromexporting or installing.
Add the ‘Localized Family Names’ field to provide a familyname containing non-ASCII characters or to localize the familyname into multiple languages. Click the plus
button to theright of the General heading, select ‘Localized Family Names’,and click Add.
Glyphs uses the family name to derive the file name and theentries for the Name IDs 1, 3, 4, and 6. In PostScript/CFF-based
OpenType fonts, the family name is also used for the FontName
and FullName in the CFF table. Add the ‘Font Name’ and ‘Full
Name’ fields in File → Font Info… → Font → General to control
those values independently of the family name.
The font name can be overwritten by instances using the‘Localized Family Names’ field.
8.1.2 Units per Em
The ‘Units per Em’ (UPM) determines the number of coordinate
units in the em square of each glyph. Increasing the UPM can
improve the representation of fine details as it increases theplacement options of the nodes. 1000 UPM is the default for new
Glyphs files. The OpenType specification allows values between
16 (2⁴) and 16,384 (2¹⁴), but values above 5000 can lead toproblems in Adobe InDesign and Illustrator. Some applications
have issues with values above 3000 UPM.
Additionally, the coordinates of points (nodes and handles)
may not exceed ±32,768, and glyph widths in
PostScript/CFF-flavor fonts can be problematic beyond
4096 UPM (2¹²). Thus, if the design of the font requires higher
precision, it may be better to change the Grid Spacing andSubdivision values. See section 8.5.1, ‘Grid Spacing & Subdivision’(p. 122) for more details.
Click the double-arrow
button next to the text field to scale
the entire font to a different UPM. Scaling changes the UPM andglyph outlines together, keeping the apparent size of the glyph
outlines the same. Enlarge all glyph outlines of the font by setting
the UPM to a smaller value without scaling (for example, from1000 to 800) and then scale the UPM back to its original value
1 docs.microsoft.com/typography/opentype/spec/name

Font Info

Glyphs 3 Handbook, October 2021

103(for example, 1000). Change the UPM to a smaller value and scaleback to the original UPM for smaller outlines.
Consider using the ‘Scale to UPM’ custom parameter on an
instance to change the UPM value for exported files, scaling
glyph outlines and metrics to fit the new UPM value. Use the‘Units per Em’ custom parameter to change the UPM without
scaling outlines or metrics.
8.1.3 Version

See the OpenType headspecification² for more details.

The ‘Version’ field is split into a major and minor version,
separated by a period. The version of a new Glyphs file is ‘1.000’.
Click the stepper buttons to change the minor version.
The major and minor versions of the font are written as the‘fontRevision’ entry in the Header table (head) of the font.
Additionally, Glyphs derives the Version String (Name ID 5) fromthe Version entry by appending its own version to the fontversion before writing the version string. For example, ‘Version
1.000;FEAKit 1.0’ (FEAKit is software that Glyphs uses
internally).
Use the ‘Version String’ parameter to define a custom version
string. Note that some applications require this version string tobegin with ‘Version’ followed by the major version, a period, andthe minor version. Consult the OpenType specification for details.
8.1.4 Date
The ‘Creation Date’ field stores the creation date of the font. This
entry is used for the ‘created’ and ‘modified’ dates in thehead table.
8.1.5 Designer & Designer URL
The ‘Designer’ field stores the name of the typeface designer andcorresponds to Name ID 9.
The ‘Designer URL’ field stores the URL of the designer,
typically the URL of the designer’s website, and corresponds toName ID 12. This field must include the URL scheme (such as
https), for example:
Designer Example Designer
Designer URL https://example.com/designers/example
The ‘Designer’ field is localizable.
2 docs.microsoft.com/typography/opentype/spec/head

Font Info

Glyphs 3 Handbook, October 2021

104

8.1.6 Manufacturer & Manufacturer URL
The ‘Manufacturer’ field stores the name of the manufacturer andcorresponds to Name ID 8.
The ‘Manufacturer URL’ field stores the URL of the
manufacturer, typically the URL of the manufacturer’s website,and corresponds to Name ID 11. This field must include the URL
scheme (such as https), for example:
Manufacturer Example Manufacturer
Manufacturer URL https://example.com
The ‘Manufacturer’ field is localizable.
8.1.7 CopyrightThe ‘Copyright’ field stores a copyright notice for the font andcorresponds to Name ID 0. A typical copyright notice is‘Copyright 2021 Some Name. All rights reserved.’ This field is
localizable.
8.1.8 License & License URLThe ‘License’ field stores a description of the license under which
the font is distributed and corresponds to Name ID 13. This field
is localizable.
The ‘License URL’ field stores the URL to additional licensing
information and corresponds to Name ID 14. This field must
include the URL scheme (such as https).
8.1.9 Trademark
The ‘Trademark’ field notes the trademark holders of the font, if
any, and corresponds to Name ID 7. The trademark notice should
be based on legal advice. This field is localizable.
8.1.10 Description
The ‘Description’ field stores a description of the typeface, which
may include revision information, usage recommendations,
history, features, and other information related to the font. This
field corresponds to Name ID 10 and is localizable.
8.1.11 Sample Texts
The ‘Sample Text’ field stores a sample text for the font preview
in font management software and corresponds to Name ID 19.

Font Info

Glyphs 3 Handbook, October 2021

105

Note that such software may not use the provided sample string.
This field is localizable.
8.1.12 Axes
The Axes define design axes for interpolation and variable fonts.
Click the plus
button to the right of the Axes heading to add a
new axis. An axis has a name, a four-character tag, and can be
hidden or not.
Glyphs offers a range of predefined axis names. Selecting oneof the predefined names will change the tag. Select the Hidden
checkbox to hide the axis from font users.
See chapter 13, ‘Interpolation’ (p. 184) for details on working
with axes across multiple masters and specifically section 13.2,‘Setting up Axes’ (p. 186) for details on the usage of axes invariable fonts.
8.1.13 Custom Parameters
Additional font configurations can be specified using custom
parameters. Click the plus
button to the right of the Custom
Parameters heading to add a new parameter. A list of custom
parameters is shown. Use the search or scroll the list to find thedesired parameter. Click a parameter name in the list to get a
description and click Add to add the selected parameters
to the font.

8.2 MASTERS
A master is a set of specifically designed and configured glyph
outlines and metrics. From the masters setup in a Glyphs file,
font instances are calculated and exported as OpenType font files.
See section 8.3, ‘Exports’ (p. 110) for details.
8.2.1 Managing Masters
When a new Glyphs file is created, the font has one Regularmaster. At the bottom of the Masters tab are buttons for adding
and deleting masters. Click the plus
button to add a newmaster using one of the following options:
Add Master adds a new, empty master. All glyph layers are
empty, and the metrics are set to their default values.
Add Other Font shows a list with all masters of the fonts
currently open in Glyphs. Select one or more masters andFont Info

Glyphs 3 Handbook, October 2021

106

import them by clicking OK. Click Cancel to not importany masters.
Duplicate Selected duplicates the masters that are currently
selected in the Masters tab. The new masters will have thesame name, glyph layers, and metrics as the selected masters.
Consider renaming the duplicate masters to distinguish themfrom the original masters.
Click the minus
button located in the bottom left of the
Font Info window to delete the selected masters.
Reorder masters by dragging them to the desired position in
the masters list. The first master in the list has special relevancefor glyph-level hinting information (unless the ‘Get Hints From
Master’ parameter is set). See section 11.3, ‘Manual hinting’(p. 160) and chapter 12, ‘TrueType Hinting’ (p. 164).
Master properties such as the name, metrics, and custom
parameters can also be edited for several selected masters at
once. Properties that do not share a common value are indicatedwith a gray Multiple Values text.
8.2.2 General
In File → Font Info… → Masters → General, define the name of amaster and its icon. The master name is only used internally by
Glyphs and not by exported font files. Use instances (see p. 110)
to define the exported font files.
The master icon can be a glyph from the font or one of 25
predefined lowercase n glyphs in various widths or weights. Clickthe master icon to choose a predefined image or write a glyph
name into the text field at the bottom of the icon picker to usethat glyph as the icon.
8.2.3 Axes Coordinates
The Axes Coordinates indicate the position of a master in thedesign space. The design space is defined by the axes in the Fonttab (see p. 106). For example, a font with two axes—width andweight—has a two-dimensional design space. A master can thenbe placed anywhere within that design space. See section 13.3,‘Setting up Masters’ (p. 186) for details on placing masters in adesign space.

Font Info

Glyphs 3 Handbook, October 2021

107

8.2.4 Metrics & Alignment Zones
Master metrics define the baseline of the font, offsets from thatbaseline, and other values such as the angle of slope of italic
glyphs. In Edit View, the metrics are displayed as orangealignment lines (when View → Show Metrics is selected). The
default metrics are set according to the script and language
selection. For example, Latin fonts have the following default
vertical metrics:
Ascender The height reached by the ascenders of letters such asb, d, f, h, k, l, þ, or ß.
Cap Height The height of capital letters such as H, T, or W
without overshoot.
x-Height The height of short lowercase letters such as x, a, c, e, n
without overshoot.
Baseline The position on which letters are placed, always 0.
Descender The depth reached by descending letters such as Q,
g, j, þ, or q. This value is negative since it is below the baseline.
Italic Angle The angle of slope of the italic glyphs stems. Thisvalue affects several elements, including the sidebearings
calculation, the anchors alignment between selected nodes,
and transformations that take the italic angle into account.
The value is in degrees clockwise.
Other scripts use different default metrics. For example, an
Arabic font has the default metrics of Ascender, Baseline,
Descender, Alef Height, Joining Line, and Meem Depth.

Click the name of a metric to edit its category, name, and scope.
The category is the metric type, and the name can be chosen
freely to identify the metric. The scope limits the metric to a

Font Info

Glyphs 3 Handbook, October 2021

108

subset of glyphs. For example, scoping a metric to glyphs with a
Devanagari script hides its alignment line in all other glyphs. See
section 7.5.4, ‘Smart Filters’ (p. 92) for details on glyph scopes.

The left number field of a metric defines the offset from thebaseline. (The Italic Angle metric has one field only.) The rightnumber field is the size of the alignment zone and starts at theoffset of the metric. Nodes and anchors placed in alignment
zones are highlighted. See section 4.2.5, ‘Nodes in Alignment
Zones’ (p. 25) and section 4.4.1, ‘Adding, Editing, and Removing
Anchors’ (p. 35).
Alignment zones are used by the automatic hinting process,which ensures that overshoots snap to even metric lines at small
font sizes or low screen resolutions. See section 11.1.2, ‘Alignment
Zones’ (p. 157) for details on PostScript hinting with alignment
zones. For TrueType hinting, separate zones may be configured(see section 12.2.1, ‘TrueType Zones’, p. 165).
8.2.5 Stems
Font designs typically conform to standard stems. For example,
the capital I has a vertical stem, and the capital H has twovertical stems and one horizontal stem. A rounded shape like theletter O has left and right vertical stems and top and bottom
horizontal stems. Serifs and crossbars, such as in the lowercase f
and t, are also stems.
Frequently used stem widths are defined in File → Font Info… →Masters → Stems. The autohinter uses these stem values to add
hints to vertical and horizontal stems. See section 11.2,‘Autohinting’ (p. 159) for details on hinting with the autohinter.
For TrueType hinting, separate stems may be configured (seesection 12.2.2, ‘TrueType Stems’, p. 168).
Click the plus
button located to the right of the Stems
heading to add a new stem definition. A stem can either be

Font Info

Glyphs 3 Handbook, October 2021

109vertical(measured left to right) or horizontal (measured top
to bottom). The name of a stem is used to describe it and forinterpolation: When interpolating between masters, stems withthe same name in both masters are used to interpolate thein-between stem value. The stem value should be as close to as
many master stems as possible. See chapter 11, ‘PostScript
Hinting’ (p. 155) for more information on good stem values.
Click the actions button located on the right of a stem entry
line to restrict it to a specific subset of glyphs. This scoping works
the same as in master metrics (see p. 108) or smart filters. See
section 7.5.4, ‘Smart Filters’ (p. 92) for details on glyph scopes.
8.2.6 Custom Parameters
Masters can have custom parameters just like the Font tab (seesection 8.1.13, ‘Custom Parameters’, p. 106). A custom parametervalue is interpolated if it is defined in all masters. Some custom
parameters exist on the font and the master level. A parameteron a master will overwrite such a font parameter. Instances canalso have custom parameters, which overwrite both font andmaster parameters.
8.2.7 Number Values
Tokens can use Number Values in OpenType feature code toinsert numbers that interpolate between masters. Click theplusbutton located to the right of the Number Values heading
to add a new number value. See section 8.4.4, ‘Number Value
Tokens’ (p. 117) for more information.

8.3 EXPORTS
The Exports tab contains the static instances and variable fontsthat are created when exporting with File → Export… (Cmd-E).
Click the plus
button located in the bottom left of the Exports
tab to add a new static or variable instance. Four options areavailable:
Add Instance adds a new instance named ‘Regular’.
Add Instance for Each Master adds instances at the design spacelocations of each master. For example, if the font has twomasters, Thin with a weight of 100 and Bold with a weight of 700,
a Thin and a Bold instance will be added with the same axis
values as the respective masters.

Font Info

Glyphs 3 Handbook, October 2021

110

Instance as Master adds a new master to the Masters tab using
the outlines and metrics of the currently selected instance. For
example, consider a font with two masters—Thin and Bold—andfive instances—Thin, Light, Regular, Semibold, and Bold—where
the Light, Regular, and Semibold instances are interpolations
between the two masters. Select the Regular instance and choose
Instance as Master to add a Regular master with the outlines andmetrics taken from the instance. Now the Light instanceinterpolates between the Thin and Regular masters, the Regularinstance uses the Regular master without interpolation, and the
Semibold instance interpolates between the Regular and
Bold masters.
Add Variable Font Setting adds a variable font instance. See
section 15.1.2, ‘Variable Fonts Export’ (p. 216) for more
information.
Click the minus
button to delete the selected instances.
Select multiple instances by Command-clicking entries in the
sidebar or Shift-click to select a range of instances. Reorderinstances by dragging them to a new position. The order of
instances is just used for organization within Glyphs and does notaffect the exported font files. For more information oninterpolating instances, see chapter 13, ‘Interpolation’ (p. 184).
8.3.1 Active
The Active setting controls whether an instance is exported with
File → Export… (Cmd-E). Deactivated instances are shown with agray icon in the sidebar.
8.3.2 Style Name
The style name appears in the font menu of an application.
Examples include ‘Regular’, ‘Bold’, or ‘Light Italic Display’. The
style name can include the letters A–Z and a–z, the digits 0–9,
spaces, and some punctuation marks such as the hyphen.
Characters outside the ASCII range are not compatible with all
software. Instead, add the ‘Localized Style Names’ custom
parameter for style names with Unicode characters.
Some operating systems, applications, and printers do notwork with fonts with long font names. A conservative limit is 20
characters for the overall name (family and style name). Whenthe font name is too long, consider adding the ‘Font Name’ and‘Full Name’ custom parameters with abbreviated font names.

Font Info

Glyphs 3 Handbook, October 2021

111

See the Naming tutorial³ for more information on good stylenames and how to shorten them for maximum software
compatibility.
8.3.3 Weight & Width
The Weight Class and Width Class values are used to categorize
an instance. Some applications use the weight and width classes
to order fonts in a font menu. When defining the typography of a
website with CSS, the weight class is used to access fonts ofdifferent weights.
Click the disclosure ! button to select from a range ofpredefined values. These values follow the OpenType OS/2
specification⁴: 100, 200, …, 900 for standard weight classes and
1–9 for width classes. The weight class can be any value from 1 to1000 if a font family needs more than the nine standard weightclasses. Click a weight class field to manually enter a value
ranging from 1 to 1000 (for example, 350 for a Semi Light style).
Note that some applications only work with fonts that use one ofthe predefined weight classes and reject fonts within-between values.
Weight and width classes are not necessarily the same as theweight and width axis coordinates (if a font has such axes). The
weight and width classes are used by applications other thanGlyphs to order and categorize fonts. Axes are used internally in
Glyphs for interpolation (though they can also be exposed, seesection 13.3.1, ‘Axes Coordinates’, p. 187). Weight and width axes
are not bound to the same value ranges as the weight andwidth classes.
8.3.4 Axes Coordinates
Axes coordinates define the location of an instance in thedesign space. The axes of a font are defined in the Font tab (seesection 8.1.12, ‘Axes’, p. 106), and masters define the outlines andmetrics at specific locations in the design space of those axes (seesection 8.2.3, ‘Axes Coordinates’, p. 107).
An instance with axis coordinates between masters isinterpolated and extrapolated when it is outside the design space.
For example, consider a single weight axis with two masters,
Light at 40 and Bold at 120. An instance with a weight of 80 is
3 glyphsapp.com/learn/naming
4 docs.microsoft.com/typography/opentype/spec/os2

Font Info

Glyphs 3 Handbook, October 2021

112

interpolated. Instances with weights of 20 and 150 are both
extrapolated. Extrapolated instances are often challenging to getright. Consider drawing masters at the axes extremes so that all
instances are interpolated.
8.3.5 Style Linking
Use style linking to connect a bold, italic, or bold-italic instanceto its regular instance. Style linking is used by applications likeword processors to switch to the correct font when the user clicks
the Bold button or presses Cmd-I to italicize the selected text.
Style Linking has two checkboxes—one for bold and one for
italic—and a text field for the name of the base instance. For
example, in a Bold Italic instance, select both checkboxes andenter the name of the normal instance (‘Regular’) into thetext field.
Style linking only works between fonts with the same familyname. By default, Glyphs uses the family name from the Font tab
for all instances in the Exports tab. The family name can be
overwritten for individual instances by adding a ‘Localized Family
Names’ in File → Font Info… → Exports → General. Fonts
generated from different Glyphs files can use the same familyname. This is common when using separate Glyphs files for the
Roman and the Italic, which still belong to the same family.
Some applications do not expose a complete list of all styles ina font. Instead, they only allow the user to select a family and its
regular, bold, italic, and bold-italic styles using Bold and Italic
buttons. In these applications, fonts that are not linked typicallyappear as separate entries in a font family picker. Consider using
the following style linking strategy:
The Bold, Italic, and Bold Italic instances of a font family should
always be linked to the Regular instance.
Other italic styles should always be linked to their non-italic
counterpart. For example, Medium Italic is marked as theitalic of Medium.
Some font designers also link bolds with other styles. For
example, Semibold is marked as the bold of Light. This hides the
Semibold style from the font family picker, making it only
available when pressing the Bold button while the Light style isselected. Therefore, users may be unaware that the font family
includes a Semibold style.

Font Info

Glyphs 3 Handbook, October 2021

113

8.3.6 Custom Parameters
Instances can have custom parameters. Some custom parameters
exist in the Font, Masters, and Exports tabs. A parameter in the
Exports tab will overwrite values set in the Masters and Font tabs.
For example, a trial version of an instance might add the word
‘TRIAL’ to the end of the family name.

8.4 FEATURESThe Features tab manages OpenType feature code that
substitutes and positions glyphs. These features are described in
the OpenType specification for the GSUB table⁵ (glyph
substitution) and the GPOS table⁶ (glyph positioning).
Some GPOS features such as kerning, mark positioning, andcursive attachment are primarily defined in Edit View by editing
the kerning values between glyphs and placing anchors. These
implicit features do not appear in the Feature tab. See
section 8.4.7, ‘Implicit Features’ (p. 121) for details.
8.4.1 OpenType Feature Code
OpenType features are defined using the AFDKO (Adobe Font
Development Kit for OpenType) syntax. Glyphs offers additionalfeature code functionality; see section 8.4.4, ‘Tokens’ (p. 117) andsection 8.4.5, ‘Conditional Feature Code’ (p. 120) for details.
The Features sidebar is divided into three parts: Prefix,
Classes, and Features. Click the plus
button located to theright of each heading to add an entry. Select one or multiple
sidebar entries and delete them by clicking the minus
buttonlocated in the bottom left of the window.
Prefix entries contain arbitrary feature code primarily used todefine lookups that need to be placed outside any
specific feature.
Classes are lists of glyph names. The names are separated by awhite space character, either a space or a line break.
Features control the glyph substitution and positioning rules. A
feature is identified by its four-character tag. Click the plus
button next to the Feature heading and search by feature tag orfeature name. Double-click a feature to add it or navigate thepicker list with Up and Down arrow keys and press Return when
5 docs.microsoft.com/typography/opentype/spec/gsub
6 docs.microsoft.com/typography/opentype/spec/gpos

Font Info

Glyphs 3 Handbook, October 2021

114the desired feature is selected.
A Spec button is shown in the top right of the window when afeature is selected. Click it to open the feature specification on
the Microsoft OpenType developer website.
8.4.2 Automatic Feature CodeGlyphs can automatically generate feature code for many
commonly used OpenType features. Click the Update button
located in the bottom left of the window to create and update
automatically generated prefixes, classes, and features all at once.
Glyphs also looks for new classes and features to generate
when updating. For example, suppose glyphs with an underscorein their name (such as f_l) were added since the last update. Inthat case, Glyphs spots those additions and automatically adds a‘liga’ (Standard Ligatures) feature with the corresponding featurecode to the sidebar.
Many automatic features use the dot suffix in glyph names.
For example, glyphs ending in ‘.sc’ are put in the small caps
feature (sub a by a.sc), or glyphs ending in ‘.tf’ are put into thetabular figures feature (sub zero by zero.tf). This also works
by appending the feature tag to the end of a glyph name. For
example, the glyph g.ss01 would substitute the glyph g when thefirst stylistic set (‘ss01’) is enabled.
Automatic prefixes, classes, and features are indicated with an
update button to the right of their name. Click this button to
update only that single entry. Select an entry from the sidebar
and deselect the Generate Feature Automatically checkbox above
the code editor to edit the code manually. Manual code is not
updated by clicking the Update button. See section 8.4.3,‘Manual Feature Code’ (p. 116) for details.
Some features and classes are not added automatically whenpressing Update, even though Glyphs could auto-generate them.
For example, the class All, which contains every exporting glyph,
can be automatically generated, but not every font project needs
it. The Capital Spacing feature (‘cpsp’), which adds a bit of extra
space between capital letters, can also be automaticallygenerated but is not required by all designs, and some designers
might want to write it manually.
Some features automatically generated by Glyphs do notappear in the Features tab. See section 8.4.7, ‘Implicit Features’(p. 121) for details.

Font Info

Glyphs 3 Handbook, October 2021

115

8.4.3 Manual Feature Code
Uncheck the Generate Feature Automatically checkbox locatedabove the feature code text field to write the code manually.
Code that cannot be generated automatically, such as the ‘calt’feature, is always in manual mode.
Feature code is written in the AFDKO syntax as specified by
the OpenType Feature File Specification.⁷ After editing featurecode, click the Compile button located in the bottom left of thewindow to preview it in Edit View. See section 4.13.3, ‘Previewing
OpenType Features’ (p. 55) for details. Note that Edit View only
previews manual substitution code, not manual positioning code.
Glyphs syntax highlights the feature code in the editor:
Keywords (like sub or lookup) are formatted differently fromglyph names (like ka-deva or zero) which are again formatted
differently from numeric values, lookup names, and comments.
Trigger the autocomplete function by typing a glyph name, aclass name, or a lookup name (for example, a glyph name after
the keyword sub or a lookup name after the keyword lookup).
Glyphs will provide a menu of matching suggestions.

Navigate to the desired suggestion with the Up and Down arrow
keys. If there are many matching suggestions, scroll until thedesired suggestion is shown or narrow down the suggestions listby typing a few more characters. Accept the highlighted
suggestion by pressing the Return key.
Option-click a glyph or class name to show a visual preview.
For glyph classes, a list of all member glyphs is shown.
Glyphs shows error messages inline if the feature code isincorrect and cannot be compiled. Click theerror icon for an
expanded description. Errors with a wrench
icon include asuggested fix. Click the Fix button to accept the suggestion.

7 adobe-type-tools.github.io/afdko/OpenTypeFeatureFileSpecification.html

Font Info

Glyphs 3 Handbook, October 2021

116

Prefixes, classes, and features with errors show an
icon in the
sidebar. Click the error icon in the sidebar to jump directly to theerroneous part of the code.

The text field below the feature code can be used to write notes
about a prefix, class, or feature. Change the height of the notes
field by dragging the gray line above it up and down.
Click the snippets
button to insert predefined codesnippets. Choose any of the snippets to insert them into thefeature code. See section 17.2, ‘Custom Feature Code Snippets’(p. 233) for details on adding custom feature code snippets.
8.4.4 Tokens
Tokens are pieces of code that help automate the feature code.
They dynamically insert values and glyph names into feature code,and their syntax starts with a dollar sign ($). There are three typesof tokens: number values, glyph properties, and glyph predicates.
Number Value Tokens
A number value token inserts the values defined in File → Font
Info… → Masters → Number Values (see p. 110). Number value

Font Info

Glyphs 3 Handbook, October 2021

117

tokens are written with a dollar sign followed by the number
value name.
For example, the token $padding inserts the ‘padding’ number
value on the master of the font. The value inserted by the token isinterpolated if multiple masters exist.
Tokens also support basic arithmetic. Wrap the name of thenumber value in curly braces to use plus +, minus -, times *, anddivide / operators: ${padding*2}. The name of the number
value must be placed at the start of the arithmetic expression.
Such operations can be helpful in, for example, the capitalspacing ‘cpsp’ feature:
pos @Uppercase <$padding 0 ${padding*2} 0>;

Hold down the Option key and click a number value token toshow its computed value.
Glyph Property Tokens
A glyph property token is written as ${glyphname:property}
where glyphname is the name of a glyph and property is a
dot-separated property path.
Properties can be metrics (width, LSB, RSB, TSB, BSB) andanchor positions (such as anchors.top.x). Basic arithmetic is
supported as in number value tokens (see p. 117). For example:# glyph positioning such as in the 'cpsp' feature
pos a.alt <${period:LSB} 0 ${period:LSB*2} 0>;# custom mark to base positioning
pos base b <anchor${b:anchors.top_special.x}${b:anchors.top_special.y}> mark @SpecialTopMark;

Option-click a glyph property token to show its value.
Glyph Predicate Tokens
Glyph predicate tokens insert a space-separated list of glyph
names. The predicate determines the glyphs matched andinserted. For example, $[script == "adlam"] expands to a listof all glyphs belonging to the Adlam script, and$[name endswith ".star"] expands to a list of all glyphs
ending with a ‘.star’ suffix.
When used in a feature class, predicate tokens can be written
among other glyph names, like this:Font Info

Glyphs 3 Handbook, October 2021

118

period comma $[category == "Symbol"]

would expand to:period comma at ampersand plus minus ...

Within prefixes and features, the predicate needs to be wrappedin square brackets, like this:@Signs = [period comma $[category == "Symbol"]];@SmallCaps = [$[case == smallCaps]];

The predicate can check for different aspects of a glyph:
True/False Check whether a boolean true or false condition
applies. For example, $[isAligned == true],$[hasHints == false], or $[isColorGlyph == true].
Numbers Check for numeric values of the glyph. For example,$[countOfLayers == 3] or $[countOfUnicodes > 0].
Numbers are also used for glyph properties with a limited setof values. For example, $[colorIndex == 5] (seesection 7.3.5, ‘Color Label’, p. 83 for color numbers),$[case == upper] (use ‘noCase’, ‘upper’, ‘lower’, ‘smallCaps’,‘minor’, or ‘other’ for comparison), or $[direction == 2](0: LTR, 1: BiDi, 2: RTL).
Strings Match a text string with a glyph property. For example,$[name endswith ".sc"], $[script == "balinese"], or$[category == "Letter"].
Objects Access nested glyph data for comparison. For example,$[layer.anchors.top.y > 600], $[layer.maxX > 300], or$["ipa" in tags].
Predicates can also be combined. Write AND between two
predicates if both need to be true. Write OR if only one of the twoneeds to be true for the glyph to be included. Write NOT before a
predicate to invert it; that is, include all glyphs not matching thepredicate. If needed, use parentheses to group predicates.
For example:$[script == "greek" AND case == upper]$["todo" in tags OR NOT note contains "done"]$["ipa" in tags OR ("lang" in tags AND case == lower)]

Glyph predicate tokens also support a special class(...)
function that represents all glyphs contained in a feature class

Font Info

Glyphs 3 Handbook, October 2021

119

(@SomeClass). Use it to check whether a glyph is in a given class,like this:# all lowercase glyphs of the class @SomeClass$[name in class(SomeClass) AND case == lower]# the intersection of two classes$[name in class(Narrow) AND name in class(TopMark)]

Option-click a glyph predicate token to show a list of allmatching glyphs.
8.4.5 Conditional Feature CodeFeature code can be wrapped in #ifdef blocks to limit it tovariable fonts. Such a code block ends with a #endif line:#ifdef VARIABLE
sub a by a.var;#endifRules inside a #ifdef (if defined) block are included only invariable fonts. Use #ifndef (if not defined) to include featurerules only in non-variable fonts:#ifndef VARIABLE
sub a by a.static;#endifVariable-only blocks may contain OpenType feature variations.
These restrict substitution and positioning rules to a specificregion of the design space. Define a feature variation by writing
the condition keyword followed by the axis ranges to which thecode following the condition should be limited:#ifdef VARIABLE
condition 600 < wght < 900;
sub dollar by dollar.alt;#endifAxis ranges are written as the axis tag bounded by a lower andupper limit. Write a less-than sign (<) between the limit value andthe axis tag. Note that, although the less-than sign is written forboth the lower and upper limit, the lower limit actually behaves as
if a less-than-or-equal sign (≤) was used. An axis range canspecify both a lower and upper limit or only one of the two.

Font Info

Glyphs 3 Handbook, October 2021

120

A condition can be restricted to multiple axis ranges. Separate
them with a comma. The code following the condition is used
only if all specified axis ranges match.
#ifdef VARIABLE
condition 600 < wght < 900, 70 < wdth < 90;
sub won by won.boldcondensed;#endif

8.4.6 Naming Stylistic Sets
Stylistic sets—the features with tags ‘ss01’ through ‘ss20’—can begiven proper names. Applications supporting feature names willshow those names instead of ‘Stylistic Set 1’, …, ‘Stylistic Set 20’.
When a stylistic set is selected in the sidebar, rows for thefeature name are shown above the code editor. Each row has alanguage picker and a text field for a localized name in that
language. Click the plus
button located to the right of a row to
add additional localizations of a feature name. Click the minus
button to remove a row.
Use the Default language to provide a fallback name if none ofthe other localized names match the user’s locale. Many systems
assume the default language to be English. For example, toprovide the name of the ‘ss07’ feature in English and German,
use the Default language for the English feature name and theGerman language for the German name.
8.4.7 Implicit Features
Implicit features are automatically generated by Glyphs but do
not appear in the Features tab. The kerning feature (‘kern’) is suchan example. Kerning values are defined in Edit View andmanaged by the Kerning window (see section 10.2, ‘Kerning’,
p. 148). The ‘kern’ feature code is different for each master andinstance, which is why it is not exposed in the Features tab andinstead added silently in the background on export. The same istrue for other features that are added implicitly:
Distance ‘dist’ works similarly to kerning, but, unlike kerning, it is
not controllable by the user.
Mark to base ‘mark’ is generated if base glyphs have baseanchors such as ‘top’ or ‘bottom’ and mark glyphs havematching mark anchors such as ‘_top’ or ‘_bottom’. This also
applies to the ‘abvm’ (above-base mark positioning) andFont Info

Glyphs 3 Handbook, October 2021

121‘blwm’ (below-base mark positioning) features. See
section 4.4.2, ‘Mark to Base Positioning’ (p. 36) for details.
Mark to mark ‘mkmk’ is generated similarly to the ‘mark’ feature.
See section 4.4.3, ‘Mark to Mark Positioning’ (p. 36).
Cursive positioning ‘curs’ is also defined in Edit View by placing
special ‘exit’ and ‘entry’ anchors. See section 4.4.4, ‘Cursive
Attachment’ (p. 36).
Implicit features can also be extended manually. Click the plus
button next to the Features heading in the sidebar and search fora feature tag, for example, ‘kern’. Double-click the result or press
Return to insert the feature.
In the feature code editor, insert the line # Automatic Codesomewhere in the feature code. Any code above this line will beplaced before the automatically generated feature code, and any
code below it will be placed after the automatic feature code:
pos a b -20;
# Automatic Codepos x y 15;
pos y z -5;

Insert the automatic code placeholder by clicking thesnippets
button located in the bottom right of the window.
8.4.8 Export-Specific Features
Use the following custom parameters to customize the features
for individual instances.
‘Add Prefix’, ‘Remove Prefixes’, and ‘Replace Prefix’‘Add Class’, ‘Remove Classes’, and ‘Replace Class’‘Add Feature’, ‘Remove Features’, and ‘Replace Feature’
Automatic classes and features do not need to be changed for
different instances; they are adapted automatically foreach instance.

8.5 OTHER SETTINGS
8.5.1 Grid Spacing & Subdivision
The points defining the outlines are placed on a grid, and theGrid Spacing defines how the coordinates of the points are

Font Info

Glyphs 3 Handbook, October 2021

122

Contrary to popular belief,
decimal coordinates can beexported into CFF-flavor(PostScript) fonts.

rounded. The default value of a grid spacing of 1 rounds points tofont units. For example, (3.142, 7.816) is rounded to (3, 7). A valueof 5 rounds points to the nearest factor of 5; consequently(3.142, 7.816) is now rounded to (5, 10). Finally, a value of 0 does
not round points and maintains (3.142, 7.816) as it is. Disablingrounding can be helpful for highly detailed designs such as
ornaments or when glyphs are scaled to a new size. Higher values
are useful in coarse designs such as pixel fonts.
All tools and modifications snap to the grid. Choose Path →Round Coordinates to round all selected points to the grid.
Use a Subdivision value above 1 to offer finer control while
keeping a large grid spacing for the design coordinates. For
example, a Grid Spacing of 100 and a Subdivision of 5 places
points on a 20 unit subgrid. A default Grid Spacing of 1 with a
Subdivision of 10 gives point coordinates one decimal point, suchas (3.1, 7.8).
8.5.2 Keyboard Increments
Many places in Glyphs allow modifying values with the arrow
keys. For example, points can be moved in Edit View, or numericvalues in text fields can be incremented and decremented using
the Up and Down arrow keys. Values are modified by 10 units
when holding down the Shift key and by 100 units when holding
down the Command key. Adjust the Shift and Command values
as desired.
8.5.3 Use Custom Naming
Select the Use Custom Naming option to use custom glyph
names that do not conform to the names from the built-in glyph
database. Enable this option for workflows using custom glyph
names, thus preventing the automatic replacement of names.
Deactivating the Use Custom Naming option will not
immediately rename the glyphs of the font. Instead, choose
Glyph → Update Glyph Info to update the properties, including
the glyph name, of all selected glyphs. Note that it may invalidate
imported or manually written feature code, which will require
manual code adjustments.
When importing OpenType fonts or UFO sources, glyph
names are either kept or modified to conform with the built-in
glyph database. Go to Preferences → User Settings to change thesetting of the option Keep Glyph Names from Imported Files (seeFont Info

Glyphs 3 Handbook, October 2021123

section 3.3, ‘User Settings’, p. 15).
8.5.4 Disable Automatic Alignment
This option disables the automatic alignment of components andthe automatic synchronization of metrics for composite glyphs
such as diacritics. Lock the position of individual components bychoosing Lock Component from the context menu in Edit View.
Go to Glyphs → Preferences… → User Settings → Disable
Automatic Alignment for Imported Files for the setting ofimported files (see section 3.3, ‘User Settings’, p. 15). See also
section 9.1.8, ‘Automatic Alignment’ (p. 130).
8.5.5 Keep Alternates Next to Base Glyph
Select Keep Alternates Next to Base Glyphs to sort glyph variants
with a dot suffix name directly after the base glyph without the
dot suffix. For example, a.ss15, a.alt, and a.loclDEU will follow
the a glyph instead of being placed after all baselowercase letters.
8.5.6 File Format Version
The format of a Glyphs file changed slightly from Glyphs 2 toGlyphs 3. For compatibility, Glyphs 3 can read and write the old
Glyphs 2 file format.
When working on a Glyphs file created in Glyphs 2, Glyphs 3
will import it as a version 2 file. Some of the features new in
Glyphs 3 cannot be stored in version 2 format files. Use all
Glyphs features by changing this setting to Version 3. New
Glyphs files are always created in version 3 format.

8.6 NOTESThe Notes tab in Font View stores a text note. It is not exported
and is used only for working in Glyphs. The font notecorresponds to the ‘note’ custom parameter of the font.
The text field uses syntax highlighting for Markdown. Italic(*italic*, _italic_), bold (**bold**, __bold__), hyperlinks ([Link
Text](https://example.org) & <https://example.org>), and heading(#, ##, ###, ####, #####, ######) formatting are supported.

Font Info

Glyphs 3 Handbook, October 2021

124

Font Info

Glyphs 3 Handbook, October 2021

125

9 Reusing Shapes
9.1 COMPONENTS
Components are glyphs that are being used inside other glyphs.
They allow shapes to be replicated across a font. For example,
the A glyph can be reused to build the Ä, À, Â, Ã, Å, and many
more glyphs. Diacritics like ◌̈, ◌̀, ◌̂, ◌̃, and ◌̊ can also be used ascomponents so that other characters like Ö, È, Ĉ, Ñ, Ů, and many
more can be formed.
The original glyph from which a component is derived isreferred to as the base glyph of the component. A glyph that isbuilt out of components is referred to as a compound orcomposite glyph. Changing a base glyph also changes all of its
copies as a component. When changing a base glyph in
Edit View, all related components will update live to reflect the
newly made changes.
On export, components are decomposed to paths for CFF and
TrueType flavor fonts with the Remove Overlaps option selected.
TrueType flavor fonts without Remove Overlaps (such as variable
fonts) keep non-overlapping components while decomposing
overlapping components. Set the ‘Keep Overlapping
Components’ custom parameter on an instance to also keep
overlapping components in TrueType flavor fonts.
9.1.1 Building Composites
When adding a new composite glyph, Glyphs will automatically
add the necessary components. For example, adding an eacute(é) glyph to a font will automatically build it with an e component
and an acutecomb (◌́) component. Glyphs uses the glyph info
database (see p. 96) to figure out which components to insert
into which glyphs. This automatic insertion does not work if anyof the required components do not exist in the font.
Convert an existing glyph to a composite by choosing Glyph →Create Composite (Cmd-Ctrl-C). This command will replace allpaths and components already present on the current layer. Holddown the Option key to apply the command to all masters of theglyph (Cmd-Ctrl-Opt-C).
Add components by name by choosing Glyph → Add
Component (Cmd-Shift-C). Hold down Option to add thecomponent on all masters (Cmd-Opt-Shift-C). The component

Glyphs 3 Handbook, October 2021

126

picker works the same as the glyph picker used to insert glyphs in
Edit View. See section 4.9.3, ‘Text Tool’ (p. 46) for details.
9.1.2 Turning Paths into Components
Create a new component by selecting paths and components
on a glyph layer and choosing Component from Selection fromthe context menu or the Glyph menu. A dialog window appears,
prompting for the glyph name of the new component. Glyphs
will suggest a component name based on context, but the namecan be changed to any other name as well. Prefix the name of acomponent with an underscore (_) if the component should only
be used inside the Glyphs file and not be part of the exported
glyphs. See also the exports glyph property (see p. 110).
Confirm the dialog with OK. Glyphs adds the newly createdcomponent to the current Edit View tab and activates it. The
previously selected shapes will be replaced by the component.
9.1.3 Recipes

When adding glyphs to a font using Glyph → Add Glyphs…,
recipes can be used to define which components should be used
in which glyphs. A recipe is a formula of glyph names that is used
to create a new glyph. The following recipe formulas can be used:component = glyph , for example, ‘Eth=Dtail’, which adds the
Dtail glyph with the Eth as a single component.
base + mark = glyph , for example, ‘x+acutecomb=xacute’,
which adds multiple components (separated by a plus sign) to a
new glyph. The mark glyphs are automatically aligned to the baseglyph using anchors.
base + base = glyph , for example, ‘d+ezh.connect=dezh’.
Adding multiple base components to a glyph can be useful whenbuilding ligatures.

Reusing Shapes

Glyphs 3 Handbook, October 2021

127

9.1.4 Editing Components
Click to select a component. When dragging with the Selecttool, components are ignored unless the Option key is held
down. Press the Tab key to select the next component or
Shift-Tab to select the previous one. When paths are present on alayer, the first Edit → Select All (Cmd-A) selects paths only. Press
Cmd-A once again to also select all components on the layer.

With one or multiple components selected, a component
Info box appears next to the glyph Info box. See section 4.10.1,‘Info box’ (p. 47) for details on the component Info box.
Transform components using the Info box, the bounding box(see p. 26), or the Palette (see p. 62). Flipping a component
vertically switches its ‘top’ and ‘bottom’ anchors to be again on
top and bottom of the component. This anchor switch is helpful,for example, when building the gcommaaccent (ģ) from a g and aflipped commaaccentcomb (◌̦).
Move a selected component with the mouse or the arrow keys.
Auto-aligned components can either be moved along the verticalaxis or not at all. See section 9.1.8, ‘Automatic Alignment’ (p. 130)for details. When moving with the arrow keys, hold down Shiftfor increments of 10 and Command for increments of 100.
Option-drag a component to duplicate it. Delete all selectedcomponents by pressing the Delete key.
9.1.5 Moving between Base Glyphs and Composites
Double-click a component to edit its glyph. The component
glyph will be placed next to the composite glyph in Edit View andactivated for immediate editing. Alternatively, click the arrow
button located in the top-left of the component Info box to edit
its glyph. (For the Info box to be shown, the component must be
selected and View → Show Info must be checked.)Show all glyphs that use the current glyph as a component by
Control-clicking or right-clicking the canvas and choose Show all
glyphs that use this glyph as a component from the context menu.

Reusing Shapes

Glyphs 3 Handbook, October 2021

128

9.1.6 Component Placeholders
Component placeholders indicate a problem with a component.
There are three types of problems.

An empty base glyph placeholder is shown if the glyph layer of acomponent is empty. Remove the component or fill theglyph layer.
When no base glyph is shown, the component references a
glyph that does not exist (or no longer exists). Remove thecomponent or add the referenced glyph to the font. Click theplaceholder to see the referenced glyph name in the Info box(Cmd-Shift-I).
A bad reference indicates a circular reference, where thecomponent contains a composite glyph that contains thatcomponent.
9.1.7 Anchors
Glyphs uses anchors for OpenType features (such as
mark-to-base positioning and cursive attachment, see section 4.4,
‘Anchors’, p. 34) and for arranging components. In many cases,
the same anchors can be used for both features and for arranging
components.
Unicode defines base characters like S (U+0053), andcombining marks like ◌̌ (U+030C). Typing a base character
followed by a combining mark will place the mark on the baseglyph using the anchors. But Unicode also contains precomposedcharacters like Š (U+0160). Glyphs for these characters can bebuilt by using the base and mark glyphs as components.
For example, a mark component with a ‘_top’ anchor snaps
onto the ‘top’ anchor of a base component just like mark-to-basepositioning would place a mark glyph atop a base glyph. See
section 4.4.1, ‘Adding, Editing, and Removing Anchors’ (p. 35) for
general information on working with anchors.
In some situations, a component might need multiple anchorsof the same type. For example, it is common to use suchalternative ‘top’ anchors for Vietnamese diacritics. Alternativeanchors share the name of the original anchor but use anunderscore suffix for differentiation. So, there might be a ‘top’

Reusing Shapes

Glyphs 3 Handbook, October 2021

129and a ‘top_alt’ or ‘top_viet’ anchor on the same glyph layer. The
suffix after the underscore can be chosen freely.

Switch between anchors by selecting an attached component
and pick a different anchor from themenu in the component
Info box. Show the Info box with View → Show Info (Cmd-Shift-I).
The anchor icon is only visible if multiple anchors are available.
9.1.8 Automatic Alignment
Glyphs built entirely from components are called composite orcompound glyphs and can use automatic alignment to keep their
metrics in sync with their base glyph. For example, changing theleft sidebearing of the U glyph would automatically adjust theglyphs Ú, Ù, Ŭ, Ü, Ū, and all other composite glyphs built with the
U component.
Automatic alignment is enabled by default if a glyph layer
contains only component shapes (no path shapes). Control-clickor right-click an auto-aligned component and choose Disable
Automatic Alignment from the context menu to place thecomponents manually. Choose Enable Automatic Alignment
from the context menu on a component to enable it again.
Automatic alignment can also be disabled for the entire font inFile → Font Info… → Other → Disable Automatic Alignment. See
also section 8.5.4, ‘Disable Automatic Alignment’ (p. 124).
Auto-aligned components are shown in green to differentiatethem from normal, gray components. If a component has thecategory Number (for example, the glyphs zero–nine) and it is the
only component in a composite glyph, it is shown in blue and canbe shifted vertically while staying auto-aligned horizontally.
Metrics keys cannot be used for auto-aligned composite
glyphs since the sidebearings are derived from the basecomponents. There is one exception: auto-aligned composite
glyphs can add to and remove from the automatic sidebearing
values using the =+ and =- operators. For more information, seesection 10.1.4, ‘Metrics Keys and Automatic Alignment’ (p. 148).
Automatic alignment is typically for single components, a baseReusing Shapes

Glyphs 3 Handbook, October 2021

130

component with one or more mark components, or multiple basecomponents. These three setups are described in more detail in
the following sections.
Single Component
A composite glyph may use a single auto-aligned component.
This setup is helpful for glyphs that look the same but should still
be encoded as two separate glyphs. That might be the case withGreek, Latin, and Cyrillic capital letters sharing the same outlines,
such as Alpha/A/A-cy, Beta/B/Ve-cy, and Rho/P/Er-cy. These
glyphs belong to different scripts and may use separate kerninggroups, so they should be encoded as separate glyphs instead ofa single glyph with multiple Unicode values.
A single component might also be handy when constructing
the glyph nine as a flipped six. As mentioned above, such acomponent will be shown in blue and can be shifted verticallywhile keeping the automatic horizontal alignment.
Punctuation marks such as ‹ and ›, ¿ and ?, { and }, and arrows
such as ← and → can also often be built from a single flippedcomponent.
Base Component & Mark Components
Build precomposed glyphs such as Ú, Ù, Ŭ, Ü, Ū from a basecomponent (U in this case) and diacritical marks. First, add thebase component, followed by combining mark components. For
example, for Uacute (Ú), add the U component and then theacutecomb (◌́) component. If the glyph is known to the glyph
info database—as is the case with Uacute—choose Glyph → Create
Composite (Cmd-Ctrl-C), and all required components will be
added in the correct order.
Use anchors to place marks atop, below, or over the basecomponent. See section 9.1.7, ‘Anchors’ (p. 129) for details. When
adding multiple combining marks to a composite glyph, marks
stack in the order in which they are added. For this to work, markglyphs need to contain both a base attachment anchor (such as‘_top’) and a mark attachment anchor (such as ‘top’). Rearrange
marks using the Shape Order filter (see section 6.2.1, ‘ShapeOrder’, p. 68).
Mark components positioned with anchors do not affect the
sidebearings of the composite glyph. For example, placing a

Reusing Shapes

Glyphs 3 Handbook, October 2021

131

macroncomb (◌̄) atop an idotless (ı) may result in the macron
reaching outside the glyph box of the imacron (ī). In such a case,either design a narrower macron and use that for the imacron or
add additional space to the sidebearings of the composite glyph(see section 10.1.4, ‘Metrics Keys and Automatic
Alignment’, p. 148).
See the Diacritics tutorial¹ for a guided introduction to
working with diacritics.
Multiple Base Components
A composite glyph may also contain multiple base components.
They are placed next to each other as if they were typed together.
Combining marks can be placed on each one of the basecomponents individually; place a base component first, then all of
its marks, then the next base component followed by its marks.
Adding multiple base components to a composite glyph ishandy when building ligature glyphs. Using components forligatures is particularly helpful for scripts like Arabic that makeextensive use of ligatures.
Base components can be connected using the same anchorsthat are used for cursive attachment (see p. 36). This technique
can build an n glyph from a _part.stem and a _part.archcomponent, where the _part.stem has an ‘#exit’ anchor and_part.arch has an ‘#entry’ anchor. Add both components to the nglyph, and they will connect such that the exit and entry anchors
overlap. Add an ‘#exit’ anchor to the _part.arch to build an mcomposite glyph from a _part.stem and two _part.archcomponents. See section 9.1.14, ‘Underscore Components’(p. 134) for details on working with components with a namebeginning with an underscore.
9.1.9 Locking Components
Lock components that are not automatically aligned byControl-clicking or right-clicking it and choosing Lock
Component from the context menu. Locked components cannot
be moved. Unlock a component by choosing Unlock Component
from the context menu.

1 glyphsapp.com/learn/diacritics

Reusing Shapes

Glyphs 3 Handbook, October 2021

132

9.1.10 Decomposing
Convert all components inside a glyph to paths by choosing
Glyph → Decompose Glyph (Cmd-Shift-D). All components,
including all nested components, will be decomposed into theirpaths and anchors.
Choose Decompose from the context menu on a component
to only decompose the selected components. In this case, nested
components will not be decomposed.
9.1.11 Combining Paths and Components
As soon as there is a path on a layer, automatic alignment isdisabled. Therefore, be careful when combining components andpaths because shifts may occur, especially if the base glyph of thecomponent is changed. Instead, consider building the glyph fromcomponents only and connecting them with anchors as outlined
in section 9.1.7, ‘Anchors’ (p. 129), thus enabling automaticalignment. Consider defining glyphs as non-exporting if they are
only ever used as parts of other glyphs. See section 9.1.14,‘Underscore Components’ (p. 134) and section 9.2, ‘Smart
Components’ (p. 134) for working with non-exporting
components.
When dragging an element, such as a node or an anchor, thenodes inside components are highlighted. Dragging an element
near such a highlighted point snaps it to the position.
Choosing Path → Align Selection (Cmd-Shift-A) while exactly
one point and one component are selected will align the origin
point of the component to the selected node. The node keeps its
position. The origin point is where the baseline crosses the left
sidebearing if the italic angle is zero. If the component glyphcontains an ‘origin’ anchor, it is used as the origin
position instead.
9.1.12 Nesting Components
Glyphs allows components to be nested. For example, thedieresiscomb (◌̈) can be built from two dotaccentcomb (◌̇)
components and also be used as a component in glyphs such asedieresis (ë).
‘top’ and ‘bottom’ anchors propagate from a component to
the glyph in which the component is placed. For example,
consider a glyph E that has a ‘bottom’ anchor. When a composite
glyph, like Edieresis (Ë), uses E as a component, it inherits theReusing Shapes

Glyphs 3 Handbook, October 2021

133‘bottom’ anchor from the E. That way, bottom marks such as
circumflexbelowcomb (◌̭) can attach to the bottom of Edieresis,
even though it itself does not contain a ‘bottom’ anchor.
Propagated anchors are overwritten by anchors in the composite
glyph. Continuing the example, if the Edieresis glyph had its own‘bottom’ anchor, then that would overwrite the ‘bottom’ anchor
of the E component.
Add a ‘Propagate Anchors’ custom parameter to the Font tab
in File → Font Info… with its checkbox unselected to prevent
anchor propagation.
9.1.13 Preferred Marks for Glyph Composition
When automatically building composites, Glyphs prefers marks
with the same name suffix as the composite. For instance, when
composing agrave.sc, Glyphs prefers a mark glyph named
gravecomb.sc over gravecomb if such a glyph exists. Whenbuilding uppercase letters, marks with a ‘.case’ suffix are
preferred. For example, when building the Agrave glyph, Glyphs
will use the mark gravecomb.case over gravecomb, if it exists.
This is helpful when the ‘.case’ diacritical marks are flattened toaccommodate the limited vertical space available in theuppercase letters. The glyphs i and j are built from idotless andjdotless with a dotaccentcomb. When building composite glyphs
based on i and j—such as imacron (ī) or jcircumflex (ĵ)—Glyphs
prefers mark glyphs ending in ‘.i’ or ‘.narrow’.
9.1.14 Underscore Components
By default, a glyph whose name starts with an underscore is notexported. This allows for glyphs solely used as components inother glyphs. Such glyphs might help to create ligature glyphs.
For example, both glyphs fl and f_f could use an _f.connect
component for the first f.

9.2 SMART COMPONENTS
Smart components allow for variation of design properties within
a single component glyph. Each smart component can have its
own set of variation properties such as width, height, angle,
roundness, or any other arbitrary design feature that can varyalong an axis. In this way, smart components work like multiple
masters or a variable font, but with the variation axes exclusive to
a component.

Reusing Shapes

Glyphs 3 Handbook, October 2021

134

Smart components were initially designed for Asian scripts,
where shapes are frequently reused with slight modifications,such as the strokes in CJK fonts or the components of the
Tibetan script. This concept—reusable components with property
variations—has proven useful for various scripts and glyphs.
9.2.1 Setting up Smart Glyphs
The glyph of a smart component is called a smart glyph. All CJK
radical and Korean base glyphs are smart glyphs. In addition, allglyphs with a name starting with ‘_smart.’ or ‘_part.’ aresmart glyphs.
The different forms of a smart glyph (for example, Narrow and
Wide or Sharp and Rounded) are placed on smart layers. Clickthe plus
button in the bottom-left of the Layers palette tocreate a new layer. New layers are named after the current date
and time, but that is not a good description for a smart layer.
Double-click the smart layer name and change it to a more
descriptive one such as ‘Narrow’, ‘Low Contrast’, ‘Small’, or any
other name that best describes the variation. For instance, for a_part.arrow glyph with a Width property, draw a normal arrow on
the Regular master layer and a long version of the arrow on an
additional layer aptly named ‘Long’. Note that smart layers need
to be compatible with the master layer. For more on layercompatibility, see section 13.5, ‘Outline Compatibility’ (p. 189).
Smart glyph properties control how the smart component
interpolates between the different layers. Add a property by
opening the Smart Glyph Settings with Edit → Info For Selection(Cmd-Opt-I) or by choosing Show Smart Glyph Settings from thecomponent context menu. It is split into two tabs: Properties
and Layers.
Smart Glyph Properties Settings
Create a new property by clicking the plus
button located in
the bottom-left of the Properties tab. Smart glyph properties are
similar to font axes. They have a name as well as minimum andmaximum values. The name can be chosen freely and may beunrelated to the layer names or axes names of the font. The
names ‘Width’ and ‘Height’ have a special meaning; seesection 9.2.3, ‘Width & Height Properties’ (p. 137) for details.
The minimum and maximum values can be any number range,
but the minimum needs to be less than the maximum. Values canReusing Shapes

Glyphs 3 Handbook, October 2021

135

be negative. The default range of 0–100 works well for abstract
properties such as ‘Contrast’ or ‘Curviness’. If the variation
property is less abstract and related instead to font units—such as‘Height’ or ‘Descender Depth’—consider using measurements as
minimum and maximum values. Continuing the _part.arrow
example, if the normal arrow is 445 units wide and the arrow onthe ‘Long’ layer is 645 units wide, add a ‘Width’ property with aminimum of 445 and a maximum of 645.
Note that smart components can be interpolated andextrapolated. This allows the usage of values below the minimum
and above the maximum. For example, a _part.arrow component
with a ‘Width’ property ranging from 445 to 645 can also be usedwith a ‘Width’ value of 210 or 936. Extrapolation works well for
simple variations such as the tail of an arrow getting longer andshorter but might produce less desirable results for more
complex smart components such as the arch of an n getting
wider and narrower.
Use a minimum of 0 and a maximum of 1 for properties thatshould not interpolate and instead only be used as an
on/off toggle.
Smart Glyph Layers Settings
The Layers tab connects smart properties with smart layers. The
sidebar shows all smart layers of the glyph. Select a layer and set
whether it belongs to the minimum or maximum value. If a layer
is unrelated to a property, do not check any of the two values. For
instance, for a glyph with two layers—‘Regular’ and ‘Long’—and a‘Width’ property, check the minimum Width value for the Regularlayer and the maximum Width value for the Long layer.
A setup with multiple properties does not require a layer at all
extremes. For example, a smart glyph with two
properties—‘Width’ (range 640–1250) and ‘Height’ (range
80–360)—only requires the following three layers:
Regular
Wide
Tall

Width
640
1250
640

Height8080360

Note that a layer at both maximum values (Width of 1256 andHeight of 360) is not required. Glyphs infers it from the Wide andReusing Shapes

Glyphs 3 Handbook, October 2021

136

Tall layers. Consider adding a layer at both extremes only if theinferred outlines are not as desired.
9.2.2 Using Smart Components
Add a smart component like any other component (as describedin section 9.1.1, ‘Building Composites’, p. 126). A smart component
is indicated by a Smart badge in its Info box.
If the Info box is not visible, select the smart component andcheck View → Show Info (Cmd-Shift-I). Click the Smart badge in
the Info box or choose Edit → Info for Selection (Cmd-Opt-I) to
configure the selected smart components. If the Palette is visible(Window → Palette) and View → Show Info is checked, the smart
component settings are also visible at the bottom of the Palette.
Use the slider
to set the setting of a property
anywhere from the minimum to the maximum value. Use thenumber field to input any value, which might also extrapolate
beyond the minimum and maximum values. If the min/max
values are 0/1, a checkbox
is displayed instead.
!

9.2.3 Width & Height Properties
Name smart glyph properties ‘Width’ or ‘Height’ (with a capitalletter) to control them with the bounding box. Select View →Show Bounding Box (Cmd-Opt-Shift-B) and click on a smart
component to show its bounding box. Resizing the bounding box
horizontally changes the ‘Width’ property; resizing verticallychanges the ‘Height’ property. Resizing the bounding box is
impossible for a smart component with neither a Width nor a
Height property.
9.2.4 Smart Handles
Smart handles allow properties to be modified using control
handles placed on the smart glyph. Place an anchor with thename of a smart glyph property on every smart glyph layer. The
anchor names must match the name of the property exactly,
including capitalization. On smart glyph layers affecting theproperty, move the anchor to match the modified outlines. Theseanchors do not need to be added for all properties.
When using the smart glyph as a component, gray handles willappear when the component is selected. Click and drag a handle
to change its property value.

Reusing Shapes

Glyphs 3 Handbook, October 2021

137

9.3 CORNER COMPONENTS
Corner components are open paths that can be fitted to thecorners of a path. The main usage of corner components is
adding serifs to stems, but they can also be used in othercircumstances.
9.3.1 Creating Corner Glyphs
The name of a corner glyph starts with ‘_corner.’ followed by anarbitrary corner name, for example, ‘_corner.serifLeft’. A corner
glyph contains an open path drawn, flanking the layer origin atcoordinates (0, 0). If an anchor named ‘origin’ is placed on thelayer, it is used as the origin point.
The open path of the corner component should follow thesame direction as it would if it were part of a stem. Typically, thestart node of the path is placed on the same vertical or horizontal
axis as the origin point. The relative position of the end node
defines the direction in which the corner expands. For example,
place the end node to the right of the origin if the corner should
expand to the left of the stem.
The corner will extend in the wrong direction (for example, tothe bottom instead of to the left) if the path direction is not set
correctly. Fix the path direction by choosing Path → Correct Path
Direction (Cmd-Shift-R), or hold down the Option key to apply
the command to all masters (Cmd-Opt-Shift-R).
Optionally, a ‘left’ or ‘right’ anchor can be added to the corner
glyph. These anchors control the fitting when adding corners todiagonal stems. Use a ‘left’ anchor for left-facing corners and a‘right’ anchor for right-facing corners. Place the anchor between
the origin and the start node of the open path (or beyond thestart node for extreme changes to the fitting). If no ‘left’ or ‘right’anchor is used, Glyphs assumes its position at the origin.
9.3.2 Using Corner Components
Add a corner component to a node in another glyph by selecting
the node and choosing Add Corner Component from the context
menu. A glyph picker will open, showing only corner glyphs.
Search for the desired corner and insert it by pressing Return.
Press Escape to not add a corner.
In Edit View, a corner component is highlighted with a subtle
blue background. Click on a corner component to select it.
Shift-click to select multiple corners. A selected corner can be

Reusing Shapes

Glyphs 3 Handbook, October 2021

138

copied with Edit → Copy (Cmd-C) and pasted onto other nodes
with Edit → Paste (Cmd-V). Press the Delete key to remove theselected corner components. Control-click or right-click a cornerand choose Decompose Corner to replace the component by its
path. Select a corner component to view its Info box. (View →Show Info, Cmd-Shift-I, also needs to be selected.)
Click the component name in the Info box to replace it with adifferent component. Click the arrow button to add andactivate the corner glyph in Edit View. Use the � horizontal and� vertical scale fields to change the size of the corner. This might
be useful for increasing the size of serifs for capital letters or
reducing it for small caps. Negative values (such as ‘-100’) may
be used to flip the component. This allows a bottom-left serif tobe reused on the top-left, the bottom-right, and the top-right.
The mirror buttons from the Palette (see p. 62) can also be used
to flip corner components.
Corner components can be attached to vertical paths. In thatcase, choose one of the four alignment modes in the Info box:
The left arrow aligns the start node to the diagonal while theend node of the corner stays put. This mode is typically used forbottom-left and top-right serifs.
The right arrow aligns the end node to the diagonal while thestart node of the corner stays put. This mode is typically used forbottom-right and top-left serifs.
The left-right arrow is a blend of the left and right alignment.
This mode is typically used for ink-traps and similar corners.
The
x-mark does not align the start or end node to
the diagonal.
9.3.3 Extra Nodes
Choose View → Show Nodes → Extra Nodes to show the nodes
located on the intersections of overlapping paths. These extra
nodes can also receive corner components. Attach a cornercomponent to an extra node from the context menu with Add
Corner Component.
Use corner components on extra nodes for smooth transitions
between stems and crossbars or to add ink traps to pathintersections.

Reusing Shapes

Glyphs 3 Handbook, October 2021

139

9.4 CAP COMPONENTS
Cap components attach to two nodes, unlike corner components(see p. 138), which attach to a single node. The two nodes need tobe next to each other on the same path. Use cap components forspurs, terminals, flag serifs, and other shapes that appear at theend of strokes.
9.4.1 Creating Cap Glyphs
The name of a cap glyph starts with ‘_cap.’ followed by anarbitrary cap name, for example, ‘_cap.strokeend’. A cap glyphcontains an open path drawn relative to the layer origin atcoordinates (0, 0). If an anchor named ‘origin’ is placed on thelayer, it is used as the origin point.
Cap components need to contain two anchors, ‘node1’ and‘node2’. These anchors will be attached to two nodes on thereceiving glyph. Typically, the two anchors are both placed
horizontally or vertically so that the component can attach to two
horizontal or vertical nodes. The cap component uses the
direction of the receiving path to match ‘node1’ to the first nodeand ‘node2’ to the second node.
9.4.2 Using Cap Components
Attach a cap component to two adjacent nodes of the same pathby selecting them and choosing Add Cap Component from thecontext menu. A glyph picker will open, showing only cap glyphs.
Search for the desired cap and insert it by pressing Return. Press
Escape to not add a cap.
In Edit View, a cap component is highlighted with a subtle
blue background. Click on a cap component to select it.
Shift-click to select multiple caps. A selected cap can be copiedwith Edit → Copy (Cmd-C) and pasted onto other segments with
Edit → Paste (Cmd-V). Press the Delete key to remove theselected cap components. Control-click or right-click a cap andchoose Decompose Cap to replace the component by its path.
Select a cap component to view its Info box. (View → Show Info,
Cmd-Shift-I, also needs to be selected.)
Check the Fit checkbox to automatically match the size of thecap to the size of the stroke to which it is attached. Cap
components can be replaced, transformed, and aligned likecorner components. See section 9.3.2, ‘Using Corner
Components’ (p. 138) for details.

Reusing Shapes

Glyphs 3 Handbook, October 2021

140

9.5 SEGMENT COMPONENTS
Segment components apply an open path to straight or curved
segments. The open path can be a single bend segment or amore complex path containing many nodes and curves.
Glyphs will not add additional nodes when bending a segmentcomponent to fit a curve segment. This may reduce the accuracy
with which the component follows the curvature of the segment.
However, it ensures that the number of nodes stays the sameacross masters, allowing interpolation for multiple masters andvariable fonts.
9.5.1 Creating Segment Glyphs
The name of a segment glyph starts with ‘_segment.’ followed byan arbitrary segment name, for example, ‘_segment.bend’. A
segment component contains an open path along the baseline
and two anchors, ‘start’ and ‘end’. Choose Glyph → Set Anchors(Cmd-U) to place these anchors at the start and end nodes of theopen path. If the ‘start’ and ‘end’ anchors are not placed on thestart and end nodes of the path, then the segment component
will not match the length of the segment it is applied to.
The start and end nodes of the path should be on the baselineor have both the same distance from the baseline.
9.5.2 Using Segment Components
Select a path segment by clicking it or by selecting both of its
nodes, then choose Add Segment Component from the context
menu. A glyph picker will open, showing only segment glyphs.
Search for the desired segment and insert it by pressing Return.
Press Escape to not add a segment component.
In Edit View, a segment component is highlighted with asubtle blue background. Click on a segment component to selectit. Shift-click to select multiple segments. A selected segment canbe copied with Edit → Copy (Cmd-C) and pasted onto othersegments with Edit → Paste (Cmd-V). Press the Delete key toremove the selected segment components. Control-click orright-click a segment and choose Decompose Segment
Component to replace the component by its path. Select asegment component to view its Info box. (View → Show Info,
Cmd-Shift-I, also needs to be selected.)
Click the component name in the Info box to replace it with adifferent component. Click the arrow button to add andReusing Shapes

Glyphs 3 Handbook, October 2021

141

activate the segment glyph in Edit View.

9.6 BRUSHESBrushes expand path segments using custom outlines. A brushcan be applied to straight and curved path segments and is mostuseful when applied to open paths.
9.6.1 Creating Brush Glyphs
The name of a brush glyph starts with ‘_brush.’ followed by anarbitrary brush name, for example, ‘_brush.arrow’. A brush glyphcontains a single closed path and two anchors, ‘start’ and ‘end’.
Choose Glyph → Set Anchors (Cmd-U) to place anchors on theleft and right of the layer. Typically, the two anchors are placedon the baseline or have both the same distance to the baseline.
A brush glyph may contain only one single closed path. Use
Path → Remove Overlap (Cmd-Shift-O) to merge multiple closed
paths to a single path. For example, a _brush.arrow glyph might
contain the shape of a rightward pointing arrow. Place the ‘start’and ‘end’ anchors such that the part of the brush that stretches
and curves is in between the two anchors. Place non-stretchingand non-curving parts of the brush before the ‘start’ and after the‘end’ anchor, like this:Parts of the brush that should bend when following a curve
segment need handles, as shown in the image above. Add
handles to a segment by Option-clicking it.
9.6.2 Using Brushes
Select a path segment by clicking it or selecting both of its nodes
and choose Add Brush from the context menu. A glyph picker will
open, showing brush glyphs only. Search for the desired brushand insert it by pressing Return. Press Escape to not add a brush.
Typically, brushes are applied to open paths consisting of asingle segment. Brushes can be added to multiple segments byselecting more than one segment before choosing Add Brush. If
nodes are selected, choosing Add Brush will add brushes suchthat the selected nodes are the end nodes of the new brushes.
A brush is highlighted with a subtle blue background. Click on
the outline of a brush to select it. Shift-click to select multiple
brushes. A selected brush can be copied with Edit → Copy
(Cmd-C) and pasted onto other segments with Edit → Paste(Cmd-V). Press the Delete key to remove the selected brushes.

Reusing Shapes

Glyphs 3 Handbook, October 2021

142

Control-click or right-click a brush and choose Decompose
Brush to replace the component by its path. Select a brush toview its Info box. (View → Show Info, Cmd-Shift-I, also needs tobe selected.)
Click the component name in the Info box to replace it with adifferent component. Click the arrow button to add andactivate the brush glyph in Edit View.

9.7 PIXEL TOOLThe Pixel tool (shortcut X, Shift-B if the Pencil tool is selected)
draws pixel components. Use the pixel tool to create pixel fonts
and pixel symbols.
9.7.1 Setup
The Pixel tool requires a grid spacing of 2 or above. Change it inFile → Font Info… → Other → Grid Spacing. See section 8.5.1, ‘Grid
Spacing & Subdivision’ (p. 122) for details.
The Pixel tool uses the glyph named ‘pixel’ to draw pixels
when clicking and dragging in Edit View. If the glyph named
pixel is not already in the font, Glyphs will offer to add it upon aclick with the Pixel tool:

Click Add to create the pixel glyph. By default, the pixel glyph isa square of the same size as the grid spacing.
9.7.2 Drawing Pixels
Select the Pixel tool, click once, and add a pixel component on
the canvas. Click again to remove the pixel. Click and drag themouse to add multiple pixels. Start to drag on a pixel already inplace to remove pixels while dragging.

Reusing Shapes

Glyphs 3 Handbook, October 2021

143

9.7.3 Pixel ShapeThe pixel glyph can be modified to contain any arbitrary shape.
Reduce the grid spacing to a lower number (for example, thedefault of 1) to draw path segments smaller than a pixel. For
instance, the pixel can be an x-markfor a stitch effect.
Increase the grid spacing again when using the Pixel tool.

Reusing Shapes

Glyphs 3 Handbook, October 2021

144

10 Spacing & Kerning
The space between glyphs is controlled by their spacing andkerning. Spacing defines the general white space surrounding a
glyph while kerning makes adjustments to specific glyph pairs.

10.1 SPACING
Spacing is the process of adjusting the sidebearings of glyphs toachieve an even rhythm in a line of text. There are no fixed rules
for how large or small the sidebearings of a glyph should be. The
amount of spacing depends on the style of the font and the scriptof the glyphs. In general, glyphs that share similar shapes sharesimilar sidebearing values. For example, the left sidebearing of
the Latin K is usually the same as the left sidebearing of the Latin
H, while the right sidebearing of the Latin D and the Latin O
should be the same or similar.
When the Text tool is active and View → Show Metrics(Cmd-Shift-M) is checked, the sidebearing values and widths of
all glyphs are displayed:
10.1.1 Info box
The Info box (View → Show Info, Cmd-Shift-I) shows the
sidebearings of the current glyph. In text mode, the current glyphis placed after the text cursor. For left to right and right to left
scripts, the sidebearing values are shown to the left and right ofthemetrics icon in the center of the Info box:
For a top to bottom script, the Info box shows the top andbottom sidebearings next to the T and B:

Use the Up and Down arrow keys to increase and decrease avalue in the Info box. Hold down Shift for steps of 10 and both
Shift and Command for steps of 100.
Editing sidebearings in the Info box can be handy for quick
adjustments. When editing the spacing of many glyphs, consider
using the spacing shortcuts.

Glyphs 3 Handbook, October 2021

145

10.1.2 Spacing Shortcuts
Mnemonic: the Control key islocated on the left, and theCommand key is on the right.
Control: left sidebearing.
Command: right sidebearing.

Spacing shortcuts can be used with the Text tool to change thesidebearings of the current glyph. Hold down the Control key tochange the left sidebearing (LSB) with the Left Arrow and Right
Arrow keys (⌃⯇ and ⌃⯈). Hold down the Command key tochange the right sidebearing (RSB) with the Left Arrow and Right
Arrow keys (⌘⯇ and ⌘⯈). Hold down Shift for steps of 10.
Ctrl-Leftincrease spacing on left side

Ctrl-Shift-Leftincrease spacing on left side by 10 units

Ctrl-Rightdecrease spacing on left side

Ctrl-Shift-Rightdecrease spacing on left side by 10 units

Cmd-Right

increase spacing on right side

Cmd-Shift-Right increase spacing on right side by 10 units
Cmd-Leftdecrease spacing on right side

Cmd-Shift-Leftdecrease spacing on right side by 10 units

When both the Control and Command keys are held down,
the LSB and RSB are changed simultaneously, shifting the glyph
inside its width. This is particularly useful in monospaced designs,
where the width of the glyph cannot be changed.
Cmd-Ctrl-Left

shift glyph outline left

Cmd-Ctrl-Shift-Left

shift glyph outline left by 10 units

Cmd-Ctrl-Right

shift glyph outline right

Cmd-Ctrl-Shift-Right shift glyph outline right by 10 units
The Control and arrow key shortcuts (⌃⯇ and ⌃⯈) conflictwith the default system shortcuts for Mission Control. If they do
not work in Glyphs, disable or change them in System
Preferences → Keyboard → Shortcuts → Mission Control.
10.1.3 Metrics Keys
Metrics keys can be used instead of numeric metrics values to link
the metrics—the LSB, RSB, and width—of one glyph to those ofanother. Write the name of a glyph in a sidebearing or width fieldin the Info box to use the metric value of that glyph. For example,
the LSB of an h could be linked to the l and its RSB to the n:

Spacing & Kerning

Glyphs 3 Handbook, October 2021

146

Linked metrics are not synced automatically when the metrics ofthe linked glyphs are changed. Instead, in Edit View, out-of-sync
metrics keys are displayed in red next to an update button:

Sync a metric key by clicking its update button. Fix all
out-of-sync metrics on the current layer by choosing Glyph →Update Metrics (Cmd-Ctrl-M). Hold down the Option key toupdate the metrics on all masters (Cmd-Ctrl-Opt-M). These
commands also work when multiple glyphs are selected.
In Font View, out-of-sync metrics are indicated by awarning
triangle in the top right corner of the glyphs cells.
Consider using a smart filter (see p. 92) to reveal all of the glyphs
with out-of-sync metrics.
Metrics Key Calculations The sidebearing fields can containsimple calculations following these rules: a calculation starts withan equal sign (=) and a glyph name, followed by a mathematicaloperator, + (plus, addition), - (minus, subtraction), * (asterisk,
multiply), or / (forward slash, divide), and ends with a number. For
example, ‘=n+10’ is the metric value of the n glyphs plus 10, and‘=comma/2’ indicates half the metric value of the comma glyph.
Decimal numbers can also be used: ‘=o*1.2’ or ‘=koKai-thai/1.5’.
The result of a calculation is rounded to the nearest font unit.
Constant Metrics Keys Equating with a number such as ‘=50’
fixes a metric to that value. This is helpful if the metric should
keep its value even when the outlines are changed. A calculationthat only contains a glyph name (such as ‘=n’) has the same effectas writing just the glyph name (‘n’).
Mirrored Metrics Keys Place a pipe character (|) directly after
the equals sign to reference the opposite sidebearing. For
example, writing ‘=|n’ in the right sidebearing of the u uses thevalue of the left sidebearing of the n. Keep a glyph centered bywriting ‘=|’ into one of its sidebearing fields. Such a value willreflect the opposite sidebearing of the same glyph, thus centering
the glyph outlines inside its bounding box.

Spacing & Kerning

Glyphs 3 Handbook, October 2021

147

Local Metrics Keys By default, a metrics key applies to all
masters of the font. Prefix a metrics key with two equals signs(‘==’) instead to specify a local metrics key. Local metrics keys do
not affect other masters and can be used as exceptions.
Examples: ‘==m’ or ‘==hyphen+15’.
Metrics Keys at Baseline Offsets Add an at-sign (@) and anumber at the end of a metrics key to measure a sidebearing at a
specific offset from the baseline. For example, ‘=A@0’ is the
sidebearing of A on the baseline, and ‘=A@200’ is the
sidebearing value of A as measured 200 units above the baseline.
10.1.4 Metrics Keys and Automatic Alignment
The metrics fields in the Info box of an automatically aligned
glyph (see p. 130) show the text ‘auto’ and the derived values inparentheses. Modify an automatic metric while keeping it
automatically aligned by entering an equals sign, a plus or minus
sign, and the offset value that should be added or removed. For
example, ‘=+25’ or ‘=-10’.
Modifying automatic metrics can be useful for glyphs where amark reaches far outside the glyph box. Typical examples are theidieresis (ï) or the dcaron (ď) and the lcaron (ľ).

10.2 KERNING
Carefully spaced glyphs should fit together well in words andsentences. Some glyph combinations, however, need specificadjustments to look good. Usually, glyphs with a lot ofwhite space (such as A and V) need to be moved closer together.
In contrast, glyphs that collide (such as f and ?) need to be moved
further apart. Kerning is the adjustment of the distance
between glyphs.
Note that left to right kerning is stored separately from rightto left kerning. When working with a font that includes glyphs ofboth directions, make sure to select the correct writing direction
before kerning. See section 4.9.4, ‘Writing Direction’ (p. 47)
for details.
With the Text tool active, kerning between glyphs ishighlighted in light blue for negative kerning and yellow for
positive kerning. These colors can be changed in the Appearance
preferences (see p. 14).

Spacing & Kerning

Glyphs 3 Handbook, October 2021

148

10.2.1 Kerning Modes
Edit View has three kerning modes: no kerning, kerning ,and locked kerning. Cycle between the modes by clicking theicon located in the bottom right of the Edit View canvas.
No kerning
disables the preview of kerning in Edit View.
The kerning shortcuts (see p. 149) are also disabled in this mode.
Kerningpreviews kerning pairs in Edit View.
Locked kerning
works like the normal kerning mode but
disables the spacing shortcuts (see p. 146), preventing accidental
spacing changes while kerning.
10.2.2 Info box
In Edit View, the Info box (View → Show Info, Cmd-Shift-I)
displays the kerning between the current glyph and theimmediate glyph on each side. When no kerning is set, the grayplaceholder ‘Kern’ is visible.
Click a kern field, enter an adjustment value, and confirm bypressing Return or by exiting the kern field. Clear a kern field toremove the kern between the two glyphs. Activate the Text tool
to see a small Info box for the preceding glyph. The box provides
the name of the preceding glyph, its lock status, and kerninggroup name:See section 10.2.4, ‘Kerning Groups’ (p. 150) for details on the‘Group’ fields in the Info box and section 10.2.5, ‘Kerning Group
Exceptions’ (p. 151) for working with the kerning locks.
Editing kerning in the Info box can be handy for quick
adjustments. When kerning many glyph pairs, consider using thekerning shortcuts.
10.2.3 Kerning Shortcuts
Mnemonic: the Control key islocated on the left, and theCommand on the right.
Control: left glyph.
Command: right glyph.

The kerning shortcuts can be used with the Text tool. Type thetwo glyphs in Edit View, then place the cursor between them andhold down the Option and Control keys to change the kerning
value between the current and the left glyph with the Left Arrow
and Right Arrow keys (⌃⌥⯇ and ⌃⌥⯈). Hold down Option andCommand to change the kerning between the current and theright glyph (⌥⌘⯇ and ⌥⌘⯈). Hold down Shift for steps of 10.
Ctrl-Opt-Leftincrease kerning on left side

Ctrl-Opt-Shift-Leftincrease kerning on left side by 10 units

Ctrl-Opt-Rightdecrease kerning on left side

Spacing & Kerning

Glyphs 3 Handbook, October 2021

149

Ctrl-Opt-Shift-Rightdecrease kerning on left side by 10 units

Cmd-Opt-Right

increase kerning on right side

Cmd-Opt-Shift-Right increase kerning on right side by 10 units
Cmd-Opt-Leftdecrease kerning on right side

Cmd-Opt-Shift-Leftdecrease kerning on right side by 10 units

10.2.4 Kerning Groups
Many glyphs with similar forms should have the same kerning
values. Kerning groups capture these similarities and reduce thenumber of pairs that need to be set manually. Kerning thenapplies not just to pairs of glyphs but to groups of pairs of glyphs.
For example, B, D, E, F, H, and so on may form a left side kerninggroup. Also, V, W, Ẃ, Ŵ, Ẅ, and so on might share both the left
and the right kerning groups. For example, if A and Ä are in thesame kerning group, kerning A to V also kerns the Ä–V pair.
Additionally, if V is in a group with W, A–W and Ä–W will also bekerned by the same amount. All members of a kerning group
have the same kerning values unless a kerning exception isdefined (see section 10.2.5, ‘Kerning Group Exceptions’, p. 151).
A glyph can have two kerning groups: one on the left and one
on the right. Glyphs written from top to bottom have a top andbottom group instead.
The name of a kerning group is written into the ‘Group’ fields
in the Info box (View → Show Info, Cmd-Shift-I). Edit the kerninggroups of multiple glyphs in the inspector in Font View (see p. 83)
or select multiple glyphs in Edit View. Group names can containthe letters a–z and A–Z, the digits 0–9, and an underscore (_),
period (.), or hyphen (-). Rename kerning groups in the
Kerning Window (see p. 151).
It is common to name kerning groups after a base glyph. For
example, R, Ŕ, Ř, and Ŗ may all have the right kerning group ‘R’.
The left kerning group might be named ‘I’ or ‘H’. However, it canalso be named ‘stem’ or any arbitrary name.
Another example: the glyphs c, d, e, o, and q could share a left
kerning group named ‘o’. In that case, kerning ‘To’ will also kern
all other group members. However, while ‘To’ might look good,kerning ‘Tö’ by the same amount will probably look too tight.
There are two solutions for this issue: either ö could be placed ina different left kerning group than o, or kerning group exceptions(see p. 151) could be used for ö.

Spacing & Kerning

Glyphs 3 Handbook, October 2021

150

Show all kerning group members in the background bychoosing View → Show Group Members. The group members are
only shown for the current glyph and the one placed before it on
the canvas. Only members of the respective kerning group areshown. For example, when editing the P glyph, only its left
kerning group members are shown in the background. This
display option is helpful to spot possible collisions.
10.2.5 Kerning Group Exceptions
A kerning group exception overwrites the kerning values of agroup for a specific pair. For example, if o and ö have the sameleft kerning group, the kerning value of ‘To’ might be too tightfor ‘Tö’.
Create a group exception for ‘Tö’ by selecting the Text tool,
then place the text cursor between T and ö. In the Info box(View → Show Info, Cmd-Shift-I), open the lock of the ö tomark it as an exception. Now, editing the kerning value between
T and ö will not affect any of the other glyphs having the sameleft kerning group as ö. However, keep the lock of the T glyph
locked so that the new T–ö kerning exception also applies toother group members of the right ‘T’ kerning group, for example,
Ť–ö, Ţ–ö, and Ț–ö. Close the kerning lock to remove an exception.
10.2.6 Kerning Window
Open the Kerning Window by choosing Window → Kerning(Cmd-Opt-K). It provides a list of all kerning pairs for thecurrently selected writing direction. See section 4.9.4, ‘Writing
Direction’ (p. 47) for details on changing the writing direction.
Viewing Kerning Pairs
Enter a search term in the search field to filter for kerning pairs
containing it. Click the search icon to configure the search
options. Choose how the search term should be applied (kerning
pair contains, is exactly, begins with, ends with, or does notcontain the term), which pairs to show (is a group or is not agroup), on which side of the pairs to search (left or right), or
whether or not to show only glyphs that are selected in Font View.
Choose Reset to reset all options back to their default.
Kerning groups are shown in blue with an at-sign (@) before
their name, while single glyphs are shown in gold. Click a column
header (Left, Value, Right) to sort by that column. Click again to

Spacing & Kerning

Glyphs 3 Handbook, October 2021151

reverse the sort order. Sorting by value is helpful to spot
particularly small or large kerning values.
Click a kerning pair to display it in Edit View. The current
glyph pair in Edit View, if any, will be replaced by the selected
pair. Use the Up and Down arrow keys to walk through thekerning pairs of the font. When selecting a row containing one or
two kerning groups, only a single example is shown. Insert all
kerning pairs belonging to the selected row into Edit View bychoosing Show All Glyphs from the actions
menu.
Editing Kerning Pairs
Double-click an entry in the Kerning Window to edit it. Edit avalue to adjust the kerning between a pair. Edit a group name torename the group. Renaming a group will prompt whether tochange the group name for only the selected kerning pair or
rename the group across the entire font. Since left and rightkerning groups are separate, renaming a group in the Left column
will not affect any entries in the Right column and vice versa.
Copy the selected kerning pairs with Edit → Copy (Cmd-C).
Select all kerning pairs by choosing Edit → Select All (Cmd-A).
Switch to another font master and paste the copied pairs with
Edit → Paste (Cmd-V). If pasting would overwrite existing kerning
pairs, Glyphs will show a warning. Choose Overwrite to paste thecopied pairs and overwrite any the conflicting kerning pairs.
Choose Keep Existing to paste only non-conflicting pairs.
Delete all selected kerning pairs by pressing the minus
button in the bottom left of the Kerning Window.
Maintaining Kerning Pairs
Kerning pairs can become obsolete when glyphs are removed
from the font, or a kerning group no longer has any members.
Delete all obsolete kerning pairs by choosing Clean Up from theactionsmenu.
Choose Compress from the actions
menu to reduce thenumber of kerning pairs in the font. When a few glyphs were
kerned with each other before the kerning groups were set, thesingleton kerning pairs can be converted into group kerning with
the Compress action. Compressing kerning changes kerning pairs
between two glyphs or between a glyph and a group such thatkerning groups are used wherever possible. Kerning exceptions

Spacing & Kerning

Glyphs 3 Handbook, October 2021

152

are kept unless the exception has the same kerning value as thegroup kerning (meaning, it’s not a real exception). The Compress
action might need to be run multiple times to compress all
kerning pairs fully.
For example, consider a kerning pair T–m, which is a kerning
between the glyphs T (right group: @T) and m (left group: @n).
Compressing once will turn it into the kerning pair @T–m.
Compressing a second time will turn it into @T–@n. Now, thiskerning pair applies to all glyphs in the @T right group and the @nleft group, such as Ť–m, T–n, T–ŋ, and Ť–ŋ. However, it will keep
exceptions such as T–ň, provided it has a different value than T–n.
10.2.7 Manual Kerning Code
While kerning is implemented as an OpenType feature, it does
not appear in the Features tab of the Font Info window. Instead,
it is added as an implicit feature (see p. 121). However, an explicit‘kern’ feature can also be added for performing
contextual kerning.
In File → Font Info… → Features, add a new feature named‘kern’. The ‘kern’ feature typically uses positioning (pos) rules tochange the distance between glyphs.
Contextual kerning matches more than two glyphs and can be
helpful when dealing with punctuation or spaces. For example,
the f might get some extra spacing to the right when it isfollowed by a space glyph and a glyph that extends far to the left
on the top, such as T or V.
pos f' 50 space [T V W Y];

Kerning groups can be reused in feature code. The name of a left
kerning group is prefixed by @MMK_R_ while a right kerning groupis prefixed by @MMK_L_. For example, the left kerning group @H
has the feature class @MMK_R_H and the right group @quote has
the class @MMK_L_quote. Note that the R and L in the prefixes arewith respect to the other glyph of the kerning pair: a left kerninggroup is used on the right (R) of a pair while a right kerning groupis used on the left (L) of a pair.
For example, consider the glyph sequence L–quoteright–A(L’A). With pair kerning, the quote might get pulled into thewhite space of the L and also in the white space of the A, making
the L and A collide on the baseline: L’A. A contextual kern can fix
this situation by pulling the quoteright into the white space of the
L (-50) while pushing the A to the right (70):

Spacing & Kerning

Glyphs 3 Handbook, October 2021

153

pos @MMK_L_L' -50 quoteright' 70 @MMK_R_A;

Manual kerning code can also make use of Tokens (see p. 117),
which allow the glyph positioning to be based on Number Valuesof masters or the sidebearings of glyphs. See section 8.4.4,‘Tokens’ (p. 117) for details.

Spacing & Kerning

Glyphs 3 Handbook, October 2021

154

11 PostScript Hinting
PostScript hinting is a method to improve display at low
resolutions for fonts with PostScript/CFF outlines. TrueTypeflavor OpenType fonts use a different method for hinting; seechapter 12, ‘TrueType Hinting’ (p. 164) for details.
The eventual picture on the screen is created by a software
called the rasterizer. Hints help the rasterizer to create a moreeven glyph image. Especially stems are harmonized to look
similar across a line of text. PostScript hints are simpler but alsoless flexible than TrueType hints.
Most hinting information revolves around determining whichpart of a letter is a necessary stroke element and should not be
omitted at small sizes. There are two kinds of hints.
Font-level hints or font-wide hints store general informationthat applies to the entire font and encompasses standard stems
and alignment zones.
Glyph-level hints are little pieces of information placed inside
a glyph that help the rasterizer stretch the outline across the pixel
grid. They can either be stem hints or ghost hints.
The best practice is choosing good font-level hints and letting
an algorithm called the autohinter find the glyph-level hints.
Hinting only makes sense if the font has repeated regularfeatures. If the font is very irregular, like many handwritten fontsare, or like ornamental and grunge fonts, then hinting cannot
help to improve the rendering. Also, suppose a font is intended
for exclusive use in environments where hinting information is
ignored, like displays with a very high resolution, or on Apple
hardware running macOS or iOS. In that case, the hinting
information is not used and will only make the font file larger.
Consider not hinting or disabling any existing hinting forsuch projects.
Note that PostScript hinting intends to create a sharper, moreconsistent pixel image at low resolutions. That means that theoutline will be distorted to achieve a better fitting on the pixel
grid. In other words, hinting does not preserve shapes; on thecontrary. Hinting does not make sense for fonts where thepreservation of the shape is more important than a crisp pixel
image, such as in connecting script typefaces and icon fonts.

Glyphs 3 Handbook, October 2021

155

11.1 FONT-WIDE HINTS
Before adding glyph-level hinting, define a set of parameters that
apply to all hinting throughout the font. These font-level hints are
stored in the so-called PostScript Private Dictionary inside theexported font. For an in-depth discussion, see
the Adobe Type 1 Font Format specification¹;
Robothon 2012: Postscript hints,² a video presentation about
PostScript hinting by Miguel Sousa from Adobe.
11.1.1 Standard Stems

PPM stands for pixel per em
and is a measurement for
pixel density.

Stem widths are the thicknesses of letter strokes. A vertical stem
is the width of a vertical stroke of a letter, for example, thethickness of the I, or the thicknesses of left and right curves of an
O. A horizontal stem is the thickness of a horizontal stroke
movement, for example, the serifs or crossbars of A and H, or t
and f, or the upper and lower curves of an O.
Standard stems are average values, as representative as
possible for as many stem widths in the font as possible. The
autohinter needs good standard stem values to recognize thestems and insert glyph-level hints automatically. And the screen
rasterizer can make use of these values to optimize the pixel
rendering, especially synchronizing stem thicknesses across thewhole font at low resolutions.
Try to find as few as possible and as representative as possible
values for horizontal and vertical stem widths and enter them in
the Masters tab of Font Info (File → Font Info… → Masters,
Cmd-I). See section 8.2.5, ‘Stems’ (p. 109) for details on editing
stem values in Font Info.
If two values are close to each other, consider merging theminto one average value. Quickly measure the thickness of stems
by selecting two nodes and looking at the Info box (Cmd-Shift-I)
or by switching to the Measurement tool. See section 4.10,‘Measuring’ (p. 47).
For instance, if the measured values are 68, 71, 72, 74, 75, 82,
83, and 85 for the vertical stems, pick 75 or 80 for the standard
vertical stem because either would be a good median value formost of the stem measures. By using a single stem value, thestems will scale more uniformly across low PPMs.
1 adobe-type-tools.github.io/font-tech-notes/pdfs/T1_SPEC.pdf, specifically
pages 35–45
2 vimeo.com/38364880, approximately 35 min

PostScript Hinting

Glyphs 3 Handbook, October 2021

156

Theoretically, up to twelve stem width values can beconsidered for each orientation. But the best practice of trying tofind as few as possible will typically either result in a single
representative value for all stems or in two values: one forlowercase and one for uppercase letters, or (in the case ofhorizontal stems) one for an average horizontal stroke, and one
for the serifs. Use a second or third value only if it is acceptablethat the associated stems will have different thicknesses at thesame pixel size. For instance, for a vertical standard stem set at
70 units and another at 80 units, the first stem may be displayed
two pixels wide, while the other stem may get three pixels at thesame pixel size.
The first horizontal and vertical stem values are the mostimportant ones. Use a value that represents the most-usedglyphs, typically the lowercase letters. Other functions in Glyphs
also use these values, such as the Cursify algorithm or theRounded Font filter. Any stem values that follow are exclusively
used for hinting. The horizontal stems also play a role in TrueTypehinting (see p. 164).
When interpolating between masters, stems with the same
name in both masters are used to interpolate the in-between
stem value.
11.1.2 Alignment Zones
When a font is rendered with very few pixels on a computer
screen, all the x-heights should use the same amount of pixels
vertically. The same applies to ascenders of letters like f, h, or k,
and to descenders of g, p or y, and to the heights of all capitalletters. For many designs, all letters should share the samebaseline when rasterized at a low resolution.
But all these letters usually do not align precisely. For instance,
the bottom of a lowercase o will extend slightly below thebaseline, while the serifs of an n may sit precisely on it. Or theapex of an uppercase A may extend a little bit beyond the heightof an uppercase H. This difference, usually some ten to fifteen
units, is commonly referred to as overshoot.
Alignment zones are a way to tell the rasterizer about theovershoots. Overshoots cannot help to provide an opticallybalanced text at small pixel sizes, so their display should be
suppressed. More precisely, at low resolutions, any path
constellation with a horizontal stem or ghost hint attached to it

PostScript Hinting

Glyphs 3 Handbook, October 2021

157

that reaches into an alignment zone will be vertically aligned tothe base of the zone.
Alignment zones take two values: a position and a size. The
position is the vertical height of the zone, usually the vertical
metrics, like x-height or ascender. The position is sometimes also
referred to as the flat edge of a zone. The size is the thickness ofthe maximum overshoot that may appear at that position. If theovershoot extends above the position (x-height, small caps height,
cap height, ascender), the size value must be positive. Such zones
are referred to as top zones. If, however, the overshoots extend
below the position (typically for the baseline or descender), thesize must be negative and is referred to as a bottom zones. See
section 8.2.4, ‘Metrics & Alignment Zones’ (p. 108) for details on
editing the alignment zones of a font master.
A typical alignment zone
setup: top zones with positive
sizes at ascender, cap heightand x-height; bottom zones
with negative sizes at baselineand descender.

Alignment zones should be as small as possible, so do not try to
make them larger ‘to be on the safe side’. More precisely, themaximum size of an alignment zone is constrained by the
blueScale value (see below), which implies that no zone must belarger than 240 ÷ (240 × blueScale − 0.98). In any event, a zone
must not be larger than 25 units. There may be a maximum of 6
top zones, 5 bottom zones, and the baseline zone. Zones must
not overlap. There must be a minimum distance of one unit
between them; the larger, the better. The baseline zone musthave a position value of zero.
If the font uses an alternative grid (see section 8.5.1, ‘Grid
Spacing & Subdivision’, p. 122), extend the scope of the zones by
one unit in both directions to catch potential small rounding
errors for vertical node positions. That is, the position must be
shifted by one unit and the size by two units. Only the baseline
zone must be kept at position zero while its size is increased
by one unit.

PostScript Hinting

Glyphs 3 Handbook, October 2021

158

11.1.3 Custom Parameters
Apart from the alignment zones and standard stems, there are
more optional parameters in the Private Dictionary: ‘blueFuzz’,‘blueScale’, ‘blueShift’, and ‘Family Alignment Zones’. In Glyphs,
set these values as custom parameters. See the description in
Glyphs when adding the custom parameters for more details.

11.2 AUTOHINTING
If the font-wide parameters (alignment zones and standard
stems) are correctly set, let the autohinting algorithm do its magicby simply activating the Autohint option in the File → Export
dialog. Enforce this setting with the Autohint custom parameter.
Test the hinting in an Adobe application (see section 4.13.6,‘Previewing in Adobe Applications’, p. 58). Write a test text andzoom out far enough to display the letters with a few pixels only.
Then zoom in using the operating system’s Zoom function(configurable in the Accessibility settings of the System
Preferences). If necessary, tweak the font settings or manually
hint a problematic glyph and re-export. For details on manual
hinting, see section 11.3, ‘Manual hinting’ (p. 160).
11.2.1 Flex Hints
Flex hints: Nodes 1 and 3 areon the same level and inside
the alignment zone, node 2
should be exactly on the flatedge of the zone. The handles
must stay inside the space
defined by nodes 1 through 3.

If the font has cupped serifs or slightly tapered stems, theautohinter can automatically apply so-called flex hints. Flex hints
suppress the display of such shallow curves at low resolutions.
They cannot be set manually but are automatically applied when
the font is exported. For flex hinting to kick in, a few conditions
must be met.
First, the ‘blueShift’ value must at least be set to the depth ofthe cups plus one. For example, if the serifs are cupped 5 units
deep, ‘blueShift’ should be set to 6 or more. Set ‘blueShift’ as acustom parameter in File → Font Info… → Font (Cmd-I).
Secondly, there are a few outline requirements. The cup or
tapering must be built from exactly two consecutive outline
segments between three nodes. The segments do not need to be

PostScript Hinting

Glyphs 3 Handbook, October 2021

159

symmetrical. The first and third nodes must share the same X
coordinate (for tapered stems) or the same Y coordinate (forcupped serifs). The four handles need not be entirely horizontal(serifs) or vertical (stems), but the three nodes must be placed on
the extremes of the two segments. The overall depth must notexceed 20 units.
Thirdly, in the case of cupped serifs, it is recommended thatthe three points are completely submerged in the respectivealignment zone. For best results, the second node (in the middle)
should be precisely on the flat edge of the zone. And the othertwo nodes must reach into the zone. This means that cupped
bottom serifs reach a little bit below the baseline and into its
bottom zone, which may seem counter-intuitive at first.

11.3 MANUAL HINTING
The implementation of PostScript hinting in Glyphs allows
manual and automatic hints inside the same font. Before
resorting to manually inserting hints, try to get as far as possible
with autohinting. Only glyphs that do not display correctly at low
resolutions will need manual intervention.
Manual and automatic hinting cannot complement each otherinside the same glyph. Any manually hinted glyph is excluded
from the autohinting process. Thus, when adding hints manually,
the glyph must be hinted fully by hand.
There are two types of glyph-level hints, stem hints and ghost
hints. Stem hints describe a vertical or a horizontal stem orstem-like feature of a glyph, like a serif or a crossbar. Ghost hints
mark the top and bottom edges when a horizontal stem hintcannot be applied.
In combination with alignment zones, horizontal ghost andstem hints are important for the vertical alignment at the verticalfont metrics, like the x-height or the ascender. At low resolutions,the rasterizer will try to vertically align the edges of all hinted
horizontal stems that reach into an alignment zone. The
horizontal hints must have their Y coordinates in common with
the nodes that are supposed to align. A single hint will do for all
nodes it touches at its height.
Stem hints can overlap each other, for example, the verticalstem hints in the figure eight. PostScript hinting does not allow
overlapping of hints. So, in cases like this, Glyphs willautomatically insert pieces of information called hint

PostScript Hinting

Glyphs 3 Handbook, October 2021

160

replacement, which turns hints on or off for different parts of theglyph outline. This handles issues related to overlapping hints.
In a Multiple Master setup, only hints in the main master will
be considered. In this case, make sure all manually set hints arelinked to nodes on the outline (see section 11.3.1, ‘Stem Hints’,p. 161). See section 11.3.3, ‘Hinting Multiple Masters’ (p. 163)
for details.
In Edit View, choose Autohint from the context menu to get agood start. This way, glyph-level hints will be inserted like theautohinter would have done it when the font is exported. Edit
these hints as described in the following sections. Rememberthat a glyph is not automatically hinted at export if it contains
manual hints so that no additional hints will be added at export.
11.3.1 Stem Hints
Add a stem hint to a glyph by choosing Add Horizontal Hint or
Add Vertical Hint from the context menu. A gray bar with anumber badge
will appear. The two numbers indicate theoriginand sizeof the hint.
Adding a hint while two nodes are selected will link the hint tothese nodes. Adding linked hints this way even works on multiple
node pairs at once, as long as each pair is on a separate outline.
For best results, always link hints to extremum nodes (seesection 4.2.14, ‘Extremes & Inflections’, p. 31).
Positioning of vertical stem
hints (green) and horizontal
stem hints (yellow).

Select a hint by clicking its gray number badge. Shift-click to
select multiple hints. Edit the value of the selected hint in the
Info box (View → Show Info, Cmd-Shift-I). Press Tab to select thenext hint, or Shift-Tab to go to the previous one.

PostScript Hinting

Glyphs 3 Handbook, October 2021

161

Edit a hint graphically by dragging the blue marks at the edges of
the hint. The blue circle indicates the hint origin, while thetriangleshows the size and orientation of the hint. When oneof the markers is dragged onto a node, Glyphs will link the hint to
the position of the node. Moving the node will also adapt thehint. Delete the selected hints by pressing the Delete key.

In the exported OTF file, all stem hints must have a width greaterthan zero. Glyphs will automatically correct hint directions atexport to turn all stem hints positive.
11.3.2 Ghost Hints
Use ghost hints to vertically align the top or bottom of a glyph
when horizontal stem hints are not applicable. For instance,
consider a sans-serif uppercase I. The top needs to align with thecap height zone, the bottom with the baseline zone. In a serif I,
horizontal hints would apply to the serifs, but the sans-serif letterlacks the horizontal features necessary for a horizontal hint. In
this case, put a top ghost hint on the top of the I and a bottom
ghost hint at the bottom of the I. Similar situations occur on the
top of a sans-serif L and at the bottom of a sans-serif P:

PostScript Hinting

Glyphs 3 Handbook, October 2021

162

Positioning of ghost hints(blue) alongside regular stem
hints. The ghost hints workwhere no horizontal hints canbe applied.

Create a ghost hint by Control-clicking or right-clicking a single
node and choosing Add Horizontal Hint from the context menu.
Turn an existing hint into a ghost hint by Control-clicking orright-clicking the coordinate badge of a hint and choosing Make
Ghost Hint.

The badge of a ghost hint only displays the position and its
orientation. An upward arrow ↑ a top ghost hint; a downward
arrow ↓ indicates a bottom ghost hint. Attach it to a point by
dragging the blue circle onto a node. Set the vertical orientationof a ghost hint by selecting it and clicking the upwardor
downward
icon in the Info box (View → Show Info,
Cmd-Shift-I).
11.3.3 Hinting Multiple Masters
PostScript hints, like TrueType hints, need to be defined for only
the main master. By default, that is the first master in the masters
list. Set the ‘Get Hints From Master’ custom parameter in File →Font Info… → Font (Cmd-I) to mark a different master as the mainmaster. Provided the hints are linked to nodes on the outline andthe paths are compatible, they will be transferred to thecorresponding nodes in compatible masters at interpolation time.
Manual hints in other masters will be ignored unless there areno hints in the main master. When using Alternate (see p. 194) orIntermediate layers (see p. 192), insert hints in the layer that
replaces the master layer carrying manual hints.

PostScript Hinting

Glyphs 3 Handbook, October 2021

163

12 TrueType Hinting
TrueType (TT) hinting optimizes the display of TrueType fonts at
low screen resolutions. PostScript/CFF flavor OpenType fonts use
a different hinting method; see chapter 11, ‘PostScript Hinting’(p. 155) for details.
TrueType fonts employ quadratic splines. These are different
from the PostScript-style cubic splines that Glyphs uses. When
exporting to TrueType, all paths are converted to TrueType-styleoutlines on the fly, including all manually set hinting instructions.
Glyph-level TT hints, like PostScript hints, need to be definedfor only the main master. By default, that is the first master in themasters list. Set the ‘Get Hints From Master’ custom parameter inFile → Font Info… → Font (Cmd-I) to mark a different master as
the main master.

12.1 AUTOHINTING
The technical details of TT hinting are too complex to mix
manual and automatic hints. Therefore, checking the Autohint
option when exporting a TrueType flavor font will ignore any
manual TT hints in the Glyphs file:

Glyphs 3 Handbook, October 2021

164

For information on
TTF Autohint, refer to theofficial website.¹

Glyphs uses TTF Autohint for autohinting TrueType fonts.
TTF Autohint can be configured in File → Font Info… → Export(Cmd-I) with the ‘TTFAutohint options’ and ‘TTFAutohint control
instructions’ custom parameters. See section 12.3.5, ‘Show Point
Indexes’ (p. 172) for details on how to get the point indexes
needed for the control instructions.
If the Autohint export option is not checked, Glyphs includes
the manual TT hinting instructions in the exported font.
Automatic hinting can also be used as a starting point for manual
hinting; see section 12.4, ‘Instructions’ (p. 173) for details.

12.2 FONT-LEVEL HINTS
TrueType hinting uses standard stem values and TT zones on eachmaster. Glyphs uses these font-level hints to replicate theglyph-level hints (see p. 169) from the main master to allother masters.
12.2.1 TrueType Zones
Zones help unify the vertical alignment of shapes throughout the
font. When outlines are grid-fitted onto the screen pixels, verticalshape extrema that live in the same zone will be rounded to thesame height, typically a pixel edge. Place the zones at vertical
metrics such as the baseline, descender, ascender, shoulder
height, figure height, nabira height, cap height, rekha height,
small caps height, or whatever else makes sense for the design.
A typical TrueType zones
setup: top zones with positive
sizes at ascender, cap heightand x-height; bottom zones
with negative sizes at baselineand descender.

By default, TT hinting uses the main alignment zones (see p. 108)
defined in File → Font Info… → Masters → Metrics. Set up zones
specific to TT hinting by adding the ‘TTFZones’ custom
parameter in File → Font Info… → Masters:

1 freetype.org/ttfautohint

TrueType Hinting

Glyphs 3 Handbook, October 2021

165

If the font already contains PostScript hinting zones, choose Get
PS zones from the actions
menu at the bottom left of thewindow to import them as TT zones. Add additional zones withthe plus
button and remove any selected zone with theminusbutton. A font can have any number of TT zones.
Zones have the following properties:
Name The name identifies a zone in the list. It can be arbitrary
text, and each name must be unique. The ‘xHeight’ name isspecial: it is used for the x-height zone, which is treateddifferently in grid-fitting. A zone with that name has a higher
probability than other zones of rounding up at small sizes. Names
are shown in the Info box when using the TT Instructor tool and aSnap hint is selected.
Position The position determines the emplacement of the flatedge of the zone. The flat edge is the offset from the baselinefrom which the zone is extending. Negative positions are placed
below the baseline.
Size The size defines the value of the flattening zone during theovershoot suppression. A top zone has a positive size; a bottom
zone has a negative size. Top zones are meant for the top verticalextremes of shapes, like the x-height, shoulder height, cap height,
or nabira height. Bottom zones are meant for catching thebottom ends of shapes, like the baseline, the descender, or thebottoms of small figures such as numerators, inferiors, andsuperiors.
Ensure that the area defined by the position and the size

TrueType Hinting

Glyphs 3 Handbook, October 2021

166

encompasses all overshoots that are supposed to be flattened to
the zone position by the rasterizer. For instance, at the x-height,
put the Position to the height of the lowercase x, and make surethe Size is large enough to catch all overshoots, like in thelowercase o. This works similarly to PostScript alignment zones(see p. 157).

PPM (pixels per em) is a fontsize measurement. See
section 12.3.2, ‘Pixel Size’(p. 171) for details.

Alignment Link a zone to another zone with the Align option.
If a zone is aligned to another, the distance between the zone
positions is rounded and applied to the zone. This will result in
more consistent transitions from one PPM size to the next. Use
this for zones that are very close to each other, perhaps evenoverlapping, and where it may be problematic if the zones
diverge too far at low-resolution pixel renderings. Aligned zones
are displayed at the same height if their distance is less than halfa pixel, one pixel apart if their distance is half a pixel, and so on.
Deltas (This property only applies to the main master.) Clickthe delta button to fine-tune a zone at specific PPM sizes. A
table of buttons will be shown. The columns of the table are themasters of the font, and the rows are PPM sizes. Click a button toswitch between rounding up, down, or norounding. The delta icon in the zones list is filled withthe accent color if any button is set to rounding up or down.
Rounding is helpful if a zone is one pixel too low or too high at
a given PPM size. If it is too low, round it up; if it is too high,round it down. Use the Hinting Preview (see p. 172) to check forany zones that need to be rounded up or down.
Filter (This property only applies to the main master.) Click the
globe
button to limit the zone to a subset of glyphs. The
subset is defined like a smart filter. See section 7.5.4, ‘Smart
Filters’ (p. 92) for details. The globe
icon in the stems list is
filled with the accent color if any filters are set.

TrueType Hinting

Glyphs 3 Handbook, October 2021

167

12.2.2 TrueType Stems
Stems help unify the displayed size of stroke thicknesses at low
resolutions. By default, TrueType hinting uses the standard stemsof a master (see p. 109). Define stems specifically for TT hinting
by adding the ‘TTFStems’ custom parameter in File → Font Info… →Masters. Click the value field of the parameter to edit the stems:

If the font already contains PostScript stems, choose Get PS
stems from the actions
menu to import them as TT stems.
Add additional stems with the plus
button and remove aselected stem with the minus
button. The following stem
properties can be edited:
Orientation A hint is oriented vertically (measured top tobottom) or horizontally(measured left to right). Click the
double arrow icon to switch between the two orientations.
Note that the orientation of a hint refers to the thickness of astem, not its length. A vertical hint spans the thickness of ahorizontal stem. A horizontal
hint spans the thickness of avertical stem.
Name The name labels the stem. It can be arbitrary text, but it
is a good idea to use descriptive names.
Size The average stem thickness. In screen rendering,similarly-sized stems will be unified and displayed with the same
number of pixels.
Deltas (This property only applies to the main master.) Clickthe delta button to fine-tune a stem at specific PPM sizes. This
property works like the Deltas of TT zones (see p. 167). Note that

TrueType Hinting

Glyphs 3 Handbook, October 2021

168

stem deltas are only applied for ClearType-style rendering modes(also referred to as Windows GDI).
Filter (This property only applies to the main master.) Click the
globe
button to limit the zone to a subset of glyphs. This
property works like the Filter of TT zones (see p. 167).
12.2.3 TrueType BlueFuzz
Use the ‘TTFBlueFuzz’ custom parameter to extend all TT zones
by a certain amount. The specified amount will be added bothabove and below to each zone. It defaults to 1 unit.
The parameter is helpful for testing stem values or for fixing
imprecisions in interpolation: Even if the drawings end up nicelyin the zones in all masters, they may still drop out of them ininterpolated instances. Such imprecisions can occur due torounding errors. Test the font using the Hinting Preview (seep. 172) to see if the zones work in all instances, and if not, increasethe ‘TTFBlueFuzz’.
Add the parameter in File → Font Info… → Font, Masters, orExports. Adding it to the Font tab applies it to all instances
equally. If the parameter is instead added to the masters, it will beinterpolated at export. Add it to a single instance in Exports tooverwrite the masters and font settings.

12.3 GLYPH-LEVEL HINTS
Add glyph-level hints with the TrueType Instructor tool
(shortcut I). Note that the TrueType Instructor tool uses shortcuts
without modifier keys, which are usually reserved for tool
switching. Therefore, pressing A will not switch to the Annotation
tool , but instead, it adds a Snap instruction. Use the toolbar at
the top of the window to switch tools.

TrueType Hinting

Glyphs 3 Handbook, October 2021

169

12.3.1 Hinting Outlines
A typical TT hinting setup.
Blue and red outlines areshown in the background. In
color, the hinting instructions
overlapping the outlines aredescribed in section 12.4,‘Instructions’ (p. 173).

In the TrueType Instructor tool, three outlines are shown. The
outline of the current master is black. The nodes and handles ofthis outline can be selected. Nodes are shown as gray discs
instead of green
circles and blue
squares. Extra nodes (seep. 139) are also shown, regardless of the View → Show Nodes →Extra Nodes setting.
The blue outline shows the outline of the current instance
before TT hinting is applied. Change the current instance bychoosing from the menu next to the eye
icon located at thebottom left of Edit View. Click the eye icon if the instances menu
does not appear to the right.
If the selected instance corresponds to the current master, no
blue outline is shown. For example, when both the Regularmaster and the Regular instance are currently selected, the blackand blue outlines overlap and only the black outline is shown.
The red outline shows the current instance after TT hinting
and grid-fitting are applied according to the current rendering
intent (Grayscale, ClearType, or DirectWrite) and the currently
selected pixel size. The outline is drawn with code fromMicrosoft and is the exact outline distortion used in Windows. It
is not shown if the glyph has no TT hints.
Note that the pixel preview in the background is only anapproximate example. Additional filtering happens between the

TrueType Hinting

Glyphs 3 Handbook, October 2021

170

red outline and the pixels appearing on screen. This filtering issubject to so many customizations (gammas, color modes,
transparencies, …) that an exact pixel image cannot be predicted.
Toggle the display of the blue and red outlines with Show Pixel
Preview from the context menu of Edit View.
12.3.2 Pixel Size
With the TrueType Instructor tool active, the Info box has a pixel
size field. This field contains the pixels per em value (PPM) of the
pixel image preview. The PPM is the true pixel size of the font.
For example, consider a font with 1000 UPM and a pixel size of
12 PPM. Then, one pixel is equivalent to 1000 ÷ 12 ≈ 83 font units.

Change the pixel size by entering a new value or use the stepper
buttons to increase or decrease the size. With the pixel size field
active, press the arrow keys Up and Down to change the value.
When the field is not active, press the Period (.) or Plus (+) key toincrease the size and the Comma (,) or Minus (-) keys todecrease it.
12.3.3 Hint Direction
The current hinting direction is controlled by the wavy arrow
button in the Info box. Click the button to toggle between
vertical and horizontal
hinting. Pressing the X key also
toggles between the two modes. Vertical hints are used withhorizontal stems and vice versa (see section 12.2.2,‘Orientation’, p. 168).
The hints of the other direction are shown dimmed andgrayed-out in the background for reference. They cannot
be edited.
12.3.4 Hint Order
Hints are applied in chronological order. The order is significant
because hints build on top of each other. When a hint is attached
to a point on the outline, the point executes the movement
implied by the hint and becomes a touched point.
After all hints have been applied, the positions of all remaining
untouched points are interpolated between the touched points

TrueType Hinting

Glyphs 3 Handbook, October 2021

171

nearest in the point index order. This is sometimes referred to as
IUP, or Interpolate Untouched Points instruction.
12.3.5 Show Point Indexes
Choose Show Point Indexes from the Edit View context menu tolabel all on-curve nodes with their point index (or ‘point ID’).
These numbers are needed for the ‘TTFAutohint control
instructions’ custom parameter (see section 12.1,‘Autohinting’, p. 164).
12.3.6 Hinting Preview
With the TrueType Instructor tool active, the Preview Area (seep. 56) moves to the right side of Edit View and shows a list (or‘waterfall’) of the glyphs in Edit View set in the currently
selected instance.
The list displays a preview of the hinted glyphs at each size
from 8 PPM to 80 PPM. View different preview sizes by dragging
the list with the mouse cursor up and down. This preview is alsoavailable in the Preview Panel (Window → Preview Panel).
The preview can be displayed at three scales: no scaling (1×),
2×, and 4×. Control-click or right-click anywhere in Edit View
and choose one of these scaling modes from the context menu.
12.3.7 Web Preview
Choose Show Preview Address… from the Edit View context
menu to start a web server previewing the font similarly to thebuilt-in Hinting Preview. Glyphs will present a dialog window
with a Web address. Click Copy to copy the address.

Open the address in a web browser to see the preview page. The
Mac does not use TT hinting, so open the page on a virtualized

TrueType Hinting

Glyphs 3 Handbook, October 2021

172

Windows running on the Mac or another device connected to thesame local network.

12.4 INSTRUCTIONS
Add TrueType instructions by selecting nodes and choosing oneof the available instruction types from the context menu. Clickand drag to reposition instructions.
Choose Autohint from the context menu to add some
instructions automatically. This action will add Snap and Stemhints, but not Shift, Interpolate, or Delta hints. The result can be
useful as a starting point for manual TT hinting. Some glyphs
cannot be autohinted. In that case, the error message ‘There wasa problem compiling TrueType instructions’ appears. Autohint
the current glyph by pressing Cmd-Ctrl-Opt-Shift-I (configure
the shortcut in the Commands section in the app preferences, see
p. 20). This shortcut also works when multiple glyphs are selectedin Edit View.
Remove all glyph-level hints from the current glyph bychoosing Remove Hints from the context menu.
12.4.1 Snap (A)Snap instructions(shortcut A) round the position ofpreviously untouched points to the nearest pixel edge. Apply a
Snap instruction by selecting one or more untouched points andpressing A or selecting Snap Point from the context menu.
Select a Snap instruction by clicking its purple badge. The
Info box (View → Show Info, Cmd-Shift-I) shows configuration
options for the selected instructions. From the pop-up menu
located at the top of the Info box, choose one of thefollowing options:
Auto: In vertical mode, the point will snap onto the pixel edge
the zone is rounding to if it is inside a zone. Configure the zone
rounding with the ‘TTFZones’ custom parameter. Auto is typicallythe best option.
No Zone: Tells the instruction to ignore zones altogether. In thatcase, it will only look for the nearest pixel edge.

TrueType Hinting

Glyphs 3 Handbook, October 2021

173

The other options are the named zones (see section 12.2.1,‘TrueType Zones’, p. 165). Choosing a zone will keep the node at aconstant distance to the selected zone and ensure that thesnapped node will not fall on the other side of the zone. Notethat these zone options are not intended for snapping a node to azone. Instead, it works similarly to the alignment of one zone withanother zone in the ‘TTFZones’ custom parameter (see p. 165).
The icon buttons on the bottom of the Info box indicate therounding that the instruction triggers:Round(default) rounds the point to the nearest pixel edge.

Round up rounds the point to the nearest pixel edge above (invertical mode) or right (in horizontalmode).
Round down rounds the point to the nearest pixel edge below(in vertical mode) or left (in horizontalmode).
No rounding keeps the point at its original position. Useful forsuppressing effects of IUP.
Round only in GDI ClearTypeworks like Round, but only in
the ClearType rendering intent. Useful for antialiasing in the
Grayscale and DirectWrite intents, while ClearType has to roundto the full pixel. This mode is only effective when hinting
horizontal stems because GDI ClearType has no verticaloversampling.
12.4.2 Stem (S)Stem instructions(shortcut S) round the positions ofeither two previously untouched points or one touched and one
untouched point to a distance determined by the TT stem. A
Stem hint has an originating point and a target point (indicatedby the arrowhead). The target point is moved to follow thedistortion of the originating point. Stem hints can be added to

TrueType Hinting

Glyphs 3 Handbook, October 2021

174multiple point pairs at the same time, provided an even numberof points is selected. Flip the origin and target points by choosing
Reverse from the context menu on the Stem hint.
If a Stem hint start in a zone, it will automatically snap theoriginating point in the zone. A Snap instruction is therefore notneeded for the originating node.
Select a Stem hint by clicking its sky blue
badge.
Configure the selected Stem hint in its Info box. From the pop-up
menu located at the top of the Info box, choose one of thefollowing options:
Auto: The hint will use the closest stem as defined in the‘TTFStems’ parameter. This is the best mode, provided the stems
are clearly distinct.
No Stem: The target points are not snapped to the grid; only
their distance to the originating node is kept. This means that thetarget point is moved only if the originating point is moved aswell. This is the best mode for higher shape fidelity inmedium-range pixel sizes (not too small) or if the distortions in
the resulting rendering environment are otherwise too important.
The other options are the named stems (see p. 168). Select one ofthese options only if the auto mode would give the wrong results.
The icon buttons on the bottom of the Info box indicate therounding that the instruction triggers:

Round

rounds the target point to the nearest pixel edge.

Round up rounds the stem size up. This will snap the target
point to the pixel edge that is further away from the originating
point. If the Stem hint is pointing downwards, that will be below.
Round down rounds the stem size down. This will snap thetarget point to the pixel edge that is closer to the originating
point. If the Stem hint is pointing downwards, that will be above.
No rounding (default) does not round the stem to any pixeledge but will still round its size to the oversampling edges
provided by the current rendering intent.
Round only in GDI ClearTypeworks like the Round mode, but
only for the GDI ClearType rendering intent. If a stem is not

TrueType Hinting

Glyphs 3 Handbook, October 2021

175

adjacent to a zone, this mode can help keep at least one edge ofthe stem aligned with the closest pixel boundary. This is usefulfor the middle bars in E and e, and best if combined with an
Interpolate instruction (see p. 179):

The stem widths taken from the ‘TTFStems’ parameter are
rounded according to the oversampling of the respective
rendering intent. Stems should not be rounded (with the default
No rounding mode) not to overwrite that. Having stems thatare not rounded to full pixel edges means that at least one side of
the stem will get a grey border. The resulting rendering is a little
less sharp but much better preserves the details of the design. It
also produces fewer problems with distorted outlines, forexample, fewer collapsed counters.
If there are three horizontal stems, select all three Stem hints
by consecutively Shift-clicking them, then choose Make Triple
Hint from the context menu. The Stem hints will turnpurple, indicating they are connected and will try topreserve at least one-pixel distance even in the worst of
circumstances:

TrueType Hinting

Glyphs 3 Handbook, October 2021

176

12.4.3 Shift (F)Shift instructions(shortcut F) transfer the movementof a touched (originating) point to an untouched (target) point.
This shifts the target point the same way the originating point isshifted. Use Shift instructions to make sure that two parts of aglyph implement the same distortion.
Apply a Shift instruction by selecting a touched and an
untouched point, and press F or choose Shift Points from thecontext menu. Multiple Shift instructions with the same
originating point can be added simultaneously, provided only oneof the selected points is touched (originating point), and all others
are untouched (target points).
Select a Shift hint by clicking its dark blue
badge. The icon
buttons in the Info box indicate the rounding that the
instruction triggers:

Round

rounds the target point to the nearest pixel edge.

TrueType Hinting

Glyphs 3 Handbook, October 2021

177

Round up rounds the target point to the nearest pixeledge above.
Round downedge below.

rounds the target point to the nearest pixel

No rounding (default) keeps the transferred movement exactly
as it is without any additional rounding. This is typically the bestmode for Shift instructions.
Round only in GDI ClearType
GDI ClearType.

works like Round, but only for

For example, consider the two legs of a Latin lowercase sans-serif
n. The left leg should get snapped in the baseline zone. But, after
adding a Stem hint for the shoulder between the two legs, theright leg is out of sync with the left leg.
This happens because, along the line of the path, the effect of
the Snap instruction in the lower left is interrupted by the Stem
instruction on the top. Therefore, for the right leg, the ensuing
IUP (interpolation of untouched points) can only extrapolate thedistortion caused by the Stem instruction, not the Snap
instruction. Effectively, the Snap instruction is confined to the left
leg. Mitigate this by adding a Shift instruction from the touched(snapped) point on the left leg to one of the points on theright leg:

The Shift instruction duplicates the movement of the left leg tothe right leg, making the target point a touched point. This way,
the right leg will always perform the same movement as the left
leg. The lowercase Latin m may use multiple Shift instructions:

TrueType Hinting

Glyphs 3 Handbook, October 2021

178

12.4.4 Interpolate (G)Interpolate instructions(shortcut G) keep a previously
untouched point at the same relative position to two touched
points as in the original uninstructed outline. Apply an
Interpolate instruction by selecting two touched points and athird, untouched point. Then press the G key or choose
Interpolate from the context menu.
The main intention of Interpolate hints is to remedy unwantedside effects of IUP. For example, use an Interpolate instruction tokeep a middle stem at the same relative distance from the(already touched) outer stems, as in this lowercase e:

TrueType Hinting

Glyphs 3 Handbook, October 2021

179

Select a Shift hint by clicking its green
badge. The icon
buttons in the Info box indicate the rounding that the
instruction triggers:

Round snaps the target point to the nearest pixel edge. Choose
this mode when adding a Stem hint on top of the target point.
Round upsnaps the target point to the next pixel edge above.

Round downedge below.

snaps the target point to the next pixel

No rounding (default) keeps the interpolated position anddoes not round it. This is typically the best mode for Interpolate
instructions.
Round only in GDI ClearType
will snap to the nearest pixeledge for the GDI ClearType rendering intent; the others should
remain unaffected.
12.4.5 Delta (E)Delta instructions(shortcut E) move a point up or down by
exactly one pixel, but only in a specific static instance and a
specific PPM size. Delta hints are intended as final pixel
corrections after all other hints have been applied. Add a Delta
hint by selecting any number of points and pressing E or choosing
Delta from the context menu. Select one or more Delta hints,
click the Delta icon in the Info box, and configure them like thedeltas of a TT zone. See section 12.2.1, ‘Deltas’ (p. 167) for details.
Delta hints should be used sparsely, if at all, and should be
added last, after all other hints. Delta hints are only available forvertical hinting and are ignored in variable fonts.
12.4.6 Points in Overlapping Intersections
Instructions may be placed on any node shown in the TrueType
Instructor tool. However, path intersections are handled

TrueType Hinting

Glyphs 3 Handbook, October 2021

180

separately. When a font is exported with the Remove Overlaps
option selected, overlapping intersections are reduced to a single
point. Glyphs will move any hints on points that are removed aspart of the overlap removal to the nearest resulting intersection
point. Thus, the following two hints are equivalent in
non-variable fonts:

In variable fonts, overlaps are not removed. Hints added to extra
nodes, such as the right hint in the image above, are ignored.
When exporting variable fonts, only add hints to normal nodes,
like the left hint in the image above.

12.5 ADVANCED TRUETYPE HINTING
Use the following custom parameters to further configure theTT hinting of the exported font files.
TTFOvershootSuppressionBelowPPM Add this parameter inFile → Font Info… → Font (Cmd-I). Set it to the pixel size below
which overshoots are collapsed to the flat edge of their zone. The
flat edge is the position of a zone as configured in the ‘TTFZones’
parameter (see p. 166).
TTZoneRoundingThreshold Add this parameter in either the
Font or Exports tab in the Font Info window (Cmd-I). The Font
value is used for all instances where the parameter is not set. Thisvalue controls the likelihood of a positive zone being pushed up a
pixel. It takes a small decimal number, typically somethingaround 0.1 or 0.2. The value is added to any positive zone
position before rounding and added twice to the x-height zone
(the one named ‘xHeight’ in the TrueType zones, see p. 166). Its
default value is 0.09375.
For example: At a certain font size, the small caps zone ends
up at 6.45 px, and the x-height at 5.25 px. Without any change,
the small caps zone rounds and snaps to a height of 6 pixels,
while the x-height ends up with 5 pixels. But when setting the

TrueType Hinting

Glyphs 3 Handbook, October 2021

181

rounding threshold to 0.2, the small caps height ends up at
6.45 + 0.2 = 6.65 ≈ 7 pixels, and the x-height at 5.25 + 2 × 0.2 =5.65 ≈ 6 pixels.
TTMinimumDistance Add this parameter in File → Font
Info… → Exports (Cmd-I). The default value is 0.25, meaning thatany hinted stem will be drawn with a minimum length of aquarter pixel, no matter which PPM size if it has a stem hint
applied. If the default value does not fit the design, add thisparameter with a custom minimum distance (in pixels).
See the TrueType Reference
Manual² for details.

Control Value Program Three custom parameters are added tothe masters when opening a hinted TrueType font: ‘CVT Table’,‘prep Table Assembly’, and ‘fpgm Table Assembly’. These
parameters contain the assembly code for the existing TT hinting
and are rarely edited manually. Instead, they are used not to losethe existing hinting instructions on export. They correspond tothe cvt, prep, and fpgm tables in the font.
gasp Table Add this parameter in either the Font or Exports tabin the Font Info window (Cmd-I). The Font value is used for all
instances where the parameter is not set. This parameter
configures the grid-fitting and scan-conversion procedure for
TrueType fonts. It controls the two PPM thresholds at which therecommended on-screen rendering behavior changes. The gasp
table contains rendering recommendations for both a traditional
Grayscale and a ClearType subpixel renderer. However, keep inmind that a renderer may ignore the data stored therein. The
default threshold sizes are 8 and 20 PPM. Because there are two
thresholds, three ranges can be differentiated:

Source for quoted parts: Now
Read this: The Microsoft
Cleartype Font Collection,
Microsoft 2004, p. 14.

No Hinting & Symmetric: Until the first threshold size, nogrid-fitting is applied, and text is rendered with antialiasing
wherever possible. ‘At very small sizes, the best appearance ongrayscale devices can usually be achieved by rendering theglyphs in grayscale without using hints.’
Hinting & Asymmetric: Between the two threshold sizes, therenderer is recommended to apply grid-fitting and suppress
grayscale. ‘At intermediate sizes, hinting and monochrome
rendering will usually produce the best appearance.’ In ClearType,the matter is handled asymmetrically: vertical grid-fitting isapplied, while horizontally, subpixel rendering is used.
2 developer.apple.com/fonts/TrueType-Reference-Manual/RM03/Chap3.html

TrueType Hinting

Glyphs 3 Handbook, October 2021

182

Hinting & Symmetric: Beyond the thresholds, the rasterizer is
instructed to apply grid-fitting and render the shapes in grayscale.
‘At large sizes, the combination of hinting and grayscale rendering
will typically produce the best appearance.’ The ClearTyperasterizer is instructed to apply symmetric smoothing. This uses
antialiasing in the Y direction in addition to horizontal subpixel
rendering. ‘At display sizes on screen, […] this new improvementof the Windows font renderer produces smoother andcleaner-looking type.’

TrueType Hinting

Glyphs 3 Handbook, October 2021

183

13 Interpolation
The glyph outlines drawn in Edit View belong to a font master.
Initially, a Glyphs file contains a single master named ‘Regular’. If
a Glyphs file contains additional masters (for example, a Thin and
Bold master), this is referred to as a Multiple Masters setup.
Working with Multiple Masters allows Glyphs to export fontinstances not just for each master but also between masters.
A small number of masters
can result in a large number ofinterpolated instances. In thisexample, two masters Thinand Bold are used to produce
a total of six instances along a
Weight axis.

Bold MasterThin Master

Thin

Light

RegularMediumSemibold

Bold

An interpolation axis describes the aspect of the glyph designthat changes between masters. The most common axes are theWeight (from light to bold) and the Width (from condensed toextended), but there are many more possible interpolation axes.
A Multiple Master setup can have one or more axes. While asingle axis can be thought of as a line along which the design
varies, two axes create a two-dimensional space in which every
point is a possible font instance. This space is referred to as thedesign space, which may also have three or more dimensions.
Two perspectives on thethree-axes design space of
ABC Arizona, the typeface inwhich this handbook is set.

serif
italic angle
weightGlyphs 3 Handbook, October 2021

184

13.1 INTERPOLATION APPLICATIONSInterpolation axes have two use cases: static instances andvariable fonts.
A static instance is a font file at a specific point in the design
space. For example, consider a Glyphs file with a Weight axis
spanning from a Thin master to a Bold master. Then, a Thin
instance is located at one end of the axis, a Bold instance islocated at the other end, and a Regular instance is locatedsomewhere in the middle of the axis.
If the Glyphs file has multiple axes, then multiple axis
coordinates can be configured for each instance. Consider aGlyphs file with a Weight and Width axis. In that case, there may
be Thin, Thin Condensed, Thin Expanded, Regular Narrow,
Semibold Condensed, and Bold Expanded instances.
Glyphs can also extrapolate static instances. An extrapolated
instance is located outside the coordinates defined by themasters, for example, an Extra Bold instance that is bolder thanthe Bold master. In practice, extrapolation is difficult to control,
so most font projects only make use of interpolation.

Variable fonts are font files containing information about all
masters and interpolation axes, allowing the font user to pickcustom locations in the design space.
For example, for a variable font containing a Weight axis
(ranging 300–900) and a Width axis (50–140), a font user mightpick ‘SomeFont Weight=600 Width=70’ instead of ‘SomeFont
Semibold Narrow’. This method allows picking any configurationof weight and width without the font vendor preparing static
instances for every possible combination. Variable fonts may also
include static instances, offering a predefined set of axis
configurations for convenient access.

Interpolation

Glyphs 3 Handbook, October 2021

185

13.2 SETTING UP AXES
Define interpolation axes in File → Font Info… → Font → Axes. Clickthe plus button next to the Axes heading to add a new axis. An
axis has a name, a four-character tag, and a hidden-checkbox.
Click the disclosure ! button to pick one of the predefined
axes. Choosing a predefined axis also sets its four-character tag
field with the respective value. The predefined axes are a
combination of the registered OpenType design-variation axes¹
and axes proposed for inclusion in the registry.² Otherwise,
define a custom axis (also referred to as a private axis) by setting
an arbitrary axis name and a custom four-letter tag. The tag of a
private axis should use four capital letters (A–Z) as not to collidewith future registered axes. For instance, a custom Swash Length
axis might use the tag ‘SWLN’.
Check the Hidden checkbox to hide an axis in user interfaces.
If set, this signals to applications using the font that they should
not display controls (such as a slider) for this axis. Hide axes ifthey are applicable only in specialized software. Applications may
or may not respect this option. In most cases, this checkbox
should be left unchecked.

13.3 SETTING UP MASTERS

Tip: Give each master a
descriptive name such as
Light, Regular Condensed, orBold Caption, and pick a
representative master icon(see p. 107).

Interpolation requires at least two masters. Add masters in File →Font Info… → Masters. Click the plus
button located in thebottom left of the window to add a new master. See section 8.2.1,‘Managing Masters’ (p. 106) for details.

1 docs.microsoft.com/typography/opentype/spec/dvaraxisreg
2 github.com/microsoft/OpenTypeDesignVariationAxisTags

Interpolation

Glyphs 3 Handbook, October 2021

186

13.3.1 Axes Coordinates
The Axes Coordinates of a master indicate its position in thedesign space. Add masters and set their axis coordinates suchthat the design space is covered by the masters. For a single
Weight axis, two masters suffice:Icon

An Italic axis does notnecessarily need to flip todifferent outlines. Instead, it
may smoothly transition froman upright to an italic angle.
Such an Italic axis may use alarger range like 0–100.

Master Name Weight
Light
300
Bold
700

Adding a third master in the middle (for example, Regular at 400)
allows for finer control over the interpolation.
The values for the Axes Coordinates fields can be chosen
freely. For the Weight axis, the median vertical stem width can beused as axis coordinate values. For instance, a Light master with astem width of 45 might use that as its Weight coordinate, while a
Bold master uses its stem width of 160. A more abstract axis, suchas Serif, might use a range from 0 to 100, with no serifs at 0 andlong serifs at 100. Axes that do not smoothly transition, such as
an Italic axis where the glyphs flip to different outlines, use arange from 0 to 1.
Add the ‘Axis Location’ custom parameter to use a different
axis range for variable fonts. This is particularly relevant toregistered axes such as Weight and Optical Size. See
section 13.10.2, ‘Axis Location’ (p. 199) for details.
Axis coordinates are spread linearly in the design space. For
variable fonts, the ‘Axis Mappings’ custom parameter can be
added for non-linear axes ranges. See section 13.10.3, ‘Axis
Mappings’ (p. 200) for details.

13.3.2 Minimal Multiple Masters Setup
A minimal Multiple Masters setup requires one origin master andone master for each axis. The Axes Coordinates of the origin
master differ from each other master on a single axis. For
example, consider a font with a Weight and Width axis. Then, thefollowing minimal master setup is possible:
Icon

Master Name
Weight Width
Light Condensed
300
50
Light
300
80
Bold
700
80

The Light master is the origin master. Its coordinates differ fromthe Light Condensed only on the Width axis and from the Bold

Interpolation

Glyphs 3 Handbook, October 2021

187

only on the Weight axis. The Bold, for example, cannot be theorigin master since its coordinates differ from the Light
Condensed on both the Weight and Width axes.
See section 13.10.1, ‘Variable Font Origin’ (p. 199) for
information on choosing the origin master. The choice of an
origin master only matters to variable fonts; for static instances,
Glyphs automatically determines the origin master.
13.3.3 Elaborate Multiple Masters Setups
While a minimal Multiple Master setup already covers the entire
design space, it offers little control over the design of instancesthat differ from the origin on multiple axes. For instance, theminimal setup example in the above subsection can produce a
Bold Condensed instance, but its outlines might not besatisfactory.
A more elaborate Multiple Masters setup would include
masters at all design space corners:
Icon

Master Name
Weight Width
Light Condensed
300
50
Light
300
80
Bold Condensed
700
50
Bold
700
80

Add intermediate masters as needed to fine-tune the design
along the interpolation axes. A complex Multiple Masters setup
can span across many masters:
Icon

Master Name
Weight Width
Light Condensed
300
50
Light
300
80
Light Extended
300
150
Regular Condensed
400
50Regular400
80
Regular Extended
400
150
Bold Condensed
700
50
Bold
700
80
Bold Extended
700
150

13.4 SETTING UP INSTANCESIn File → Font Info… → Exports, click the plus
button located in
the bottom left of the window to add a new instance. See
section 8.3, ‘Exports’ (p. 110) for details on adding andconfiguring instances.

Interpolation

Glyphs 3 Handbook, October 2021

188

13.4.1 Static Instances
Static instances (→ Add Instance and Add Instance for each
Master) are exported as single font files. The Axes Coordinates ofan instance need to be set up as described in section 8.3.4, ‘Axes
Coordinates’ (p. 112). Note that the Weight Class and Width Class
fields are independent of any axis coordinates; see section 8.3.3,‘Weight & Width’ (p. 112).
Static instances are also included in variable fonts as a set ofpredefined axis configurations. This allows a font user to pick apredefined instance from a font style menu instead of configuring
the variation axes manually. Instances that are outside the design
space (extrapolated) cannot be included in variable fonts.
Many custom parameters, including filters, are applied only tostatic instances when exported as single files, not when included
in variable fonts. This is because, in a variable font, all instancesneed to be compatible, which means they have compatible
outlines, the same glyphs, and the same features.
13.4.2 Variable Font Settings
A variable font setting (→ Add Variable Font Setting) controls
the export settings of a variable font. Adding multiple variable
font settings will export multiple variable fonts with different
configurations. Ensure that they have different names, so they do
not conflict on export.
Since a variable font setting operates on the entire variable
font, it can use the custom parameters that are not applied to its
instances. These include filters, removing glyphs, and adding
features. However, these custom parameters may still lead toincompatible outlines, which is reported as an error whenexporting the variable fonts.

13.5 OUTLINE COMPATIBILITY
Glyph outlines need to be compatible for interpolation to work.
Two glyph outlines are compatible when the following attributes
are the same across all outlines:
the number of paths and the order of their nodes;
the number of anchors and their names;
the number of components and their referenced glyphs;
the order of paths and components (Filter → Shape Order).

Interpolation

Glyphs 3 Handbook, October 2021

189

13.5.1 Identifying Incompatible Outlines
If the outlines of a glyph are not compatible, a red bar is shown
above its ascender line in Edit View and a red cornerin
Font View. Filter for all incompatible glyphs using smart filters(see p. 92, Glyphs includes an Incompatible masters smart filterby default).
When using masters that are not compatible by design, suchas color fonts, disable the red incompatibility indicators byadding the ‘Enforce Compatibility Check’ custom parameter inFile → Font Info… → Font and unchecking it.
Exporting interpolated instances or variable fonts is notpossible if there are glyphs with incompatible outlines.
13.5.2 Correcting Path Direction
Use Path → Correct Path Direction (Cmd-Shift-R) as a firstmeasure to fix outline incompatibilities. This command does
three things:
it analyses the path structure and, if necessary, changes the pathdirection for each path;
it normalizes the start node for each path, usually by choosing
the node leftmost node at the bottom of the glyph layer;
it reorders the shapes (paths and components), usually frombottom left to top right.
Hold down the Option key to apply the command on all
master layers of the selected glyphs (Path → Correct Path
Direction for all Masters, Cmd-Opt-Shift-R). See section 4.2.13,‘Controlling Path Direction’ (p. 31) for more details.
13.5.3 Reordering Shapes
Choose Filter → Shape Order to show a window with the paths
and components from all layers of the current glyph. Rearrange
the shapes such that they are in the same order on all layers. See
section 6.2.1, ‘Shape Order’ (p. 68) for details.
13.5.4 Master Compatibility
View → Show Master Compatibility (Cmd-Ctrl-Opt-N) shows thepaths, components, and anchors across all masters.

Interpolation

Glyphs 3 Handbook, October 2021

190

Compatibility view for threeincompatible masters: Light,
Regular, and Bold.
In this case, a node is missing
on the right of the counter ofthe p (shown in violet). This
leaves a path segment with alarger curvature angle(highlighted in yellow) than on
the other masters. Subsequent
segments on the path aremarked as incompatible (red).

The following aspects are highlighted in this mode:
Paths and components are colored based on their shape order.
Components are additionally displayed with a checkered pattern.
For the current layer, a shape order index number is written next
to the starting node of each path and in the middle of eachcomponent.
Diagonal lines connect starting nodes, shape centers, andanchors across the masters. Select points to show theirconnecting lines. Anchors are connected by dashed lines.
Path segments are colored either green, yellow, or red. Greensegments are compatible. Yellow segments are compatible, but
their angle differs by more than 20° between masters, indicatingthat a node might be missing. Red segments are incompatible;
there is either a missing segment in other masters, or the segment
types do not match (curved segment vs. straight segment).
Fix path direction and shape order related issues as describedin section 13.5.2, ‘Correcting Path Direction’ (p. 190) andsection 13.5.3, ‘Reordering Shapes’ (p. 190). The points on theconnecting lines outside the current layer can be dragged topoints of other connecting lines to swap to fix mismatchedshapes. For path segment issues, pinpoint the incompatibility
caused by selecting nodes and observing whether they fall on the
expected spot in the other masters.

Interpolation

Glyphs 3 Handbook, October 2021

191

If a path, component, or anchor does not exist on a master, itsconnecting line will point to the origin at (0, 0) on that master.
Glyphs will label components and anchors with red text in cases
where these elements do not match:

The master layers of a glyph might be compatible but still
produce undesirable interpolations. This can be the case when all
shapes are in the same order but placed on different locations
across the masters. The Master Compatibility view shows such
shape-shifting glyphs with crossing diagonal lines. Interpolations
between these masters might produce the following instances:

Fix shapeshifters by reordering the shapes, either with Path →Correct Path Direction, Filter → Shape Order, or by dragging apoint of a connecting line to the correct shape.

13.6 INTERMEDIATE LAYERS
Intermediate layers allow adjustments at a design space location
for a single glyph without adding an additional master. This helps
fix interpolation issues that occur in a single glyph. For example,
consider a two-master setup, Thin–Black, where the crossbar of
the e appears too thin in the regular weights:
Interpolation between two
masters: without Intermediate
layer (above) and with
Intermediate layer at theregular weight (below).

Interpolation

Glyphs 3 Handbook, October 2021

192

13.6.1 Intermediate Layer Setup
Firstly, select the master layer in the Layers palette most similar
to the desired Intermediate layer. Then, click the plus
buttonin the Layers palette to add a new layer. Control-click orright-click the new layer and choose Intermediate from thecontext menu. A number field for each axis will appear.
Enter the axis coordinates of the Intermediate, similar to how
the Axes Coordinates work in File → Font Info… → Masters. Use
the axis ranges displayed next to the fields for guidance. If a field
is left empty, then the Intermediate layer uses the axis coordinate
from the master layer to which it has been added. This is why
adding an Intermediate to the most similar master layer is helpful.
Confirm the entered values by pressing Return.
In the Layers palette, Intermediate layers are displayed as thecomma-separated axis coordinates between curly braces (forexample, {90} or {80, 120}). This is why Intermediate layers arealso referred to as brace layers.
13.6.2 Virtual Masters
Intermediate layers allow for virtual masters. A virtual masterworks like a master in File → Font Info… → Masters, but it only
affects a small number of glyphs. Other glyphs do not need to be
redrawn, and kerning pairs do not need to be defined for virtual
masters. For example, an axis might control the height ofcrossbars in glyphs such as A, E, F, and H. All other glyphs,
including numbers, punctuation, and symbols, are unaffected bythis axis, so it is a good candidate for a virtual master.
Add an axis as described in section 13.2, ‘Setting up Axes’(p. 186). It can be one of the standard axes or a custom axis. The
virtual master is defined using a ‘Virtual Master’ custom
parameter in File → Font Info… → Font. Click the value of thecustom parameter and set its axis coordinates like any othermaster. Confirm the dialog with OK. Note that coordinates forthe new axis must be set for the existing masters in File → Font
Info… → Masters.
With both the axis and the virtual master setup, add
Intermediate layers to the glyphs that need to be adjusted for thevirtual master. When exporting to variable fonts, only deltas forthese glyphs are stored, which keeps the font file size small.

Interpolation

Glyphs 3 Handbook, October 2021

193

13.7 SWITCHING SHAPES
Some glyphs may not stay compatible as they interpolate.
Examples include the dollar sign ($) losing its stroke in the middle
in bold weights or double-story forms switching to a single-story
form at an italic angle (a → a and g → g). There are three methodsby which glyph shapes can be switched:using Alternate layers to switch to different glyph outlines in both
static instances and variable fonts;
replacing glyphs with other glyphs at export;
substituting glyphs by other glyphs for certain regions of thedesign space in variable fonts.
13.7.1 Alternate Layers
An Alternate layer is a layer that contains an alternate glyph
outline and information about where in the design space theglyph should switch to the alternate outline.
Alternate layers are added to individual glyphs. For eachmaster, select the master layer in the Layers palette, click theplusbutton to add a new layer, Control-click or right-click the
new layer and choose Alternate from the context menu.

Axis Name
ItalicOptical Size
Slant
Width
Weight

Tag
Abbr.
ital
it
opsz ozslnt
slwdth wd
wght wg

After converting to an Alternate layer, number fields for theminimum and maximum coordinates will open. These describe
the design space region in which the alternate shape should be
used. For example, consider a single Weight axis ranging from 44
to 130 where the Alternate layer should be used for a weight of
90 or greater. In that case, set the min value to 90 and leave themax field empty.
Confirm by pressing Return. The name of the Alternate layer isdisplayed in bold as comma-separated axis ranges between
square brackets (for example, [90‹wg] or [80‹wg, 25‹wd‹50]).
This is why Alternate layers are also referred to as bracket layers.
Common axis names are abbreviated to two letters; the full axis
tag is shown for all other axes.
Modify the outlines on the Alternate layers to fit the alternate
design of the glyph. Alternate layers do not need to becompatible with the master layers, but they do need to be

Interpolation

Glyphs 3 Handbook, October 2021

194

compatible with each other. The Master Compatibility view (seep. 190) also shows Alternate layers, but they are offset by a gap:
Master Compatibility view for
the dollar glyph with twomasters (Thin and Black), twoIntermediate layers, and three
Alternate layers. The currently
active glyph layer is both an
Intermediate layer and an
Alternate layer.

3

1
2

A layer can be both an Intermediate and Alternate layer. In thatcase, both the square bracket Alternate name ([…]) and the curly
brace Intermediate name ({…}) are displayed in the Layers
palette. Double-click either one to edit its settings.
A master layer can also be designated as an Alternate layer.
For that, Control-click or right-click a master layer in the Layers
palette and choose Alternate. Configure the axis range of themaster layer like a normal Alternate layer. Then, add a new layer
to the master, mark it as an Alternate layer, and leave both themin and max fields empty. This renames the new layer to ‘[]’.
Place the alternate outline on the master layer and the normal
outline on the ‘[]’ layer. Whether the master or a backup layer isconverted to an Alternate layer does not matter to the exported
fonts; it is purely an organizational choice within Glyphs.
In variable fonts, Alternate layers are activated using a specific
OpenType feature. Set the ‘Feature for Feature Variations’ custom
parameter in File → Font Info… → Font to the four-letter featuretag. By default, Glyphs uses ‘rlig’, but ‘rvrn’ is also a common
choice. Different features will be processed at different stages of
the text shaping process; this depends on the operating system
and application displaying the text.
13.7.2 Replacing Glyphs at Export
Glyphs can be replaced by other glyphs at export for both static
instances and variable font settings. For this, two custom

Interpolation

Glyphs 3 Handbook, October 2021

195

parameters must be added in File → Font Info… → Exports. Firstly,
add the ‘Rename Glyphs’ custom parameter, click its value to edit
it, and write one glyph swap per line. A glyph swap is written as
someglyph=otherglyph. This switches the two glyphs in theexported font. For instance, switch the dollar glyph for a
simplified dollar.alt by adding the line dollar=dollar.alt. List
all glyphs with their replacement and confirm with OK.
Add the ‘Remove Glyphs’ custom parameter to not just swap,
but replace glyphs. Click its value to edit it and list all alternative
glyphs that now, after the swap, contain the normal
glyph outlines.
13.7.3 Conditional Glyph Substitutions
Conditional substitutions allow glyphs to be replaced in variable
fonts. See section 8.4.5, ‘Conditional Feature Code’ (p. 120)for details.
An example for the dollar → dollar.alt substitution from theexamples above may look like this:#ifdef VARIABLE
condition 80 < wght;
sub dollar by dollar.alt;#endifThis replaces the dollar with the dollar.alt glyph for a weight of
80 or greater.
When exporting to both variable fonts and static instances,consider using the glyph replacement described in section 13.7.2,‘Replacing Glyphs at Export’ (p. 195) to mimic the conditional
substitutions in static instances.

13.8 EDITING MULTIPLE MASTERS
Font masters are listed in the Layers palette. Click the/
buttons to show a layer even if it is not currently active. See
section 5.3, ‘Layers’ (p. 61) for details.
13.8.1 Select All Layers Tool
Use the Select All Layers tool (shortcut Shift-V) to edit thepaths of all visible layers at the same time. Click the/
buttons in the Layers palette to show or hide layers. Switch
between the Select and Select All Layers tool by clicking andholding the Select icon, then choose the desired toolInterpolation

Glyphs 3 Handbook, October 2021

196

from the menu:

13.8.2 Show All Masters
When in Edit View, choose Edit → Show All Masters to add all
master layers of the current glyph to the Edit View tab. This
command also inserts Intermediate and Alternate layers.
13.8.3 Keep Layer Selection in Sync
Select the Edit → Keep Layer Selection in Sync option to keep thecurrent selection when changing masters. This option only works
when working on a compatible glyph.

13.9 WORKING WITH MULTIPLE FONTS
13.9.1 Grouping Fonts into Families
A font typically refers to a single font file, like Regular, Bold, or
Semibold Italic. In Glyphs, these font files are exported from theinstances added in File → Font Info… → Exports. In most software
applications, fonts are grouped by their family name, which is set
in File → Font Info… → Font → General → Family Name.
Instances and variable font settings can overwrite the familyname set in the Font tab with a ‘Localized Family Names’ custom
parameter. Note that the Default language is used for grouping;other localized names are only used to display the family nameon screen.
Use style linking as described in section 8.3.5, ‘Style Linking’(p. 113) to link the bold and italic styles. This enables the Bold
and Italic buttons and the ⌘B and ⌘I keyboard shortcuts
common in many applications.
A variable font contains a font family in a single file. While it istechnically possible to put all family members into a single
variable font, it may be desirable to split the family acrossmultiple variable fonts. For example, an italic variable font may
be sold separately from the regular variable font.

Interpolation

Glyphs 3 Handbook, October 2021

197

Add multiple variable font settings in File → Font Info… →Exports to export different variable fonts from a single Glyphs file(for example, a retail version and a trial version with a reduced
glyph set). If the glyph set or OpenType features differ
significantly, consider using multiple Glyphs files for the different
variable fonts.
13.9.2 Glyphs Files, Masters, & Instances
Create a Glyphs file for each instance with File → Generate
Instances. This command reads the instances of the currently
open Glyphs file, converts them to font masters, and creates a
new Glyphs file with each of those masters.
Convert a single instance to a master by selecting the instancein File → Font Info… → Exports and choosing Instance as Masterfrom the plus
menu. The master will be added to the Masters
tab. Copy a master from an open Glyphs file into the currently
open file by choosing Add Other Master from the plus
menu
in File → Font Info… → Masters.
13.9.3 Compare Fonts
Compare two font masters by choosing Edit → Compare Fonts…
On the top of the Compare Fonts window are controls for picking
two font files. Choose from all font files that are currently open in
Glyphs. Below the file controls are pop-up buttons for choosing amaster from the font file. The two select masters are compared in
the center of the window. Select the same font files twice tocompare different masters of the same file.
The window lists the details of the two masters in a
two-column layout, comparing font info, master metrics, glyph
outlines, and kerning pairs. These categories can be collapsed or
expanded by clicking the disclosure triangle next to the grayheadings. Click a row to select it. On the bottom of the window
are two buttons: Use Left and Use Right. With a row selected,
click one of these buttons to write the value from one side to theother. This can help fix inconsistencies between masters andGlyphs files.

13.10 VARIABLE FONT OPTIONS
Additional adjustments can be made to variable fonts that affecttheir axes, fallback mode on legacy systems, and file size.

Interpolation

Glyphs 3 Handbook, October 2021

198

13.10.1 Variable Font Origin
Variable fonts require an origin master. The outlines of thismaster will be stored in the variable font file. All other masters
are only stored as deltas from the origin master.
By default, Glyphs uses the first master in File → Font Info… →Masters as the origin master. Designate a different master as theorigin by adding the ‘Variable Font Origin’ custom parameter inFile → Font Info… → Font.
A minimal variable font setup requires at least an origin masterand one master for each variation axis. This is described in detailin section 13.3.2, ‘Minimal Multiple Masters Setup’ (p. 187).
The origin master is used as a fallback on operating systems
and applications that do not support variable fonts. Therefore,
consider picking a regular master as the origin. Thereby, legacy
systems will show a regular font instead of a thin, bold, or italic
font. Since the regular master tents to sit in the center of thedesign space, it requires more deltas to describe the othermasters. This increases the font file size compared to picking acorner master like Light or Light Condensed. For environments
where file size is paramount (for example, webfonts), consider
picking the origin master from a design space corner.
13.10.2 Axis Location
When exporting a variable font, its design variation axes will use
the same coordinates as the axis coordinates set in Glyphs.
However, in some cases, the coordinates inside the Glyphs filemight differ from the desired axis coordinates of the variable font.
A common example is the Weight axis, which in Glyphs is often
based on steam widths, but the OpenType specification
recommends the Weight axis to use a range of 1–1000.³ Similar
recommendations exist for the Italic,⁴ Optical Size,⁵ Slant,⁶ andWidth⁷ axis.
Use different axis coordinates by adding an ‘Axis Location’custom parameter to all masters in File → Font Info… → Masters.
Click its value to edit it and assign each axis the coordinates thatthe master represents in variable fonts. Further configure the axis
coordinates of variable fonts using axis mappings.
3 docs.microsoft.com/typography/opentype/spec/dvaraxistag_wght
4 docs.microsoft.com/typography/opentype/spec/dvaraxistag_ital
5 docs.microsoft.com/typography/opentype/spec/dvaraxistag_opsz
6 docs.microsoft.com/typography/opentype/spec/dvaraxistag_slnt
7 docs.microsoft.com/typography/opentype/spec/dvaraxistag_wdthInterpolation

Glyphs 3 Handbook, October 2021

199

13.10.3 Axis Mappings
For variable fonts, the axis coordinate that the font user picks canbe transformed to a different axis coordinate by the font. Axis
mappings perform these transformations.
By default, variable fonts use a linear axis mapping. Linear inthis context means that each axis coordinate is mapped onto
itself and is thus unchanged. For instance, consider a Weight axis
ranging from 44 to 130. If a font user picks a weight of 95 on aslider, then that value is mapped to 95 (it is left unchanged) andused for interpolation:

Three different axis mappings
for the same weight axis.

The linear axis mappingthat is used by default.

external coordinates

The slider is equallysensitive for the entire axis
range. This means thatchanging the slider value
by the same amountchanges the interpolation
value by the same amounteverywhere along the axis.

130

109
95
87
44

95

130

67
44
44

67

87 95 109130 internal coordinates

Axis coordinates are mapped to other values by adding control
points to the axis mapping that deviate from the linear diagonal:

The slider is more sensitiveon the lower end than on
the higher end. This meansthat the same amount ofchange on the low end of
the slider results in larger
interpolation valuechanges than on
the high end.

external coordinates

A non-linear axis mappingwith two control points.

130
122
113
106

84

44

44
44

67

87 95 109

113

130

130 internal coordinates

The internal coordinates are the values set in File → Font Info… →Masters → Axes Coordinates. The external coordinates are theresult of axis mapping; they are used for interpolation.

Interpolation

Glyphs 3 Handbook, October 2021

200

Setup axis mapping by adding the ‘Axis Mappings’ custom
parameter in File → Font Info… → Font. Click its value to edit
the mappings:

The axis mappings dialog is split into three panes:
the axis list;
a list of the mapping control points of the selected axis;
a visual editor for the control points of the selected axis.
The mappings list is divided into two columns: the internal
coordinates on the left and the external coordinates on the right.
Note that the external coordinates also have the ‘Axis Location’custom parameter applied, if set, which is why the internal andexternal coordinates might differ even for a linear mapping.
Click the plus
button to add a new control point. The new
point will show up in the mappings list and the visual editor.
Alternatively, click on the blue line in the visual editor to add a
new control point.
Click a value in the list to edit it or drag a control point up anddown in the visual editor. Move the currently selected point withthe arrow keys up/down and left/right. Hold down Shift forincrements of 10 and Command for 100. The currently selected
control point is highlighted in the list and enlarged in the visual
editor. Delete the selected control point by clicking theminus
button.
Add an ‘Axis Mappings’ custom parameter to a variable fontsetting in File → Font Info… → Exports to customize the mapping
for different variable font exports.

Interpolation

Glyphs 3 Handbook, October 2021

201

13.10.4 Style Attributes Table
The Style Attributes (STAT) table is information stored in a font
file that gives names to different locations on the variation axes.
This allows software using a variable font to display a style namefor every possible axis configuration.
For example, consider a variable font named ‘Example’ thathas a Weight axis (200-700) and a Width axis (50–150). The STAT
table allows to define names for certain axis locations:
Weight
200
300
400
500
600
700

Name
Thin
Light
RegularMediumSemibold
Bold

Width
50
75
100
125
150

Name
Compressed
Condensed
NormalWide
ExpandedWith this information, applications can construct a style name forarbitrary axis configurations. Setting Weight = 600, Width = 75
might yield ‘Example Semibold Condensed’. Names can bemarked as elidable. An elidable name is removed when combinedwith other names. For example, the default ‘Normal’ width namemay be marked as elidable so that the ‘Bold Normal’ style issimplified to ‘Bold’.
Glyphs automatically compiles all information required for the
STAT table from the font instance names and their axis
coordinates. If the STAT table is not as desired, customize it byadding the following two custom parameters in File → Font
Info… → Exports.
Add the ‘Style Name as STAT entry’ custom parameter toinstances that differ from the variable font origin (see p. 199) on asingle axis. Set the value to the four-letter tag of that axis. If, forexample, the Regular master is the origin and the Light instancediffers from it only on the Weight axis, add this parameter and set
it to ‘wght’.
Add the ‘Elidable STAT Axis Value Name’ custom parameter toinstances that have an elidable name component on an axis. Set
the value to the four-letter tag of the axis on which the instancename is elidable. For example, a Regular instance might needmultiple parameters, one for each font axis, since its name iselidable in every case.

Interpolation

Glyphs 3 Handbook, October 2021

202

14 Color Fonts
Glyphs offers a streamlined workflow for creating four types ofcolor fonts: classic layer fonts, Microsoft-style CPAL and COLR
OpenType tables, the Apple-style sbix OpenType table, and theMozilla/Adobe-style SVG table.

14.1 WORKING WITH COLOR FONTS
Color fonts make use of multiple layers per glyph. See
section 13.8, ‘Editing Multiple Masters’ (p. 196) for general
information on working with multiple layers.
14.1.1 Keeping the Metrics in Sync
When working on a color font project, masters must share thesame metrics and kerning pairs so that all color layers align. Use
the ‘Link Metrics With First Master’ custom parameter in File →Font Info… → Masters to sync the metrics and kerning of the firstmaster with all masters. Add this custom parameter to every
master except the first one. Alternatively, add the ‘Link Metrics
With Master’ custom parameter, which can be linked to any othermaster, not just the first one.
14.1.2 Previewing Color Fonts
Edit View shows colors for other glyphs when a color layer isselected in the current glyph. The Preview area at the bottom of
Edit View (activated with the eyebutton) and the Preview
Panel (Window → Preview Panel) display a glyph in color when
one of its color layers is selected. The Text Preview (Window →Text Preview) displays the font as it would appear in Mac
applications using Core Text (such as Text Edit or Pages).
14.1.3 Exporting Color Fonts
Color fonts are regular OpenType fonts. They are compatible withall OpenType flavors supported by Glyphs: PostScript/CFF (.otf),
TrueType (.ttf), and WOFF/WOFF2. However, color fonts only
work in environments that support their display. For instance,
layered color fonts only work in applications that can put piecesof text precisely on top of each other, like most DTP software.

Glyphs 3 Handbook, October 2021

203

14.2 LAYERED COLOR FONTS

Layered color fonts are separate fonts that are stacked on top ofeach other. For such a font to work properly, the softwareenvironment in which it is used must support the stacking oftext layers.
14.2.1 Initial Setup
The four fonts which result inthe stacked text on the right.

Layered color fonts have a color axis. Add it in File → Font Info… →Font by clicking the plus
button next to the Axes heading.
Name the axis ‘Color’ and use a four-letter tag such as ‘COLR’.

Each color gets its own master. Contrary to most other fonts, themasters of a layered color font are not interpolated. This meansthat the masters of a layered color font are not required to becompatible for interpolation. Signal this to Glyphs by adding the‘Enforce Compatibility Check’ custom parameter in the Font tab
and unchecking it:

Pro Tip: Additionally, add a‘Master Color Dark’ custom
parameter to use a different
color for the dark systemappearance.

With this parameter disabled, add masters for each color layer.
Give each master a descriptive name like ‘Front’, ‘Inside Light’,‘Inside Shadow’, or ‘Outer Shadow’. In the Axes Coordinatessection, set a different numeric Color value for each master; forexample, 1 for the first master and 2 for the second.
Add a ‘Master Color’ custom parameter to each master todefine its preview color. Note that custom parameters can also
be added when multiple masters are selected. This color is only

Color Fonts

Glyphs 3 Handbook, October 2021

204

used inside Glyphs; the font user can set the exported font files inany color. Drag the Opacity slider in the color picker to use asemitransparent color for the preview.
Switch to the Exports tab, click the plus
button located in
the bottom left and choose Add Instance for each Master. This
will add an exporting instance for each axis coordinate of theColor axis.
14.2.2 Editing Color Layers
Edit color layers like normal master layers in Edit View (see p. 55).
By default, the currently selected master is shown. Click theeye/buttons in the Layers palette (see p. 61) to view
multiple layers at the same time. When working with layered
color fonts, it is common to show
all master layers.
The order of the masters in File → Font Info… → Masters isreflected in Edit View: the first master is shown on top, thesecond master one layer below, and so on.
14.2.3 Exporting
Layered color fonts are exported as separate font files, one foreach color layer. These color layers use the instances as describedin section 14.2.1, ‘Initial Setup’ (p. 204).
Glyphs can also convert a layered color font to an SVG color
font that includes all color layers in a single font file. For that, add
a new instance in File → Font Info… → Exports and add the ‘Color
Layers to SVG’ custom parameter. Then, add the ‘Export SVG
Table’ custom parameter to the same instance for the SVG data
to be included in the export. Ensure that the checkboxes of bothcustom parameters are checked.

14.3 CPAL/COLR FONTS

Microsoft-style color fonts are fonts that contain two additional
tables: CPAL (Color Palette) and COLR (Color). These color fonts
work like layered color fonts (see p. 204), but they export all color

Color Fonts

Glyphs 3 Handbook, October 2021

205

layers to a single font file instead of exporting one font file
per layer.
14.3.1 Defining the Color Palette
In File → Font Info… → Font, add the ‘Color Palettes’ custom
parameter. Click its value to edit the color palette.

Click the plus
button to add additional colors to the palette.
Each color is identified by a color index counting up from 0.
Change colors by clicking a color
swatch and choosing a
different value with the color picker. Select a row and click theminusbutton to delete a color.
Multiple color palettes can be defined. Add additional color
palettes by choosing Add Palette from the gear
menu. Clickthe column heading of a palette to remove it with Remove
Palette. See section 14.3.4, ‘Exporting’ (p. 207) for details onchoosing a palette for each instance.
Confirm the edits to the color palettes with OK or click Cancel
to discard all edits and keep the palettes as they were.
14.3.2 Master Layer as Fallback
CPAL/COLR color fonts are not supported by all applications. In
case an app cannot handle the color information, it displays themaster layer. The master is not displayed in apps that support
CPAL/COLR color fonts.
14.3.3 Color Palette Layers
Add color layers by clicking the plus
button in the Layers
palette (Window → Palette, Cmd-Opt-P) and choose Color Palettefrom the context menu on the layer. Pick a color from the color
palette by clicking the color swatch to the right of the layer name.
Choose either a predefined color or the asterisk (*) option. The

Color Fonts

Glyphs 3 Handbook, October 2021

206

asterisk option uses the color that the font user defines. Glyphs
previews this color in black (or in white, for the dark systemappearance).
Color Palette layers are named ‘Color’ and the color index
from the ‘Color Palettes’ custom parameter. Multiple layers of aglyph can have the same color, and some colors of the palettemight not be used at all in a glyph. Not all glyphs need to havethe same number of color layers: some might only have a single
color layer while others have multiple layers for each color.
14.3.4 Exporting
Exported instances of CPAL/COLR fonts use the first color
palette by default. Add the ‘Color Palette for CPAL’ custom
parameter to an instance in File → Font Info… → Exports to choosea different color palette for that instance. Note that the color
palette IDs start at 0 for the first palette. Add additional palettes
as described in section 14.3.1, ‘Defining the Color Palette’ (p. 206).
Remove all colors from an instance by adding an ‘Export
COLR Table’ custom parameter and unchecking it. This will use
just the fallback layer and discard the CPAL and COLR tables.
Glyphs can also convert a CPAL/COLR font to an SVG color
font by adding the following custom parameters in File → Font
Info… → Exports:
Check the ‘Color Layers to SVG’ custom parameter.
Set ‘Color Palette for SVG’ to the number of the palette thatshould be used for the conversion. Palettes are numbered
starting at ‘0’. The palette number is written in the column header
in the ‘Color Palettes’ custom parameter (see p. 206).
Check the ‘Export SVG Table’ custom parameter for the SVG data
to be included in the export.

Color Fonts

Glyphs 3 Handbook, October 2021

207

14.4 SBIX FONTS

See the TrueType Reference
Manual¹ for details on sbix
color fonts.

Apple-style color fonts include a sbix table (Standard Bitmap
Graphics) containing bitmap data of various resolutions. Multiple
images of various sizes may be assigned to each glyph. Thus, thedevice displaying it can pick the most appropriate resolution.
14.4.1 Standard Bitmap Graphics
In contrast to the other color font formats covered in this chapter,sbix fonts do not use vector but bitmap graphics. These graphics
may be prepared as PNG, JPEG, or TIFF images.
Each glyph contains a single image file. However, images canbe provided for different pixel sizes. A glyph might contain a
512 × 512 pixel image, but also lower resolution versions at, forexample, 128, 32, and 16 pixels. While a single large image per
glyph could be scaled down to fit every size below, including
smaller sizes of images presents two advantages:
Providing images for smaller sizes allows to fine-tune thegraphics for low-resolution output. For example, the design
might be adapted to read more clearly at smaller pixel sizes.
If smaller images are not included in the font, the text rendererneeds to scale the large images down to the desired font size.
This can be slow, especially on low-end devices, and use moreenergy, which is relevant to mobile devices.
Images are scaled up by the text renderer when using a font size
above the largest image dimensions, resulting in blurry
glyph images.
14.4.2 Preparing Images
Create the graphics in an image editing application and export
them at the desired sizes. This size is measured in pixel units, notin font size units. For example, export images at heights of 512,
256, 32, and 16 pixels.
1 developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6sbix.html

Color Fonts

Glyphs 3 Handbook, October 2021

208

Pro Tip: For clarity, nameimage files after their glyph
name and pixel size, such as‘rainbow 32.png’ for 🌈.

The differently sized images for a glyph must all share thesame aspect ratio. This aspect ratio is width ÷ height. So, if theimage version with a height of 512 pixels is 512 pixels wide
(512 ÷ 512 = 1, a square), all other images must also be square. If
one image is twice as tall as it is wide (256 ÷ 512 = 0.5), all otherimages for that glyph must share the aspect ratio of 0.5.
When adding these images to a Glyphs file, they are notcopied into the Glyphs file but merely referenced. Moving,
renaming, or deleting the image files will break these references.
Therefore, it is best practice to place the images in a folder next
to the Glyphs file.
14.4.3 Adding Images to Glyphs
The master layer does not contain glyph outlines. However, some
software—such as Google Chrome and Adobe Photoshop—use
the bounding box of paths on the master layer as a mask for thebitmap images. Therefore, it is a best practice to place tiny pathsin the bottom left and top right of the master layer, like here:

These tiny paths can also have their nodes on the same single
point, thus hiding the path. The red node backgroundthat
Glyphs shows for overlapping nodes can be ignored in this case.
This bounding box, highlighted in green in the image above, isused by Glyphs to place the images on their color layers.
Color layers for the sbix format are named ‘iColor’ layers. Add
iColor layers by clicking the plus
button in the Layers palette(Window → Palette, Cmd-Opt-P) and choosing iColor from thecontext menu on the layer. The name of an iColor layer includes
its size, for example, ‘iColor 512’ or ‘iColor 24’.
Double-click a layer entry in the Layers palette to change its
size. Scale images by changing this iColor pixel size. Images
appear smaller if the entered pixel size is larger than the image,and they appear larger if the entered size is smaller thanColor Fonts

Glyphs 3 Handbook, October 2021

209the image.
Add iColor layers for each image resolution. Note thatchanging the width of the master layer also changes the width of
all of its iColor layers.
14.4.4 Exporting
Glyphs includes the sbix table in exported font files if iColorlayers are present in the font. Discard the sbix table by adding an‘Export sbix Table’ custom parameter to an instance andunchecking it.
Glyphs can convert sbix color fonts to SVG color fonts (seep. 210). This allows the color font to be used in software that
supports SVG color fonts but not sbix fonts. Add the ‘SBIX to
SVG’ custom parameter to an instance and set its value to thedesired pixel size at which Glyphs will convert the sbix image
data to SVG data. For example, setting this parameter to 128 uses
the iColor layers sized at 128 pixels, if any, otherwise the smallest
iColor layers above 128, and if there are none at or above thatsize, the next largest available iColor layers.
Uncheck ‘Export sbix Table’ and set the ‘SBIX to SVG’parameter to export an SVG-only color font.

14.5 SVG COLOR FONTS

There used to be an SVG
format for fonts, not images.
That SVG format is now
obsolete. The SVG color fonts
in this chapter contain SVG
images for their glyphs but are
still OpenType fonts.

The Scalable Vector Graphics (SVG) image format can containboth vector and bitmap data. An SVG color font uses SVG files todisplay glyphs. SVG color fonts are also referred to as
OpenType-SVG or SVG-in-OpenType. Glyphs provides threemethods for creating SVG color fonts:
convert a layered color font, CPAL/COLR font, or sbix
font to SVG;
use SVG files created in a graphic design app;create the SVG images inside Glyphs.

Color Fonts

Glyphs 3 Handbook, October 2021

210

14.5.1 Converting to SVG
See the respective sections for details on how to convert othercolor font formats to SVG:
Layered color fonts: section 14.2.3, ‘Exporting’ (p. 205)
CPAL/COLR color fonts: section 14.3.4, ‘Exporting’ (p. 207)sbix color fonts: section 14.4.4, ‘Exporting’ (p. 210)
14.5.2 Importing Existing SVG Files

Tip: For clarity, name image
files after their glyph name,such as ‘A.svg’ and place themin a folder named ‘Images’.

In Edit View, add an SVG layer by clicking the plus
button in
the Layers palette (Window → Palette, Cmd-Opt-P) and choose
svg from the context menu on the layer. An SVG image can also
contain bitmap data which may be useful for fonts imitating
handwriting (like the sbix format, see p. 208). Drag an SVG fileonto the layer to use it for that glyph.
When adding SVG images to a Glyphs file, they are not copied
into it but merely referenced. Moving, renaming, or deleting the
SVG files will break these references. Therefore, it is best practiceto place the files in a folder next to the Glyphs file.
Resize and reposition the SVG image on the glyph layer likeany other image. See section 4.12.2, ‘Manipulating Images’ (p. 54).
Changing the width of the master layer also changes the widthof its SVG layer. In case an app cannot handle the SVG data, it
shows the master layer. The master layer is not shown in appsthat support SVG color fonts.

14.5.3 Creating SVG Glyphs
SVG glyphs can be created using color layers. Add a color layer
by clicking the plus
button in the Layers palette (Window →Palette, Cmd-Opt-P) and choose Color from the context menu on
the layer. Color layers are named ‘Color’ and display a color
spectrum
disc.
Draw paths on a color layer like on any other layer. By default,
the drawn shapes are filled with a gray color. Edit the style of theselected paths in the Attributes inspector located at the bottomof the Palette (Window → Palette, Cmd-Opt-P). Toggle the displayof the Attributes inspector with View → Show Info (Cmd-Shift-I).
By default, the Attributes inspector contains controls for the
stroke and fill of the selected paths. Click the plus
button next
to the Attributes heading to show additional controls. The
Shadow, Inner Shadow, and Pattern Image options cannot be

Color Fonts

Glyphs 3 Handbook, October 2021

211

exported to SVG; they are used when exporting to PNG or PDF
with Filter → Glyph as Image.
Change the color of an attribute by clicking the color
swatch button. A red stroke through the swatch
indicates afully transparent color.
StrokeEnter a stroke width in the text field next to the Stroke heading.
The stroke width is measured in font units. For example, entering‘12’ will add a 12 unit wide stroke along the path. An empty
stroke width field assumes a value of 0. By default, the stroke iscenteredon the path. Choose the leftor right
strokealignment to move the stroke inside or outside the path.
Change the stroke color by clicking the color
swatchbutton. Click the minus
button to remove the stroke by setting
the stroke width to 0 and the color to transparent.
Fill
Change the fill color by clicking the color
swatch button.
Click the minus
button to remove the fill by setting the color
to transparent. The fill control is not shown when a gradient is
added to a path.
Gradient
Click the plus
button next to the Attributes heading to add a
Gradient effect to the selected paths. A gradient replaces the Fillattribute. There are two types of gradients: linear
andradialgradients. Click an icon to change the type.

A gradient has at least two color stops. These are indicated assmall
knobs on the bottom of the gradient bar. Click a knob toedit the stop color. Add additional color stops by clicking
anywhere on the gradient bar. Remove a color stop by dragging
its knob off of the gradient bar.
In Edit View, knobs control the position of the gradient. Fora linear
gradient, two knobs control the start and end positionof the gradient. For a radial
gradient, a single knob controls
the origin of the gradient.

Color Fonts

Glyphs 3 Handbook, October 2021

212

Exporting
Export color layers with path attributes to SVG by adding the‘Color Layers to SVG’ custom parameter in File → Font Info… →Exports. If this parameter is checked, Glyphs uses the paths andattributes from the Color layers to produce an SVG table andadds it to the exported font file.

Color Fonts

Glyphs 3 Handbook, October 2021

213

15 Import & Export
15.1 EXPORTING FONT FILES
Choose File → Export… (Cmd-E) to show the export dialog for thecurrently open Glyphs file. Hold down the Option key and choose
Export All (Cmd-Opt-E) to export all open Glyphs files without
showing an export dialog. Exported files overwrite existing files.
The export dialog offers different export formats. These aredescribed in the following sections.
15.1.1 OpenType Export

The OTF tab exports static OpenType fonts. This export option
uses the font instances (see p. 189) or, if none are configured, adefault instance based on the first master.
Outline Flavor
There are two flavors of OpenType fonts. Their main difference isthe type of glyph outlines that they contain.
PostScript/CFF flavor files containing a CFF (Compact Font
Format) table storing glyph outlines as cubic Bézier curves. Font
files with this flavor typically end in ‘.otf’.

Glyphs 3 Handbook, October 2021

214

TrueType flavor files containing a glyf table storing glyph outlines
as quadratic Bézier curves and other tables related to the
TrueType format. Font files with this flavor typically end in ‘.ttf’.
Pick one of the two outline flavors. Paths drawn in Glyphs are
cubic, but Glyphs can also edit quadratic paths. When exportingto TrueType, Glyphs creates quadratic paths from the cubic paths
stored in the Glyphs file. This might introduce minusculedifferences between the drawn and the exported glyph outlines.
Besides the paths, the two flavors differ in their hinting
capabilities; see chapter 11, ‘PostScript Hinting’ (p. 155) andchapter 12, ‘TrueType Hinting’ (p. 164) for details. Exporting to
TrueType keeps components without converting them to outlines;
see section 9.1, ‘Components’ (p. 126) for details.
File Format
The first option (.otf or .ttf ) is generally used to install a font in an
operating system and use the font in graphic design and word
processing applications. WOFF (.woff ) and WOFF2 (.woff2) areintended for usage on the web (Web Open Font Format). Check
all formats that should be exported.
Options
The Remove Overlap option flattens all glyph outlines not toinclude overlapping paths. This is the same operation as Path →Remove Overlap; see section 6.2.10, ‘Remove Overlap’ (p. 76) for
details. Release versions of fonts should have this option
checked; uncheck it only during development for faster exports
or if the Remove Overlap filter is already applied using custom
parameters.
Check the Autohint option to apply automatic hinting. If the
PostScript/CFF flavor is selected, autohinting is applied to all
glyphs that do not contain manual PostScript hints; seesection 11.2, ‘Autohinting’ (p. 159). For the TrueType flavor,
autohinting is applied to the entire font, and any manually added
TT hints will be ignored; see section 12.1, ‘Autohinting’ (p. 164).
Export Destination
The export dialog offers two possible export destinations.

Import & Export

Glyphs 3 Handbook, October 2021

215

Select the checkbox next to the file path to export to the chosenfolder. Choose a different folder by clicking the file path andpicking a folder from the file browser dialog. Common
destinations are the system font library¹ and the Adobe
fonts folder.²
Select the Test Install checkbox to install the fonts directly on the
Mac without exporting any font files. A test install writes the fontdata directly into the font loading memory of the Mac. The
exported fonts will be available in applications using the systemfont loading mechanisms. Test installed fonts bypass many fontcaching issues but need to be re-installed after a reboot.
Click the Next… button to export to the selected destination.
If neither export destination is checked, Glyphs will prompt foran export folder.
The export destination can be customized per instance inFile → Font Info… → Exports by adding an ‘Export Folder’ custom
parameter. The instance will be exported to that this folder
relative to the selected export destination. The export folder may
contain slashes (‘/’) to export to a nested folder structure (such as‘Trial Versions/Webfonts’). Place the export folder outside theexport destination by going up folder levels with two dots (‘..’,such as ‘../Trial Versions’).
15.1.2 Variable Fonts Export

The Variable Fonts tab exports variable OpenType fonts. This
export option uses the variable font settings (see p. 189) or, if
1 Username → Library → Fonts
2 Username → Library → Application Support → Adobe → Fonts

Import & Export

Glyphs 3 Handbook, October 2021216

none are configured, a default variable font setting.
Set the desired file formats and export destination like in the
OTF tab. Variable fonts are always exported in the
TrueType flavor.
15.1.3 UFO Export

The UFO tab exports the selected masters as UFO (Unified Font
Object) files. Select one or multiple masters to be exported to
UFO by Command-clicking entries in the masters list. Select a
range of masters by Shift-clicking or all by choosing Edit → SelectAll (Cmd-A).
Check Convert Glyph Names to Production Names to use theglyph production names instead of the nice names used inside
Glyphs. This option is helpful when working on the exported
UFO files with tools expecting a simplified naming scheme
compared to the more expressive names used by Glyphs. See
section 7.3.1, ‘Glyph Name’ (p. 82) for more on the difference
between nice names and production names.
Decompose Smart Stuff handles Glyphs-specific features suchas smart components or corner components to regular paths.
The UFO format does not support these smart components.
Check this option to convert unsupported Glyphs features toregular paths or leave it unchecked to remove them.
Click Next… to choose an export destination. UFO files areexported in the UFO version 3 format. See section 15.2.3, ‘Unified

Import & Export

Glyphs 3 Handbook, October 2021

217

Font Object’ (p. 219) for details on working with UFO files.
15.1.4 Metrics Export

The Metrics tab exports the font metrics of the current master.
The current master is the master that is currently selected in the
toolbar (see p. 55).
Click Next… to choose the export destination and the export
format. There are two metrics formats to choose from:
Metrics File is a proprietary Glyphs metrics format containing all
spacing and kerning information of the master.
AFM File (Adobe Font Metrics) is an old-style format that iscompatible with other font editors. However, it cannot contain all
types of metrics information. For instance, AFM does notsupport group kerning or metrics keys.
See section 15.4.2, ‘Importing Metrics’ (p. 222) for details on
importing these metrics files into a Glyphs file.

15.2 SOURCE FORMATS
A Glyphs document can be stored in one of three source fileformats. Plug-ins can add support for additional source formats;see section 16.3, ‘Plug-ins’ (p. 229).
Pick the source file format when saving with File → Save As…
(Cmd-Shift-S). Each format is described in the following sections.
15.2.1 Glyphs File
Pro Tip: .glyphs files are
stored as NeXTSTEP-flavor
property lists. They can be
opened and edited in a text
editor for advanced editing
and introspection.

The Glyphs File format is the default format in which new Glyphs
files are created. Glyphs files end in the ‘.glyphs’ file suffix. A
Glyphs file is flat, meaning it is stored as a single file containing
all information about the font.
When opening a Glyphs files created in Glyphs 2, Glyphs 3 willkeep the file in a Glyphs 2 compatible mode. This way, the file canstill be opened in Glyphs 2 after editing it in Glyphs 3. However,

Import & Export

Glyphs 3 Handbook, October 2021

218

not all features of Glyphs 3 can be stored in a version 2 file. In
File → Font Info… → Other → File Saving, change the File format
version to Version 3. New Glyphs files are created in the Version 3
format. See also section 8.5.6, ‘File Format Version’ (p. 124).
15.2.2 Glyphs File Package
The Glyphs File Package format is identical to the Glyphs Fileformat, except it splits parts of the font into separate files andgroups those files into a folder with the ‘.glyphspackage’ suffix.
Notably, every glyph is put into its own file.
In Finder, a .glyphspackage folder appears as a normal filethat can be opened by double-clicking it like any other file.
Introspect its inner contents by Control-clicking or right-clicking
the package file in Finder and choosing Show Package Contentsfrom the context menu.
A normal Glyphs file requires re-saving the entire file even if
only a single glyph is changed. Since a package contains a file per
glyph, only the files that changed are modified when saving.
While this difference is inconsequential for smaller fonts, theGlyphs package format is recommended for projects with many
glyphs (such as CJK fonts).
Splitting every glyph into its own file also helps whenmanaging the document with a version control system (VCS) such
as Git. The frequently changing display strings representing theglyphs of the Edit View tabs are stored in a UIState.plist fileinside the package. This makes it easy to ignore user interfacechanges in the VCS.
15.2.3 Unified Font Object
The UFO format is available both as a source file format and as
an export format (see p. 217). When using UFO as a source
format, not all features are available in Glyphs. Activating an
unsupported feature will trigger a warning message.
Glyphs supports opening and saving UFO version 2 andversion 3 formats. The version is maintained when opening a
UFO file. New UFO files created using the UFO export are storedin version 3 format.
UFO files end in the ‘.ufo’ suffix. Like Glyphs packages, they
are folders appearing as a normal file in Finder. Unlike Glyphs
files and Glyphs packages, a UFO stores only a single master.
UFO files are compatible with many other font development

Import & Export

Glyphs 3 Handbook, October 2021

219

tools. Use UFO as a source format when working on a font
together with others that use UFO-compatible software.
However, when using UFO for a single-purpose tool (for example,
a specialized kerning tool), consider working with a Glyphs file or
Glyphs package and exporting to UFO. The results of thespecialized tool can then be imported into the Glyphs file, forinstance, by importing metrics (see p. 222).
See section 15.3.1, ‘Font File Importing Behaviors’ (p. 220) for
file import configuration options. Configure these options for a
specific UFO file in File → Font Info… → Other; see section 8.5.3,‘Use Custom Naming’ (p. 123) and section 8.5.4, ‘Disable
Automatic Alignment’ (p. 124).

15.3 OPENING FONT FILES
Prefer working with sources(‘.glyphs’, ‘.glyphspackage’,‘.ufo’) as described in
section 15.2, ‘Source
Formats’ (p. 218).

Glyphs can open compiled font files of the following formats:
OpenType, PostScript/CFF flavor (‘.otf’)
OpenType, TrueType flavor (‘.ttf’)
OpenType Collection, TrueType flavor (‘.ttc’)
Adobe Type 1, PostScript Font Binary (‘.pfb’)
Glyphs cannot reverse-engineer all the information inside acompiled font file. Opening such a file and exporting it again willproduce a font file different from the original. For example, somehinting information and OpenType tables are lost when importinga compiled font. Compiled fonts are opened in a view-only mode.
Choose File → Save As… (Cmd-Shift-S) to save it to one of thesource formats (see p. 218).
The order of the glyphs is written into a ‘glyphOrder’ custom
parameter in File → Font Info… → Font. Plug-ins can add support
for opening additional font formats; see section 16.3,‘Plug-ins’ (p. 229).
15.3.1 Font File Importing Behaviors
When opening a font file, Glyphs will try to apply its built-in
naming scheme and sync the metrics of composite glyphs with
their base glyphs. These behaviors can be disabled in theapplication preferences; see section 3.3, ‘User Settings’ (p. 15) for
Keep Glyph Names from Imported Files and Disable Automatic
Alignment for Imported Files.

Import & Export

Glyphs 3 Handbook, October 2021

220

15.3.2 Opening TrueType Font
TrueType flavor OpenType fonts are imported maintaining theirquadratic Bézier curves. Glyphs can edit but not create quadratic
curves. Convert them to PostScript/CFF flavor cubic curves with
Path → Other → Convert to Cubic. This command applies to all
selected paths, layers, or glyphs. Components contained in
TrueType fonts are kept.
15.3.3 Importing Multiple Fonts Files into a Glyphs File
Import fonts as masters by choosing File → Font Info… →Masters →→ Add Other Font. See section 8.2.1, ‘Managing
Masters’ (p. 106) for details. If the newly added masters areinterpolated, ensure they are compatible (see section 13.5,‘Outline Compatibility’, p. 189).
15.3.4 Importing OpenType Features
Some OpenType features cannot be reconstructed when opening
a compiled OpenType file. The features in File → Font Info… →Features show a list of features that should be imported. Lookups
used from multiple features are placed in a prefix named ‘Prefix’.
Kerning and kerning groups are mostly preserved, but contextual
kerning is not.
15.3.5 Importing PostScript Hints
Most glyph-level PostScript hints are preserved. Alignment zones
and standard stems are also preserved. However, mostglyph-level hints are not connected to nodes anymore. In a
Multiple Masters setup, drag the blue circle and triangle
onto outline nodes that fit the hint. See section 11.3.1, ‘Stem Hints’(p. 161) for details.

15.4 IMPORTING FONT DATA
15.4.1 Importing Outlines
File → Import → Outlines… imports PDF, EPS, or SVG files as
outlines. In Font View, multiple files can be selected and imported
into the glyphs with a matching name (for example, A.pdf into A
and comma.svg into comma). If no glyph exists for the file,
Glyphs prompts to create a matching glyph or ignore the file.

Import & Export

Glyphs 3 Handbook, October 2021

221

Click OK to skip the file or
Add Glyph to add a new glyph
matching the filename to thefont and import theoutlines into it.

In Edit View, File → Import → Outlines… imports a single file into
the current glyph.
Vector paths stored in the file are imported as glyph outlines.
Only outlines are kept; the fill color and other styles are
discarded. For PDF files, the stroke thickness is imported as astroke style (see p. 33).
See section 15.5, ‘Vector Drawing Applications’ (p. 223) for
information on importing outlines with copy and paste.
15.4.2 Importing Metrics
Glyphs can import the spacing and kerning of a master from
Metrics and AFM files (both of which can be exported from
Glyphs, see section 15.1.4, ‘Metrics Export’, p. 218) and from
Glyphs and UFO files.
In Font View, choose File → Import → Metrics… to importmetrics into the currently open Glyphs file. Select a file and click
Import, then an import dialog will appear:
Depending on the selected
file, one of the two importdialogs on the right is shown.
Left: Metrics or AFM file.
Right: Glyphs or UFO file.

Import & Export

Glyphs 3 Handbook, October 2021

222

Select whether to import kerning values and kerning classes withthe respective checkboxes. When importing metrics from a
Glyphs file, kerning values are not supported. Import kerning
values from one Glyphs file into another by copying and pastingthem in the Kerning window (Window → Kerning, Cmd-Opt-K,
see section 10.2.6, ‘Kerning Window’, p. 151 for details).
Importing from a Metrics for AFM file offers controls for glyph
metrics in addition to kerning. Check Import Metrics to choose
from one of four import modes:
import left sidebearing and width, adjust the right sidebearing;
import right sidebearing and width, adjust the left sidebearing;
import both sidebearings, adjust the width;
import the width and center the outline (equal sidebearings).
Automatic alignment is disabled for components where themetric values deviate from those derived from automaticalignment unless Keep Aligned Components is checked. Metrics
are imported for all glyphs by default. Check Selected Glyphs toimport metrics only for the selected glyphs or all glyphs if none
are selected.
15.4.3 Importing Feature Files
File → Import → Features… imports OpenType features written in
the AFDKO feature language. Select a file ending in ‘.fea’ andclick Import to add the contained features to File → Font Info… →Features. See section 8.4, ‘Features’ (p. 114) for details on
OpenType features.

15.5 VECTOR DRAWING APPLICATIONSGlyphs supports pasting outlines from most vector drawing
applications. The pasted outline may be placed far outside theglyph box. Glyphs detects such situations and offers to correct
the bounds of the pasted outline:

Import & Export

Glyphs 3 Handbook, October 2021

223

The following sections describe recommended setups for specificapplications.
15.5.1 Adobe Illustrator
Tip: Quickly get the correct
scale by drawing a rectangle
with the height of the capitalletters in Glyphs, copy andpaste it into an Illustrator
artboard and scale thedrawings to fit the height of
the rectangle.

Vector outlines can be imported from Illustrator with copy andpaste. For best results, configure the Illustrator artboard such thatone point corresponds to one font unit. A font with 1000 UPM
would map to an Illustrator artboard 1000 pt high.
Copy closed paths in Illustrator and paste them with Edit →Paste (Cmd-V) in Glyphs onto the current glyph. Nodecoordinates are rounded unless the grid spacing (see p. 122) of
the font is zero.
15.5.2 Affinity Designer
Affinity Designer places the copied outlines at the origin (0, 0),regardless of where the outline is placed in the Designer artboard.
Glyphs supports both the standard outline copying mode and the
SVG mode (Affinity Designer → Preferences… → General → Copy
items as SVG).
15.5.3 Sketch
In Sketch, set the contour to a 1 pt outline without fill. This will
prevent double outlines in Glyphs.

15.6 FILE FORMAT INTEROPERABILITYThe UFO format is generally used when exchanging files withother font editors. See section 15.2.3, ‘Unified Font Object’(p. 219) for details.

Import & Export

Glyphs 3 Handbook, October 2021

224

FontLab 7 imports and exports Glyphs files natively. This will
preserve more details than exchanging UFO files with FontLab.
For FontLab Studio 5, use the Glyphs Import³ and Glyphs
Export⁴ macros. Install them in FontLab Studio 5 by opening
Finder and choosing Go → Go to Folder. Enter the path of the
FontLab Studio 5 macros folder⁵ and press Return. Place the two
macro files there and relaunch FontLab Studio 5. The macros will
be available in the macro toolbar.
Note that not all Glyphs features are supported in other fonteditors. Exchanging files may thus result in simplified data (forexample, decomposed outlines) or missing font information.
Consider keeping a copy of the original Glyphs file for safety.

15.7 PROJECTS
Projects are collections of instance definitions linked to a Glyphs
font file but kept in a separate project file. This is useful for
setting up different font versions without altering orcompromising the original Glyphs file. Project files carry a‘.glyphsproject’ suffix.
15.7.1 Setting up a Project
Create a new Glyphs project with File → New Project. Save the
newly created project with File → Save (Cmd-S).
Click the Choose button located in the top right of the project
window, select a Glyphs file, and confirm with Choose. The
selected font does not need to be open in Glyphs. This links the
Glyphs file to the project. Click the file path to choose a different
Glyphs file. The instances of the font are listed in the sidebar of
the project window:

3 github.com/schriftgestalt/Glyphs-Scripts/blob/master/Glyphs%20Import.py
4 github.com/schriftgestalt/Glyphs-Scripts/blob/master/Glyphs%20Export.py
5 ~/Library/Application Support/FontLab/Studio 5/Macros/

Import & Export

Glyphs 3 Handbook, October 2021

225

Rearrange instances using drag and drop. Duplicate an instanceby Option-dragging it to its new location in the list. Alternatively,
copy (Cmd-C) and paste (Cmd-V) to duplicate the selected
instances. Click the plus
button to add new instances andvariable font settings. Delete the selected instances with theminusbutton. Revert to the instances of the Glyphs file withthe arrowbutton.
Edit the parameters of instances in the right half of the project
window. See section 8.3, ‘Exports’ (p. 110) for details.
15.7.2 Exporting a Project
Ensure that the project is saved (File → Save, Cmd-S) and that thepath to the linked font is valid (a path becomes invalid when thelinked file is renamed, moved, or deleted). Click the Export
Destination file path to set the export folder. Instances areexported into this folder. Customize the export folder of an
instance with the ‘Export Folder’ custom parameter (seesection 15.1.1, ‘Export Destination’, p. 215). Click the Export button
located in the bottom right of the project window to export all
configured instances. The linked Glyphs file does not need to beopen for export.

Import & Export

Glyphs 3 Handbook, October 2021

226

16 Extensions
Extend Glyphs with scripts and plug-ins. There are many existing
scripts and plug-ins that can be freely downloaded from thePlugin Manager. Commercial extensions are also available online.
Write custom extensions to satisfy specific needs.
All scripts and most plug-ins are written in the Python
programming language. For these to run inside Glyphs, ensurethat Python is set up in the application preferences (see p. 18).

16.1 PLUGIN MANAGER
Browse a selection of freely available scripts, plug-ins, andmodules in Window → Plugin Manager.

At the top of the window are two groups of filters. Filter theextensions by whether they are installed with the All, Installed,
Not Installed buttons. Filter by extension type with the Plugins,
Scripts, Modules buttons. Enter a keyword in the search field
located in the top right of the window to search by extension
name, description, or the name of the extension vendor.
Install an extension by clicking the green Install button
beside it. Uninstall an extension by clicking its Remove button.
Glyphs needs to be relaunched for newly installed plug-ins andGlyphs 3 Handbook, October 2021

227

modules to be available. Newly installed scripts can be loaded
without relaunching Glyphs by holding down the Option key andchoosing Script → Reload Scripts (Cmd-Opt-Shift-Y). Updated
versions of extensions are installed automatically.
Enlarge preview images to their full size by clicking on them.
Click the gray link below the extension description to view its
website. Some extension vendors accept donations via PayPal
and
Ko-fi. Click the icon to open the donation page.
New extensions are added regularly to the Plugin Manager.
Open a pull request at the Glyphs plug-in repository¹ to add a
new entry or contact the Glyphs team on the Glyphs forum² ordirectly per email.³ See section 16.2.3, ‘Creating Scripts’ (p. 229)
and section 16.3.2, ‘Creating Plug-ins’ (p. 230) for details on
creating new extensions.
Plugin Manager lists extensions from the main repository,
accessible to all users. Add alternative repositories as describedin section 3.6.3, ‘Alternate Plugin Repositories’ (p. 18). These will
also show up in the Plugin Manager, but only for users that haveregistered the same alternative repository in their Glyphs setup.

16.2 SCRIPTS
Scripts are written in the Python programming language and can
automate every part of Glyphs. Some scripts require specificmodules to be installed; install these from the Modules tab in the
Plugin Manager (see p. 227).
16.2.1 Run Scripts
Access all installed scripts from the Script menu. Many scripts
show a short description when the mouse pointer rests on its
menu item for a few seconds. Click a menu item to run the script.
Assign a keyboard shortcut to a script to run it with a key press.
See section 3.7, ‘Shortcuts’ (p. 20) for details. Re-run the last
script with Cmd-Opt-R or from the bottom of the Script menu.
16.2.2 The Scripts Folder
The Script menu reflects the files of the Scripts folder. Open the
Scripts folder with Script → Open Scripts Folder (Cmd-Shift-Y).
Reload the Script menu by holding down the Option key and1 github.com/schriftgestalt/glyphs-packages
2 forum.glyphsapp.com
3 glyphsapp.com/contact

Extensions

Glyphs 3 Handbook, October 2021

228

choosing Script → Reload Scripts (Cmd-Opt-Shift-Y).
16.2.3 Creating Scripts
Add scripts by creating a file ending in ‘.py’ in the Scripts folder.
The part of the filename before the ‘.py’ is arbitrary, but forclarity, it is recommended to name the file as it should appear in
the Script menu, for example, ‘Some Script.py’. Create subfolders
to group scripts. Inside the Python file, add a comment at the top
with the following format:# MenuTitle:

Script Name

Replace Script Name with the name that should be displayed in
the Script menu. Add a description that is shown when themouse pointer rests on the menu item by writing the following
code below the # MenuTitle line:__doc__=" Description "Replace Description with a short description of the script. The
description can span multiple lines:__doc__="""
This description spans multiple lines.
Here is the second line.
"""

For writing the actual script, consult the Glyphs Python API
documentation.⁴ On the Glyphs website, there is a tutorial series⁵
from the first steps of programming in Python up to writing
advanced scripts. Viewing the code of existing scripts is also agreat way to learn. If any questions arise, feel free to ask on the
Glyphs forum⁶ or contact the Glyphs team directly.⁷

16.3 PLUG-INS
Plug-ins add a variety of capabilities and functionalities to Glyphs.
They can be grouped into the following types:
Reporter plug-ins (file name suffix ‘.glyphsReporter’) draw
additional information in Edit View and are controllable with aShow … menu item at the bottom of the View menu.
4 docu.glyphsapp.com
5 glyphsapp.com/learn/recommendation:learn-python
6 forum.glyphsapp.com
7 glyphsapp.com/contact

Extensions

Glyphs 3 Handbook, October 2021

229

Filter plug-ins (‘.glyphsFilter’) process glyph layers. They areaccessible from the Filter menu. Some can be run using the‘Filter’ custom parameter (see section 6.1.2, ‘Filters as Custom
Parameters’, p. 66).
Palette plug-ins (‘.glyphsPalette’) add entries to the Palette(Window → Palette, Cmd-Shift-P). See chapter 5, ‘Palette’ (p. 60)
for details.
File Format plug-ins (‘.glyphsFileFormat’) add support for
opening and exporting additional file formats.
Tool plug-ins (‘.glyphsTool’) add additional tools to the toolbar.
These tools extend Edit View with new features.
General plug-ins (‘.glyphsPlugin’) add functionality not coveredby one of the above types.
16.3.1 Installing Plug-ins

Plug-ins installed from thePlugin Manager can beuninstalled there, too.

Install plug-ins from the Plugin Manager (see p. 227) with a single
click. Plug-ins are loaded when Glyphs launches, so Glyphs needs
to be relaunched for newly installed plug-ins to be loaded. Someplug-ins require specific modules to be installed; install thesefrom the Modules tab in the Plugin Manager.
Manually install a plug-in by dragging and dropping it onto
the Glyphs app icon in the Dock. Installed plugins are moved to
the Plugins folder. The Plugins folder is located next to the
Scripts folder (see p. 228). Do not manually move plug-ins to the
Plugins folder since that interferes with the security system of theMac. Uninstall a plug-in by deleting it from the Plugins folder.
16.3.2 Creating Plug-ins
Plug-ins are written in Python or Objective-C using the
Glyphs SDK.⁸ The Glyphs SDK (Software Development Kit) is an
open-source set of templates for creating Glyphs plug-ins. The
templates are available for both Python and Objective-C.
The Writing Plug-ins tutorial⁹ introduces the basic concepts ofplug-in development. See the Glyphs Python API
documentation¹⁰ and Glyphs Objective-C API documentation¹¹
for a complete reference. If any questions arise, feel free to ask

8 github.com/schriftgestalt/GlyphsSDK
9 glyphsapp.com/learn/plugins
10 docu.glyphsapp.com
11 docu.glyphsapp.com/Core/

Extensions

Glyphs 3 Handbook, October 2021

230

on the Glyphs forum¹² or contact the Glyphs team directly.¹³
The Glyphs SDK also offers methods for interoperating with
Glyphs from an external application. In addition to the SDK,
Glyphs supports the Open Scripting Architecture, allowing forautomation via AppleScript or JavaScript.

12 forum.glyphsapp.com
13 glyphsapp.com/contact

Extensions

Glyphs 3 Handbook, October 2021

231

17 Appendix
17.1 REGULAR EXPRESSIONSRegular expressions (often abbreviated as regex) can be used insome search fields to search for text patterns. For example,‘ [LlDd]caron ’ matches any of the following: ‘Lcaron’, ‘lcaron’,‘Dcaron’, and ‘dcaron’. Characters that have a special meaning inpatterns (such as . or ?) can be found by prefixing them with abackslash \, for example, \. or \?.
. Matches any character (a, ., -, space, …).
[abc] Matches any character within the square brackets. For
example, ‘ [ae]acute ’ matches both ‘aacute’ and ‘eacute’.
[^abc] Matches any character that is not within the square
brackets. For example, ‘ [^au]-cy ’ matches ‘e-cy’ and ‘o-cy’

but not ‘a-cy’ or ‘u-cy’.
\d Matches any digit: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. ‘ \D ’ matches any
character except for digits. For example, ‘ A\.00\d ’ matches‘A.000’ and ‘A.003’ but not ‘A.00F’ or ‘A.123’.
\w Matches word characters: letters, digits, and the underscore(_). This is the same as writing ‘ [a-zA-Z0-9_] ’. For example,‘ \w+ ’ finds ‘a’ and ‘alpha’, but not ‘a-cy’. ‘ \W ’ matches any

character except for word characters.
? Matches the preceding pattern zero or one time. For example,‘ oe? ’ finds both ‘o’ and ‘oe’; ‘ [ae]?breve ’ finds ‘abreve’,‘ebreve’, and ‘breve’; and ‘ grave(comb)? ’ finds both ‘grave’and ‘gravecomb’.
* Matches the preceding pattern zero or multiple times. For
example, ‘ A.* ’ finds ‘A’, ‘AE’, ‘Atilde’, and ‘Alpha’.
+ Matches the preceding pattern one or multiple times. For
example, ‘ A.+ ’ finds ‘AE’, ‘Atilde’, and ‘Alpha’, but not ‘A’.
{n} Matches the preceding pattern n times. For example, ‘ a{5} ’only finds ‘aaaaa’ and ‘ \d{3} ’ finds ‘000’ and ‘123’ but not ‘12’or ‘1234’.
{n,m} Like ‘ {n} ’, but finds the preceding pattern between n andm times. n may be 0 and m may be left off not to set an upper
limit. ‘ a{0,1} ’ is the same as ‘ a? ’, ‘ a{0,} ’ is the same as ‘ a* ’,and ‘ a{1,} ’ is the same as ‘ a+ ’. For example, ‘ \d{3,5} ’ finds

Glyphs 3 Handbook, October 2021

232‘123’, ‘1234’, and ‘12345’, but not ‘12’ or ‘123456’.
Useful patterns include:a.* Matches any glyph that starts with ‘a’.
.*a Matches any glyph that ends with ‘a’.
.*-.* Matches any glyph that contains a hyphen.
.*\..* Matches any glyph that contains a dot.
.*\.\d+ Matches any glyph that ends in a dot followed by digits.
\D*\.\d{3} Matches any glyph that ends in a dot and three

digits and does not contain any digits before that.
When finding and replacing with regular expressions, use ‘ \1 ’,‘ \2 ’, … to insert parts of the found pattern in the replacement.
The parts must be enclosed in round parenthesis in the findpattern. In the replace pattern, use a backslash followed by the
number referencing the parenthesized part.
For example, search for ‘ (\d)(\d) ’ and replace it with ‘ \2\1 ’
to swap two digits (‘15’ becomes ‘51’ or ‘03’ becomes ‘30’). See
also section 7.5.1, ‘Search Field’ (p. 90).

17.2 CUSTOM FEATURE CODE SNIPPETSWhen editing OpenType layout feature code (see p. 116), click thesnippets
button located in the bottom right of the window.
Choose Show Snippet Folder to reveal the folder in which
additional snippets can be placed. Snippets are defined inproperty list files (.plist) named ‘FeatureSnippetsNAME.plist’
where ‘NAME’ is the name of the snippets group. For example,
create a file named ‘FeatureSnippetsDecomposition.plist’:({title = "Soft Dotted";code = "lookupflag UseMarkFilteringSet @TopMark;sub @SoftDotted' @TopMark by @Dotless;";},{
title = "Decompose Precomposed";code = "sub @Precomp' lookup decomp @Mark;";})AppendixGlyphs 3 Handbook, October 2021

233

17.3 AUTOMATIC FEATURE GENERATION
Glyphs can automatically generate a number of OpenType
features if it finds glyphs with certain names in the font.
aalt

All Alternatives Glyphs automatically builds the aalt feature based on all featuresthat substitute glyphs.

ligaStandard Ligatures Join the glyph names of the components with an underscore (‘_’).
Some common ligatures (f_f_i, f_f_l, f_f, fi, fl,lu_lakkhangyao-thai, ru_lakkhangyao-thai) are automaticallyplaced in the ‘liga’ feature; all others go into ‘dlig’ by default.
Force a ligature into the ‘liga’ feature by adding the ‘.liga’ suffix to
its name, for example, f_b.liga or yi_yi-cy.liga.

dlig

Discretionary Ligatures Join the glyph names of the components with an underscore (‘_’),for example, f_odieresis.

hligHistorical Ligatures Ligatures with longs, or with a ‘.hlig’ or ‘.hist’ suffix.

rlig

Required Ligatures Add ‘.rlig’ to the ligature name. Also triggered by lam_alef-ar,lam_alefHamzaabove-ar, lam_alefHamzabelow-ar,
lam_alefMadda-ar, lam_alef-ar.fina,
lam_alefHamzaabove-ar.fina, lam_alefHamzabelow-ar.fina,
lam_alefMadda-ar.fina, lam_alefWasla-ar,
lam_alefWasla-ar.fina.

c2sc

Small Capitals Add ‘.sc’, ‘.c2sc’, or ‘.smcp’ to the glyph name. For separate setsfrom Capitals for ‘c2sc’ and ‘smcp’, use ‘.c2sc’ for uppercase glyph names and‘.smcp’ for lowercase glyph names.

smcp

Small Capitals Add ‘.sc’ or ‘.smcp’ to the glyph name.

c2pc

Petite Capitals Add ‘.pc’, ‘.c2pc’, or ‘.pcap’ to the glyph name.
from Capitals

pcap

Petite Capitals Add ‘.pc’ or ‘.pcap’ to the glyph name.

sups
subs

sinf

Superscript Add ‘.sups’ to the glyph name. Or extend figure names withsuperior, without the period, for example, onesuperior.
Subscript Add inferior, ‘.sinf’ or ‘.subs’ to the glyph name. If the font does
not differentiate between subscript and scientific inferior, use one
set of ‘.subs’ glyphs, and Glyphs will create both features with it.
Scientific Inferiors Add inferior, ‘.sinf’ or ‘.subs’ to the glyph name.

AppendixGlyphs 3 Handbook, October 2021

234

afrc

Alternative Fractions Add figures, slash, and any of these nut fraction glyphs to the
font: oneovertwo, zerooverthree, oneoverthree, twooverthree,
oneoverfour, threeoverfour, oneoverfive, twooverfive,
threeoverfive, fouroverfive, oneoversix, fiveoversix, oneoverseven,twooverseven, threeoverseven, fouroverseven, fiveoverseven,sixoverseven, oneovereight, threeovereight, fiveovereight,
sevenovereight, oneovernine, twoovernine, fourovernine,
fiveovernine, sevenovernine, eightovernine, oneoverten,
threeoverten, sevenoverten, nineoverten, oneovereleven,twoovereleven, threeovereleven, fourovereleven, fiveovereleven,sixovereleven, sevenovereleven, eightovereleven, nineovereleven,tenovereleven, oneovertwelve, fiveovertwelve, sevenovertwelve,
elevenovertwelve, oneoveronehundred.

frac

Fractions The frac feature is generated from the ‘.numr’, ‘.dnom’, andfraction glyphs. If they are not present in the font, then thefeature will be composed of any pre-built fractions mentioned inthe ‘afrc’ above.

dnom

Denominators Add ‘.dnom’ to the glyph name.

numr

Numerators Add ‘.numr’ to the glyph name.

onum

Oldstyle Figures Add ‘.osf’ (for proportional oldstyle figures) or ‘.tosf’ (for tabular
oldstyle figures) to the glyph name. Can be applied to othercharacters as well, for example, currency signs.

tnum

Tabular Figures Add ‘.tf’ (for tabular figures) or ‘.tosf’ (for tabular oldstyle figures)to the glyph name. Can be applied to other characters as well, forexample, currency signs. Do not use the figure suffix for thedefault figures; for example, if the default figures are proportional
oldstyle figures, do not use figures with a ‘.osf’ suffix.

pnum

Proportional Figures Add ‘.osf’ (for proportional oldstyle figures) or ‘.lf’ (forproportional lining figures) to the glyph name. Can be applied toother characters as well, for example, currency signs.

lnum

Lining Figures Add ‘.lf’ (for proportional lining figures) or ‘.tf’ (for tabular figures)to the glyph name. Can be applied to other characters as well, forexample, currency signs.

ordn

Ordinals Automatically built if default figures, numero, ordfeminine, andordmasculine are found in the font.

ornm

Ornaments Add ‘.ornm’ to the glyph name of letters A–Z or a–z. Also, makesure the bullet glyph is in the font.

AppendixGlyphs 3 Handbook, October 2021

235

hist

Historical Forms Add ‘.hist’ to the glyph name.

case

Uppercase Forms Add ‘.case’ to the glyph name or ‘.lf’ to the name of a figure.

cpsp

Capital Spacing Add uppercase letters to the font, and choose Capital Spacingfrom the plus
menu in the bottom left of File → Font
Info… → Features.

locl

Localized Forms Add ‘.loclXXX’ to the glyph name, where ‘XXX’ represents thethree letter language tag,¹ for example, ‘.loclENG’ for English, or‘.loclSVE’ for Swedish. There also is a built-in list of glyphs thattrigger localizations:
idotaccent, i.TRK or i.loclTRK: trigger i substitutions for TRK,AZE, CRT, KAZ, and TAT if i is present.
Scommaccent, Tcommaaccent, scommaaccent, andtcommaaccent: trigger substitutions for ROM and MOL if
Scedilla, Tcedilla, scedilla, and tcedilla are present.
periodcentered.loclCAT (add a ‘.case’ suffix for uppercase;
L_periodcentered_L.loclCAT, l_periodcentered_l.loclCAT; or thelegacy Ldot, ldot: trigger ella geminada (punt volat) substitutions
for CAT if L, l, and periodcentered are also present in the font.
Iacute_J.loclNLD and iacute_j.loclNLD, or Jacute and jacute:trigger accented ij substitutions for NLD if Iacute, iacute, J, and j
are present.
six-ar and numbers with ‘.urdu’ suffix (for example,
four-persian.urdu) will trigger URD localization for Persian.

cv01–
cv99

Character Variants Add ‘.cv01’ through ‘.cv99’ to the glyph name. Note that the
OpenType spec² recommends grouping related alternative glyphs
into the same feature. Use manual feature code if there are
multiple alternatives for a glyph; for example, place the following
code in a single ‘cv##’ feature:
sub a from [a.alt1 a.alt2 a.alt3].

ss01–
ss20

Stylistic Set Add ‘.ss01’ through ‘.ss20’ to the glyph name. Stylistic sets canbe named (see p. 121).

salt

Stylistic Alternates By default, Glyphs will duplicate the ‘ss01’ feature in ‘salt’. Adobe
Illustrator and Adobe Photoshop make use of this feature in their
OpenType palettes.
1 docs.microsoft.com/typography/opentype/spec/languagetags
2 docs.microsoft.com/typography/opentype/spec/features_ae

AppendixGlyphs 3 Handbook, October 2021

236

swsh

Swashes Add ‘.swsh’ to the glyph name.

titl

Titling Add ‘.titl’ to the glyph name.

init

Initial Forms Add ‘.init’ to the glyph name.

medi

Medial Forms Add ‘.medi’ to the glyph name.

med2

Medial Forms Add ‘.med2’ to the glyph name. Used only with the Syriac script.

fina

Terminal Forms Add ‘.fina’ to the glyph name.

fin2

Terminal Forms Add ‘.fin2’ to the glyph name. Used only with the Syriac script.

fin3

Terminal Forms Add ‘.fin3’ to the glyph name. Used only with the Syriac script

fwid

Full Widths Add ‘.full’ or ‘.fullwidth’ to the glyph name, and emspace will
substitute space.

hkna

Horizontal Add ‘.hori’ to a Katakana or Hiragana glyph name.
Kana Alternates

hojo

Hojo Kanji Forms Add ‘.hojo’ to the glyph name. Use it for JIS X 0212–1990 Kanji
Forms. The respective unsuffixed default glyphs should be
JIS X 0213: 2004 shapes.

hwid

Half Widths Add ‘.half’ to the glyph name, end enspace will substitute space.

ital
pkna

Italics Add ‘.italic’ to the glyph name.
Proportional Kana Add ‘.proportional’ to a Katakana or Hiragana glyph name.

pwid

Proportional Widths Add ‘.proportional’ to the glyph name.

qwid

Quarter Widths Add ‘.qartwidth’ to the glyph name.

ruby
twid
vkna
vrt2

Ruby Notation Forms Add ‘.ruby’ to the glyph name.
Third Widths Add ‘.thirdwidth’ to the glyph name.
Vertical Add ‘.vert’ to a Katakana or Hiragana glyph name.
Kana Alternates
Vertical Alternates Add ‘.vert’ to the glyph name.
and Rotation

abvs

Above-base Triggered by certain base and mark combinations in
Substitutions South Asian scripts.

akhn

Akhands Triggered by a number of letter and ligature glyphs inSouth Asian scripts.

blwf

Below Base Forms Triggered by halants and ‘.below’ glyphs in combination with arange of other glyphs in South Asian scripts.

AppendixGlyphs 3 Handbook, October 2021

237

blws

cjct

Below-base Triggered by certain letter combinations in South Asian scripts,
Substitutions such as Gujarati letters with a ‘.straight’ suffix or specific halantcombinations in Oriya.
Conjunct Forms Triggered by conjunct clusters in South Asian scripts.

half

Half Forms Triggered by half-form glyphs ending in Halfform in conjunction
with halant in South Asian scripts.

nukt

Nukta Forms Triggered by nukta ligatures ending in Nukta and the scriptabbreviation, in conjunction with the same glyphs without nukta,
in South Asian scripts.

prefPre-base Forms Triggered by a halant in certain letter constellations in South andSoutheast Asian scripts.

presPre-base Substitutions Triggered by certain matra and conjunct constellations inSouth Asian scripts. Define width variants with number suffixes,
for example, iMatra-deva.01 through ‘iMatra-deva.20’, and thefeature generator will pick the appropriate width variant foreach conjunct.

psts

Post-base Triggered by a halant glyph in combination with script-specific
Substitutions base and matra constellations, such as eMatra-kannada with‘.base’ and ‘.base.e’ glyphs in Kannada. Applies to South Asian
scripts only.

rkrf

Rakar Forms Triggered by rakar ligatures in conjunction with the isolated
glyphs and halant in Devanagari, Gujarati, and Malayalam.

rphf

Reph Forms Triggered by ra-deva, halant-deva and reph-deva, or ananalogous glyph structure in other South Asian scripts.

vatu

Vattu Variants Triggered by the presence of specific lookups in the ‘rkrf’ feature.

ccmp

Glyph Composition A wide range of glyph constellations in various scripts will trigger
and Decomposition the automatic creation of ‘ccmp’. For instance, idotless andjdotless next to i, j and combining top marks will trigger a ‘ccmp’
lookup for Latin, which replaces the dotted with the dotless
glyphs before top marks.

markMark to Base Add anchors without underscores to base letters, like ‘top’ orPositioning ‘bottom’, and add combining marks (for example, acutecomb)with underscore anchors (for example, ‘_top’ or ‘_bottom’) to
glyphs in the font. Their width is automatically set to zero atexport. This GPOS feature is not added to the Features tab but
calculated at export (see p. 121).

AppendixGlyphs 3 Handbook, October 2021

238

mkmk

Mark to Mark Add combining marks (U+0300 and above) with both
Positioning underscore (for example, ‘_top’) and non-underscore anchors (forexample, ‘top’) to glyphs in the font. This GPOS feature is not
added to the Features tab but calculated at export (see p. 121).

17.4 CUSTOM PARAMETERS
Custom parameters provide additional settings and are identified
by their property and have a value. In this appendix, theproperties are printed in bold. The short description next to it
explains the respective values and the function of the parameter.
Parameters can be added to the Custom Parameters field of theFont, Masters, and Exports tab of File → Font Info (Cmd-I).
Enabled parameters are displayed in black; disabledparameters are displayed in gray. Quickly disable a parameter byunchecking the checkbox to the left of its property name.
Custom parameters in camelcase (‘exampleName’) are definedin the UFO specification and change the font information. In
contrast, capitalized ones (‘Example Name’) are specific to
Glyphs and usually change something in the font (for instance,
run a filter on the outlines). UFO parameters follow the naming
convention for Font Info properties outlined in the UFO 3
specification published in March 2012. Glyphs also makes use ofa simplified naming convention. Wherever possible, leave out theprefix of the keyword. For example, instead of‘openTypeNameDescription’, use ‘description’, or ‘blueScale’
instead of ‘postscriptBlueScale’. Both long and short versions
work side by side.
Add Class string Add an OpenType class to the font. The first word
must be the class name (without the at sign), followed by asemicolon, and the new class code.
Add Feature string Add an OpenType feature to the font. The firstword must be the feature tag, followed by a semicolon, and the
new feature code. It will be put at the end of the list, so it may
not be in the right order.
Add Prefix string Add an OpenType prefix to the font. The first word
must be the prefix name, followed by a semicolon, and the new
prefix code.
ascender string Overrides the Ascender value for a certain script. The
values will be preferred for glyphs associated with the script in
the Edit view. As value, enter the lowercase name of the script,

AppendixGlyphs 3 Handbook, October 2021

239

followed by a colon and the value, e.g., cyrillic: 720. Use
multiple parameters for multiple scripts.
Autohint boolean Forces autohinting for the given instance,
regardless of the setting in the Export dialog
Axis Location list Remaps a master or instance from the internal
design space coordinates to values that are exposed in a variable
font user interface (‘external coordinates’). This can be useful if
your internal design space coordinates do not already adhere to
the suggestions of the OpenType specification.
Axis Mappings Creates an avar table by mapping internal design
coordinates to external coordinates exposed to the user. Put theinternal coordinate into the left column, and the external
coordinate in the right column. Or, add and edit values byclicking and dragging in the chart. The range for the internal
coordinates is determined by the actual axis positions of themasters in Font Info > Masters, whereas the range for external
coordinates is determined by the Axis Location parameters in
Font Info > Masters.
Note that axis mappings work only per axis, and cannot be
adjusted for different positions of other axes. This is a limitationof the avar implementation, so you may have to compromise on
one of the mappings or pick an average value as thetarget mapping.
blueFuzz integer BlueFuzz value. This corresponds to the Type 1/CFF
BlueFuzz field. From the Type 1 specification: The number
specifies the ‘units to extend (in both directions) the effect of analignment zone on a horizontal stem. If the top of a horizontal
stem is within BlueFuzz units (in character space) outside of a
top-zone, the interpreter will act as if the stem top were actually
within the zone; the same holds for the bottoms of horizontal
stems in bottom-zones. The default value of BlueFuzz is 1.
Adobe themselves state that BlueFuzz was intended tocompensate ‘for slightly inaccurate coordinate data.’ They
therefore suggest adjusting the alignment zones themselves aswell as explicitly setting BlueFuzz to zero. ‘Because a non-zerovalue for BlueFuzz extends the range of alignment zones,alignment zones must be declared at least (2 × BlueFuzz + 1) units
apart from each other. Therefore, a default BlueFuzz value of 1
implies that alignment zones should be at least 3 units apart fromeach other.’

AppendixGlyphs 3 Handbook, October 2021

240

blueScale float PostScript BlueScale value. This corresponds to theType 1/CFF BlueScale field. Controls the font size until which
overshoot display is suppressed. Calculated as (pointsize at 300
dpi – 0.49) ÷ 240, e.g., 0.039625 for 10 points at 300 dpi. If you
do not set the value yourself, blueScale defaults to 0.037, whichcorresponds to 9.37 points at 300 dpi or 39 pixels per em. Thismeans that, in this case, overshoots will be visible if at least 40
pixels are used to display an em. The maximum blueScale value
depends on the sizes of your alignment zones. The maximum
pointsize at 300 dpi is calculated as 0.49 + 240 ÷ largestalignment zone size, which corresponds to a PPM (size in pixels
per em) of 2.04 + 1000 ÷ largest alignment zone size. The
product of (maximum pointsize – 0.49) × (largest alignment zone
height) must be less than 240.
For example, your largest zone is 21 units deep, thus: 2.04 + 1000
÷ 21 = 49.659, so the maximum PPM at which overshoots can besuppressed is 49. The corresponding maximum pointsize is 0.49
+ 240 ÷ 21 = 11.919 points at 300 dpi, thus the blueScale value
cannot exceed (11.919 – 0.49) ÷ 240 = 0.04762.
blueShift integer PostScript BlueShift value. This corresponds to theType 1/CFF BlueShift field. Default value is 7. Extends for verysmall glyph features beyond the font size indicated by blueScale.
Overshoots inside an alignment zone are displayed if: (a) they are
equal to or larger than BlueShift and (b) if they are smaller than
BlueShift but larger than half a pixel. E.g. blueScale is set tosuppress overshoots until 32 PPM, blueShift is 6, overshoots are
12 units deep. The stroke endings are slightly slanted and extend
5 units below the baseline. Between 0 and 32 PPM, the baseline
will be kept completely level. Starting at 33 PPM, the overshoots
will kick in. But the stroke endings will stay flat, because 5 units
do not cover half a pixel until 100 PPM.
capHeight string Overrides the Cap Height value for a certain script.
The values will be preferred for glyphs associated with the scriptin the Edit view. As value, enter the lowercase name of the script,
followed by a colon and the value, e.g., adlam: 680. Use multiple
parameters for multiple scripts.
CJK Grid integer Number of rows and columns of a dotted-line griddisplayed when editing CJK glyphs. You can set number of rows
and columns separately with the CJK Grid Horizontal and CJK
Grid Vertical parameters. No grid is displayed when none ofthese parameters are set. This parameter can be localized like the

AppendixGlyphs 3 Handbook, October 2021

241

CJK Guide parameter.
CJK Grid Horizontal integer Number of columns of a dotted-line griddisplayed when editing CJK glyphs. This parameter can belocalized like the CJK Guide parameter.
CJK Grid Vertical integer Number of rows of a dotted-line griddisplayed when editing CJK glyphs. This parameter can belocalized like the CJK Guide parameter.
CJK Guide string Percentage of inset for CJK guide squares, e.g., 10
for 10 percent. If set, Glyphs will display a second square guidefor the virtual body in CJK glyphs. You can localize the parameterby preceding the value with the script name, e.g., kana:5. If you
want to define virtual bodies for more than one script, add moreCJK Guide parameters.
codePageRanges

list Sets the appropriate bits of theulCodePageRange1 and ulCodePageRange2 entries in the OS/2

table. ‘This field is used to specify the code pages encompassedby the font file in the cmap subtable for platform 3, encoding ID 1
(Microsoft platform).’ Every activated ‘code page is considered
functional. Each of the bits is treated as an independent flag andthe bits can be set in any combination. The determination of“functional” is left up to the font designer, although character set
selection should attempt to be functional by code pages if at all
possible.’
Color Layers to SVG boolean If turned on, will produce an SVG tablewith the color information stored in CPAL Color layers, or, in alayered-font setup, from the masters that have a Master Colorparameter.
Color Palette for CPAL integer Index of the color palette (as definedin the Color Palettes parameter) that is supposed to be used
for the CPAL OpenType table.
Color Palette for SVG integer Index of the color palette (as defined in
the Color Palettes parameter) that is supposed to be used for
the SVG OpenType table. Useful only in conjunction with the
Color Layers to SVG parameter.
Color Palettes list Define color palettes for export as a CPAL
OpenType table in ‘Microsoft-style’ CPAL/COLR color fonts. Thisparameter allows Glyphs to display a preview of color glyphs in
Font and Edit view.
Compatible name Table

Appendixboolean Exports a legacy name table as

Glyphs 3 Handbook, October 2021

242

expected by some Mac apps (in particular Quark XPress and
FontExplorer). It improves grouping of font styles in the fontmenu of those apps, but may break functionality elsewhere,
especially Microsoft Office. Therefore, caution is advised in theuse of this parameter.
compatibleFullNames Sets name table ID 18, ‘Compatible Full Name’,a Mac-only name which is intended to be preferred over ID 4(‘Full Name’). If not set, the value for name table ID 18 is
calculated from Family Name plus space plus Style Name of therespective instance. ‘On the Macintosh, the menu name isconstructed using the FOND resource. This usually matches theFull Name. If you want the name of the font to appear differently
than the Full Name, you can insert the Compatible Full Name in
ID 18.’ Caution: since this may lead to a situation where Mac andWindows use different full names for the same font, it may breakcross-platform interoperability of documents.
copyrights Copyright statement. Overrides the entry in the
Copyright field in the Font tab of the Font Info. Corresponds to
the OpenType name table ID 0, ‘Copyright notice’.
cvt Table string List of values for the cvt (control value table). Whenyou open a TTF in Glyphs, the application will store the existing
cvt values in this parameter. This is intended to preserve existing
TT hinting for reexporting, and certainly not to be edited
manually. Remove this parameter if you want to do your own
TrueType instructioning.
Decompose Components boolean Decompose allcomponents on export
Decompose Components in Variable Font boolean When exportinga (TT-based) variable font, all components will be decomposed tooutlines. This option is intended to circumvent a CoreText
rendering bug in macOS versions prior to Mojave 10.14.5, which
affected the spacing of composite glyphs with changing LSB
values under certain circumstances. Since the resulting variable
font contains no more components, its file size can be expected
to increase dramatically.
Decompose Glyphs list At export, decomposes the composite glyphs
listed. This can be useful if you want to avoid changing ofcomposites when one of the components is being changed with
the Rename Glyphs parameter.
Default Layer Width integer Newly created glyphs and layers will

AppendixGlyphs 3 Handbook, October 2021

243

have the specified width rather than the default 600 units, or1000 units for CJK glyphs, or 200 units for corner components. If
you prefix the value with a (lowercase) script name and a colon,
the specified layer width will only be applied to glyphs of that
script, e.g., cyrillic: 400 or adlam: 450. Add multiple
parameters for multiple scripts.
descender string Overrides the Descender value for a certain script.
The values will be preferred for glyphs associated with the scriptin the Edit view. As value, enter the lowercase name of the script,
followed by a colon and the value, e.g., arabic: -300. Use
multiple parameters for multiple scripts.
descriptions Description of the font. Corresponds to the OpenTypename table ID 10: ‘description of the typeface. Can containrevision information, usage recommendations, history,
features, etc.’
Design Grid string Number of rows and columns of a dotted-line grid.
Mostly used for CJK design. It can take three values:[script:]horizontal,verticaldesigners Name of the designer. Overrides the Font Info > Font >Designer entry for the given instance. Corresponds to the
OpenType name table ID 9, ‘name of the designer of the typeface.’
designerURL string The URL of the designer. Overrides the Font Info
> Font > Designer URL entry for the given instance. Corresponds
to the OpenType name table ID 12, ‘URL of typeface designer(with protocol, e.g., http://, ftp://).’Disable autohinting for glyphs list Excludes listed glyphs from the
PostScript autohinting at export time. (TT autohinting cannot bedisabled on a per-glyph basis.) This can be useful if some glyphs
do not lend themselves for hinting, e.g., ornaments.
Disable Masters list Disables all specified masters. Intended mainly
for specific production workflows, or for testing purposes, e.g., tosee if interpolation still behaves as expected if you leave out oneof the intermediate masters.
Disable Subroutines boolean If set, CFF outline subroutinization isdisabled when the font is exported. Use this (a) when the font hascomplex outlines with many nodes and does not export at all, or(b) for testing purposes when the font has many glyphs, e.g., a
CJK font, and takes too long to compile every time you export.
DisableAllAutomaticBehaviour

Appendixboolean Will disable most of the

Glyphs 3 Handbook, October 2021

244

automatic stuff on export.
reordering .notdef and spacezero widths for nonspacing marks
Don’t use Production Names boolean If checked, Glyphs will not
automatically rename glyphs of the final font file according to theinternal glyph database, but export the current glyph names.
Some applications and systems, amongst which the text engine
of OS X 10.4, expect the AGL naming scheme, though. This isequivalent to the File > Font Info > Other Settings > Use Custom
Naming setting, and intended for users who want to employ theirown custom naming scheme.
EditView Line Height float Sets the line height for text set in an Edittab. Useful if you have unusual vertical metrics, and the default
leading seems inappropriate. Has no effect on the exported
font file.
Elidable STAT Axis Value Name string Declares the style name of theinstance as elidable for the axis specified in the parameter’s value.
As value, use the four-letter tag of the respective axis. Typically,
you will add this parameter in the regular style, and you will add
one for each axis for which the name is an elidable display string.
Example: In a two-axis setup, an instance called Regular has two
Elidable STAT Axis Value Name parameters, one with wght and
one with wdth as parameter values. A display string is deemed
elidable if it is left out when combined with other display strings.
Usually this is the case for default-style names like ‘Regular’,‘Normal’, or the like. The semibold weight combined with regularwidth is usually just called ‘Semibold’, not ‘Semibold Regular’; orthe normal weight in combination with the italic style is simply
called ‘Italic’, not ‘Regular Italic’. Thus, the display name ‘Regular’is considered elidable.
Enforce Compatibility Check boolean Forces compatibility checks
between all masters. Compatibility is only checked for a pair ofmasters if they are both required for interpolating one of theinstances defined in File > Font Info > Instances. Useful if you
have no instance between certain masters, but still need to keepthem compatible, e.g., for a variable font.
Export AAT boolean Toggles the export of Apple Advanced
Typography (AAT) instructions as entered in File > Font Info >Features > Prefix > morx. If morx instructions are present in Font
Info, they will be compiled into a morx table by default. This

AppendixGlyphs 3 Handbook, October 2021

245

parameter is intended as an option to prevent its export, and thus
create a pure OpenType font.
Export COLR Table boolean Toggles the export of CPAL and COLR
tables. If all conditions are met, CPAL and COLR tables will becompiled and exported by default, though. This parameter isintended as an option to prevent their export.
Export Folder string Adds a subfolder to the default export
destination. Please make sure to use only characters that are valid
in folder names.
Export Glyphs list Exports all glyphs listed, regardless of whether theglyph was set to export or not.
Export kern Table boolean On export, will write an old-style kerntable in addition to the kern feature in the GPOS table. Only
affects in TrueType exports (i.e., .ttf or TT-flavored webfonts). All
group kerning will be expanded into all possible singleton pairs.
This means that you will have to subset before using thisparameter, otherwise you risk a table overflow. Use of thisparameter is strongly discouraged, and only makes sense in rareedge cases where support of defunct or legacy software isnecessary. Only use it if you know what you are doing.
Export Mac Name Table Entries boolean Control if Macintosh nametable entries are exported (they are by default). So this is meant
to disable the Macintosh names.
Export morx Table boolean Inserts a morx (‘extended glyph
metamorphosis’) AAT table into the exported font. Takes thecontents of a prefix with the name morx in File > Font Info >Features, written in MIF code (metamorphosis input file). For this
to work, the ftxenhancer command line tool of the Apple Font
Tools must be installed. For more information, refer to the
documentation included with the Apple Font Tools.
Export OpenType boolean Toggles the export of most OpenTypetables. If disabled, and if morx data is entered in File > Font Info >Features > Prefix, will export a pure AAT font.
Export sbix Table boolean Toggles the export of an sbix table. If allconditions are met, an sbix table will be compiled and exported
by default, though. This parameter is intended as an option toprevent its export.
Export STAT Table boolean Toggles the export of the STAT table. A
STAT table will be compiled and exported by default, though. This

AppendixGlyphs 3 Handbook, October 2021

246

parameter is intended as an option to prevent its export.
Export SVG Table boolean Toggles the export of an SVG table. An SVG
table will be compiled and exported by default, though. Thisparameter is intended as an option to prevent its export.
Family Alignment Zones list This parameter can help create a moreconsistent screen appearance at low resolutions, even if theovershoots differ in the individual weights. It is a good idea toreduplicate the alignment zones of the most important font inyour family, usually of the Regular or Book instance. A rasterizer
will then try to align all weights if the height difference between
the individual weight and the family alignment is less than
one pixel. Important: For this mechanism to work, familyalignment zones must be compatible with the alignment zones
set up in the masters.
familyNames
Font family name. Overrides the entry in the Family
Name field in the Font section of the Font Info. Corresponds to
the OpenType name table IDs 1 and 4. Used to calculate IDs
3, 4 and 6.
Feature for Feature Variations string Define the OpenType feature
into which glyph variant substitutions (a.k.a. ‘Bracket tricks’) are
written in OpenType variable fonts. Default is rvrn.
fileName string Name for the font file, without the dot suffix, i.e.,
without .otf, etc. Gives you the chance to export two versions of
the same font style name without the second file overwriting thefirst one.
Filter string Triggers Glyphs filters or app functions in an instance,
after decomposition of composite glyphs. The values for thebuilt-in filters are as follows:
AddExtremes
Autohinting
HatchOutlineFilter; OriginX: x; OriginY: y; StepWidth: distance;
Angle: angle; Offset: thickness
OffsetCurve; x; y; makestroke; position/auto
RemoveOverlap
Roughenizer; segmentlength; x; y; angle
RoundCorner; radius; visualcorrection
RoundedFont; stem

AppendixGlyphs 3 Handbook, October 2021

247

Transformations; LSB: ±shift*; RSB: ±shift*; Width: ±shift;
ScaleX: percent; ScaleY: percent; Slant: degrees; SlantCorrection:bool; OffsetX: amount; OffsetY: amount; Origin: selectReplace all words in italics with your values: The boolean values(makestroke, visual correction, bool) are 1 for yes and 0 for no.
The value for position/auto must be a floating point number
where 0.0 represents 0%, and 1.0 stands for 100%, or the string
auto for Auto Stroke. The stem value in the RoundedFont syntax
is optional. The select value in the Transformations syntax can bea number from 0 to 4, representing the five options displayed in
Filter > Transformations > Transform > Origin: cap height (0), half
cap height (1), x-height (2), half x-height (3), baseline (4).
If you want a filter to be applied only to some glyphs, add
include: or exclude:, followed by space- or comma-separated
glyph names, e.g., RemoveOverlap; exclude:a,b,c.
If you are using third-party filters, refer to their documentation
for the parameter string. In particular, the include and exclude
options may not be available.
If you want to apply filters before decomposition, use thesevalues with a PreFilter parameter.
fontName!dont Localize

fpgm Table Assembly string Assembly code for the fpgm (fontprogram) table. When you open a TTF in Glyphs, the application
will store the existing fpgm code in this parameter. This isintended to preserve existing TT hinting for reexporting, andcertainly not to be edited manually. Remove this parameter if you
want to do your own TrueType instructioning.
fsTypelist A list of bit numbers indicating the embedding type. The
bit numbers are listed in the OpenType OS/2 specification.
Corresponds to the OpenType OS/2 table fsType field. ‘Type flags.
Indicates font embedding licensing rights for the font.
Embeddable fonts may be stored in a document. When adocument with embedded fonts is opened on a system that does
not have the font installed (the remote system), the embedded
font may be loaded for temporary (and in some cases, permanent)
use on that system by an embedding-aware application.
Embedding licensing rights are granted by the vendor of the font.
The OpenType Font Embedding DLL Specification and DLL
release notes describe the APIs used to implement support for
OpenType font embedding and loading. Applications that

AppendixGlyphs 3 Handbook, October 2021

248

implement support for font embedding, either through use of the
Font Embedding DLL or through other means, must not embed
fonts which are not licensed to permit embedding. Further,applications loading embedded fonts for temporary use (seePreview & Print and Editable embedding below) must delete thefonts when the document containing the embedded font isclosed.’ You can set fsType to one of these five states:
Installable: ‘Fonts with this setting indicate that they may beembedded and permanently installed on the remote system by
an application. The user of the remote system acquires theidentical rights, obligations and licenses for that font as theoriginal purchaser of the font, and is subject to the same end-user
license agreement, copyright, design patent, and/or trademark as
was the original purchaser.’
Forbidden: ‘Restricted License embedding: Fonts that have only
this bit set must not be modified, embedded or exchanged in any
manner without first obtaining permission of the legal owner.
Caution: For Restricted License embedding to take effect, it must
be the only level of embedding selected.’
Editable: ‘When this bit is set, the font may be embedded but
must only be installed temporarily on other systems. In contrast
to Preview & Print fonts, documents containing Editable fonts
may be opened for reading, editing is permitted, and changes
may be saved.’
Preview & Print: ‘When this bit is set, the font may be embedded,
and temporarily loaded on the remote system. Documents
containing Preview & Print fonts must be opened “read-only;” noedits can be applied to the document.’
Subsetting forbidden: ‘When this bit is set, the font may not be
subsetted prior to embedding. Other embedding restrictions
also apply.’
gasp Table Sets the gasp table (‘grid-fitting and scan-conversion
procedure’) for TrueType fonts. It controls the two PPM
thresholds at which the recommended on-screen rendering
behavior changes. The gasp table contains rendering
recommendations for both a traditional grayscale and a
ClearType subpixel renderer. However, keep in mind that arenderer may ignore the data stored herein.
‘This table contains information which describes the preferredrasterization techniques for the typeface when it is rendered on

AppendixGlyphs 3 Handbook, October 2021

249

grayscale-capable devices. This table also has some use formonochrome devices, which may use the table to turn off hinting
at very large or small sizes, to improve performance.’ The default
threshold sizes are 8 and 20 PPM. Because there are two
thresholds, three ranges can be differentiated:no hinting & symmetric: Until the first threshold size, nogridfitting is applied, and text is rendered with antialiasing
wherever possible. ‘At very small sizes, the best appearance ongrayscale devices can usually be achieved by rendering theglyphs in grayscale without using hints.’
hinting & asymmetric: Between the two threshold sizes, therenderer is recommended to apply gridfitting and suppress
grayscale. ‘At intermediate sizes, hinting and monochrome
rendering will usually produce the best appearance.’ In ClearType,the matter is handled asymmetrically, i.e., vertical gridfitting isapplied, while horizontally, subpixel rendering is used.
hinting & symmetric: Beyond the thresholds, the rasterizer is
instructed to apply gridfitting and render the shapes in grayscale.
‘At large sizes, the combination of hinting and grayscale rendering
will typically produce the best appearance.’ The ClearTyperasterizer is instructed to apply symmetric smoothing, i.e., to use
anti-aliasing in y direction in addition to horizontal subpixel
rendering. ‘At display sizes on screen, […] this new improvementof the Windows font renderer produces smoother andcleaner-looking type’ (Now Read this: The Microsoft Cleartype
Font Collection, Microsoft 2004, p. 14).
Get Hints From Master string Defines which master is taken as sourceof manual PS and TT hints, sometimes also referred to as the‘main master’. Hinting in other masters will be ignored. If not set,manually entered hints will be taken from the first master listed inFile > Font Info > Masters. This also affects treatment of
TTFStems and TTFZones parameters: only in the indicatedmaster, the UI for those parameters will provide the delta andrange buttons.
glyphOrder list Sets the order of glyphs in both the working file andthe final font. Glyph names need to be separated by newlines.
You can copy and paste the content of a List Filter. Glyphs notlisted but still in the font will be appended after listed glyphs, inthe default order that Glyphs employs.
Grid Spacing integer Set the coordinate precision for the resulting

AppendixGlyphs 3 Handbook, October 2021

250

CFF font, in font units. The value corresponds to the quotient of
the Grid Spacing value divided by the Subdivision value in File >Font Info > Other Settings. At export time though, any Grid
Spacing value smaller than 1.0 will result in coordinate precision ahundred times finer than the default unit-grid rounding. In otherwords, all parameter values smaller than 1 are equivalent to 0.01.
The purposes of this parameter is to avoid too coarse rounding ofpoint coordinates in very thin interpolations. Any Grid Spacing
value equal to or larger than 1.0 will result in grid-unit rounding.
In other words, it any value greater than 1.0 is equivalent to 1.0.
The parameter has no effect on TrueType outlines, which cannot
have higher coordinate precision.
Hangul Composition Groups list Defines composition groups for
Hangul type design. Pick a key Jamo glyph and similarly
formatted variants for automated composition of complex
Hangul composites.
Has WWS Names boolean Sets bit 8 of the fsSelection entry in the
OS/2 table: According to the OpenType specification, this bit
indicates that ‘the font has name table strings consistent with aweight/width/slope family without requiring use of “name” IDs 21
and 22.’ This makes sense only if the naming of your font alreadyadheres to the WWS scheme.
hheaAscender integer Height of the ascender as stored in the hhea
(horizontal header) table. ‘Typographic ascent (distance frombaseline of highest ascender).’
The hhea vertical metrics are mainly in use on Mac apps,
including browsers on the Mac. Therefore, unless you have tomaintain backwards compatibility with legacy software, it isrecommended to keep the hhea values in sync with the typo*values, and make sure that Use Typo Metrics (fsSelection bit7) is switched on.
For a detailed discussion of vertical metrics, see the Vertical
Metrics tutorial.
hheaDescender integer A negative integer describing the depth of thedescender as stored in the hhea table. ‘Typographic descent(distance from baseline of lowest descender).’ For a discussion of
the hhea values, see hheaAscender..
hheaLineGap integer The recommended interlinear whitespace as
stored in the hhea table. ‘Typographic line gap. Negative values
are treated as zero in some legacy implementations.’ For a

AppendixGlyphs 3 Handbook, October 2021

251

discussion of the hhea values, see hheaAscender.
Ignore Vertical Hints boolean In a TrueType export, will ignore allstem hints that are linked to a vertical stem definition, as set forth
in a TTFStems parameter. Makes sense in exports intended for
subpixel rendering, or for webfont exports where you want tokeep the file size as small as possible. Only affects manual TT
hinting, does not apply to TTF Autohint or PS hinting.
Import Font Reference a different .glyphs file, and all glyphs of thereferenced file that are not in the host font, will be hot-linked, inthe order of their layers and masters, as if you had copied theglyphs from one file to the other. The glyphs will be visible andtypeable in Font and Edit view, but locked. Useful for splitting
design work between multiple users, or sharing smart
components between files.
Import Master
Reference a master in different .glyphs file, and it will
be hot-linked into the host file, as if you had added it into File >Font Info > Masters. Interpolation values must be set compatibly
in both files. Add one parameter for each master you wantto hot-link.
Instance Preview list Changes the preview string of an instance in File> Font Info > Instances from the default ‘Aang126’ to the glyph
names listed.
InterpolationWeightY float Vertical interpolation value. In an
instance, you can differentiate between interpolation along the xaxis and interpolation along the y axis by introducing this custom
parameter. For it to take effect, it must differ from theinterpolation weight of the instance. Be careful, as this can leadto deformation in diagonals. We advice to keep theInterpolationWeightY close to the normal Weightinterpolation value.
E.g., there are two masters at weight 20 and 100, and an instancewith a weight interpolation value of 50. The vertical stems lookcorrect, but the horizontals look too thin. They would look rightat 60, but then the verticals would appear too thick. So, you keep
your instance at 50, but add the custom parameter
InterpolationWeightY with a value of 60. Now, the vertical stems(x coordinates) are still interpolated with 50, and the horizontals(y coordinates) with 60.
isFixedPitch boolean Sets the isFixedPitch flag in the post table.
Indicates whether the font is monospaced. Software can use thisAppendixGlyphs 3 Handbook, October 2021

252

information to make sure that all glyphs are rendered with thesame amount of pixels horizontally at any given PPM size.
⚠️Danger: Will sync the width of all glyphs with the width of
the space glyph This can be overwritten by adding a .monospace
number value in the master settings.
italicAngle string Overrides the Italic Angle value in File > Font Info >Masters either for a certain script or for the whole font. The
values will be preferred for glyphs associated with the script in
the Edit view. As value, enter the lowercase name of the script,
followed by a colon and the value, e.g., latin: 7. Use multiple
parameters for multiple scripts. The number must be an angle inclockwise degrees from the vertical. Also useful for upright fontswith an angle other than 0°, because macOS may interpret
non-zero angles as italic. Affects the CFF ItalicAngle, the post
italicAngle, the x offsets of the OS/2 subscript and superscript
values, as well as the hhea caretSlopeRise andcaretSlopeRun entries.
Keep Glyphs list List of glyph names for all glyphs that will be kept in
the exported font. All other glyphs will be discarded, and kerningand automatic feature code will be updated accordingly. Usefulfor webfont subsetting in order to achieve smaller file sizes
Can use the same wildcards and category searches as theRemove Glyphs parameter. Uses of Remove Glyphs and Keep
Glyphs are mutually exclusive.
Keep Overlapping Components boolean If set, Glyphs does notdecompose composite glyphs with overlapping components,
such as in Ccedilla. Useful for post-production of TrueType fonts.
Has no effect on CFF exports.
Keep Transformed Components boolean Does not decompose
composite glyphs with transformed (horizontally or verticallyscaled, or vertically shifted) components. Useful for
post-production of TrueType fonts. For release-ready production,
we do not recommend using this parameter, as it may interferewith TT hinting in affected glyphs. The parameter has no effecton CFF exports.
Keep UI-Font Bounding Box boolean Prevents conjuncts fromstacking below in South Asian scripts, by altering the automatedfeature code for the cjct feature accordingly. Useful for
intended use in environments where vertical stacking is limited,e.g., in user interfaces, hence the name. Currently only

AppendixGlyphs 3 Handbook, October 2021

253

implemented for Oriya.
licenses License description. Corresponds to the OpenType nametable ID 13, the ‘description of how the font may be legally used,or different example scenarios for licensed use. This field should
be written in plain language, not legalese.’licenseURL

string URL for the license. Corresponds to the OpenTypename table ID 14. ‘URL where additional licensing information canbe found.’ Make sure it starts with the protocol specification,
typically https://.
Link Metrics With First Master boolean If checked, keeps the
side-bearings and the kerning of the respective master (in which
the parameter is entered) in sync with the first master. In effect,
you only have to space and kern the first master. This is especially
useful for color fonts or fonts that should not change their
metrics throughout their weights.
Link Metrics With Master string Same as Link Metrics With First
Master (see above), except that it specifies the name of themaster to which kerning and spacing is linked to. If you use thisparameter, it is advisable to make sure that all masters haveunique names.
Local Interpolation string Apply different interpolation values for
specified glyphs. The string must contain a semicolon-separated
list of interpolation values for each axis, followed by anothersemicolon, an include: statement and a comma-separated listof glyph names. For a single-axis setup, a single interpolation
value suffices. E.g., 120; include: a, g, s uses interpolation
value 120 just for the glyphs a, g and s, while all other glyphs areinterpolated according to the interpolation value of therespective instance.
MakeOTF Compatibility Mode boolean If checked, the font createdby Glyphs will have its OpenType Layout tables comparable tothat created by Adobe’s makeotf program. This can be usefulwhen the feature code for those tables was written with specificmakeotf behavior in mind, or if the font is meant to be used inapplications that rely on makeotf-compatible output.
manufacturers
Manufacturer Name. Overwrites the Manufacturer as
set in Font Info > Font. Corresponds to the OpenType name table
ID 8, ‘Manufacturer Name’.
manufacturerURL

Appendix

string Manufacturer or Vendor URL. Overwrites

Glyphs 3 Handbook, October 2021

254

the Manufacturer URL as set in Font Info > Font. Corresponds to
the OpenType name table ID 11, ‘URL of font vendor (withprotocol, e.g., http://, ftp://). If a unique serial number isembedded in the URL, it can be used to register the font.’
Master Background Color string Sets the canvas color of a master.
The canvas assumes the specified color when the respective
master is active in Edit view.
Master Background Color Dark string Like Master Background
Color, but for Dark Mode.
Master Color string Color used for the display of the filled outline of
the master in question. Useful also to preview layer fonts(multiple fonts intended to be set on top of each other withdifferent colors). Only effective inside Glyphs, does not export
into the OpenType font file.
Master Color Dark string Like Master Color, but for Dark Mode.
Master Icon Glyph Name string Name of the glyph that is is to be
used for the respective master button displayed in the top left
corner of the font window when two or more masters are present
in File > Font Info > Masters.
Master Stroke Color string Color used for the display of outlines ofthe master in question, visible when the Select All Layers tool
(Shift-V) is active. Only effective inside Glyphs, does not export
into the OpenType font file.
Master Stroke Color Dark string Like Master Stroke Color, but for
Dark Mode.
Name Table Entry string A custom entry for the OpenType name table.
The syntax is one of the following three:
nameID; nameString
nameID platformID; nameString
nameID platformID encID langID; nameString If not
specified, platformID will be assumed as 3, and successively,
encID as 1 (Unicode), and langID as 0×0049 (Windows English).
If only platformID is specified as 1, then both encID and langID

will be assumed as 0 (Mac Roman, and Mac English).
The nameID can be anything except 1, 2, 3, 5, and 6, which cannot
be set through this parameter. The platformID can either be 1
for Macintosh or 3 for Windows. The optional encID and langID
represent either Windows or Macintosh encoding and language

AppendixGlyphs 3 Handbook, October 2021

255

IDs, depending on the platformID. They must be numbers
between 0 and 65536, and can be entered in decimal, octal orhexadecimal form. The AFDKO Syntax specification stipulates
that ‘decimal numbers must begin with a non-0 digit, octal
numbers with a 0 digit, and hexadecimal numbers with a 0x
prefix to numbers and hexadecimal letters a-f or A-F.’
note string Arbitrary note about the font. This is not exported in the
final OpenType font, only stored in the .glyphs file. Setting thefont note as a custom parameter is equivalent to setting it in File> Font Info > Notes.
openTypeHheaAscender see hheaAscender (p. 251).
openTypeHheaDescender see hheaDescender (p. 251).
openTypeHheaLineGap

see hheaLineGap (p. 251).

openTypeNameLicenseURL see licenseURL (p. 254).
openTypeOS2CodePageRanges

see codePageRanges (p. 242).

openTypeOS2Panose see panose (p. 257).
openTypeOS2StrikeoutPosition
openTypeOS2StrikeoutSize

see strikeoutPosition (p. 265).

see strikeoutSize (p. 266).

openTypeOS2SubscriptXOffset see subscriptXOffset (p. 266).
openTypeOS2SubscriptXSize see subscriptXSize (p. 267).
openTypeOS2SubscriptYOffset see subscriptYOffset (p. 267).
openTypeOS2SubscriptYSize see subscriptYSize (p. 267).
openTypeOS2SuperscriptXOffset see superscriptXOffset (p. 267).
openTypeOS2SuperscriptXSize
openTypeOS2SuperscriptYOffset
openTypeOS2SuperscriptYSize

see superscriptXSize (p. 268).
see superscriptYOffset (p. 268).
see superscriptYSize (p. 268).

openTypeOS2TypoAscender see typoAscender (p. 275).
openTypeOS2TypoDescender see typoDescender (p. 275).
openTypeOS2TypoLineGap see typoLineGap (p. 275).
openTypeOS2UnicodeRanges see unicodeRanges (p. 276).
openTypeOS2VendorID

see vendorID (p. 279).

openTypeOS2WinAscent see winAscent (p. 281).
openTypeOS2WinDescent

see winDescent (p. 282).

Optical Size string Builds the Optical Size OpenType feature (featuretag ‘size’), with encoded size menu names for Mac and Windows.

AppendixGlyphs 3 Handbook, October 2021

256

Requires a string with five semicolon-separated values:
design size: size in decipoints (tenths of points) the font was
designed for;subfamily identifier: arbitrary integer; different fonts with thesame number can be grouped together in an optical size
submenu, if the software supports it;
range start: decipoint size of the size above which the font is
supposed to be used for;range end: decipoint size of the size until (and including) which
the font is supposed to be used for;size menu name: submenu name for the optical size, e.g.,‘Display’, ‘Subhead’, ‘Small’, or ‘Caption’.
Example: ‘100; 1; 69; 120; Ten’ will create a size feature thatspecifies 10 points as the intended design size, the range in which
it is supposed to be used is 7 to 12 points, and the optical size
name is ‘Ten’. Other fonts that use 1 as subfamily identifier and‘Ten’ as name, can be grouped together.
Optimize Variable Deltas boolean Will drop OpenType Variationdeltas from a contour if none of its nodes moves more than half aunit. Default is on. Set this parameter to off in order to also keep
low-significant deltas.
panose list Once you click in the Value field, a dialog will appear thatallows you to determine the setting for each category in the
PANOSE specification. This corresponds to the ten ‘panose’ fields
in the OpenType OS/2 table. ‘This 10 byte series of numbers isused to describe the visual characteristics of a given typeface.
These characteristics are then used to associate the font withother fonts of similar appearance having different names. […]The PANOSE values are fully described in the PANOSE“greybook” reference, currently owned by Monotype Imaging.
The PANOSE definition contains ten digits each of whichcurrently describes up to sixteen variations. Windows usesbFamilyType, bSerifStyle and bProportion in the font mapper todetermine family type. It also uses bProportion to determine if
the font is monospaced. If the font is a symbol font, the first byteof the PANOSE number (bFamilyType) must be set to “pictorial.” ’At the time of this writing, PANOSE is not required to make afont work anywhere, and, to our knowledge, is hardly in use.
Point To Unit Ratio integer Integer number that defines how many

AppendixGlyphs 3 Handbook, October 2021

257

font units are equivalent to one DTP point. Determines theexport scale of PDFs, including artwork copied into the clipboard.
Useful for exchanging vector data with third-party drawing apps,
such as Affinity Designer or Sketch.
Post Table Type integer Version of the post table built into theinstance, the default is 2 for TTF, and 3 for CFF fonts.
postscriptBlueFuzz see blueFuzz (p. 240).
postscriptBlueScale

see blueScale (p. 241).

postscriptBlueShiftsee blueShift (p. 241).

postscriptFontName string PostScript name of the font. Corresponds
to the OpenType name table ID 6. Should be ASCII-only, short(for maximum backwards compatibility less than 30 characterslong), and no whitespace allowed, e.g., ‘MyFont-BoldCdIt’. Do
not confuse with postscriptFullName (see below).
‘The FontName generally consists of a family name (specifically,
the one used for FamilyName), followed by a hyphen and styleattributes in the same order as in the FullName. For compatibility
with the earliest versions of PostScript interpreters and with thefile systems in some operating systems, Adobe limits the numberof characters in the FontName to 29 characters. As with any
PostScript language name, a valid FontName must not containspaces, and may only use characters from the standard ASCII
character set. If abbreviations are necessary to meet the 29
character limit, the abbreviations should be used for the entire
family’ (Adobe Technote #5088).
Adobe recommends these abbreviations for style names:
Bd for Bold
Bk for Book
Blk for BlackCm for Compressed
Cn for Condensed
Ct for Compact
Dm for Demi (prefix)
Ds for Display
Ex for Extended
Hv for Heavy
Ic for Inclined

AppendixGlyphs 3 Handbook, October 2021

258

It for Italic
Ks for Kursiv (German for: Italic)
Lt for Light
Md for Medium
Nd for Nord (style name introduced for Antique Olive)
Nr for Narrow
Obl for Oblique
Po for Poster
Rg for Regular
Sl for Slanted
Sm for Semi (prefix)
Su for SuperTh for Thin
Ult for Ultra (prefix)
Up for Upright
X for Extra (prefix)
postscriptFullName string Name to be used for the FullName field in
CFF table. This is the complete name of the font as it is supposed
to appear to the user, and is thus allowed to contain spaces, e.g.,‘My Font Bold Condensed Italic’. Do not confuse withpostscriptFontName (see above).
Some systems match the family name ‘against the FullName for
sorting into family groups.’ Therefore, the family name ‘must
match the corresponding portion of the FullName, and besuitable for display in font menus. All fonts that are stylistic
variations of a unified design should share the same FamilyName.
[…] The FullName begins with a copy of the FamilyName and iscompleted by adding style attributes — generally in this sequence:
weight, width, slope, optical size’ (Adobe Technote #5088).
postscriptIsFixedPitch see isFixedPitch (p. 252).
postscriptUnderlinePosition

see underlinePosition (p. 276).

postscriptUnderlineThickness see underlineThickness (p. 276).
postscriptUniqueID see uniqueID (p. 276).
preferredFamilyNames Typographic (a.k.a. ‘preferred’) family name.
Corresponds to name ID 16 in the OpenType name table. Setting
this parameter only makes sense if it is different from the Family

AppendixGlyphs 3 Handbook, October 2021

259

Name (name ID 1) as set in File > Font Info > Font.
‘The typographic family grouping doesn’t impose any constraints
on the number of faces within it, in contrast with the 4-stylefamily grouping (ID 1), which is present both for historical reasonsand to express style linking groups. If name ID 16 is absent, thenname ID 1 is considered to be the typographic family name.’
preferredSubfamilyNames Typographic (a.k.a. ‘preferred’) subfamilyname. Corresponds to name ID 17 in the OpenType name table.
Setting this parameter only makes sense if it is different from theStyle Name (name ID 2) as set in File > Font Info > Instances.
‘This allows font designers to specify a subfamily name within the
typographic family grouping. This string must be unique within aparticular typographic family. If it is absent, then name ID 2 isconsidered to be the typographic subfamily name.’
PreFilter string Same as Filter, but applied before decomposition.
Only applies to static fonts.
prep Table Assembly string Assembly code for the prep (Pre-Programor Control Value Program) table. When you open a TTF in Glyphs,
the application will store the existing prep code in this parameter.
This is intended to preserve existing TT hinting for reexporting,and certainly not to be edited manually. Remove this parameter if
you want to do your own TrueType instructioning.
Preview Ascender float Master parameter for the distance between
baseline and the upper edge of the preview in font units. Usefulfor scaling the preview at the bottom of the Edit View or in thePreview Panel when you have large ascenders that would
otherwise be cut off. The default is 1000.
Preview Descender float Similar to Preview Ascender, a masterparameter for the distance between baseline and the lower edgeof the preview in font units. Defaults to winAscent if present, orotherwise, the Descender value set in File > Font Info > Masters.
Propagate Anchors boolean Enable or disable the propagation of top
and bottom anchors in composites. This means that top andbottom anchors in the base glyphs of components ‘shine through’to the composite, unless an anchor with the same name ispresent in the composite glyph. That way, they enablemark-to-base and mark-to-mark attachment for the composite
without needing to add and manage additional anchors. Default
is on. Primary use for this parameter is for suppressing
generation of mark and mkmk rules for composites.

AppendixGlyphs 3 Handbook, October 2021

260

Reencode Glyphs list Takes a list of glyphname=unicodevalue pairs,e.g., smiley=E100, logo=E101, etc. Assign multiple Unicodevalues with a comma as separator, e.g., hyphen=002D,2010. The
parameter assigns the Unicode value to the glyph with thespecified name at export. Should the Unicode value in question
already be assigned to another glyph, the Unicode value of that
other glyph will be deleted, but all production names will remain
intact. It will remove a glyph’s Unicode assignment if the Unicodevalue is left out, e.g., f\_f\_i= and f\_f\_j= will strip f_f_i and
f_f_j from their Unicode value.
Remove Classes list Prevents the export of the OpenType classes
mentioned in the list. Useful for removing manually writtenclasses when glyphs are removed from the font through thesubsetting parameters. Note that automatic classes are removed
automatically at export if the triggering glyphs are not in the fontanymore, e.g., because they were removed or renamed withparameters.
Remove Features list Prevents the export of the OpenType features
mentioned in the list. Useful when a glyph name suffix triggers
Glyphs to generate a feature you do not want in the font, or you
just want to disable a manually added feature for an instance.
Note that automatic features are removed automatically at
export if the triggering glyphs are not in the font anymore.
Remove Glyphs list Will prevent the glyphs and groups of glyphs
mentioned in the list from being exported into the font.
Automatically generated OpenType features respect changes in
the glyph structure, e.g., if you remove all smallcap glyphs, then it
will not auto-generate the smcp or c2sc features. Useful for
subsetting. Per line, you can use:glyph name: the full unabridged glyph name as it appears in Fontview. You can copy a list of glyph names by invoking the context
menu on a glyph selection and choosing Copy Glyph Names >One per line.
wildcard: use an asterisk before, inside or after astring. Examples:*ogonek will find Aogonek, aogonek, Eogonek, eogonek, etc.
K* will find K, Kcommaaccent and K.ss01.
H*.ss01 will find H.ss01, Hbar.ss01 and Hcircumflex.ss01.

category: use the category=value syntax to match glyphs

AppendixGlyphs 3 Handbook, October 2021

261

dynamically. If value is a string, you can use wildcards. Possible
categories are:name The glyph name, equivalent to the glyph name searches

described above.
unicode The first Unicode value of the glyph, e.g., unicode=03*

excludes all glyphs that have Unicode values between
0300 and 03FF.
note The note of the glyph, e.g., note=*delete* will remove all

glyphs that have the word delete in their glyph note.
script The writing system that is assigned to the glyph, e.g.,
script=thai will remove all Thai glyphs from the font. The

spelling of the script is case-sensitive and needs to be exactly as
displayed in Window > Glyph Info.
category The group the glyph belongs to as displayed in
Window > Glyph Info, e.g., category=Symbol will remove all
glyphs defined as symbol.
subCategory The subcategory as displayed in Window > GlyphInfo, e.g., subCategory=Lowercase will remove all lowercase

glyphs from the exported OpenType font.
production The production name the glyph is assigned at export.
leftMetricsKey, rightMetricsKey, widthMetricsKey,
topMetricsKey, bottomMetricsKey, vertWidthMetricsKey The

metrics key for LSB, RSB, width, top, bottom or vertical width,e.g., widthMetricsKey=*.tf* removes all glyphs where thewidth is synced with a tabular figure.
leftKerningGroup, rightKerningGroup, topKerningGroup,bottomKerningGroup The kerning group of a glyph, e.g.,
leftKerningGroup=s removes all glyphs that have a left kerninggroup called ‘s’.
colorIndex The color index of CPAL/COLR layers. E.g., assume

you defined a color palette with blue at color index 2, thencolorIndex=2 would remove all blue shapes from the exported
color font.
countOfLayers Number of layers a glyph has. E.g.,
countOfLayers=4 removes all glyphs that have 4 layers(including the master layers).
mastersCompatible Whether the glyph is interpolatable throughall masters or not. E.g., mastersCompatible=0 removes all

AppendixGlyphs 3 Handbook, October 2021

262

incompatible glyphs from the export.
export Whether the glyph is set to export or not. This also

affects glyphs that are contained as components in others. E.g.,
export=0 will remove all non-exporting glyphs from the export,
including components if the referenced base glyph is notexporting, as well as corners, caps and smart glyphs.
isAnyColorGlyph Whether the glyph is a COLR/CPAL, sbix, orfull color glyph or not, e.g., isAnyColorGlyph=0 removes all

non-color glyphs from the font.
isAppleColorGlyph Whether the glyph has an iColor layer forthe sbix table or not.
hasSpecialLayers Whether the glyph has a bracket or bracelayer or not, e.g., hasSpecialLayers=1 will remove all glyphs

with a bracket or brace layer.
Remove post names for webfonts boolean Removes glyph names in
the webfont export, resulting in smaller file sizes.
Remove Prefixes list Takes a list of names for OT feature prefixes as
defined in File > Font Info > Features. The code in the prefixes
will be kept from being compiled and inserted in the exporting
OpenType font.
Rename Glyphs list Will exchange the glyphs mentioned in the value
with each other. Takes a list of rename strings of the form
oldname=newname, e.g. e.bold=e, g.alt=g. The glyphpreviously stored as newname will now be called oldname andvice versa. The parameter will update composites that employ theglyphs involved, update automatic features where necessary, andalso exchange the Exports attributes of glyphs. If you want toavoid the export of one the glyphs, make sure that either their
Exports attributes are set accordingly, or use the Export Glyphs
parameter.
Replace Class string Replaces OpenType class code with custom code.
The first word must be the class name (without the at sign),
followed by a semicolon, and the new class code. Works only if
the class exists in File > Font Info > Features. This is only
necessary for manually set up classes. Automatically generated
classes update automatically.
Replace Feature string Replaces the content of an OpenType feature
with the code specified. The first four letters must be the featurename (such as liga), followed by a semicolon and the newAppendixGlyphs 3 Handbook, October 2021

263

feature code. Works only if the feature exists in File > Font Info
> Feature.
Replace Prefix string Replaces OpenType feature code listed under
File > Font Info > Features > Prefix. The value must consist of theprefix name, exactly as entered in Font Info > Features, followed
by a semicolon and the replacement code.
ROS

string Sets the ROS (Registry, Ordering, Supplement) for fontswith a Character To Glyph Index Mapping Table (cmap). Currently
available values are the public ROSes:
Adobe-CNS1-6
Adobe-GB1-5
Adobe-Japan1-3
Adobe-Japan1-6
Adobe-Korea1-2
Adobe-Identity-0 If you use Adobe-Identity-0, a GSUB table
will be generated from the available OpenType features.
Otherwise, the cmap and GSUB resources supplied by
Adobe are used.

From the Adobe CMap and CIDFont Files Specification,
Version1.0: ‘Both the CIDFont and the CMap must use CIDs fromcompatible character collections. The identification of thecharacter collection is accomplished by placing version control
information into each CIDFont and CMap file. To identify acharacter collection uniquely, three name components areconcatenated with a hyphen:a registry name is used to identify an issuer of orderings,
usually Adobe;
an ordering name is used to identify an ordered charactercollection; and,a supplement number is used to indicate that the orderedcharacter collection for a registry, ordering, and previous
supplement has been changed to add new characters assigned
CIDs beginning with the next available CID.
These three pieces of information taken together uniquely
identify a character collection. In a CIDFont, this information
declares what the character collection is. In a CMap, thisinformation specifies which character collection is required forcompatibility. A CMap is compatible with a CIDFont if the

AppendixGlyphs 3 Handbook, October 2021

264

registry and ordering are the same. If the supplement numbers
are different, some codes may map to the CID index of 0.’
sampleTexts
Sample text. Corresponds to the OpenType name table
ID 19. ‘This can be the font name, or any other text that thedesigner thinks is the best sample to display the font in.’ This
sample text is displayed, for instance, by Apple Font Book, when
the font is selected in Sample view.
Save as TrueType boolean Exports the instance as TTF, regardless ofthe settings in the Export dialog.
SBIX to SVG integer If set, exports the bitmaps built for an sbix fontin an SVG color table. The SVG table supports both bitmap andvector images, and with this parameter you can duplicate thesbix bitmap information into an equivalent SVG bitmap table,
making the font more compatible. Adding the Export sbix
parameter with a deactivated checkbox will export SVG only andnot include sbix in the instance in question.
Scale to UPM integer Scales the whole font to the supplied integer
value. This is useful for scaling to a UPM of 2048 (or a power of
two between 16 and 16,384) for TTF export, or if you aredesigning in an UPM size other than the default 1000.
shoulderHeight integer A vertical metric value for Middle Eastern,South Asian and Southeast Asian scripts. In glyphs of those
scripts, the shoulder height will be displayed as a vertical metricline in Edit view instead of the x-height. The algorithm for
automatic creation of alignment zones also respects this value.
smallCapHeight integer A vertical metric for small caps. The
algorithm for automatic creation of alignment zones respects
this value. When a small cap glyph is displayed in Edit view andmetrics are set to show, the small cap height will be displayed
instead of the x-height.
strikeoutPosition integer ‘The position of the top of the strikeout
stroke relative to the baseline in font design units’.Corresponds tothe yStrikeoutPosition field in the OS/2 table. ‘Positive values
represent distances above the baseline; negative values represent
distances below the baseline. Aligning the strikeout position withthe em dash is suggested. Note, however, that the strikeout
position should not interfere with the recognition of standard
characters, and therefore should not line up with crossbars in
the font.’

AppendixGlyphs 3 Handbook, October 2021

265

strikeoutSize integer The size of the strike-out dash in units.
Corresponds to the yStrikeoutSize field in the OS/2 table. ‘This
field should normally be the thickness of the em dash for thecurrent font, and should also match the underline thickness.’
Style Name as STAT entry string For variable fonts, takes the instancestyle name as combinable display string for an axis range. As
value, use the four-letter axis tag to which the display string
applies. Use this only in instances that are non-normal on one
axis and normal on all others. That is because the normal
attributes have elidable names and do not appear in the stylename (e.g., ‘Semibold’ or ‘Condensed’).
Example: In the Light instance, use this parameter with the value
wght, because Light is a value on the weight axis. The Light
instance is non-normal on the wght axis, but normal (i.e., notcondensed nor extended) on the wdth axis.
styleMapFamilyNames Family name used for RIBBI style mapping(regular, italic, bold, bold italic). You can use this to createsubfamilies within larger font families. ‘Up to four fonts can share
the Font Family name, forming a font style linking group.’ Glyphs
uses the entries in Style Name field and in the Style Linking
section in the Instances tab of the Font Info for linking the fourindividual weights.
styleMapStyleNames
Localised Font Subfamily name. Corresponds
to the OpenType name table ID 2styleNames Style Name or Font Subfamily Name. Corresponds to
OpenType name table ID 2.
‘The Font Subfamily name is used in combination with Font
Family name (name ID 1), and distinguishes the fonts in a groupwith the same Font Family name. This should be used for styleand weight variants only.’
subscriptXOffset integer The horizontal offset for simulated subscript
typesetting, recommended to keep at zero for fonts with an italic
angle of zero. Corresponds to the subscriptXOffset field in the
OS/2 table.
‘The Subscript X Offset parameter specifies a font designer’s
recommended horizontal offset – from the glyph origin to theglyph origin of the subscript’s glyph – for subscript glyphs
associated with this font. If a font does not include all of therequired subscript glyphs for an application, and the application
can substitute glyphs, this parameter specifies the recommended

AppendixGlyphs 3 Handbook, October 2021

266

horizontal position from the glyph escapement point of the last
glyph before the first subscript glyph. For upright glyphs, thisvalue is usually zero; however, if the glyphs of a font have an
incline (italic or slant), the reference point for subscript glyphs is
usually adjusted to compensate for the angle of incline.’
subscriptXSize integer The horizontal scale for simulated subscript
typesetting. Corresponds to the subscriptXSize field in the
OS/2 table.
‘If a font has two recommended sizes for subscripts, e.g.,
numerics and other, the numeric sizes should be stressed. Thissize field maps to the em size of the font being used for a
subscript. The horizontal font size specifies a font designer’s
recommended horizontal size of subscript glyphs associated withthis font. If a font does not include all of the required subscript
glyphs for an application, and the application can substituteglyphs by scaling the glyphs of a font or by substituting glyphs
from another font, this parameter specifies the recommended
nominal width for those subscript glyphs. For example, if the em
for a font is 2048 units and ySubScriptXSize is set to 205, thenthe horizontal size for a simulated subscript glyph would be
1/10th the size of the normal glyph.’subscriptYOffset integer The vertical offset for simulated subscript
typesetting, typically a positive number for going below thebaseline. Corresponds to the subscriptYOffset field in the
OS/2 table.
‘The Subscript Y Offset parameter specifies a font designer’s
recommended vertical offset from the glyph baseline to the glyphbaseline for subscript glyphs associated with this font. Values are
expressed as a positive offset below the glyph baseline. If a fontdoes not include all of the required subscript glyphs for an
application, this parameter specifies the recommended verticaldistance below the glyph baseline for those subscript glyphs.’
subscriptYSize integer The vertical scale for simulated subscript
typesetting. Corresponds to the subscriptYSize field in the
OS/2 table. See subscriptXSize for more details.
superscriptXOffset integer The horizontal offset for simulated
superscript typesetting, recommended to keep at zero for fontswith an italic angle of zero. Corresponds to thesuperscriptXOffset field in the OS/2 table. See
subscriptXOffset for more details.

AppendixGlyphs 3 Handbook, October 2021

267

superscriptXSize integer The horizontal scale for simulated
superscript typesetting. Corresponds to the superscriptXSize
field in the OS/2 table. See subscriptXSize for more details.
superscriptYOffset integer The vertical offset for simulated
superscript typesetting, typically a positive value for going below
the baseline. Corresponds to the superscriptYOffset field in
the OS/2 table. See subscriptYOffset for more details.
superscriptYSize integer The vertical scale for simulated superscript
typesetting. Corresponds to the superscriptYSize field in the
OS/2 table. See subscriptYSize for more details.
trademarks

Trademark statement. Corresponds to the OpenTypename table ID 7. According to Microsoft, ‘this is used to save any

trademark notice / information for this font. Such information
should be based on legal advice. This is distinctly separate fromthe copyright.’
TrueType Curve Error float Maximum deviance of the approximatedTrueType curve in units. Default is 0.6. A higher curve error allows
the TrueType converter to use fewer quadratic splines toapproximate the cubic splines of your design. This can result in asignificantly smaller glyf table (containing the quadratic outlinedata), and smaller overall file size.
TrueType Keep GlyphOrder boolean Keeps the glyph order as it is in
the .glyphs file, except .notdef and space which always have to
be in the first two positions. If disabled (the default), the font will
resort the first four glyphs to: .notdef, NULL, CR, space. While
NULL and CR will only be reordered if they exist in the .glyphs file,.notdef and space will be automatically generated if they are
missing. Use this parameter only if you know what you
are doing.
TTFAutohint binary path string File path to a precompiled
TTFAutohint binary that should be used instead of the built-in
TTFAutohint. This can be useful if you need to stick to a specificversion or want to employ a newer version of TTFAutohint thanGlyphs incorporates.
TTFAutohint control instructions string This allows you to specify
TTFAutohint control instructions. It is recommended to prepare
the control code in a separate file and then paste it into the valueof the parameter. Possible instructions are:glyphnames left pointIDs offset

AppendixGlyphs 3 Handbook, October 2021

268

glyphnames right pointIDs offset
glyphnames nodir pointIDs
glyphnames touch pointIDs xshift x yshift y @ PPMs
glyphnames point pointIDs xshift x yshift y @ PPMs

Values for offset are optional and assumed as zero whenomitted. In the touch and point instructions, either or both of
the shifts can be specified. x and y must be between 0.0 and 1.0.
glyphnames can be one or more comma-separated glyph names,
specified as production names (i.e., the names as they are written
into the font file). PPMs can be a single PPM size, a size range of
PPMs with a hyphen, or a comma-separated list of sizes and size
ranges. A line that starts with a hashtag \# is considered acomment and therefore ignored. The instructions can beabbreviated with their respective first letters, e.g., ‘right’ can be
written as ‘r’.
TTFAutohint options string Specifies commandline options for the
TrueType autohinter ‘ttfautohint’. Use the dialog sheet toconfigure your settings:
Hint Set Range: the PPM range for which the instructions will be
optimized. Large ranges can cause huge file sizes.
Default Script: ‘default script for OpenType features’.
Fallback Script: ‘default script for glyphs that can’t be mapped toa script automatically’.
Hinting Limit: the PPM size ‘where hinting gets switched off’.
Default is 200 pixels, must be larger than the maximum of thehint set range. Pixel sizes up to this size use the hinting
configuration for the range maximum.
Fallback Stem Width: ‘the horizontal stem width (hinting) value
for all scripts that lack proper standard characters in the font.
The value is given in font units and must be a positive integer. If
not set, ttfautohint uses a hard-coded default (50 units at 2048
units per em, and linearly scaled for other UPM values, forexample 24 units at 1000 UPM).’ For symbol fonts, you also needto specify a Fallback Script ‘to set up a script at all’.
x-Height Increase Limit: from this pixel size down to 6 PPM, thex-height is more likely to be rounded up. Default is 14 PPM.
‘Normally, ttfautohint rounds the x height to the pixel grid, with aslight preference for rounding up. (…) Use this flag to increase the

AppendixGlyphs 3 Handbook, October 2021

269

legibility of small sizes if necessary.’ Set to 0 if you want to switch
off rounding up the x-height.
x-Height Snapping Exceptions: ‘list of comma-separated PPM
values or value ranges at which no x-height snapping shall beapplied’, e.g., ‘8, 10-13, 16’ disables x-height snapping for sizes 8,
10, 11, 12, 13, and 16. An empty string means no exceptions, and amere dash (‘-’) disables snapping for all sizes.
Adjust Subglyphs (formerly known as Pre-Hinting): If enabled,‘makes a font’s original bytecode be applied to all glyphs before it
is replaced with bytecode created by ttfautohint. This makes only
sense if your font already has some hints in it that modify theshape even at EM size (normally 2048px); in particular, some
CJK fonts need this because the bytecode is used to scale andshift subglyphs (hence the option’s long name). For most fonts,
however, this is not the case.’
Dehint: Disables all TT hinting, and therefore overrides all otheroptions. Use only for testing.
Detailed Info: if enabled, adds ‘ttfautohint version and commandline information to the version string or strings (with name ID 5)
in the font’s name table. This option is mutually exclusive’ with the
No Autohint Info option (see below). ‘If neither is set, the string“ttfautohint (vNNN)” gets added to the name table’, NNN being
the ttfAutohint version.
Hint Composites: ‘By default, the components of a composite
glyph get hinted separately. If this flag is set, the composite glyph
itself gets hinted (and the hints of the components are ignored).
Using this flag increases the bytecode size a lot, however, it mightyield better hinting results – usually, it doesn’t.’ Also adds a ghost
component called .ttfautohint to all glyphs. ‘Direct rendering of
the .ttfautohint subglyph (this is, rendering as a stand-alone
glyph) disables proper hinting of all glyphs in the font! Under
normal circumstances this never happens because .ttfautohint
doesn’t have an entry in the font’s cmap table.’ But it can happen,e.g., in a glyph overview.
Ignore Restrictions: ‘By default, fonts that have bit 1 set in thefsType field of the OS/2 table are rejected. If you have apermission of the font’s legal owner to modify the font, specify
this command line option.’
No Autohint Info: if checked, prevents adding ‘ttfautohint version
and command line information to the version string or strings

AppendixGlyphs 3 Handbook, October 2021

270

(with name ID 5) in the font’s name table.’
Symbol Font: ‘Process a font that ttfautohint would refuse
otherwise because it can’t find a single standard character for anyof the supported scripts. For all scripts that lack proper standard
characters, ttfautohint uses a default (hinting) value for the
standard stem width instead of deriving it from a script’s set ofstandard characters (for the latin script, one of them is character‘o’). Use this option – usually in combination with the Fallback
Script and/or Fallback Stem Width option – to hint symbol or
dingbat fonts or math glyphs, for example.’
ttfa table: Adds an OpenType table ‘called TTFA to the output
font that holds a dump of all parameters. In particular, it lists all
ttfautohint control instructions (which are not shown in the nametable info). This option is mainly for archival purposes so that all
information used to create a font is stored in the font itself. Notethat such a TTFA table gets ignored by all TrueType renderingengines. Forthcoming versions of the ttfautohint front-ends will
be able to use this data so that a font can be processed anothertime with exactly the same parameters, thus providing a means
for round-tripping fonts.’
Windows Compatibility: ‘This option makes ttfAutohint add two
artificial blue zones, positioned at the winAscent and winDescentvalues (from the font’s OS/2 table). The idea is to help ttfAutohint
so that the hinted glyphs stay within this horizontal stripe since
Windows clips everything falling outside.’ Use this option if
clipping occurs in Microsoft Windows and you cannot adjust
winAscent and winDescent instead (which would usually be thebetter option). In combination with ‘-’ as value for xHeight
Snapping Exceptions (see above), it should both ‘suppress any
vertical enlargement’ and ‘prevent almost all clipping.’
Strong Stems: specifies which algorithm to use ‘for computing
horizontal stem widths and the positioning of blue zones’ for thethree rendering targets: Grayscale (Android), GDI ClearType (oldWindows versions including XP), DW ClearType (IE 9 and later,and Windows 7 and later). If disabled, stems will be quantized:‘Both stem widths and blue zone positions are slightly quantized
to take discrete values. For example, stem values 50, 51, 72, 76,
and 100 would become 50, 74, and 100 (or something similar).
More glyph shape distortion but increased contrast.’ If enabled,stems will be strong: ‘Stem widths and blue zones are snapped

AppendixGlyphs 3 Handbook, October 2021

271

and positioned to integer pixel values as much as possible. This
gives high contrast, but glyph shape distortion can be significant.’
TTFBlueFuzz integer Much like PostScript’s BlueFuzz, extends therange of TrueType alignment zones by the given amount in both
directions. Default and fallback value is 1. Only affects zones
defined in the TTFZones parameter.
TTFDontPreserveDiagonals boolean In manual TT hinting, theapparent angles of slanted stems are preserved, even whenanother stem crosses it and threatens to make it appear broken.
E.g. in an uppercase A, the two diagonal stems are preserved intheir angles, even though a (hinted) crossbar interrupts theoutline in their middles. With this parameter, stem angles are notpreserved. Technically, the parameter suppresses (projections
onto) freedom vectors. Useful for making TT hinting smaller, e.g.,
for webfont export.
TTFMinimumDistance float Any hinted stem will be drawn with thisminimum length in pixels, no matter which PPM size, if it has astem hint applied to it. The default is 0.25. This value can beimportant in small pixel sizes, where small parts are in danger ofdisappearing.
TTFOvershootSuppressionBelowPPM integer The pixel size (PPM)
up to which overshoots are reliably flattened out. Only applies tomanual TT hinting, not ttfAutohint.
TTFStems list A list of stem definitions for TrueType manual hinting
only. When you click in the parameter value, a dialog sheet will
drop down. Use the gear menu to add or remove stem
definitions, or import the currently available horizontal PostScript
stems from the Horizontal Stems and Vertical Stems fields in File> Font Info > Masters. For each stem, you can define anorientation, a name and a width. In the main master, a delta and a
globe symbol will be shown in addition: they provide access todialogs for defining PPM deltas as well as a glyph filter for thestem in question. Add stems by pressing on the plus button, andremove a stem by selecting it and clicking the minus button.
Orientation: Switch between horizontal stem (e.g., for the
crossbars in e, f, t, or the top and bottom curves of o, c, e, a) andvertical stem (e.g., for the vertical stems of h, m, n, u, or the left
and right curves of o) by clicking on the double arrow symbol.
Name: The stem name is arbitrary, but should be unique. Will
show up in the pop-up menu in the grey info box when the TT

AppendixGlyphs 3 Handbook, October 2021

272

Instructor tool (I) is active and a stem hint (S) is selected.
Width: The average size of the stem towards which the stems will
be rounded. Also, when applying the Autohint command fromthe context menu of the TT Instructor tool (I), stems will beidentified with this size.
Deltas: PPM-specific size adjustments for the effective pixel-sizeof a stem in an instance. In any PPM/instance field, click
repeatedly to switch between no change (blank field), size
increase (arrow up), size decrease (arrow down). The deltas are
only accessible in the first master, or the master defined in theGet Hints From Master parameter.
Filter (Scope): Define the glyph scope of the stem by adding
logical filters. Click on the plus button to add additional filters,
and the minus button to remove a selected filter. Opt-click on theplus button to add logical AND and OR operators for thefollowing (indented) conditions. Available filters are Name,
Category, Subcategory and Script. TrueType stems with a scope
will only be available in glyphs that fulfill the logical conditions of
its scope. Scopes are only accessible in the first master, or the
master defined in the Get Hints From Master parameter.
TTFZoneRoundingThreshold float Controls the likelihood of apositive zone being pushed up a pixel. It takes a small decimal
number as value, typically something around 0.1 or 0.2. The value
is added to any positive zone position before rounding, andadded twice to the x-height zone (the one named ‘xHeight’ in the
TTFZones parameter). Default is 0.09375.
Example: At a certain font size, the smallcap zone ends up at
6.45 pixels, and the x-height at 5.25 pixels. Without any change,
the smallcap zone would round and snap to a height of 6 pixels,
while the x-height would end up with 5 pixels. If you set a valueof 0.2, the smallcap height ends up at (6.45+0.2=6.65≈) 7 pixels,
and the x-height at (5.25+2×0.2=5.65≈) 6 pixels.
TTFZones list A list of zone definitions for horizontal TrueType stems,
in manual TrueType hinting only. When you click in the parametervalue, a dialog sheet will drop down. Use the gear menu to add or
remove zone definitions, or import the currently available
PostScript zones from Alignment Zones field in File > Font Info >Masters. For each zone, you can define a name, a position, a size
and an alignment. In the main master, a delta and a globe symbol
will be shown in addition: they provide access to dialogs forAppendixGlyphs 3 Handbook, October 2021

273

defining PPM deltas as well as a glyph filter for the zone inquestion. Add zones by pressing on the plus button, and remove
a zone by selecting it and clicking the minus button.
Name: The zone name is arbitrary, but should be unique. Will
show up in the pop-up menu in the grey info box when the TT
Instructor tool (I) is active and an align hint (A) is selected.
Position: Position of the zone, or ‘flat end’ of overshooting
shapes, similar to alignment zones in PostScript.
Size: Size of the zone, or distance from ‘flat end’ to the outermost
edge of overshooting shapes. Use positive values for top zones,
negative values for bottom zones. If the zone size is calculated tobe less than half a pixel in any given PPM size, any hinted shapethat reaches into the zone will be flattened to the same height.
Align: Link a zone to another zone with the Align option. If azone is aligned to another, the distance between the zone
positions is rounded and applied to the zone. This will result in
more consistent transitions when you step your font throughpixel sizes. Use this for heights that are very close to each other,perhaps even overlapping, and may appear next to each other intypesetting, and where it may be perceived as problematic if theheights diverge too far in low-res pixel renderings, e.g., align thesmall-cap height to the x-height. Aligned zones will be displayed
at the same height if the difference is less than half a pixel in agiven PPM size; and at least one pixel apart if the difference ishalf a pixel or more.
Delta: PPM-specific position rounding for the effective pixel-sizeof each zone in each instance. In any PPM/instance field, click
repeatedly to switch between no change (blank field), shifting up(arrow up), shifting down (arrow down). The deltas are only
accessible in the first master, or the master defined in the Get
Hints From Master parameter.
Filter (Scope): Define the glyph scope of the stem by adding
logical filters. Click on the plus button to add additional filters,
and the minus button to remove a selected filter. Opt-click on theplus button to add logical AND and OR operators for thefollowing (indented) conditions. Available filters are Name,
Category, Subcategory and Script. TrueType stems with a scope
will only be available in glyphs that fulfill the logical conditions of
its scope. Scopes are only accessible in the first master, or the
master defined in the Get Hints From Master parameter.

AppendixGlyphs 3 Handbook, October 2021

274

typoAscender integer The height of the ascenders in units.
Corresponds to the OpenType OS/2 table sTypoAscender field.
‘The typographic ascender for this font. This field should be
combined with the typoDescender and typoLineGap values todetermine default line spacing. This field is similar to thehheaAscender field as well as to the winAscent field. However,legacy platform implementations used those fields withplatform-specific behaviors. As a result, those fields areconstrained by backward-compatibility requirements, and they
do not ensure consistent layout across implementations. The
typoAscender, typoDescender and typoLineGap fields areintended to allow applications to lay out documents in a
typographically-correct and portable fashion. The Use Typo
Metrics flag (fsSelection bit 7) is used to choose between
using sTypo* values or usWin* values for default line metrics. It is
not a general requirement that typoAscender - typoDescender
be equal to unitsPerEm. These values should be set to provide
default line spacing appropriate for the primary languages thefont is designed to support.
For CJK (Chinese, Japanese, and Korean) fonts that are intended
to be used for vertical (as well as horizontal) layout, the required
value for typoAscender is that which describes the top of theideographic em-box. For example, if the ideographic em-box ofthe font extends from coordinates 0,-120 to 1000,880 (that is, a1000 × 1000 box set 120 design units below the Latin baseline),
then the value of typoAscender must be set to 880. Failing toadhere to these requirements will result in incorrect
vertical layout.
For a detailed discussion of vertical metrics, see the Vertical
Metrics tutorial.
typoDescender integer A negative integer describing the depth of thedescenders in units. Corresponds to the sTypoDescender field of
the OpenType OS/2 table.
‘The typographic descender for this font. This field should be
combined with the typoAscender and typoLineGap values todetermine default line spacing.’ See typoAscender for
more details.
typoLineGap integer The recommended whitespace between lines,
measured in units. Corresponds to the OpenType OS/2 tablesTypoLineGap field.
‘The typographic line gap for this font. This field should be

AppendixGlyphs 3 Handbook, October 2021

275

combined with the typoAscender and typoDescender values todetermine default line spacing.’ See typoAscender for
more details.
underlinePosition integer The suggested distance from the baselineto the top of the underline. Negative values indicate a position
below the baseline. Corresponds to the post table entry
underlinePosition. Default is −100.
underlineThickness integer Underline thickness value. Corresponds
to the post table entry underlineThickness. Default is 50. ‘In
general, the underline thickness should match the thickness of
the underscore character (U+005F), and should also match thestrikeout thickness, which is specified in the OS/2 table.’unicodeRanges list A list of supported Unicode ranges in the font.
Corresponds to the OpenType OS/2 table ulUnicodeRange1,
ulUnicodeRange2, ulUnicodeRange3 and ulUnicodeRange4
fields. The dialog offers a search field, so you can quickly spot theproper ranges for your fonts. E.g., if you want to cover all Latin
ranges, simply search for ‘latin’ and all corresponding ranges in
the list will be displayed.
‘If a bit is set, then the Unicode ranges assigned to that bit areconsidered functional. If the bit is clear, then the range is notconsidered functional. Each of the bits is treated as anindependent flag and the bits can be set in any combination. The
determination of “functional” is left up to the font designer,
although character set selection should attempt to be functionalby ranges if at all possible.’uniqueIDstring Unique font identifier. Corresponds to the OpenTypename table ID 3

unitsPerEm integer Units per em. Default is 1000 for
PostScript-flavored OpenType fonts and a power of two between
16 and 16,384 (usually 2048) for TrueType-flavored OpenType
fonts. The value specified is the amount of units that will be used
for the font size. A smaller value will cause the font to appear
larger on screen, and vice versa. This parameter will only set the
UPM value, and not scale node coordinates and othermeasurements. If you do want to scale, see Scale to UPM.
Update Features boolean Forces an update of all automatic featurecode. This is especially useful in a phase of font production
where the glyph set changes a lot, or, if explicitly turned off, forsuppressing the automatic feature code generation.

AppendixGlyphs 3 Handbook, October 2021

276

Use Extension Kerning boolean If checked, additional kern lookups
will be created with a GPOS Extension lookup type (a.k.a. lookup
type 9), allowing the font to store more kerning values. Use thiswhen the attempt to export your font results in an offset overflow
error in the GPOS table, and you cannot or do not want to delete
kern pairs, especially exceptions.
‘This lookup provides a mechanism whereby any other lookup
type’s subtables are stored at a 32-bit offset location in the GPOS
table. This is needed if the total size of the subtables exceeds the
16-bit limits of the various other offsets in the GPOS table. In thisspecification, the subtable stored at the 32-bit offset location istermed the “extension” subtable.’
Use Line Breaks boolean If checked, line breaks inside OpenType
features will not be escaped (i.e., not replaced with ) whenstored in a .glyphs file. If unchecked, can facilitate version control,
and thus makes sense, e.g., in a git-based workflow.
Use Typo Metrics boolean If checked, applications that respect thissetting (in particular, versions of Microsoft Office since 2006) will
prefer typoAscender, typoDescender, and typoLineGap overwinAscent and winDescent for determining the vertical
positioning. Default is off. Corresponds to bit 7 (‘don’t use Winline metrics’) in the OS/2 table fsSelection field. According to
Adobe’s MakeOTF User Guide, this bit was introduced ‘so that
reflow of documents will happen less often than if Microsoft justchanged the behavior for all fonts.’
Microsoft: ‘If set, it is strongly recommended that applications
use typoAscender − typoDescender + typoLineGap as the default
line spacing for this font.’‘In variable fonts, default line metrics should always be set using
the typoAscender, typoDescender and typoLineGap values, andthe Use Typo Metrics flag should be set. The ascender, descenderand lineGap fields in the hhea table should be set to the samevalues as typoAscender, typoDescender and typoLineGap. The
winAscent and winDescent fields should be used to specify arecommended clipping rectangle.’
Variable Font Family Name string Family name for the variable fontexport. It makes sense to have a different family name for the
likely use case that both static and variable fonts are in use at thesame time.
Variable Font File Name string File name for the variable font export.

AppendixGlyphs 3 Handbook, October 2021

277

Overrides the default ‘VF.ttf’ ending that Glyphs employs.
Variable Font Optimize Deltas boolean Will drop OpenType Variationdeltas from a contour if none of its nodes moves more than half aunit. Default is on. Set this parameter to off in order to also keep
low-significant deltas.
Variable Font Origin string Master to be used for the set of outlinesthat will be stored in the variable font file. All other masters andinstances will be reached by adding point deltas to thesedefault outlines.
Variable Font Style Name string Family name for the variable fontexport. It makes sense to have a different family name for the
likely use case that both static and variable fonts are in use at thesame time.
variableStyleName string Family name for the variable font export. It
makes sense to have a different family name for the likely use casethat both static and variable fonts are in use at the same time.
Variation Font Origin string Master to be used for the set of outlinesthat will be stored in the variable font file. All other masters andinstances will be reached by adding point deltas to thesedefault outlines.
variationsPostScriptNamePrefix string PostScript Name Prefix for
Variable Fonts. Corresponds to name ID 25 in the OpenType nametable. For processing of a variable font instance, e.g., in a PDF, a
specific PostScript name is calculated automatically, based on the
PostScript Font Name, axis tags, and axis positions (design spacecoordinates). This constructed PostScript name cannot be longer
than 127 characters. If no prefix is provided, the US English string
for typographic (‘preferred’) family name (name ID 16) will be
used, minus any characters not within ASCII A-Z, a-z and 0-9.
Microsoft: used as ‘family prefix in the PostScript Name
Generation for Variation Fonts algorithm. The character set isrestricted to ASCII-range uppercase Latin letters, lowercase Latin
letters, and digits. All name strings for name ID 25 within a font,when converted to ASCII, must be identical.’
Adobe: ‘Including a Variations PostScript Name Prefix string(name ID 25) in a font could be useful in the following cases:
if the US English typographic family name, US English named
instance fvar subfamilyNameID, or the number of axis descriptors
in the font could tip the length of the generated PostScript names
to over 127 characters, orAppendixGlyphs 3 Handbook, October 2021

278

if the US English typographic family name contains accented orother characters that when removed by the algorithm ... could
cause confusion or even ambiguity in PostScript names. For
example, both typographic family names “André Sans” and“Andró Sans” resolve to family prefix “AndrSans”, an ambiguity
that could be avoided by providing Variation PostScript Name
Prefixes “AndreSans” and “AndroSans” in the fonts.’
vendorID string Four-character identifier for the creator of the font,consisting of printable ASCII characters (U+0020 throughU+007E) only. Corresponds to the achVendID field in the
OpenType OS/2 table. If not set, Glyphs will use ‘UKWN’(‘unknown’) as Vendor ID. ‘This is not the royalty owner of theoriginal artwork. This is the company responsible for themarketing and distribution of the typeface that is being classified.
For example, there may be multiple vendors of ITC Zapf
Dingbats, with some vendors providing differentiating benefits intheir fonts (more kern pairs, unregularized data, hand hinted, etc.).
This identifier will allow for the correct vendor’s type to be usedover another, possibly inferior, font file.
Microsoft maintains a registry of vendor IDs. Registered IDs must
be unique to a single vendor. Non-registered IDs can also beused, but are discouraged: vendors are strongly encouraged toregister an ID to ensure that there are no conflicts between
different vendors in use of a given ID, and that customers are able
to find vendor contact information for a given font. This field canalso be left blank (set to null, or a tag comprised of four spacecharacters).’versionString string Version string. Should begin with the syntax“Version .” (with a space between “Version” and the number). A
placeholder string into which the version number will be inserted
automatically, e.g., Version \%d.\%03d, where %d stands for an
integer, and %03d for integer represented with three digits, e.g.,
008. The string must contain a version number of the following
form: one or more digits (0-9) of value less than 65,535, followed
by a period, followed by one or more digits of value less than
65,535. Any character other than a digit will terminate the minor
number. A character such as “;” is helpful to separate different
pieces of version information. The first such match in the string
can be used by installation software to compare font versions.
Note that some installers may require the string to start with
“Version ”, followed by a version number as above.’

AppendixGlyphs 3 Handbook, October 2021

279

vheaVertAscender integer Ascender value for vertical typesetting.
Corresponds to the vertTypoAscender field in the OpenTypevhea table.
‘The vertical typographic ascender for this font. It is the distancein units from the ideographic em-box center baseline for thevertical axis to the right edge of the ideographic em-box. It is
usually set to UPM ÷ 2. For example, a font with an em of 1000
units will set this field to 500.’
vheaVertDescender integer Descender value for vertical typesetting,typically a negative number. Corresponds to thevertTypoDescender field in the OpenType vhea table.
‘The vertical typographic descender for this font. It is the distancein units from the ideographic em-box center baseline for thevertical axis to the left edge of the ideographic em-box. It is
usually set to −UPM ÷ 2. For example, a font with an em of 1000
units will set this field to −500.’
vheaVertLineGap integer Line gap value for vertical typesetting.
Corresponds to the vertTypoLineGap field in the OpenTypevhea table.
‘The vertical typographic gap for this font. An application candetermine the recommended line spacing for single spaced
vertical text for an OpenType font by the following expression:ideographic embox width + vertTypoLineGap.’
Virtual MasterDefines a font master for a variable font, thereby
extending its design space accordingly. Rather than a ‘real’ master,which is defined in File > Font Info > Masters, a virtual mastercan only be drawn in the form of a Brace layer, i.e., a glyph layer
with a name consisting of or ending in the comma-separated
design space coordinates between curly braces, e.g., ‘{100, 300}’.
A virtual master makes most sense for design axes that only apply
to a limited number of glyphs, e.g., an axis that controls the
middle crossbar heights of letters like A, E, F and H. The main
advantages are that only affected glyphs need to be managed,
and kerning does not need to be redone for an extra ‘real’ master.
Webfont Formats list For the instance in which this parameter is
specified, the listed webfont formats will be exported, regardlessof the settings in the Export dialog. Possible values: TTF, EOT,WOFF or WOFF2.
Webfont Only boolean If activated, it removes some of theinformation stored in the font file necessary for desktop use. This

AppendixGlyphs 3 Handbook, October 2021

280

makes it harder to convert the webfont into a different format or
to install it locally in an operating system like Windows or macOS.
Careful: Technically, this option produces a damaged font, which,however, still works as webfont in browsers.
winAscent integer A positive integer describing the top extremum of
the font rendering box for Windows, beyond which glyph
renderings may be clipped. Thus, winAscent should be highenough to include all parts of all important glyphs. Corresponds
to the usWinAscent field in the OpenType OS/2 table.
‘The “Windows ascender” metric. This should be used to specify
the height above the baseline for a clipping region. This is similar
to the typoAscender field, and also to the hheaAscender field.
There are important differences between these, however. In the
Windows GDI implementation, the winAscent and winDescentvalues have been used to determine the size of the bitmap
surface in the TrueType rasterizer. Windows GDI will clip any
portion of a TrueType glyph outline that appears above thewinAscent value. If any clipping is unacceptable, then the value
should be set greater than or equal to yMax. Note: This pertains
to the default position of glyphs, not their final position in layout
after data from the GPOS or kern table has been applied. Somelegacy applications use the winAscent and winDescent values todetermine default line spacing. This is strongly discouraged. The
typoAscender, typoDescender and typoLineGap fields should
be used for this purpose. Note that some applications use either
the winAscent /winDescent values or the
typoAscender/typoDescender/typoLineGap values todetermine default line spacing, depending on whether the Use
Typo Metrics flag is set. This may be useful to provide
compatibility with legacy documents using older fonts, while also
providing better and more-portable layout using newer fonts.
Applications that use thetypoAscender/typoDescender/typoLineGap fields for default
line spacing can use the winAscent/winDescent values todetermine the size of a clipping region. Some applications use aclipping region for editing scenarios to determine what portionof the display surface to re-draw when text is edited, or how large
a selection rectangle to draw when text is selected. Early versionsof this specification suggested that the winAscent value becomputed as the yMax for all characters in the Windows ANSI
character set. For new fonts, the value should be determined

AppendixGlyphs 3 Handbook, October 2021

281

based on the primary languages the font is designed to support,
and should take into consideration additional height that may berequired to accommodate tall glyphs or mark positioning.’
For a detailed discussion of vertical metrics, see the Vertical
Metrics tutorial.
winDescent integer A positive integer describing the bottom
extremum of the font rendering box for Windows. Thus,
winDescent should be large enough to encompass thedescenders of lowercase letters like g, p, q, and y. Corresponds tothe usWinDescent field of the OpenType OS/2 table.
‘Early versions of this specification suggested that the
winDescent value be computed as -yMin for all characters in the
Windows ANSI character set. For new fonts, the value should bedetermined based on the primary languages the font is designed
to support, and should take into consideration additional verticalextent that may be required to accommodate glyphs with low
descenders or mark positioning.’
Write DisplayStrings boolean If disabled, prevents the DisplayStrings
from being written into the .glyphs file. DisplayStrings store thetext content of Edit tabs. This can facilitate version control.
Default is enabled.
Write lastChange boolean If disabled, prevents the Last Changed
Date from being written into the .glyphs file. This can facilitate
version control. Default is enabled.
WWSFamilyName string WWS family name. WWS stands for ‘Weight
Width Slope’. Corresponds to the OpenType name table ID 21.
‘Used to provide a WWS-conformant family name in case theentries for IDs 16 (preferredFamilyName) and 17(preferredSubfamilyName) do not conform to the WWS model.
(That is, in case the entry for ID 17 includes qualifiers for some
attribute other than weight, width or slope.)’ Frequent use cases
are family names that indicate optical sizes: ‘Examples of nameID 21: “Minion Pro Caption” and “Minion Pro Display”. (Name ID
16 would be “Minion Pro” for these examples.)’
WWSSubfamilyName string WWS Subfamily name. Corresponds to
the OpenType name table ID 22.
‘Used in conjunction with ID 21, this ID provides a
WWS-conformant subfamily name (reflecting only weight, widthand slope attributes) in case the entries for IDs 16 and 17 do notconform to the WWS model. […] Examples of name ID 22:

AppendixGlyphs 3 Handbook, October 2021

282

“Semibold Italic”, “Bold Condensed”. (Name ID 17 could be“Semibold Italic Caption”, or “Bold Condensed Display”, forexample.)’ For name IDs 16 and 17, see the entries forpreferredFamilyName and preferredSubfamilyName,
respectively.

AppendixGlyphs 3 Handbook, October 2021

283

The text face is ABC Arizona, designed by Elias Hanzer for
Dinamo. This is a variable font ranging from thin to bold, sansserif to serif, and upright to italic.
Computer code is set in Cascadia Code, designed by Aaron Bellfor Microsoft. The version used in this handbook has beenslightly adjusted to accompany the text face.
The illustrations placed throughout the pages use glyphs of thefollowing typefaces: ABC Arizona; Alegreya, Alegreya Sans, &Piazzolla by Juan Pablo del Peral/Huerta Tipográfica;
Apple Color Emoji by Apple; Cerne by Peter S. Baker, Cormorantby Christian Thalmann/Catharsis Fonts; Graublau Sans &Graublau Slab by Georg Seifert; Hola Pixel by
Rainer Erich Scheichelbauer/Schriftlabor; Lapture by Tim Ahrens/
Just Another Foundry; Liebe Heide by Ulrike Rausch/LiebeFonts;
Literata by Veronika Burian & José Scaglione/TypeTogether;
Lyon Arabic by Khajag Apelian, Wael Morcos, & Kai Bernau/
Commercial Type; Mada by Khaled Hosny/Alif Type;
Proxima Vara by Mark Simonson; Rasa by Anna Giedrys &David Brezina/Rosetta Type; and Work Sans by Wei Huang.