| 訳注:これは,宮下尚氏の開発したMule-UCS-0.72パッケージのREADME.Unicode(1999年11月10日改訂版)を私(岸 和孝)が訳したものです。なお,便宜上,見出しの項目番号は付け直しました。 |
Mule-UCSは,自由なソフトウェアです。 あなたは,バージョン2または(あなたの選択において)それより後のバージョンの,Free Software Foundationによって発表されるものとしてGNU General Public Licenseの条件の下でそれを再分配・変更できます。
あなたはMule-UCSと共にGNU General Public Licenseのコピーを受けるべきです。 ファイルCOPYINGを参照してください。 コピーが無ければ,Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USAへ手紙を書いてください。
Mule-UCS自身は全くユニコードに依存していません。 この説明書は,このパッケージにおけるユニコード定義を記述します。
Mule-UCSは,unicode.el,un-data.el,utf.el,un-trbase.el,un-define.elによってユニコードのエンコーディング・デコーディングを実現します。 unicode.elは,主要な部分であって,ユニコード解釈に関する基本的な型を定義します。 それが実行時で必要とされる時,それは自動的にロードされます。 un-data.el,utf.el,un-trbase.elは,変換と解釈をバイトコンパイル時に定義します。 通常,それらは実行時で必要ではありません。 un-define.elは,省略時構成を制御し,実行時環境を設定します。 それは実行時で欠くことができないモジュールです。 Mule-UCSは,少なくとも設定に必要なすべての情報をun-define.elcに埋め込みます。 それゆえに,起動時にそれをロードしなければなりません。 必要であれば,un-define.elは,他のモジュールを自動的にロードします。
Mule-UCSユニコード定義(将来ではMULE-UCS-Unicode)は,他のEmacs Lispライブラリーのための外部の表現と,幾つかのAPIのための多様なコーディングシステムを用意します。
現在,un-tools.elは,UTF-8/16に関する不十分な自動検出のためにだけあります。 Mule 4.1以降ではこのモジュールを必要としません。 このMule機能は,UTF-8/16 でより強力な組み込みの自動検出を持っています。
結局,.emacs,site-start.elまたはその他の構成設定についての最小限の構成は,次の1行だけです。
(require 'un-define)
un-define.elは,次のコーディングシステムを定義します。
| utf-8,utf-8-unix,utf-8-dos,utf-8-mac. |
|---|
UTF-8コーディングシステム。 これらは行末符号に関して異なります。
| utf-8-ws,utf-8-ws-unix,utf-8-ws-dos,utf-8-ws-mac. |
|---|
これらは,utf-8-*コーディングシステムと基本的に全く同一ですが,これらのエンコーダは,先頭にUTF-8サインを追加します。
UTF-16の一つの要素は,2オクテットです。 しかし,そのバイト順序は固定的ではありません。 それゆえ,ビックエンディアンとリットルエンディアンの2種類のコーディングシステムを必要とします。 そして,UTF-16のすべてのエンコーディング形式と構文は,The Unicode Standard(#1)で定義されます。 最初に,条件UTF-16は,ISO/IEC 10646 amendmentによって紹介されました。 UTF-16は,エンコーディング形式においてThe Unicode Standard Version 2.0との互換性を持つように実現されます。 それゆえに,UTF-16を実現する際にThe Unicode Standardに従わなければなりません。 結果として,utf-16-leとutf-16-beの行末符号は,慣習的な形式(LF,CRLF,CR)の代わりに,Unicode Line Separator(U+2028)です。 しかし,慣習的な形式のコーディングシステムもあらかじめ定義されます。 従って,行末符号で不便を感じないでしょう。 しかし,行末符号の自動検出に対して考慮しなければなりません。
| utf-16-le,utf-16-le-unix,utf-16-le-dos,utf-16-le-mac |
|---|
UTF-16コーディングシステム。 これらのバイト順序は,リトルエンディアンです。
| utf-16-be,utf-16-be-unix,utf-16-be-dos,utf-16-be-mac |
|---|
UTF-16コーディングシステム。
これらのバイト順序はビックエンディアンです。 その他の機能は,utf-16-le-*と全く同一です。
UTF-7は,不思議な変換形式です。 これは,7ビットストリームで,RFC822形式におけるunsafe文字の使用を避けます。 詳細については,RFC1642を参照してください。 Mule-UCS-Unicodeによってサポートされるすべてのutf-7エンコーディングシステムは,UTF-16形式をエンコードします。 言い換えれば,それらはThe Unicode Standard Version 2.0によって定義されるすべてのコードポイントをエンコードできます。
| utf-7,utf-7-unix,utf-7-dos,utf-7-mac |
|---|
utf-7コーディングシステム。
これらのコーディングシステムは,集合0の文字を直接エンコードします。
| utf-7-safe,utf-7-safe-unix,utf-7-safe-dos,utf-7-safe-mac |
|---|
これらのコーディングシステムは,シフトされた形式での集合0の文字をエンコードします。 その他の機能は,utf-7-*と全く同一です。
以後,データ型としてCHARACTERを用います。 文字はEmacsで数値で表わされますので,CHARACTERはNUMBERと全く同一です。 しかし,XEmacsでは文字がファーストクラスオブジェクトですので,CHARACTERはNUMBERと全く同一ではありません。 それゆえに,文字データ型を表わすためにCHARACTERを用います。
この関数は,UCSコードポイントから文字を取り出します。 この変換は,unicode-codepoint-to-characterによって与えられます。その解釈規則がunicode-basic-translation-ruleによって指定されます。
この関数は,文字からUCSコードポイントを取り出します。 この変換は,unicode-character-to-codepointによって与えられます。その解釈規則がunicode-basic-translation-ruleによって指定されます。
UCSコードポイントで指定された一文字を挿入します。 このコマンドは,上記のucs-to-char関数を用います。 与えられたUCSから一文字を取り出せた場合,現在のバッファへそれを挿入します。 それが失敗すれば,エラーとなります。
例えば, U+4E00を挿入したい場合,M-x insert-ucs-characterを行い,(どんな引用もなしに)?\x4E00を入力してください。
Mule-UCSは,動的な変更機能を持っています。 それによりあらかじめ定義された解釈を実行時で動的に変更できます(しかし,それらはあらかじめ「動的な解釈」として宣言されていなければなりません)。 この機能を使って,Mule-UCS-Unicodeは,内部の文字とUCS文字との間の変換に対するプライオリティーを変更するための単純な関数を用意します。 しかし単純さゆえに,この関数は動的な変更機能に関する器用さの狭い範囲をサポートします。 動的な変更機能のほとんどを作りたいのであれば,TAE APIを直接呼んでください。
charsetsの変換プライオリティーを変更します。 LISTは,プライオリティーによって指示されたcharsetsのリストでなければなりません。 LISTがnilまたは省略される場合,順序リストとしてunicode-basic-translation-charset-order-listが用いられます。 Mule-UCS-Unicodeは,その順序に従って,内部の文字をエンコードしたり,UCS文字をデコードします。
Mule-UCS-Unicodeは,ユニコードのためのフォントエンコーダをサポートします。 un-define.elをロードすることによって,unicode-font-encoderが設定されます。 そして,それは,Emacsがフォント名を設定するためにXLFDを使う時に,iso10646フォントに関連させられます(逆に,Meadowがfontsetを設定するためにXLFDを直接使わないので,この関連は用いられません)。 そのような関連は,font-ccl-encoder-alistで指定されます。
fontsetにおけるユニコードエンコーディングフォントを設定するための構成例は次のとおりです。
(set-fontset-font "FONTSET NAME" 'CHARSET SYMBOL "*-iso10646-*")
FONTSET NAMEは,fontset名です。 そしてfontset-standardは,Emacsの起動時に作られる省略時のfontsetです。 CHARSET SYMBOLは,ユニコードエンコーディングフォントで表示されるmule charsetのシンボルでなければなりません。 例えば,次の構成は,
(set-fontset-font "fontset-standard" 'latin-iso8859-1 "*-iso10646-*") (set-fontset-font "fontset-standard" 'cyrillic-iso8859-5 "*-iso10646-*")
latin-iso8859-1とcyrillic-iso6659-5の文字を表示するようにユニコードエンコーディングフォントをfontset-standardに設定します。
より単純で容易な構成では,次のように,ユニコードエンコーディングフォントで表示されるcharsetsにx-charset-registryを設定します。
(put-charset-property 'latin-iso8859-1
'x-charset-registry "iso10646")
(put-charset-property 'cyrillic-iso8859-5
'x-charset-registry "iso10646")
(create-fontset-from-fontset-spec
"YOUR FONTSET SPEC")
YOUR FONTSET SPECはXLFDによるフォントの仕様を指定します。 例えば,16ドットフォントを使う場合, "*-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-standard"
(訳注:原文はここまで未完となっています。)
(2001年6月記)