toTitlecase

toTitlecase

[1] 既定 case 変換既定 case folding既定無 case 一致は、 Unicode 文字列に関する言語に依存しない大文字小文字の変換や大文字小文字区別しない比較の方法です。

仕様書

既定 case 変換、既定 Case Folding、既定無 Case 一致

[12] 既定 case 変換 (default case conversion) は次の3つの演算 >>4 です。

[2] 既定 Case Folding (Default Case Folding) toCasefold(X) と表記され、各文字に対して Case_Folding(X) を適用することをいいます >>4

[19] これらは文字列に対する演算です。

[20] 既定 case 変換には文脈依存の写像の適用も含まれていますが、既定 Case Folding には含まれていません。 という点で既定 Case Folding の方が単純な演算です。 toCasefold(X)小文字へと変換しますが、 toLowercase(X) と同じではありません。

[21] 入力が正規化形だとしても、既定 Case Folding の結果が正規化形とは限りません >>4。 これはたとえ入力が小文字のみであったとしてもです。

[22] 既定無 Case 一致 (Default Caseless Matching) は、2つの文字列比較演算で、 両者に toCasefold(X) を適用した結果が等しいことをいいます >>4

[17] ここでいう「既定」とは、言語などによる仕立ての無い状態であることを指すようです。

[32] IDNA2008UnstabletoCaseFold を使っています。

[3] PRECISDefault Case Foloding推奨しています。

完全 case 写像、完全 case folding

[9] 完全 case 写像 (full case mapping) 完全 case folding (full case folding) SpecialCasing.txtUnicodeData.txt に含まれるデータから決まる写像で、次のように表記されます >>4

[18] これらは文字に対する演算です。

[5] Case_Folding(C)CaseFolding.txt (>>6) に含まれていて、状態欄の値が「C」 か「F」のもの (それ以外は無変換) です。

[24] 1対多の写像は SpecialCasing.txt に、1対1の写像は UnicodeData.txt に含まれています。 重複する場合は前者が採用されることになっています >>4

[25] U+0130小文字UnicodeData.txt によれば U+0069 ですが、 SpecialCasing.txt によれば U+0069 U+0307 で、後者が Lowercase_Mapping(C) の値です。

[11] ここでいう「完全」とは、 単純case folding に対しての完全性を示しているようです。

[29] 写像 Case_Folding の一覧は >>28 にあります。

[33] 採用例: ファイル名

文脈依存の case 変換

[10] 文字だけではなくその文脈によって決まる大文字と小文字の関係として、次のものが定義されています >>4

[23] これらの定義は Unicode Standard 本体に規定があります。どの文字がどのように変換されるかは SpecialCasing.txt (>>7) にあります。

関連

[26] Unicode Standard は他に正規化を伴う比較として正準無case一致互換性無case一致識別子無case一致を定義しています。

[34] 識別子文字, ファイル名も参照。

メモ

[27] XPath and XQuery Functions and Operators 3.0 ( ( 版)) http://www.w3.org/TR/xpath-functions-3/#func-upper-case

[30] XPath and XQuery Functions and Operators 3.1 () https://www.w3.org/TR/2017/REC-xpath-functions-31-20170321/#func-lang