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