UI-OSF-USLP 共同技術資料 日本語EUCの定義と解説 日本語 EUC の定義 1. 適用範囲 本 書 は、オープン・ソフトウェア・ファンデーション (OSF)、 UNIX インターナショナル (UI)、および、 UNIX システム・ラボラ トリーズ・パシフィック (USLP) で共通の日本語文字コードとして 合意された日本語 EUC(Advanced Japanese EUC -- AJEC)の定 義 を記述するものである。 本 書は、1990 年に新たに制定された JIS 補助漢字規格 (JIS X 0212) に関する業界での一貫性のある対応を計るため、EUC の各国 定義部分に関する日本語文字集合の割り当ての定義を発展させたも のであり、従来の EUC の枠組みを変更するものではない。 本定義は 1991 年 11 月現在の情報交換符号に関する国際 規 格 (ISO)及び日本規格(JIS)を参照している。 ま た、本書は JIS 未定義領域の使用法も定義しているが、フォ ントの実装について定めるものではない。 2. 日本語 EUC の定義 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またはそれ以上のカラム数を占める文字型表示装置に有効な値で ある。 3. 未定義領域の使用法 日本規格 JIS X 0208, JIS X 0212 の未定義領域(規格解説にい う「空き」領域)の使用に関して、不必要な混乱と衝突を避けるた めに、その使用方法を次の通りとする。 (1) JIS 未定義領域の中で、次の領域を「共通自由領域」として 定める。 Unapproved Draft 1.7 -1- 1991 年 12 月 10 日 UI-OSF-USLP 共同技術資料 日本語EUCの定義と解説 -- JIS X 0208 の未定義領域のうち、85 区から 94 区ま で の領域 -- JIS X 0212 の未定義領域のうち、78 区から 94 区まで の領域 (2) 共通自由領域には、ユーザ/ベンダ定義文字を割り当てるこ とができる。 4. コードの透過性 上記で定義した全てのコード(未定義領域も含む)に対して、有 効な文字コードの値として扱い、かつ処理中にその値が変更されな いという意味での透過性を保証する。 Unapproved Draft 1.7 -2- 1991 年 12 月 10 日 UI-OSF-USLP 共同技術資料 日本語EUCの定義と解説 日本語 EUC の解説 A. EUC の定義 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) | +--------------------+-------------------------------------------+--------------------+ | | 1XXXXXXX -- -- -- | | |G1 集合 (G1) *5 | 1XXXXXXX 1XXXXXXX -- -- | 各国定義 *6 | | | 1XXXXXXX 1XXXXXXX 1XXXXXXX -- | | +--------------------+-------------------------------------------+--------------------+ | | SS2 1XXXXXXX -- -- | | |G2 集合 (G2) *5 | SS2 1XXXXXXX 1XXXXXXX -- | 各国定義 *6 | | | SS2 1XXXXXXX 1XXXXXXX 1XXXXXXX | | +--------------------+-------------------------------------------+--------------------+ | | SS3 1XXXXXXX -- -- | | |G3 集合 (G3) *5 | SS3 1XXXXXXX 1XXXXXXX -- | 各国定義 *6 | | | SS3 1XXXXXXX 1XXXXXXX 1XXXXXXX | | +--------------------+-------------------------------------------+--------------------+ Unapproved Draft 1.7 -3- 1991 年 12 月 10 日 UI-OSF-USLP 共同技術資料 日本語EUCの定義と解説 *1: 要素の名称は、ISO 2022 (JIS X 0202) に拠る。 *2: 000XXXXX は 00000000-00011111 の範囲の値を取り得る。 *3: 100XXXXX は 10000000-10011111 の範囲の値を取り得る。 *4: 0XXXXXXX は 00100001-01111110 の範囲の値を取り得る。 *5: 1XXXXXXX は 10100000-11111111 の範囲の値を取り得る。 *6: 4 バイト以上の複数バイト文字集合についても同様に定義できる。 B. 日本語 EUC を規定する制御シーケンス 本書は前述したように、1991 年 11 月時点での最新の標準規 格 を 参照している。以下に、この日本語 EUC の定義を規定する制御 シーケンスを示す。 ISO 2022 (JIS X 0202) の観点からは、日本語 EUC というコ ー ド 系は、 SS2/SS3 の利用を除いて、これらが固定的であり、当事 者同志の了解の下に省略されていると解釈される。 B.1 アナウンスシーケンス ----------------------------------+---------------------- 使用する拡張機能 | エスケープシーケンス ----------------------------------+---------------------- 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 ----------------------------------+---------------------- B.2 図形文字集合の指示 (designation) ----------+----------------------------------+-------------------------------- 指示 | エスケープシーケンス | 意味 ----------+----------------------------------+-------------------------------- G0 の指示 | ESC 02/8 04/2 or | ASCII (ANS X3.4-1968) または | ESC 02/8 04/10 | 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 補助漢字 ----------+----------------------------------+-------------------------------- 備考: G1 の指示について 1. JIS X 0208-1990 を指示するエスケープシー ケ ン ス は、 ISO 2022:1986 (JIS X 0202-1991) に拠ってい る。そこでは登録済み集合に対する更新シーケンス が 新 た に規定され、さらに JIS X 0208-1990 が JIS X 0208-1983の更新版と見なされるために、更新シーケン ス (ESC 02/6 04/0)の付加が必要となっている。 Unapproved Draft 1.7 -4- 1991 年 12 月 10 日 UI-OSF-USLP 共同技術資料 日本語EUCの定義と解説 な お、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 の指示 が同じものになる。 2. 本 書では、当該文字集合に関する標準規格の厳密な版 (年号)までは規制していない。そ の た め、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 B.3 図形文字集合の呼び出し (Invocation) --------------+---------------------- 呼び出し | エスケープシーケンス --------------+---------------------- G0 の呼び出し | LS0 (00/15) G1 の呼び出し | LS1R (ESC 07/14) G2 の呼び出し | SS2 (08/14) G3 の呼び出し | SS3 (08/15) --------------+---------------------- C. コード変換 こ の節では、今回定義した日本語 EUC コードと他のコードとの コード変換における留意事項について記述する。 C.1 ISO (JIS) 7 ビット標準コード ここで 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 コードとの 変換における留意事項を、以下に示す。 (1) JIS X 0208-1990 への切り替え(俗にいう“漢字イン”シー ケンス) 厳 密 に JIS X 0208-1990 および ISO 2022:1986 (JIS X 0202-1991) に準拠するシステムでは、G0 への指示シーケン スは以下の通りである。 Unapproved Draft 1.7 -5- 1991 年 12 月 10 日 UI-OSF-USLP 共同技術資料 日本語EUCの定義と解説 (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 用共 (2) JIS X 0212-1990 への切り替え 上述したエスケープシーケンスのバラエティを考慮 す る と、以下のものがある。 (2-1) ESC 2/4 2/8 4/4 ESC 2/4 2/8 F に則ったもの Unapproved Draft 1.7 -6- 1991 年 12 月 10 日 UI-OSF-USLP 共同技術資料 日本語EUCの定義と解説 (2-2) ESC 2/4 4/4 ESC 2/4 F に 則ったもの (2-3) JIS X 0212 用 (3) ASCII (JIS X 0201 ローマ文字) への切り替え(俗にいう“ 漢字アウト”シーケンス) 次のバラエティを考慮する必要がある。 (3-1) ESC 2/8 4/2 ISO 646 Ameri- can version (ASCII; ANS X3.4-1968) (3-2) ESC 2/8 4/10 ISO 646 Japanese ver- sion (JIS X 0201 ロ ーマ文字) (3-3) ESC 2/8 4/0 ISO 646 IRV (3-4) ASCII/JIS X 0201 用 (4) 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 に指 示 Unapproved Draft 1.7 -7- 1991 年 12 月 10 日 UI-OSF-USLP 共同技術資料 日本語EUCの定義と解説 (4-3) JIS X 0201-1976 カタ カナ用 C.2 ISO (JIS) 8 ビット標準コード こ こ で いう 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 ビット 文 字として表わ される。 C.3 シフト JIS コード(MS 漢字コード) 現在のところ、シフト JIS コードにおける JIS X 0212 補助 漢 字集合の業界として共通なコード割り当て(法)は未確定なので、 一般に JIS X 0212 を除いた部分のコード変換しか実現されないこ とに注意が必要である。 C.4 コードの透過性と共通自由領域におけるユーザ/ベンダ定義 文字について 日本語 EUC 以外へのコードにコード変換された後の、 JIS 未定 義領域の文字(ユーザ/ベンダ定義文字を含む)についての透過性 は、保証されていない。 ただ、ユーザ/ベンダ定義文字のフォント情報は別として、コー ド変換において区点コードの対応関係が保存されることが望 ま し い。 Unapproved Draft 1.7 -8- 1991 年 12 月 10 日 UI-OSF-USLP 共同技術資料 日本語EUCの定義と解説 D. 自由領域について 本書で定義した「共通自由領域」は、ユーザ定義文字やベンダ定 義文字を割り当てるために利用可能である。どの領域をどのように 利用するかについては、本書では規定していない。 未 定義領域に関する 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 区まで)の使用 は、他の「自由領域」を使いきった上で、さらにユーザ/ベ ン ダ定義文字を利用したい場合に限る。 E. フォントの取り扱いの問題 フォントの実装は、一般に文字コードと独立して、端末、プリン タ等の表示・印刷装置、ないしは、そのサポート・サブシステムに よっ て 実 現される。本書は最新の JIS 規格を参照しているもの の、既存の(最新でない)多様な日本語表示・印刷装置の利用を排 除しないために、フォントの実装(文字の見え方)については規定 しない。以下、本書で定義した日本語 EUC を実際の表示・印刷 装 置に適応した場合の留意事項を述べる。 (1) JIS X 0212 のフォントを持たない装置では、JIS X 0212 の 文字は表示・印字されない。 (2) JIS X 0208 には、厳密には、1978 年、1983 年、1990 年の 3 つの版があり、それぞれに差がある。 JIS X 0208 の文字 がどのように表示・印字されるかは、装置に実装されたフォ Unapproved Draft 1.7 -9- 1991 年 12 月 10 日 UI-OSF-USLP 共同技術資料 日本語EUCの定義と解説 ントに依存する。 (3) ユーザ/ベンダ定義文字の表示・印字は定義の対象となった 特定の装置に依存し、その他の装置での表示・印字は全く保 証されない。 (4) 表 示装置によって、ANS X3.4 と JIS X 0201 を区別しない か、あるいはどちらか一方のみを実装している場合もある。 Unapproved Draft 1.7 -10- 1991 年 12 月 10 日