Emacsの文字セット(またはcharset)とは、各文字に数値コードポイントが割り当てられた文字の集合のことです。(Unicode標準では、これを符号化文字セットと呼びます。)各Emacs文字セットには、シンボルである名前が付けられています。単一の文字は複数の異なる文字セットに属することができますが、通常、各文字セットにおいて異なるコードポイントを持ちます。文字セットの例としては、ascii、iso-8859-1、greek-iso8859-7、windows-1255などが挙げられます。文字セット内で文字に割り当てられたコードポイントは、通常、Emacsのバッファや文字列で使用されるコードポイントとは異なります。
Emacsでは、いくつかの特殊な文字セットが定義されています。文字セット unicode
には、Emacsのコードポイントが 0..#x10FFFF
の範囲内にあるすべての文字が含まれます。文字セット emacs には、すべての ASCII 文字および非 ASCII
文字が含まれます。最後に、eight-bit
文字セットには8ビットの生バイトが含まれており、Emacsはこれを用いてテキスト中に現れる生バイトを表現します。
object が文字セット名のシンボルであれば t
を、そうでなければ nil を返します。
この値は、定義済みのすべての文字セット名のリストです。
この関数は、定義済みのすべての文字セットを優先順位順に並べたリストを返します。highestp が
nil 以外の場合、この関数は最優先の文字セットを1つだけ返します。
この関数は、charsets を最優先の文字セットとします。
この関数は、character が属する最優先の文字セット名を返します。ASCII 文字は例外で、この場合は常に ascii
を返します。
restriction が nil
以外の場合、検索対象の文字セットのリストである必要があります。あるいは、コーディングシステムである場合もあり、その場合は返される文字セットがそのコーディングシステムでサポートされている必要があります(コーディングシステム を参照)。
この関数は、文字セット charset のプロパティリストを返します。charset はシンボルですが、これはそのシンボルのプロパティリストとは異なります。文字セットのプロパティには、ドキュメント文字列や短縮名など、その文字セットに関する重要な情報が含まれています。
この関数は、charset の propname プロパティを指定された value に設定します。
この関数は、charset のプロパティ propname の値を返します。
このコマンドは、文字セット charset に含まれる文字の一覧を表示します。
Emacsでは、文字の内部表現と、特定の文字セットにおけるその文字のコードポイントとの間で変換を行うことができます。以下の2つの関数がこれらの変換をサポートしています。
この関数は、charset で code-point
が割り当てられている文字を対応する Emacs 文字にデコードして返します。charset
にそのコードポイントの文字が含まれていない場合、値は nil となります。
後方互換性のため、code-point が Lisp の fixnum(most-positive-fixnum を参照)に収まらない場合は、cons セル
(high . low) として指定できます。ここで low は値の下位
16 ビット、high は上位 16 ビットとなります。この用法は現在では廃れています。
この関数は、charset 内の文字 char
に割り当てられたコードポイントを返します。charset に char のコードポイントが存在しない場合、値は nil
となります。
文字セット内の文字の全部または一部に特定の関数を適用する場合、以下の関数が便利です。
charset に含まれる文字を取得するには function を呼び出します。function
は2つの引数で呼び出されます。1つ目はコンスセル (from .
to) で、from と to は charset に含まれる文字の範囲を示します。function に渡される2番目の引数は arg であり、arg が省略された場合は nil となります。
デフォルトでは、function に渡されるコードポイントの範囲には charset のすべての文字が含まれますが、オプション引数の from-code および to-code を指定すると、その範囲は
charset のこれら2つのコードポイント間の文字に限定されます。いずれかが nil の場合、それぞれ charset
の最初または最後のコードポイントがデフォルトとなります。なお、from-code と to-code は charset のコードポイントであり、文字の
Emacs コードではありません。対照的に、function に渡される cons セル内の値 from と to は、Emacs の文字コードです。これらの Emacs 文字コードは、Unicode コードポイントであるか、あるいは Unicode
を拡張し、Unicode の文字範囲 0..#x10FFFF を超える Emacs
内部コードポイントのいずれかです(テキスト表現 を参照)。後者は、Unicode
とまだ統合されていない文字を指定する charset のコードポイントを持つレガシーな CJK
文字セットなどで稀に見られます。