Glyphs 3.2 released

by Rainer Erich Scheichelbauer

30 June 2023

Glyphs 3.2 has arrived. The update contains significant changes in variable font production

Improve mark feature generator

  • Put anchors in separate lookups. This allows e.g. "_bottom" and "_cedilla" in "cedillacomb" and only a "cedilla" anchor in the base glyphs where it is different from the "bottom" anchor.
  • Add option to add prefix to mark context. e.g. lookupflag UseMarkFilteringSet @CombiningTopAccents;C *
  • Fix generation of context mark pos rule (the base keyword was in the wrong place)
  • The anchor context sometimes need something between the base and the anchor statement. To facilitate this, there is a new placeholder now: "&"
  • e.g.
  • A * B & C
  • will result in this code:
  • pos A base a B <anchor 300 0> mark @mark_bottom C
  • As this has changed a lot, please test this thoroughly.

Variable fonts

We made major changes to the workflow

Change the internal representation and storage of the "Axis Mapping" parameter
reverse the internal and extern numbers
Existing file will be "upgraded" when opened in Glyphs 3.2. So saving it in 3.2 will break files for older version
This was discussed here:
Consider switching to "Axis Location" parameters

Very much improve the generation of the STAT table

WIP "Disable Masters" for variable export
Apply the "Disable Masters" parameter at a better time

Fix offset curve filter in Variable export settings

Fix Transformations filter to transform all layers to make it work in variable fonts
Fix corner components and strokes in variable font export.
Fix crash with variable fonts and out of bounds brace layers
Write axis value name according to spec for the Width axis

Fix variation of RTL kerning


Improve the Round Corner filter
Allow negative values in Round Corner dialog
Allow tokens in round corner Filter arguments

Add "Copy PreFilter Parameter" to filter action button

Add "compatible" option to Round Corner filter parameter. This will more compatible outlines. Mostly useful for variable fonts


Apply shift constraints when duplicating shapes with Option-dragging

Don’t delete locked guides
Make deleting global guide undoable again

Smart Components:
Always show all axis in smart component dialog
Fix problems with some smart components
Fix saving of smart component axis with none ascii characters
Fix small smart component UI issue
In the Smart Glyphs settings, disable the textfields if there are no properties
Add option to change max height of smart component sidebar panel

Allow to select all and run "Close open paths"
Add Expand Outline in all Masters
Align nodes and anchors from the Transform panel
Fix slanting from transform panel
Improve Tidy Up Paths For All Masters
Fix auto complete menu in "Add Glyphs" dialog
Fix typing with Pinyin keyboard in "Add Glyphs" dialog
Improve suggestions in the Generate Glyphs dialog
Fix "Select All"cycling through all elements
Allow one letter anchors for mark cloud

Fix deleting of kerning pair from all masters (hold Option key)
Fix inserting pairs from the kerning panel

Fix rotate tool
When applied from the Text Tool shortcuts, when there is a "Link metrics with masters" parameter, apply the spacing of the default layer to all color pallet layers.

Add GSClickTolerance defaults setting

User Interface

Improve zooming with trackpad pinching
Fix update issue in Dimension panel

Add "Next" "Previous" buttons to Glyph Info dialog
Add "Show Node Labels" view setting

Allow search for more than one name part in Font view

Drag categories in Sample Text Preferences

Add option to add space in preview view (Glyphs.defaults["GSPreview_MoreSpaceAbove"] and Glyphs.defaults["GSPreview_MoreSpaceBelow"])

Distinguish Font Info window in Window menu
Dragging in the Preview panel

Measurement tool measures agains the side-bearings when there are no intersections in other layers
Prevent switching temp tools when the hand tool is active as a temp tool (the space bar is pressed) This is to allow other shortcuts like switching masters
Fix measurement line drawing

Fix "Color not set" filters
Fix "use as master" in layer panel

Add GSShowStrokePanel user defaults setting
Add GSAlwayShowExportNotification user default
Add GSFontViewMinIconSize GSFontViewMaxIconSize defaults

Microsoft compatibility

Add "Keep Kerning in one Lookup" custom parameter
Script mekkablue: PowerPoint

Feature code

Fix ".case.narrow" compositions
Fix "Nutso2" fraction code
Optimize "locl" feature code with locl glyphs with multiple languages

Better soft dotted i ccmp code

Make sure we don’t inherit the lookupflags from the previous lookup. This fixes issues with context anchors messing with following lookups

Properly ignore disabled features
Fix interaction of manual and automatic feature code
Improve some details with the feature code compiler (e.g. allow language dflt required)
Write feature.node with line breaks
Better error message with class names that contain spaces

Font Info

Font type

Fix some interpolation issues with the font type: Variable

Add support for predicates in subsetting CP (e.g. "Remove Glyphs")
Fix "CJK Grid" for Japanese glyphs
add "Prevent Name ID" parameter
Add "Export vmtx Table" custom parameter
Add "Get Hints From Master" custom parameter


Make fit curve work with TT (special case with two off curve nodes only, yet)
Avoid tripping over a TT segment that has all point on the same position
Fix issue with auto-stems in TT instructions
Fix issue with TrueType deltas
Slightly improve TrueType instructions
Fix Dark mode in TrueType preview
Fix display of TrueType hints
Don’t put italic angle in TTZones

Language and script support

Fix default setup for softhyphen
Added Ogham script, many thanks to Michael Everson for his input
add some Canadian to GlyphData
allow more then one GlyphData file next to the .glyphs file (as it was in the global Info folder).
adjust some Coptic
Add missing Han infos, Some more CJK infos
Fix Mongolian entries in name table
Fix some Devanagari feature code issues
Some improvements to Runic features
Write curs before kern

Always add languagesystem arabic if there are Arabic glyphs in the font, thank you Andreu

If we’re talking about localizations, there have been a lot of minor improvements for French, German, Spanish localizations

Import and export

Import sparse masters form design space file as brace layers
Fix problem importing variable fonts

Fix import of zones and stems from otf/ttf

Fix importing fea code from invalid GSUB table
Fix importing of feature code from .otf
Improve import of mark feature code

Fix some issues with "Import Font" parameter
Fix error with feature code and imported glyphs

fix some issues with the "Import Master" parameter
Fix "Previous/Next Master" for with imported masters

Improved SVG import

Fix export of duplicate Color Palette layers
Fix export of CV parameter names
Fix export of gradients in SVG
Fix export of interpolated color palette layers
Fix export of outline with fractional coordinates
Fix export of variable GPOS
Fix export of variable WOFF/WOFF2
Fix export with "Webfont Only" parameter for plain font
Fix rare crash when exporting
Fix some issues with writing automatic GPOS features. (export automatic kern even if there is no "# Automatic Code")
Improve export of color layers to COLRv0
Improve export of kern table
Improve export of variable fonts

Small improvements to ufos
Improve UFO stuff
more UFO compatibility
Some small adjustments on the ufo export
substitute $[] tokens when exporting ufo
Use "Write lastChange" when writing .ufo
WIP sync ufo export with glyphsLib
Error reporting invalid .ufo data
Fix reading kerning from .ufo and .otf
Improve Quicklook for .glyphs, .glyphspackage and .ufo file

Improve round tripping of glyphs 2 files
When reading version 2 files, add all zones as metrics

Python and scripting

Everybody uninstall and reinstall their Python module via Window > Plugin Manager > Modules. You will get the latest Python 3.11, including PyObjC, brotli and zopfli, so you can do post production. In the meantime, Python 3.12 got out. Glyphs supports it too now, if you use your own custom installation of Python in Glyphs > Settings > Addons. Do not forget to install PyObjC if you do so.

We improved Window > Macro Panel. Firstly, there are way more autocomplete keywords avaiulable while typing code. And secondly, you can now minimize the window with the yellow button. Of course you can also still toggle its display with Cmd-Opt-M. And we added a user default GSMacroWindowAllowNoneAsciiInput, which, if set if set to False, will only allow you to type good old 7-bit ASCII. The default key is added to the Hidden Settings mekkablue script.

Add PickGlyphs() to python wrapper
PickGlyphs(content=None, masterID=None, searchString=None, defaultsKey=None)

Fix drawingTools python API
Fix missing countOfUserData (shows up in an python error)
Fix problem with python wrapper
Add GSGradient to python wrapper
Fix GSBackgroundImage wrapper
Fix setting GSGlyph.color = None

Fix some issues with external scripts
refactor Extrude filter to make it easier to run from scripts
Add "IgnoreRecentScriptInvokedByKeyboard" option

App plugin drawing API in Font and Preview view

Catching problems/crashes from plugins

New tutorials

New scripts and plug-ins

More improvements and stability

Fix crash in macOS 10.14
Fix crash when exporting
Fix crash when typing in Edit view with Indic keyboards
Fix cursor and changing text not matching
Fix a crash in the Help menu
Fix a crash with context anchors
Fix an issue with remove overlap
Fix another issue with smooth curves again
Avoid decomposing underscore anchors in non-marks (GDEF warning)


Actually suppress modification dialog
Add error when a “Disable Masters” parameter removes all masters
Add option to disable autosave as package files
Add option to disable the Metrics Keys State in font view (it can be slow with when there are a lot masters and brace layers)
Add option to sync metrics for brace layers. Add ==x metrics key (x is the name of the containing glyph) to the brace layer
Allow single character strings in list filter and generate glyph dialog
Allow user setting component colors
Decompose brace layers when there is a "Decompose Components" custom parameter
disable inline editing in the font view sidebar
Disable mouse wheel scrolling in edit fields when not editing
Don’t interpolate metics key for brace layers for self referencing keys
Don’t scale unselected corners
Don’t use PreferredNames for default family name
Fix "Use Extension Kerning" with custom feature order
fix (auto)hinting on intersections
Fix decomposition of anchors from rotated components
Fix decomposition of bracket layers from not exporting glyph
Fix default anchor position in caron.alt
Fix display issue with custom parameters that contain a very long string
Fix drawing of anchors in Show Master Compatibility and more than one layer group
Fix duplicate info entries in Font Info
Fix extra line after line break in edit view
fix font.newTab()
Fix hang when starting the app
Fix hidden glyph overview in list mode
Fix instance selector in Edit View
Fix issue with "Re-Interpolate" and regular backup layers
Fix issue with alignment and manually set anchor names
Fix issue with Arabic ligature code (better handle glyphs that are only right joining)
Fix issue with GSGlyphReference objects
Fix issue with hidden/unsupported entries in
Fix issue with localized FullName
Fix issue with measurement line
Fix issue with metrics keys not showing out of sync state
Fix issue with production names
Fix issue with zero length segments when removing overlap
Fix issues with some plugins
Fix layer groups for color layers
Fix layer transformation with list/tuple
Fix metrics keys in italic brace layers
Fix pasting caps onto extra nodes
Fix positioning in the preview view
Fix preview in some filters
Fix problem with class references in anchor contexts
Fix problem with missing axis tag for custom axis
Fix several shortcuts
Fix small cap ligature names
Fix smooth point (broken since 3193)
Fix some layout issues with control layers
Fix spacing of bracket layers in composite glyphs
Fix width of glyphs with brace layers in components
Fixed an issue with interpolating glyphs with partially aligned components and some specific metrics keys
Follow symlinks for CustomFilter files
Ignore metrics key warnings for empty glyphs
Improve build in filters (e.g. respect selection)
Improve copy pasting of hints
Improve corners with ‘origin’ anchor
Improve error reporting
Improve error reporting when opening a broken file
Improve handling of not selected off curve nodes when pasting into paths
Improve handling of SF-Symbols
Improve handling/validation of axisTag
Improve metric keys on brace layers
Improve names for .glif and .glyph files (Con)
Improve performance of calculating Metrics Keys State
Improve performance with a lot Color Palette layers
Improve subsetting with "Disable Masters"
Improve the measurement line against the sidebearing
Improve the wording and UI on the "Changes in old file" dialog
Increase miter limit to be closer to what Illustrator is doing
Keep manual line break on the previous line
Keep the floating console visible when the app is in the background
Limit height of pallet window to keep it on the screen
Load "marks" from custom glyphInfo
Localize component placeholders
Make sure the instances are updated when the "Disable Masters" changes
Make sure we don’t convert names when duplicating glyphs from Edit view
Make the "Clear" command work in the Edit view
Make the scroll wheel zoom in edit view a bit slower
Make zooming in Edit view a bit smoother
More precisely calculate hhea.caretSlopeRise, hhea.caretSlopeRun
Plugin compatibility
Prevent duplicate glyph names when search and replace in names
Resize Anchor context text field if needed
Select all will select all anchors
Show all alternate glyphs when typing a none ASCII char in the glyph selection dialog
Show and allow editing all unicodes in font view list mode
Slightly improve "correct path direction"
Smallcaps for soft dotted glyphs
Some performance improvements with big files
This is a release candidate. We do not expect many more changes to the final release.
Try to keep paths compatible when subtracting (e.g. when using masks)
Update Edit view settings for inactive tabs
use "Preview As/Descender" as is and apply extra padding only to default spacing
Use right encoding for "Unicode" strings in the name table
When renaming glyphs and enabled custom names, only reset info when we find a new one
When saving a file, make sure we run the auto alignment. This should reduce the occurrences of the dreaded "Changes" dialog when opening a file.
When searching with unicode chars, also find unencoded alternates
Write anchor.context into public.objectLibs