<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><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> <dfn><code>GSUB</code></dfn> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の置き換えを、
<dfn><code>GPOS</code></dfn> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</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>の<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>です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="104" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[104]</anchor-end> 
<dfn><code>JSTF</code></dfn>
は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">justification</anchor> のための<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</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>の<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>です。</p><section><h1>仕様書</h1><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="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> 
<cite xml:lang="ja-jp">OpenType layout common table formats (OpenType 1.9) - 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:">PeterCon</anchor>, <time>2022-08-29T13:36:14.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/chapter2#features-and-lookups">https://docs.microsoft.com/ja-jp/typography/opentype/spec/chapter2#features-and-lookups</anchor-external></li><li>
<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="ja-jp">OpenType layout common table formats (OpenType 1.9) - 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:">PeterCon</anchor>, <time>2022-08-30T11:17:29.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/chapter2#lookup-table">https://docs.microsoft.com/ja-jp/typography/opentype/spec/chapter2#lookup-table</anchor-external></li><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> 
<cite xml:lang="ja-jp">OpenType layout common table formats (OpenType 1.9) - 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:">PeterCon</anchor>, <time>2022-08-30T11:42:01.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/chapter2#common-structures-for-contextual-lookup-subtables">https://docs.microsoft.com/ja-jp/typography/opentype/spec/chapter2#common-structures-for-contextual-lookup-subtables</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> 
<cite xml:lang="en-us">GSUB — Glyph Substitution Table (OpenType 1.9) - Typography | Microsoft Docs</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PeterCon</anchor>, <time>2022-08-13T05:25:57.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/en-us/typography/opentype/spec/gsub">https://docs.microsoft.com/en-us/typography/opentype/spec/gsub</anchor-external></li><li>
<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> 
<cite xml:lang="ja-jp"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GPOS</anchor> — Glyph Positioning Table (OpenType 1.9) - Typography | Microsoft Docs</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PeterCon</anchor>, <time>2022-09-04T12:39:10.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/gpos">https://docs.microsoft.com/ja-jp/typography/opentype/spec/gpos</anchor-external></li><li>
<anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[103]</anchor-end> 
<cite xml:lang="ja-jp"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSTF</anchor> — Justification Table (OpenType 1.9) - Typography | Microsoft Docs</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PeterCon</anchor>, <time>2022-09-08T09:23: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/opentype/spec/jstf">https://docs.microsoft.com/ja-jp/typography/opentype/spec/jstf</anchor-external></li></ul></refs></section><section><h1>意味</h1><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>GSUB</code> は <dfn>Glyph Substitution</dfn> の意です。
<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="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></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> 
<code>GPOS</code> は <dfn>Glyph Positioning</dfn> の意です。
<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="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;77</anchor-internal></src></p></section><section><h1>構造</h1><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>GSUB</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>の利用に関係する<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="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 
<code>GSUB</code>,
<code>GPOS</code>
とも似たような構造になっています。
末端のデータ等細部が微妙に違っているので注意が必要です。</p><p><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> 
どちらも、
まず対象となる<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:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</title></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>における <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> がいくつかあり、
その <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> に条件と処理が書かれているという構造です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="105" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[105]</anchor-end> 
<code>JSTF</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>について、
適用可能な調整がいくつかあるという構造です。
<code>JSTF</code>
も
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> を参照したり、含めたりできますが、
<code>GSUB</code> や <code>GPOS</code> とは構造が違います。</p></section><section><h1>処理</h1><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> 表示処理全体の中での位置は<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="60" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[60]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</title></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>参照。</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> 
<code>GSUB</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>(列)を<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>との対応関係を知れる)
必要があります。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>文字のレンダリング</anchor> </sw-see></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>GPOS</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:">JstfMax 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="159" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[159]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">shaping</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>GSUB</code>
が適用されないことがあるようです。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>連なり</anchor> </sw-see></p></section><section><h1>機能</h1><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> 
<code>GSUB</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>は<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:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</title></anchor>を記述できます。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>フォント機能</anchor> </sw-see></p><p><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:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</title></anchor>に対して、実施されるべき操作を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> として記述できます。</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> 
<code>GSUB</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>には同じ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">機能タグ</title></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>を複数個含められます。
<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:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</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>に合わせて違う <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor>
が適用されるようにできます。</p></section><section><h1>lookup</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="144" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[144]</anchor-end> 
<dfn>lookup</dfn> には<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="145" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[145]</anchor-end> 
<code>GSUB</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>GPOS</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>では、
それぞれの <dfn><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">LookupList</code></f></dfn> 内に任意個含められます。
<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="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;103</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="146" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[146]</anchor-end> <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">LookupList</code></f> 中の <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><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="147" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[147]</anchor-end> 同じ<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:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">OpenType</title></anchor>から参照するため</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="148" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[148]</anchor-end> 同じ<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:">lookup</anchor> から参照するため</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="149" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[149]</anchor-end> <code>JSTF</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>の提案から参照するため</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="150" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[150]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> 相互の適用順序を決めるため</li></ul><p>... に使われます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="151" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[151]</anchor-end> 
<code>JSTF</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>では、
各提案に行を長くする用と短くする用で各1つまで含められます。
<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="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;103</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="152" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[152]</anchor-end> 
同じ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> と呼ばれますが、
<code>GSUB</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>(列)の置換の記述のため、
<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:">OpenType表</title></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">lookupType</code></f>
が両者で違っています。</p><hr></hr><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> 
<code>GSUB</code> や <code>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:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</title></anchor>から利用する
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> 
を決定します。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> 選び方は<anchor>フォント機能</anchor> </sw-see></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> 
複数の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> を適用する場合、
適用順序は
<code>LookupList</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="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;12</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;67</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>
1つの 
<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>列を先頭から末尾まで処理し、
次の
<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="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;67</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>
ただし
<code>GSUB</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:">8</n>
は<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="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</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> 
<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>LookupList</code> 
中の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> の順序を決められます。
1つの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</title></anchor>に複数の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</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="66" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[66]</anchor-end> ただし、全体の処理において<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</title></anchor>ごとに複数回に分けて適用する場合もあり
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>フォント機能</anchor> </sw-see>、
その場合は<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="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[68]</anchor-end> 
同時に複数の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</title></anchor>を適用する場合、
それらの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> の<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>和集合</anchor><rt xmlns="http://www.w3.org/1999/xhtml">union</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="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;67</anchor-internal></src>
つまり重複した <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> があるときは、1回分だけ適用されます。</p><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:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</title></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="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;67</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> 
同じ <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>列に適用されるべきときはどうなるのでしょう。
適用対象の<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="167" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[167]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> には複数の subtable を含めることができます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> の順序は処理結果に影響しますが、
subtable の順序が影響するのかどうか (が明示的に決められているのかどうか)
よくわかりません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="168" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[168]</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:">Chrome</anchor> で実際に試してみると、
1つの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> に複数の subtable があるとき、
そのすべてのうち最初に一致するものが適用されるようで、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> の順序とは扱いが違うようです。
例えば subtables[0] に BC -&gt; X があり、
subtables[1] に AB -&gt; Y があって 
ABC が入力されたとき、 YC になるようです。
<time>2025-01-27T12:34:27.600Z</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="169" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[169]</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:">Chrome</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> で実際に試してみると、
同じ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> で異なる長さの候補があるとき、最短のものと一致します。
例えば AB -&gt; X, ABC -&gt; Y と置換されるとき、入力が ABC だと出力は XC になります。
これを避けるには lookups[0] に ABC -&gt; Y, lookups[1] に AB -&gt; X 
を入れることになります。
<time>2025-01-28T13:58:28.800Z</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="170" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[170]</anchor-end> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="169" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;169</anchor-internal> これは <code>GSUB</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:">4</n> の場合なのですが、
仕様書によると LigatureSet 内の先頭から先に優先されるようです。
従って同じ lookup, subtable でも ABC -&gt; Y を先に置けば ABC の出力は Y 
になるはず。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="171" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[171]</anchor-end> 
また別解として、 <code>GPOS</code> の nested contexts で長い方を先に選ばせたい時は、
先の subtable に長い方、後の subtable に短い方を指定すれば長い方に先に一致します。
逆にすると短い方にしか一致しません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="174" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[174]</anchor-end> 
複数の <code>GPOS</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>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>対に適用されるときの処置は、
仕様上明確ではありません。
実装によって違いがあるそうです。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Windows</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> ではすべてを加算した結果が適用されるようです。
<time>2025-04-05T05:09:28.500Z</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="175" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[175]</anchor-end> 
<code>GPOS</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>や <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> <var>F</var> が適用されないときだけ適用されるべき <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</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="176" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[176]</anchor-end> <code xmlns="http://www.w3.org/1999/xhtml">GSUB</code> で他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>に置き換えるなどの別の方法での対策が必要となります。</comment-p><hr></hr><p><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> 
<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>を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="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;77</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></p><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> 
各<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">substFormat</code></f>
や
<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">posFormat</code></f>
によって区別されます。
どの形式によるかは記述方法の違いによるストレージ効率で選べます。
<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="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;77</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>
<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> の挙動には直接影響しません。</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="102" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[102]</anchor-end> 
ただし<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</title></anchor>によっては実装状況が悪いのでこの形式でなければならない、
<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>があるようです。
各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</title></anchor>の項参照。</comment-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> 
とある入力が1つの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> に含まれる複数の条件に一致することは、
明確には認められても禁止されてもいないようです。
その場合の挙動も不明です。
どんな入力にも高々1回だけ一致するようにするべきと思われます。</p><hr></hr><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> 
は,
<code>lookupType</code>
と
<code>substFormat</code>
にもよりますが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の列の一致条件を3通り記述できます。すなわち、</p><ul><li><dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ruby xmlns="http://www.w3.org/1999/xhtml">後<rt>あと</rt></ruby><ruby xmlns="http://www.w3.org/1999/xhtml">戻<rt>もど</rt></ruby>り<rt xmlns="http://www.w3.org/1999/xhtml">backtrack</rt></rubyb></dfn>する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の0個以上の列</li><li><dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ruby xmlns="http://www.w3.org/1999/xhtml">入<rt>にゅう</rt></ruby><ruby xmlns="http://www.w3.org/1999/xhtml">力<rt>りょく</rt></ruby><rt xmlns="http://www.w3.org/1999/xhtml">input</rt></rubyb></dfn>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の1個以上の列</li><li><dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ruby xmlns="http://www.w3.org/1999/xhtml">先<rt>さき</rt></ruby><ruby xmlns="http://www.w3.org/1999/xhtml">読<rt>よ</rt></ruby>み<rt xmlns="http://www.w3.org/1999/xhtml">lookahead</rt></rubyb></dfn>する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の0個以上の列</li></ul><p><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>とします。
<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="72" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;72</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>の<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="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</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>の直後にあるべき<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="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</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>に進んで一致するかどうかの検査を繰り返します
<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="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;67</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;77</anchor-internal></src>。
<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="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> 
ただし、
<code>GPOS</code> の <code>lookupType</code> <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>の組に対して値を設定するもので、
常に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>は前の処理の第2<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="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;67</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="72" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;72</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;77</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="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> 1つ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> についての処理において、
<code xmlns="http://www.w3.org/1999/xhtml">GPOS</code> の組の指定の例外を除き、
<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="71" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[71]</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:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</title></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="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;67</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:">入力</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>の最後の<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:">lookup</anchor>
の
<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupFlag</code></f>
で記述されます。</p><ul><li><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:">lookup</anchor> の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupFlag</code></f> の
<dfn><code>IGNORE_BASE_GLYPHS</code></dfn>
(ビット1)
が指定されている場合、
<code>GDEF</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>で <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</n> (基底) とされた<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="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></li><li><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupFlag</code></f> の
<dfn><code>IGNORE_LIGATURES</code></dfn>
(ビット2)
が指定されている場合、
<code>GDEF</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>で <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>は無視します。
<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="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></li><li><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:">lookup</anchor> の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupFlag</code></f> の
<dfn><code>IGNORE_MARKS</code></dfn>
(ビット3)
が指定されている場合、
<code>GDEF</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>で <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">3</n> (マーク) とされた<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="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></li><li><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:">lookup</anchor> の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupFlag</code></f> の
<code>IGNORE_MARKS</code>
が指定されていない場合、<ul><li><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:">lookup</anchor> の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupFlag</code></f> の
<dfn><code>USE_MARK_FILTERING_SET</code></dfn>
(ビット4)
が指定されている場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> の <dfn><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">markFilteringSet</code></f></dfn>
を参照します。
<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="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src><ul><li>
<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> 
<dfn><code>MarkFilteringSet</code></dfn>
は
<code>uint16</code>
です。
第<var>i</var>ビットが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マークグリフ集合群</anchor>の第<var>i</var>番の集合を表すと思われます。</li><li>
<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> 
指定された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マークグリフ集合</anchor>に<em>ない</em><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="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></li><li>
<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> ここでいう<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク</anchor>は
<code>GDEF</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>で <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">3</n> (マーク) とされた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>を指すと思われます。</li></ul></li><li><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:">lookup</anchor> の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupFlag</code></f> の
<code>USE_MARK_FILTERING_SET</code>
が指定されていない場合、<ul><li><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:">lookup</anchor> の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupFlag</code></f> の
<dfn><code>MARK_ATTACHMENT_TYPE_MASK</code></dfn>
(ビット8 - ビット15)
が <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> でない場合、
この16ビットを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">級値</anchor>と解釈します。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク添付級</anchor>が指定された値では<em>ない</em><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="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src><ul><li><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> ここでいう<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク</anchor>は
<code>GDEF</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>で <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">3</n> (マーク) とされた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>を指すと思われます。</li></ul></li></ul></li></ul></li></ul><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> <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupFlag</code></f> には他に <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">RIGHT_TO_LEFT</code></f> 
<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>系の機能が3つあります。
<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>化の判定で適宜無視したりしなかったり、
といった条件を記述するために用意されているようです。</p><p><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> 
<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>だけでは不十分ということで追加されたのでしょうか。</p><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ級</anchor>に基づく無視は 
<code>GSUB</code>
<code>lookupType</code> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">6</n> と共にしばしば使われているようです。
<code>lookupType</code> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">6</n>
では一致した<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>
を適用することになりますが、
このとき<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>
を決めます
(<code>seqLookupRecords</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:">lookup</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> が適用されません。
ただし一致した<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>
を適用するときに、その <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> 
<code>GSUB</code>
<code>lookupType</code> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">4</n> (複数の<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>への置き換え)
での利用も禁止されているわけではありませんが、
その意味するところは定かではありません。
無視して読み飛ばした<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><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="177" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[177]</anchor-end> 
例えば<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基底グリフ</anchor> <var>B</var> と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マークグリフ</anchor> <var>M</var>, <var>N</var>
があるとして、
入力が</p><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="180" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[180]</anchor-end> <var>B</var>, <var>M</var></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="178" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[178]</anchor-end> <var>B</var>, <var>M</var>, <var>N</var></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="179" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[179]</anchor-end> <var>B</var>, <var>N</var>, <var>M</var></li></ul><p xmlns="http://www.w3.org/1999/xhtml">のどれであっても <var>B</var>, <var>M</var> を <var>C</var> に置き換えたいとします。
このとき無関係の <var>N</var> は邪魔です。 <var>N</var> を含めた置換パターンを用意するのは手間がかかる上に、
組み合わせが多いと爆発的に必要な条件数が増加します。</p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="181" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[181]</anchor-end> 
このとき mark filtering set で <var>M</var> を含み <var>N</var> は含まないよう指定すると、
<var>N</var>
はないものとして条件を書けます。</p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="182" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[182]</anchor-end> 
入力が <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="178" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;178</anchor-internal> と <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="179" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;179</anchor-internal> のどちらであっても、出力は <var>C</var>, <var>N</var> になります。
条件との一致判定で「無視」された <var>N</var> は消え去るわけではなく結果には残ります。</p></example><p><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> 
<code>GPOS</code> <code>lookupType</code> <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>の組に対する位置調整)
での利用も禁止されているわけではありませんが、
どう適用されるべきなのか明確ではありません。
第1グリフは適用対象の<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>が対象となり得ますから、
読み飛ばしとの相互作用をどうするべきか、
処理結果にいくつかの解釈が存在し得ます。</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> 
<code>GPOS</code> <code>lookupType</code> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">4</n>, <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">5</n>, <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">6</n> 
は付加する<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="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;77</anchor-internal></src>。</p><ul><li>
<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> 
<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:">4</n>
(Mark-to-Base Attachment Positioning, MarkBasePos)
では、
<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:">なりません<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="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;77</anchor-internal></src></li><li>
<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> 
<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:">5</n>
(Mark-to-Ligature Attachment Positioning, MarkLigPos)
では、
<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:">なりません<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="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;77</anchor-internal></src></li><li>
<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>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:">6</n>
(Mark-to-Mark Attachment Positioning, MarkMarkPos)
では、
付加する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マークグリフ</anchor> mark1 に対し、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>列を遡って基底となる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マークグリフ</anchor> mark2
を探します。
<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="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;77</anchor-internal></src></li></ul><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> 
<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">6</n> では <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupFlag</code></f> に応じて<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マークグリフ</anchor> mark2 を探します。
<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="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;77</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> 
<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">4</n> と <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">5</n> も読み飛ばしとの相互作用がどう扱われるのが想定される挙動なのか不明瞭です。</p><hr></hr><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>,
<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>uint16</code> なので、
2<sup>16</sup> - 1 が構造上の上限となります。
無視して読み飛ばす<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="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:">セキュリティー<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">文字のセキュリティー</title></anchor>の問題にもなり得ます。</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> 
実際上どれくらいの長さが必要なのでしょうかね。
16個では少し心もとない気がします。
128個だと過大な気がします。</p><hr></hr><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> 
<code>GSUB</code>
<code>lookupType</code> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">5</n> は <code>lookupType</code> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">6</n> に容易に書き換えられるようです。
<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">5</n> の利用例が少ないのは <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">5</n> の機能では不十分な場合が多いのでしょう。</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> 
<code>GPOS</code>
は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">カーニング</anchor>で
<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2</n> 
が使われていることが多いようです。
<code>GPOS</code>
<code>lookupType</code> 
<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</n>, <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2</n> しか対応していない実装もあります。</p><hr></hr><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:">lookup</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>
から参照されるものとがあります。</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:">入れ子</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> は 
<code>GSUB</code>
<code>lookupType</code> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</n> が多いですが、
<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2</n> の例もあります。</p><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> 
仕様書には<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">入れ子</anchor>にできる <code>lookupType</code> の制限は特にないようですが、
どれも適用できるのか不安感はあります。</p><p><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> 
<code>GSUB</code>
<code>lookupType</code> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">4</n>, <code>substFormat</code> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</n> 
を使った事例があります。
このとき入力の複数の隣接した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>が<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>に置き換えられることがあります。</p><p><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> 
もしその場合に<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> で使われる <code>sequenceIndex</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>のときどう処理されるべきなのか、
よくわかりません。</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>GSUB</code>
<code>lookupType</code> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</n>, <code>substFormat</code> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2</n>
しか対応していないこともあるようです。</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:">lookup</anchor> と <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;17</anchor-internal> の挙動の関係も若干不明瞭です。
<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="72" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;72</anchor-internal></src>
のですが、どういうイメージなのでしょう。</p><p><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>を二重以上深くできるのか不明です。仕様書では特に禁止はしていませんが。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="154" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[154]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JstfMax lookup</anchor> は <code>GPOS</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupType</code></f>
のうち contextual positioning lookups 以外を使えます。 <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="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;103</anchor-internal></src>
つまり<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> するものは認められていないようです。
(指定された場合にどう処理するべきなのかは不明。)</p></section><section><h1>文脈</h1><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> 
<code>GSUB</code>,
<code>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>もあります。</p><p><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> 
といっても使わないで済むのは<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>GSUB</code> や <code>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>も、<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>など、
高品質
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(現在の計算機環境では標準的に実現されているレベルも含む。)</weak>
な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字のレンダリング</anchor>にはそうした機能が必要となります。</p></section><section><h1><code>GSUB</code> 代替グリフの選択</h1><p><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>
<code>GSUB</code> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> (群) を適応する処理は、
原則的に入力が1つの<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>列です。</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> 
ただし一部の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">lookupType</code></f> (を使う一部の<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>GSUB</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> の適用結果に複数の候補を示すことが出来ます。</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="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:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</title></anchor> <code>salt</code> は異なるデザインの多数の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>を提示できます。</p></example><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> 
複数の結果になるのが最後の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> なら複数通りの最終出力の可能性があり得ますし、
最後でない <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> ならそれ以降の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> で最終出力の違いが更に広がっていく可能性があります。
1つの<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="94" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[94]</anchor-end> 
<cite><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OpenType</anchor></cite> 仕様書の<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>は
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTP</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="95" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[95]</anchor-end> 
1度限りの<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><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="96" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[96]</anchor-end> 
1つは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフID</anchor>など<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>を直接特定する方法です。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>グリフ</anchor> </sw-see><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="101" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[101]</anchor-end> この場合 <code>GSUB</code> は編集中の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>検索の手段として用いただけで、
以後の参照には関係しないことになります。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="97" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[97]</anchor-end> 
もう1つは得られた複数の候補の中で第何番目かを指定する方法です。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="98" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[98]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS Fonts</anchor> ではこの方法が使われています。</li></ul></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="99" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[99]</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>も前のものとの「同一性」が保たれる保証はないので、
あまり気にしても仕方がないかもしれません。互換性を気にする<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="100" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[100]</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:">グリフID</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:">CID</anchor> が使える (そして<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">標準化</anchor>された <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CID</anchor> が振られている)
なら別ですが...</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="183" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[183]</anchor-end> 
<code>jp78</code>
では、最初の選択肢が好ましい形であることが定められています。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>jp78</anchor> </sw-see></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="155" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[155]</anchor-end> 
<cite xml:lang="ja">IllustratorとInDesignでaaltのルールが異なる件 - 帰ってきた💫Unicode刑事〔デカ〕リターンズ</cite>, <time>2022-10-10T08:01:48.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://moji-memo.hatenablog.jp/entry/20070720/1184917140">https://moji-memo.hatenablog.jp/entry/20070720/1184917140</anchor-external></p><blockquote><p>Illustratorの「aalt 0」って、InDesignで言うところの「aalt 1」(CID順で1番目の異体字)のことだと思うのだが、なぜ別のルールを採用しているのだろう。</p></blockquote></section><section><h1><code>JSTF</code> の調整</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="106" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[106]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">justification</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>に置き換えたりします。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="107" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[107]</anchor-end> 
<code>JSTF</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="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;103</anchor-internal></src>。
<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:">justification</anchor> を実装できます。
<cite><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OpenType</anchor></cite> は具体的な <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">justification</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="108" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[108]</anchor-end> 
<code>JSTF</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>に対して、
適用可能な提案のリストが含まれます。
リスト中の各提案は、 priority level (影響の小さい順、「悪くない」順)
に並べて格納します。
適用時には、初めの提案から順に必要な提案まで適用していきます。
<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="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;103</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="126" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[126]</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="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;103</anchor-internal></src></p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="127" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[127]</anchor-end> line shrinkage 用の <code>GSUB</code> で有効にする <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> 群</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="128" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[128]</anchor-end> line shrinkage 用の <code>GSUB</code> で無効にする <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> 群</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="129" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[129]</anchor-end> line shrinkage 用の <code>GPOS</code> で有効にする <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> 群</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="130" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[130]</anchor-end> line shrinkage 用の <code>GPOS</code> で無効にする <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> 群</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="141" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[141]</anchor-end> line shrinkage 用の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JstfMax lookup</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="131" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[131]</anchor-end> line extension 用の <code>GSUB</code> で有効にする <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> 群</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="132" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[132]</anchor-end> line extension 用の <code>GSUB</code> で無効にする <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> 群</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="133" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[133]</anchor-end> line extension 用の <code>GPOS</code> で有効にする <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> 群</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="134" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[134]</anchor-end> line extension 用の <code>GPOS</code> で無効にする <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> 群</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="142" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[142]</anchor-end> line extension 用の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JstfMax lookup</anchor></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="135" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[135]</anchor-end> <code>GSUB</code> や <code>GPOS</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:">表<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">OpenType表</title></anchor> の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">LookupList</code></f>
における<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">index</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="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;103</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="143" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[143]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JstfMax lookup</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">justify lookup</anchor>) は
<code>JSTF</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="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;103</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="111" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[111]</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="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;103</anchor-internal></src></p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="139" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[139]</anchor-end> <var>フォント</var>を入力の<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="112" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[112]</anchor-end> <var>原グリフ列</var>を入力の<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="113" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[113]</anchor-end> <var>機能群</var>を入力の<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="137" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[137]</anchor-end> <var>用字系</var>を入力の<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="138" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[138]</anchor-end> <var>言語系</var>を入力の<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="136" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[136]</anchor-end> <var>要望</var>を入力の <i>line shrinkage</i> または <i>line extension</i> 
とします。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="116" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[116]</anchor-end> <var>提案群</var>を<var>フォント</var>の <code>JSTF</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>において<var>用字系</var>と<var>言語系</var>から決まる提案群とします。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="114" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[114]</anchor-end> <var>提案</var>を、空の提案に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="115" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[115]</anchor-end> 繰り返し、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="123" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[123]</anchor-end> <var>lookup群</var>を、 
<var>フォント</var>から<var>機能群</var>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> を集めて整列した結果に設定します。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">variable font</anchor> の変更を踏まえて実際に適用される <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</anchor> を選びます。)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="124" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[124]</anchor-end> <var>lookup群</var>を<var>提案</var>と<var>要望</var>に基づき編集します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="117" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[117]</anchor-end> <var>グリフ列</var>を、<var>原グリフ列</var>に<var>lookup群</var>を適用した結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="118" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[118]</anchor-end> <var>グリフ列</var>の長さが適当と判断される場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="119" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[119]</anchor-end> <var>グリフ列</var>を返してここで停止します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="121" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[121]</anchor-end> <var>提案群</var>の次の提案がもうない場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="122" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[122]</anchor-end> <var>グリフ列</var>を返してここで停止します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="120" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[120]</anchor-end> <var>提案</var>を、<var>提案群</var>の次の提案に設定します。</li></ol></li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="125" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[125]</anchor-end> 
実際には1つの<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:">機能<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">フォント機能</title></anchor>はすべて同時に適用するのではなく <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">shaping</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:">HTML</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>に入っていること、
その<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="161" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[161]</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:">shaping</anchor> の設計や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">justification</anchor> 
周りのアルゴリズムに依存します。
しかし <code>JSTF</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="153" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[153]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JstfMax lookup</anchor> で設定された値の利用については<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ位置決定</anchor>を参照。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="109" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[109]</anchor-end> 
<code>JSTF</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">extender glyph</rt></rubyb>のリストも指定できます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">justification</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="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;103</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="110" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[110]</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:">kashida</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="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;103</anchor-internal></src></p></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="140" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[140]</anchor-end> 
<cite>OpenType</cite> 仕様としてはリストを指定できるだけで、その使い方は決められていません。</p></section><section><h1>関連</h1><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>GPOS</code> による<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">添付点</anchor>の情報を <code>GDEF</code> に要約して記述することが出来ます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="156" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[156]</anchor-end> 
似たもので組み合わせを指定するだけの <code>MERG</code> があります。</p></section><section><h1>実例</h1><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> 各 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">feature</anchor> の利用例は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">font feature</anchor> 参照。</p><p><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> 参考: <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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> 
<cite><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Nishiki-teki</anchor></cite>
は
<code>GSUB</code>,
<code>GPOS</code>
ともに
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">script</anchor>
が多数あって、
<code>langSysRecords</code>
をも複数使っています。</p><p>また
<code>GSUB</code>,
<code>GPOS</code>
ともに同じ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">feature</anchor> tag の別の feature list item があります。</p><ul><li><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 xml:lang="ja"><strong>[</strong>こかげ<strong>]</strong> フォント : Nu みちしるべ</cite>, <time>2020-11-05T13:34:49.000Z</time>, <time>2022-08-18T05:18:48.827Z</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://kokagem.sakura.ne.jp/font/michishirube/">http://kokagem.sakura.ne.jp/font/michishirube/</anchor-external><ul><li><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> <cite xml:lang="ja">「Nu みちしるべ」フォントの中身を見る - omuronの備忘録</cite>, <time>2022-08-18T05:19: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://omuron.hateblo.jp/entry/2020/11/07/142500">https://omuron.hateblo.jp/entry/2020/11/07/142500</anchor-external></li></ul></li></ul><ul><li><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> <cite xml:lang="en">GitHub - ayaka14732/FanWunMing: A Simplified-Chinese-to-Traditional-Chinese font based on GenYoMin, which can handle the one-to-many problem | 繁媛明朝是基於源樣明體開發的簡轉繁字型,能處理一簡對多繁</cite>, <time>2022-08-18T05:28:22.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://github.com/ayaka14732/FanWunMing">https://github.com/ayaka14732/FanWunMing</anchor-external><ul><li><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> <cite xml:lang="zh-HK">正確實現簡轉繁字型</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">三日月綾香</anchor>, <time>2022-07-05T04:28:59.000Z</time>, <time>2022-08-18T05:29:34.570Z</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://ayaka.shn.hk/s2tfont/hant/">https://ayaka.shn.hk/s2tfont/hant/</anchor-external></li></ul></li></ul><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> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;42</anchor-internal>
<code>GSUB</code>
1, 2; 3, 1
<code>GPOS</code>
1, 1; 1, 2; 9, 1 (2, 1)</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> 
<cite xml:lang="en">โครงการอักษรอีสาน</cite>, <time>2022-03-22T07:25:24.000Z</time>, <time>2022-08-18T05:37:35.328Z</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://linux.thai.net/~thep/esaan-scripts/">https://linux.thai.net/~thep/esaan-scripts/</anchor-external></p><p><cite>Khottabun</cite></p><p><code>GSUB</code>
2, 1; 4, 1; 5, 2; 6, 1; 6, 2</p><p>(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">入れ子</anchor>の lookup が 2, 1; 4, 1)</p><p><code>GPOS</code>
4, 1; 6, 1</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="157" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[157]</anchor-end> <cite xml:lang="zh-HK">正確實現簡轉繁字型</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">三日月綾香</anchor>, <time>2023-04-11T04:19:14.000Z</time>, <time>2023-07-03T14:02:11.747Z</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://ayaka.shn.hk/s2tfont/hant/">https://ayaka.shn.hk/s2tfont/hant/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="158" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[158]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="157" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;157</anchor-internal> <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>GSUB</code> + <code>trad</code>
を使う。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="160" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[160]</anchor-end> 
<cite xml:lang="ja">Yu Gothic UIに text-spacing-trim を適用するとバグる</cite>, <time>2024-03-25T13:44:45.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://zenn.dev/inaniwaudon/scraps/f224417d4c51ee">https://zenn.dev/inaniwaudon/scraps/f224417d4c51ee</anchor-external></p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="163" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[163]</anchor-end> <cite xml:lang="en">Some suggestions of symbols in TC · Issue #73 · adobe-fonts/source-han-serif · GitHub</cite>, <time>2024-10-15T14:11:19.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://github.com/adobe-fonts/source-han-serif/issues/73">https://github.com/adobe-fonts/source-han-serif/issues/73</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="162" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[162]</anchor-end> <cite xml:lang="en">Incorrect placement of bopomofo tone marks in vertical writing mode · Issue #532 · harfbuzz/harfbuzz · GitHub</cite>, <time>2024-10-15T13:59:37.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://github.com/harfbuzz/harfbuzz/issues/532">https://github.com/harfbuzz/harfbuzz/issues/532</anchor-external></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="166" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[166]</anchor-end> <cite xml:lang="ja">フォントでTUT-Code - にせねこメモ</cite>, <time>2024-10-24T12:52:34.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://nixeneko.hatenablog.com/entry/2015/12/03/000000">https://nixeneko.hatenablog.com/entry/2015/12/03/000000</anchor-external></p></section><section><h1>歴史</h1><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> 
<cite xml:lang="en">opentype-layout/proposals at master · OpenType/opentype-layout · GitHub</cite>, <time>2022-08-17T07:14:06.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://github.com/OpenType/opentype-layout/tree/master/proposals">https://github.com/OpenType/opentype-layout/tree/master/proposals</anchor-external></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>Spec for Thai OpenType Creation</cite>, <time>2022-03-22T07:23:44.000Z</time>, <time>2022-08-18T02:34:48.288Z</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://linux.thai.net/~thep/th-otf/">https://linux.thai.net/~thep/th-otf/</anchor-external></p><ul><li>
<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>Manipulating OpenType Lookups — FontForge 20220308 documentation</cite>, <time>2022-07-16T19:58:44.000Z</time>, <time>2022-08-13T05:26:05.464Z</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://fontforge.org/docs/ui/dialogs/lookups.html">https://fontforge.org/docs/ui/dialogs/lookups.html</anchor-external></li></ul><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> <cite xml:lang="ja">GSUB テーブル (1) - ScriptList</cite>, <time>2022-08-13T05:26: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://aznote.jakou.com/prog/opentype/17_gsub1.html">https://aznote.jakou.com/prog/opentype/17_gsub1.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="164" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[164]</anchor-end> <cite xml:lang="ja">OpenTypeフォントでFizzBuzz(その2) - にせねこメモ</cite>, <time>2024-10-24T12:22:19.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://nixeneko.hatenablog.com/entry/2015/05/10/234628">https://nixeneko.hatenablog.com/entry/2015/05/10/234628</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="165" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[165]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="164" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;164</anchor-internal> 置換とは<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="172" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[172]</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:">Chrome</anchor> でも <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor>
でも、
<code>GSUB</code> で漢字、漢字や仮名、仮名の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合字</anchor>化はできるのに、
なぜか漢字、仮名や仮名、漢字は置換されません。
<time>2025-02-01T05:34:28.500Z</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="173" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[173]</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></section></body></html>