<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hmm, and going down this road a little further, I suppose one
      could require that all of the relevant substitutions happen in a
      GSUB feature with with a specific tag, applied before any other,
      analogous to rvrn. That would make validation much more
      straightforward.</p>
    <p>Skef<br>
    </p>
    <div class="moz-cite-prefix">On 12/21/23 13:27, Skef Iterum wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:6c9f799a-6c45-43dd-9935-ab267a3975f3@skef.org">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <p>This is just an idea (and perhaps an ill-informed one if I'm
        not understanding the full problem correctly):<br>
      </p>
      <p>It seems to me that if these cmap proposals were to be adopted
        it would almost certainly be at the same time as the >64k GID
        extensions. The problem isn't running out of GIDs, there are
        plenty. Instead it's removing the overhead associated with those
        GIDs in various tables. <br>
      </p>
      <p>We've already discussed that there will be some way of
        determining the equivalent of the maxp GID count, going forward
        either explicit or based the length of a certain table. So
        suppose that we say that any GID higher than that (or, if that's
        too informal, GIDs higher than the value in some additional
        font-wide table field, or between the values in two such fields)
        has the following requirements:</p>
      <ul>
        <li>It can only appear in CMAP and GSUB</li>
        <li>Under any valid combination of active GSUB feature tags, the
          GID must be substituted into other GIDs less than the usual
          limit. <br>
        </li>
      </ul>
      <p>This way:</p>
      <ol>
        <li>No additional CMAP or GSUB "logic" is necessary for
          interpreting fonts</li>
        <li>The system already accommodates any relevant form of
          substitution available in GSUB, now or in the future</li>
      </ol>
      <p>The main potential drawback I can see is that validating the
        GSUB requirement could be tricky, but I'm not sure that
        iron-clad validation is necessarily a requirement. There are
        lots of ways that fonts can have bugs that one can't necessarily
        rule out in advance.</p>
      <p>Skef<br>
      </p>
      <div class="moz-cite-prefix">On 12/21/23 10:00, Peter Constable
        wrote:<br>
      </div>
      <blockquote type="cite"
cite="mid:DS7PR21MB336700A3AA89340EAD79AFD8DE95A@DS7PR21MB3367.namprd21.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:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}@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:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}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;}pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        font-size:10.0pt;
        font-family:"Courier New";}span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        mso-ligatures:none;}span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Aptos",sans-serif;
        color:windowtext;}.MsoChpDefault
        {mso-style-type:export-only;
        font-size:11.0pt;
        font-family:"Aptos",sans-serif;}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">It seems
              to me there’d at least be a compatibility boundary: newer
              fonts with 1:m cmap mappings wouldn’t produce desired
              results in older software unless the same effect were also
              implemented in GSUB lookups.<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
          <p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
          <p class="MsoNormal"><span style="font-size:11.0pt">Peter<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
          <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"
                  moz-do-not-send="true"><mpeg-otspec-bounces@lists.aau.at></a>
                <b>On Behalf Of </b>Behdad Esfahbod<br>
                <b>Sent:</b> Tuesday, December 12, 2023 8:40 PM<br>
                <b>To:</b> Ned Holbrook <a
                  class="moz-txt-link-rfc2396E"
                  href="mailto:ned@apple.com" moz-do-not-send="true"><ned@apple.com></a><br>
                <b>Cc:</b> <a
                  class="moz-txt-link-abbreviated moz-txt-link-freetext"
                  href="mailto:mpeg-otspec@lists.aau.at"
                  moz-do-not-send="true">mpeg-otspec@lists.aau.at</a><br>
                <b>Subject:</b> [EXTERNAL] Re: [MPEG-OTSPEC] Cmap format
                to map 1 char to multiple glyphs?<o:p></o:p></span></p>
          </div>
          <p class="MsoNormal"><o:p> </o:p></p>
          <div>
            <p class="MsoNormal">Fair.  I'll do some measurements and
              report back if I find something interesting.<o:p></o:p></p>
            <div>
              <p class="MsoNormal"><br clear="all">
                <o:p></o:p></p>
              <div>
                <div>
                  <p class="MsoNormal">behdad<br>
                    <a href="http://behdad.org/" target="_blank"
                      moz-do-not-send="true"
                      class="moz-txt-link-freetext">http://behdad.org/</a><o:p></o:p></p>
                </div>
              </div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
          </div>
          <p class="MsoNormal"><o:p> </o:p></p>
          <div>
            <div>
              <p class="MsoNormal">On Tue, Dec 12, 2023 at 4:01<span
                  style="font-family:"Arial",sans-serif"> </span>PM
                Ned Holbrook <<a href="mailto:ned@apple.com"
                  moz-do-not-send="true" class="moz-txt-link-freetext">ned@apple.com</a>>
                wrote:<o:p></o:p></p>
            </div>
            <blockquote
style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
              <div>
                <p class="MsoNormal">My main concern with producing
                  multiple glyphs is that it has substantial API and
                  tooling implications.<o:p></o:p></p>
                <div>
                  <p class="MsoNormal"><br>
                    <br>
                    <o:p></o:p></p>
                  <blockquote
                    style="margin-top:5.0pt;margin-bottom:5.0pt">
                    <div>
                      <p class="MsoNormal">On Dec 12, 2023, at 10:57<span
style="font-family:"Arial",sans-serif"> </span>AM, Behdad
                        Esfahbod <<a href="mailto:behdad@behdad.org"
                          target="_blank" moz-do-not-send="true"
                          class="moz-txt-link-freetext">behdad@behdad.org</a>>
                        wrote:<o:p></o:p></p>
                    </div>
                    <p class="MsoNormal"><o:p> </o:p></p>
                    <div>
                      <div>
                        <div>
                          <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif">On
                              Tue, Dec 12, 2023 at 11:51 AM John Hudson
                              <<a href="mailto:john@tiro.ca"
                                target="_blank" moz-do-not-send="true"
                                class="moz-txt-link-freetext">john@tiro.ca</a>>
                              wrote:<o:p></o:p></span></p>
                        </div>
                        <div>
                          <blockquote
style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
                            <div>
                              <p><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif">I
                                  proposed that to the OT developer list
                                  a long while ago, and recall that
                                  Kamal had a similar idea, initially in
                                  terms of handling Unicode
                                  decompositions such that fonts would
                                  not need precomposed diacritics. At
                                  the time, Microsoft thought it
                                  unlikely to get traction, as it
                                  implied significant engineering for
                                  unclear benefit, but perhaps the
                                  benefit is clearer now? As you say,
                                  being able to decompose a Unicode
                                  character to an arbitrary sequence of
                                  glyphs is very useful for Arabic, and
                                  by-passes the need to handle such
                                  decompositions in GSUB prior to other
                                  shaping. <o:p></o:p></span></p>
                              <p><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif">I
                                  suppose the question is whether there
                                  is a significant benefit to doing this
                                  outside of GSUB? — or, indeed, if
                                  there might be a reason it would be
                                  preferable in GSUB?<o:p></o:p></span></p>
                              <p><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif">The
                                  inconsistency in dot handling in
                                  different joining forms of some Arabic
                                  characters means that one doesn’t
                                  always want to up-front decompose some
                                  characters to base grapheme and
                                  combining dots, but those could be
                                  excluded from the cmap and passed to
                                  GSUB form decomposition in the joining
                                  form features. But that being the
                                  case, why not do it all in GSUB?<o:p></o:p></span></p>
                            </div>
                          </blockquote>
                          <div>
                            <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif">Thanks
                                John. The main benefit in my opinion is
                                not allocating a gid to every
                                precomposed Unicode character, most of
                                them Latin. The Arabic use-case is
                                extra.<o:p></o:p></span></p>
                          </div>
                          <div>
                            <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif"> <o:p></o:p></span></p>
                          </div>
                          <div>
                            <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif">b<o:p></o:p></span></p>
                          </div>
                          <div>
                            <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif"><o:p> </o:p></span></p>
                          </div>
                          <div>
                            <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif"><o:p> </o:p></span></p>
                          </div>
                          <blockquote
style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
                            <div>
                              <p><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif">JH<o:p></o:p></span></p>
                              <p><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif"><o:p> </o:p></span></p>
                              <div>
                                <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif">On
                                    2023-12-12 9:04 am, Behdad Esfahbod
                                    wrote:<o:p></o:p></span></p>
                              </div>
                              <blockquote
style="margin-top:5.0pt;margin-bottom:5.0pt">
                                <div>
                                  <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif">Thank
                                      you everyone for the very
                                      productive meeting.<o:p></o:p></span></p>
                                  <div>
                                    <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif"><o:p> </o:p></span></p>
                                  </div>
                                  <div>
                                    <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif">I
                                        like to also bring this issue
                                        up. If there is interest, I can
                                        work on it. I wrote in my reply
                                        to Peter earlier:<o:p></o:p></span></p>
                                  </div>
                                  <div>
                                    <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif"><o:p> </o:p></span></p>
                                  </div>
                                  <div>
                                    <div>
                                      <p class="MsoNormal"><i><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif">This
                                            reminds me of another idea
                                            we discussed in, I think,
                                            2019, from Monotype to
                                            introduce a `cmap` subtable
                                            that would map individual
                                            characters to sequences of
                                            glyphs. Then the
                                            pre-composed Unicode
                                            characters wouldn't need to
                                            have their own glyphs. Back
                                            then we dropped the idea for
                                            backwards-compat reasons.
                                            But maybe we can pick it up
                                            now?</span></i><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif"><o:p></o:p></span></p>
                                    </div>
                                    <div>
                                      <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif;color:#500050"><o:p> </o:p></span></p>
                                    </div>
                                    <div>
                                      <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif;color:#500050">This
                                          is very useful for Arabic as
                                          well...<o:p></o:p></span></p>
                                    </div>
                                    <div>
                                      <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif;color:#500050"><o:p> </o:p></span></p>
                                    </div>
                                    <div>
                                      <div>
                                        <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif">behdad<br>
                                            <a href="http://behdad.org/"
                                              target="_blank"
                                              moz-do-not-send="true"
class="moz-txt-link-freetext">http://behdad.org/</a><o:p></o:p></span></p>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                                <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif"><o:p> </o:p></span></p>
                                <pre>_______________________________________________<o:p></o:p></pre>
                                <pre>mpeg-otspec mailing list<o:p></o:p></pre>
                                <pre><a
                                href="mailto:mpeg-otspec@lists.aau.at"
                                target="_blank" moz-do-not-send="true"
                                class="moz-txt-link-freetext">mpeg-otspec@lists.aau.at</a><o:p></o:p></pre>
                                <pre><a
href="https://lists.aau.at/mailman/listinfo/mpeg-otspec" target="_blank"
                                moz-do-not-send="true"
                                class="moz-txt-link-freetext">https://lists.aau.at/mailman/listinfo/mpeg-otspec</a><o:p></o:p></pre>
                              </blockquote>
                              <pre>-- <o:p></o:p></pre>
                              <pre><o:p> </o:p></pre>
                              <pre>John Hudson<o:p></o:p></pre>
                              <pre>Tiro Typeworks Ltd    <a
                              href="http://www.tiro.com/"
                              target="_blank" moz-do-not-send="true">www.tiro.com</a><o:p></o:p></pre>
                              <pre><o:p> </o:p></pre>
                              <pre>Tiro Typeworks is physically located on islands <o:p></o:p></pre>
                              <pre>in the Salish Sea, on the traditional territory <o:p></o:p></pre>
                              <pre>of the Snuneymuxw and Penelakut First Nations.<o:p></o:p></pre>
                              <pre><o:p> </o:p></pre>
                              <pre>__________<o:p></o:p></pre>
                              <pre><o:p> </o:p></pre>
                              <pre>EMAIL HOUR<o:p></o:p></pre>
                              <pre>In the interests of productivity, I am only dealing <o:p></o:p></pre>
                              <pre>with email towards the end of the day, typically <o:p></o:p></pre>
                              <pre>between 4PM and 5PM. If you need to contact me more <o:p></o:p></pre>
                              <pre>urgently, please use other means.<o:p></o:p></pre>
                            </div>
                            <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif">_______________________________________________<br>
                                mpeg-otspec mailing list<br>
                                <a
                                  href="mailto:mpeg-otspec@lists.aau.at"
                                  target="_blank" moz-do-not-send="true"
                                  class="moz-txt-link-freetext">mpeg-otspec@lists.aau.at</a><br>
                                <a
href="https://lists.aau.at/mailman/listinfo/mpeg-otspec" target="_blank"
                                  moz-do-not-send="true"
                                  class="moz-txt-link-freetext">https://lists.aau.at/mailman/listinfo/mpeg-otspec</a><o:p></o:p></span></p>
                          </blockquote>
                        </div>
                      </div>
                      <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif">_______________________________________________<br>
                          mpeg-otspec mailing list<br>
                        </span><a href="mailto:mpeg-otspec@lists.aau.at"
                          target="_blank" moz-do-not-send="true"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif">mpeg-otspec@lists.aau.at</span></a><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif"><br>
                        </span><a
href="https://lists.aau.at/mailman/listinfo/mpeg-otspec" target="_blank"
                          moz-do-not-send="true"><span
style="font-size:10.0pt;font-family:"Helvetica",sans-serif">https://lists.aau.at/mailman/listinfo/mpeg-otspec</span></a><o:p></o:p></p>
                    </div>
                  </blockquote>
                </div>
                <p class="MsoNormal"><o:p> </o:p></p>
              </div>
            </blockquote>
          </div>
        </div>
        <br>
        <fieldset class="moz-mime-attachment-header"></fieldset>
        <pre class="moz-quote-pre" wrap="">_______________________________________________
mpeg-otspec mailing list
<a class="moz-txt-link-abbreviated moz-txt-link-freetext"
        href="mailto:mpeg-otspec@lists.aau.at" moz-do-not-send="true">mpeg-otspec@lists.aau.at</a>
<a class="moz-txt-link-freetext"
        href="https://lists.aau.at/mailman/listinfo/mpeg-otspec"
        moz-do-not-send="true">https://lists.aau.at/mailman/listinfo/mpeg-otspec</a>
</pre>
      </blockquote>
    </blockquote>
  </body>
</html>