<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div dir="ltr"></div><div dir="ltr"><div dir="ltr">Hi Peter,</div><div dir="ltr"><br></div><div dir="ltr"><blockquote type="cite"><div dir="ltr"><div class="WordSection1"><div id="mail-editor-reference-message-container"><p class="MsoNormal"><span style="font-size: 11pt;">So, with those things in mind, the guidance for ‘kern’ could say that it should be applied by default _<i>except</i>_ for runs of text for which the following are both true:<o:p></o:p></span></p><ul type="disc" style="margin-top: 0in;"><li class="MsoListParagraph" style="margin-left: 0in;"><span style="font-size: 11pt;">characters have East_Asian_Width property values Fullwidth or Wide (or, perhaps, Ambiguous); and<o:p></o:p></span></li><li class="MsoListParagraph" style="margin-left: 0in;"><span style="font-size: 11pt;">the text is formatted with a font that implements both ‘palt’ and ‘kern’.</span></li></ul></div></div></div></blockquote></div><div dir="ltr"><br></div><div dir="ltr">+1. Given that ‘palt’ converts a fullwidth glyph to a proportional one, it seems logical to use EAW. I also think that Ambiguous characters should be included because fonts with ‘palt’ are inherently fullwidth. By restricting this to fonts with a ‘palt’ table, we ensure that kerning is automatically applied to Ambiguous code points in natively proportional fonts.</div><div dir="ltr"><br></div><div dir="ltr">Currently, the specification itself is more inconsistent than ambiguous, which could lead to confusion across different font implementations. This inconsistency suggests that the new, more streamlined specification might not align perfectly with some existing fonts. However, there’s a positive aspect: CFF-based Japanese fonts tend to be quite uniform, largely because vendors have been aligning with Adobe’s guidelines. Moreover, as most major vendors are members of CITPC, if deemed necessary this organization could play a crucial role in identifying significant conflicts.</div><div dir="ltr"><blockquote type="cite"><div dir="ltr"><div class="WordSection1"><div id="mail-editor-reference-message-container"><p></p></div></div></div></blockquote></div></div><div dir="ltr"><blockquote type="cite"><div dir="ltr"><div class="WordSection1"><div id="mail-editor-reference-message-container"><p class="MsoNormal"><span style="font-size: 11pt;">But if there’s concensus that a new feature should be defined, then a recommendation for new font implementations (and perhaps also updates to existing fonts) to use the new feature in conjuction with ‘palt’ could be added as well.<o:p></o:p></span></p></div></div></div></blockquote><div dir="ltr"><br></div><div dir="ltr">Although I usually lean towards cleaner solutions, whether we go ahead with them really hinges on font developers' willingness to adopt. For many font vendors, changing their implementation could mean incurring significant costs. And if there's no guarantee that the updated implementation will deliver identical results, they might also have to update the font names, adding another layer of complexity for customers. It would definitely be smoother to adopt new designs for newly created fonts as you mentioned. Plus, it should be easier for platform vendors to make these adjustments.</div><div dir="ltr"><div dir="ltr"><br></div><div dir="ltr">Fuji-san, do you have comments?</div><div dir="ltr"><br></div><div dir="ltr">- kida</div><div dir="ltr"><br></div></div></div><div dir="ltr"><blockquote type="cite">2024/02/29 10:51、Peter Constable <pconstable@microsoft.com>のメール:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style>@font-face { font-family: "MS Gothic"; }
@font-face { font-family: "Cambria Math"; }
@font-face { font-family: "Yu Gothic"; }
@font-face { font-family: DengXian; }
@font-face { font-family: Calibri; }
@font-face { font-family: Aptos; }
@font-face { font-family: "Segoe UI"; }
@font-face { font-family: "@DengXian"; }
@font-face { font-family: "PingFang SC"; }
@font-face { font-family: wf_segoe-ui_normal; }
@font-face { font-family: "@MS Gothic"; }
@font-face { font-family: "@Yu Gothic"; }
@font-face { font-family: "@PingFang SC"; }
p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0in; font-size: 10pt; font-family: Calibri, sans-serif; }
a:link, span.MsoHyperlink { color: rgb(5, 99, 193); text-decoration: underline; }
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph { margin: 0in 0in 0in 0.5in; font-size: 10pt; font-family: Calibri, sans-serif; }
p.xmsonormal, li.xmsonormal, div.xmsonormal { margin: 0in; font-size: 12pt; font-family: Aptos, sans-serif; }
p.xxmsonormal, li.xxmsonormal, div.xxmsonormal { margin: 0in; font-size: 10pt; font-family: Calibri, sans-serif; }
span.EmailStyle250 { font-family: Calibri, sans-serif; color: windowtext; }
.MsoChpDefault { font-size: 10pt; }
@page WordSection1 { size: 8.5in 11in; margin: 1in; }
div.WordSection1 { page: WordSection1; }
ol { margin-bottom: 0in; }
ul { margin-bottom: 0in; }</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">Typo corrected inline below.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<div id="mail-editor-reference-message-container">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;font-family:"Aptos",sans-serif;color:black">From:
</span></b><span style="font-size:12.0pt;font-family:"Aptos",sans-serif;color:black">mpeg-otspec <mpeg-otspec-bounces@lists.aau.at> on behalf of Peter Constable via mpeg-otspec <mpeg-otspec@lists.aau.at><br>
<b>Date: </b>Wednesday, February 28, 2024 at 6:46</span><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black"> </span><span style="font-size:12.0pt;font-family:"Aptos",sans-serif;color:black">PM<br>
<b>To: </b></span><span lang="ZH-CN" style="font-size:12.0pt;font-family:"PingFang SC",sans-serif;color:black">木田泰夫</span><span style="font-size:12.0pt;font-family:"Aptos",sans-serif;color:black"> <kida@mac.com>, Nat McCully <nmccully@adobe.com><br>
<b>Cc: </b>Josh Hadley <johadley@adobe.com>, mpeg-otspec@lists.aau.at <mpeg-otspec@lists.aau.at><br>
<b>Subject: </b>Re: [MPEG-OTSPEC] [EXTERNAL] Re: OpenType 'palt' and 'kern' Documentation Revision Proposal<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt">Hi, Kida-san<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">The problem I see with the current design involving interaction between ‘kern’ and ‘palt’ is a very ambiguous characterization of when ‘kern’ should not be activated by default. I think a different feature
 such as I suggested might be the cleanest solution. But a possible <span style="background:yellow;mso-highlight:yellow">
way</span> to make something workable for existing fonts could be to use the Unicode East_Asian_Width property.<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">If I understand how ‘palt’ has been used (and is intended to be used), the characters whose glyphs would likely be affected by ‘palt’ are those that have EAW property values Fullwidth, Wide, and probably also
 Ambiguous. <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">Also, the concern about unintended application of ‘kern’ would only arise in the case of fonts that implement both ‘kern’ and ‘palt’. (If only one of those is implemented, there isn’t any problem.)<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">So, with those things in mind, the guidance for ‘kern’ could say that it should be applied by default _<i>except</i>_ for runs of text for which the following are both true:<o:p></o:p></span></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo1"><span style="font-size:11.0pt">characters have East_Asian_Width property values Fullwidth or Wide (or, perhaps, Ambiguous); and<o:p></o:p></span></li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo1"><span style="font-size:11.0pt">the text is formatted with a font that implements both ‘palt’ and ‘kern’.<o:p></o:p></span></li></ul>
<p class="MsoNormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Perhaps that would be a sufficient remedy for the current problem. But if there’s concensus that a new feature should be defined, then a recommendation for new font implementations (and perhaps also updates
 to existing fonts) to use the new feature in conjuction with ‘palt’ could be added as well.<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 id="mail-editor-reference-message-container">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;font-family:"Aptos",sans-serif;color:black">From:
</span></b><span lang="ZH-CN" style="font-size:12.0pt;font-family:DengXian;color:black">木田泰夫</span><span style="font-size:12.0pt;font-family:"Aptos",sans-serif;color:black"> <kida@mac.com><br>
<b>Date: </b>Tuesday, February 27, 2024 at 6:35</span><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black"> </span><span style="font-size:12.0pt;font-family:"Aptos",sans-serif;color:black">PM<br>
<b>To: </b>Nat McCully <nmccully@adobe.com>, Peter Constable <pconstable@microsoft.com><br>
<b>Cc: </b>Josh Hadley <johadley@adobe.com>, mpeg-otspec@lists.aau.at <mpeg-otspec@lists.aau.at><br>
<b>Subject: </b>[EXTERNAL] Re: OpenType 'palt' and 'kern' Documentation Revision Proposal</span><span style="font-size:11.0pt"><o:p></o:p></span></p>
</div>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" align="left" width="100%" style="width:100.0%;display:table;border-collapse:seperate;float:none">
<tbody>
<tr>
<td style="background:#A6A6A6;padding:5.25pt 1.5pt 5.25pt 1.5pt"></td>
<td width="100%" style="width:100.0%;background:#EAEAEA;padding:5.25pt 3.75pt 5.25pt 11.25pt">
<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 kida@mac.com.
<a href="https://aka.ms/LearnAboutSenderIdentification">Learn why this is important</a></span><span style="font-size:11.0pt"><o:p></o:p></span></p>
</div>
</td>
<td width="75" style="width:56.25pt;background:#EAEAEA;padding:5.25pt 3.75pt 5.25pt 3.75pt">
</td>
</tr>
</tbody>
</table>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt">Hello Peter,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt">I strongly support the direction you proposed. As you pointed out, this method spares applications from relying on unstable assumptions regarding monospace CJK, which is a significant advantage. I only wish
 this strategy had been our starting point.<o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt">However, we face a challenge with existing CFF-based Japanese fonts, which have incorporated 'palt' since their inception 25 years ago. These fonts are already in use and cannot be easily replaced in the field.
 Given this constraint, do you have any recommendations on how we might address or mitigate this issue? Your insights or suggestions would be invaluable as we navigate this complexity together.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt">Best regards,<o:p></o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt">- kida<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
</div>
</div>
</div>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:11.0pt">2024/02/22 14:20</span><span lang="ZH-CN" style="font-size:11.0pt;font-family:DengXian">、</span><span style="font-size:11.0pt">Nat McCully <nmccully@adobe.com></span><span lang="ZH-CN" style="font-size:11.0pt;font-family:DengXian">のメール</span><span style="font-size:11.0pt">:<o:p></o:p></span></p>
</blockquote>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt">Great idea! I like it better especially since now apps can rely on the font entirely to determine what gets kerned in the proportional Japanese case and not worry that 'kern' will affect Japanese without 'palt',
 and they also don't have to try to detect which glyphs are full width in the font or whatever (in our case we exclude upright in vertical characters/glyphs as the proxy for full width). <o:p></o:p></span></p>
</div>
</div>
<div id="ms-outlook-mobile-signature">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt">—Nat<o:p></o:p></span></p>
</div>
</div>
<div class="MsoNormal" align="center" style="text-align:center"><span style="font-size:11.0pt">
<hr size="0" width="100%" align="center">
</span></div>
<div id="divRplyFwdMsg">
<p class="MsoNormal"><b><span style="font-size:11.0pt;color:black">From:</span></b><span style="font-size:11.0pt;color:black"> Peter Constable <pconstable@microsoft.com><br>
<b>Sent:</b> Wednesday, February 21, 2024 6:54:01 PM<br>
<b>To:</b> Nat McCully <nmccully@adobe.com>; Josh Hadley <johadley@adobe.com>; mpeg-otspec@lists.aau.at <mpeg-otspec@lists.aau.at><br>
<b>Cc:</b> kida@mac.com <kida@mac.com><br>
<b>Subject:</b> RE: OpenType 'palt' and 'kern' Documentation Revision Proposal</span><span style="font-size:11.0pt">
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
</div>
</div>
<div>
<p><strong><span style="font-size:10.5pt;font-family:"Calibri",sans-serif;color:black">EXTERNAL: Use caution when clicking on links or opening attachments.</span></strong><o:p></o:p></p>
<p> <o:p></o:p></p>
<div>
<div>
<p class="xmsonormal"><span style="font-size:11.0pt">Thanks for the info.</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt">I understand the need, which is reasonable. I just suspect this approach will not work out well.
</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt">It all hinges on special and complex logic for determining over what text spans ‘kern’ can be on by default. (To do it properly, I think you’d want to parse coverage tables of lookups linked to ‘palt’ and
 map those glyphs back to characters, including any paths through GSUB substitutions.) If some apps were to attempt something, implementations would likely be very buggy and inconsistent with one another, which would likely lead to font vendors getting complaints
 from their customers regarding some mix of apps that are outside their control.</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt">Rather than suggest complex logic for default setting of ‘kern’, wouldn’t it be much simpler to define a new feature to activate kerning actions on glyphs to which ‘palt’ has also been applied? Here’s a possibility:</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt">————</span><o:p></o:p></p>
<p class="xmsonormal"><i><span style="font-size:11.0pt">Tag: </span></i><span style="font-size:11.0pt">'apkn'</span><o:p></o:p></p>
<p class="xmsonormal"><i><span style="font-size:11.0pt"> </span></i><o:p></o:p></p>
<p class="xmsonormal"><i><span style="font-size:11.0pt">Friendly name: </span></i><span style="font-size:11.0pt">Kerning for alternate proportional widths.</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><i><span style="font-size:11.0pt">Function:</span></i><span style="font-size:11.0pt"> Applies kerning adjustments to glyphs that have monospace advance widths by default but have been adjusted to proportional widths by application of the
 ‘palt’ feature.</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><i><span style="font-size:11.0pt">Example: </span></i><span style="font-size:11.0pt">A user activates proportional metrics (‘palt’) in Japanese text, which results in some glyphs that had monospace advance widths by default now having
 proportional widths. By activating this feature as well, those glyphs are then kerned with other glyphs. For instance, the glyph for U+FF08 “</span><span lang="ZH-CN" style="font-size:11.0pt;font-family:"MS Gothic"">(</span><span style="font-size:11.0pt">”
 has full-width advance by default; the ‘palt’ feature adjusts the glyph to have a narrower, proportional width; this feature then shifs this glyph closer to U+3078 “</span><span lang="ZH-CN" style="font-size:11.0pt;font-family:"Yu Gothic",sans-serif">へ</span><span style="font-size:11.0pt">”
 in the combination “</span><span lang="ZH-CN" style="font-size:11.0pt;font-family:"Yu Gothic",sans-serif">(へ</span><span style="font-size:11.0pt">”.</span><o:p></o:p></p>
<p class="xmsonormal"><i><span style="font-size:11.0pt"> </span></i><o:p></o:p></p>
<p class="xmsonormal"><i><span style="font-size:11.0pt">Recommended implementation:</span></i><span style="font-size:11.0pt"> The font kerns Kanji, Kana, Latin, punctuation, or other glyphs if those glyphs also are adjusted to proportional widths by lookups
 linked to the ‘palt’ feature. </span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt">Primarily intended for use in the GPOS table. Positioning adjustments can be implemented using GPOS pair-adjustment (type 2) lookups. Single- and pair-adjustment lookups have simple additive effect, therefore
 relative ordering of lookups for this feature and type 1 or type 2 lookups for ‘palt’ or other similar features is not crucial.</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt">It is strongly recommended that glyphs that have monospace widths by default not be kerned with other glyphs using the ‘kern’ feature but should only be kerned by activation of this feature.</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><i><span style="font-size:11.0pt">UI suggestion: </span></i><span style="font-size:11.0pt">This feature should be off by default, and activation should only be possible if the ‘palt’ feature has been activated. If ‘palt’ has been activated,
 then this feature may be automatically activated, but the UI should also provide a way to deactivate the feature when ‘palt’ is activated. The UI could implement logic for controlling both this feature and the ‘kern’ feature using a single control, but such
 logic should ensure that this feature is only activated if ‘palt’ is activated.</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><i><span style="font-size:11.0pt">Script/language sensitivity:</span></i><span style="font-size:11.0pt"> Intended primarily for CJK fonts but can be used in fonts for any script that have monospace advance widths by default.</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><i><span style="font-size:11.0pt">Feature interaction: </span>
</i><span style="font-size:11.0pt">Should only be implemented in fonts that also implement the ‘palt’ feature, which this feature is intended to complement. This feature should only be activated if ‘palt’ has been activated, but is not required to be activated
 if ‘palt’ is activated.</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt">————</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt">This way, the description and implementation for ‘kern’ are much simpler: there’s no need for complex logic to determine over which spans ‘kern’ should be activated by default; the app simply should always
 activate ‘kern’ by default for all text. Assuming the above recommendations for the new feature are followed in a font, having ‘kern’ on by default doesn’t result in undesired results.</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt">And, since the recommendation for the new feature is that it be off by default, the worst-case scenario of an app not having any logic about dependency on ‘palt’ also doesn’t lead to undesired results by
 default. A user might be able to activate this feature when ‘palt’ isn’t activated, but they can then turn it off.</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt">I would think there’s a better chance apps will expose this feature along with ‘palt’ than implement special, complex and bug-prone logic around default activation of ‘kern’.</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt">Peter Constable</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="xmsonormal"><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"> Nat McCully <nmccully@adobe.com>
<br>
<b>Sent:</b> Wednesday, February 21, 2024 6:29 PM<br>
<b>To:</b> Peter Constable <pconstable@microsoft.com>; Josh Hadley <johadley@adobe.com>; mpeg-otspec@lists.aau.at<br>
<b>Cc:</b> kida@mac.com<br>
<b>Subject:</b> [EXTERNAL] Re: OpenType 'palt' and 'kern' Documentation Revision Proposal</span><o:p></o:p></p>
</div>
</div>
<p class="xmsonormal"> <o:p></o:p></p>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" align="left" width="100%" style="width:100.0%">
<tbody>
<tr>
<td style="background:#A6A6A6;padding:5.25pt 1.5pt 5.25pt 1.5pt"></td>
<td width="100%" style="width:100.0%;background:#EAEAEA;padding:5.25pt 3.75pt 5.25pt 11.25pt">
<div>
<p class="xmsonormal" 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:wf_segoe-ui_normal;color:#212121">You don't often get email from
<a href="mailto:nmccully@adobe.com">nmccully@adobe.com</a>. <a href="https://aka.ms/LearnAboutSenderIdentification">
Learn why this is important</a></span><o:p></o:p></p>
</div>
</td>
<td width="75" style="width:56.25pt;background:#EAEAEA;padding:5.25pt 3.75pt 5.25pt 3.75pt">
</td>
</tr>
</tbody>
</table>
<div>
<div>
<div>
<div>
<p class="xmsonormal">Thanks for the comments. <o:p></o:p></p>
</div>
<div>
<p class="xmsonormal"> <o:p></o:p></p>
</div>
<div>
<p class="xmsonormal">Adobe apps do implement palt and kern together when you select “metrics” kerning (also called “auto”. Fonts that set kerning values on kana glyphs set the kern amount as a delta from the ‘palt’ widths, so it actually would be incorrect
 only to turn ‘kern’ without also turning on ‘palt’. However this is problematic as a default value for Japanese, so we defined a new “Roman only kerning” setting that is the default and only kerns non-CJK glyphs and leaves CJK monospaced. <o:p></o:p></p>
</div>
<div>
<p class="xmsonormal"> <o:p></o:p></p>
</div>
<div>
<p class="xmsonormal">Most applications set kerning on by default. If you do not do the above complex thing the Japanese fonts that have kerning values for kana glyphs will not kern enough, and will not be monospaced by default, which makes it difficult to
 get a quality or desired result out of the box. <o:p></o:p></p>
</div>
</div>
</div>
<div id="x_ms-outlook-mobile-signature">
<div>
<p class="xmsonormal"> <o:p></o:p></p>
</div>
<div>
<p class="xmsonormal">—Nat<o:p></o:p></p>
</div>
</div>
<div class="MsoNormal" align="center" style="text-align:center"><span style="font-size:12.0pt;font-family:"Aptos",sans-serif">
<hr size="0" width="100%" align="center">
</span></div>
<div id="x_divRplyFwdMsg">
<p class="xmsonormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:black">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:black"> mpeg-otspec <<a href="mailto:mpeg-otspec-bounces@lists.aau.at">mpeg-otspec-bounces@lists.aau.at</a>>
 on behalf of Peter Constable via mpeg-otspec <<a href="mailto:mpeg-otspec@lists.aau.at">mpeg-otspec@lists.aau.at</a>><br>
<b>Sent:</b> Wednesday, February 21, 2024 5:04:19 PM<br>
<b>To:</b> Josh Hadley <<a href="mailto:johadley@adobe.com">johadley@adobe.com</a>>;
<a href="mailto:mpeg-otspec@lists.aau.at">mpeg-otspec@lists.aau.at</a> <<a href="mailto:mpeg-otspec@lists.aau.at">mpeg-otspec@lists.aau.at</a>><br>
<b>Cc:</b> <a href="mailto:kida@mac.com">kida@mac.com</a> <<a href="mailto:kida@mac.com">kida@mac.com</a>><br>
<b>Subject:</b> Re: [MPEG-OTSPEC] OpenType 'palt' and 'kern' Documentation Revision Proposal</span>
<o:p></o:p></p>
<div>
<p class="xmsonormal"> <o:p></o:p></p>
</div>
</div>
<div>
<p><strong><span style="font-size:10.5pt;font-family:"Aptos",sans-serif;color:black">EXTERNAL: Use caution when clicking on links or opening attachments.</span></strong><o:p></o:p></p>
<p> <o:p></o:p></p>
<div>
<div>
<p class="xxmsonormal"><span style="font-size:11.0pt;font-family:"Aptos",sans-serif">This was reported last fall as an issue on the OpenType spec:</span><span style="font-size:11.0pt"><o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt;font-family:"Aptos",sans-serif"> </span><span style="font-size:11.0pt"><o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"><a href="https://github.com/MicrosoftDocs/typography-issues/issues/1069">'kern' and 'palt' UI suggestions and feature interaction descriptions are confusing for CJK · Issue #1069 · MicrosoftDocs/typography-issues
 (github.com)</a><o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">I’ve added comments in the discussion for that issue.<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">I’m leery about feature descriptions recommending complex feature-application behaviours that are unlikely to get implemented in applications. I have that concern in this case.<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">The ‘palt’ feature was defined by Adobe in early 1998. The earliest description (OpenType 1.1) didn’t mention interaction with ‘kern’. Here’s an excerpt:<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">—————<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Tag: "kern"<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">…<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">UI suggestion: This feature should be active by default. Applications may wish to allow users to add further manually-specified adjustments to suit specific needs and tastes.<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Script/language sensitivity: None.<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Feature interaction: May be used in addition to any other feature.<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">…<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Tag: "palt"<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">…<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">UI suggestion: This feature would be off by default.<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Script/language sensitivity: Used mostly in CJKV fonts.<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Feature interaction: This feature overrides the results of all other width features.<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">—————<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">In OpenType 1.2 (October 1998), the relationship to ‘kern’ was recognized (emphasis added):<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">—————<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Feature interaction: This feature overrides the results of all other glyph-width features.
<b>Applying this feature should also activate the kern feature.</b><o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">—————<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Some of the early Adobe feature descriptions are worded in ways that might suggest a wrong expectation that features in a font can control activation of other features in the font. I don’t know if that’s
 what the author of that description was assuming at the time. It’s worth pointing out, however, that the desired outcome of the above recommendation doesn’t require activating any other feature when ‘palt’ is activated: the lookups that implement kerning actions
 could simply be referenced by the ‘palt’ feature table directly.<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">By OpenType 1.3 (2000?), more subtle interaction between ‘kern’ and ‘palt’ was called out, though it appears the idea was emerging subtle that interaction between ‘palt’ and ‘kern’ could be more subtle,
 though the feature descriptions weren’t consistent with each other:<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">—————<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Tag: 'kern'<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">…<o:p></o:p></span></p>
<p class="xxmsonormal"><i><span style="font-size:11.0pt">UI suggestion:</span></i><span style="font-size:11.0pt"> This feature should be active by default for horizontal text setting. Applications may wish to allow users to add further manually-specified adjustments
 to suit specific needs and tastes.<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">…<o:p></o:p></span></p>
<p class="xxmsonormal"><i><span style="font-size:11.0pt">Feature interaction:</span></i><span style="font-size:11.0pt"> If 'kern' is activated, 'palt' must also be activated if it exists. (<b>If 'palt' is activated, there is no requirement that 'kern' must
 also be activated.</b>) May be used in addition to any other feature except those which result in fixed (uniform) advance widths (e.g. fwid, halt, hwid, qwid and twid)<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">…<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Tag: 'palt'<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">…<o:p></o:p></span></p>
<p class="xxmsonormal"><i><span style="font-size:11.0pt">Feature interaction:</span></i><span style="font-size:11.0pt"> This feature is mutually exclusive with all other glyph-width features (e.g. fwid, halt, hwid, pwid, qwid and twid), which should be turned
 off when it's applied. <b>Applying this feature should activate the kern feature.</b> See also vpal.<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">—————<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">By OpenType 1.5 (May 2008) the ‘palt’ description was updated to match interaction described in the ‘kern’ description.<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">—————<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Tag: 'palt'<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">…<o:p></o:p></span></p>
<p class="xxmsonormal"><i><span style="font-size:11.0pt">Feature interaction:</span></i><span style="font-size:11.0pt"> This feature is mutually exclusive with all other glyph-width features (e.g. fwid, halt, hwid, qwid and twid), which should be turned off
 when it’s applied. <b>If palt is activated, there is no requirement that kern must also be activated.</b> If kern is activated, palt must also be activated if it exists. See also vpal.<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">—————<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Since 2008, these feature descriptions have not changed in these regards.<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">So, it’s over 25 years since Adobe first registered ‘palt’, and at least 15 years since they recommended applications implement more subtle interaction between ‘palt’ and ‘kern’.
<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Now it’s proposed that applications should implement behaviour that’s even more involved, detecting whether glyphs are proportional or monospace and
<i>requiring </i>that 'kern' “[by] default shall not be activated on monospaced glyphs, but may be activate on any proportional-width glyphs”. I’m not even sure how an app is expected to distinguish monospaced glyphs from proportional glyphs.
<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">But even without this proposed revision, there’s been an assumption for over 15 years that apps would have some interaction between application of ‘palt’ and of ‘kern’. Does any app today implement that?
<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">If any app does, I expect Adobe, which proposed ‘palt’, would have done so at some point in the past 25 years. I don’t see a way in InDesign to control ‘palt’—here are the options I see in InDesign with
 the Yu Gothic font, which implements both ‘palt’ and ‘kern’ in GPOS under the default language system for ‘hani, ‘kana’, ‘latn’ and other scripts:<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"><img alt="image001.png" src="cid:image001.png@01DA64F5.64B99520"><o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">PhotoShop appears to be exposing ‘palt’ in UI, but it’s set on with no way to toggle it off:<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"><img border="0" width="408" height="414" style="width:4.25in;height:4.3125in" id="_x0000_i1027" src="cid:image002.png@01DA64F5.64B99520" data-unique-identifier=""><o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">In both apps, it’s not exactly clear to me how kerning UI interacts with the ‘kern’ feature. By default kerning is set to “Metrics”, which I’m guessing uses ‘kern’ (and I assume it’s deactivated by selecting
 the “0” option):<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"><img border="0" width="174" height="398" style="width:1.8125in;height:4.1458in" id="_x0000_i1026" src="cid:image004.png@01DA64F5.64B99520" data-unique-identifier=""><o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">If that’s the case, then the default is that both ‘palt’ and ‘kern’ are activated by default for both Latin and CJK runs, with no way to disable ‘palt’ (that I’ve found).<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"><img border="0" width="514" height="441" style="width:5.3541in;height:4.5937in" id="_x0000_i1025" src="cid:image005.png@01DA64F5.64B99520" data-unique-identifier=""><o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Peter Constable<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt;font-family:"Aptos",sans-serif"> </span><span style="font-size:11.0pt"><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="xxmsonormal"><b><span style="font-size:11.0pt">From:</span></b><span style="font-size:11.0pt"> mpeg-otspec <<a href="mailto:mpeg-otspec-bounces@lists.aau.at">mpeg-otspec-bounces@lists.aau.at</a>>
<b>On Behalf Of </b>Josh Hadley via mpeg-otspec<br>
<b>Sent:</b> Wednesday, February 21, 2024 11:45 AM<br>
<b>To:</b> <a href="mailto:mpeg-otspec@lists.aau.at">mpeg-otspec@lists.aau.at</a><br>
<b>Cc:</b> <a href="mailto:kida@mac.com">kida@mac.com</a><br>
<b>Subject:</b> [EXTERNAL] [MPEG-OTSPEC] OpenType 'palt' and 'kern' Documentation Revision Proposal<o:p></o:p></span></p>
</div>
</div>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">(I’m posting this on behalf of Nat McCully for discussion at the next AHG meeting; he’s unavailable right now but wanted to get it on the agenda)<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Vlad & AHG members,<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Please consider the proposal posted at
<a href="https://github.com/jcitpc/CJKFont/blob/main/docs/palt_kern.md">https://github.com/jcitpc/CJKFont/blob/main/docs/palt_kern.md</a> for addition to the next AHG meeting agenda.<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Thanks,<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt">Josh Hadley<o:p></o:p></span></p>
<p class="xxmsonormal"><span style="font-size:11.0pt"> <o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</div>
</div>


</div></blockquote></body></html>