Shiro Kawai
shiro****@lava*****
2003年 11月 20日 (木) 20:33:59 JST
From: Alex Shinn <foof****@synth*****> Subject: [Gauche-devel-jp] 日本語文字集合 Date: Mon, 17 Nov 2003 16:03:06 +0900 > 日本語用の文字集合を定義しました > http://synthcode.com/scheme/char-set-ja.scm > > ファイルはEUC-JPですが、char-set:hiragana、char-set:katakana等は一文字ず > つに書いてあるので他の文字コードに変換してもいいです。しかし、 > char-set:kanjiは元々UTF-8とucs-range->char-setで定義されて、EUC-JPに変換 > して以下のエラーが出るから今char-set:kanjiはchar-set:emptyにしています。 このエラーはsrfi-14.scmのバグでした。次のパッチを当てれば通ります。 ただ、jisx0213文字集合にマップされる漢字がかなりあるので、それに対応した 端末で見ないとchar-set:kanjiの表示はちゃんと見ることができないと 思います。jisx0213, 0208, 0201に対応する文字が無い場合はゲタ(〓)に マップされますが、文字集合として扱うぶんには問題ないかな。 =================================================================== RCS file: /cvsroot/gauche/Gauche/lib/srfi-14.scm,v retrieving revision 1.11 diff -u -r1.11 srfi-14.scm --- srfi-14.scm 5 Jul 2003 03:29:11 -0000 1.11 +++ srfi-14.scm 20 Nov 2003 11:24:14 -0000 @@ -248,12 +248,13 @@ (%char-set-add-range! base low (- upper 1)) (begin (when (< low 128) - (%char-set-add-range! base low 128)) - (do ((i 128 (+ i 1))) + (%char-set-add-range! base low 128) + (set! low 128)) + (do ((i low (+ i 1))) ((>= i upper) base) (let ((c (ucs->char i))) (if c - (%char-set-add! base c) + (%char-set-add-range! base c c) (if error? (error "unicode character #\\u~8,'0x is not supported in the native character set (~a)" i (gauche-character-encoding))))) =================================================================== > ハングルもキリルも幾つか文字集合を定義しましたが、勿論UTF-8だけです。 キリルは無理矢理jisx0208の記号にマップできるかも? このような、(自然)言語依存の処理をまとめるモジュール階層が欲しいなと 思っています。Unicodeの正規化やcase mapping等も、まともに処理するには 色々補助ライブラリが必要になりそうですし。 日本語の形態素解析等もそういった階層に混ぜるとすれば、候補は lang.* か、あるいは text.* とするか… ただ、文字レベルとテキストレベルの処理は混ぜない方が良いのかなとか、 色々迷うところもあります。 --shiro