Emacsの文字セット(character
set、もしくはcharset)とは、それぞれの文字が数字のコードポイントに割り当てられれた文字セットのことです(Unicode標準ではこれを符号化文字集合(coded
character
set)と呼ぶ)。Emacsの各文字セットはシンボルであるような名前をもちます。1つの文字が任意の数の異なる文字セットに属することができますが、各文字セット内で異なるコードポイントをもつのが一般的でしょう。文字セットの例にはascii
、iso-8859-1
、greek-iso8859-7
、windows-1255
が含まれます。文字セット内で文字に割り当てられるコードポイントは、Emacs内のバッファーや文字列内で使用されるコードポイントとは通常は異なります。
Emacsは特別な文字セットをいくつか定義しています。文字セットunicode
はEmacsコードポイントが0..#x10FFFF
の範囲のすべての文字セットを含みます。文字セットemacs
はすべてのASCII、および非ASCII文字を含みます。最後にeight-bit
文字セットは8ビットrawバイトを含みます。テキスト内でrawバイトを見つけたときにEmacsはこれを使用します。
objectは文字セットを命名するシンボルならt
、それ以外はnil
をリターンする。
値はすべての定義済み文字セットの名前のリスト。
この関数はすべての定義済み文字セットの優先順にソートされたリストをリターンする。highestpが非nil
なら、この関数はもっとも優先度の高い文字セット1つをリターンする。
この関数はcharsetsをもっとも高い優先度の文字セットにする。
この関数はcharacterが属する文字セットで、もっとも優先度の高い文字セットの名前をリターンする。ただしASCII文字は例外であり、この関数は常にascii
をリターンする。
restrictionが非nil
なら、それは検索する文字セットのリストであること。かわりにコーディングシステムも指定でき、その場合にはそのコーディングシステムによりサポートされている必要がある(コーディングシステムを参照)。
この関数は文字セットcharsetのプロパティをリターンする。たとえcharsetがシンボルだったとしても、これはそのシンボルのプロパティリストと同じではない。文字セットプロパティにはドキュメント文字列、短い名前等、その文字セットに関する重要な情報が含まれる。
この関数はcharsetのプロパティpropnameに与えられたvalueをセットする。
この関数はcharsetのプロパティpropnameの値をリターンする。
このコマンドは文字セットcharset内の文字のリストを表示する。
Emacsは文字の内部的な表現と、その文字の特定の文字セット内でのコードポイントを相互に変換することができます。以下はこれらをサポートするための関数です。
この関数はcharset内でcode-pointに割り当てられた文字をEmacsの対応する文字にデコードしてリターンする。そのコードポイントの文字がcharsetに含まれなければ値はnil
。
後方互換性のためにcode-pointがLispのfixnum (most-positive-fixnumを参照)に収まらなければ、コンスセル(high
.
low)
として指定できる。ここでlowは値の下位16ビット、highは高位16ビット。この使用方法は時代遅れである。
この関数はcharset内で文字charに割り当てられたコードポイントをリターンする。charsetがcharにたいするコードポイントをもたなければ値はnil
。
以下の関数は文字セット内の文字の一部、またはすべてにたいして特定の関数を適用するのに有用です。
charset内の文字にたいしてfunctionを呼び出す。functionは2つの引数で呼び出される。1つ目はコンスセル(from
.
to)
であり、fromとtoはcharset内に含まれる文字の範囲。argは2つ目の引数としてfunctionに渡される。argが省略された際にはnil
が渡される。
デフォルトではfunctionに渡されるコードポイントの範囲にはcharset内のすべての文字が含まれるが、オプションの引数from-codeおよびto-codeは、charsetのこれら2つのコードポイント間の文字に範囲をする。これらのいずれかがnil
の場合のデフォルトは、それぞれcharsetの最初または最後のコードポイント。from-codeとto-codeはcharsetのコードポイントであって、Emacsの文字のコードではないことに注意。
対照的に、functionに渡されるコンスセルにおけるfrom-codeとto-codeの値は、Emacsの文字コードである。
これらのEmacs文字コードはUnicodeコードポイント、あるいはUnicode文字の範囲0..#x10FFFF
を超えて拡張されたEmacs内部コードポイントのいずれか(テキストの表現方法を参照)。後者はUnicodeに未統合の文字を指定する文字セットにたいするコードポイント用の過去のCJK文字セットであり滅多に使用されない。