On 02 Sep 2014, at 20:29, Tal Leming <
t...@typesupply.com> wrote:
>
> On Sep 2, 2014, at 2:02 PM, Adam Twardoch (List) <
list...@twardoch.com> wrote:
>
>> Dear UFO spec authors,
>>
>> In 'UFO proper', glyph and group names can be of any length and can include any Unicode characters. For example, the glyph names:
>>
>> * "A"
>> * "A.salt2"
>> * "Zhe-cy"
>> * "Ж.stylisticAlternate(2)"
>> * "Książęcych spóźnień czułość jest wspaniała"
>>
>> are all valid UFO glyph or group names.
>>
>> However, only the first two (but not the last three) are valid FEA names (glyph or class or anchor names), or valid SFNT glyph names (for use in the 'post' or 'CFF ' table).
>
> Right. This was a conscious decision and it’s not the only place where we have veered from the limitations of old specs. For me at least, this comes out of teaching type design. While I understand why there are naming limitations, try explaining to a group of design students why A should be named “A”, 1 should be named “one” and “ should be named “quotedblleft” in a way that doesn’t immediately make them pull out their phones to check in with MyFaceSpacrr.
I wholeheartedly agree. To me, the relation between UFO names and psnames is similar as between named points and point indexes, or between modern filenames and DOS 8.3 filenames.
>> If such a "psnames.plist" map was permitted by the spec, identical in structure to "contents.plist", where the key is an UFO name (glyph or group) and the value is the psname, it would simplify our lives a lot. Tool and font developers could finally freely use development glyph names which are not limited by the psname limitations, and the psname limitations would only need to apply where they really have to: FEA names (glyph, class, anchor) and SFNT glyph names.
>
> I’ve been thinking about some sort of designer name -> binary name field. I don’t think a separate file is necessary. That puts distance between the glyph and the entry. We try to avoid that when we can. The way that I have been thinking of handling it is to add a field to GLIF.
I agree. Storing it in the GLIF file makes sense -- in case of names of glyphs.
I imagine that you are not too concerned between allowing explicit mapping between the UFO group names and FEA class names? You're actually right. UFO group names are only used for kerning design, while FEA class names are used to control technical aspects of GSUB and GPOS lookups. There's no real reason why even the contents kerning groups should always translate 1:1 to FEA classes used in the "kern" feature. Historically, they did, but over time, more and more tools abstracted this relation.
Things like "you should put Cyrillic A into a separate class than Latin A or otherwise you'll get subtable overflows when compiling your 'kern' feature" are of technical nature and tools should take care of that -- but the designer should be free to put all kinds of As into one kerning group for the purpose of designing the kerning. Also, the FEA class names only exist in an intermediate format (FEA, that is), and are neither part of UFO proper nor of SFNT. Finally, with the UFO3 kerning group naming (the public.* stuff), these group names won't really translate directly into the FEA class names used for the 'kern' feature anyway, so a tool must do some processing. And since hardly anyone will edit "kern" code by hand, it doesn't really matter how exactly they are produced, as long as they conform to the FEA limits.
So actually, I agree with your suggestion to put this info into the GLIF file.
> I’m not sure if this should be an official attribute or element or if it should be in the lib. An attribute would be tricky to add as it would involve modifying parsers. Adding something to the lib would be easy but I don’t want to start dumping everything into the lib. Also, maybe it should be more than one field to support different output formats.
>
> How about for UFO <= 3 we add something like this to the GLIF lib Common Key Registry:
>
> public.outputname.<format> : string
I think one public.postname is enough. Actually, "postname" is perhaps a neat key: it alludes to the SFNT "post" table whose name comes from "PostScript", but it also suggests that it's an "after-name" or "name to be used later".
If we try to go with the <format> subkey, we'll have to deal with coming up with standardized <format> names for, well, I don't even wanna know :) CFF-flavored vs. TT-flavored something? OpenType? SFNT? Open Font Format? No no, let's keep it simple :)
Most people will be happy with just the normal UFO name and the postname field, perhaps as public.postname for the lib.
If some people need to use more names, they probably have very customized workflows and for that, they can just make up their own lib keys.
Best,
Adam
>
> Thanks,
> Tal