Glyphs 2.6.1 Released

Dear friends and users of Glyphs, we have the honour to present to you: version 2.6.1 of Glyphs! This iteration has a bunch of new custom parameters, and many tiny improvements.

Latest makeOTF

Internally, Glyphs uses Adobe’s open-source makeOTF for compiling OpenType fonts. With Glyphs 2.6.1, we have updated makeOTF to its very latest version. That may seem a little risky since we have been a little lazy in the past year about updating this component. Though so far everything seems to work OK.

But please: test as thoroughly as you can, especially watch out for shifts in mark positioning, and let us know in the forum if anything unexpected comes up.

Spaces and default widths

We added some separator glyphs to the sidebar:

And the best thing about them: once you create them, they start with a pretty smart default spacing. E.g., add zerowidthnonjoiner, and you guessed it, it will be added with a width of zero, and the width of figurespace is linked to zero.tf if available.

Speaking of default widths, you can now control the width of newly created glyphs. By default, new glyphs are created with an advance width of 600 units. Only CJK glyphs were created with the UPM as default (typically 1000 units), and most recently, corner components have had their own (smaller) default width. But now, feel free to take matters in your own hands with a new custom parameter, ta-daaa:

  • Default Layer Width sets the default width, i.e., the width for glyphs when they are created. Available in File > Font Info > Font and Master. As value, you can simply supply a number for all new glyph widths, or a script:number combination for having script-specific default widths. E.g., cyrillic:400 will make all new -cy glyphs 400 units wide by default. You can have multiple concurrent entries:

Cap Sharp S

We added Germandbls (uppercase sharp S) to Languages > Latin > Western European because it is now a required glyph for German, at least the way it is written outside Switzerland and Liechtenstein.

Fun fact: Apple’s system font San Francisco has a wrong shape for the uppercase sharp S, it show a double S instead. And because of this, Apple’s system font (and hence our fallback representation in Font and Edit view) is currently not compatible with contemporary German orthography:

But do not let that deter you from filling that glyph slot. If you are unsure about the shape of this letter, watch this fun video of Bruno and me discussing the German sharp s or read the German capital Sharp S tutorial.

Mojave Dark Mode

Support for macOS Mojave’s Dark Mode has been largely improved and expanded. Dark Mode now also applies to Glyphs Project windows, the Preview area (at the bottom of Edit view) and Window > Preview Panel. And the coolest thing of all, you can now even switch Edit view to Dark Mode:

To activate Dark Mode in Edit view, paste this little code snippet in Window > Macro Panel and press the Run button:

Glyphs.defaults["GSEditViewDarkMode"] = True

You can later reset to the default by deleting the preference entry again:

del Glyphs.defaults["GSEditViewDarkMode"]

Alternatively, run the mekkablue script App > Set Hidden App Preferences and change the setting there:

The best thing about the pref: the change is effective immediately, no need for restarting the app, or closing a tab or whatever. Cool.

Variable Fonts

You do Variable Fonts? We have new custom parameters for you:

  • Variable Font Family Name overwrites the font family name of a Variable Font export. This allows (test) installing the OTVar and the static fonts at the same time. Available in Font Info > Font.
  • Decompose Components in Variable Font decomposes components during OTVar export. Circumvents a bug in Apple’s current Variable Font implementation. See the Creating a Variable Font tutorial for details. Available in Font Info > Font.
  • Feature for Feature Variations sets the Opentype feature that is used for OTVar feature variations triggered by bracket layers. Circumvents feature order limitations for cases where you need to apply a bracket layer for glyphs that are accessed through OT features, e.g. small caps. Unfortunately does not work with Adobe’s current Variable Font implementation. Takes an OT feature tag as value, available in Font Info > Font.
  • Axes now sports an additional Hide option for each axis. This way you can define an axis as hidden, i.e., not visible to the user:

In further OTVar news, we have:

  • improved multiple-axis variable font export with bracket layers,
  • removed the automatic addition of the style name to postscriptFullName and postscriptFontName at export. In font menus, the name of variable fonts should now be clean as a whistle.

Switching masters with a layer selection

This one is hard to explain, but you will understand if you have worked with multiple masters before. We changed the way layer switching works.

I suppose you know how, when you have selected a specific layer in the Layers palette, the selection will ‘stick’ when switching masters (with the button or shortcut) afterwards? This behaviour makes sense to a lot of our users because they want to compare different layers next to each other. That wouldn’t be possible if the layer selection wouldn’t ‘stick’ one way or another. But then again, when you’re done comparing, you want to switch with those handy shortcuts, Cmd-1, Cmd-2, etc. And now, all of a sudden, that layer selection stickiness is in your way.

We have come up with a good compromise, I believe: from now on, switching will override the stickiness for selected glyph(s). Cheerio!

Combining manual and automated OT feature code

You can now (officially) combine manual and automated OT feature code in File > Font Info > Features. Simply add a second feature with the same feature tag immediately before or after the automated feature:

Technically, this will create a second feature block in features.fea, so you can even use lookups inside your manual code. And makeotf internally produces a warning, but it compiles the feature code nonetheless. You can double check for yourself by running the respective generatefont.command in the Temp folder.

Hinting parameters

OK, a two of these new parameters are related to hinting. Here you go:

  • TT BlueFuzz, much like PostScript’s BlueFuzz, extends the range of zones by the given amount. So you do not need to go change all your TTFZones. Default and fallback value is one; available as Font, Master and Instance parameter.
  • Family Alignment Zones for PostScript hinting have been around for quite a while as a custom parameter in File > Font Info > Font. What is new is that you can now also insert this parameter in an instance, and thus fine-tune your settings for different subfamilies of your project.

In the TTFZones and TTFStems parameters, you can now filter glyphs for which the settings are supposed to apply. To do that, simply open your parameter, and click on the globe icon next to your a zone or stem, and apply the filter in the upcoming dialog sheet:

That means: specific stems and zones for your small caps, old-style figures, caps, … you name it. If you have been doing your own TT hinting, you know this is pretty huge. Big thanks to the continued input from all the bad-ass TT hinters out there!

More news about hinting in version 2.6.1:

  • For TTZones and TTStems, Glyphs will hide the delta and filter columns in masters that cannot have them. In other words: add your filters and deltas in the first master (or whichever master you defined as the hint source with the Get Hints From Master parameter).
  • In Edit view, Glyphs now emphasises the base edges of alignment zones. That way you can tell right away if it is a top or bottom zone:

Rare OS/2 values

In the OS/2 OpenType table, there are a few esoteric and hardly-in-use settings. Just in case, you can set them now as well with the parameters listed below. But keep in mind, these values are largely ignored by pretty much all apps out there—except Microsoft Word, we have been told.

strikeout values:

  • strikeoutPosition sets ‘the position of the top of the strikeout stroke relative to the baseline in font design units’, says the spec. Available in Font Info > Masters and Instances. (More info.)
  • strikeoutSize sets the size of the strike-out dash in units, as prescribed by the OS/2 table value of the same name. The spec says: ‘This field should normally be the thickness of the em dash for the current font, and should also match the underline thickness.’ Available in Font Info > Masters and Instances. (More info.)

subscript values:

  • subscriptXOffset sets the horizontal offset for simulated subscript typesetting, recommended to keep at zero for fonts with an italic angle of zero. Available in Font Info > Masters and Instances. (More info.)
  • subscriptYOffset sets the vertical offset for simulated subscript typesetting, typically a negative value. Available in Font Info > Masters and Instances. (More info.)
  • subscriptXSize sets the horizontal scale for simulated subscript typesetting. Available in Font Info > Masters and Instances. (More info.)
  • subscriptYSize sets the vertical scale for simulated subscript typesetting. Available in Font Info > Masters and Instances. (More info.)

superscript values:

  • superscriptXOffset sets the horizontal offset for simulated superscript typesetting, recommended to keep at zero for fonts with an italic angle of zero. Available in Font Info > Masters and Instances. (More info.)
  • superscriptYOffset sets the vertical offset for simulated superscript typesetting, typically a positive value. Available in Font Info > Masters and Instances. (More info.)
  • superscriptXSize sets the horizontal scale for simulated superscript typesetting. Available in Font Info > Masters and Instances. (More info.)
  • superscriptYSize sets the vertical scale for simulated superscript typesetting. Available in Font Info > Masters and Instances. (More info.)

The subscript and superscript size fields take the scaled UPM size as parameter value. I.e., if your UPM is 2048, and you want your sub- and superscripts to be distorted to two fifths of their original size, use (2048×2÷5≈) 819 as value.

Again, nothing bad will happen if you do not set these values. After all, most apps do ignore them, and Word defaults to standard values if these settings are not in your font.

More custom parameter magic

  • designer, designerURL, manufacturer and manufacturerURL set the same name table entries as
    the text entry fields in File > Font Info > Font. Now available in Font Info > Instances.
  • description sets OpenType name table ID 10. Now also available in Font Info > Instances.
  • We added more languages to the localized custom parameters. (Thx Chandra.)
  • Disable Masters have allowed you to ignore masters on a per-instance basis. Now, we made that parameter available in File > Font Info > Font, so you can disable a master font-wide.

More Improvements

Over a hundred small improvements and little fixes, too many to mention, but here are a few highlights:

  • Glyphs > Preferences > Sample Strings is now a resizable window.
  • The sidebar now also has a Layer Color filter.
  • In case you click twice with the Circle or Rectangle dialog, the dialog will not pop up twice anymore.
  • In File > Font Info > Instances, the Add Instance as Master option form the Plus menu in the bottom left now rounds the coordinates properly.
  • Preliminary support for Unicode Variation Sequences: add a .uvXXX suffix to the alternate glyph, with XXX ranging from 001 to 256.
  • Improved printing and fixed a few printing issues (thanks Jelle).
  • Color fonts: we improved SVG export, scaling in sbix to SVG and the sbix import. Any issues you had with sbix, well, they should all be gone, please try again.
  • In File > Font Info > Features, when you use an include directive, it will now tolerate a space between the include and the following ( in the OT feature code.
  • Glyphs now always writes all (i.e., also unused) kerning groups as classes into features.fea, so your custom feature code can use them. This is safe because makeOTF ignores unused classes when compiling the OT font.
  • Updated Korean and French app localizations (thanks Nathalie).
  • Attention scripters: We added GSEditViewController.masterIndex to Python wrapper. Switch masters with something as simple as myTab.masterIndex=0.
  • More Python wrapper news: guides now have a locked attribute, so now you can myGuide.locked=True.
  • Improved the stability and performance of smart components with a lot of axes and masters, and in conjunction with a Scale to UPM parameter.
  • Improved Lao glyph data (thanks Ben) and a number of SEA production names (thanks Norbert).
  • Improved Arabic and Farsi ligatures (thanks Khajag).
  • Improved Kannada glyph data (thanks Chandra).
  • Improved custom code in mark, abvm and blwm features (thanks Kalapi).
  • Improved writing of ccmp feature (thanks Ben).
  • Improved drawing of vertical metrics in vertical setting (thanks Kuniaki).
  • Improved preview placeholders for complex scripts.
  • Improved interpolating of alignment zones.
  • Improved quadratic-to-cubic outline conversion.

And the inevitable fixes:

  • You can now safely run Paths > Selection to Background from Font view.
  • Fixed a few UFO-related issues: import, export and round-tripping now work as expected.
  • Fixed an issue where RTL kerning would not work as expected.
  • If the vanilla installation dialog has been getting on your nerves… please update, we hope we fixed it for good now.
  • Fixed a printing issue when there was a space glyph in the string.
  • Fixed Re-interpolate Metrics in the Layers palette.
  • Fixed a problem when copying a glyph in a font with many masters and pasting it into a font with fewer masters.
  • Fixed a rare issue with anchors in nested components (thanks Jan)
  • Fixed the ‘empty kerning panel’ phenomenon.
  • Python scripting: Robofab pens should work again as expected.
  • Many small fixes and stability improvements.

Phew, that was quite a bit, wasn’t it. Now everyone please update with Glyphs > Check for Updates… and have fun with the latest, greatest and most stable Glyphs ever!