m17n ライブラリ 1.8.4
|
文字セットオブジェクトとそれに関する API. [詳解]
マクロ定義 | |
#define | MCHAR_INVALID_CODE |
無効なコードポイント. | |
関数 | |
MSymbol | mchar_define_charset (const char *name, MPlist *plist) |
MSymbol | mchar_resolve_charset (MSymbol symbol) |
文字セット名を解決する. | |
int | mchar_list_charset (MSymbol **symbols) |
文字セットを表わすシンボルを列挙する. | |
int | mchar_decode (MSymbol charset_name, unsigned code) |
コードポイントをデコードする. | |
unsigned | mchar_encode (MSymbol charset_name, int c) |
文字コードをエンコードする. | |
int | mchar_map_charset (MSymbol charset_name, void(*func)(int from, int to, void *arg), void *func_arg) |
指定した文字セットのすべての文字に対して関数を呼ぶ. | |
変数 | |
MSymbol | Mcharset |
変数: 文字セットを表現する定義済みシンボル. | |
以下の各シンボルは、定義済み文字セットを表現する。 | |
MSymbol | Mcharset_ascii |
ASCII 文字セットを表現するシンボル. | |
MSymbol | Mcharset_iso_8859_1 |
ISO/IEC 8859-1:1998 文字セットを表現するシンボル. | |
MSymbol | Mcharset_unicode |
Unicode 文字セットを表現するシンボル. | |
MSymbol | Mcharset_m17n |
全文字を含む文字セットを表現するシンボル. | |
MSymbol | Mcharset_binary |
正しくデコードできない文字の文字セットを表現するシンボル. | |
変数: mchar_define_charset 用のパラメータ・キー | |
これらは、関数 mchar_define_charset() 用のパラメータ・キーとして使われるシンボルである。 詳しくはこの関数の解説を参照のこと。 | |
MSymbol | Mmethod |
MSymbol | Mdimension |
MSymbol | Mmin_range |
MSymbol | Mmax_range |
MSymbol | Mmin_code |
MSymbol | Mmax_code |
MSymbol | Mascii_compatible |
MSymbol | Mfinal_byte |
MSymbol | Mrevision |
MSymbol | Mmin_char |
MSymbol | Mmapfile |
MSymbol | Mparents |
MSymbol | Msubset_offset |
MSymbol | Mdefine_coding |
MSymbol | Maliases |
変数: 文字セットのメソッド指定に使われるシンボル | |
これらは、文字セットの メソッド を指定するための定義済みシンボルであり、文字セットの Mmethod パラメータの値となることができる。 この値は関数 mchar_define_charset() の引数として使われる。 メソッドとは、コードポイントと文字コードを相互変換する際の方式のことである。 詳しくは関数 mchar_define_charset() の解説を参照のこと。 | |
MSymbol | Moffset |
MSymbol | Mmap |
マップ型のメソッドを示すシンボル. | |
MSymbol | Munify |
ユニファイ型のメソッドを示すシンボル. | |
MSymbol | Msubset |
サブセット型のメソッドを示すシンボル. | |
MSymbol | Msuperset |
スーパーセット型のメソッドを示すシンボル. | |
文字セットオブジェクトとそれに関する API.
シンボル Mcharset
.
m17n ライブラリは、符号化文字集合 (CCS) を 文字セット と呼ぶオブジェクトで表現する。 m17n ライブラリは多くの符号化文字集合をあらかじめサポートしているし、アプリケーションプログラムが独自に文字セットを追加することも可能である。 一つの文字は複数の文字セットに属してもよい。
m17n ライブラリは、以下の概念を区別している:
unsigned
型によって表される。無効なコードポイントはマクロ MCHAR_INVALID_CODE
で表される。各文字セットオブジェクトは、その文字セットに属する文字のコードポイントと文字コードとの間の変換を規定する。 コードポイントから文字コードへの変換を デコード と呼び、文字コードからコードポイントへの変換を エンコード と呼ぶ。
デコードされた M-text は、キーが Mcharset
であるようなテキストプロパティを持つ。 シンボル Mcharset
は "charset"
という名前を持つ。
#define MCHAR_INVALID_CODE |
無効なコードポイント.
マクロ MCHAR_INVALID_CODE は無効なコードポイントを示す。
MSymbol mchar_define_charset | ( | const char * | name, |
MPlist * | plist | ||
) |
MSymbol mchar_resolve_charset | ( | MSymbol | symbol | ) |
文字セット名を解決する.
関数 mchar_resolve_charset() は symbol が文字セットを示していればそれを返す。
そうでなければ、symbol を文字セット名として正規化し、それが文字セットを示していていれば正規化したものを返す。 そうでなければ、::Mnil を返す。
int mchar_list_charset | ( | MSymbol ** | symbols | ) |
文字セットを表わすシンボルを列挙する.
関数 mchar_list_charsets() は、文字セットを示すシンボルを並べた配列を作り、symbols でポイントされた場所にこの配列へのポインタを置き、配列の長さを返す。
int mchar_decode | ( | MSymbol | charset_name, |
unsigned | code | ||
) |
コードポイントをデコードする.
関数 mchar_decode() は、シンボル charset_name で示される文字セット内の code というコードポイントをデコードして文字コードを得る。
unsigned mchar_encode | ( | MSymbol | charset_name, |
int | c | ||
) |
文字コードをエンコードする.
関数 mchar_encode() は、文字コード c をエンコードしてシンボル charset_name で示される文字セット内におけるコードポイントを得る。
int mchar_map_charset | ( | MSymbol | charset_name, |
void(*)(int from, int to, void *arg) | func, | ||
void * | func_arg | ||
) |
指定した文字セットのすべての文字に対して関数を呼ぶ.
関数 mcharset_map_chars() は charset_name という名前を持つ文字セット中のすべての文字に対して func を呼ぶ。 呼び出しは一文字毎ではなく、連続した文字のまとまり単位で行なわれる。
関数 func にはfrom, to, arg の3引数が渡される。from と to は charset 中の文字コードの範囲を指定する。arg は func_arg と同じである。
MERROR_CHARSET
MSymbol Mcharset_ascii |
ASCII 文字セットを表現するシンボル.
シンボル Mcharset_ascii は "ascii"
という名前を持ち、 ISO 646, USA Version X3.4-1968 (ISO-IR-6) 文字セットを表現する。
MSymbol Mcharset_iso_8859_1 |
ISO/IEC 8859-1:1998 文字セットを表現するシンボル.
シンボル Mcharset_iso_8859_1 は "iso-8859-1"
という名前を持ち、ISO/IEC 8859-1:1998 文字セットを表現する。
MSymbol Mcharset_unicode |
Unicode 文字セットを表現するシンボル.
シンボル Mcharset_unicode は "unicode"
という名前を持ち、Unicode 文字セットを表現する。
MSymbol Mcharset_m17n |
全文字を含む文字セットを表現するシンボル.
シンボル Mcharset_m17n は "m17n"
という名前を持ち、 m17n ライブラリが扱う全ての文字を含む文字セットを表現する。
MSymbol Mcharset_binary |
正しくデコードできない文字の文字セットを表現するシンボル.
シンボル Mcharset_binary は "binary"
という名前を持ち、偽の (fake) 文字セットを表現する。 デコード関数は、M-text のテキストプロパティとして、無効なバイト(シークエンス)に遭遇した位置を付加する。
詳細は コード変換 参照のこと。
MSymbol Mmethod |
MSymbol Mdimension |
MSymbol Mmin_range |
MSymbol Mmax_range |
MSymbol Mmin_code |
MSymbol Mmax_code |
MSymbol Mascii_compatible |
MSymbol Mfinal_byte |
MSymbol Mrevision |
MSymbol Mmin_char |
MSymbol Mmapfile |
MSymbol Mparents |
MSymbol Msubset_offset |
MSymbol Mdefine_coding |
MSymbol Maliases |
MSymbol Moffset |
@brief オフセット型のメソッドを示すシンボル. シンボル #Moffset は <tt>"offset"</tt> という名前を持ち、文字セットの @b Mmethod パラメータの値として用いられた場合には、コードポイントと文字セットの文字コードの間の変換が以下の式に従って行われることを意味する。
文字コード = コードポイント - MIN-CODE + MIN-CHAR
ここで、MIN-CODE は文字セットの @b Mmin_code パラメータの値であり、MIN-CHAR は @b Mmin_char パラメータの値である。
MSymbol Mmap |
マップ型のメソッドを示すシンボル.
シンボル Mmap は "map"
という名前を持ち、文字セットの Mmethod パラメータの値として用いられた場合には、コードポイントと文字セットの文字コードの間の変換がマップを参照することによって行われることを意味する。 マップは Mmapfile パラメータとして与えなければならない。
MSymbol Munify |
ユニファイ型のメソッドを示すシンボル.
シンボル Munify は "unify"
という名前を持ち、文字セットの Mmethod パラメータの値として用いられた場合には、コードポイントと文字セットの文字コードの間の変換が、マップの参照とオフセットの組み合わせによって行われることを意味する。 マップは Mmapfile パラメータとして与えなければならない。 この種の各文字セットには、全文字に対して連続するコードスペースがそれぞれ割り当てられる。
コードポイントがマップに含まれていれば、変換はマップ参照によって行われる。 そうでなければ、以下の式に従う。
CHARACTER-CODE = CODE-POINT - MIN-CODE + LOWEST-CHAR-CODE
ここで、MIN-CODE は文字セットの @b Mmin_code パラメータの値であり、 LOWEST-CHAR-CODE は割り当てられたコードスペースの最も小さい文字コードである。
MSymbol Msubset |
サブセット型のメソッドを示すシンボル.
シンボル Msubset は "subset"
という名前を持ち、文字セットの Mmethod パラメータの値として用いられた場合には、この文字セットが別の文字セット(親文字セット)の部分集合であることを意味する。 親文字セットは Mparents パラメータによって与えられなくてはならない。 コードポイントと文字セットの文字コードの間の変換は、概念的には以下の式に従う。
CHARACTER-CODE = PARENT-CODE (CODE-POINT) + SUBSET-OFFSET
ここで PARENT-CODE は CODE-POINT の親文字セット中での文字コードを返す擬関数であり、SUBSET-OFFSET は @b Msubset_offset パラメータで与えられる値である。
MSymbol Msuperset |
スーパーセット型のメソッドを示すシンボル.
シンボル Msuperset は "superset"
という名前を持ち、文字セットの Mmethod パラメータの値として用いられた場合には、この文字セットが別の文字セット(親文字セット)の上位集合であることを意味する。 親文字セットは Mparents パラメータによって与えられなくてはならない。
MSymbol Mcharset |