Working with UFO

Legacy Tutorial
by Rainer Erich Scheichelbauer
en zh

1 August 2022 Published on 25 November 2014

The Unified Font Object, a format for storing font data, revolutionized font production. Here is how you can integrate Glyphs into a UFO workflow and profit from features of other apps.

The Unified Font Object is an XML-based file format for storing font data. It was developed by type designers and developers Tal Leming, Just van Rossum, and Erik van Blokland. While the specs for version 3 have been released, UFO 2 is currently in most widespread use.

While you can produce a font or font family in Glyphs alone, the UFO format makes the exchange with other tools possible. UFO gives you access to a variety of other tools. This is why Glyphs supports it out of the box. But why would you want to do that in the first place? Easy: Typically, UFO tools are highly specialized apps, entirely dedicated to a specific task. That means that those tools can pick up where the in-app functionality of Glyphs leaves off. Read on for a few examples.

UFO does not store everything

One thing to keep in mind is that many Glyphs-specific settings, like enabled or disabled automatic alignment of components, or things like the bracket trick, cannot be stored in UFO files. So take extra care and double-check your files where necessary.

Very important: UFOs are single masters. Multiple Master information cannot be stored within a single UFO file. This means that if you want to interpolate, you will need to use one UFO file per master.

Preferences and file settings

If you want to be prepared for tapping into a UFO workflow, you will find two important options in Glyphs > Preferences > User Settings. What they have in common is that they are applied to all non-native files opened in Glyphs, e.g. a file with a .ufo suffix.

Firstly, enabling the option Keep glyph names from imported files will prevent Glyphs from converting the names of the glyphs to its own naming scheme. In a pure Glyphs workflow, there are certain advantages if you stick to the internal naming scheme. But when you are moving a lot between applications, you will usually want to keep the names as set in the file.

Secondly, you may want to keep the placement of components in your file. In other words, you may want to keep Glyphs from enforcing automatic alignment of composite letters. In that case, selecting the option Disable automatic alignment in imported files is a good idea.

What these two settings do, is set the two corresponding options in File > Font Info > Other Settings, namely Use custom naming (or Don’t use nice names in older versions of Glyphs) and Disable automatic alignment. There, of course, you can also set these options manually.

Of course, if you go the opposite direction, i.e., take your .glyphs file for a UFO ride, you can keep the settings at their defaults, and take full advantage of automatic alignment and nice names.

Now that we are prepared, we can get down and dirty with UFO files!

Exporting UFOs

If you want to create a UFO copy of your current font project, pick File > Export > UFO. In the upcoming dialog, you can choose if you want to convert the glyph names to production names, and in the following dialog, where you want to save the UFO files.

The option Convert Glyph Names to Production Names will convert the human-readable nice names, such as Zhe-cy, for Cyrillic uppercase Zhe, to their industry-standard counterparts, like uni0416. While these names may be hard to memorize, they are more compatible. Some tools may expect them to be in place. Our advise: Testrun your workflow with nice names, and if it does not work, you can still choose to convert the names.

UFO as saving format

If you already have a UFO file lying around, you can open it in Glyphs, and stay in UFO mode. Saving (Cmd-S) will save directly to the UFO.

You can also use File > Save As… (Cmd-Shift-S) to save a copy of your frontmost file as a UFO. In order to achieve that, you need to pick Unified Font Object as File Format in the export dialog. Glyphs will warn you if saving as UFO is not possible, e.g., when the file in question has more than one master. In that case, you would need to use File > Export (Cmd-E).

Once you have your UFO files ready, you are ready to work with a multitude of specialized applications and tools.

RoboFont

Belgian type designer Frederik Berlaen’s UFO editor RoboFont was built from the ground up for ultimate workflow flexibility. To achieve that, he made it very simple to build your own tools with the easy-to-learn programming language Python. No wonder that, for RoboFont, a wide variety of plugins and scripts are available on GitHub and other places across the web. Many extensions are listed on the RoboFont website itself. To get an idea of the power of the underlying API, take a look at Loïc Sander’s ‘An experiment in parametric type design’ video.

MetricsMachine

Tal Leming’s MetricsMachine is an app completely dedicated to kerning. With specialized tools for kerning group and kerning pair creation, stack views, automatically adapting contextual strings, a range of presets, etc., the app offers a more systematic and analytical approach to kerning than Glyphs can.

The app sports a Pair List Builder for creating all possible kerning pairs out of selected glyphs. Once you have your pairs set up, step through your kerning list with up and down arrows, adjust the kerning in steps of 10 units with left and right arrows, hold down the Shift key for steps of 5 units, the Option key for single-unit steps. Finally, the Spreadsheet function helps you get a grip on your kern table: filter and analyze to your heart’s content.

One little catch: What Glyphs calls a right group (based on the side of the glyph that is involved), MetricsMachine calls a left group (based on the side of the kern pair).

By the way, you can also incorporate MetricsMachine in a pure Glyphs workflow. All you need to do is export your UFOs, and kern them in MetricsMachine. Now, you can bring all the kerning info back into your Glyphs file by selecting all glyphs and choosing File > Import > Metrics… And in the upcoming dialog, pick whether you want to just import the kerning, or also the kerning groups.

Important: all glyphs that are supposed to be affected, need to be selected before you import. So, probably the best idea is to simply select all glyphs, and then import.

Superpolator

While you can do Multiple Masters in Glyphs alone, Erik van Blokland’s Superpolator opens up a whole new universe of inter- and extrapolation. Since the app is entirely dedicated to interpolation, you get things like immediate preview and live measuring options, any number of masters on any number of axes, individual interpolations for any number of glyphs, you name it. For a brief introduction, watch Erik’s Superpolator 3 presentation at Robothon 2012.

More UFO tools

Actually, these are just three examples for UFO-based applications. Keep your eyes open and you will find many tools, like RoboFont author Frederik Berlaen’s roundingUFO, which has proved very handy for creating ink traps. And if you want to go ahead and plunge into the Superpolator universe, Tal Leming’s Prepolator helps you prepare UFO files for interpolation.

Interestingly, also many command line tools work with UFO files. For instance, take a look at ufo2otf, which allows you to compile a ready-to-use webfonts and OTFs directly from a UFO. Speaking of OpenType, Adobe’s own Font Development Kit for OpenType can make use of UFO files. Tal Leming’s ufo2fdk can prove helpful if you make use of it.

Don’t use UFO for FontLab

If you want to move your font project between Glyphs and FontLab Studio, however, it is a bad idea to use UFO as exchange format, because too many things may get lost on the way. In this case, it is better to use the Glyphs Import and Glyphs Export macros for FontLab Studio, provided by Georg on his GitHub repository.

Newer version of FontLab, namely versions 6 and later, can open .glyphs files directly.


Update 2022-08-01: updated title, related articles, minor formatting.
Update 2022-08-03: added version note for FontLab 6+ at the end.