[mpeg-OTspec] MS Proposal for a new Name Table ID

Adam Twardoch (List) list.adam at twardoch.com
Thu Jun 20 07:25:15 CEST 2013


Dear mpeg-OTspec & opentype list members,

I'm not sure how the discussion on this topic concluded, but I'd like to 
revisit it, making an alternative proposal.

I personally think that there is great value to the OT script, language 
and feature tag system, one that could be leveraged.

Currently, the GSUB and GPOS tables describe how a certain glyph or a 
series of glyphs should be transformed under a certain context, the 
context being the script, language and feature.

As it has been noted in this discussion, what's missing is the 
information which default glyphs within the font are "good" for a 
certain script and language, i.e. which are "worthy" of exploring at 
all. But in my view, what's also missing is an indicator as to which 
forms certain glyphs have by default, *before* any GSUB or GPOS features 
were applied.

I think a table could be devised that would make use of the current 
script, language and feature system, but instead of using any lookups, 
that table would only include the glyph coverage info, which is already 
defined the OTL structure.

We could define a "GINF" (Glyph Info) table which uses the OT script and 
language structure to provide mappings to ENCODED (or -- alternatively 
-- ALL, not sure myself) glyphs within a font file which are used for a 
certain OT script, or a certain languagesystem -- but they should only 
be included if their usage is MEANINGFUL, i.e. if the glyphs are "well 
designed" for the purpose.

Such structure could be used by a font engine to quickly identify a 
subset of glyphs which are relevant for a particular script and 
languagesystem. Inside this structure, there would be no real "action" 
associated with a lookup. So probably a special lookup type would need 
to be defined which has a coverage table but nothing else.

The GINF would be especially useful to tell applications which script or 
language is well supported by the default, i.e. encoded glyph forms. And 
the GINF table could also include feature tags which would be used if a 
font already has a default glyph form which would normally be yielded 
through the application of a feature.

So for example, if a font includes oldstyle numerals in the default 
glyphs for the digit Unicodes, the GINF table could provide the info:
   Script: DFLT, LangSys: dflt, Feature: onum, Coverage: [zero one two 
... eight nine]
Conversely, the GSUB table would then include:
   Script: DFLT, LangSys: dflt, Feature: lnum -- and the appropriate 
substitution to lining numerals
An application would "know" that for such a font, to get oldstyle 
numerals, it would need to do "nothing", i.e. not apply any GSUB feature 
at all.

Similarly, if a font includes small caps glyphs mapped directly in the 
"cmap" to lowercase Unicode codepoint (because it does not have "real" 
lowercase letterforms at all), the GINF table could provide the info:
   Script: latn, LangSys: dflt, Feature: smcp, Coverage: [a b c ...]

The same kind of information could be used to have information about CJK 
glyphs. If the font is designed for Simplified Chinese, it would simply 
have something like:
   Script: hani, LangSys: ZHS, Feature: <empty>, Coverage: [all CJK 
glyphs which are mapped to Unicodes]

So for the structure, I *guess* there would be a need to have a way to 
express an empty feature tag, but perhaps not.

As for GINF lookup types, we could even think of having several "levels" 
of information, which could be expressed by different kinds of lookups. 
I can think of two right away:

GINFLookupType1: Basic Glyph Information
Just coverage table -- the glyph information consists simply of the 
presence of a GID in the coverage table

GINFLookupType2: Glyph Information with Simple Names
Coverage table plus some kind of references to a name table ID (using a 
similar format as GSUBLookupType1, but name table IDs would be used 
instead of the substituted GIDs) -- per GID or class, there could be a 
reference to a name ID string. This way, symbol fonts or fonts with 
unusual glyphs could store human-readable descriptions of the glyph's 
contents in the "name" table, and provide a mapping here.

GINFLookupType3: Glyph Information with Extended Names
coverage table, plus a set of entries which point to name table IDs for:
* human-readable glyph description
* designer's name
* license text
* ...

(We could agree on a few useful ones.)

Additional GINFLookupTypes could be added in future.

The above is not a fully-formed proposal (and probably the proposed 
structure is a bit "naiive"), but could prove useful for both the 
purposes that Microsoft has aimed at in the original proposal, and 
beyond. In essence, my idea is to re-use the OTL table structure for 
this kind of information. Of course the GINFLookupTypes 2 and 3 are just 
an attempt to add value for other purposes, especially to give 
developers a chance to sensibly include human-readable information on a 
per-glyph basis, which I think is something many people would welcome.

Best,
Adam

-- 

May success attend your efforts,
-- Adam Twardoch
(Remove "list." from e-mail address to contact me directly.)




More information about the mpeg-otspec mailing list