<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><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="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite xml:lang="en">RFC 5051 - i;unicode-casemap - Simple Unicode Collation Algorithm</cite> (<time>2014-02-02 02:15:24 +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://tools.ietf.org/html/rfc5051">http://tools.ietf.org/html/rfc5051</anchor-external></li></ul></refs></section><section><h1>定義</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <code xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">i;unicode-casemap</anchor></code> は、titlecase 化正準化 UTF-8
について <code xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">i;octet</anchor></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>の各演算を定義するものです <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="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">titlecase 化正準化 UTF-8<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">titlecased canonicalized UTF-8</rt></rubyb></dfn> とは、
入力が既知の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">charset</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:">UTF-8</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:">UTF-8</anchor> に変換できた文字列については、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UnicodeData.txt</anchor>
に基づき次のように処理します。<figure><ol><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">titlecase</anchor> が定義されていれば、それに置き換える</li><li><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> 分解が定義されていれば、それに置き換える</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> これらを可能な限り繰り返す</li></ol></figure></p></section><section><h1>Unicode の版</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> 特定の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicodeの版</anchor>を参照しているのではなく、任意あるいは最新の版を参照しているようです。</p></section><section><h1>一覧</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> 対応関係の一覧は <anchor-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> にあります。</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 xml:lang="en">Character mapping &quot;rfc5051:titlecase-canonical&quot;</cite> (<time>2014-04-01 12:05:23 +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://chars.suikawiki.org/map/rfc5051%3Atitlecase-canonical">http://chars.suikawiki.org/map/rfc5051%3Atitlecase-canonical</anchor-external></li></ul></refs></section><section><h1>応用</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Lemonade</anchor></p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> 意図的かどうかは不明ですが、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</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:">NFKC</anchor> の定義を参照せずに、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UnicodeData.txt</anchor>
の値を直接参照しています。そのため、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SpecialCasing.txt</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><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <cite xml:lang="en">RFC 5255 - Internet Message Access Protocol Internationalization</cite>
(<time>2016-01-10 21:18:21 +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/rfc5255">https://tools.ietf.org/html/rfc5255</anchor-external></figcaption><blockquote><p>A server that advertises this extension MUST implement the</p><p>i;unicode-casemap comparator, as defined in <strong>[</strong>UCM<strong>]</strong>.  It MAY implement</p><p>other comparators from the IANA registry established by <strong>[</strong>RFC4790<strong>]</strong>.</p><p>See also Section 4.5 of this document.</p><p>A server that advertises this extension SHOULD use i;unicode-casemap</p><p>as the default comparator.  (Note that i;unicode-casemap is the</p><p>default comparator for I18NLEVEL=1, but not necessarily the default</p><p>for I18NLEVEL=2.) The selection of the default comparator MAY be</p><p>adjustable by the server administrator, and MAY be sensitive to the</p><p>current user.  Once the IMAP connection enters authenticated state,</p><p>the default comparator MUST remain static for the remainder of that</p><p>connection.</p></blockquote></figure></section></body></html>