Glyphs 3.0.2 released

by Rainer Erich Scheichelbauer

26 January 2021

Version 3.0.2 is out, containing the latest improvements and fixes. Get it while it’s hot.

Welcome to the latest and greatest version of Glyphs 3, now available as a stable release. Update by choosing Glyphs > Check for Updates and following the on-screen instructions. Then, read on about all the new treats you are getting:

Drawing and editing

Path strokes now differentiate between width and height. As soon as a height is set, the line has a stroke contrast:

Keep in mind that the path stroke options are only available when (1) a path is selected, and (2) View > Show Info (Cmd-Shift-I) is turned on.

While we are at it: You can now batch-set stroke endings for multiple paths at once. Any selected start or end point of an open path will get the stroke ending you pick:

You will like that Filter > Offset Curve now handles negative offsets better. Wherever possible, handles will not exceed 100% length. This should prevent self-inflections as much as possible:

In Glyphs 3, we introduced our own algorithm for removing outline overlaps. This made us independent from old makeotf code, and that led to a lot of improvements. E.g., there is no coordinate limit to removing overlap anymore as there used to be in the good old days. Thanks to your input, we were now able to also cover a series of edge cases, and thus, significantly improve overlap removal. Also, removing overlaps now respects the current path selection.

Cool. Then it is a list of seemingly little improvements that will make a difference in your everyday vector-drawing life:

  • When you divide paths with the Draw tool (shortcut P), both resulting paths will inherit the original path attributes. On the other hand, closing a path with the Draw tool will not force a smooth connection but actually keep the corner.
  • Glyph > Decompose Components will now always decompose all components in the glyph. If you want to decompose individual components, right click one or more selected components and choose Decompose from the context menu.
  • Improved component workflow: corner components on intersection points, corners on strokes, component alignment with an *origin anchor, and the Make First algorithm are all working smoothly now.
  • Improved PostScript-to-TrueType conversion of half dead curves (curve segments with zero handles).
  • Improved aligning: Paths > Align Selection (Cmd-Shift-A) now respects the transformation origin set in the info panel (Cmd-Shift-I).
  • Easier selection of corner components: the corner components have more click tolerance now, and you do not need to aim so much anymore.

OpenType features

If you have not read about tokens yet, you should. And starting in 3.0.2, there is a new token syntax for numbers. Yes, the ones with the curly braces ${...}. Access any value inside a glyph by specifying the glyph name, followed by a colon, followed by a property path in dot notation, very similar to what you are used to in Python. Here are some examples, you get the idea:

${} # x coordinate of the top anchor in uppercase A
${} # half y coordinate of the center anchor in uppercase O
${idotless:LSB} # left sidebearing of ı (dotless i)
${w:width} # width of lowercase w

Currently, the syntax supports querying anchor positions as well as the glyph metrics width, LSB, RSB, TSB and BSB. That way you can have a visual reference for a GPOS rule. Let us know if you have use cases that require going beyond that scope.

When there is an OpenType feature error during export, you can now click on the Show button in the report window, and go directly to the respective spot in the feature code:

It is now much easier to add features with custom feature tags. Simply click on the plus button, type your custom four-letter tag, which, according to the spec, is supposed to be all-caps, and press the Return key:

And more small fixes and improvements, amongst which:

  • Improved automatic smcp code for punctuation.
  • Much improved pasting in File > Font Info > Features.
  • Improved handling of the include() statement in feature code.
  • Improved the algorithm for determining subtable breaks in the kern feature.
  • Kerning classes are written before any other features, so you can reuse them in your custom OT feature code.
  • Improved export of cursive attachment.

Script support

We added support for many scripts, both contemporary and ancient: Thaana, and a range of Arabic glyphs. Cypriot, Nabataean, Etruscan, Umbrian and Oscan, and also for the Batak script (a.k.a. ‘Surat Batak’). Balinese and Georgian have been improved, though they are still being worked on.

All of this was possible thanks to your input! And thanks to your continued input, more scripts are in the pipeline, especially African and Southeast Asian writing systems. Stay tuned.

Variable fonts and multiple masters

Composites with alternate layers (a.k.a. ‘bracket layers’) now interpolate like a charm:

No more reduplicating brace layers in diacritics, or any other extra treatment of composites. High five!

Visibility of instances in the preview area is now independent of its active status in Font Info > Exports. To toggle visibility, you get the new eye symbols in the instance pop-up:

That way you can also preview inactive instances, or focus on a specific subset of your exports, e.g., all condensed instances, without fiddling with the instance export status.

You can now add Variable Style Names to instance settings, which allows you to override the style name in a variable font export. Comes in handy in situations where you need different style names in static and variable fonts, e.g., if you split the static exports into several families. That typically happens for width variants, where you would set up a condensed, a normal-width and an extended-width family, each of them with instances using the weight names Light to Heavy weight names. Since it makes no sense to repeat the same style names within the same variable font, you would move the width particle (‘Condensed’, ‘Extended’) into the instance names. In other words, you set up a Variable Style Name in File > Font Info > Exports, containing the names like ‘Condensed Bold’ or ‘Extended Light’, etc.

And more small improvements:

  • Improved export of kerning in variable fonts.
  • Improved dialog for the Axis Mapping parameter in File > Font Info > Font.
  • Fixed minor rounding errors in interpolated custom parameter values.

UI improvements

The Edit > Paste Special (Cmd-Opt-V) looks much slimmer and slicker now. If you have not used it in a while, give it another go:

In Big Sur, toolbars are right aligned by default, and some users complained. Luckily, we did manage to center the tools again, so there is less discrepancy between system versions.

And you guessed it, a bunch of other small improvements:

  • File > Font Info > Notes now uses the same font size as Window > Macro Panel and Font Info > Features.
  • The kerning panel (Window > Kerning, Cmd-Opt-K) will now always float on top of all other windows.
  • View > Show Metric Names includes the italic angle.
  • Help > Change Log now also displays URLs.
  • When you hold down combo keys for temporarily switching the tool, e.g., Cmd for the Select tool or Ctrl-Opt-Cmd for the Measurement tool, the respective toolbar icon will be highlighted.
  • Improved tooltips and mouse-over highlights.
  • Improved performance of the Fit Curve palette.
  • Improved clipboard handling in File > Font Info > Font.
  • Improved editing of custom parameters with multiple masters or instances selected.

Import and export

OK, this is boring. Let’s get it over with quickly:

  • When reading Glyphs 2 files, openTypeName… parameters are converted to properties.
  • Improved import of color fonts.
  • Improved .metrics import.
  • Fixed the import of right kerning classes from a compiled CFF-based OTF.
  • Improved export of CID-keyed fonts.
  • Display strings are written into a separate file when saving to a .glyphspackage file. In a git workflow, you can simply ignore the file to exclude the display strings from syncing. (Or you use the Write DisplayStrings parameter in File > Font Info > Font, duh.)
  • Fixed applying filter parameters to COLR/CPAL layers during export.
  • Improved export of svg table from color layers.
  • Improved export of Font Info properties to UFO.
  • Fixed an issue where the Use Custom Naming option in File > Font Info > Other would cause the wrong glyph name to be written in the font file.
  • Fixed export issues of Name Table Entry parameters.


After disabling extensions by holding down the Option and Shift keys, a Glyphs window will display Plugins Disabled in the top right corner, indicating that extensions were disabled successfully:

  • The Install and Remove buttons Window > Plugin Manager are much more reactive now and indicate the download process.
  • Much improved performance and stability for Python plug-ins.
  • Most plug-ins have new binaries that allow better error tracing. If a plug-in you wrote still has old binaries, get in touch with us in the scripting forum.
  • Glyphs will now automatically disable plug-ins that have caused a crash.
  • Improved canvas drawing for .glyphsTool plug-ins.
  • The Plugin Manager will now better check for min and max versions of plug-ins.

More improvements

As always, there have been many more improvements, each of them too small to mention, but here is a broad overview of what else has happened:

  • All the localisations have been updated, especially Chinese, Korean and French, so a special thanks to the translators Willie, Minjoo and Nathalie.
  • Some minor UI glitches have been fixed.
  • QuickLook has been updated, so preview should work in all macOS versions now.
  • Improved installation from the command line (remote or mass deployment).
  • Improved masking.
  • Improved autohinting at export.
  • Improved undo.
  • Overall, improved stability and performance.

That’s it. If you have not updated yet, do so now. We strongly recommend this update for every user of Glyphs 3. Trust us, you will have more fun.

Stay safe and healthy.