<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<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 Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@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:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
tt
        {mso-style-priority:99;
        font-family:"Courier New";}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;}
p.attach, li.attach, div.attach
        {mso-style-name:attach;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:9.0pt;
        font-family:"Arial",sans-serif;}
p.bold, li.bold, div.bold
        {mso-style-name:bold;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:10.0pt;
        font-family:"Arial",sans-serif;
        font-weight:bold;}
p.green, li.green, div.green
        {mso-style-name:green;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:#628C2A;}
p.replbq, li.replbq, div.replbq
        {mso-style-name:replbq;
        margin:3.0pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.ad, li.ad, div.ad
        {mso-style-name:ad;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.underline, li.underline, div.underline
        {mso-style-name:underline;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.yshortcuts
        {mso-style-name:yshortcuts;}
p.ad1, li.ad1, div.ad1
        {mso-style-name:ad1;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.ad2, li.ad2, div.ad2
        {mso-style-name:ad2;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        margin-bottom:7.5pt;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.underline1, li.underline1, div.underline1
        {mso-style-name:underline1;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        text-decoration:underline;}
span.yshortcuts1
        {mso-style-name:yshortcuts1;
        font-family:"Verdana",sans-serif;
        font-weight:bold;}
span.yshortcuts2
        {mso-style-name:yshortcuts2;
        font-family:"Verdana",sans-serif;
        font-weight:normal;}
span.EmailStyle36
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1657493815;
        mso-list-template-ids:-1801579502;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></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]-->
</head>
<body bgcolor="white" lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Ken:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I didn’t see any response to comments I sent — repeating here:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoPlainText">The proposed names are very generic, whereas the intent is specifically for CJK. Would better names be "Contextual Half-width Spacing" (mnemonic tag 'chws', or 'chsp'); and "Vertical Contextual Half-width Spacing" ('vchw' or 'vchs')?<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Also, it's unclear how applications should go about implementing support for this. The Feature Interaction details say that other features that otherwise might be enabled by default — notably 'kern' — should be disabled when this is
 enabled. But how does anyone apply that to the general case? Are applications supposed to check whether a font supports this feature and then decide what features to apply by default? (And what if a font supports both this and 'kern'?) Suggesting that applications
 check font details and come up with heuristics to decide what features to apply be default is, in general, not a good idea: if done, there will be different heuristics applied; but at least as likely is that apps won't do it. It would be better if this were
 guidance to font developers, not application developers: i.e., if you use this feature to adjust spacing in some contexts, don't also use other features such as 'kern' for the same contexts.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">(That starts to beg the question: why not just use 'kern', but I assume the answer is that you want to differentiate for apps that do advanced layout to support JLREQ.)<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Peter<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b>From:</b> mpeg-OTspec@yahoogroups.com <mpeg-OTspec@yahoogroups.com>
<b>On Behalf Of </b>Ken Lunde lunde@adobe.com [mpeg-OTspec]<br>
<b>Sent:</b> April 27, 2018 12:23 PM<br>
<b>To:</b> mpeg-OTspec@yahoogroups.com; opentype-list@indx.co.uk<br>
<b>Subject:</b> Re: [mpeg-OTspec] Registering new GPOS features? [1 Attachment]<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">  <o:p></o:p></p>
<div id="ygrp-mlmsg">
<div id="ygrp-msg">
<div id="ygrp-text">
<p class="MsoNormal"><b><span style="font-size:9.0pt">[<a href="#TopText"><span style="text-decoration:none">Attachment(s)</span></a> from Ken Lunde included below]</span></b>
<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">Behdad and others,<br>
<br>
If there are no major objections, I'd prefer to simply propose to register two new GPOS features tagged 'cspc' and 'vcsp'. I am not convinced that a catch-all "required" feature would work for this purpose, especially because these features should be on by
 default only for particular environments. Please find attached draft feature descriptions.<br>
<br>
Regards...<br>
<br>
-- Ken<br>
<br>
> On Apr 25, 2018, at 9:05 PM, Behdad Esfahbod <<a href="mailto:behdad@behdad.org">behdad@behdad.org</a>> wrote:<br>
> <br>
> Thanks Ken.<br>
> <br>
> I agree 'dist' is not ideal, for at least, it's not applied by non-Indic shapers currently.<br>
> <br>
> What I was hinting at was that maybe we should register one catch-all required feature that can be used in the future for any such things.  Separating vertical might be the easiest currently. In some future we will add direction hints to lookups and then
 it wouldn't be needed anymore.  Currently there's no such catch-all required feature. For GSUB, people do things with 'ccmp' or 'loca' which are supposed to be always on in all shapers.<br>
> <br>
> On Thu, Apr 26, 2018 at 5:25 AM, Ken Lunde <a href="mailto:lunde@adobe.com">lunde@adobe.com</a> [mpeg-OTspec] <<a href="mailto:mpeg-OTspec-noreply@yahoogroups.com">mpeg-OTspec-noreply@yahoogroups.com</a>> wrote:<br>
> Peter & Behdad, <br>
> <br>
> While I am potentially okay with hanging the functionality that I described off of the 'dist' GPOS feature, especially if there is resistance to register a new feature, I need to point out that a separate feature is definitely needed for vertical. A sufficient
 number of the target characters have corresponding glyphs that can be used in both writing modes, sometimes as multiples of the same glyph (GID), which is what necessitates a separate vertical feature. Does that mean that the description of 'dist' needs to
 be modified, and a corresponding vertical feature, perhaps tagged 'vdis', be registered?
<br>
> <br>
> Also, 'kern' and 'vkrn' cannot be used for this purpose, because it is completely reasonable for a font to include both genuine kerning values (for more sophisticated environments) and the contextual spacing that I have described (for simpler environments).
<br>
> <br>
> Regards... <br>
> <br>
> -- Ken <br>
> <br>
> > On Apr 25, 2018, at 8:08 PM, Peter Constable <<a href="mailto:petercon@microsoft.com">petercon@microsoft.com</a>> wrote:
<br>
> > <br>
> > Agreed: distinct features are needed when a behaviour needs to be independently-controllable by users, or if (generally only in script-specific cases) a particular sequence of feature application is needed to get required GSUB derivations. Otherwise, a
 separate feature serves no purpose other than a bookkeeping mechanism for the font developer, or a way to declare a supported capability to customers.
<br>
> > <br>
> > From: <a href="mailto:mpeg-OTspec@yahoogroups.com">mpeg-OTspec@yahoogroups.com</a> <<a href="mailto:mpeg-OTspec@yahoogroups.com">mpeg-OTspec@yahoogroups.com</a>> On Behalf Of Behdad Esfahbod
<a href="mailto:behdad@behdad.org">behdad@behdad.org</a> [mpeg-OTspec] <br>
> > Sent: Wednesday, April 25, 2018 3:02 PM <br>
> > To: Ken Lunde <<a href="mailto:lunde@adobe.com">lunde@adobe.com</a>> <br>
> > Cc: <a href="mailto:mpeg-OTspec@yahoogroups.com">mpeg-OTspec@yahoogroups.com</a>;
<a href="mailto:opentype-list@indx.co.uk">opentype-list@indx.co.uk</a> <br>
> > Subject: Re: [mpeg-OTspec] Registering new GPOS features? <br>
> > <br>
> > <br>
> > OpenType is designed such that fonts can improve these kinds of things without needing a change to be rolled out to every engine first. We just need one required feature and all kinds of GSUB/GPOS things can be hung onto it. The tags should be reserved
 for features that are either need to be controlled by shaper, or by user. Everything else should be just one required feature.
<br>
> > <br>
> > On Wed, Apr 25, 2018 at 1:48 AM, Ken Lunde <a href="mailto:lunde@adobe.com">lunde@adobe.com</a> [mpeg-OTspec] <<a href="mailto:mpeg-OTspec-noreply@yahoogroups.com">mpeg-OTspec-noreply@yahoogroups.com</a>> wrote:
<br>
> > <br>
> > Behdad, <br>
> > <br>
> > <br>
> > While I see some parallels, the Indic nature of 'dist', along with the fact that a corresponding vertical feature is necessary, makes me think that separate features is better.
<br>
> > <br>
> > Also, and this is for others, I just noticed that a fair number of OpenType feature tags in the spec are surrounded by smart double quotes, while most are surrounded by single straight quotes. I counted that 16 features have this issue. See the attached
 screenshot to see the first three. <br>
> > <br>
> > Regards... <br>
> > <br>
> > -- Ken <br>
> > <br>
> > <br>
> > On Apr 24, 2018, at 3:39 PM, Behdad Esfahbod <<a href="mailto:behdad@behdad.org">behdad@behdad.org</a>> wrote:
<br>
> > <br>
> > 'dist' feature?<o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><span style="color:white"><o:p></o:p></span></p>
</div>
</div>
</body>
</html>