Composite Font Requirements (was RE: [mpeg-OTspec] AHG on Open Font Format kick off)
John Hudson
john at tiro.ca
Wed Mar 11 04:35:28 CET 2009
Responding to those of Jeff's questions on which I have some immediate
-- and hence entirely rejectable -- thoughts:
> 2. what are the defining metrics (e.g. max ascender, descender,
> leading) of the composite font and how closely do the components of a
> composite need to adhere to these metrics?
I consider avoiding restrictions of shared metrics to be one of the
primary goals of a composite font format, alongside of overcoming the
TT/OT maximum glyph ID limit. One of the problems we regularly face when
clients want us to produce individual multi-script fonts is the natural
deviation in the user of vertical space between different writing
systems. This is particularly problematic if, for backwards
compatibility, we are unable to edit the metrics of existing fonts that
will be extended to support more scripts (or even some single-script
extensions involving stacked marks such as Vietnamese).
So my inclination would be to say that the metrics of a composite font,
insofar as they affect no-clipping zones and linespacing, should be the
highest ascender value and the deepest descender value among all of the
component font metrics. Certainly this should be the case with regard to
no-clipping zones. Ideally, linespacing should be calculated
independently of no-clipping zones, although historically this has not
been the case.
In the most recent versions of the OT spec, fsSelection bit 7 is used to
signal that an app should use the OS/2 Typo metrics for linespacing
rather than the Win metrics. I'd like to suggest that in the composite
font format this should be the default behaviour, regardless of the
fsSelection bit 7 settings of the component fonts.
> 3. which component of the composite font would be responsible for
> providing the “no-glyph glyph” when a particular character is not found
> anywhere?
Presuming all the component fonts contain a .notdef glyph, I don't think
it much matters which one is displayed. Presuming the component fonts
are enumerated in some way, I'd say the first one.
> 4. what are the limitations and/or flexibility with regard to
> character encodings, for example, one component supporting Unicode CMAP
> table “3,10” and another only “3,1”?
In order to display text in the specified script or language, a
component font will need to support at least one cmap table useable by
the target OS or app. Other than that, I don't see a need for a
limitation in terms of e.g. every component supporting exactly the same
cmap formats. We already have closely related fonts with varied cmap
format support, e.g. the Cambria Math font cmap table now includes
format 14 support for variation selectors, while the Cambria Regular,
which ships as a TTC with the Math font, does not.
> 6. when the client includes OpenType Layout (advanced typographic
> extension) processing, how will the composite present related tables
> (GSUB, GPOS, GDEF, etc.) to the layout engine?
I would assume via the script and language linking that accesses the
individual component fonts in the first place. In other words, the
selection of an individual component font would already be made before
OTL is applied. At that point, the layout engine will be dealing with an
individual component font, which should be pretty much indistinguishable
from dealing with an independent, non-composite font.
Still, this question raises the interesting notion of cross-font layout,
e.g. kerning between glyphs from different composite fonts....
John Hudson
--
Tiro Typeworks www.tiro.com
Gulf Islands, BC tiro at tiro.com
The Lord entered her to become a servant.
The Word entered her to keep silence in her womb.
The thunder entered her to be quiet.
-- St Ephrem the Syrian
More information about the mpeg-otspec
mailing list