<!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>