Glyphs 3.1 released

by Rainer Erich Scheichelbauer

18 June 2022

Here it is, version 3.1 of our favorite font editor! Get it while it’s hot, and read here what’s new.

Hello, hello, here we are again! We recommend all users of Glyphs 3 to choose Glyphs > Check for Updates… from the menu, and follow the on-screen instructions to update your installation of Glyphs to version number 3.1. Do it right now, and while the update is under way, let me get your attention for some updates elsewhere on the website:

Okay, your download should be done by now, so let’s take a closer look at what’s new in your Applications folder.

UI Improvements

We have been tweaking a few things in Edit View. For one thing, we have been able to improve visibility of outlines over a placed image:

Spacing in Edit view has gotten snappier. You’ll notice it when you change the sidebearings for a glyph when there are its composites next to it. Like this:

Open the feature pop-up in the bottom left, and you will see, all the feature names are now prefixed with their appropriate tags:

Glyphs will correctly draw CJK metrics for full-width forms of non-CJK glyphs:

In Font View, Glyphs now properly and reliably draw color layers for the current master:

We have reviewed entry fields in a bunch of dialogs. We were able to improve tabbing orders between fields in many places, e.g., in the Smart Components settings. If you have been experiencing problems in the past, try again. We also fixed an annoying text selection bug while entering data in the Font Info window. If you were affected, you know what we are talking about. While we were at it, we improved a few Custom Parameter dialogs, including the Get PS Zones option in the TTFZones dialog, and the Axis Location dialog now accepts decimals as input.

Many smaller UI improvements were made. Just to name a few:

  • The UI behaves better in full screen. Filter dialogs do not go full screen and block your view anymore.
  • Brace Layer ranges are now displayed the way we expect them. No more percentage signs where they don’t belong.
  • Glyphs better stores the content of Window > Text Preview from one app session to the next.
  • And the error report for a failed font export is much better now and shows more details.
  • We have been able to improve the preview of filters in instances.
  • The Knife tool (shortcut Shift-E) works better in edge cases, especially when treating overlaps.
  • You can resize the sidebars of Font Info > Masters a bit wider. Long master names, bring ’em on.

Improved script support

Belarusian and Kurdish character sets have been added to the Cyrillic and Arabic script flyouts in Font view’s sidebar. We are grateful to Nick and Dolan for their contributions and constructive discussion:

And thanks to Ben Mitchell’s input, we have a new script, New Tai Lue. Ben has also been incredibly helpful in improving Burmese OpenType code.

We have been able to improve the implementation of Devanagari, especially fixing a number of issues with Devanagari OpenType feature code. Thanks to Tanya, Rob, Kimya, Pria and others who have been pointing us in the right direction. Speaking of South Asian scripts, we now use Conjunct as subcategory in glyph info (Cmd-Opt-I) to not confuse the anchors and to facilitate proper GDEF table generation.

And let’s not forget:

  • Thanks to John Hudson for his help on Ethiopic Extended-B.
  • Fixed a few issues with legacy Arabic presentation Unicode values.

Interpolation and variable fonts

I will say it again: the variable font tutorial has been updated with the latest best practice recommendations. Pay special attention to Axis Location parameters.

You can now use the Disable Masters custom parameter in a variable font setting in File > Font Info > Exports, and use that for exporting a limited range of your variable font. Cool.

Intersecting condition statements for feature variations behave better now. And if you have an axis entirely made up of conditional substitutions, it should work much better now. Thanks Jérôme.

For better backwards compatibility with Glyphs 2, we added a secret option to linearly interpolate components, the way it used to be in the good old times. To use old-style linear interpolation, select the respective glyphs, then paste and run this script in Window > Macro Panel:

for layer in Font.selectedLayers:
    glyph = layer.parent
    glyph.userData["useLinearComponentInterpolation"] = True
    print("Components interpolating linearly in: %s" %

Change True to False and adapt the status message accordingly if you want to go back again. Needless to say, use this only if you know what you are doing.

Plus, lots of minor improvements:

  • We could improve mark positioning for variable fonts.
  • Fixed a number of issues in the generation of GPOS, avar and fvar tables that would appear under certain circumstances.
  • We could fix some issues with corner and cap components in intermediate layers.
  • Deactivated Axis Location parameters are now reliably ignored on export.
  • Variations PostScript Name Prefix is a new alternative spelling for variationsPostScriptNamePrefix (name table ID 25) of variable font settings in Font Info > Exports > General.
  • The Export STAT Table custom parameter is honored in variable font settings, so now you can actually disable STAT generation in OTVAR exports. Not that this would make much sense, but yeah.
  • Improved View > Show Master Compatibility with unusual instances setup.
  • Fixed an OTVAR compatibility issue with corner and cap components in intermediate layers.
  • Fixed a rare but annoying bug where setting axes coordinates for masters and instances would not stick.


When a plug-in crashes, you will be shown a dialog at the next startup, asking you to deactivate plug-ins. The problem was that it forced you to uninstall and reinstall all plug-ins even if there was just a module missing. That is why we added an Ignore button to the ‘crashed plug-ins’ prompt. Ignore the issue, do the necessary installs in Window > Plugin Manager, restart the app, keep calm and carry on. That’s it.

While we were at it, we added a Restart button to the plug-in installation dialog:

We improved the Python wrapper, especially:

  • works much better
  • variable instance export through the API is working again as it should, thank you Sebastian.
  • copying of userData
  • added more constants
  • better error reporting
  • improved document close notifications

Glyphs 3.1 supports Python version 3.10.1. If you are using a manual Python installation, it is going to be detected properly now. Important: if you do use your own Python installation, make sure you also install pyobjc.


We are happy to announce that we have been able to update localizations of the app, including Chinese, French, Spanish, Russian, German and Italian versions. Many thanks to the 3type crew, to Nathalie, Vika, Valentina and Sol for their invaluable input.

We have been able to fix an issue with files generated in Arabic UI localization.

And we were able to improve the code that manages keyboard shortcuts with keyboard layouts where you need the Shift key to access the figures (especially French and Czech keyboards). This improves both master selections and zooming. If you have had issues with those, please try again.

Fixes and improvements

As with every iteration of Glyphs, a ton of minor improvements and fixes were undertaken. One seemingly minor thing is actually huge: we were finally able to track down and fix the most frequent crash that popped up in our reports. It has been a pretty obscure bug, hard to reproduce, and we have been trying to locate it for some time. But now we nailed it. That means that Glyphs 3.1 is significantly more stable, yeeha.

  • Filter > Roughen will keep components as they are.
  • The Rename Glyphs parameter will also apply to components in extra layers.
  • The italic angle is not rounded on export anymore.
  • Fixed loading of smallCapHeight from old .glyphs files.
  • Many improvements for vertical kerning in both static and variable fonts (thanks Min-Young and Kazuhiro).
  • Improved import of Illustrator and Inkscape artwork.
  • TrueType improvements:
    • better cvt and cvar export,
    • added import of TT sidebearing hints,
    • improved TTStems dialog,
    • fixed a number of TT hinting issues (thanks Edgar and Jens).
  • Improved the OT feature compiler, as well as OT feature code generation, especially automated mark-to-mark feature code.
  • Improved sorting of glyphs with custom subcategories. This may change the glyph order in the exported font.
  • Improved automatic alignment for non-letters, especially punctuation.
  • Improved the preview of strokes with filters.
  • Improved Correct Path Direction with corner components.
  • The Replace Glyphs parameter is now reliably applied to components in special layers.
  • Improved QuickLook.
  • Fixed positioning of nested components on export.
  • Fixed hmtx widths for empty non-spacing glyphs (thanks Khaled).
  • Fixed an issue with OpenType code for the frac feature.
  • Fixed display of the measurement line (Ctrl-Cmd-L) in Text mode.
  • Fixed minor UFO issues (codePageIndexes, style name).
  • Fixed WOFF2 export in macOS 10.13 and older.
  • Fixed the changing of layer types in macOS 10.11.
  • Generally improved stability and performance.

Have fun with the update, and a big thank you to all our users. Your continued input has made Glyphs the font editor it is today. Thank you.

Stay healthy, stay safe.