I’m modifying an existing font (not my files), and one of the weights exports with a different naming scheme than the rest. The others export with names like The-Font-Family-[Weight], while this rogue weight exports as TheFontFamily-[Weight] (i.e., no hyphens in the multi-word family name).
When I open the ‘Font Info’ panel, I can see that the Family Name and Font Name fields in the Font tab are filled in the exact same way in all the weights, as The Font Family with spaces; similarly under the Exports tab, the ‘Font Name’ fields are filled in identically as The-Font-Family-[Weight] with hyphens. The only difference I can see is that all the working weights have a field named ‘Full Name’ under both Font and General, while the rogue weight has no such field.
Page 103 in the handbook says this (my emphasis):
Glyphs uses the family name to derive the file name and the entries for the Name IDs 1, 3, 4, and 6. In PostScript/CFF-based OpenType fonts, the family name is also used for the FontName and FullName in the CFF table. Add the ‘Font Name’ and ‘Full Name’ fields in File → Font Info… → Font → General to control those values independently of the family name.
– which looks relevant. But how exactly do I add the ‘Full Name’ field?
When I open File → Font Info… → Font → General and click on the ‘+’ button to add a new field, there is no ‘Full Name’ field available; there’s ‘Full Names’, but that’s a different, localised, field (postscriptFullNames). These are the fields available to add in the General tab (the list in Exports is longer, but also contains no ‘Full Name’):
(The screenshot is from the Font tab, but results are the same in the Exports tab, just in a different order.)
Adding the ‘Full Names’ field gives me a field called ‘Full Names’ (plural) with a language dropdown, whereas the field in the other weights is called ‘Full Name’ (singular) and has no language dropdown.
Is the non-localised ‘Full Name’ field perhaps an older field that’s been superseded by a localised version? The font I’m modifying was originally made almost 20 years ago, so it’s probably out of date in many ways.
It’s the same thing. At one point we changed it to plural because technically you can add more than one language. Simply add Full Names and set default as language.
That makes sense, but shouldn’t that affect the Font Info panels in all fonts equally, then? Or can you in theory both add the field with no language at all (in which case it appears as ‘Full Name’) and with a default or other language (in which case it appears as ‘Full Names’)?
Technically, localizable entries cannot be added without language. I agree the plurals of display names can be confusing, that’s why we are removing them again in a future version.
Meaning what exactly? That it’s not valid OpenType-wise, or that Glyphs won’t let you? The fonts I’m modifying do appear (at least in the UI) not to have a language for the ‘Full Name’ property, so they do appear to have been added without language when they were originally added.
The spec requires a language definition, which can technically also be “Default”. This could be interpreted as “no language”, but is in fact, technically speaking, an entry for the language.
In fact it is English. But it has come to mean “default”. Just like “Windows” now means “default”. It’s a historically grown spec we need to deal with.
So what, then, is the actual difference between these two:
The UI consistently shows them differently, so there must be something in the underlying representation that differs between them, but if you say it’s the same field and the language part has always been there… how are they represented differently?
What I was really thinking of was how the different values were stored. Being completely new to scripting in Glyphs, I couldn’t figure out where to locate these values, but I finally figured out that the exports in the File Info panel are stored in Font.instances. Printing the properties of the two different fonts’ exports shows that they are indeed stored differently:
localised: GSFontInfoValueLocalized value stored in postscriptFullNames
non-localised: GSFontInfoValueSingle stored in postscriptFullName
(It would probably be a good idea to update the scripting API to say that these correspond to the ‘Exports’ pane in Font Info, rather than the ‘Instances’ pane – I was searching the API for ‘Exports’ and couldn’t find anything.)