UTF-2000 Project
Last modified: Mon Dec 20 23:21:23 JST 1999
現在の最新版は
XEmacs UTF-2000 0.12 (柏原)
(
XEmacs 21.2.19 への patch
)
です。
UTF-2000 Project って何?
UTF-2000 Project
とは特定の文字符号に依存しない
文書表現・処理・交換のための枠組を開発するための project です。
この project における主な研究対象は、
符号化法 (Character Encoding Scheme; CES) ではなく、
文字のさまざまな属性や『意味』を
特定の文字符号に依存せずに表現することです。
つまり、利用者が表現したいテキストにあわせて自由に符号化文字集合
(Coded Character Set; CCS) を定義・編集可能な枠組を作ろうという訳です。
既に存在する CCS を用いて利用者が自由に CES を定義することは従来の
Mule において既に実現されており、
実際に対象とするテキストにあわせて
異なる文字符号を利用することが可能になっています。
つまり、従来の Mule でも CCS
を単位に利用者が自由にテキストの表現を定義・変更可能であった訳です。
UTF-2000 Project では
これをさらに一歩進めて、CCS
単位ではなく文字単位でも定義・変更可能にしようという訳です。
UTF-2000
ではこの目標を実現するために
文字に関するデータベースを直接利用・編集可能な
テキスト処理系を開発します。
符号空間としては UTF-8 もしくは UCS-4 の構造を基本とし、
この空間の中で利用者が自由に文字を割り当て可能な実装を開発します。
初期状態ではこの空間は ISO/IEC 10646 に適合した形で割り当てられます。
即ち、#x00000000 〜 #x0000FFFF は基本多言語面 (BMP) であり、#x00010000
〜 #x0001FFFF は拡張非漢字面であり、#x00020000 〜 #x0002FFFF
は拡張漢字面であり、このように 先頭から 17 面分は Unicode と同一であり、
それ以外の文字は私的領域に割り当てるような形になっています。
ISO/IEC 2022 の図形文字集合用や諸橋漢字などのために、#x00E00000 〜
#x00FFFFFF を利用することもしています。
しかしながら、利用者は設定によって
これらの構造を無視した文字の割り当ても可能にします。
また、そうした場合でも、他の CCS
定義のテキスト表現との間でテキストを適切に交換可能にします。
計画
第1期においては XEmacs を元に、文字列・buffer 表現として UTF-8,
文字表現として UCS-4 の符号空間を持った実装を開発し、UTF-2000
におけるテキスト処理における問題点を洗い出し、基礎技術を確立します。
その後、GNU Emacs を元により簡素な実装も行います。
第2期においては、UTF-2000 実装での user interface やその他の
application を開発し、XEmacs/Emacs UTF-2000 実装の実用化を行います。
第3期には GNU libc, Gnome, Guile
などの異なった環境・条件での実装を開発し、OS 全体の UTF-2000
化に関する検討を行います。
Mailing List
UTF-2000 project に関する議論等は UTF-2000 mailing list で行っています。
UTF-2000 project に参加したい方、UTF-2000
実装を使ってみたい方、UTF-2000 実装についての質問・要望、その他
UTF-2000 に関する議論に参加したい方をお待ちしています。
UTF-2000 mailing list に参加希望の方は
utf-2000-ctl@m17n.org
宛に
subscribe あなたの名前
の一行を書いた mail をお送りください。
その後、確認の mail を届きますので、その mail の中にある
confirm PASSWORD あなたの名前
の1行を本文にして返事を送ってください。
XEmacs UTF-2000
XEmacs UTF-2000 0.12 (柏原) における変更点
- 文字定義が存在しない文字の encode に関する問題を修正した
- 文字結合に関する表 Vcharacter_composition_table を追加した
(文字属性 `->decomposition' の逆を記述する。文字属性
`->decomposition' の値から作成する)。
また、これに伴い、関数 get-composite-char (LIST) を追加した。
LIST に対応する結合文字が存在すればその文字を返す関数である。
LIST の要素は、文字、UCS-4 の文字符号、``symbolic
character''(後述)の名前 (symbol) である
- これに伴い "symbolic character" を導入する。これは symbol
で表現され、通常の符号表現を持たない『文字のようなもの』で、
主に結合文字を表現するために用いる。例えば `circle'
を使って `(circle ?1)' で丸の中に1が入った文字を表現できる。
現在の実装では内部的には負の文字番号を持つ(UCS-4
の範囲外の値になる)
[TODO] 任意の "symbolic character" を定義・利用できるようにする
(SGML/XML の実体参照のように利用できると良いかも)
- 異体字に関する表 Vcharacter_variant_table
を追加した。またこれを参照するための関数 char-variants
(CHARACTER) を追加した。これは文字の異体字の list を返す
- coded-charset `ethiopic-ucs' を新設した。これにより、CCL
を使わずにエチオピア(ゲーズ)文字が表示できるようになった
- coded-charset `lao' を新設した。intlfonts-1.2 等にある Mule-Lao
font を入れていれば UCS
のラオ文字を表示できる
(しかし、文字結合ができる訳ではないので
ラオ語が扱えるようになった訳ではない)
- put-char-attribute/define-char で GR
表現の符号化文字集合の符号位置を受理するようにした(内部的には
GL 表現に正規化される)
- M-x what-char-definition [CR]
で現在位置の文字定義を表示できるようにした。この他文字定義 file
の開発用 utility を含んだ utf-2000/char-db-util.el を追加した
(あんまりちゃんとしてませんが)
[TODO] ucs-conv の what-character を置き換える
- 文字定義 file utf-2000/u00400-Cyrillic.el,
utf-2000/u00530-Armenian.el, utf-2000/u00590-Hebrew.el,
utf-2000/u00600-Arabic.el, utf-2000/u00700-Syriac.el,
utf-2000/u00780-Thaana.el, utf-2000/u00900-Devanagari.el,
utf-2000/u00980-Bengali.el, utf-2000/u00A00-Gurmukhi.el,
utf-2000/u00A80-Gujarati.el, utf-2000/u00B00-Oriya.el,
utf-2000/u00B80-Tamil.el, utf-2000/u00C00-Telugu.el,
utf-2000/u00C80-Kannada.el, utf-2000/u00D00-Malayalam.el,
utf-2000/u00D80-Sinhala.el, utf-2000/u00E00-Thai.el,
utf-2000/u00E80-Lao.el, utf-2000/u00F00-Tibetan.el,
utf-2000/u01000-Myanmar.el, utf-2000/u010A0-Georgian.el,
utf-2000/u01100-Hangul-Jamo.el, utf-2000/u01200-Ethiopic.el,
utf-2000/u013A0-Cherokee.el, utf-2000/u01400-Canadian.el,
utf-2000/u01680-Ogham.el, utf-2000/u016A0-Runic.el,
utf-2000/u01780-Khmer.el, utf-2000/u01800-Mongolian.el,
utf-2000/u01E00-Latin-Extended-Additional.el,
utf-2000/u01F00-Greek-Extended.el,
utf-2000/u02000-General-Punctuation.el,
utf-2000/u02070-Superscripts.el, utf-2000/u02080-Subscripts.el,
utf-2000/u020A0-Currency-Symbols.el,
utf-2000/u020D0-Combining-Diacritical-Marks-for-Symbols.el
utf-2000/u02100-Letterlike-Symbols.el,
utf-2000/u02150-Number-Forms.el, utf-2000/u02190-Arrows.el,
utf-2000/u02200-Mathematical-Operators.el,
utf-2000/u02300-Miscellaneous-Technical.el,
utf-2000/u02400-Control-Pictures.el, utf-2000/u02440-OCR.el,
utf-2000/u02460-Enclosed-Alphanumerics.el,
utf-2000/u02500-Box-Drawing.el, utf-2000/u02580-Block-Elements.el,
utf-2000/u025A0-Geometric-Shapes.el,
utf-2000/u02600-Miscellaneous-Symbols.el,
utf-2000/u02700-Dingbats.el, utf-2000/u02800-Braille-Patterns.el,
utf-2000/u02E00-CJK-Radical-Supplement.el,
utf-2000/u02F00-Kangxi-Radicals.el,
utf-2000/u02FF0-Ideographic-Description-Characters.el,
utf-2000/u03000-CJK-Symbols-and-Punctuation.el,
utf-2000/u03040-Hiragana.el, utf-2000/u030A0-Katakana.el,
utf-2000/u03100-Bopomofo.el,
utf-2000/u03130-Hangul-Compatibility-Jamo.el,
utf-2000/u03190-Kanbun.el, utf-2000/u031A0-Extended-Bopomofo.el,
utf-2000/u03200-Enclosed-CJK-Letters-and-Months.el,
utf-2000/u03300-CJK-Compatibility.el を追加した
- coded-charset `latin-viscii' の情報を
utf-2000/u00020-Basic-Latin.el,
utf-2000/u000A0-Latin-1-Supplement.el,
utf-2000/u00100-Latin-Extended-A.el,
utf-2000/u00180-Latin-Extended-B.el に merge した。これに伴い、
utf-2000/ccs-viscii.el を廃止した
- bytecomp.el で file に非 Latin-1 文字が存在する時、comment
中の非 Latin-1 文字を無視して coding-system を反対するようにした
(comment を削除するという大技を使っているので心配;
きっともっと良い方法があるに違いない(とマーチンも書いていた
(^_^;))。
また、raw-text で符号化する時、`byte-compile-dynamic'
と `byte-compile-dynamic-docstrings'
を利用できるようにした(つもり)
;; 本当にうまくいっているのか自信無し(^_^;;;
作成の仕方
少なくとも configure に --with-mule, --without-wnn, --with-utf-2000
を指定してください(まだ、Wnn は support されていません)。
また --with-text-coding も付けた方が良いかも知れません。
- 例
- % ./configure --with-mule --without-xim --without-wnn
--with-utf-2000 --with-text-coding
あとは通常の XEmacs の作成と何ら変わる所はありません。
- 例
- % make
% make install
また、configure に --with-utf-2000 等を指定しないことで
non-Mule/Mule XEmacs を作ることができます。
Sample Images
文書
参考文献
Links