<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Alright, it's sounding like the idea may be "the instruction set
      itself has enough <br>
      functionality to handle the cases, so we can let glyf VARC hinting
      practices <br>
      evolve on that basis." I'd be worried that people who seem to be
      towards the upper<br>
      levels of typical expertise with TT instructions are fuzzy on the
      relevant functionality,<br>
      but that isn't my battle.</p>
    <p>That would still leave 6 from my earlier list:</p>
    <p> </p>
    <blockquote>Should there be a VARC-component flag indicating that
      what is being loaded is not an individual component but the
      (limited) composite-level TT instructions for this glyph? (The
      natural home for those instructions being in the glyph with the
      same GID, as same-GID-loading is already supported by the spec?)<br>
    </blockquote>
    <p>I suppose one could also just add a record type that inlines the
      composite-level<br>
      instructions directly.<br>
    </p>
    <p>This has to do with this line from the glyf composite spec (
<a class="moz-txt-link-freetext" href="https://learn.microsoft.com/en-us/typography/opentype/spec/glyf#composite-glyph-description">https://learn.microsoft.com/en-us/typography/opentype/spec/glyf#composite-glyph-description</a>
      ):</p>
    <blockquote>
      <p>A parent composite glyph description can include instructions
        that apply to the composite as a whole, after instructions for
        each child have been performed.<br>
      </p>
    </blockquote>
    <p>This possibility appears to be missing from VARC as specified. (I
      believe it was also<br>
      missing from the earlier drafts but maybe there was a different
      way of tucking<br>
      those instructions into the composite record.)<br>
    </p>
    <p>Skef<br>
    </p>
    <div class="moz-cite-prefix">On 1/26/24 13:04, Greg Hitchcock wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:SJ0PR00MB103926806416F78F8915D807BE792@SJ0PR00MB1039.namprd00.prod.outlook.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator"
        content="Microsoft Word 15 (filtered medium)">
      <style>@font-face
        {font-family:Mangal;
        panose-1:0 0 4 0 0 0 0 0 0 0;}@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
        {font-family:"Yu Gothic";
        panose-1:2 11 4 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:Aptos;}@font-face
        {font-family:"Sitka Text";
        panose-1:0 0 0 0 0 0 0 0 0 0;}@font-face
        {font-family:"\@Yu Gothic";
        panose-1:2 11 4 0 0 0 0 0 0 0;}@font-face
        {font-family:"Segoe UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:12.0pt;
        font-family:"Aptos",sans-serif;}a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Sitka Text";
        color:windowtext;
        font-weight:normal;
        font-style:normal;}.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}div.WordSection1
        {page:WordSection1;}</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]-->
      <div class="WordSection1">
        <p class="MsoNormal"><span
            style="font-size:11.0pt;font-family:"Sitka Text"">Through
            a combination of the GETINFO instruction and the INSTCTRL
            instruction, glyphs or fonts can make educated decisions
            about whether to apply instructions under different
            circumstances such as rotations, stretching, &c.
            Typically we recommend in the pre-program to disable hints
            under rotation, but if someone comes up with a clever
            algorithm for handling this, that is an option.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:11.0pt;font-family:"Sitka Text""><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:11.0pt;font-family:"Sitka Text"">GregH<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:11.0pt;font-family:"Sitka Text""><o:p> </o:p></span></p>
        <div>
          <div
style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
            <p class="MsoNormal"><b><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif">
                mpeg-otspec <a class="moz-txt-link-rfc2396E" href="mailto:mpeg-otspec-bounces@lists.aau.at"><mpeg-otspec-bounces@lists.aau.at></a>
                <b>On Behalf Of </b>Skef Iterum via mpeg-otspec<br>
                <b>Sent:</b> Friday, January 26, 2024 11:33 AM<br>
                <b>To:</b> Laurence Penney <a class="moz-txt-link-rfc2396E" href="mailto:lorp@lorp.org"><lorp@lorp.org></a><br>
                <b>Cc:</b> mpeg-otspec <a class="moz-txt-link-rfc2396E" href="mailto:mpeg-otspec@lists.aau.at"><mpeg-otspec@lists.aau.at></a><br>
                <b>Subject:</b> Re: [MPEG-OTSPEC] VARC, glyf, and
                TT-instructions<o:p></o:p></span></p>
          </div>
        </div>
        <p class="MsoNormal"><o:p> </o:p></p>
        <table class="MsoNormalTable" style="width:100.0%" width="100%"
          cellspacing="0" cellpadding="0" border="0" align="left">
          <tbody>
            <tr>
              <td
style="background:#A6A6A6;padding:5.25pt 1.5pt 5.25pt 1.5pt"><br>
              </td>
              <td
style="width:100.0%;background:#EAEAEA;padding:5.25pt 3.75pt 5.25pt 11.25pt"
                width="100%">
                <div>
                  <p class="MsoNormal"
style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">
                    <span
style="font-size:9.0pt;font-family:"Segoe UI",sans-serif;color:#212121">You
                      don't often get email from
                      <a href="mailto:mpeg-otspec@lists.aau.at"
                        moz-do-not-send="true"
                        class="moz-txt-link-freetext">mpeg-otspec@lists.aau.at</a>.
                      <a
href="https://aka.ms/LearnAboutSenderIdentification"
                        moz-do-not-send="true">
                        Learn why this is important</a><o:p></o:p></span></p>
                </div>
              </td>
              <td
style="width:56.25pt;background:#EAEAEA;padding:5.25pt 3.75pt 5.25pt 3.75pt;align:left"
                width="75">
                <br>
              </td>
            </tr>
          </tbody>
        </table>
        <div>
          <p><o:p> </o:p></p>
          <div>
            <p class="MsoNormal">On 1/24/24 23:47, Laurence Penney
              wrote:<o:p></o:p></p>
          </div>
          <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
            <div>
              <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
                <p class="MsoNormal">On 25 Jan 2024, at 01:25, Skef
                  Iterum via mpeg-otspec <a
                    href="mailto:mpeg-otspec@lists.aau.at"
                    moz-do-not-send="true">
                    <mpeg-otspec@lists.aau.at></a> wrote:<o:p></o:p></p>
              </blockquote>
              <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
                <p class="MsoNormal">There is a distinction between
                  whether the text path itself is skewed or<br>
                  rotated and whether a component in a composite is
                  skewed or rotated.<br>
                  Asking around it seems as though with the existing
                  glyf components<br>
                  instructions are <i>not</i> automatically turned off
                  when "compositing", but<br>
                  perhaps that info is wrong. <o:p></o:p></p>
                <p>Either way, though, that seems like something the
                  specification should<br>
                  clarify.<o:p></o:p></p>
              </blockquote>
            </div>
            <div>
              <p class="MsoNormal">I asked similar questions when I was
                getting my head around TT hinting, and recall being told
                that skewed or rotated components were not hinted. The
                person I asked would most likely have been Greg
                Hitchcock.<o:p></o:p></p>
            </div>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
          </blockquote>
          <p class="MsoNormal">Josh Hadley on our team got curious about
            this and did an experiment or two<br>
            in VTT. As far as we can tell there is no automatic
            disabling of hints when using<br>
            "not nice" transformations, at least in that tool. We can
            provide a specific<br>
            example or two if anyone needs them.<br>
            <br>
            It's possible that the "client side" implementations work
            differently than the <br>
            development tools but designers are likely to take the
            guidance of those tools<br>
            unless there is very strong conventional wisdom pointing in
            a different<br>
            direction.<o:p></o:p></p>
          <p>Skef<o:p></o:p></p>
        </div>
      </div>
    </blockquote>
  </body>
</html>