[mpeg-OTspec] Toward a Composite Font format specification

Ken Lunde lunde at adobe.com
Fri Aug 21 22:59:47 CEST 2009


While I cannot answer for daan, I have observed that InDesign's  
Composite Font dialog allows all three to be applied independent of  
one another. My gut feeling is that their use should be mutually  
exclusive, meaning ScaleFactor to be applied to both axes, or  
ScaleFactorX+ScaleFactorY as a pair to be set independent of one  
another. Perhaps daan can describe a usage scenario in which both  
forms of scaling are required.

I would think that any use of both forms of scaling could also be  
adequately described in terms of only ScaleFactorX+ScaleFactorY as a  


-- Ken

On 2009/08/21, at 13:53, Mikhail Leonov wrote:

> Ken and Daan,
> Do you think ScaleFactorX+ScaleFactorY pair and ScaleFactor should  
> be mutually exclusive, or are there examples where using both forms  
> of scaling in the same entry provides value to the recipe creator?
> Mikhail Leonov
> Microsoft
> -----Original Message-----
> From: mpeg-OTspec at yahoogroups.com [mailto:mpeg- 
> OTspec at yahoogroups.com] On Behalf Of Ken Lunde
> Sent: Friday, August 14, 2009 6:07 PM
> To: mpeg-OTspec at yahoogroups.com
> Subject: Re: [mpeg-OTspec] Toward a Composite Font format  
> specification
> daan,
> Thank you. This is exactly the sort of use-scenario description that  
> I was hoping to elicit with my post.
> Two additional <ComponentFont> attributes should be added:
>   ScaleFactorX
>   ScaleFactorY
> Regards...
> -- Ken
> On 2009/08/14, at 15:58, Daniel Strebe wrote:
>> Ken,
>> 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:
>>      * Adjust baseline of a component font.
>>      * Scale glyphs in a component font horizontally.
>>      * Scale glyphs in a component font vertically.
>>      * 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).
>> Regards,
>> - daan Strebe
>> Senior Computer Scientist
>> Adobe Systems Incorporated
>> On 09/08/14 14:03, "Ken Lunde" <lunde at adobe.com> wrote:
>> All,
>> 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
>> format.
>> Here we go:
>> Tag: <ComponentFont>
>> Attribute: Target (required; a unique name for the font)
>> Attribute: ScaleFactor (optional; scaling factor, expressed as a
>> percentage)
>> Attribute: BaselineShift (optional; baseline shift, expressed as a
>> percentage)
>> 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.
>> Regards...
>> -- Ken
> ------------------------------------
> Yahoo! Groups Links

More information about the mpeg-otspec mailing list