[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 10245] Re: Effective Java 第 4 回議事録




みやざき@biglobe%ぱーそなるめでぃあだったりするのです(ぉ

On 2002.08.27, at 00:29, Tetsu Ito wrote:
3 超漢字はどのような文字コードを使用しているのか
 TRONコードです。これは16ビットの面を16ビットコードで
切り替えるものです。現在は31面が割り当てられていますが
理論上は 32log10(2)桁、、えー数億個のコードが利用できる。
と言うコードです。そして字形が異なる文字にはすべてコードが
振られている。10万文字を越える文字にコードを具体的に
割り当てられている。など、多言語環境を構築するのに適した
文字コードといえます。

とりあえず、TRONコードの補足を。

コード自体は16bit(2バイト)の一部の領域を1つの"面"としています。
1つの面には 48400個の文字が割り当てられています。これを必要に
応じて面単位でコードマップを切り替えます。上位バイトが 0xfeで
始まる2バイトにより実現されます。2バイトの面切り替えを使用する
ことで(予約バイトを除いた)220(面) * 48400(文字)=10648000(文字)
になります。また、もしここで下位バイトに0xfeがきた場合には、
更に別の面へと切り替えることができます。これを繰り返すことで
理論上は無限に面を追加することができるはずです。

なお、超漢字の実装では、伊藤さんのご指摘通り31面分を用意しています。
# 31*48400=1500400 になるので、150万の売り文句はここに由来します。

もちろん、この方式に問題が無いわけではなく、例えば、
ランダムに指し示した位置(x)の文字コードがわかったとしても、
(x)の位置では現在どのような面であるかを判定しない限り、
グリフが決定できないことが挙げられます。
# もっとも、文字列構造をパースして何らかの形に
# 変換してしまえばいいだけの話なのですが。

参考URL: http://www.tron.org/tron-s/btron/shared_data/tron_code.html

蛇足>>
Adobe Systemsが出している CIDフォント用のコード(CIDコード)が
個人的には良いコード表ではないかと思っています。
参考URL: http://partners.adobe.com/asn/developer/technotes/fonts.html
# "Adobe-Japan 1-4 Character Collection for CID-Keyed Fonts"あたりとか。

-----
みやざき やすし
E-mail: soara@xxxxxxxxxxxxx, soara@xxxxxxxxxx