[xyzzy:08250] Re: 質問: ISO-2022-JP における7ビットカタカナ
- Subject: [xyzzy:08250] Re: 質問: ISO-2022-JP における7ビットカタカナ
- From: Yutaka OIWA <yutaka@xxxxxxxxxxxxxxxxxxxxx>
おおいわです。
>> On Wed, 8 May 2002 01:38:15 +0900, fukushi <fukushi@xxxxxxxxxxxxxxxxxx> said:
fukushi> ISO-2022-JP は、ISO-2022 の4面全部が7ビット1文字のカナ
fukushi> (JIS X 0201 片仮名、いわゆる半角カナ)
fukushi> 以外に割り当てられており、
fukushi> いわゆる半角カナは「存在しない」ので使用できない、
fukushi> と覚えていましたが、実際には xyzzy や Emacs(mule)をはじめ、
fukushi> 多くのエディタで ESC(I をエスケープシーケンスとして
fukushi> 半角カナが使えます。
fukushi> このエスケープシーケンス、およびいわゆる半角カナのコード表は、
fukushi> 何の規格で定められているのでしょうか。
いくつか誤解があるようですが、ISO-2022-JP で用いる
ISO 2022 の割り当て面は G0 の1つのみで、この1面に
エスケープシーケンスで4つの文字集合を交互に割り当てて
使用します。この辺りの構造は、例えば ITO Takayuki 氏の
「文字コードの話」 http://euc.jp/i18n/charcode.ja.html#chap4 や、
他にもインターネット上にいくつか詳しい文献があります。
ご質問の件については、いわゆる「半角カタカナ」を規定しているコード表は
まさに JIS X 0201 (の右半分) です。また、ESC ( I の最後の I は、
ISO の登録簿に登録されているこの文字集合を示す終端記号です。
ESC ( ?? は「94文字集合をG0に呼び出す」ISO 2022 のシーケンスですから、
これ全体で「X 0201 のカナ集合を G0 面に呼び出す」ことを示します。
一方 ISO-2022-JP は RFC 1468 (ftp://ftp.nic.ad.jp/rfc/rfc1468.txt)
で規定されていますが、これを ISO 2022 的な解釈をする際の
4面の初期割り当ては
G0 → ASCII、G1〜G3 → なし(使用禁止)
です。これに加えて、ISO-2022-JP では、使用できる
エスケープシーケンスを (したがって文字集合も) 次の物に
制限しています。
(RFC 1468 より引用)
> Esc Seq Character Set ISOREG
>
> ESC ( B ASCII 6
> ESC ( J JIS X 0201-1976 ("Roman" set) 14
> ESC $ @ JIS X 0208-1978 42
> ESC $ B JIS X 0208-1983 87
これらはいずれも該当する文字集合を G0 に呼び出すシーケンスですが、
ここに JIS X 0201-1976 Kana set が (意図的に) 含まれていないので、
韓国語などの他の文字集合と同様に、「半角カタカナ」も使えないわけです。
しかし、現実には ShiftJIS 文字コード系との互換性などから
X 0201 のカタカナを (X 0208 のカタカナとは区別して) 扱いたい
と言う需要は存在するので、いくつかの拡張が存在しています。
例えば G1 → X0201カタカナ集合 とみなして SI/SO を用いる表現や、
G1 集合を 8bit コードを用いて表す流儀もあるようです。
それらのなかで ESC ( I を用いた表現は、
G0 のみを切替えて使うという ISO-2022-JP の設計に準拠している点と、
初期割り当て集合を拡張していないと言う2点において、
ISO-2022-JP のもっとも自然な拡張方法と言えるかと個人的には思います。
--
大岩 寛 Yutaka Oiwa 東京大学大学院 情報理工学系研究科
コンピュータ科学専攻 博士課程 米澤研究室
<oiwa@xxxxxxxxxxxxxxxxxxxxx>, <yutaka@xxxxxxx>
PGP fingerprint = C9 8D 5C B8 86 ED D8 07 EA 59 34 D8 F4 65 53 61