GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Character-Sets.html ・ emacs-doc.conao3.com

34.7 文字セット

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はこれを用いてテキスト中に現れる生バイトを表現します。

関数: charsetp object

object が文字セット名のシンボルであれば t を、そうでなければ nil を返します。

変数: charset-list

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

関数: charset-priority-list &optional highestp

この関数は、定義済みのすべての文字セットを優先順位順に並べたリストを返します。highestp が nil 以外の場合、この関数は最優先の文字セットを1つだけ返します。

関数: set-charset-priority &rest charsets

この関数は、charsets を最優先の文字セットとします。

関数: char-charset character &optional restriction

この関数は、character が属する最優先の文字セット名を返します。ASCII 文字は例外で、この場合は常に ascii を返します。

restriction が nil 以外の場合、検索対象の文字セットのリストである必要があります。あるいは、コーディングシステムである場合もあり、その場合は返される文字セットがそのコーディングシステムでサポートされている必要があります(コーディングシステム を参照)。

関数: charset-plist charset

この関数は、文字セット charset のプロパティリストを返します。charset はシンボルですが、これはそのシンボルのプロパティリストとは異なります。文字セットのプロパティには、ドキュメント文字列や短縮名など、その文字セットに関する重要な情報が含まれています。

関数: put-charset-property charset propname value

この関数は、charset の propname プロパティを指定された value に設定します。

関数: get-charset-property charset propname

この関数は、charset のプロパティ propname の値を返します。

コマンド: list-charset-chars charset

このコマンドは、文字セット charset に含まれる文字の一覧を表示します。

Emacsでは、文字の内部表現と、特定の文字セットにおけるその文字のコードポイントとの間で変換を行うことができます。以下の2つの関数がこれらの変換をサポートしています。

関数: decode-char charset code-point

この関数は、charset で code-point が割り当てられている文字を対応する Emacs 文字にデコードして返します。charset にそのコードポイントの文字が含まれていない場合、値は nil となります。

後方互換性のため、code-point が Lisp の fixnum(most-positive-fixnum を参照)に収まらない場合は、cons セル (high . low) として指定できます。ここで low は値の下位 16 ビット、high は上位 16 ビットとなります。この用法は現在では廃れています。

関数: encode-char char charset

この関数は、charset 内の文字 char に割り当てられたコードポイントを返します。charset に char のコードポイントが存在しない場合、値は nil となります。

文字セット内の文字の全部または一部に特定の関数を適用する場合、以下の関数が便利です。

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

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 文字セットなどで稀に見られます。