unicode

Unicode の nfkc について誤解していた

nfc は分解されたものを元に戻す際のマッピングが 1:1 または 2:1 なので合成は簡単。 nfkc は互換マッピングを使用するので n:1 で戻さないといけない。これは面倒。 と誤解していたが、nfkc は分解が互換分解で、合成は正規合成なのか、1:1、2:1 のどちら…

Unicode 正規化の実装 Decompose

Unicode の正規化の実装。まずは簡単な(?)Decompose から。 Decompose は Compose の逆なので分解。 マッピング情報に従い、1文字=>2文字 へと分解していく。 1文字=>3文字 などのマッピングも存在するが 1文字=>2文字 の分解を再帰的にすることで対応す…

Unicode 正規化勉強中

Unicode正規化がよくまとまっているので勉強中。 Unicode 正規化を実装するのに必要な情報は 正規分解のマッピング 互換分解のマッピング 正規結合クラスデータ 合成除外データ の4つと読み取った。 分解は簡単そうだ。結合はまだ霧の中。

Unicode の実装はあと少し

string-titlecase は Ypsilon の実装をほぼそのまま使わせてもらう。 string-ci>? を書こうと思ったら string>? 系を実装していなかったことに気付く。最近は Pure Scheme で書こう派。 Scheme で実装すると気にすべきことが少なくて良い。 残るは Unicode …

string-upcase / string-downcase

Unicode の SpecialCasing.txt で定義されている特別な場合の upcase 。 1文字が2文字になるケース。 (string-upcase "Straße") => "STRASSE" ラボ内で光成さん、id:kazuhooku さんに教えてもらったのだけど ß は面白い。 スイスではイタリア語圏・ロマンス…

Unicode ギリシア語の final sigma 問題

Unicode の SpecialCasing.txt に「Special case for final form of sigma」という項目があり、データの定義がある。 これの意味が分からなかったので調べる。うまい検索ワードが思いつかないせいか、日本語でよい解説は見つからない。英語版のWikipedia で…