<HTML>
<HEAD>
<TITLE>A path through the thicket</TITLE>
</HEAD>
<BODY>
<FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
Colleagues,<BR>
<BR>
I’m sure you’re all aware of, and tired of, the long debate between Vladimir and me over what ought/ought not be part of the specification. Pondering Leonardo’s posting today, I began to think perhaps, when we examine details, our positions might not be so far apart. This is a proposal that I think agrees with the sensibilities of those who have posted on the topic.<BR>
<BR>
</SPAN></FONT><OL><LI><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>Deviations from the specification when constructing or parsing a composite font recipe are prohibited, both with regard to syntax and semantics. This ensures precise communication of intent.
</SPAN></FONT><LI><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>A “compliant” consumer enables the full functionality representable by a composite font recipe when rendering. This helps those who want typographic fidelity to get it.
</SPAN></FONT><LI><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>The specification acknowledges and condones partial implementations of composite font functionality. This ensures that the needs of consumers not concerned with typographic fidelity are met. Such consumers must not claim “compliance”.
</SPAN></FONT><LI><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>The specification prohibits behavior that contradicts the specification. This ensures those who violate the specification know they are violating it.
</SPAN></FONT><LI><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>The specification recommends courses of action when a recipe’s intent cannot be fulfilled due to circumstances outside the control of the consumer. Implementations may deviate from these recommendations without compromising compliance, since the behavior concerns exceptional circumstances.<BR>
</SPAN></FONT></OL><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
Some examples:<BR>
<BR>
A consuming renderer does not apply the component font’s transformation matrix to glyphs. This consumer cannot claim compliance, but is not in violation.<BR>
<BR>
A user interface for constructing composite fonts does not include controls for specifying a transformation matrix. This user interface is compliant, since it is not a consumer and since it creates compliant recipes.<BR>
<BR>
A consuming application adds 10% extra slant to italic forms. This consumer is in violation.<BR>
<BR>
A consuming application discards all instructions from the recipe other than font selection and glyph selection from those fonts. This applications cannot claim compliance, but is not in violation.<BR>
<BR>
A consuming application follows all instructions of the composite font recipe except the per-language glyph selection instructions. Instead it uses its own tables. This consumer is in violation.<BR>
<BR>
With regard to this final example, the distinction between “partial implementation” and “violating implementation” might seem obscure. After all, one might argue the consumer simply did not implement that part of the specification. The difference is that a partial implementation effectively removes instructions from a recipe whereas a violating implementation effectively changes instructions. In the end the distinction is not so important except in the sense of guiding implementers to adhere to a recipe’s instructions as closely as they can while fulfilling their implementation’s peculiar needs.<BR>
<BR>
Regards,<BR>
<BR>
— daan Strebe<BR>
Senior Computer Scientist<BR>
Adobe Systems Incorporated<BR>
</SPAN></FONT>
</BODY>
</HTML>