<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="105" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[105]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> の<dfn>タグ文字</dfn>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor>
独特の特殊な意味を持つ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</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><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">The Unicode Standard</anchor>, Version 13.0 - ch23.pdf</cite>, <time>2020-03-09T17:53:52.000Z</time>, <time>2020-12-13T07:28:31.667Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.unicode.org/versions/latest/ch23.pdf#G27446">https://www.unicode.org/versions/latest/ch23.pdf#G27446</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <cite><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">The Unicode Standard</anchor>, Version 13.0 - ch23.pdf</cite>, <time>2020-03-09T17:53:52.000Z</time>, <time>2020-12-18T09:45:06.805Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.unicode.org/versions/latest/ch23.pdf#G30110">https://www.unicode.org/versions/latest/ch23.pdf#G30110</anchor-external></li></ul></refs></section><section><h1>意味</h1><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>のほとんど、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</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:">ASCII</anchor>
ベースの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>のタグを、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor>
の通常の文字で記述したテキスト内容とは区別した形で埋め込むことが出来ます
<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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src>。</p></section><section><h1>符号位置</h1><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> 
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>タグ文字</anchor><rt xmlns="http://www.w3.org/1999/xhtml">tag character</rt></rubyb></dfn>は、
<dfn><code>U+E0000</code></dfn> - <dfn><code>U+E007F</code></dfn>
です。この範囲の
<dfn>Tags</dfn>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ブロック</anchor>内に、
既に97文字が割り当てられています。
<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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</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="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> 
<dfn><sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E0020</sw-cc></dfn> - <dfn><sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E007E</sw-cc></dfn>
の95文字は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</anchor> <sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+0020</sw-cc> -  <sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+007E</sw-cc>
の95文字に相当するもので、
16進数下2桁がそのまま対応付けられています。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</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><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="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <code>Tags</code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ブロック</anchor>
<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://chars.suikawiki.org/set/%24unicode%3ABlock%3ATags">https://chars.suikawiki.org/set/%24unicode%3ABlock%3ATags</anchor-external></li></ul></refs></section><section><h1>特性</h1><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> 
<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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</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:">case folding</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:">case folding</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="96" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[96]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>のように<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>で記述される値が本来
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII大文字・小文字不区別</anchor>のときは、
既存の仕組みによらずに独自に正規化が必要となります。</p><p><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ETS</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><section><h1>構文</h1><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>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</anchor>に対応する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>に置き換えて、
先頭に<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ識別文字<rt xmlns="http://www.w3.org/1999/xhtml">tag identification character</rt></rubyb></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>の<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">種別<rt xmlns="http://www.w3.org/1999/xhtml">type</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ</anchor>の種別には、<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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="81" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[81]</anchor-end> 
<cite>The Unicode Standard</cite>
は将来的な他の種別の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ</anchor>を想定した規定が含まれていたものの、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>固有の規定と混ざっていて明確な区別はありませんでした。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</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><ul><li><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> 新たな<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ識別文字</anchor>は <code>Tags</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ブロック</anchor>で未割当の
<code>U+E0000</code>, <code>U+E0002</code> - <code>U+E001F</code>
が使われると予想されますが、明言されていませんでした。</li><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> 新たな<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>方式で低コストに追加可能な実装手法を採るのも困難でした。</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> タグが使われるとタグ値という1つの状態を持つことが想定されたと規定から読み取れますが、
仮に将来他の用途のタグが追加されたとして、
それで十分といえるのかは不透明でした。</li></ul><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> 
<dfn>タグ</dfn>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグ<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">Unicode言語タグ</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><figure class="railroad"><figcaption><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ</anchor></figcaption><ol><li>|<ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグ</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">全取り消しタグ</anchor></li></ol></li></ol></figure><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> 
<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>の直前まで続くものとされ、
終端を表す特別な印はありませんでした。
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ引数<rt xmlns="http://www.w3.org/1999/xhtml">tag-argument</rt></rubyb></dfn>は、
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>です。
<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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><figure class="railroad"><figcaption><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ引数</anchor></figcaption><ol><li>+<ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor></li></ol></li></ol></figure><hr></hr><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> 
<dfn><code>U+E007F</code></dfn> <dfn><code class="charname" xml:lang="en">CANCEL TAG</code></dfn>
(<dfn><code>tag-cancel</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:">文字列</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</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="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[50]</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:">HTML</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> には <code xmlns="http://www.w3.org/1999/xhtml">lang=&quot;&quot;</code> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空文字列</anchor>) 
のような構文が後に追加されたのですが、
確かに
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF言語タグ</anchor>自体にはそのような構文がないことから想像されるように、
当時はその必要性があまり意識されていなかったのでしょう。</comment-p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ識別文字</anchor>の後に <code>U+E007F</code>
を使うと、
当該種別のタグ値だけを取り消します。
例えば
<code>&lt;<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E0001</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E007F</anchor>&gt;</code>
は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src>
現在規定されているのは、
<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="52" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[52]</anchor-end> 
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">全取り消しタグ<rt xmlns="http://www.w3.org/1999/xhtml"><code>all-tag-cancel</code></rt></rubyb></dfn>:
<code>U+E007F</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></li></ul><figure class="railroad"><figcaption><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:">全取り消しタグ</anchor></figcaption><ol><li><code>U+E007F</code></li></ol></figure><hr></hr><p><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> 
<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><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="139" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[139]</anchor-end> 例えば「{日本語}{日本語}abc」のような意味のない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日本語</anchor>の指定は禁止されていません。</p></example><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="140" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[140]</anchor-end> 例えば「{日本語}{タイ語}abc」のような意味のない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日本語</anchor>の指定は禁止されていません。</p></example><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="141" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[141]</anchor-end> 例えば「{日本語}{取消}abc」のような意味のない<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="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[86]</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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;49</anchor-internal>)
によれば、それも認められていたと解するべきでしょうか。</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="142" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[142]</anchor-end> 例えば「{日本語}abc{取消}{取消}abc」のような意味のない取消し指定は禁止されていません。</p></example><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="143" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[143]</anchor-end> 例えば「{取消}abc」のような意味のない取消し指定は禁止されていません。</p></example><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> 
<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="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>で定義される<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:">text stream</anchor> では <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">stream</anchor> 末端。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end> 
<code>U+E007F</code> <code class="charname" xml:lang="en">CANCEL TAG</code>
を使った取り消しの位置</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> 
同じ種別の次の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ</anchor>の直前</li><li><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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="70" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;70</anchor-internal>)</li></ul><p>... まで継続します。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</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="72" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[72]</anchor-end> つまり<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ</anchor>の効果は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>依存で、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>を知らずに正しく処理することができません。</comment-p><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="112" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[112]</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:">Unicode言語タグ</anchor>は有用なはずなのに、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>依存だと放り投げることでその有用性を自ら毀損しているような。。。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</anchor-end> 
同じ種別の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</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="113" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[113]</anchor-end> <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>の <code xmlns="http://www.w3.org/1999/xhtml">lang=&quot;&quot;</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:">Unicode言語タグ</anchor>では起こらないということです。</comment-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:">タグ</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><p><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> 
この「goto型」の状態制御は、先頭から順に表示していくだけの超古典的な処理には実装しやすいのでしょうが、
様々な<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="132" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[132]</anchor-end> 
例えば「{日本語}漢漢」という文字列の見かけ上の2文字目に「{台湾華語}漢」
を挿入したいとします。</p><p xmlns="http://www.w3.org/1999/xhtml"><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> 
そのまま普通に実行すると
「{日本語}漢{台湾華語}漢漢」になってしまい、
見かけ上の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>に変わってしまいます。</p><p xmlns="http://www.w3.org/1999/xhtml"><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> 
そこで <sw-cn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E007F</sw-cn> を使って取消したくなりますが、それだと
「{日本語}漢{台湾華語}漢{取消}漢」になってしまい、
見かけ上の3文字目は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日本語</anchor>から「言語なし」に変わるので問題は解決していません。</p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="135" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[135]</anchor-end> 
正しく
「{日本語}漢{台湾華語}漢{日本語}漢」
にするには挿入位置の言語を直近のタグまで遡って調べて、挿入位置の後ろに新たに挿入しなおす、
という面倒な処理が必要になります。</p></example><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="136" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[136]</anchor-end> 
<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:">bidi</anchor> の制御文字のように 「push/pop型」
で
「{日本語}漢{台湾華語}漢{pop}漢」
と表せるなら幾分楽になったでしょうに。</comment-p><hr></hr><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> 
ここまでの伝統的な用法の他に、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ETS</anchor> 構文があります (<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="146" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;146</anchor-internal>)。</p></section><section><h1>レンダリング</h1><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:">タグ文字</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></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:">タグ文字</anchor>を相当する
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>で
(おそらくは体系的な変化を加えて通常の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</anchor>と区別できる形にして)
表示するのが<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">よいです<rt xmlns="http://www.w3.org/1999/xhtml">advisable</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</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="64" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[64]</anchor-end> 
そんな気の利いたデバッグツールが実在するのかは不明。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="63" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[63]</anchor-end> 
しかし<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>の<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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</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="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>の16進下4桁が
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</anchor>と一致することを言いたいのでしょう。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">16進数</anchor>くらい暗記してるでしょということでしょうかw
(まあ多少の経験を積んだ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">技術者</anchor>なら実際それくらい覚えてきますけどwww)</comment-p><p><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:">ETS</anchor> については別途の規定があります。</p><ed xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"></ed></section><section><h1>処理</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>を使うと、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ</anchor>を
本来の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src>。</p><delete 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="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:">絵文字</anchor>の記述に流用されてしまったので、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>は通常のテキスト内容としても使われるようになってしまい、
それほど簡単ではなくなりました。</p></delete><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:">Unicode</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><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:">応用</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">should</rt></rubyb>です。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>は使用するべきではないとされますが (<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="53" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;53</anchor-internal>)、
使わなければならない場合には、
<cite>The Unicode Standard</cite>
に列挙された実装上の諸問題を検討して、
完全に対応していない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ</anchor>をどう扱うかを決める<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べき<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>です。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="66" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[66]</anchor-end> 
<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">should</rt></rubyb>です。
一方<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ランダムアクセス</anchor>は厄介で、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">テキスト</anchor>の現在の状態は直前の<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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</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="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[67]</anchor-end> 
<cite xmlns="http://www.w3.org/1999/xhtml">The Unicode Standard</cite>
は、そういう例外はあってもテキスト編集しないなら<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ</anchor>によってそう難しいことにはならない
<src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src>、
としていました。
(この1点だけで十分難しい事態なようですが...)</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:">タグ</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></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:">タグ</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>を放置する編集操作は認める<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきではありません<rt xmlns="http://www.w3.org/1999/xhtml">should not</rt></rubyb>。
組になっていない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ</anchor>は、
送信や保存の操作の前に捨てる<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べき<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>です。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</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:">Unicode言語タグ</anchor>を無視しない実装は、
不正なタグの受信に備えなければなりません。
不正なタグや組になっていないタグを受信したら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>を<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なし<rt xmlns="http://www.w3.org/1999/xhtml">NONE</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><hr></hr><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>自体は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">line breaking</anchor>,
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">character shaping</anchor>,
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">character joining</anchor>,
その他の format or layout properties
に影響しません。
<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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><hr></hr><p><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> も <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> も、</p><blockquote><pre class="HTML">一&amp;#xe0001;&amp;#xe006a;&amp;#xe0061;&amp;#xe007f;</pre></blockquote><p><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> のような文字列を与えると、<sw-ch xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一</sw-ch>は表示しても、
その続きを表示しません。<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-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E0001</sw-cc> で1文字扱い、残りで1文字扱い2文字扱いします。
なんでこんな変な挙動になるんでしょう。</p><p><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> だと<sw-ch xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一</sw-ch>とその後の零幅2文字は選択でもその通りの動きをします。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> も普通のフォントだとそうですが、
<sw-ch xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一</sw-ch>とその続きが <code>GSUB</code> で処理対象になっていると、
<sw-ch xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一</sw-ch>とその続きがその字形を3等分するような選択の挙動に変わります。
(<code>GSUB</code> のグリフ置換が起こらない場合であってもです。
同じフォントに含まれ処理対象になるかどうかが影響するのでしょうか。)
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> にはこの挙動はありません。)
<time>2024-10-24T08:02:04.900Z</time></p><p><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> のこの挙動、<sw-ch xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一</sw-ch>より前に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>がある場合も<sw-ch xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一</sw-ch>を構成するように分割されます。
(<code>GSUB</code> で<sw-ch xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一</sw-ch>より前に戻り読みしているわけでもないのに。つまり
<code>GSUB</code> で処理される対象になっていることまでが条件で(?)処理対象になっているグリフ列であることまではこの挙動が発生する条件には入っていません。)</p><p><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> 
<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:">タグ文字</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>は表示されないものの、
<code>GSUB</code> による置き換えには寄与する。グリフの置き換えがあっても<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>由来グリフとそれ以外由来グリフはちゃんと追跡されていて、
以外由来グリフが増えたりしても、それらはちゃんと表示され、
<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="119" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[119]</anchor-end> 
<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> も、 <sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E0001</sw-cc> や <sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E007F</sw-cc> には <code>GSUB</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="120" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[120]</anchor-end> 
んー <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="119" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;119</anchor-internal> の挙動はもっと複雑で、ただ単にそうしても表示はされなくて、
<sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E0001</sw-cc> と <sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E0076</sw-cc> に同時に置換を発生させると
<sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E0001</sw-cc> だけ表示されるような謎の現象が起こる。
<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> でも。</p><p><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> 
<sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E0001</sw-cc> と <sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E0076</sw-cc> の両方を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフID</anchor> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n>
にすると、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> では <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> が1つだけ表示される。これは一貫した挙動。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> ではそれだけ次のフォント候補に fallback して表示する。</p><p><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> は <code>GSUB</code> で <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> に置き換えるとその部分の文字列を次のフォント候補で再評価させられる。
次のフォントに <code>GSUB</code> があればそれも適用される。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> だと次のフォント候補には進まない。ここの挙動がやや謎で、
通常の文字は <code>GSUB</code> なしの <code>cmap</code> から決まるグリフになり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>は <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> (<code>cmap</code> から決まるグリフでなく) になる。</p><p><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> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="122" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;122</anchor-internal> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> で <code>cmap</code> から決まるグリフを <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n>
にしておくと、次のフォント候補に進む。しかし<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>が前後にあってもそれは認識されない
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>は <code>cmap</code> から決まるグリフが <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> ではないから?
それも <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> にすれば結果が変わるのかもしれないが、
そうすると <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> の連続になって <code>GSUB</code> を書くのが困難なんだよな)。</p><p><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">iPhone</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Safari</anchor> は挙動が全然違って、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>の多く (なぜか全部ではない?)
はグリフが表示されるが <code>GSUB</code> は反映されない。謎が多い。</p><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> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="124" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;124</anchor-internal> <code>GSUB</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="126" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[126]</anchor-end> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="125" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;125</anchor-internal> <sw-cn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E0001</sw-cn> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>があっても<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">レンダリング</anchor>されないで次のフォント候補に進み、
それを含む <code>GSUB</code> 置換規則があっても無視されるらしい。他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>は通常の文字と同じ用にレンダリングと
<code>GSUB</code> の対象になる。しかし <sw-cn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E0001</sw-cn> も最終的には次のフォントでレンダリングされているわけで、何がいけないのかが謎。</p><p><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> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="126" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;126</anchor-internal> <code>GSUB</code> なしで <code>cmap</code> だけのフォントで試してみると普通の文字扱いになるのは
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>の 0-9 と a-z と <sw-cn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E007F</sw-cn> だけ。その他は零幅で字形は表示されるものとされないものと次のフォント候補に行くものがあり、変なところに表示されるものもあってわけがわからない。</p><p><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> 
国旗絵文字用なのかとも思うけど <sw-ch xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">-</sw-ch> が入ってないんだよなあ</p><p><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> 
lookup の chained substitution の index の数え方が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</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:">Safari</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="130" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[130]</anchor-end> 
<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:">タグ文字</anchor>のそれぞれ一部が入った<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>を
<code>font-family</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>を選ばせることができない。
<code>cmap</code> で指定された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>の有無や
<code>unicode-range</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>の有無が寄与していないような。
でも
<code>unicode-range</code> がまったく効いていないというわけでもなく、
それが皆無だとそもそもその<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>が選ばれなかったりもするので、
挙動がよくわからない。
<time>2024-10-25T11:39:17.100Z</time></p><p><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 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:">基底文字</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>が続くものを <code>GSUB</code>
で置換するものが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">横書き</anchor>では機能していても、<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><section><h1>言語タグ</h1><p><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> 
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグ識別文字<rt xmlns="http://www.w3.org/1999/xhtml">language tag identification character</rt></rubyb></dfn>
<dfn><code>U+E0001</code></dfn> <dfn><code class="charname" xml:lang="en">LANGUAGE TAG</code></dfn>
(<dfn><code>language-tag-introducer</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:">言語タグ</anchor>であると識別します。
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグ<rt xmlns="http://www.w3.org/1999/xhtml">language tag</rt></rubyb><title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">Unicode言語タグ</title></dfn>は、
<code>U+E0001</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><figure class="railroad"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="90" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[90]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグ</anchor></figcaption><ol><li><code>U+E0001</code></li><li>|<ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグ引数</anchor></li><li><code>U+E007F</code></li></ol></li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> 
<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">value</rt></rubyb> <dfn><code>language-tag-arg</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:">BCP 47</anchor>
の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF言語タグ</anchor>であって、
登録されたタグか、
<code>x-</code>
から始まる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>定義のタグのみを用います。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF言語タグ</anchor>は
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字列</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><note xmlns="urn:x-suika-fam-cx:markup:ietf:html:3:draft:00:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="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:">IETF言語タグ</anchor>の仕様として、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor>
の改訂を反映して
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 1766</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>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3066</anchor> (or its successors) <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="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;27</anchor-internal></src>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4646</anchor> (or its successors)、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BCP 47</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src>
と参照先が変わっていきました。</p><p xmlns="http://www.w3.org/1999/xhtml"><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>も含まれていました。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>IETF言語タグ</anchor> </sw-see>
しかし
<cite>The Unicode Standard</cite>
は参照先を変更しただけで、
内容の変化に応じた規定内容の変更までは行っていないようです。</p><p xmlns="http://www.w3.org/1999/xhtml"><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> 
登録されたタグまたは <code>x-</code> という限定は
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2482</anchor>
時代から変わっていませんが、
登録の考え方は歴代
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF言語タグ</anchor>仕様で少しずつ違っていますが、
それも規定に反映されていません。
それが想定通りなのか、
それとも誰も使っていないのでいちいちチェックしていないものなのか。</p></note><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:">IETF言語タグ</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>を使うことが<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>推奨</anchor><rt xmlns="http://www.w3.org/1999/xhtml">recommended</rt></rubyb>されます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src>
明記されていませんが、
処理側は
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF言語タグ</anchor>と同じく
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字・小文字不区別</anchor>で対応しなければならないということでしょう。
なおこの推奨は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BCP 47</anchor> 側の推奨される表記法とは一致していません。</p><p><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:">Unicode言語タグ</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:">IETF言語タグ</anchor>の構文は組み込まれていません。
まず
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>として構文を解釈して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ引数</anchor>を取り出した上で、
それが更に
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF言語タグ</anchor>として構文的に正しいかどうかを見ることになります。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF言語タグ</anchor>としての構文的な正しさ如何は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor>
の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ</anchor>の埋め込みの構造の決定には関与しないということでしょう。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="87" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[87]</anchor-end> 
既に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>で記述されたのと同じ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF言語タグ</anchor>の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</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="88" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[88]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語情報</anchor>によって違う処理を適用する場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>の指定を境界とみなして、
そこで分割してそれぞれの部分文字列に対してその処理を適用しようと考えるかもしれません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>が毎回必ず異なる
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF言語タグ</anchor>を指定してあるとすればそれでいいのですが、
同じ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF言語タグ</anchor>が指定されているのにそこで分割してしまうと、
分割しないで処理を適用した場合と違う結果になるおそれがあります。</comment-p><hr></hr><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>付けの仕組みは、
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>非推奨</anchor><rt xmlns="http://www.w3.org/1999/xhtml">deprecated</rt></rubyb>で、
使う<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきではありません<rt xmlns="http://www.w3.org/1999/xhtml">should not</rt></rubyb>。
とりわけ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグ</anchor>付けの手段を他に用意している<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor>では、
使うべきではありません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</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>の利用が<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>推奨</anchor><rt xmlns="http://www.w3.org/1999/xhtml">recommended</rt></rubyb>されます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><note xmlns="urn:x-suika-fam-cx:markup:ietf:html:3:draft:00:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">平文</anchor>に対する<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:">best current practice</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src>
と
<cite>The Unicode Standard</cite>
は釈明しています。</p><p xmlns="http://www.w3.org/1999/xhtml"><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>を使うのが最善なのは疑いありませんが、
それは
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>の仕組みが酷いだけで、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語情報</anchor>の記述の要求の重要度にすり替えて正当化に走るのはいかがなものでしょう。</p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="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:">Unicode言語タグ</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK統合漢字</anchor>に代表される
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor>
の強引な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字の統合<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">unification</title></anchor>への批判が
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor>
そのものへの強い反発として現れていた時代の産物でした。</p><p xmlns="http://www.w3.org/1999/xhtml"><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> 
実際そのような批判には過剰で行き過ぎた要件を主張するものもあったようですから、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 側の釈明にも酌量の余地はあるのですが、
だからといって文化的多様性を軽視する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 側関係者の態度 
(e.g. <sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>CJK統合漢字</anchor> </sw-see>)
もどうかと思われます。
「細かな表示の違いは言語情報で切り替えればいい」と言っておきながら
「言語情報は平文にはいらない」で済ませるのは実に無責任。</p><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:">文化的特性を軽視する態度<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">欧米中心主義</title></anchor>は非難されても仕方がありません。</p></note><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>タグが現れたからといって、
正しくタグ付けされているとは限りません。
例えば<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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><section><h1>文脈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</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="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> 
<code>U+E0001</code>
<code class="charname" xml:lang="en">LANGUAGE TAG</code>
は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><rubyb>非推奨<rt xmlns="http://www.w3.org/1999/xhtml">deprecated</rt></rubyb>であり、避ける<rubyb>べき<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb><title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">Unicodeの非推奨の文字</title></anchor>です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>は 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">paired stateful controls</anchor>
ですが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">テキスト</anchor>の編集操作で壊れがちな問題が指摘されています (<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;68</anchor-internal>)。
<src 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></src></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:">Unicode言語タグ</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">should</rt></rubyb>です。
追加の実装コストがあるからです。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[55]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">上位層プロトコル</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語情報</anchor>を記述できるときは、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>は避ける<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べき<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>です。
それによって両者の不整合を防げます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</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="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[56]</anchor-end> 
2つ (以上) の記述方法がある以上、実装は不整合があっても何らかの対応を強いられるわけですが、
いかに処理するか
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor>
では規定されていませんし、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">上位層プロトコル</anchor>で規定したものがあるのかは不明です
(<cite xmlns="http://www.w3.org/1999/xhtml">The Unicode Standard</cite>
や
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">unicode-xml</anchor>
のように使うべきではない、と言っているだけの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">仕様書</anchor>はありますが)。
誰も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>を使っていないので、
実世界では問題になっていません。</comment-p><hr></hr><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME</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:">MIME</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>による指定を使う<SHOULD xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べき</SHOULD>としていました。
<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="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;4</anchor-internal></src></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> 一方
<cite>The Unicode Standard</cite>
は、 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME</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>の指定の仕組みがあるときは、
そちらを指定するべきとしていました。
<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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> 
<cite>The Unicode Standard</cite>
が
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME</anchor>
と言っていたのは
<code class="MIME" xml:lang="en">Content-Language:</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:">Unicode言語タグ</anchor>の代わりには不十分です。</p><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:">Unicode言語タグ</anchor>が失敗に終わった以上、やはり<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化語</anchor>では
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME</anchor>
側の仕組みで記述するしかありません。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <cite xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2231</anchor> - MIME Parameter Value and Encoded Word Extensions: Character Sets, Languages, and Continuations</cite> (<time>2014-09-14 04:20:18 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc2231#section-8">https://tools.ietf.org/html/rfc2231#section-8</anchor-external></li></ul></refs><hr></hr><p><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:">ISO 2022 wchar_t encoding</anchor>
という提案で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>を使う案も示されていましたが、
とても実装可能なものだったとは思えません。</p><hr></hr><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:">Unicode</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:">Unicode言語タグ</anchor>でしか記述のしようがないのですが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</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="108" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[108]</anchor-end> いわゆる<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="107" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[107]</anchor-end> 
階層化された技術の境界面に当たる部分がうまく接続されず、誰も責任を持って技術設計しないために破綻する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アンチパターン</anchor>の好(?)例の1つです。</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> 
もっと仕様を簡素にしていればちゃんと実装されて使われる道もあったんじゃないですかねえ。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">bidi</anchor> 系の制御の文字は複雑で厄介なのに何だかんだ実装されてるわけで。</p></section><section><h1>レンダリング</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[61]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></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:">Unicode言語タグ</anchor>に対応した実装は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">hyphenation</anchor>
や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>選択のような特殊処理で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>の<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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[59]</anchor-end> それを「特殊処理」と呼ぶあたりに、当時の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor>
関係者の認識がうかがえます。</comment-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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">適合処理</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>を解釈する場合は
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor>
の規定に従う<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べき<rt xmlns="http://www.w3.org/1999/xhtml">should</rt></rubyb>ですが。
ある<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語</anchor>であるとタグ付けされているからといって、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">テキスト</anchor>をいかに解釈するかには、
特に要件は定められておりません。
<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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</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> 
実装は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>を解釈しなくても構いません (<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="74" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;74</anchor-internal>)。
<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>を無視することが明示的に認められています
<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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</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="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[77]</anchor-end> つまり
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相互運用性</anchor>はまったく保証されません。
この意味でも
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>は使うべきではありません。</comment-p></section><section><h1>Unicode LangTag 形式</h1><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> 
<cite xml:lang="ja">Aprotool TM tips collection</cite>, <time>2006-11-13T17:59:52.000Z</time>, <time>2022-10-11T04:36:07.175Z</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://hp.vector.co.jp/authors/VA002891/APROTIPS.HTM">http://hp.vector.co.jp/authors/VA002891/APROTIPS.HTM</anchor-external></p><p><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> 
<cite>Aprotool TM Editor</cite>
は付属ドキュメントによると
<dfn>Unicode LangTag</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="99" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;99</anchor-internal></src>
と称して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>入り <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-16BE</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-16LE</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</anchor>)
の読み書きに対応していたそうです。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO 2022</anchor>,
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ESC:</anchor>,
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TRONコード</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="101" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[101]</anchor-end> 
厳密には
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">自然言語</anchor>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO 2022</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化文字集合</anchor>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ESC:</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:">TRONコード</anchor>は言語の面 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">自然言語</anchor>に対応しているとされているが実質は
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO 2022</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化文字集合</anchor>に近い)
と意味の違ったものが対応付けられていたようです。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="102" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[102]</anchor-end> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="99" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;99</anchor-internal> で配布されている実ファイルによると「言語」切り替え以外に行頭にも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>を出力しているようです。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">行指向</anchor>処理の便宜でしょう。</p></section><section><h1>言語タグサンドイッチ列</h1><p><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> 
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグサンドイッチ列<rt xmlns="http://www.w3.org/1999/xhtml">language tag sandwich sequence</rt></rubyb></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>の代替として使うものです。</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> 
<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:">Unicode言語タグ</anchor>で囲み、
<sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E007F</sw-cc>
で終わるものです。</p><figure class="railroad"><figcaption><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグサンドイッチ列</anchor></figcaption><ol><li><var>言語タグ</var></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基底文字</anchor></li><li>?<ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体選択子</anchor></li></ol></li><li><var>言語タグ</var></li><li><sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E007F</sw-cc></li></ol></figure><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:">言語タグ</anchor>は同じものとします。また、 <sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E007F</sw-cc> 
を含まないものとします。 更に、<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> 
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK言語タグサンドイッチ列<rt xmlns="http://www.w3.org/1999/xhtml">CJK language tag sandwich sequence</rt></rubyb></dfn>は、
<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="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:">基底文字</anchor>が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK統合漢字</anchor>または<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK互換漢字</anchor></li><li><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> <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="156" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[156]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグ</anchor>が次の表のうちのいずれか</li></ul><p>であるものであり、次の表によってその意味が定まります。</p><figure class="table"><dl><dt>l</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグ</anchor>の2文字目以降に相当する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</anchor></dd><dt>s</dt><dd>意味</dd></dl><dl><dt>l</dt><dd><code>zh-cn</code></dd><dt>s</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">C</anchor> 字形</dd></dl><dl><dt>l</dt><dd><code>zh-hk</code></dd><dt>s</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">H</anchor> 字形</dd></dl><dl><dt>l</dt><dd><code>zh-mo</code></dd><dt>s</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">M</anchor> 字形</dd></dl><dl><dt>l</dt><dd><code>zh-tw</code></dd><dt>s</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">T</anchor> 字形</dd></dl><dl><dt>l</dt><dd><code>ja</code></dd><dt>s</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">J</anchor> 字形</dd></dl><dl><dt>l</dt><dd><code>ko-kr</code></dd><dt>s</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">K</anchor> 字形</dd></dl><dl><dt>l</dt><dd><code>ko-kp</code></dd><dt>s</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">KR</anchor> 字形</dd></dl><dl><dt>l</dt><dd><code>vi</code></dd><dt>s</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">V</anchor> 字形</dd></dl><dl><dt>l</dt><dd><code>zh-gb</code></dd><dt>s</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UK</anchor> 字形</dd></dl><dl><dt>l</dt><dd><code>lzh</code></dd><dt>s</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">S</anchor> 字形</dd></dl><dl><dt>l</dt><dd><code>und</code></dd><dt>s</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U</anchor> 字形</dd></dl><dl><dt>l</dt><dd><code>mul</code></dd><dt>s</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UCS2003</anchor> 字形</dd></dl></figure><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK言語タグサンドイッチ列</anchor>は、その意味に示された <cite>The Unicode Standard</cite>
の<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="158" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[158]</anchor-end> 
また、 <cite>The Unicode Standard</cite> に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代表字形</anchor>が明記されていないからといって、
その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode符号点</anchor>に関する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK言語タグサンドイッチ列</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="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:">G</anchor> 字形は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GB 18030</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">規格票</anchor>により、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">T</anchor> 字形は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CNS 11643</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">規格票</anchor>等により、
<cite>The Unicode Standard</cite> に掲載されていなくても<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">例示字形</anchor>を確認でき(ることがあり)ます。</p></example><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="160" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[160]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">J</anchor> 字形は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">仮想J字形</anchor>のようなコミュニティー標準を参照できます。</p></example><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="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:">UCS2003</anchor> 字形は過去の <cite>The Unicode Standard</cite>
と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO/IEC 10646</anchor> の規格票以外に依るべきものがないので、
それが存在しない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode符号点</anchor>では使うべきではありません。</p></example><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> 
<cite>The Unicode Standard</cite> に示された<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:">CJK言語タグサンドイッチ列</anchor>はそれらの特定の版を指し示すものではなく、
従って各規格等の変更によってその意味が変化する可能性があります。</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 xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IVS</anchor> で記述可能なものは、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK言語タグサンドイッチ列</anchor>を使う<SHOULD xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきではありません</SHOULD>。</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="171" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[171]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">出典J</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字情報基盤</anchor>で、それと同じ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MJ文字図形</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IVS</anchor> 
がある場合は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IVS</anchor> を使うべきです。</p></example><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:">CJK言語タグサンドイッチ列</anchor>以外にも次のようなものの表現方法が検討されるべきでしょう。</p><ul><li><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> 同じ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IVS</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>の区別</li><li><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JIS X 9051</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JIS X 9052</anchor> 字形</li><li><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> <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="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:">CNS 11643</anchor> の旧版字形、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">楷書</anchor>字形</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="178" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[178]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">教科書体</anchor>字形</li></ul><hr></hr><p><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> 
<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="163" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[163]</anchor-end> 令和6年10月時点で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</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:">OpenType</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>を作成可能であること<ul><li><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:">CJK言語タグサンドイッチ列</anchor>を1つの<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="181" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[181]</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:">Unicode符号点</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">列</anchor>以外の手法を併用しないで記述できること</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="164" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[164]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> で規定された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode符号点</anchor>およびその<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">列</anchor>の正当な用法に反しないこと</li><li><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 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="166" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[166]</anchor-end> 1つの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグサンドイッチ列</anchor>が1つの (概念上の) 文字を表し、
その内部の状態が前後の状態に影響を及ぼさないこと<ul><li><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:">Unicode言語タグ</anchor>の状態を破棄することはやむを得ない</li></ul></li><li><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:">エディター</anchor>での編集が著しく複雑ではないこと</li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="191" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[191]</anchor-end> 
本当は満たしたかった次の要件は、他の要件と同時に満たすのが困難なため断念しています。</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="192" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[192]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Safari</anchor> で適切に表示できる <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OpenType</anchor> フォントを作成可能であること</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="193" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[193]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> および <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Safari</anchor> で編集用の表示モード (<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="183" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;183</anchor-internal>) に切り替え可能であること</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="194" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[194]</anchor-end> <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:">Safari</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>
フォントを作成可能であること</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="195" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[195]</anchor-end> 冗長な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode符号点</anchor>を含まないこと</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="196" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[196]</anchor-end> 短く表現できること</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="197" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[197]</anchor-end> 文字列の選択で1文字扱いになること</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="198" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[198]</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>を表示可能であること</li></ul><hr></hr><p><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK言語タグサンドイッチ列</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OpenType</anchor> は、
次のように実装する<SHOULD xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです</SHOULD>。</p><ul><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> <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-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E007F</sw-cc> の<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>DFLT</code> (および他の適当な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語系</anchor>) における
<code>ccmp</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:">CJK言語タグサンドイッチ列</anchor>が表す<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>が表示されるようにします。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="183" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[183]</anchor-end> 対応している<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグ</anchor>について、
<code>GSUB</code> の <code>DFLT</code> (および他の適当な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語系</anchor>) における
<code>ss20</code> によって、
<sw-cn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E0001</sw-cn> の通常の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>のかわりに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK言語タグサンドイッチ列</anchor>の先頭を表す図形を、
<sw-cn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E007F</sw-cn> の通常の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>のかわりに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK言語タグサンドイッチ列</anchor>の末尾を表す図形を、
表示されるようにします。
ただしここで、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK言語タグサンドイッチ列</anchor>の2つ目の <sw-cn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+E0001</sw-cn>
にはこれを適用しません。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="184" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[184]</anchor-end> 対応している<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグ</anchor>とは、 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="180" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;180</anchor-internal> の方法で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>が1つ以上実装されているものすべておよびそれ以外の任意のものをいいます。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="185" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[185]</anchor-end> <code>ss20</code> は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> 等を使った編集用の表示を想定したものです。</li></ul></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="186" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[186]</anchor-end> 
このフォントファイルを参照する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS</anchor> <code>@font-face</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">規則</anchor>の
<code>unicode-range</code> は、</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="187" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[187]</anchor-end> 当該フォントファイルが提供する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基底文字</anchor>をすべて含む<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="188" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[188]</anchor-end> その他の<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="189" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[189]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> 用は <code>U+E0000-E007F</code> を含む</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="190" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[190]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> 用は <code>U+E0000-E007F</code> を含まない</li></ul><p>とし、 <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> で使い分ける必要があります。</p></section></section><section><h1>ETS</h1><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> 
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">絵文字タグ列<rt xmlns="http://www.w3.org/1999/xhtml">emoji tag sequence</rt></rubyb></dfn>
(<dfn>ETS</dfn>)
は、
<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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p><p><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:">ETS</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">国旗絵文字</anchor>に類する地方旗の表記のための構文のみ定められていて、
他の用途には使われていません。</p><ed xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"></ed><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="200" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[200]</anchor-end> <sw-ch xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">🏴󠁧󠁢󠁳󠁣󠁴󠁿</sw-ch> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スコットランド</anchor>)</p></example></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTMLタグ</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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語識別子</anchor>は別物です。</p><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>  
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Java</anchor> 方面では <code>-u-</code> のことを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">追加のUnicode言語タグ拡張機能</anchor>などと呼んでいるようで。
この呼称は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>と紛らわしいので、避けるべきです。
<code>-u-</code> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>とは独立した概念です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>を使うときに <code>-u-</code> を指定することはできますが、
有意義かどうかは不明です。</p></section><section><h1>歴史</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>は
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>の記述のために導入されました。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>の定義はなぜか
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">情報提供RFC</anchor>
である
<dfn>RFC 2482</dfn>
として<time>平成11(1999)年1月<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">1999-01</attrvalue></time>に出版されました
<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="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:">I-D</anchor> 起草当時既に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode Consortium</anchor> は承認済で、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO</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="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;23</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:">RFC</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IESG</anchor> 通過当時は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WG2</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>、 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO/IEC 10646</anchor>
に追加されるのは時間の問題でした。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> 
<cite>The Unicode Standard</cite>
とは別に
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor>
化する必然性は見いだせないのですが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF言語タグ</anchor>を使っていることもあって、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF</anchor>
方面での普及のための宣伝を兼ねていたのでしょうか。
この後<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>が追加された
<cite>Unicode 3.1</cite>
が
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode Consortium</anchor> 
の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webサイト</anchor>で公開されることになるのですが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor> が参照する
<cite>Unicode 2.0</cite>
やその次の
<cite>Unicode 3.0</cite>
はまだ紙で出版されていました。
<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="80" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[80]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2482</anchor>
はしばらく
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> が改版されても)
放置されていましたが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>の失敗が認められた後、
<time>2010年11月<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2010-11</attrvalue></time>に出版された
<dfn>RFC 6082</dfn>
によって<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="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor>
として事実上<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">廃止</anchor>されました。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <cite xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">draft-whistler-plane14-00</anchor> - Language Tagging in Unicode Plain Text</cite>, <time>2020-12-08T00:21:35.000Z</time>, <time>2020-12-19T03:31:48.628Z</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://tools.ietf.org/html/draft-whistler-plane14-00">https://tools.ietf.org/html/draft-whistler-plane14-00</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"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2482</anchor> - Language Tagging in Unicode Plain Text</cite> (<time>2014-08-04 15:25:44 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc2482">https://tools.ietf.org/html/rfc2482</anchor-external></li><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 xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 6082</anchor> - Deprecating Unicode Language Tag Characters: RFC 2482 is Historic</cite> (<time>2014-08-25 16:46:06 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc6082">https://tools.ietf.org/html/rfc6082</anchor-external></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode 3.1</anchor>
で正式に
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor>
に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>が追加されました。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">仕様書</anchor>の内容は
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor>
と大筋に於いて同じでした。
(その後の
<cite>The Unicode Standard</cite>
でも大枠は変わっていません。)</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <cite xml:lang="en-us">UAX #27: Unicode 3.1</cite>, <time>2002-07-24T21:19:39.000Z</time>, <time>2020-12-19T03:42:22.187Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.unicode.org/reports/tr27/tr27-4.html#tag">https://www.unicode.org/reports/tr27/tr27-4.html#tag</anchor-external></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO/IEC 10646</anchor>
の
<dfn>TAGS</dfn>
は
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor>
の
<code>Tags</code>
と同じ範囲を表しています。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <code>TAGS</code>
の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字一覧</anchor>
<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://chars.suikawiki.org/set/%24isoiec10646%3ATAGS">https://chars.suikawiki.org/set/%24isoiec10646%3ATAGS</anchor-external></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</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="97" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[97]</anchor-end> <cite xml:lang="en">RFC 2244 - ACAP -- Application Configuration Access Protocol</cite>, <time>2021-04-11T10:25:16.000Z</time>, <time>2021-04-21T09:56:32.243Z</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://tools.ietf.org/html/rfc2244#page-62">https://tools.ietf.org/html/rfc2244#page-62</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> その後<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ文字</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">絵文字</anchor>に再利用されるとかいうまさかの復活w</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <cite>UTS #51: Unicode Emoji</cite> (<time>2017-09-29 06:46:44 +09:00</time>) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.unicode.org/reports/tr51/#Emoji_Sequences">http://www.unicode.org/reports/tr51/#Emoji_Sequences</anchor-external></li><li><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> <cite>UTS #51: Unicode Emoji</cite> (<time>2017-09-29 06:46:44 +09:00</time>) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.unicode.org/reports/tr51/#valid-emoji-tag-sequences">http://www.unicode.org/reports/tr51/#valid-emoji-tag-sequences</anchor-external></li></ul></refs><p><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>Unicodeの最新動向</cite>, <time>2023-08-10T08:27:55.000Z</time>, <time>2001-07-08T15:10:23.993Z</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://web.archive.org/web/20010708150922/http://www.jagat.or.jp/story_memo_view.asp?StoryID=563">https://web.archive.org/web/20010708150922/http://www.jagat.or.jp/story_memo_view.asp?StoryID=563</anchor-external></p><blockquote><p>タグとは14面を使って文字ではなく制御コードを決めようというものである。現在,言語指定タグ,ルビタグ,異体字タグが提案されているが,いずれも詳細は未定である。</p><p>言語指定タグはテキストが何語かという情報をコードとして埋め込もうというものである。しかし,Unicodeはそもそも文字コードであり,言語はHTMLのタグや文書フォーマットの上位の指定でやるべきだという批判が強い。</p><p>ルビタグは言語タグよりももっと批判が多い。これはその名の通り,日本語で読みを小さい文字で書くいわゆるルビをコードとして埋め込もうというものである。日本からの代表は猛烈に反対しているが,通りそうな状況だという。</p><p>異体字タグ(Variant Tag)は賛成意見が多い。Super CJKで増やす漢字には異体字が含まれる。これらを一列に並べて別の字とするのではなく,異体字を横に並べるというのが異体字タグである。すべての文字にコードを割り振るのではなく,異体字を含むある文字の集合を一つのコードで表し,異体字をその1番,2番,3番と並べるのである。こうすれば新たなコードは不要で,現在の16面までのコードスペースで処理できる。
(テキスト&amp;グラフィックス研究会)
(JAGATinfo 1999年8月号より)</p></blockquote><p><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> <cite xml:lang="ja-jp">タグ (Unicode) ‐ 通信用語の基礎知識</cite>, <time>2024-10-26T03:29:12.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://www.wdic.org/w/WDIC/%E3%82%BF%E3%82%B0%20(Unicode)">https://www.wdic.org/w/WDIC/%E3%82%BF%E3%82%B0%20(Unicode)</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="199" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[199]</anchor-end> 
<cite xml:lang="en-us">Google won’t fix new ASCII smuggling attack in Gemini</cite>, <time>2025-10-07T20:45:44.000Z</time>, <time>2025-10-09T05:49:56.301Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.bleepingcomputer.com/news/security/google-wont-fix-new-ascii-smuggling-attack-in-gemini/">https://www.bleepingcomputer.com/news/security/google-wont-fix-new-ascii-smuggling-attack-in-gemini/</anchor-external></p><blockquote><p>The researcher reported the findings to Google on September 18 but the tech giant dismissed the issue as not being a security bug and may only be exploited in the context of social engineering attacks.</p></blockquote></section></body></html>