文字セット記述 (charmap) ソース・ファイル・フォーマット
目的
文字記号を文字エンコードとして定義します。
説明
文字セット記述 (charmap) ソース・ファイルは、文字シンボルを文字エンコードとして定義します。 /usr/lib/nls/charmap ディレクトリーには、サポートされるロケールの charmap ソース・ファイルが入っています。 localedef コマンドは、 charmap ソース・ファイル内の CHARMAP セクションと CHARSETID セクションの 2 つのセクションを認識します。
| 項目 | 説明 |
|---|---|
| マップ | 記号文字名をコード・ポイントにマップします。 このセクションは、他のすべてのセクションの前になければならず、必須です。 |
| 文字セット ID | コード・セット内のコード・ポイントを文字セット ID にマップします。 このセクションはオプションです。 |
The CHARMAP section
charmap ファイルの CHARMAP セクションは、シンボリック文字名をコード・ポイントにマップします。 サポートされるすべてのコード・セットには、適切なサブセットとしてポータブル文字セットがあります。 CHARMAP セクションに定義する必要があるのは、ポータブル文字セットに定義されていないシンボルのみです。 ポータブル文字セットは、以下の文字記号 (標準化されたシンボル名でリストされます) とエンコードで構成されます。
| シンボル名 | コード (16 進数) |
|---|---|
| <NUL> | 000 |
| <SOH>> | 001 |
| <STX> | 002 |
| <ETX> | 003 |
| <EOT> | 004 |
| <ENQ> | 005 |
| <ACK> | 006 |
| <alert> | 007 |
| <backspace> | 008 |
| <tab> | 009 |
| <new-line> | 00A |
| <vertical-tab> | 00B |
| <form-feed> | 00C |
| <carriage-return> | 00D |
| <SO> | 00E |
| <SI> | 00F |
| <DLE> | 010 |
| <DC1> | 011 |
| <DC2> | 012 |
| <DC3> | 013 |
| <DC4> | 014 |
| <NAK> | 015 |
| <SYN> | 016 |
| <ETB> | 017 |
| <CAN> | 018 |
| <EM> | 019 |
| <SUB> | 01A |
| <ESC> | 01B |
| <IS4> | 01C |
| <IS3> | 01D |
| <IS2> | 01E |
| <IS1> | 01F |
| <space> | 020 |
| <exclamation-mark> | 021 |
| <quotation-mark> | 022 |
| <number-sign> | 023 |
| <dollar-sign> | 024 |
| <percent> | 025 |
| <ampersand> | 026 |
| <apostrophe> | 027 |
| <left-parenthesis> | 028 |
| <right-parenthesis> | 029 |
| <asterisk> | 02A |
| <plus-sign> | 02B |
| <comma> | 02C |
| <hyphen> | 02D |
| <period> | 02E |
| <slash> | 02F |
| <zero> | 030 |
| <one> | 031 |
| <two> | 032 |
| <three> | 033 |
| <four> | 034 |
| <five> | 035 |
| <six> | 036 |
| <seven> | 037 |
| <eight> | 038 |
| <nine> | 039 |
| <colon> | 03A |
| <semi-colon> | 03B |
| <less-than> | 03C |
| <equal-sign> | 03D |
| <greater-than> | 03E |
| <question-mark> | 03F |
| <commercial-at> | 040 |
| <A> | 041 |
| <B> | 042 |
| <C> | 043 |
| <D> | 044 |
| <E> | 045 |
| <F> | 046 |
| <G> | 047 |
| <H> | 048 |
| <I> | 049 |
| <J> | 04A |
| <K> | 04B |
| <L> | 04C |
| <M> | 04D |
| <N> | 04E |
| <O> | 04F |
| <P> | 050 |
| <Q> | 051 |
| <R> | 052 |
| <S> | 053 |
| <T> | 054 |
| <U> | 055 |
| <V> | 056 |
| <W> | 057 |
| <X> | 058 |
| <Y> | 059 |
| <Z> | 05A |
| <left-bracket> | 05B |
| <backslash> | 05C |
| <right-bracket> | 05D |
| <circumflex> | 05E |
| <underscore> | 05F |
| <grave-accent> | 060 |
| <a> | 061 |
| <b> | 062 |
| <c> | 063 |
| <d> | 064 |
| <e> | 065 |
| <f> | 066 |
| <g> | 067 |
| <h> | 068 |
| <i> | 069 |
| <j> | 06A |
| <k> | 06B |
| <l> | 06C |
| <m> | 06D |
| <n> | 06E |
| <o> | 06F |
| <p> | 070 |
| <q> | 071 |
| <r> | 072 |
| <s> | 073 |
| <t> | 074 |
| <u> | 075 |
| <v> | 076 |
| <w> | 077 |
| <x> | 078 |
| <y> | 079 |
| <z> | 07A |
| <left-brace> | 07B |
| <vertical-line> | 07C |
| <right-brace> | 07D |
| <tilde> | 07E |
| <DEL> | 07F |
CHARMAP セクションには、以下のセクションが含まれます。
- このCHARMAPセクション・ヘッダー。
- オプションの特殊シンボル名宣言セクション。 シンボル名と値は、1 つ以上のブランク文字で区切る必要があります。 以下に、特殊なシンボル名とその意味を示します。
項目 説明 <code_set_name> charmap ファイルを定義するコード化文字セットの名前を指定します。 この値は、 nl_langinfo サブルーチンによって戻される値を決定します。 < code_set_name> は、制御文字とスペース文字を除き、ポータブル文字セットの任意の文字を使用して指定する必要があります。 <mb_cur_max> エンコード文字セットのマルチバイト文字の最大バイト数を指定します。 有効な値は 1 から 4 です。 デフォルト値は 1 です。 <mb_cur_min> エンコード文字セットのマルチバイト文字の最小バイト数を指定します。 サポートされるすべてのコード・セットには、適切なサブセットとしてポータブル文字セットがあるため、この値は 1 でなければなりません。 <escape_char> 16 進表記または 8 進表記でエンコードを示すエスケープ文字を指定します。 デフォルト値は ¥ (バックスラッシュ) です。 <comment_char> charmap ファイル内のコメントを示すために使用される文字を指定します。 デフォルト値は # (ポンド記号) です。 文字シンボル・エンコードに続くオプションのコメントを除き、コメントは行の最初の桁のコメント文字で開始する必要があります。 - 定義されたコード・セットの文字セット・マッピング・ステートメント。
このセクションの各ステートメントは、文字エンコードのシンボル名を定義します。 文字シンボルは、以下で始まります。<(より小) 文字で終わります。>(より大) 文字。 以下の間の文字<(より小) および>(より大) は、制御文字とスペース文字を除く、ポータブル文字セットの任意の文字にすることができます。 この>(より大) 文字は、エスケープ文字 ( < escape_char> 特殊シンボル名によって指定される) でエスケープされる場合に使用できます。 文字記号の長さは 32 文字を超えることはできません。
文字記号定義の形式は次のとおりです。
エンコードは、 < mb_cur_max> 特殊シンボル名によって指定される文字定数の最大数を使用して、1 つ以上の文字定数として指定されます。 localedef コマンドは、以下の形式の 10 進定数、8 進定数、および 16 進定数をサポートします。<char_symbol> encoding optional comment
文字シンボル定義の例をいくつか以下に示します。hexadecimal constant \xddd octal constant \oddd decimal constant \dddd
1 つ以上のシンボル名および対応するエンコード値の範囲を定義することもできます。この場合、各シンボル名の非数値接頭部は共通であり、2 番目のシンボル名の数値部分は、最初のシンボル名の数値部分以上になります。 この形式では、シンボル名の値は、ゼロ個以上の非数字と、それに続く 1 つ以上の 10 進数字の整数で構成されます。 この形式は、一連のシンボル名を定義します。 例えば次のようなストリングがあるとします。<j0101>...<j0104>次として解釈されます<j0101>,<j0102>,<j0103>および<j0104>記号名 (この順序で)。<A> \d65 decimal constant <B> \x42 hexadecimal constant <j10101> \x81\d254 mixed hex and decimal constantsシンボル名の範囲を定義するステートメントでは、エンコードされた値は範囲内の最初のシンボル名の値です。 後続のシンボル名には、昇順のエンコード値があります。 次に例を示します。
この文字セット・マッピング・ステートメントは、次のように解釈されます。<j0101>...<j0104> \d129\d254
シンボル名は固有でなければなりませんが、複数のシンボル名が同じ値を持つことができます。<j0101> \d129\d254 <j0102> \d129\d255 <j0103> \d130\d0 <j0104> \d130\d1 - このEND CHARMAPセクション・トレーラー。
例
以下の例は、 charmap ファイルからの可能な CHARMAP セクションの一部です。
CHARMAP
<code_set_name> ISO8859-1
<mb_cur_max> 1
<mb_cur_min> 1
<escape_char> \
<comment_char> #
<NUL> \x00
<SOH> \x01
<STX> \x02
<ETX> \x03
<EOT> \x04
<ENQ> \x05
<ACK> \x06
<alert> \x07
<backspace \x09
<tab> \x09
<newline> \x0a
<vertical-tab> \x0b
<form-feed> \x0c
<carriage-return> \x0d
END CHARMAPCHARSETID セクション
CHARSETID セクションは、コード・セット内のコード・ポイントを文字セット ID にマップします。 CHARSETID セクションには、以下のセクションが含まれます。
- このCHARSETIDセクション・ヘッダー。
- 定義されたコード・セットの文字セット ID マッピング。
- このEND CHARSETIDセクション・トレーラー。
文字セット ID マッピングは、記号名または記号名のコード・ポイント、およびそれらに関連する文字セット ID をリストすることによって定義されます。 以下に、文字セット ID マッピング・ステートメントに使用できる形式を示します。
<character_symbol> number
<character_symbol>...<character_symbol> number
character_constant number
character_constant...character_constant numberこの<character_symbol>CHARMAP セクションに事前に定義しておく必要があります。 このcharacter_constantCHARMAP セクションで説明されているフォーマットに従う必要があります。
個々の文字セット・マッピングは、記号名 ( CHARMAP セクションまたはポータブル文字セットで定義される) の後に文字セット ID を指定するか、または記号名に関連したコード・ポイントの後に文字セット ID 値を指定することによって行われます。 記号名とコード・ポイントは、1 つ以上のブランク文字で文字セット ID 値と区切る必要があります。 記号名とコード・ポイント値の適切な組み合わせを範囲のエンドポイントとして示すことにより、コード・ポイントの範囲を文字セット ID 値にマップすることができます。...(省略符号) は中間文字を示し、その後に範囲の文字セット ID が続きます。 最初のエンドポイント値は、2 番目のエンドポイント値以下でなければなりません。
例
以下は、 charmap ファイルからの可能な CHARSETID セクションの部分の例です。
CHARSETID
<space>...<nobreakspace> 0
<tilde>...<y-diaeresis> 1
END CHARSETID