<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="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> 
<dfn>The TECkit language</dfn>
(<dfn><code>.map</code></dfn> ファイル)
は、
<cite>TECkit</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>です。</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="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> 
<cite xml:lang="ja">The TECkit Language - TECkit_Language.pdf</cite>, <time>2021-11-12T17:48:17.000Z</time>, <time>2025-06-28T01:26:36.997Z</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://software.sil.org/downloads/r/teckit/TECkit_Language.pdf">https://software.sil.org/downloads/r/teckit/TECkit_Language.pdf</anchor-external></li></ul></refs><p><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> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;11</anchor-internal> は言語仕様というよりは利用の手引の類で、その種のものにしては細かく説明しているものの、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル形式</anchor>の形式と意味の規定としてみると精密さに欠けます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;11</anchor-internal> の他に <cite>TECkit</cite> のプログラムの挙動やソースコード、
あるいは実際の <code>.map</code> ファイルの利用事例を見て研究する必要があります。</p></section><section><h1>公式資料</h1><ul><li><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;11</anchor-internal></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 xml:lang="ja">Microsoft Word - Beyond UTR22.doc - BeyondUTR22_pdf.pdf</cite>, <time>2021-07-14T15:18:35.000Z</time>, <time>2025-06-28T01:25:02.710Z</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://software.sil.org/downloads/r/teckit/BeyondUTR22_pdf.pdf">https://software.sil.org/downloads/r/teckit/BeyondUTR22_pdf.pdf</anchor-external></li><li><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal></li><li>
<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> <cite xml:lang="en">teckit/test at master · silnrsi/teckit · GitHub</cite>, <time>2025-06-28T15:25:19.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/silnrsi/teckit/tree/master/test">https://github.com/silnrsi/teckit/tree/master/test</anchor-external></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;14</anchor-internal> 申し訳程度のテスト</p></section><section><h1>概略</h1><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:">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> との相互変換の方法を記述することができます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コードの変換</anchor>の実装は多く存在しますが、 <cite>TECkit</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:">文字</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>体系を20世紀末から21世紀初期に使っていましたが、
欧米の商用製品が実装している<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="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</anchor-end> 
<code>.map</code> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1対1</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="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:">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:">結合文字</anchor>の順序が逆のことがあり (<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>非spacing文字</anchor> </sw-see>)、
その場合逆転させる規則が必要になります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[67]</anchor-end> 
<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:">文字コード</anchor>、特に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント依存符号化</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">8ビット符号</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> 独自の理論に整合する一貫した方法を採用しているので、
かなり複雑な組み合わせで記述することになります。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字のレンダリング</anchor>の際には <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">complex script</anchor> の処理と言われる複雑な手順で
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">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="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:">Webブラウザー</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="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;67</anchor-internal> のような複雑なものはほとんど実装事例がなく、
<cite>TECkit</cite>  や <code>.map</code> の大きな特徴といえます。</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="69" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[69]</anchor-end> それはつまり、欧米の商用ソフトウェアがこの地域のデータの互換性の問題を切り捨ててきたということでもあります...</comment-p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[50]</anchor-end> 
<code>.map</code> では変換の一方を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">左辺</anchor> (LHS)、他方を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">右辺</anchor> (RHS) と呼んでいます。
順方向の変換 <code>&gt;</code> は左辺から右辺に、
逆方向の変換 <code>&lt;</code> は右辺から左辺にと行われます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">演算子</anchor> <code>&gt;</code>, <code>&lt;</code>, <code>&lt;&gt;</code> 
を使い分けて1つのファイルで両方向の関係を同時に記述します。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="52" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[52]</anchor-end> 
<code>.map</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:">文字コード</anchor>を byte、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> のことを Unicode や uni と呼んでいます。</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> 
<code>.map</code> は変換を多段で記述でき、
各段のことを pass と呼んでいます。
順方向では前 pass の右辺が次 pass の左辺になります。
pass の入出力は byte または unicode で4種類あり、
<code>byte_unicode</code> (左辺 byte, 右辺 unicode)、
<code>unicode_byte</code>、
<code>byte</code>、
<code>unicode</code>
と呼ばれています。</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-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> の他に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor> の適用を表す pass があります
(必然的にそれらは unicode から unicode への変換になります)。
また、
<code>LHSFlags</code> や <code>RHSFlags</code> に
<code>ExpectsNFC</code>, <code>ExpectsNFD</code> 
という値があり、入力が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor> であることを期待する指定ができます。
<code>.map</code> の処理の前段階として適用することになります。</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="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[55]</anchor-end> <code xmlns="http://www.w3.org/1999/xhtml">LHSFlags</code> や <code xmlns="http://www.w3.org/1999/xhtml">RHSFlags</code> には
<code xmlns="http://www.w3.org/1999/xhtml">GenratesNFC</code>, <code xmlns="http://www.w3.org/1999/xhtml">GeneratesNFD</code>
という値もありますが、どちらかというと処理の指定ではなく処理結果を表明するもののようです
(保証するわけではありません)。</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="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[56]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor> は破壊的な操作なので (<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>Unicode正規化</anchor> </sw-see>)、
通常は利用を躊躇されるべきものですが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コードの変換</anchor>というのが本質的にそれ以上に破壊的で危険な操作ですし、
対象となる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コード</anchor>の性質をよく理解した者が <code xmlns="http://www.w3.org/1999/xhtml">.map</code>
を書く分には使っても構わないのでしょう。
適切に使えば<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:">ラテン文字</anchor>で特に有用そうです)。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="57" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[57]</anchor-end> 
pass が明示されていないと、全体が <code>byte_unicode</code> の1つの pass になります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="58" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[58]</anchor-end> 
pass の数や種類には制限がないようです。
ただし前段の出力と後段の入力が矛盾するものは認められません。
多段化することで複雑な変換を単純に書けることもある一方で、
全体の入力と出力の関係性が非常にわかりにくくなります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[59]</anchor-end> 
すべての pass を組み合わせた全体としては byte から unicode となるものが多いですが、
そうでないものもあります。</p><hr></hr><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> 
変換の両辺は byte や unicode の文字1つと一致することもあれば、
いくつかの文字の列と一致することもあります。
空に置換される (削除される) こともあります。</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> 
変換の両辺には一致部分の他に、直前の条件や直後の条件やその両方を書くこともできます。</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> 
一致や条件は反復数を指定することもできます。ただし15個までに制限されていて、
無限の連続は指定できません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="64" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[64]</anchor-end> 
条件には文字の他に境界を表す <code>#</code> も指定できます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[61]</anchor-end> 
変換の規則は何個でも書くことができます。
複数の規則に一致する場合は、一致部分 (前後の条件も含む。) の文字数が長いものが優先されます。
同数なら <code>.map</code> の先のものが優先されます。
(<code>.map</code> に記述した要素数ではなく一致した文字数です。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="65" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[65]</anchor-end> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal> のために <code>.map</code> の解析は一見して感じられるものよりかなり複雑になります。
単純に変換処理をしたいだけなら上から順にすべて処理して選べばいいだけですが、
変換表の性質を理解したいときは前後の条件や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字クラス</anchor>や反復が相互にどう作用するのか見極める必要が出てきます。</p></section><section><h1>実利用例</h1><ul><li>
<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 xml:lang="en">GitHub - silnrsi/wsresources: A catch bag of writing system resource files organised by writing system tag</cite>, <time>2025-06-28T01:16:23.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/silnrsi/wsresources">https://github.com/silnrsi/wsresources</anchor-external><ul><li><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:">MITライセンス</anchor></li></ul></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal> から</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <code>regions/Asia/PH/legacy/sil-phil-ansi/mappings/PhilAnsiSIL.map</code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <code>scripts/Grek/legacy/sil-galatia/mappings/SILGreek.map</code></li><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> <code>scripts/Ethi/legacy/geez/mappings/Geez to Unicode.map</code></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> <code>scripts/Arab/SenAjami/mappings/SenAjami.map</code></li><li><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> <code>scripts/Ethi/legacy/sil-eth-m/mappings/SIL Eth M.map</code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <code>scripts/Plrd/legacy/lipo3/mappings/lipo3.map</code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <code>scripts/Latn/legacy/windows-symbol-cp1252/mappings/Windows-SymbolEncodedFont.map</code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <code>regions/Americas/MX/legacy/sil-mexico/mappings/CHNCCR1.map</code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <code>langs/r/rap/legacy/sil-rap/mappings/SIL_RAP.map</code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <code>scripts/Deva/legacy/annapurna/mappings/Annapurna.map</code></li><li><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> <code>scripts/Sinh/legacy/sinhala_07/sinhala_07.map</code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> <code>scripts/Talu/logical2visual/logical2visual.map</code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> <code>regions/Americas/MX/legacy/sil-mexico/mappings/MTCSTDMR.map</code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</anchor-end> <code>langs/m/mav/marktnr_satere/mav_satere.map</code></li><li><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> <code>scripts/Music/legacy/musique/mappings/SIL-SA_MUSIQUE-2007.map</code></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> <code>scripts/Grek/legacy/wingreek/mappings/WinGreek.map</code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="74" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[74]</anchor-end> <code>scripts/Latn/legacy/windows-symbol-cp1252/mappings/Windows-SymbolEncodedFont.map</code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="79" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[79]</anchor-end> <code>scripts/Latn/legacy/windows-symbol-cp42/mappings/Windows-SymbolEncodedFont2SymbolCP.map</code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[77]</anchor-end> <code>scripts/Telu/legacy/nlci-winscript-telugu/mappings/WinScrTel.map</code></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;3</anchor-internal> 注釈に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO/IEC 8859-1</anchor> と思われる文字</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <anchor-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> <code>Copyright</code> の値 (文字列リテラル) に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</anchor> 文字<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="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal> に含まれる <code>.map</code> ファイルの限りにおいては考慮するべき<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非ASCII文字</anchor>は
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal> のような<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:">UTF-8</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:">UTF-8</anchor> のものだけでなく <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> のような事例も紛れ込んでいるので注意が必要です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;34</anchor-internal> は例外で、変換式の文字列リテラルでも <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:">文字</anchor>を使っています。</p><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:">UTF-8</anchor> <sw-cn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BOM</sw-cn> が先頭についているファイルがあります。</p><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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">改行</anchor>が <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x0D</n> のみの事例</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;21</anchor-internal> <sw-ch xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&quot;</sw-ch>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;22</anchor-internal> <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>まで閉じられていない事例</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <cite>TECkit</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>の終わりと明示的に作られていて、
エラーメッセージも特に出していません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;34</anchor-internal></p><blockquote><pre>EncodingName            &quot;a canonical name that uniquely identifies this mapping table from all others&quot;
DescriptiveName         &quot;a string that describes the mapping&quot;
Version                 &quot;1&quot;
Contact                 &quot;mailto:user@addr&quot;
RegistrationAuthority   &quot;the organization responsible for the encoding&quot;
RegistrationName        &quot;the name and version of the mapping, as recognized by that authority&quot;
Copyright               &quot;© 2017 &lt;CompanyName&gt;. All rights reserved.&quot;</pre></blockquote><p>とあまりに雑な<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="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;40</anchor-internal></p><blockquote><pre>Contact                 &quot;mailto:(<snip xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"></snip>@sil.org)&quot;</pre></blockquote><p>なんだこの <code>mailto:</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> は。 <code>mailto:</code> の続きは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 822</anchor>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メールアドレス</anchor>なので<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">括弧</anchor>に含まれるのは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">注釈</anchor>。・・・ではさすがにないと思われるが。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="76" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[76]</anchor-end> 
なお公式ドキュメント <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;11</anchor-internal></src> では Contact の値は 
<code>mailto:</code> URL が typical form と書いているだけなので、
実は何でもいいということに。実際
<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>
は</p><blockquote><pre>Contact 'Bob Hallissy at SIL'</pre></blockquote><p>としていてもはや<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="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;37</anchor-internal> <code>VisualOrder</code> を指定した事例 (他にほとんどない)</p><p><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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="71" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;71</anchor-internal> 左辺が byte であるにも関わらず <code>LHSFlags</code> に <ODE xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">ExpectsNFC</ODE>
を指定した事例</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> <code>ByteDefault</code> に <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x3F</n> 以外を指定した事例</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> 
ドキュメントによると <code>ByteDefault</code>, <code>UniDefault</code>
は <code>byte_unicode</code>, <code>unicode_byte</code>
の pass に属するべきものです。ところが
<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> は <code>.map</code> 上に明記された pass は1つで <code>unicode</code>。
その直前の pass に属さない部分に <code>UniDefault</code> があります。
byte との変換が発生し得ないのでこの <code>UniDefault</code> には意味がありません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <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> 入出力両方とも <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="78" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[78]</anchor-end> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;77</anchor-internal> pass が9段階もある事例</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;46</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:">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:">Windows-1252</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>の一部文字を独自に差し替えたもの。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CR</anchor> に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Windows-1252</anchor> が割り当てた文字があるので
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Latin1</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="75" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[75]</anchor-end> 
<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:">Unicode</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="80" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[80]</anchor-end> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="79" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;79</anchor-internal> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> から byte への変換ファイルの事例。 pass が <code>Unicode_Byte</code>
になっているのは非常に珍しい。
注釈によると <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:">8ビット符号</anchor>に戻すために使うとのこと。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;3</anchor-internal> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイトクラス</anchor>・<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicodeクラス</anchor>で定義されている対応と直接記述されている対応で重複がある
(どちらの定義も同等)。 <sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+00D1</sw-cc>, <sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+00D2</sw-cc>, <sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+00D3</sw-cc>, <sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+00D4</sw-cc>
この他にも何らかの理由重複される変換式があって一方が常に無視されるものが含まれるファイルはかなりある。
(双方向の変換式でうち一方向が無視されるものもある。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;25</anchor-internal> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;40</anchor-internal>
<code>PUA</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>が <sw-cn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PUA</sw-cn> であるものは存在しない。また、
<code>PUA</code> という<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クラス</anchor>が定義されているわけでもないし、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クラス</anchor>は構文も違う。
このような <code>PUA</code> が変換式に含まれるファイルは他にもいくつかある。</p><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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;40</anchor-internal></p><blockquote><pre>0xD7    &lt;&gt;      U+256B BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE  --  SILID 9090* + SILID 0129 (space glyph ignored) + SILID 9090* + SILID 9090* + SILID 9090* + SILID 9075*</pre></blockquote><p>なんだこの行は。他の行と比べると本来 <code>BOX</code> の前に <code>;</code>
が入って<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">注釈</anchor>になるべきが何らかの理由で消えてしまったか。
しかしこのファイルで <cite>TECkit</cite> は読み込めるのか。
それともコミット後に誰も使っていないのか。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <anchor-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> 変換先が <sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+FFFD</sw-cc> を含む文字列の事例 (人間向けに注釈あり)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> この他 <code>ByteDefault</code> や <code>UniDefault</code> が変換式に直接出てくる事例はいくつもある。
変換先が存在しないものであることを明示的に示したかったのか、
あるいは変換式同士の優先順位の関係で明示しないといけないケースもときにはあるのか。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> <code>&lt;&gt;</code> なのに変換先が <sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+FFFD</sw-cc> のものが複数ある
(つまり逆変換が重複しているので1つ以外は無視される)
というケースもたまにあって、そういうのは何も考えて無さそう。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> 
<anchor-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> <code>'id '</code> から始まるおもしろい変換式。 <code>\id </code>
から始まる行は通常の変換ではなくそのまま <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII</anchor> から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor>
に写像する意図らしい。 <code>.map</code> の表現力で無理矢理記述した結果と思われる。
言語仕様ドキュメントではクラスはその位置で対応付けるとしか説明がなく、
クラス以外の字句の扱いが不明瞭だし、 <code>.map</code> の字句の位置なのか一致した文字列の数(?)なのかよくわからない。ソースコードを読んだ感じだと、
<code>.map</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> 
左辺で <code>@</code> を使った事例がいくつか</p><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> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;29</anchor-internal> <code>(X=a | Y=b) &lt;&gt; @a @b</code> 型の変換式がある。
<code>|</code> による選択があることに注意。 <code>&lt;&gt;</code> なので両方向の変換に使われる。
左辺から右辺への変換は良いが、右辺から左辺への変換でこれが何を表すのか、
言語仕様ドキュメントを読んでも判然としない。
他のいくつかのファイルにもこの形式の変換式がある。</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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;30</anchor-internal> はおそらくいずれも特定の種類の文字列における文字の出現順序を一定に揃えるもので、
<code xmlns="http://www.w3.org/1999/xhtml">&lt;&gt;</code> になってはいるものの、実際には左辺から右辺への変換でしか使われないと思われる。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end> 
ファイル仕様上はすべてのファイルが正方向と逆方向の両方の変換に対応することになっていそうだが、
実際のファイルでどこまでしっかり作り込まれているのかは怪しい。正方向が動作するのは当然として、
逆方向が不安なものもちらほら。また、 <code>&gt;</code> ばかりで逆方向の変換が皆無のファイルもあって、
当然逆方向に変換しても意味がない (未対応という意味で意図的にそうしているのかも)。</p><hr></hr><ul><li><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> 
<cite xml:lang="en">GitHub - Shreeshrii/xetex-itrans: Fork of https://www.ctan.org/tex-archive/macros/xetex/generic/itrans</cite>, <time>2025-07-08T08:50:54.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/Shreeshrii/xetex-itrans">https://github.com/Shreeshrii/xetex-itrans</anchor-external><ul><li><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:">LaTeXライセンス</anchor></li></ul></li><li>
<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> 
<cite xml:lang="en">CTAN: Package xetex-devanagari</cite>, <time>2025-07-08T11:31:38.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://ctan.org/pkg/xetex-devanagari">https://ctan.org/pkg/xetex-devanagari</anchor-external><ul><li><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:">LaTeXライセンス</anchor></li></ul></li><li><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> 
<cite xml:lang="en">CTAN: Package xetex-tibetan</cite>, <time>2025-07-08T11:33:11.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://ctan.org/pkg/xetex-tibetan">https://ctan.org/pkg/xetex-tibetan</anchor-external><ul><li><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:">LaTeXライセンス</anchor></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="129" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[129]</anchor-end> 
<cite xml:lang="en">GitHub - davidmjones/brahmic-maps: ISO 15919 TECkit mappings for Indic scripts in XeTeX</cite>, <time>2025-07-09T08:29:00.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/davidmjones/brahmic-maps">https://github.com/davidmjones/brahmic-maps</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="130" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[130]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LaTeXライセンス</anchor></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="139" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[139]</anchor-end> 
<cite>XeLaTeX and Fontsite's &quot;Expert&quot; fonts</cite>, <time>2025-07-09T11:17:20.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://comp.text.tex.narkive.com/WXgEhXh8/xelatex-and-fontsite-s-expert-fonts">https://comp.text.tex.narkive.com/WXgEhXh8/xelatex-and-fontsite-s-expert-fonts</anchor-external><ul><li><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> ライセンス不詳</li></ul></li></ul><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> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="129" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;129</anchor-internal> <code>build/</code> で <code>make</code> したら <code>.map</code> が生成される</p><p><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> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="129" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;129</anchor-internal> <code>pass(NFD)</code> を使った事例</p><p><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> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="129" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;129</anchor-internal> <code>.*</code> を一致部分に使った事例</p><p><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> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="129" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;129</anchor-internal> <code>deva-san.map</code>  が pass 10段階</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="135" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[135]</anchor-end> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="129" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;129</anchor-internal> 独自?の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PUA</anchor> に変換しているものも多い。 <sw-cc xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+FFFD</sw-cc> に変換しているものも多い。</p><ul><li><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> 
<cite xml:lang="en">GitHub - fc7/arabxetex: An ArabTeX-like interface for XeLaTeX</cite>, <time>2025-07-08T08:34:13.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/fc7/arabxetex">https://github.com/fc7/arabxetex</anchor-external><ul><li><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> ライセンス不詳</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> 
<cite xml:lang="en">arabxetex/arabtex-farsi-trans-loc.map at master · fc7/arabxetex · GitHub</cite>, <time>2025-07-08T08:33:53.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/fc7/arabxetex/blob/master/arabtex-farsi-trans-loc.map">https://github.com/fc7/arabxetex/blob/master/arabtex-farsi-trans-loc.map</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="90" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[90]</anchor-end> <code>arabtex-kurdish.map</code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="96" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[96]</anchor-end> <code>arabtex-trans-dmg.map</code></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="137" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[137]</anchor-end> 
<cite xml:lang="en">CTAN: /tex-archive/macros/xetex/latex/arabxetex</cite>, <time>2025-07-09T11:06:44.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://ctan.org/tex-archive/macros/xetex/latex/arabxetex">https://ctan.org/tex-archive/macros/xetex/latex/arabxetex</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="138" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[138]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LaTeXライセンス</anchor></li></ul></li></ul><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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="84" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;84</anchor-internal> <code>Define U</code> している事例。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字句解析</anchor>で気をつけないと 
<code>U+1234</code> の <code>U</code> を置換してしまう。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="87" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[87]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="84" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;84</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="96" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;96</anchor-internal> 条件付きの削除 (右辺空) の事例</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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="90" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;90</anchor-internal> 条件に <code>.</code> (任意の文字) の事例</p><p><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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="137" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;137</anchor-internal> <code>arabtex-farsi-fullvoc.map</code> に <code>^#</code> の事例</p><hr></hr><ul><li><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 xml:lang="en">GitHub - agricolamz/abaza_cyrillic_to_trans: Abaza cyrillic transliterator (TECkit map)</cite>, <time>2025-07-08T08:19:34.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/agricolamz/abaza_cyrillic_to_trans">https://github.com/agricolamz/abaza_cyrillic_to_trans</anchor-external><ul><li><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> ライセンス不詳</li><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> 
<time>2025-07-08T08:20:34.600Z</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://raw.githubusercontent.com/agricolamz/abaza_cyrillic_to_trans/refs/heads/master/abaza%20cyrillic%20to%20trans.map">https://raw.githubusercontent.com/agricolamz/abaza_cyrillic_to_trans/refs/heads/master/abaza%20cyrillic%20to%20trans.map</anchor-external></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="117" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[117]</anchor-end> 
<cite xml:lang="en">GitHub - agricolamz/andi_cyrillic_to_IPA: Andi cyrillic to IPA transliterator (TECkit map)</cite>, <time>2025-07-08T11:47:25.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/agricolamz/andi_cyrillic_to_IPA">https://github.com/agricolamz/andi_cyrillic_to_IPA</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="118" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[118]</anchor-end> ライセンス不詳</li></ul></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="83" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[83]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="82" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;82</anchor-internal> <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:">文字列リテラル</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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="117" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;117</anchor-internal> 変換式の末尾の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列リテラル</anchor>を閉じる <sw-ch xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&quot;</sw-ch> がない事例</p><ul><li><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> <cite xml:lang="en">GitHub - somadeva/RomDev: TECkit mapping for Unicode Romanised Sanskrit to Devanagari conversion</cite>, <time>2025-07-08T08:50:16.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/somadeva/RomDev">https://github.com/somadeva/RomDev</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="112" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[112]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CC-BY 4.0</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="128" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[128]</anchor-end> 
<cite xml:lang="en">sārasvataṃ cakṣuḥ: Updated Teckit RomDev</cite>, <time>2025-04-09T02:48:01.000Z</time>, <time>2025-07-09T08:25:02.728Z</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://sarasvatam.blogspot.com/2013/03/updated-teckit-romdev.html">https://sarasvatam.blogspot.com/2013/03/updated-teckit-romdev.html</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="141" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[141]</anchor-end> 関連: <sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>インド系文字の文字コード</anchor> </sw-see></li></ul></li><li><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> 
<cite xml:lang="en">Devangari to IAST in LaTeX · GitHub</cite>, <time>2025-07-08T08:51:09.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://gist.github.com/hrishikeshrt/c35e1a5332a4fbcdcdf7102446d2e796">https://gist.github.com/hrishikeshrt/c35e1a5332a4fbcdcdf7102446d2e796</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="113" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[113]</anchor-end> ライセンス不詳</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="94" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[94]</anchor-end> 
<cite xml:lang="en">GitHub - HughP/tcf-james-bigramed: Bigram Counting for tcf james</cite>, <time>2025-07-08T08:51:19.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/HughP/tcf-james-bigramed">https://github.com/HughP/tcf-james-bigramed</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="114" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[114]</anchor-end> ライセンス不詳</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="121" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[121]</anchor-end> 
<cite>Procedures/tools for Transcoding Cross-Platform Legacy Text to Unicode Using TECkit</cite>, <time>2004-01-08T19:21:22.000Z</time>, <time>2025-07-08T12:22:00.068Z</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.khmerfonts.info/bauhahn/TECkit.html">https://www.khmerfonts.info/bauhahn/TECkit.html</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="122" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[122]</anchor-end> ライセンス不詳</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="123" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[123]</anchor-end> 
<cite>null</cite>, <time>2004-01-08T19:20:03.000Z</time>, <time>2025-07-08T12:23:41.780Z</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.khmerfonts.info/bauhahn/KSCIIKhmer.map">https://www.khmerfonts.info/bauhahn/KSCIIKhmer.map</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="124" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[124]</anchor-end> 
<cite>null</cite>, <time>2004-01-08T19:20:13.000Z</time>, <time>2025-07-08T12:23:50.979Z</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.khmerfonts.info/bauhahn/ArunBiblicalKhmer.map">https://www.khmerfonts.info/bauhahn/ArunBiblicalKhmer.map</anchor-external></li></ul></li></ul><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> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="93" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;93</anchor-internal></p><blockquote><pre>U+0905U+0902&lt;&gt;U+1E43;अं ṃ
U+0905U+0903&lt;&gt;U+1E25;अः ḥ
U+0905U+0901&lt;&gt;U+006FU+0302;अँ ô</pre></blockquote><p>のように U+ 字句の間に空白がない事例</p><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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="89" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;89</anchor-internal> <code>U+1E6D 'U+1E6C h' 'U+1E6D h' U+1E0C</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="99" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[99]</anchor-end> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="89" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;89</anchor-internal> <code>UniClass</code> の定義中に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列リテラル</anchor>。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</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="123" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;123</anchor-internal> pass が11段もある事例。流通しているファイルの中ではこれが最大か?</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="123" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;123</anchor-internal> <code>([X])=a &lt;&gt; ([Y])=a</code> 型のグループ化で一見隠された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字クラス</anchor>同士の対応関係を使う事例</p><hr></hr><ul><li><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> 
<cite xml:lang="en">GitHub - dgreenhoe/unihan: C source that once compiled can generate a TECkit map from a Unihan_Variants.txt file to map traditional Chinese characters to simplified Chinese characters</cite>, <time>2025-07-08T08:50:42.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/dgreenhoe/unihan">https://github.com/dgreenhoe/unihan</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="115" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[115]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MITライセンス</anchor></li></ul></li><li><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> 
<cite xml:lang="en">GitHub - dgreenhoe/teckitmaps</cite>, <time>2025-07-08T08:49:41.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/dgreenhoe/teckitmaps">https://github.com/dgreenhoe/teckitmaps</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="116" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[116]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MITライセンス</anchor></li></ul></li></ul><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> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="91" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;91</anchor-internal> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unihan</anchor> から機械的に生成したらしいファイル。
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="88" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;88</anchor-internal> にもある。</p><p><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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="91" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;91</anchor-internal> はとても雑で、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unihan</anchor> が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体字</anchor>を列挙 (or) したものまでそのままにしているので、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体字</anchor>が並んだ文字列が変換結果になってしまっているw データの意味も理解しないで雑に処理して検証もしていないということ。</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 xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">簡体字</anchor>・<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">繁体字</anchor>の変換は中華圏で需要が多く専門のソフトウェアやデータが盛んに開発されていて、
そちらの方がより正確で豊富。 <sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>異体字データベース</anchor> </sw-see></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[103]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="91" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;91</anchor-internal> はおそらく <code>.map</code> として流通しているものの中でも変換式の量は最大級なので、
そういう検証には有用。ただ <code>.map</code> としての複雑度は簡単な部類。 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="102" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;102</anchor-internal>
のようなデータは (<code>.map</code> ではないが) もっと複雑なことをしている。
<cite>TECkit</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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="91" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;91</anchor-internal> はその回答にはまったくなっていないが)。</p></section><section><h1>関連</h1><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>Graphite Description Language</anchor> </sw-see></p></section><section><h1>メモ</h1><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> 
<cite xml:lang="en">Bibledit</cite>, <time>2025-07-08T12:19:28.000Z</time>, <time>2021-06-18T18:51:06.375Z</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/20210618185016/https://www.nongnu.org/bibledit/teckit_mapping_rules_reference.html">https://web.archive.org/web/20210618185016/https://www.nongnu.org/bibledit/teckit_mapping_rules_reference.html</anchor-external></p></section></body></html>