変換テーブルとは、文字から文字へのマッピングを規定する文字テーブル(文字テーブルを参照)のことです。これらのテーブルは、エンコードやデコード、およびその他の目的で使用されます。一部の符号化方式では独自の変換テーブルを規定していますが、他のすべての符号化方式に適用されるデフォルトの変換テーブルも存在します。
変換テーブルには2つの追加スロットがあります。1つ目は nil
または逆変換を行う変換テーブルであり、2つ目は文字シーケンスの変換時に参照する最大文字数です(後述の make-translation-table-from-alist の説明を参照してください)。
この関数は、引数 translations に基づく変換テーブルを返します。translations の各要素は (from . to)
形式の要素のリストである必要があり、これは文字 from を to に変換することを意味します。
引数および各引数内の形式は順に処理され、先行する形式で既に to が別の文字(例えば to-alt)に変換されている場合、from も to-alt に変換される。
デコード時には、通常のデコードによって得られた文字に対して、変換テーブルの変換が適用されます。符号化方式が:decode-translation-tableというプロパティを持つ場合、そこには使用する変換テーブル、あるいは順次適用する変換テーブルのリストが指定されます。(これはcoding-system-getによって返される符号化方式のプロパティであり、符号化方式の名称であるシンボルのプロパティではありません。符号化方式の基本概念を参照してください。)最後に、standard-translation-table-for-decodeがnilでない場合、得られた文字はそのテーブルによって変換されます。
エンコード時には、変換テーブルの変換がバッファ内の文字に適用され、変換結果が実際にエンコードされます。コーディングシステムがプロパティ :encode-translation-table
を持つ場合、これにより使用する変換テーブル、または順次適用する変換テーブルのリストが指定されます。さらに、変数 standard-translation-table-for-encode が nil 以外である場合、結果の変換に使用する変換テーブルが指定されます。
これはデコード用のデフォルト変換テーブルです。コーディングシステムが独自の変換テーブルを指定している場合、この変数の値(nil でない場合)が、それらの後に適用されます。
これはエンコーディング用のデフォルト変換テーブルです。コーディングシステムが独自の変換テーブルを指定している場合、この変数の値(nil でない場合)が、それらの後に適用されます。
自己挿入文字は、挿入される前にこの変換テーブルを介して変換されます。検索コマンドも入力をこのテーブルで変換するため、バッファ内の内容とより確実に照合できます。
この変数は、設定されると自動的にバッファローカルになります。
この関数は、バイト(値 0 から #xFF)を文字にマッピングするための、vec で構成される 256
要素の配列である変換テーブルを返します。要素には、未変換のバイトを示す nil
が含まれる場合があります。返されるテーブルの最初の追加スロットには逆マッピング用の変換テーブルが、2 番目の追加スロットには値 1 が格納されています。
この関数を使用すると、各バイトを特定の文字にマッピングする独自のコーディングシステムを簡単に作成できます。define-coding-system の引数 props
において、プロパティ :decode-translation-table と :encode-translation-table
を用いて、それぞれ戻りテーブルと逆変換テーブルを指定できます。
この関数は make-translation-table
に似ていますが、単純な一対一のマッピングではなく、複雑な変換テーブルを返します。alist の各要素は
(from . to) の形式であり、ここで from と to は文字、または文字シーケンスを指定するベクトルのいずれかです。from が文字の場合、その文字は to(すなわち文字または文字シーケンス)に変換されます。from
が文字のベクトルの場合、そのシーケンスは to
に変換されます。返されるテーブルの最初の追加スロットには逆マッピング用の変換テーブルが、2番目の追加スロットにはすべての from 文字シーケンスの最大長が格納されています。