<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
tt
        {mso-style-priority:99;
        font-family:"Courier New";}
span.left
        {mso-style-name:left;}
span.bld
        {mso-style-name:bld;}
p.ad, li.ad, div.ad
        {mso-style-name:ad;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.ad1, li.ad1, div.ad1
        {mso-style-name:ad1;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.ad2, li.ad2, div.ad2
        {mso-style-name:ad2;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.ad3, li.ad3, div.ad3
        {mso-style-name:ad3;
        mso-margin-top-alt:auto;
        margin-right:0in;
        margin-bottom:6.0pt;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;}
p.replbq, li.replbq, div.replbq
        {mso-style-name:replbq;
        margin:2.4pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.yshortcuts
        {mso-style-name:yshortcuts;}
p.ad4, li.ad4, div.ad4
        {mso-style-name:ad4;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.ad5, li.ad5, div.ad5
        {mso-style-name:ad5;
        mso-margin-top-alt:auto;
        margin-right:0in;
        margin-bottom:6.0pt;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.ad6, li.ad6, div.ad6
        {mso-style-name:ad6;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.yshortcuts1
        {mso-style-name:yshortcuts1;
        font-family:"Verdana","sans-serif";
        font-weight:bold;}
span.yshortcuts2
        {mso-style-name:yshortcuts2;
        font-family:"Verdana","sans-serif";
        font-weight:normal;}
span.EmailStyle35
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
 /* List Definitions */
 @list l0
        {mso-list-id:326446963;
        mso-list-template-ids:368734716;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1
        {mso-list-id:778572941;
        mso-list-template-ids:1072469144;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body bgcolor=white lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Daniel,<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Thank you very much for presenting the proposal and examples.
Please see my comments inline.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>For the record (and with my AHG Chair hat on), I’d suggest
avoiding a language that may introduce a negative connotation to our
discussions. We should not be tired of any discussions where honest but conflicting
opinions are presented for the group to consider and comment – these discussions
are the only way we can resolve the differences of opinions of AHG members and reach
the consensus. (AHG Chair hat is now off.)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Regards,<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Vladimir<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
mpeg-OTspec@yahoogroups.com [mailto:mpeg-OTspec@yahoogroups.com] <b>On Behalf
Of </b>Daniel Strebe<br>
<b>Sent:</b> Tuesday, September 22, 2009 8:38 PM<br>
<b>To:</b> mpeg-OTspec@yahoogroups.com<br>
<b>Subject:</b> [mpeg-OTspec] A path through the thicket<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>  <o:p></o:p></p>

<div id=ygrp-mlmsg>

<div id=ygrp-msg>

<div id=ygrp-text>

<p style='margin-bottom:12.0pt'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'><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.</span><o:p></o:p></p>

<ol start=1 type=1>
 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
     mso-list:l1 level1 lfo1'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>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><o:p></o:p></li>
</ol>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Agree.<o:p></o:p></span></p>

<ol start=2 type=1>
 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
     mso-list:l1 level1 lfo1'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>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><o:p></o:p></li>
</ol>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Agree,
this would be an ideal solution. We might also consider introducing different conformance
points where e.g. one subset of tools (elements, attributes, etc.) can be
defined for implementations supporting simple scripts, and another, more elaborate
subsets (or full set) is defined for more sophisticated uses where support for complex
scripts is required.<o:p></o:p></span></p>

<ol start=3 type=1>
 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
     mso-list:l1 level1 lfo1'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>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><o:p></o:p></li>
</ol>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>If we
agree to introduce certain pre0defined subsets for composite fonts
functionality then partial implementations defined by those subset would still
be considered compliant implementations.<o:p></o:p></span></p>

<ol start=4 type=1>
 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
     mso-list:l1 level1 lfo1'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>The
     specification prohibits behavior that contradicts the specification. This
     ensures those who violate the specification know they are violating it. </span><o:p></o:p></li>
</ol>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Agree<o:p></o:p></span></p>

<ol start=5 type=1>
 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
     mso-list:l1 level1 lfo1'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>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.</span><o:p></o:p></li>
</ol>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Agree<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'><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.<span style='color:#1F497D'><o:p></o:p></span></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>This would be true if we do not include glyph transformation as
part of a particular conformance point. E.g., I do believe that applying
transformation matrix to glyphs is an operation that does not introduce any additional
burden for implementers since most (if not all) font engines are capable to do
this.</span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'><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.<span
style='color:#1F497D'><o:p></o:p></span></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Agree. Unlike consumers who (in theory) have to be able to interpret
and execute any and all components of a recipe, the creators do have complete
freedom to always use only the elements they choose to be part of a recipe.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'><br>
A consuming application adds 10% extra slant to italic forms. This consumer is
in violation.<span style='color:#1F497D'><o:p></o:p></span></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Agree. Any arbitrary action that is not part of original creator’s
intent should be considered a violation.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'><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.<span style='color:#1F497D'><o:p></o:p></span></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>I disagree. Voluntarily discarding all/any instructions from the
recipe should be considered a violation of the creator’s intent and,
therefore, violation of the spec. However, if we define a subset of
instructions as a valid conformance point, discarding instructions that are not
part of that predefined subset is not a violation.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'><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.<span style='color:#1F497D'><o:p></o:p></span></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Agree, this is another example of the arbitrary action by a
consumer.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'><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</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='color:white'><o:p></o:p></span></p>

</div>

</div>

</div>

</body>

</html>