<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <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"><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"><ned@apple.com></a><br>
              <b>Cc:</b> <a class="moz-txt-link-abbreviated" href="mailto:mpeg-otspec@lists.aau.at">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" href="mailto:mpeg-otspec@lists.aau.at">mpeg-otspec@lists.aau.at</a>
<a class="moz-txt-link-freetext" href="https://lists.aau.at/mailman/listinfo/mpeg-otspec">https://lists.aau.at/mailman/listinfo/mpeg-otspec</a>
</pre>
    </blockquote>
  </body>
</html>