[mpeg-OTspec] Toward a Composite Font format specification

Daniel Strebe dstrebe at adobe.com
Sat Aug 15 00:58:24 CEST 2009


Thanks for wading into this.

I think we should look at Adobe InDesign's scaling in more detail. What InDesign provides relevant to this discussion is:

 1.  Adjust baseline of a component font.
 2.  Scale glyphs in a component font horizontally.
 3.  Scale glyphs in a component font vertically.
 4.  Scale glyphs in a component font uniformly with respect to the glyph's center while preserving its width.

You cannot fully replicate both semantics by dropping any of the three provisions. The purpose of (2) and (3) is to adjust a component font whose glyphs normally run along some baseline, such as Latin-script or Indic-script fonts. The adjustment applies to the glyph outline as well as its horizontal and vertical advance. The purpose of (4) is to adjust a component font whose glyphs run along a center line, such as Chinese ideographs. The adjustment applies to the glyph outline but not its horizontal or vertical advance.

To elaborate, in Latin-script composite fonts, it is common to scale glyphs of a component font horizontally, and this scaling typically applies to all behavior of the font: the amount of horizontal space the glyph takes up, kerning amounts, escapements. In ideographic fonts, normally ideographs are considered fixed-width for typographic purposes, and you do not want mixed widths regardless of which component fonts the glyphs came from. Yet meanwhile you must balance the space of the ideographs for two or more different source fonts, each of which has a different idea of "color" for the font. (Color, meaning, the amount of whitespace consumed by the "average" glyph in the ideographic repertoire.) Therefore you scale from the center of the ideographic box but leave the metrics alone.

The reason InDesign allows both forms of scaling is because (4) may be required to balance the color, while (2) and/or (3) may be required to adjust for a non-square construction of the fixed-width ideographic glyphs. While square in most fonts, especially in the past, some are not, and this practice is increasing. Hence, it is not so exotic for a well-constructed composite font to require all of (1), (2), (3), and (4).


- daan Strebe
Senior Computer Scientist
Adobe Systems Incorporated

On 09/08/14 14:03, "Ken Lunde" <lunde at adobe.com> wrote:


In an effort to move the discussions forward, I would like to
enumerate the primary functional tags, along with my initial ideas
about what properties or attributes can be specified for each. I have
already floated these ideas, but now that we're in basic agreement
about some principles, I am able to condense this into a more readable

Here we go:

Tag: <ComponentFont>
 Attribute: Target (required; a unique name for the font)
 Attribute: ScaleFactor (optional; scaling factor, expressed as a
 Attribute: BaselineShift (optional; baseline shift, expressed as a

Tag: <Language> (optional)
 Attribute: Target (required; an IETF language tag, as specified by
RFC 4646)

Tag: <Encoding> (optional)
 Attribute: Target (required; the Unicode ranges to be used in the
Composite Font)
 Attribute: Original (optional; the encoding ranges in the Component
Font, if different than the "Target" attribute)

Of course, an appropriate XML namespace will need to be specified.

In looking at the Composite Font feature of Adobe InDesign, there are
two types of scaling factors, both of which are independent from one
another, meaning that both can be specified. One is a uniform scaling,
applying to both the X- and Y-axis. The other is axis-independent
scaling. While I am all for giving people enough rope to hang
themselves, I consider this to be comparable to supplying the
developer with razor-impregnated rope, and strongly suggest that the
specification allows for only uniform scaling for the "ScaleFactor"
attribute for the <ComponentFont> tag.

To everyone in this discussions, please think about additional
attributes for these three functional tags.


-- Ken

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.aau.at/pipermail/mpeg-otspec/attachments/20090814/e550b608/attachment.html>

More information about the mpeg-otspec mailing list