Custom Parameters

  • by Rainer Erich Scheichelbauer
  • Tutorial
  • – Modified on

Custom Parameters can do a few nifty things. You can set your Font Info more precisely, you can trigger Filters at export time, and do other cool stuff, batch processing a font at export. That way, you can work non-destructively.

Anatomy of a Custom Parameter

You add custom parameters in File > Font Info, in either of the Font, Masters, and Instances tabs. To add a parameter, click on the plus button next to the Custom Parameters section of the respective tab.

The parameter list will get an additional entry with a Property and a Value. The property is the name of the parameter, and the value is its content. If you want to know which parameters are available, click on the menu pop-up symbol next to New Value:

You can also enter the property name with the keyboard. The property will remain grey until Glyphs recognizes it as a registered parameter name.

Click or tab into the Value field to enter the content of the parameter. Depending on the kind of parameter, you either directly type it into the field, or a dialog sheet will appear:

You can drag to rearrange the parameters. Usually, the order does not matter, but it does for Filter parameters (see below).

Parameters in the Font tab of the Font Info window count for the whole font, but are overridden by parameters with the same name in the Instances tabs.

Almost all parameters in the Masters tab are number values, because they get interpolated in a Multiple Master setup. If you use parameters here, make sure they are compatible between the masters. Otherwise, Glyphs will not be able to interpolate. Many vertical metric values can be controlled here. Like font parameters, a master parameter will be overridden by an instance parameter with the same name.

Parameters in the Instances tab directly apply only to the respective font that is being exported. Instance parameters override master and font parameters.

Custom parameters serve various purposes. Most of them give you the option to set (or help calculate) a value in the final OpenType font, and are applied at export. E.g., glyphOrder influences the ordering of glyphs in the exported font file.

Some parameters only influence the appearance of the font in an Edit tab. For instance, EditView Line Height gives you the option to set the line distance for multiline editing in an Edit tab.

For a complete list of parameters with descriptions, take a look at the appendix of the handbook, or click on the help button next to the parameter list.

UFO3 Properties

All properties defined in the UFO3 font info specification are available as custom parameters in Glyphs. You can conveniently leave out the table prefix when you enter them, e.g. instead of postscriptUnderlineThickness, you can simply write underlineThickness.

One of my personal favorites is sampleText (or openTypeNameSampleText as in the UFO specs). Say, I want to put such a sample text into my font. All I have to do is go into File > Font Info > Font (Cmd-I) and add a Custom Parameter by clicking on the plus button. As property, I pick sampleText. I can either type it, or, better yet, choose it from the pop-up menu. As value, I pick some funny sentence. Then, I export the font, and I open it in Font Book. I’m presented with the familiar installation dialog, showing the sample text I just entered:

Another example. If you regularly push out fonts, or sell them on a platform like MyFonts, you may want to consider registering a Font Vendor ID at Microsoft. What you get in return is a four-letter word that you can use as Vendor ID and put inside your font. Take vendorID (or its full UFO3 name, openTypeOS2VendorID) as property, and your Vendor ID as value.

Filters

You know how to use the filters from the Filters menu. Sometimes, it is a better idea to not apply them at once, but to put them into a Custom Parameter and have them executed automatically when the font is exported. All you need to do, is go into File > Font Info > Instances (Cmd-I), and add a custom parameter.

As Property, you pick Filter. The Value has this general structure: name; value1; value2, i.e., the name of the filter, followed by its values, separated by semicolons. Most filters are supported as custom parameters, even most third-party filters available. This the list of possible values for the built-in filters:

AddExtremes;
OffsetCurve; <x>; <y>; <make stroke>; <position>
RemoveOverlap;
Roughenizer; <segment length>; <x offset>; <y offset>
RoundCorner; <radius>; <visual correction>
RoundedFont; <stem>
Transformations; LSB:<units>; RSB:<units>; ScaleX:<percentage>; ScaleY:<percentage>; Slant:<degrees>; SlantCorrection:<bool>; OffsetX:<units>; OffsetY:<units>; Origin:<value>; 
  • All words between < and > are number values.
  • The boolean values for <make stroke>, <visual correction> and <bool> are 1 for yes and 0 for no.
  • The OffsetCurve value <position> takes a small decimal number, where 0.0 is equivalent to 0%, and 1.0 to 100%.
  • But the <percentage> values do take numbers between 0 and 100.
  • In Transformations, you do not need to set all values, but only the ones you need.

All built-in (and most third-party) filters accept an additional include: or exclude: parameter at the end of the line, followed by a comma-separated list of glyph names, e.g.:

Transformations; LSB:-20; RSB:+20; include:A,B,C

This example will decrease the left sidebearing by 20, and increase the right sidebearing by the same amount, effectively shifting the glyph to the left. But it will do so only for A, B and C.

Copying and Pasting Parameters

You can copy and paste parameters between masters, instances, or fonts simply with Cmd-C and Cmd-V. Make sure you select them before you copy. And click into the Custom Parameters field before you paste, so Glyphs knows you want to paste parameter data.

If you do try to paste in the Masters tab without setting the focus on the Custom Parameters field, Glyphs will rightfully complain:

You can paste in multiple masters or multiple instances at once. Shift- or Cmd-click on the masters or instances listed in the sidebar on the left, then click into the empty Custom Parameters field to move the focus on it, and paste.

Unfortunately, as long as multiple masters or instances are selected, Glyphs cannot display the content of the field. So, to check if the pasting was successful, you can quickly arrow through the masters or instances, and have an eye on the individual Custom Parameters.

You can even paste a parameter into a text editor. You’ll get something like this:

(
    {
        Filter = "GlyphsFilterOffsetCurve; 40; 40; 1; 0.8;";
    },
    {
        InterpolationWeightY = 80;
    },
    {
        "Scale to UPM" = 800;
    }
)

You can see where this is going. If you’re handy with your editor and find it tedious to tab through all the parameters in the window, you can quickly batch edit your Custom Parameters in your editor, or have them calculated by a script etc. In the end, you just copy and paste them back.