Glyphs 3.3 released
27 December 2024
Glyphs 3.3 is now available. This update brings enhanced performance, many small improvements, and support for five new scripts including Adlam.
Hi everyone, it is that time of the year again, and I guess we are all ready for some good news, for a change. So, here we have a new version of your favorite font editor wrapped up for you!
As always, go to your Glyphs menu, pick Check for Updates…, then follow the on-screen instructions. And while you’re waiting for the download to finish, sit back, relax, and read about all the good stuff coming your way. Enjoy!
Font view
Oh yes, we have some subtle but very useful enhancements for the Font view. For instance, numbers and punctuation are now grouped by script. Oh, and did you notice, it is not Numbers anymore, it is Figures now. Or, when you reopen your file, the sidebar selection is restored properly now. And, you can apply filters again from Font view, and it works as expected.
When you right-click on your glyph selection and choose Copy glyph names from the context menu, you now also have an option to Copy Production Names:
And we have two new options for smart filters in the sidebar: Has Background Image and Metrics Keys Invalid. You asked for it, you got it!
And, my personal favorite, the redrawing of composite glyphs in Font view is much more responsive now. Which leads me to the next topic...
Performance
We could greatly improve performance and stability with Glyphs 3.3, and the performance improvements include many parts of the app. Just to give you an idea, we got:
- Faster zooming with trackpad gestures.
- Improved performance with many components, which is great news for pixel fonts with a high pixel count.
- Much faster importing of fonts with multiple masters.
- Way better export performance and stability: that font that gave you that export error last time around? Try exporting it again.
And thanks to the crash reports we have received from you, we could eliminate a bunch of crashes. Keep ’em coming, folks.
Font info
We added new custom parameters:
Firstly, Keep GlyphOrder disables all Glyphs interference when writing the glyphs into the font file. Without it, Glyphs will still reorder .notdef
and space
to the beginning. If you know what you are doing, feel free to override that behavior. If not, keep your fingers off this parameter. For the same reason, we do not list it in the custom parameter UI, so you have to type its name:
In instances set up in Font Info > Exports, the new versionMajor
and versionMinor
parameters will overwrite the version number in those exports. There have been some edge cases where this has come up, but again, do this only if you know what you are doing.
In variable font exports, Glyphs now respects the Variable Style Name of the default instance. That is the instance that coincides with the Variable Font Origin, which is typically the first master unless you are overriding it with the custom parameter of the same name.
We fixed a nasty little side effect of the Propagate Anchors parameter, in case you ever used that one. It used to disturb component alignment in exported files. Well, no more. It now does exactly what it is supposed to do, namely limit the effect of composite anchors in the mark
and mkmk
features.
Editing and Edit view
Paths > Tidy Up Paths for All Masters (Cmd-Opt-Shift-T) will now attempt to remove empty paths as well. Empty paths are path objects with zero nodes, which is something that can happen if a script removes nodes from a path, but forgets to remove the path object when there are no nodes left.
We added basic calculator functionality to the fields in the Transformations palette. So you can now write simple calculations like 120/6
or 59+67
and the field will update right away.
We fixed the funny guides on macOS Sonoma. Under certain circumstances, some guides would appear dashed, rather than as a solid line. It had to do with some rendering changes Apple introduced in the latest OS version, but we were able to figure it out.
Another pesky bug that was bothering some people: suddenly some glyphs they had just created, magically disappeared again. Turns out, the addition of the glyphs was recorded as part of the undo history if the glyphs were added in Edit view. And if you hit Cmd-Z once too many... boom, glyphs vanished. Well, no more.
And a bunch of minor improvements, amongst which:
- Glyphs will now show the anchor chooser in the grey info box when the selected component has an anchor but no corresponding anchors are available throughout the composite.
- We managed to improve the smoothness of rounded stroke caps.
- Improved vertical editing: Glyphs now correctly shows the negative vertical origin in the info box, and spacing vertically works much better now.
- When selecting all (Cmd-A) multiple times in a row, Glyphs will now ignore global guides that are not visible (e.g. due to their scope).
- Improved Component from Selection with smart glyphs.
- You can now add a keyboard shortcut for Expand Outline.
- Resolved TrueType delta preview in the TT Instruction Tool (I).
- Glyphs will attempt to keep hints when you are converting between cubic and quadratic curves.
OT features
In variable font feature code, axis conditions like condition 200 < wght < 200;
will now match a single axis position only, in this case 200.
Marks from the 1DC0–1DCF Unicode range are now considered as well in the soft-dotted i/j code. If you have marks in that region, like the combining macron-acute, then it is a good time now to regenerate your ccmp
feature.
There was an issue with the computation of the pres
feature. Our apologies for any inconveniences, but it is fixed now.
We now prevent smart quotes (i.e., automatic curly quotes) in feature notes. That is because it may be used for parking feature code. And you don’t want those pesky curly quotes once you paste the code back into the feature code field.
And many small improvements:
- Language tags are now possible in anchor contexts.
- Glyphs will detect more smallcap glyph names when building
smcp
andc2sc
: Not only do glyphs with any of the suffixes.sc
,.smcp
or.c2sc
count, but also if it is combined with anything else, like.sc.ss01
, etc.
Import and export
There have been quite a lot of small improvements concerning TrueType: import of big TTFs is much faster now, and exporting TTFs works much better now too. While it already had been the best in the industry, cough cough, we could further improve the app’s conversion between TT and PS outlines.
And, if you have been doing manual TT hints, you will love that we were able to improve the TT bytecode: Anchors aligned to a zone now also follow the rounding of the zone now. And there is a minimum pixel distance to avoid collision with the base in smaller sizes. Ah, the joy!
By the way, the same is true if you have been that poor soul that needed to export a hinted TTF with loads of TT deltas. It works now, and it works fast.
Improved UFO support: We added error reporting to UFO exports, just like you know it from other kinds of exports. We can now round-trip node and shape identifiers, and we properly prevent duplicate identifiers. And, Glyphs now reads public.groupOrder
and writes font.note
. When exporting, overwriting existing UFOs works the way it should.
Exporting variable fonts has seen some improvements as well. When building the STAT
table, Glyphs does a better job recognizing name prefixes like Extra or Semi. Speaking of STAT
, italic style-linking has been improved as well. And it will correctly ignore family-name related parameters in static instances. Plus, subsetting the designspace with the Remove Master parameter now works as expected in all circumstances.
Error reporting during font export has received many small improvements. That includes better reports for .glyphspackage files, and the addition of error reporting to .glyphsproject exports. You will notice it when something goes wrong in your exports. Enjoy, if you can.
Improved import and export of color fonts. Glyphs does a better job when exporting sbix, CPAL/COLR and SVG tables into OpenType fonts. And we greatly improved import of both SVG files and tables, as well as CPAL/COLR from variable fonts.
Plus, lots of minor import and export improvements:
- Importing a large number of masters (be it from an OTVAR or adding many open fonts to the frontmost font info) is much more stable and performs much faster.
- The Round Corner filter will apply to brace layers too in an OTVAR export.
- When exporting TTFs (static or variable), Glyphs will correctly decompose reversed components.
- Copying and pasting transparent shapes from Adobe Illustrator works better. And, coordinates are not rounded right away after pasting from Illustrator.
- Glyphs will not enforce
isFixedPitch
when an .otf is opened, in order to preserve the original metrics. - Glyphs now correctly calculates
xAvgCharWidth
again for monospace fonts. - Class kerning, kerning classes, and RTL kerning are now properly imported from an .otf file.
- All glyphs set as non-spacing marks will be written into the
GDEF
mark class.
Unicode and language support
We are happy to announce we added full support for the African scripts Adlam, N’Ko, Vai and Osmanya. Many thanks to the great people of JamraPatel, who have done some groundbreaking work for these scripts.
Also new: preliminary support for Yezidi, including sidebar entries and a Start Window icon. Shoutout to Serhan, who has been helpful in guiding us.
In further news, we:
- Renamed ‘Azeri’ to the supposedly more clear ‘Azerbaijani’.
- Integrated Laki into the Kurdish sidebar entry.
- Added decomposition for Braille (thx Marcus), which allows you to create a Braille font in minutes. Or seconds, if you are quick.
- Improved and expanded the automatic Myanmar mark feature code. E.g., we added proper mark filtering for bottom-anchored marks. Many thanks for Ben’s input on this one!
- Glyphs now always uses the
gjr2
script tag for Gujarati. Big thanks to all the people who noticed and reported. - Added the latest Unicode 16 glyph info for Latin, Cyrillic, and specifically Serbian-Macedonian.
- Fixed decomposition of
itildebelow
and the glyph name forlambdastroke-latin
. No, don’t ask, please. It’s too embarrassing. - Fixed Cyrillic sorting.
- Glyphs will turn
ogonekcomb
intoogonekabovecomb
and vice versa when you mirror its component, switching thebottom
anchor totop
and vice versa, very similar to what happens when you flipcommaaccentcomb
. - Added Indonesian language support for the name table: in Font Info, you can now add localised entries for Bahasa, including names for Stylistic Sets.
- Improved anchor recipes for non-letters.
- In the sidebar, double-starred section headers in lists, like
**Figures**
, are now properly ignored when you right-click to add missing glyphs. - Updated Portuguese, Italian, Spanish and Chinese app localizations. Thanks to all the people who helped out!
All of this, as always, thanks to all the input we received from you!
Developer improvements
Glyphs 3.3 supports the latest and greatest Python 3.13. If you install your own Python, the usual extra installations apply. See the Extending Glyphs tutorial for details.
Through the PyObjC bridge, you can now read out GSPath.flattenedOutlines()
and it returns a completely decomposed and expanded version of the shape. Great for a reporter or for an export plug-in.
We added UI.MenuItem
to the wrapper: create new menu entries with MenuItem(title, action=None, target=None)
and append them to a menu:
from GlyphsApp import UI
entry = UI.MenuItem("Hello, World!")
Glyphs.windowsMenu().append(entry)
# Now look at the bottom of your Window menu :-)
Also new: GSComponent.slant
. Allows you to both read and set the horizontal and vertical slant. The value is a list of two float
numbers, e.g.: c.slant = [8.0, -2.0]
.
You can now specify MinSystemVersion
and MaxSystemVersion
for your plug-ins in the packages.plist for Plugin Manager. Just in case you are using a deprecated system call somewhere.
Plug-ins
You know, Glyphs is not just an app. It is a community of designers and developers, and one of the things I love most about it, is how foundries and engineers share their extensions for the app. And well, since the last time, a few things have happened:
- Henrique Beier finally renamed his fantastically useful but impossibly baptized plug-in ‘Show Smooth Node Angle and Proportion’ to Show Kinks. Plus, it also checks bracket layers now. And, if you need it, you can add the self-explanatorilly called custom parameter Ignore Kinks Along Axes to Font Info > Font. It takes a comma-separated list of axis tags. More info in the repo readme.
- Peter Nowell’s amazing Font Proofer has an all-new version. If you are subscribed, you should have gotten a memo for updating already. Do update soon, because one module inside the previous version of Font Proofer will stop working by the turn of the year.
- Stitcher can now add multiple components, mask its components, and align them into the direction of the host path. See the repo for more details.
- Show Angled Handles now also marks nodes that are just off a metric line:
- Export Variable Font with Automated Kern Axis will export your setup as a Variable Font as it is, but with an additional (auto-generated)
KERN
axis, for fading kerning in and out. - Export with fontc is a file format plug-in (an addition to File > Export) that will export Variable TTFs using fontc, Google Fonts’ font compiler written in Rust.
- Jens Kutílek published Favourites, and it gives you a window for quick access to your favourite Glyphs files. Drag & drop files into it, and it will keep track of how much time you spent on each file.
- Rafał Buchner open-sourced his amazing Text Sequencer plug-in and added it to the Plugin Manager. It generates spacing and kerning sequence strings in the frontmost Edit tab.
- Morisawa USA were so kind to publish their Proofing Tool, which will generate proofs in waterfall or paragraph layouts, ideal for comparisons across the font family’s design space. The readme has template formatting instructions.
- Wall Script by Reza Bohloul gives you a quick-access window for your favourite scripts. Reza was so kind to also open-source his scripts, now also available in the Plugin Manager.
Other additions to the Plugin Manager include the special-purpose plug-ins Emboss by mekkablue and Typollipse by Flachware, as well as Jan Šindler’s scripts. The Anchor Components palette solves a specific issue that occurs in Arabic when a mark can take multiple possible positions. And you can now again install a trial version of the amazing LTTR/INK tool through the Plugin Manager.
Social media
One more thing, in case you missed it. Yes, we finally abandoned our Twitter/X accounts. Let’s admit it, the platform is not what it used to be. That is why we moved to Bluesky now. Read all about it in our previous news post.
So here we are. This pretty much concludes our year. Thanks to all of you:
- for using Glyphs in one of its 64 small and two big releases this year,
- for contributing to this amazing community by writing one of the more than 10,000 posts in the forum this year,
- or by organizing one of the 60 events this year, from online workshops to international conferences,
- by providing one of the 1400+ open-source Python scripts freely available for everyone in Plugin Manager,
- by publishing one of the hundreds of plug-in updates this year, significantly improving the experience of Glyphs users,
- and by becoming one of our almost 20k followers on Instagram or one of the already 100+ followers on Bluesky.
And simply, thanks for making fonts. Be safe, stay sane, have a great 2025.