Next: , Previous: , Up: Non-ASCII Characters   [Contents][Index]


34.7 文字セット

Emacsの文字セット(character set、もしくはcharset)とは、それぞれの文字が数字のコードポイントに割り当てられれた文字セットのことです(Unicode標準ではこれを符号化文字集合(coded character set)と呼ぶ)。Emacsの各文字セットはシンボルであるような名前をもちます。1つの文字が任意の数の異なる文字セットに属することができますが、各文字セット内で異なるコードポイントをもつのが一般的でしょう。文字セットの例にはasciiiso-8859-1greek-iso8859-7windows-1255が含まれます。文字セット内で文字に割り当てられるコードポイントは、Emacs内のバッファーや文字列内で使用されるコードポイントとは通常は異なります。

Emacsは特別な文字セットをいくつか定義しています。文字セットunicodeはEmacsコードポイントが0..#x10FFFFの範囲のすべての文字セットを含みます。文字セットemacsはすべてのASCII、および非ASCII文字を含みます。最後にeight-bit文字セットは8ビットrawバイトを含みます。テキスト内でrawバイトを見つけたときにEmacsはこれを使用します。

Function: charsetp object

objectは文字セットを命名するシンボルならt、それ以外はnilをリターンする。

Variable: charset-list

値はすべての定義済み文字セットの名前のリスト。

Function: charset-priority-list &optional highestp

この関数はすべての定義済み文字セットの優先順にソートされたリストをリターンする。highestpが非nilなら、この関数はもっとも優先度の高い文字セット1つをリターンする。

Function: set-charset-priority &rest charsets

この関数はcharsetsをもっとも高い優先度の文字セットにする。

Function: char-charset character &optional restriction

この関数はcharacterが属する文字セットで、もっとも優先度の高い文字セットの名前をリターンする。ただしASCII文字は例外であり、この関数は常にasciiをリターンする。

restrictionが非nilなら、それは検索する文字セットのリストであること。かわりにコーディングシステムも指定でき、その場合にはそのコーディングシステムによりサポートされている必要がある(Coding Systemsを参照)。

Function: charset-plist charset

この関数は文字セットcharsetのプロパティをリターンする。たとえcharsetがシンボルだったとしても、これはそのシンボルのプロパティリストと同じではない。文字セットプロパティにはドキュメント文字列、短い名前等、その文字セットに関する重要な情報が含まれる。

Function: put-charset-property charset propname value

この関数はcharsetのプロパティpropnameに与えられたvalueをセットする。

Function: get-charset-property charset propname

この関数はcharsetのプロパティpropnameの値をリターンする。

Command: list-charset-chars charset

このコマンドは文字セットcharset内の文字のリストを表示する。

Emacsは文字の内部的な表現と、その文字の特定の文字セット内でのコードポイントを相互に変換することができます。以下はこれらをサポートするための関数です。

Function: decode-char charset code-point

この関数はcharset内でcode-pointに割り当てられた文字をEmacsの対応する文字にデコードしてリターンする。そのコードポイントの文字がcharsetに含まれなければ値はnil

後方互換性のためにcode-pointがLispのfixnum (most-positive-fixnumを参照)に収まらなければ、コンスセル(high . low)として指定できる。ここでlowは値の下位16ビット、highは高位16ビット。この使用方法は時代遅れである。

Function: encode-char char charset

この関数はcharset内で文字charに割り当てられたコードポイントをリターンする。charsetcharにたいするコードポイントをもたなければ値はnil

以下の関数は文字セット内の文字の一部、またはすべてにたいして特定の関数を適用するのに有用です。

Function: map-charset-chars function charset &optional arg from-code to-code

charset内の文字にたいしてfunctionを呼び出す。functionは2つの引数で呼び出される。1つ目はコンスセル(from . to)であり、fromtocharset内に含まれる文字の範囲。argは2つ目の引数としてfunctionに渡される。argが省略された際にはnilが渡される。

デフォルトではfunctionに渡されるコードポイントの範囲にはcharset内のすべての文字が含まれるが、オプションの引数from-codeおよびto-codeは、charsetのこれら2つのコードポイント間の文字に範囲をする。これらのいずれかがnilの場合のデフォルトは、それぞれcharsetの最初または最後のコードポイント。from-codeto-codecharsetのコードポイントであって、Emacsの文字のコードではないことに注意。 対照的に、functionに渡されるコンスセルにおけるfrom-codeto-codeの値は、Emacsの文字コードである。 これらのEmacs文字コードはUnicodeコードポイント、あるいはUnicode文字の範囲0..#x10FFFFを超えて拡張されたEmacs内部コードポイントのいずれか(Text Representationsを参照)。後者はUnicodeに未統合の文字を指定する文字セットにたいするコードポイント用の過去のCJK文字セットであり滅多に使用されない。