<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><section><h1><code>font-kerning</code> (CSS)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <cite xml:lang="en">CSS Fonts Module Level 4</cite>, <time>2022-08-21T12:18:41.000Z</time>, <time>2022-08-24T06:28:28.574Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://drafts.csswg.org/css-fonts/#font-kerning-prop">https://drafts.csswg.org/css-fonts/#font-kerning-prop</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OpenType</anchor> との対応関係は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">horizontal typographic mode</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">sideways typesetting</anchor> においては
<code>kern</code>,
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">upright typesetting</anchor> 
においては
<code>vkrn</code>
とされています。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src></p></section><section><h1><code>kern</code>, <code>vkrn</code> 機能 (OpenType)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <code>GPOS</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</title></anchor>:
<code>kern</code> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">横書き</anchor>用),
<code>vkrn</code> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">縦書き</anchor>用)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 
似たものとして <code>chws</code> というのがあって、
そちらは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">全角</anchor>幅でデザインされてる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">半角</anchor>に変更します。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">全角文字</anchor>が全部<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">全角</anchor>になってる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">等幅フォント</anchor>的なものがベースになってる前提で、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">カーニング</anchor>と同じような結果になります。
<code>kern</code> と <code>chws</code> に同じ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> を割り当てている<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>もあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> 
関連: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合文字</anchor></p></section><section><h1><code>kern</code> 表 (OpenType)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> 
<dfn><code>kern</code></dfn> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">OpenType表</title></anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>中の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字間のスペース付け<rt xmlns="http://www.w3.org/1999/xhtml">inter-character spacing</rt></rubyb>を制御するものです。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OpenType</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>に <code>KERN</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表</anchor>と <code>GPOS</code> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">カーニング</anchor>の両方を入れることもできます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CFF outline</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OpenType</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>では 
<code>kern</code> は使うことができません。 
<code>GPOS</code> を使わなければ<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません<rt xmlns="http://www.w3.org/1999/xhtml">must</rt></rubyb>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データ構造</anchor>的には使えないことはないのですが、
<code xmlns="http://www.w3.org/1999/xhtml">CFF </code> が導入されたのと同時に 
<code xmlns="http://www.w3.org/1999/xhtml">GPOS</code> が導入されたので、
それ以前から存在したものの <code xmlns="http://www.w3.org/1999/xhtml">GPOS</code> と重複する
<code xmlns="http://www.w3.org/1999/xhtml">kern</code> は利用しないことに決めた、ということなのでしょう。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>はどちらでも好きな方を使えます。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</anchor-internal></src>
しかし <code>GPOS</code> の方が新しく高機能で、そちらが好ましいようです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> 
<cite>OpenType</cite> 仕様書は、対象の組と値を返すだけで、
システムレベルでは対応していない <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src>
と述べています。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Microsoft</anchor> の仕様書なので、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Windows</anchor>
の実装ではそうだという意味でしょう。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <code>KERN</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表</anchor>の方は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>の対応が進めば<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実質</anchor>的に<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>廃止</anchor><rt xmlns="http://www.w3.org/1999/xhtml">obsolete</rt></rubyb>なもの
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</anchor-internal></src> という扱いになっています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">後方互換性</anchor>のため <code>GPOS</code> が使えればそちらを、なくて 
<code>kern</code> があればそちらを、と実装するのがいいのでしょう。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> 
<cite>OpenType</cite> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TrueType</anchor> 由来の <code>kern</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">OpenType表</title></anchor>を規定しています。
他の章で <code>KERN</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">OpenType表</title></anchor>を参照していますが <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</anchor-internal></src>、
どこでも規定されていません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> 
現在の実装状況からすれば<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>側は <code>GPOS</code> にだけ入れておけば十分とも思われます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> 
<code>kern</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">OpenType表</title></anchor>には<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">部分表</anchor>を何個か含めることが出来ます。
各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">部分表</anchor>による<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">調整は追加されていきます<rt xmlns="http://www.w3.org/1999/xhtml">adjustments are additive</rt></rubyb>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> 
従って<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">部分表</anchor>の順序は重要ではないとされます。
ただし最小値は他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">部分表</anchor>の効果を制限すべく普通は最後に置く<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べき<rt xmlns="http://www.w3.org/1999/xhtml">[should</rt></rubyb>だとされます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">部分表</anchor>の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">coverage</code></f> 
の第3ビット 
<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">override</code></f>
により、
それまで<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">蓄積<rt xmlns="http://www.w3.org/1999/xhtml">accumulated</rt></rubyb>されてきた指定が上書きされます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> 
分かったようで分からない規定です。
順序は重要ではないといいながらも、
最小値が最後にあるべきだということやリセットができるということは、
やはり最初から順に処理されるものだということでいいのでしょうか。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">部分表</anchor>が加算的であるとはどういうことでしょう。
カーニング値 (スペース調整量) 
が同じ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の組に対して複数回指定できるということでしょうか。
その時は調整量が加算されていくのでしょうか。それとも後の方で上書きされるのでしょうか。
あるいは同じ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の組への適用は想定していなくて、
異なる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の組への調整をすべて拾っていくという意味なのでしょうか。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> 
<cite>OpenType</cite>
では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">部分表</anchor>は、
<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">format</code></f> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n>
と
<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">format</code></f> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2</n>
があります。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Windows</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">部分表</anchor>
<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">format</code></f> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n>
にだけ対応しています。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">部分表</anchor>では左<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>と右<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">組</anchor>に対して値を設定できます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の組は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">左</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">右</anchor>で指定されます。これは文字通り<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">物理順</anchor>と考えて良いのでしょうか。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> <code xmlns="http://www.w3.org/1999/xhtml">GPOS</code> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">左</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">右</anchor>という言葉を使わず、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">論理順</anchor>だと明記されています。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">部分表</anchor>の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">coverage</code></f> 
の第0ビット 
<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">horizontal</code></f>
により、
水平方向 (<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</n>) か垂直方向 (<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n>) かを指定できます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src>
やや不明瞭ですが、
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>横書き</anchor><rt xmlns="http://www.w3.org/1999/xhtml">horizontal text</rt></rubyb>用か<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>縦書き</anchor><rt xmlns="http://www.w3.org/1999/xhtml">vertical text</rt></rubyb>用かの区別と思われます。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> しかし<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">縦書き</anchor>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">左</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">右</anchor>は意味がわかりません。
やはり<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">論理順</anchor>と解するべきなのでしょうか?</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">部分表</anchor>の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">coverage</code></f> 
の第2ビット 
<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">cross-stream</code></f>
により、
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">垂直<rt xmlns="http://www.w3.org/1999/xhtml">perpendicular</rt></rubyb>方向の指定 (<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</n>) かそうでないか (<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n>)
を指定できます。
ここでいう垂直とは、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">横書き</anchor>なら正値で上向きに kern、負値で下向きに kern され、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">縦書き</anchor>なら正値で右向きに kern、負値で左向きに kern されます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> この状況でいう kern がどういう操作か不明瞭ですが、
一方 (どっち?) の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>を指定された方向に移動させるということでいいのでしょうか?</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">部分表</anchor>の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">coverage</code></f> 
の第1ビット 
<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">minimum</code></f>
により、
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">カーニング値<rt xmlns="http://www.w3.org/1999/xhtml">kerning value</rt></rubyb> (<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n>) 
または<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最小値<rt xmlns="http://www.w3.org/1999/xhtml">minimum value</rt></rubyb> (<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</n>) 
のどちらであるかが決まります。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> 
カーニング値は、文字間スペース付けを調整します。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> 
最小値は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">kerning</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">tracking</anchor> の組合せにより <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">scaler</anchor> が適用する調整の量を制限します。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ位置決定</anchor>も参照。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> 
<cite xml:lang="ja-jp">OpenType glyph processing (part 2) - Typography | <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Microsoft</anchor> Docs</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">alib-ms</anchor>, <time>2022-08-27T12:28:07.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://docs.microsoft.com/ja-jp/typography/develop/processing-part2#gpos-table">https://docs.microsoft.com/ja-jp/typography/develop/processing-part2#gpos-table</anchor-external></li><li>
<anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> 
<cite xml:lang="ja-jp"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">kern</anchor> - Kerning (OpenType 1.9) - Typography | Microsoft Docs</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PeterCon</anchor>, <time>2022-09-09T11:37:39.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://docs.microsoft.com/ja-jp/typography/opentype/spec/kern">https://docs.microsoft.com/ja-jp/typography/opentype/spec/kern</anchor-external></li></ul></refs></section><section><h1>フォント機能 <code>kern</code> (OpenType)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="69" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[69]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OpenType</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント機能</anchor>
<dfn><code>kern</code></dfn>
は、
Kerning
です。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="70" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[70]</anchor-end> 
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>横書き</anchor>文配置<rt xmlns="http://www.w3.org/1999/xhtml">horizontal text layout</rt></rubyb> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">横組</anchor>) において、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の組合せの間の<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>間隔</anchor><rt xmlns="http://www.w3.org/1999/xhtml">space</rt></rubyb>の<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">量<rt xmlns="http://www.w3.org/1999/xhtml">amount</rt></rubyb>を調整して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の間の<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">間隔付け<rt xmlns="http://www.w3.org/1999/xhtml">spacing</rt></rubyb>を<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">見かけ上<rt xmlns="http://www.w3.org/1999/xhtml">optically</rt></rubyb><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一貫<rt xmlns="http://www.w3.org/1999/xhtml">consistent</rt></rubyb>させるために使います。
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">よく設計された書体<rt xmlns="http://www.w3.org/1999/xhtml">well-designed typeface</rt></rubyb>は<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">全体として<rt xmlns="http://www.w3.org/1999/xhtml">overall</rt></rubyb>一貫した<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>グリフ</anchor>間の間隔付け<rt xmlns="http://www.w3.org/1999/xhtml">inter-glyph spacing</rt></rubyb>を有するものではありますが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の組合せによっては<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">可読性<rt xmlns="http://www.w3.org/1999/xhtml">legibility</rt></rubyb>の改善のために<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">調整<rt xmlns="http://www.w3.org/1999/xhtml">adjustment</rt></rubyb>が必要になります。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="78" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[78]</anchor-end> 「To」の <sw-ch xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">o</sw-ch> を左にずらして配置するために
<code>kern</code> を使うことができます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="71" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[71]</anchor-end> 
<code>kern</code>
では<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">水平方向<rt xmlns="http://www.w3.org/1999/xhtml">horizontal direction</rt></rubyb>の<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">標準的な調整<rt xmlns="http://www.w3.org/1999/xhtml">standard adjustment</rt></rubyb> の他に、</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="72" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[72]</anchor-end> 「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">cross-stream</anchor>」 な <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">kerning</anchor> を Y <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文方向<rt xmlns="http://www.w3.org/1999/xhtml">text direction</rt></rubyb>
にも行ったり、</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="73" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[73]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">前進</anchor>調整と別にグリフ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">配置</anchor>を調整したり、</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="74" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[74]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">装置表</anchor>を介して size 依存の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">kerning</anchor> データを<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">供給<rt xmlns="http://www.w3.org/1999/xhtml">supply</rt></rubyb>したり、</li></ul><p>... もできます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="75" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[75]</anchor-end> 
<code>kern</code> は<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>縦書き</anchor>文配置<rt xmlns="http://www.w3.org/1999/xhtml">vertical text layout</rt></rubyb> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">縦組</anchor>) 
での利用は想定していません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">縦組</anchor>では <code>vkrn</code> を使います。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[77]</anchor-end> 
<code>kern</code> は<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>利用者</anchor><rt xmlns="http://www.w3.org/1999/xhtml">user</rt></rubyb>が<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">上書き<rt xmlns="http://www.w3.org/1999/xhtml">overridden</rt></rubyb><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">可能<rt xmlns="http://www.w3.org/1999/xhtml">can</rt></rubyb>な<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">意図した間隔付けの調整<rt xmlns="http://www.w3.org/1999/xhtml">intended spacing adjustments</rt></rubyb>にのみ使うべきです。
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>利用者</anchor>の制御<rt xmlns="http://www.w3.org/1999/xhtml">user control</rt></rubyb>下になく<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">必須の間隔付けの調整<rt xmlns="http://www.w3.org/1999/xhtml">required spacing adjustments</rt></rubyb>には <code>dist</code>
を使う<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べき<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>です。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="80" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[80]</anchor-end> 
<code>kern</code> は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">metrics</anchor> が<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>可変幅</anchor><rt xmlns="http://www.w3.org/1999/xhtml">proportional</rt></rubyb>に調整される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">機能</anchor>が適用できる場合を除き、
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>固定幅</anchor>グリフ<rt xmlns="http://www.w3.org/1999/xhtml">fixed-width glyphs</rt></rubyb>に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">kerning</anchor> 
調整を適用する<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきではありません<rt xmlns="http://www.w3.org/1999/xhtml">should not</rt></rubyb>。
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">新しい<anchor>フォント</anchor><rt xmlns="http://www.w3.org/1999/xhtml">new font</rt></rubyb>では、
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">既定の状態で固定幅<rt xmlns="http://www.w3.org/1999/xhtml">default fixed-width</rt></rubyb> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">metrics</anchor> であり<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>可変幅</anchor><rt xmlns="http://www.w3.org/1999/xhtml">proportional widths</rt></rubyb>になるよう調整された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">kerning</anchor> は、 <code>kern</code> ではなく <code>apkn</code> による<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="89" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[89]</anchor-end> 
<code>kern</code> は、
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">固定長<rt xmlns="http://www.w3.org/1999/xhtml">fixed-width</rt></rubyb> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">metrics</anchor>
となる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">機能</anchor>:
<code>chws</code>, <code>fwid</code>, <code>halt</code>, <code>hwid</code>, <code>qwid</code>, <code>twid</code>, <code>tnum</code>
と組み合わせる<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきではありません<rt xmlns="http://www.w3.org/1999/xhtml">should not</rt></rubyb>。
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文章の<anchor>連なり</anchor><rt xmlns="http://www.w3.org/1999/xhtml">text run</rt></rubyb>においてこれらが有効とされたとき、
<code>kern</code> は無効とする<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="90" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[90]</anchor-end> これが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">著者</anchor>に対する要件なのか<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字のレンダリング</anchor>の実装に対する要件なのかよくわかりません。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="91" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[91]</anchor-end> 
<code>kern</code> は <code>pkna</code>, <code>pwid</code> と併用でき、
それらが<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文章の<anchor>連なり</anchor><rt xmlns="http://www.w3.org/1999/xhtml">text run</rt></rubyb>において有効とされたとき、
既定でまたは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>の<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">好み<rt xmlns="http://www.w3.org/1999/xhtml">preference</rt></rubyb>により 
<code>kern</code> も有効と<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">できます<rt xmlns="http://www.w3.org/1999/xhtml">may</rt></rubyb>。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="83" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[83]</anchor-end> 
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ほとんど<rt xmlns="http://www.w3.org/1999/xhtml">most</rt></rubyb>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">横書き文配置</anchor>では
<code>kern</code>
を<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">既定の状態で有効<rt xmlns="http://www.w3.org/1999/xhtml">active by default</rt></rubyb>にする<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べき<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>です。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="85" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[85]</anchor-end> 
ただし CJK <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文<rt xmlns="http://www.w3.org/1999/xhtml">text</rt></rubyb>の場合、
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文章の<anchor>連なり</anchor><rt xmlns="http://www.w3.org/1999/xhtml">text run</rt></rubyb>が <code>palt</code> を実装する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>で<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">書式付け<rt xmlns="http://www.w3.org/1999/xhtml">formatted</rt></rubyb>されている場合、
<code>palt</code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">機能</anchor>も有効である場合を除き、
<code>kern</code>
は <code>palt</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> で<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">覆われる<rt xmlns="http://www.w3.org/1999/xhtml">covered</rt></rubyb><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>に対して既定の状態で有効にする<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきではありません<rt xmlns="http://www.w3.org/1999/xhtml">should not</rt></rubyb>。
なぜならば、
<code>palt</code> で覆われる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>は既定の状態で<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>固定幅</anchor><rt xmlns="http://www.w3.org/1999/xhtml">fixed-width</rt></rubyb> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">metrics</anchor>
を持つのであり、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">kerning</anchor> 調整を適用するのは不適切であるからです。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="87" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[87]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>は、既定の状態で有効にする対象外となるべき<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>を特定するために
<code>palt</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">coverage</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表</anchor>を走査することができます。
あるいはそのかわりに、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode文字</anchor>の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><COD xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">East_Asian_Width</COD></f>
が <code>Wide</code> か <code>Fullwidth</code> であれば <code>palt</code>
を実装する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>において既定の状態で<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">固定幅<rt xmlns="http://www.w3.org/1999/xhtml">fixed-width</rt></rubyb>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">metrics</anchor>
を持つものと<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">みなしても構いません<rt xmlns="http://www.w3.org/1999/xhtml">may be assumed</rt></rubyb>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="88" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[88]</anchor-end> 
しかしながら、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>が <code>palt</code> と <code>apkn</code>
の両方を実装する場合には、
<code>kern</code> をすべての<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>横書き</anchor>文<rt xmlns="http://www.w3.org/1999/xhtml">horizontal text</rt></rubyb>に適用できます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><note xmlns="urn:x-suika-fam-cx:markup:ietf:html:3:draft:00:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="93" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[93]</anchor-end> 
仕様書のこの部分の規定は非常にわかりにくく、冗長な反面、表現に一貫性がないなど文意が必ずしも判然としないところがありますが、
要するに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">固定幅フォント</anchor>に対して <code>kern</code> がどう適用されるべきかについて、
古い実装や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>が混乱した状態だったのでしょう。</p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="94" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[94]</anchor-end> 
それに対して新たに <code>apkn</code> を追加したり、仕様書に規定を追加したりと手当てしたものの、
既存の実装の挙動を正確に記述するでもなく、新しい実装に対する要件を完璧に規定するでもない、
中途半端で曖昧な文言にしてしまったということだと思われます。</p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="95" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[95]</anchor-end> 
適用するでもない <code>palt</code> を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> するというのは他にないおかしな操作です。
その代替として提示される <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode文字</anchor>の情報を使うというのはもっとおかしな操作です。
正気とは思えませんが、そういう実装がどこかにあるのでしょう。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">EAW</anchor> が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">曖昧幅</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>はどうなるのかとか、
<code>cmap</code> から直接ではなく<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント機能</anchor>による <code>GSUB</code> を経由した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>でおかしくならないのかとか、
気になることはいろいろあります。)</p></note><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="92" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[92]</anchor-end> 
いずれの事由にせよ
<code>kern</code> が<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文章の<anchor>連なり</anchor><rt xmlns="http://www.w3.org/1999/xhtml">text run</rt></rubyb>に対して既定で適用されるときは、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>がこれを無効にすることもできる<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[86]</anchor-end> 
<code>kern</code>
は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク付け</anchor>,
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>の制御,
その他<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>依存の方法で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">連なり</anchor>に対して適用するかどうか指定させられます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="84" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[84]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>に <code>kern</code> 
の有効・無効に加えて更に特定の手動の調整を行わせる手段を提供できます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="79" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[79]</anchor-end> 
<code>GPOS</code> <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupType</code></f> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2</n>, <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">8</n> が<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">推奨<rt xmlns="http://www.w3.org/1999/xhtml">recommended</rt></rubyb>されています。
<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2</n> のとき、2つ目の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">配置</anchor>調整は行わないことが<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">推奨<rt xmlns="http://www.w3.org/1999/xhtml">recommended</rt></rubyb>されます
(<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> に設定する<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>)。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="82" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[82]</anchor-end> 
<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2</n> の仕様では、こうすることで<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>列の前から順のすべての組合せに調整を適用できます。
2つ目の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">配置</anchor>が調整されると、2つ目の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>とその次の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の組合せでの調整が行われません。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="76" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[76]</anchor-end> 
2つ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">超</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">連なり</anchor>に対して <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> を適用することもできます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="81" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[81]</anchor-end> その他の <code>GSUB</code>, <code>GPOS</code> が禁止されているわけではありません。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[68]</anchor-end> 
<cite xml:lang="en-us">Registered features, k-o (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OpenType</anchor> 1.9.1) - Typography | Microsoft Learn</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PeterCon</anchor>, <time>2024-05-31T17:42:31.000Z</time>, <time>2025-12-26T13:09:31.070Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://learn.microsoft.com/en-us/typography/opentype/spec/features_ko#kern">https://learn.microsoft.com/en-us/typography/opentype/spec/features_ko#kern</anchor-external></li></ul></refs></section><section><h1><code>apkn</code> 機能 (OpenType)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント機能</anchor> 
<dfn><code>apkn</code></dfn>
は、
Kerning for Alternate Proportional Widths
とされています。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> 
既定では<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">固定<rt xmlns="http://www.w3.org/1999/xhtml">fixed</rt></rubyb>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">前進幅</anchor>を持つ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>が
<code>palt</code>
によって<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>可変幅</anchor><rt xmlns="http://www.w3.org/1999/xhtml">proportional width</rt></rubyb>に調整されているときの<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>字間調整</anchor><rt xmlns="http://www.w3.org/1999/xhtml">kerning adjustment</rt></rubyb>を行うものです。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> 
そのような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>は <code>kern</code> によって<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字間調整<rt xmlns="http://www.w3.org/1999/xhtml">kerned</rt></rubyb>しないことが<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">強く推奨<rt xmlns="http://www.w3.org/1999/xhtml">strongly recommended</rt></rubyb>されます。
<code>apkn</code>
によってのみ<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字間調整<rt xmlns="http://www.w3.org/1999/xhtml">kerned</rt></rubyb>される<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>が主対象ですが、それ以外でも使えます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end> 
<code>palt</code> が有効なときだけ
<code>apkn</code>
を有効にできる<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>。
<code>palt</code>
を有効にすると
<code>apkn</code>
も自動的に有効にしても<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構いません<rt xmlns="http://www.w3.org/1999/xhtml">may</rt></rubyb>が、
<code>palt</code>
だけを有効にする手段も用意する<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べき<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>です。
<code>palt</code>
を無効にすると、
<code>apkn</code>
も無効にする<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="64" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[64]</anchor-end> 
<code>GPOS</code> <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupType</code></f> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2</n>
が主に想定されています。
<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupType</code></f> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</n>
も想定されているようです。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src>
他の <code>GSUB</code> や <code>GPOS</code> も禁止されているわけではありません。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> 
<cite xml:lang="en-us">Registered features, a-e (OpenType 1.9.1) - Typography | <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Microsoft Learn</anchor></cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PeterCon</anchor>, <time>2024-07-07T00:58:54.000Z</time>, <time>2024-12-04T11:09:39.132Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://learn.microsoft.com/en-us/typography/opentype/spec/features_ae">https://learn.microsoft.com/en-us/typography/opentype/spec/features_ae</anchor-external></li></ul></refs></section><section><h1><code>chws</code> 機能 (OpenType)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント機能</anchor>
<dfn><code>chws</code></dfn>
は
Contextual Half-width Spacing
とされています。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[48]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JLREQ</anchor> 
あるいは同様の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK</anchor> <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文章配置<rt xmlns="http://www.w3.org/1999/xhtml">text-layout</rt></rubyb>仕様書で既定の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>が<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">全角<rt xmlns="http://www.w3.org/1999/xhtml">full-width</rt></rubyb>である<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>の<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">半角形<rt xmlns="http://www.w3.org/1999/xhtml">half-width forms</rt></rubyb>を期待するもので説明されているように、
既定では<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">全角幅<rt xmlns="http://www.w3.org/1999/xhtml">full-em widths</rt></rubyb>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>を<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文脈的に再度間隔調整<rt xmlns="http://www.w3.org/1999/xhtml">contextually re-spaces</rt></rubyb>し、
より洗練された<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文章配置<rt xmlns="http://www.w3.org/1999/xhtml">text layout</rt></rubyb>に<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">近似<rt xmlns="http://www.w3.org/1999/xhtml">approximate</rt></rubyb>させるよう<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">半角水平幅<rt xmlns="http://www.w3.org/1999/xhtml">half-em horizontal widths</rt></rubyb>に<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合わせ<rt xmlns="http://www.w3.org/1999/xhtml">fitting them onto</rt></rubyb>ます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JLREQ</anchor>
では特に</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="52" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[52]</anchor-end> <csection xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">3.1.4 Positioning of Consecutive Opening Brackets, Closing Brackets, Commas, Full Stops and Middle Dots</csection>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.w3.org/TR/jlreq/?lang=en#positioning_of_consecutive_opening_brackets_closing_brackets_comma_full_stops_and_middle_dots">https://www.w3.org/TR/jlreq/?lang=en#positioning_of_consecutive_opening_brackets_closing_brackets_comma_full_stops_and_middle_dots</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="53" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[53]</anchor-end> <csection xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">B. Spacing between Characters</csection>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.w3.org/TR/jlreq/?lang=en#spacing_between_characters">https://www.w3.org/TR/jlreq/?lang=en#spacing_between_characters</anchor-external></li></ul><p>が参照されています。また、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CLREQ</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">KLREQ</anchor> が参照されています (が具体的な箇所は参照されていません)。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[61]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">中文</anchor>だとこの辺りが該当するのでしょう:</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="60" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[60]</anchor-end> 
<cite xml:lang="en">Requirements for Chinese Text Layout - 中文排版需求</cite>, <time>2024-11-05T18:58:34.000Z</time>, <time>2024-12-05T04:56:07.189Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.w3.org/International/clreq/#punctuation_width_adjustment">https://www.w3.org/International/clreq/#punctuation_width_adjustment</anchor-external></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="63" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[63]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">韓文</anchor>だと一応この辺りが該当するのでしょうが、あまり詳しい説明はありません:</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="62" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[62]</anchor-end> 
<cite xml:lang="en">Requirements for Hangul Text Layout and Typography - 한국어 텍스트 레이아웃 및 타이포그래피를 위한 요구사항</cite>, <time>2024-11-14T10:20:20.000Z</time>, <time>2024-12-05T05:03:16.432Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://w3c.github.io/klreq/#fonts-letterfaceposn">https://w3c.github.io/klreq/#fonts-letterfaceposn</anchor-external></li></ul><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[54]</anchor-end> 
<sw-cn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FULLWIDTH RIGHT PARENTHESIS</sw-cn>
の後に
<sw-cn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDEOGRAPHIC COMMA</sw-cn>
が続くときに、
前者の右側<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">半角</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空白</anchor>であるとき
<code>chws</code>
によってこれを除去できます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src></p></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> 
<code>halt</code> とは違って<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">間隔再調整<rt xmlns="http://www.w3.org/1999/xhtml">re-spacing</rt></rubyb>は<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文脈的<rt xmlns="http://www.w3.org/1999/xhtml">contextual</rt></rubyb>です。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[50]</anchor-end> 
<code>chws</code> は<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">単一間隔揃え<rt xmlns="http://www.w3.org/1999/xhtml">monospaced alignment</rt></rubyb>を崩さずに (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UI</anchor> や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">端末</anchor>アプリのような場面で)
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>句読点</anchor><rt xmlns="http://www.w3.org/1999/xhtml">punctuation</rt></rubyb>や<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>記号</anchor><rt xmlns="http://www.w3.org/1999/xhtml">symbol</rt></rubyb>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>をより良く<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合わせる<rt xmlns="http://www.w3.org/1999/xhtml">fit</rt></rubyb>べく呼び出せます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[55]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CLREQ</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JLREQ</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">KLREQ</anchor> で説明されるような <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK</anchor> <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文<rt xmlns="http://www.w3.org/1999/xhtml">text</rt></rubyb>の<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">高度<rt xmlns="http://www.w3.org/1999/xhtml">advanced</rt></rubyb>な
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">layout</anchor>
に対応する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">layout engine</anchor> の場合には、
<code>chws</code> は使う<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきではありません<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>。
そのような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>が <code>chws</code> を制御できるようにしないのが適当<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">かもしれません<rt xmlns="http://www.w3.org/1999/xhtml">may</rt></rubyb>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[56]</anchor-end> 
そうでない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>では <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK</anchor> <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文<rt xmlns="http://www.w3.org/1999/xhtml">text</rt></rubyb>の<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>横組</anchor><rt xmlns="http://www.w3.org/1999/xhtml">horizontal layout</rt></rubyb>時に常に
<code>chws</code> に対応する<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>。
既定で有効にする<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[59]</anchor-end> 
文脈的に云々というのでいわゆる <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">complex script</anchor> の仕組みのように高度なアルゴリズムが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>列の一部に適宜この<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント機能</anchor>を適用するのかと思いきや、
どうもそうではなさそうです。
高度なアルゴリズムを実装しているなら <code xmlns="http://www.w3.org/1999/xhtml">chws</code> とは関係なくそのアルゴリズムが処理してくれ、
そうではない従来からの実装は通常の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント機能</anchor>と同じように <code xmlns="http://www.w3.org/1999/xhtml">chws</code>
を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>の指定により使える、ということのようです。
(とはいえ高度なアルゴリズムであろうとどの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>がどのような文字幅でどの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>に除去可能な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空白</anchor>があるかまで一々把握しているとは思えないので、
結局 <code xmlns="http://www.w3.org/1999/xhtml">chws</code> を一部分に適用するという実装になるのかもしれませんが。)</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="57" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[57]</anchor-end> 
水平<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>幅<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</title></anchor>
<code>fwid</code>, <code>halt</code>, <code>hwid</code>, <code>palt</code>, <code>pkna</code>, <code>pwid</code>, <code>qwid</code>, <code>twid</code>, <code>pnum</code>, <code>tnum</code>
と互いに排他的であり、
<code>chws</code> を適用するなら無効にする<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="58" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[58]</anchor-end> 
<code>chws</code> を<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文章の<anchor>連なり</anchor><rt xmlns="http://www.w3.org/1999/xhtml">text run</rt></rubyb>に適用するときは
<code>apkn</code>, <code>kern</code> は無効にする<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="65" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[65]</anchor-end> 
<code>GPOS</code> <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupType</code></f> は <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2</n> や <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">8</n>
が<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>推奨</anchor><rt xmlns="http://www.w3.org/1999/xhtml">recommended</rt></rubyb>されています。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src>
他の <code>GSUB</code> や <code>GPOS</code> が禁止されているわけではありません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="66" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[66]</anchor-end> 
<code>GPOS</code> <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupType</code></f> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2</n> 
では1つ目の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>に調整を適用し、
2つ目には適用しないことが<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>推奨</anchor><rt xmlns="http://www.w3.org/1999/xhtml">recommended</rt></rubyb>されます。
そうすると2つ目の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>はそれを1つ目の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>として再探索されることになります。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal></src></p></section><section><h1><code>cpsp</code> 機能 (OpenType)</h1><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>cpsp</anchor> </sw-see></p></section><section><h1><code>dist</code> 機能 (OpenType)</h1><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>dist</anchor> </sw-see></p></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <code>text-rendering</code></p></section><section><h1>歴史</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> <cite xml:lang="en-GB">The Typekit Blog | Kerning on the Web</cite>, <time>2020-07-28T21:34:28.000Z</time>, <time>2023-11-11T07:25:39.764Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://blog.typekit.com/2014/02/05/kerning-on-the-web/">https://blog.typekit.com/2014/02/05/kerning-on-the-web/</anchor-external></p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> 
<cite>字形分析して和文オプティカルカーニングを行うJavaScriptライブラリの開発 - <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Qiita</anchor></cite>
( (<time>2017-05-19 14:28:04 +09:00</time>))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://qiita.com/data9824/items/b8d79a5b2ced3e9f3868">http://qiita.com/data9824/items/b8d79a5b2ced3e9f3868</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">記号</anchor>の前後の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空白</anchor>を詰める調整と説明されてることが多いですが、
逆に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>間隔を広げて近接しすぎないように調整してる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>もあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <cite>原則と応用 - JAGAT</cite>, <time>2020-03-27T05:47:03.000Z</time>, <time>2022-08-31T14:13:44.929Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.jagat.or.jp/past_archives/content/view/3235.html">https://www.jagat.or.jp/past_archives/content/view/3235.html</anchor-external></p><blockquote><p>括弧や句読点の前後のアキは、やや空き過ぎに見えて詰めたくなる場合もあるが、行の調整処理などを考慮し、前後のアキを詰めることは一般には行わない。
ただし、パーレンと山括弧(()と〈〉)については、活字組版の時代から、その前後を二分アキとしないでベタ組にすることが一部の出版社で行われていた。</p><p>これに対し、見出しに括弧と句読点を配置する場合、文字サイズも大きくなり、これらの前後の二分アキが目立つこともある。そこで、括弧や句読点の前後の二分アキを、四分アキ又はベタ組とする方法が行われている。
四分アキとする方法は一部の出版社の一部の出版物で行われており、ベタ組とする方法もそれなりに行われている。
私は、ベタ組は詰め過ぎと思うので、四分アキにする方法をとっている。柱(ページの欄外に掲げる見出し)や目次でも同様に行っている。 </p></blockquote><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> 
「モーニング娘。'23」の「。'」の間のアキをどうするのか気になる。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[67]</anchor-end> <cite xml:lang="en-GB">Toshi Omagari | Klaket</cite>, <time>2025-06-27T13:20:21.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tosche.net/jp/fonts/klaket">https://tosche.net/jp/fonts/klaket</anchor-external></p><blockquote><p>ルカー体は特に学ぶのが難しい文字ではないのですが、傾斜するベースラインがタイポグラフィでは再現が難しいので、デジタル書体の選択肢はほとんどありません。OpenType機能を使えば傾斜の再現自体は難しくないのですが、厄介なのはカーニングです。カーニングといえば通常は二つの文字の間を調整する作業ですが、ルカー体などでは文字の位置が後続の文字によって上下し、それによってアキ量も変わるため、あるペアのカーニング量を決めるには続く文字の内容まで確認しなければいけません。うまくルールを単純化しなければ、天文学的にカーニングのパターンが増えることになります。幸運なことに前述のカマルさんから解決策を教えていただきました。精度があまり高くはありませんが総当たりする必要もなく、カーニングが無いよりは遥かにマシです(既存のOpenTypeのルカー書体はどれもカーニングが入ってません)。</p></blockquote></section></body></html>