UI-OSF-USLP 共同技術資料 / 日本語EUCの定義と解説
本書は、オープン・ソフトウェア・ファンデーション (OSF)、 UNIX インターナショナル (UI)、および、 UNIX システム・ラボラトリーズ・パシフィック (USLP) で共通の日本語文字コードとして合意された日本語 EUC(Advanced Japanese EUC -- AJEC)の定義を記述するものである。
本書は、1990 年に新たに制定された JIS 補助漢字規格 (JIS X 0212) に関する業界での一貫性のある対応を計るため、EUC の各国定義部分に関する日本語文字集合の割り当ての定義を発展させたものであり、従来の EUC の枠組みを変更するものではない。
本定義は 1991 年 11 月現在の情報交換符号に関する国際規格(ISO)及び日本規格(JIS)を参照している。
また、本書は JIS 未定義領域の使用法も定義しているが、フォントの実装について定めるものではない。
AJEC として定義する日本語 EUC の文字集合、バイト数、文字表示幅の情報は、以下の通りである。
コードセット | バイト数 | 表示幅 | 文字集合 |
---|---|---|---|
0 | 1 | 1 | ANS X 3.4 (ASCII) |
1 | 2 | 2 | JIS X 0208 |
2 | 1 | 1 | JIS X 0201 カタカナ |
3 | 2 | 2 | JIS X 0212 |
ただし、バイト数はシングルシフトを除いた数値である。
また、表示幅は ASCII 文字が1カラムを占め、その他の文字が1またはそれ以上のカラム数を占める文字型表示装置に有効な値である。
日本規格 JIS X 0208, JIS X 0212 の未定義領域(規格解説にいう「空き」領域)の使用に関して、不必要な混乱と衝突を避けるために、その使用方法を次の通りとする。
-
JIS 未定義領域の中で、次の領域を「共通自由領域」として定める。
-
JIS X 0208 の未定義領域のうち、85 区から 94 区までの領域
-
JIS X 0212 の未定義領域のうち、78 区から 94 区までの領域
-
-
共通自由領域には、ユーザ/ベンダ定義文字を割り当てることができる。
上記で定義した全てのコード(未定義領域も含む)に対して、有効な文字コードの値として扱い、かつ処理中にその値が変更されないという意味での透過性を保証する。
EUC は、AT&T 日 本語 UNIX システム諮問委員会から 1985 年 AT&T に提案された「UNIX システム日本語機能提案書」の中で定義された日本語用 UNIX 内部コード体系を基に、 AT&T ベル研究所で世界各国で使用可能なように拡張したコード体系である。
そのコード拡張法は、1 バイト文字および複数バイト文字を同時に扱うことができる ISO 2022 のコード拡張法に準拠して定義されており、ISO 2022 に準拠した文字集合であれば、世界各国の文字集合を適用できるように設計されている。
EUC では、ISO 2022 で許されている最大 4 つの文字集合を、ロッキングシフトを用いることなく、同時に処理することができる。基本コードセット(G0 集合)にはシステムの基本文字集合である ASCII 文字集合を固定的に割り当て、 3 つの補助コードセット(G1〜G3 集合)に各国(ユーザ)独自の文字集合を割り当てる。そのコード系の定義は、次の通り。
コード表現 | .. | .. | .. | ||
---|---|---|---|---|---|
コードセット要素 1 | 1 バイト | 2 バイト | 3 バイト | 4 バイト | 対応規格/文字集合 |
C0 集合 (C0) 2 | 000XXXXX | -- | -- | -- | ISO 646 |
C1 集合 (C1) 3 | 100XXXXX | -- | -- | -- | (ISO 6429) |
間隔文字 (SP) | 00100000 | -- | -- | -- | |
抹消文字 (DEL) | 01111111 | -- | -- | -- | |
G0 集合 (G0) 4 | 0XXXXXXX | -- | -- | -- | ASCII (ISO 646 variant) |
G1 集合 (G1) 5 | 1XXXXXXX | -- | -- | -- | 各国定義 6 |
.. | 1XXXXXXX | 1XXXXXXX | -- | -- | .. |
.. | 1XXXXXXX | 1XXXXXXX | 1XXXXXXX | -- | .. |
G2 集合 (G2) 5 | SS2 | 1XXXXXXX | -- | -- | 各国定義 6 |
.. | SS2 | 1XXXXXXX | 1XXXXXXX | -- | .. |
.. | SS2 | 1XXXXXXX | 1XXXXXXX | 1XXXXXXX | .. |
G3 集合 (G3) 5 | SS3 | 1XXXXXXX | -- | -- | 各国定義 6 |
.. | SS3 | 1XXXXXXX | 1XXXXXXX | -- | .. |
.. | SS3 | 1XXXXXXX | 1XXXXXXX | 1XXXXXXX | .. |
本書は前述したように、1991 年 11 月時点での最新の標準規格を参照している。以下に、この日本語 EUC の定義を規定する制御シーケンスを示す。
ISO 2022 (JIS X 0202) の観点からは、日本語 EUC というコード系は、 SS2/SS3 の利用を除いて、これらが固定的であり、当事者同志の了解の下に省略されていると解釈される。
使用する拡張機能 | エスケープシーケンス |
---|---|
G0 を GL に LS0 によって呼び出す | ESC 02/0 05/0 |
G1 を GR に LS1R によって呼び出す | ESC 02/0 05/3 |
G2 を SS2 によって呼び出す | ESC 02/0 05/10 |
G3 を SS3 によって呼び出す | ESC 02/0 05/11 |
C1 を使用する | ESC 02/0 04/7 |
指示 | エスケープシーケンス | 意味 |
---|---|---|
G0 の指示 | ESC 02/8 04/2 or ESC 02/8 04/10 |
ASCII (ANS X3.4-1968) または JIS X 0201-1976 ローマ文字集合 |
G1 の指示 | ESC 02/6 04/0 ESC 02/4 02/9 04/2 | JIS X 0208-1990 漢字 |
G2 の指示 | ESC 02/10 04/9 | JIS X 0201-1976 カタカナ |
G3 の指示 | ESC 02/4 02/11 04/4 | JIS X 0212-1990 補助漢字 |
Note
備考: G1 の指示について
-
JIS X 0208-1990 を指示するエスケープシーケンスは、 ISO 2022:1986 (JIS X 0202-1991) に拠っている。そこでは登録済み集合に対する更新シーケンスが新たに規定され、さらに JIS X 0208-1990 が JIS X 0208-1983の更新版と見なされるために、更新シーケンス (ESC 02/6 04/0) の付加が必要となっている。
なお、ISO 2022:1986 (JIS X 0202-1991) の古い版、 ISO 2022:1982 (JIS X 0202-1984) に準拠したシステムでは、この更新シーケンスは未定義なので、対応のエスケープシーケンスは、
ESC 02/4 02/9 04/2
となり、JIS X 0208-1990 と JIS X 0208-1983 の指示が同じものになる。 -
本書では、当該文字集合に関する標準規格の厳密な版(年号)までは規制していない。そのため、JIS X 0208-1983、JIS X 0208-1978 を指示するシステムでは、エスケープシーケンスはそれぞれ次のようになる。
G1 に JIS X 0208-1983 を指示 ESC 02/4 02/9 04/2
G1 に JIS X 0208-1978 を指示 ESC 02/4 02/9 04/0
呼び出し | エスケープシーケンス |
---|---|
G0 の呼び出し | LS0 (00/15) |
G1 の呼び出し | LS1R (ESC 07/14) |
G2 の呼び出し | SS2 (08/14) |
G3 の呼び出し | SS3 (08/15) |
この節では、今回定義した日本語 EUC コードと他のコードとのコード変換における留意事項について記述する。
ここで ISO (JIS) 7 ビット標準コードとは、 ISO 2022:1982 (JIS X 0202-1984) より古い版に準拠したシステムでも対応が可能なように、基本文字集合としての ASCII(JIS X 0201 ローマ文字)を G0 に、 JIS X 0201 カタカナを G1 に、デフォルトとして指示し(designate)、呼び出し(invoke)、 JIS X 0208 および JIS X 0212 を G0 のマルチバイト集合として適切なエスケープシーケンスを用いて切り替えながら、指示し、呼び出すコード系をいう。 このISO (JIS) 7 ビット標準コードと日本語 EUC コードとの変換における留意事項を、以下に示す。
-
JIS X 0208-1990 への切り替え(俗にいう“漢字イン”シーケンス)
厳密に JIS X 0208-1990 および ISO 2022:1986 (JIS X 0202-1991) に準拠するシステムでは、G0 への指示シーケンスは以下の通りである。
(1-1) ESC 2/6 4/0 ESC 2/4 2/8 4/2 ただし、旧版の ISO 2022 (JIS X 0202) や旧版の JIS X 0208 (1978年版、1983年版) を使用しているシステムでは、
- ESC 2/6 4/0 のような更新番号シーケンスがサポートされていない
- JIS X 0208-1978 か JIS X 0208-1983 しかサポートされていない
- G0 へのマルチバイト文字集合の指示シーケンスとして、ESC 2/4 2/8 F の代わりに ESC 2/4 F が用いられている場合がある
- さらに、ベンダ固有の“漢字イン”シーケンスが用いられている場合がある
ことから、次のようなエスケープシーケンスの使用もあり得るので、それらを考慮したコード変換(双方向とも)が望ましい。
(1-2) ESC 2/4 2/8 4/2 JIS X 0208-1983/1990 の指示 (1-3) ESC 2/4 2/8 4/0 JIS X 0208-1978 の指示 (1-4) ESC 2/4 4/2 JIS X 0208-1983/1990 の指示 (1-5) ESC 2/4 4/0 JIS X 0208-1978 の指示 (1-6) ESC 2/6 4/0 ESC 2/4 4/2 JIS X 0208-1990 の指示 (1-7) JIS X 0208-1978/1983/1990 用共 -
JIS X 0212-1990 への切り替え
上述したエスケープシーケンスのバラエティを考慮すると、以下のものがある。
(2-1) ESC 2/4 2/8 4/4 ESC 2/4 2/8 F に則ったもの (2-2) ESC 2/4 4/4 ESC 2/4 F に則ったもの (2-3) JIS X 0212 用 -
ASCII (JIS X 0201 ローマ文字) への切り替え(俗にいう“漢字アウト”シーケンス)
次のバラエティを考慮する必要がある。
(3-1) ESC 2/8 4/2 ISO 646 American version (ASCII; ANS X3.4-1968) (3-2) ESC 2/8 4/10 ISO 646 Japanese version (JIS X 0201 ローマ文字) (3-3) ESC 2/8 4/0 ISO 646 IRV (3-4) ASCII/JIS X 0201 用 -
JIS X 0201 カタカナへの切り替え
JIS X 0201 カタカナが G1 集合に指示されている場合は、一般にその呼び出しは、シフトアウト (SO; 0/14) で呼び出される。
(4-1) SO (0/14) G1 集合(カタカナ)への切り替え なお、この場合 G0 (ASCII/JIS X 0201 ローマ文字) への“復帰”は、
(3-5) SI (0/15) G0 集合への切り替え で行われるので、コード変換において SI/SO の処理が必要となる。
一方、この JIS X 0201 カタカナを G1 集合に指示するのではなく、他の文字集合と同じように、G0 集合に指示し呼び出して利用しているものもあるので、その点も注意が必要である。
(4-2) ESC 2/8 4/9 JIS X 0201-1976 カタカナを G0 に指示 (4-3) JIS X 0201-1976 カタカナ用
ここでいう ISO (JIS) 8 ビット標準コードとは、前述の ISO (JIS) 7 ビット標準コードを 8 ビット系に拡張したもので、基本文字集合としての ASCII (JIS X 0201 ローマ文字)を G0 に指示し GL に呼び出し、 JIS X 0201 カタカナを G1 に指示して GR に呼び出し、 JIS X 0208 および JIS X 0212 は G0 のマルチバイト集合として適切なエスケープシーケンスを用いて切り替えながら、指示し GL に呼び出すコード系のことである。そのコードと日本語 EUC コードとの変換の留意事項は、次の JIS X 0201 カタカナの変換に関するものを除いて、 ISO (JIS) 7 ビット標準コードの場合と同じである。
(4-4) | JIS X 0201 | デフォルトとして G1 に指示され、GR に呼び出される(ESC 02/9 04/9 の発行を仮定)。ただし、この制御シーケンスは、当事者同志の了解の下に省略されていると解釈される。従って、JIS X 0201 カタカナは 1 バイトの 8 ビット文字として表わされる。 |
現在のところ、シフト JIS コードにおける JIS X 0212 補助漢字集合の業界として共通なコード割り当て(法)は未確定なので、一般に JIS X 0212 を除いた部分のコード変換しか実現されないことに注意が必要である。
日本語 EUC 以外へのコードにコード変換された後の、 JIS 未定義領域の文字(ユーザ/ベンダ定義文字を含む)についての透過性は、保証されていない。
ただ、ユーザ/ベンダ定義文字のフォント情報は別として、コード変換において区点コードの対応関係が保存されることが望ましい。
本書で定義した「共通自由領域」は、ユーザ定義文字やベンダ定義文字を割り当てるために利用可能である。どの領域をどのように利用するかについては、本書では規定していない。
未定義領域に関する JIS 規格の「解説」では、標準が将来の拡張のために確保する「保留領域(としての性格が強い領域)」と、当事者間で一時的・局所的に割り当て可能な「自由領域(としての性格が強い領域)」が定められている。 JIS 規格の解説は規格の一部ではないものの、本書ではその意向に基づいて「共通自由領域」を定めた。これは、将来の JIS 改定による文字追加とユーザ/ベンダ定義文字との衝突を最大限回避するためのものである。
共通自由領域は、JIS 規格で区単位に未定義となっている領域の中から、以下の基準で選択した。
- 既にベンダ定義文字が割り当てられている可能性が大で、新たに共通自由領域とすると混乱を招く領域を除く。(JIS X 0208 の 9 区から 15 区)
- JIS 規格の解説で、「自由領域」とされている領域を含む。(JIS X 0208 および X 0212 の 85 区から 94 区)
- ユーザ/ベンダ定義文字をできるだけ多く確保するために、残りの未定義領域の中で、最大限連続している領域を含む。(JIS X 0212 の 78 区から 84 区)
なお、これらの領域の利用にあたっては、以下の方針を推奨する。
- ユーザ/ベンダ定義文字は、 JIS X 0208 および JIS X 0212 ともに、94 区から 85 区の順に使用する。
- JIS X 0212 の「保留領域」(78 区から 84 区まで)の使用は、他の「自由領域」を使いきった上で、さらにユーザ/ベンダ定義文字を利用したい場合に限る。
フォントの実装は、一般に文字コードと独立して、端末、プリンタ等の表示・印刷装置、ないしは、そのサポート・サブシステムによって実現される。本書は最新の JIS 規格を参照しているものの、既存の(最新でない)多様な日本語表示・印刷装置の利用を排除しないために、フォントの実装(文字の見え方)については規定しない。以下、本書で定義した日本語 EUC を実際の表示・印刷装置に適応した場合の留意事項を述べる。
- JIS X 0212 のフォントを持たない装置では、JIS X 0212 の文字は表示・印字されない。
- JIS X 0208 には、厳密には、1978 年、1983 年、1990 年の 3 つの版があり、それぞれに差がある。 JIS X 0208 の文字がどのように表示・印字されるかは、装置に実装されたフォ ントに依存する。
- ユーザ/ベンダ定義文字の表示・印字は定義の対象となった特定の装置に依存し、その他の装置での表示・印字は全く保証されない。
- 表示装置によって、ANS X3.4 と JIS X 0201 を区別しないか、あるいはどちらか一方のみを実装している場合もある。
Unapproved Draft 1.7 / 1991 年 12 月 10 日