Welcome to Glyphs 2.6, which first and foremost is a free maintenance update for macOS 10.14 Mojave. And as part of that, we are thrilled to present to you Glyphs—in Dark Mode:
Isn’t it a beauty?
But I suppose you know us already well enough that you can guess we did a little more than just that. We added many, many improvements, fixes, enhancements, accelerations and whatnot. Read on for a little overview of what’s new in the latest version of Glyphs.
Speed, Speed, Speed
Oh boy, have we put the pedal to the metal… We were able to restructure the way both Edit and Font views are drawn on the screen. Now, screen drawing makes full use of the latest and greatest graphics capabilities in macOS, so you should see a significant performance increase when scrolling through the Font tab, or with a lot of text in an Edit tab. The same is true for a number of batch edits. And if your machine has a lot of processor cores, well, put on your seat belt and see for yourself.
Small addition, big change in your workflow: You can now select outline segments. Click, boom, it’s that easy. No modifier keys, no nothing, just click on it:
And of course, you can Shift-click to add or remove segments from your selection.
We debuted it at ATypI Antwerp earlier this year: you can now make color variable fonts with Glyphs! Even Brace layers are supported, haha. Believe it or not, this is (an animated GIF of) a font:
What do you have to do to achieve it?
- In Font Info > Masters, set up the color palette like you would for a CPAL/COLR font.
- Create ‘normal’ black and white variable glyphs, with brace layers and everything you need for the various parts you want to move (in the Pong example, the background, ball and bats)
- In a new glyph, insert them as components, but on different
Colorlayers in the right order, and you’re done. Ta-daa!
We renamed the custom parameter
Variation Font Origin to the more consistent
Variable Font Origin. The old name should still work, but please update your files accordingly anyway. Plus, we added two new parameters:
Variable Font File Name(or the equivalent
variableFileName) lets you set the file name of the exported font.
variableStyleNamesets the default style name of your variable font. This makes most sense if you do not have any instances set. If you do not set anything, it will default to ‘Regular’.
What else happened in Variable Font Land? We added
mkmk mark-to-mark attachment GPOS variation, improved kerning in variable fonts containing three or more axes, and improved GPOS export with extension lookups. And while we were at it. we significantly improved the variation of anchors from components. Many thanks to Filip Blažek for pointing that one out to us.
From now on, when you create
_corner glyphs for use as corner components, they will default to a narrower advance width of 200, rather than the usual 600. This makes more sense for the partial outlines that corner components are, and it will keep your Edit view from cluttering up in case you find yourself working with a bunch of them.
You can make variants of your base letters with suffixes like
.bottomAccent, then this letter will be preferred for generating compounds with marks that make use of the indicated anchor. I know, sounds complicated, so here is an example. Say you have a lowercase g with a funky ear. Very nice, but it may get in the way of top accents in compound glyphs like
gdotaccent. So you can duplicate your g, name it
g.topAccent and flatten its ear, perhaps like this:
The next time you create a g compound that has a top-connecting mark, say
.topAccent variant will be preferred for the base:
You can also combine multiple anchors in one such suffix. Make sure they are (a) camel-cased and (b) in alphabetical order, .e.g.,
One more thing about components: When you save a file with Cmd-S, Glyphs will update the component positions for all auto-aligned compound glyphs.
Masters and Interpolation
I have four pieces of news for you. Admittedly, they are all a little geeky, but if you work with multiple masters, you will love them:
- If you merge fonts via Font Info > Masters > Plus menu > Add Font as Master, all secondary (non-interpolating, non-master) layers are preserved now.
- You can now use the Layers palette’s Re-interpolate function on multiple selected glyphs at once. It will then reinterpolate the layers of the currently selected master.
- The Layers palette now has an option called Re-interpolate Metrics, and it does what it says. It leaves paths, anchors and components alone, but updates LSB and RSB in the selected layer(s).
- You can now add more than one master at once in Font Info > Masters > Plus menu > Add Other Font.
By the way, have you been using the mekkablue script Masters > Insert Instances? Update it, please, it has recently gotten a lot better: It can now populate the style name fields with natural names and set weight classes and style linking too.
We improved sbix support: You now have better control over image positioning, you can better import sbix fonts into Glyphs, and export has been optimised as well. Oh, and the sbix picture is previewed in the proper relative size, no matter whether you are editing an
iColor layer or whether you are in text mode:
iColor glyphs are now also better supported in Font View:
Too much to swallow at once? No problem, we have updated the sbix tutorial for your laid-back reading pleasure.
- We also improved SVG color font support, no matter which method you use.
Colorlayers are now included in View > Show Master Compatibility. (And yeah, you guessed it, they’re interpolated as well.)
- Glyphs tries to stay on an equivalent
Colorlayer when switching between glyphs with Home/End (or fn-left/right) keys. Provided, of course, that both glyphs have the same or similar
Colorlayer structure. That makes it much easier to edit the same color when stepping through the glyphs.
- Import and export of alpha values for colors has been improved.
- More intelligible error reporting when loading SVGs.
We have some pretty cool TrueType improvements in store for you. For one thing, View > Show Master Compatibility now works like a charm with quadratic curves.
A custom parameter called
TTZoneRoundingThreshold, which you can set in Font Info > Font or Font Info > Instance (the latter takes precedence, of course), controls the likelihood of a zone being pushed up a pixel. It takes a small decimal number as value, typically something around 0.1 or 0.2. The value is added to any positive zone position before rounding, and added twice to the x-height zone (the one named
xHeight in the TrueType zones). If you do not set it, a default of 0.09375 is assumed.
Example: At a certain font size, the smallcap zone ends up at 6.45 pixels, and the x-height at 5.25 pixels. Without any change, the smallcap zone would round and snap to a height of 6 pixels, while the x-height would end up with 5 pixels. But you set a
TTZoneRoundingThresholdof 0.2, so the smallcap height ends up at (6.45+0.2=6.65≈) 7 pixels, and the x-height at (5.25+2×0.2=5.65≈) 6 pixels.
You can trigger conversion between quadratic and cubic outlines now also in Font view. Just select a number of glyphs, or all of them, and run Paths > Other > Convert to Cubic, or Quadratic, respectively. Now you can batch-convert your heart out, have fun. Speaking of which, TT conversion has been improved further, and among other things, inflection points are now added automatically to your TrueType outline.
Many little things were improved in the TrueType Instructor tool (shortcut I). A big round of applause to Noe Blanco who shared her invaluable input with us. More improvements are in the pipeline.
And there is a new hidden setting called
TTPreviewAlsoShowOffCurveIndexes that switches on display of all point index numbers. Simply run
Glyphs.defaults["TTPreviewAlsoShowOffCurveIndexes"]=True in Window > Macro Panel and switch to the TT Instructor tool (I):
This can be handy, e.g., if you need the point indexes for writing TTF Autohint Control Instructions. Speaking of Werner Lemberg’s TTF Autohint, we fixed a few issues and integrated its latest version into the app. In other words,
--stem-width-mode is now supported, and strong stems work better now.
Back to Glyphs’ own TT instructioning. You can now add a
TTMinimumDistance custom parameter to your instance in File > Font Info > Instances. The default is 0.25, which means that any hinted stem will be drawn with a minimum length of a quarter pixel, no matter which PPM size, if it has a stem hint applied to it. If you are not happy with the default of 0.25 pixels, you can set your own minimum distance (in pixels) with this parameter. This value kicks in at small pixel sizes, where small parts are in danger of disappearing.
Also, TrueType instructions now use a hardcoded control value cut-in, which basically means that hinting is deactivated in bigger sizes. More precisely, it will prevent outline distortions if the effective change results in something bigger than (97÷64=) 1.515625 screen pixels.
You can automatically add TT Instructor hints from within the Font tab. To do so, switch to Edit view and choose the TrueType Instructor tool (I), then switch back to Font view (Cmd-Opt-1), select some glyphs, right-click and choose Autohint TrueType from the context menu:
And it even gets better than that: When you run the Autohint TrueType command from the context menu, be it in Font or Edit view, it will also add vertical stem hints. But it only does so if you have vertical TT hints (‘x-direction’) defined in the TTF Stems parameter in Font Info > Masters.
Also, TT hints now work better on outline intersections and in corner components. If you ran into issues before, please give it another try. In further news, delta export, TTF Stems import, and the hinting preview in the TT Instructor (I) have been improved. Overall, TTF export is much snappier now.
Doing stuff with AAT? You’ll be happy to hear that Glyphs now uses the new default location of ftxenhancer app:
/usr/local/bin/ftxenhancer. Or you can set your own path with the
GSftxenhancerPath preferences. Paste the following line into Window > Macro Panel and press Run:
Needless to say, adapt the path to the right of the equal sign to wherever you have put your ftxenhancer.
Encodings, Languages, Scripts and Localisations
Portuguese, Korean, French and Chinese app localisations have been greatly improved. And while we are at it, it is not only the localisations, but also an increasing number of tutorials that are available in French and Chinese! Many thanks to Nathalie Dumont as well as Liu Zhao and her students for their continued, fantastic input.
But, so many more things happened here, it is hard even for ourselves to keep track. To give you just a few highlights:
- The Chinese sidebar has been subcategorised with the most useful groups of glyphs:
And while we were at it, we also improved sorting for Chinese. And with the help of the nice students at the Gengdan Institute, we were able to update a few UI translations, including some plug-ins in Window > Plugin Manager. Special thanks to Yang Xicheng, Liu Yezhao, Dake, Neil and many others who helped so nicely, xièxie!
- Bopomofo is now treated (and listed) among the CJK scripts.
- The Korean sidebar is updated with the latest Adobe-KR and traditional KS X 1001 codepages. This comes with an adapted Korean cmap and the new ROS:
Many thanks to Minjoo Ham, Aaron Bell, Daekwon Kim, Han Hyewon and all the other nice people at Sandoll for their invaluable input!
- Hangul glyphs can now be auto-aligned as well.
- Improved Bulgarian Cyrillic sidebar entries, thanks to Krista Radoeva and Botio Nikolchev.
- Khmer: sidebar and GlyphData are improved, and mark positioning has been overhauled as well. Thanks to Ben Mitchell and Sovichet Tep for their input!
- Devanagari sidebar and GlyphData has been improved, thanks to Kimya Gandhi and Rob Keller.
- We added Uppercase Georgian to the glyph database.
- More Canadian native languages have been added to the GlyphData.
- Much better handling of marks inside an Arabic sample string.
- Glyphs now keeps not only Unicode values but also names for Private Use Area glyphs.
- Double encodings in CID-keyed fonts now work as expected.
- Plane 16 Unicode values (U+100000 through U+10FFFF) are handled properly now.
- More scripts are now recognised and treated as RTL, e.g.,
- Improved filtering of kerning between different scripts (thanks Fritze).
- Many improvements have been made in the vertical layout mode.
Whoa, that was a lot, and we didn’t even scratch the surface, I can assure you. To sum it up, especially if you find yourself working with Asian scripts, you will notice an improvement, one way or another.
In the Font tab (Cmd-Opt-1), one of the most important functions is filtering the glyph set to what you need to see for your next task. We have two great pieces of news about list and smart filters for you. They may seem insignificant at first, but may have quite an impact on your workflow. Read on.
You can now add plain unicode characters in list filters. Instead of spelling out the glyph name, simply type the character with your keyboard (or whatever input method you prefer).
If there is a glyph with the Unicode assigned, it will be shown when filtered. If added from the list, it will create the corresponding glyph. It’s that easy.
We improved and added Smart Filter options:
- Has Hints: now only applies to actual TT and PS hints (i.e., ignores corner and cap components, which technically are implemented as hints).
- Has PostScript Hints: if set to Yes, lists glyphs with PS-style manual hints (stem and ghost hints).
- Has TrueType Hints: if set to Yes, lists glyphs with manual TT hints, added with the TrueType Instructor tool (I).
Has Corners: if set to Yes, lists glyphs that contain corner components.
The sidebar has a new category: Number > Small Figures. It contains figures ending in
inferior and will list other small figures with
subs suffixes. And the Number > Fraction category now actually also contains the
fraction glyph. Duh.
You can now print the glyph grid in Font view directly from Finder: Select the .glyphs file, and choose File > Print or simply press Cmd-P. The file will quickly open in Glyphs, the print job will be sent off to your most recent printer, and the file closes again. Handy if you need glyph overviews of multiple files. Thanks to Jürgen for the suggestion. And with the help of your input (special thanks to Jelle), we could improve the printing output for most printers.
In further news, we were able to improve Font view layout in certain circumstances (thanks Inka!), and thus get rid of a couple of occasional glitches.
To make the glyph names more legible, we are now using a variant of the system font with more legible shapes for characters that can easily be mistaken for others, like the uppercase I, the lowercase l and the zero. Especially in Font view, but also in the kerning panel and the grey info box in Edit view, this will help you spot typos:
You can now paste or drag image data into Edit view, and as soon as you press Cmd-S for saving, Glyphs will generate a corresponding image file in a subfolder called Images next to the .glyphs file. Glyphs is smart enough to use unique file names, so images do not get overwritten.
- The Select Glyphs window (the one you see, e.g., when you insert a glyph with Cmd-F) is resizable now.
- Global guides now also show in Brace and Bracket layers.
- Fixed: when a glyph is duplicated in Edit view, the production name is not duplicated anymore.
- Glyphs with too many nodes will trigger a warning dialog.
- Better display of invalid PostScript hints. It was sometimes hard to select way-off hints, and delete them. Not anymore.
In File > Font Info > Features, all features (provided you do not mistype the feature tag, of course) are listed with their proper full plain-English name now, as described on the Microsoft Typography page:
And again, many small things were improved under the hood. Handling of some features has been improved, including
aalt, for instance. Many language- or script-specific automatic feature code snippets have been added and improved. See above for more details.
Oh, and we managed to improve the automatic generation of the mark positioning features, and thus were able to prevent most cases of subtable overflows. If you can still trigger an overflow with one of your files, we are very interested in taking a look at the file. Bring ’em on.
Import and Export
We have completely rephrased the text of what we call the import validation dialog. Yes, the one that appears when you open a font file containing components whose alignment is not explicitly specified, most likely old .glyphs files:
We hope it is much clearer now. Thank you for everyone who gave us good feedback in the forum, especially Dave, Norbert and Toshi!
Speaking of which, import validation will now happen on all imported files, including UFO and TTF. Yeah, I know it can be a pretty pesky dialog, but it is necessary for preventing – or fixing – unwanted component shifts, and thus keeping you in control.
As you can see in the screenshot, the import validation dialog will now indicate the exact layers on which shifts will happen. And, more importantly, it will preselect component shifts that are medium (10+ units) and big (100+ units). Assuming that small shifts are errors in need of correcting, and bigger shifts are more likely to be intentional, you can now go through the dialog really quickly.
Do we have more import/export improvements? You bet. here’s a quick rundown:
- Improved copying and pasting outlines between Glyphs and Affinity Designer. If you are a convert, you can finally drop Illustrator now.
- Glyphs will now happily import many compiled fonts at once. As many as you can throw at it.
- When you import an existing compiled OpenType font, Glyphs now does a much better job reverse-engineering the feature code for contextual substitutions.
- Generally, importing OpenType feature code has been improved. Any glitches you encountered previously should now be things of the past.
- largely improved
.designspacefile import, especially the import of kerning.
- Glyphs now both reads ad writes display strings to UFO files. This enables you to keep your sample texts when you have to commit to a UFO workflow.
Scripting and Extending
After you press the Install Modules button in Glyphs > Preferences > Addons > Modules, you will now see a checkmark once installation is complete. Better than just waiting for the spinning beachball to stop spinning, eh?
Oh, if you do Python stuff and have not had a look at docu.glyphsapp.com recently, please stop by again. Why? The documentation got an update and a little reformatting, all links should work now as expected.
- We added an Update button to the
vanillawarning dialog, so you can update right away, and don’t have to go digging in the Preferences.
- You can now access
- Do you have a plug-in of yours listed in Window > Plugin Manager? You can now insert links in the description texts. HTML and Markdown are supported.
- Added Variable Font and UFO support to the Python export function:
instance.generate(Format=UFO). Have fun.
- Improved handling of callbacks in reporter plug-ins.
… and a few more improvements and bug fixes in the Python wrapper. Thanks to all script and plug-in coders who provide us with valuable feedback!
Some cool new geeky stuff can be triggered with a little Python magic:
Glyphs.defaults["TTPreviewAlsoShowOffCurveIndexes"] = True Glyphs.defaults["GSShowVersionNumberInDockIcon"] = True Glyphs.defaults["GSFontViewDarkMode"] = False
And to get rid of them again, either use the same code with
False instead of
True (and vice versa). Or use the new mekkablue script App > Set Hidden App Preferences. Or, simply delete the defaults, like this:
del Glyphs.defaults["TTPreviewAlsoShowOffCurveIndexes"] del Glyphs.defaults["GSShowVersionNumberInDockIcon"] del Glyphs.defaults["GSFontViewDarkMode"]
But what do these settings do, you ask? Fair enough, here is a quick rundown of what they do:
TTPreviewAlsoShowOffCurveIndexes(off by default): shows all TT point indexes, including off-curves. See above.
GSShowVersionNumberInDockIcon(off by default): shows the version number in the Dock icon. Useful when you find yourself switching between app versions a lot. I think it compliments
GSShowVersionNumberInTitleBar(introduced in 2.5) really well:
GSFontViewDarkMode(on by default): if set to
False, disables dark mode for the glyph grid in Font view. Useful for those among you who like Mojave Dark Mode, but want to keep all their glyphs black on white. This is what it looks like:
Small Things and Big Thanks
As always, many small details have been improved, tiny bugs squished, potential causes for rare crashes fixed. Each one of them, by itself, perhaps too small to mention in a separate paragraph, but in total making for a better experience using the software on a daily basis.
To give you just one example, we improved undoing (Cmd-Z) in many situations, e.g., after Filter > Fix Compatibility, after decomposing nested components, after changing OpenType classes and prefixes in File > Font Info > Features, and after changing zones and stems in File > Font Info > Masters.
Or here is another one I love, because it helps us spot mistakes much quicker. After entering a URL in one of the respective fields in File > Font Info > Font, Glyphs will validate the entry and display a warning:
And we cannot state this enough: As much as Glyphs is a small business that puts bread on the table for half a dozen hard-working people, it has also become a community. And yes, that means you, the Glyphs users. Without your insights, suggestions, input, feedback, bug and crash reports, Glyphs would not be what it is today. Therefore, a big thank you for all your contributions, e-mails, personal conversations, and active participations in one of the industry’s most active web forums.
So, thank you, and keep it coming, please.
Sample Font in Mojave Dark Mode screenshots: Antonia, an upcoming Typejockeys release.