Glyphs 3.4 released

Blog
by Rainer Erich Scheichelbauer

8 October 2025

Glyphs 3.4 is out. This update brings macOS 26 compatibility, a new crash reporter, additions to Font Info and improvements for variable fonts and smart components.

Good news: time to update your favorite font editor again! Free for all Glyphs 3 users, the all-new version 3.4 is waiting for you to select Glyphs > Check for Updates… and follow the subsequent on-screen instructions. It brings macOS 26 ‘Tahoe’ compatibility for the early adopters among you, and a whole bunch of other good stuff:

New crash reports

First things first, go into Glyphs > Settings > User Settings, and fill in your name and e-mail address in the Crash Reporter Info:

Do this now so that if Glyphs crashes some time in the future, in a galaxy far, far away, it will automatically send a crash report with this info. This helps us get back to you and fix the crash. If you do not fill in this info, your crash reports will be anonymized. Also okay, but we cannot ask you about it afterwards.

Variable fonts and interpolation

Glyphs now does a much better job at building a STAT table based on the instances set up in Font Info > Exports. Pretty much any setup with Weight, Width, Italic and Optical Size axes now works straight out of the box. That includes that an explicit Italic axis now builds a pristine italic STAT entry. And while we were at it, italic angle interpolation works better now.

What’s more, you can fine-tune STAT and fvar table construction with the Include in fvar Table and Include in STAT Table parameters. If the parameters are present, and their boolean value is off, Glyphs will ignore the instance for the respective table.

If you still experience issues with STAT table generation, you can now install the Better VF Export plug-in from Window > Plugin Manager. If it finds Axis Values custom parameters in your variable font setting, it will use those to override the STAT table entries calculated by default. Read the documentation for details.

Speaking of axes, we defaulted Google’s parametric axes back to uppercase axis tags, fully conforming to the ‘syntactic requirements’ set forth in the spec.

Oh, and we have news for the smart component aficionados amongst you. We have greatly improved the use of font axes as smart properties, and regular, non-smart glyphs as smart glyphs. Whenever a glyph has the same axes as the font (give it the same name, and if you like, same minimum and maximum), it works as you would expect it now. That means that, for example, once you have Weight and Width axes defined, you can reuse the caps as smart components in smallcaps!

Easiest way to do this is to temporarily rename, say, the H to _smart.H and access its smart settings (through the context menu or Edit > Info for Selection, Cmd-Opt-I). Once these settings are done, the H will behave like a smart glyph, its components will behave like smart components, and you can then change the name back to H. Or use this snippet to turn your caps (or whichever other glyph into smart glyphs:

# turn selected glyphs into smart glyphs with font axes:
font = Glyphs.font # frontmost font
for selectedLayer in font.selectedLayers:
    if not selectedLayer.parent:
        continue
    glyph = selectedLayer.parent
    for fontAxis in font.axes:
        smartAxis = GSSmartComponentAxis()
        smartAxis.name = fontAxis.name
        glyph.smartComponentAxes.append(smartAxis)
        # you need to do the layer assignments yourself

Oh, you need to do the layer assignments yourself still. Alternatively, there is a great Python script by Erik Moberg called Make Component Smart that changes any component into a smart component with font axes acting as smart properties. Or the other way around, Make Glyph Smart in the mekkablue scripts in the Components submenu.

Good luck to all the type geeks spiraling down that rabbit hole next week.

Font Info

Using the Disable Masters parameter for designspace subsetting is greatly improved. It now also filters out brace layers accordingly. This prevents an export error where Glyphs would try to apply intermediate layers (a.k.a. brace layers) that fell outside the subsetted designspace.

I love this one. In Font Info > Font, the custom parameters Import Font and Import Master parameters now sport Reload buttons:

In Font Info > Masters, If you add a script filter to x-height or cap height metrics (e.g. Latin or Greek), Glyphs will still find them for setting default metrics in the OS/2 table.

In Font Info > Exports, instance icons are updated more frequently. Also, we greatly improved scrolling in this Font Info tab when there are a lot of instances. And we removed the error check for family name length.

On export, filters like Round Corner are also applied to non-exporting glyphs. A non-exporting glyph may still be used as a component in exporting glyphs, after all.

Font info tokens: we added support for {{{fontName}}} (for Name ID 6, ‘PostScript name for the font’) and {{{fullName}}} (for Name ID 4, ‘Full font name’) as tokens in instance settings. Useful for building a copyright or trademark entry.

There are a handful of new custom parameters for your non-destructive font-production pleasure:

  • Prevent Name ID allows you to suppress a name table entry by its ID altogether.
  • Export DSIG Table allows you to control whether a TTF export contains an empty DSIG (digital signature) table or not.
  • Export vmtx Table lets you suppress a Vertical Metrics table. Useful if a font contains glyphs with accidental vertical sidebearings.
  • Export PostScript Hints and Export TrueType Hints allow you to selectively suppress the export of your manual hints.
  • In Font Info > Exports, you can control whether an instance goes into a variable export and/or static export with the self-explanatory Export as Static Font and Include in Variable Font parameters.
  • Improved the preview of instances that contain a Scale to UPM parameter.
  • If you fiddle around with the Enforce Compatibility Check parameter, Glyphs will now reliably update all its compatibility markers in Font and Edit views.
  • You can now put an Export Mac Table Names in an instance as well.
  • The Decompose Glyphs parameter accepts wildcards now, like *dieresis* for all glyphs with dieresis in their name.

OpenType features

We made all scripts and all languages from the OpenType 1.9.1 specification accessible in the feature code.

New constant for feature code tokens: in manual feature code, glyph class predicates now support the tokens direction==LTR, direction==BIDI and direction==RTL. It used to be the index numbers 0, 1 and 2. Now it is more legible, I think, isn’t it?

Oh, and we further improved tokens, including eliminating an edge case with glyph names containing hyphens. If you had encountered it before, take a deep breath and try again.

Automatic feature code generation has received a few updates as well:

  • If you import a font into another with the Import Font custom parameter, Glyphs will now include all glyphs from the imported font when generating features.
  • More Arabic ligatures will default into rlig now, including all madda, wasla and hamza variations of lam-alef ligatures.
  • Tagalog glyph positioning is now written into the kern feature by default.
  • The mark feature now generates without a hitch in multi-script fonts.
  • We fixed an issue where the aalt feature would cause an overflow. If you ran into this issue, and you disabled feature code automation because of this, please give it another try.

Language support

Since Glyphs 3.3, we added or expanded support for Sinhala, Tagalog and Baybayin. For Sinhala and Tagalog, we were also able to add sidebar and Start Window entries. Big thanks to everyone who contributed!

Aaaand, maybe you already spotted the Saudi Riyal symbol among the currencies. Add it as riyalSaudi to your font, and Glyphs does the rest. Read more about the new symbol on Emran AlHaddad’s GitHub repository.

Do note that the Unicode code point that got approved a few weeks ago is different from the one in the proposal. If you need to update a pre-approval font file, make sure your Saudi Riyal glyph points to Ux20C1 now.

We properly separated Old Georgian from (modern) Georgian in the built-in Glyph Data. Speaking of which, GlyphData.xml files are now also loaded from the system-wide /Library/Application Support/Glyphs 3/Info, along with sidebar groups and custom filters.

Plus, we updated a few app localizations, including French, Spanish, Portuguese and Italian. Molte grazie, muchas gracias, muito obrigado and merci to all the native speakers who helped out with their valuable input.

Font view

Our good old Font view works a bit better now. For one thing, Cover Flow can be reopened more reliably in list mode. Even if you do not see the separator, move your cursor above the header line, and you should be able to pull down the Cover Flow for your glyphs.

If you still have a hard time, here is a trick: Hide the application by choosing Glyphs > Hide Glyphs (Cmd-H), then switch back to the app by clicking on its Dock icon. Now the separator should be visible again.

In further news, removing or renaming many glyphs works fast and securely, and will not cause hangs anymore. Happy days!

Edit view

We smoothened the experience for the display that you will probably use the most. We identified and eliminated a few little annoyances. My personal favorite? Edit > Sync Layer Selections is now on by default. Good news for multiple-master designers.

Glyphs will attempt to keep the visible master when double clicking a component on a specifically selected layer. Say, your active font master is Light, but you switched to the Bold master layer in one of the displayed glyphs. When you double click a component to open its original glyph next to it, that original will also be opened at the Bold master layer, rather than the currently selected font master. I know, hard to explain, but it is one of the things that make you go ‘aaah’.

Are you using stroked paths? Stroke endings that align to the bounding box align better to the italic angle now. Plus, the Measurement tool (L) now better calculates distances on stroked paths.

While we are at it, there are many more micro-improvements, that, while seemingly insignificant, will make for a better type designer life. To quote just a few:

  • Path > Force Extremes (hold down Opt) has been greatly improved.
  • Filters are now always properly applied in instance previews.
  • The mark cloud now prefers more relevant accents.
  • You can now define a shortcut key for the Pixel tool in Glyphs > Settings > Shortcuts. I don’t know why we forgot it in the first place, but we did.
  • Correct width for vertically shifted components on exit and entry anchors in italic masters. If you know, you know. If you don’t, lucky you.
  • Improved rendering of PostScript ghost hints.
  • Improved glyph info box in RTL mode.
  • Improved corner component behavior on intersection points (View > Show Nodes > Extra Nodes).
  • Improved anchor menu in the grey info box when a component is selected.

Color fonts

Glyphs 3.4 only exports color glyphs that actually contain shapes. In theory this is a major change, but other than make your color font exports a bit smaller in file size, we do not expect any adverse effects. If you have the bad luck of running into a crazy edge case, perhaps in its rendering in a third-party app, please let us know.

The custom parameter Disable Masters now works on layer fonts and COLR/CPAL exports as well. Its original intention was to disable masters for interpolation, then to subset a variable font designspace, and now you can turn colors on and off with it.

Many small fixes happened. If the rename Glyphs parameter gave you a hard time in color font exports, try again. Adding SVG images works like a charm again. And the UI for the color palette pop-up has been unglitched.

Coding

Writing a tool plug-in? It is now much easier to set a toolbar icon in Python. See the SDK templates for code samples.

The process of loading Python plug-ins is more flexible now. It will respect Principal Classes (note the plural) in your Info.plist file. When Principal Classes is present, the NSPrincipalClass key is ignored. This is useful for all-in-one plug-ins that take over the tasks of, e.g., a reporter, a filter and a tool. It would look something like this:

<key>Principal Classes</key>
<array>
    <string>ExampleReporterClass</string>
    <string>ExamplePaletteClass</string>
    <string>ExampleToolClass</string>
</array>

You get the idea. Your plugin.py then incorporates the respective class definitions of the same names. As bundle suffix, we recommend the general .glyphsPlugin. Perhaps a good moment to give the updated Writing plug-ins tutorial a quick re-read.

You will probably appreciate a few nice changes in plug-in handling:

  • When the user tries to remove plug-ins with manual code changes, a confirmation dialog will appear. Yes, that user will probably be the coder, and if that happens to be you, you will love it.
  • When deleting a crashed plug-in, only the symlink is deleted, while the plug-in is moved into the Plugins (Disabled) subfolder. Phew.

In further news, we made many small fixes and improvements in the Python wrapper, amongst which a better implementation of Glyphs.documents, which will now really return all font and project docs in the app. Then, intersectPaths() now works again as it should. And GSLayer.addMissingAnchors() will now prefer local glyph info if present.

More

Glyphs 3.4 incorporates loads of minor and not-so-minor stability and performance improvements. We believe that it is the fastest and most crash-proof digital type design experience yet!

Sure enough, we have many more little improvements that do not fit anywhere else:

  • The app UI is generally a bit snappier, glyph previews update more quickly, both in Font and Edit view.
  • Repeated test installs (in the File > Export dialog) work much better now, any previous test installs are properly discarded.
  • We fixed an issue with outline intersections, which in turn caused issues in a bunch of other places. Most notably in the Hatch filter and the Measurement tool. If you had weird results there recently, give it another try.
  • The Roughen filter now works with open paths as one would expect it.
  • Path > Tidy Up Paths works reliably in certain (rare) edge cases.
  • More Font Info fields support stepping with up and down arrow keys.
  • Components on non-master layers (color, brace and bracket layers) update more reliably
  • Exports from .glyphsproject files now deliver proper error reports, and do not just exit quietly anymore.
  • Printing from Edit view works a bit better now.
  • Are you on macOS 15 ‘Sequoia’? We added a QuickLook for WOFFs for that OS.
  • QuickLook: UFO QuickLook plug-ins received some fixes and improvements.
  • Layer backgrounds now get exported in UFOs.
  • When reading a UFO, respect public.skipExportGlyphs.
  • The Replace option now works as expected when you add new glyphs to a font.
  • Importing fonts is improved: the underline position is read out and imported correctly, and for the PS Font Name, the English/Default name is imported.
  • Removing overlap works better with many overlapping shapes.
  • A bunch of rounding issues were fixed.
  • Instance preview of glyphs with a corner component works reliably even if the instance is scaled with a custom parameter. And if you understood what this means, you are probably that guy who created and sent us that edge case in the first place.
  • Greatly improved the dialog that comes up when the file has changed and offers you to reload it.
  • Glyphs can better deal with invalid .glyphs files, and is more likely to open a damaged file now.

And the list goes on, of course, but we have to draw the line somewhere. We believe you’ll notice the overall smoother experience, even in the latest macOS. Have fun with Glyphs 3.4!

Extensions

Oh and it goes on, beyond the core Glyphs application. If you’re like me, you accessorize wisely and are always on the lookout for new plug-ins and scripts. For instance, you may want to have a look or two at these new plug-ins in Plugin Manager:

  • The Realign Handles filter helps eliminate kinks in master drawings and static interpolations.
  • Better integrate git into your Glyphs workflow with Light Table by Glyphs coder Florian Pircher.
  • The Angularize filter subdivides curves into straight line segments.
  • Visually manage your kern groups with Groups Shelf by Pavel Kolchanov.
  • Show > Highlight Imprecise Italic Angle by Michael Rafailyk will highlight path segments that almost but not completely stick to the italic angle.
  • The Corretto Post-Processor by Jens Kutílek helps you post-process fonts after export.
  • The Better VF Export plug-in lets you fully control the STAT table with Axis Values parameter. See further above.
  • Sho's GlyphsGPT with Chat is hard to install, but once you get it running, you can write Glyphs Python code with ChatGPT-style prompts.

Needless to say, these are all available through Window > Plugin Manager. But there’s more... boy, have there been updates of plug-ins already in Plugin Manager:

Big shout-out to all plug-in developers, this time especially to Jens and Erik, who committed so many updates.

And last, but not least, a whole bunch of Python script collections have been made available through the Plugin Manager:

…and I, cough, published Papyrify which I developed with Matteo Bologna. Yes, it adds a Papyrus axis to your font. Don’t ask.

Tutorials

Finally, since the last time we spoke, the following tutorials received updates of varying degrees, you may want to give them a quick re-read. The exact changes are documented in the respective page footer:

And it’s a wrap! Enjoy designing with Glyphs 3.4, and all the other presents under this untimely Christmas tree. Stay safe, stay sane.