DRCSまわりのシーケンス

シーケンスの種類


DRCSまわりのシーケンスを受信する処理をまず作っています。
自動認識のシーケンス解析部分もいずれ弄らないと行けないけれど、まずは実際の処理の方から。


当初の予定より、遙かに長いシーケンスが出てきたので、その分の処理を次々と書き足していった。
今のところ、以下のシーケンスを認識し、CCS-IDを割り当てる処理が出来た。
処理はまだ割り当てていないので、どれも全て1バイト文字として認識し、不明文字を吐き出す。


2/0 の後にFpが来ることは規格で想定されてなさそうなので、これは種類のカウントに入れていない。ただ、シーケンス自体は認識するよう作ってある。
あと、見ての通り、96をG0に指示可能。


Fp 94/96 ■128種類(2×4×16)
 ESC 2/8-11 Fp
 ESC 2/12-15 Fp

Fp 94^n/96^n ■128種類(2×4×16)
 ESC 2/4 2/8-11 Fp
 ESC 2/4 2/12-15 Fp


Ft 94/96 ( ESC 2/x 2/0 <F> ) ■504種類(2×4×63)
 ESC 2/8-11 2/0 Ft
 ESC 2/12-15 2/0 Ft

Ft 94/96 ( ESC 2/x 2/0 2/x <F> ) ■1,512種類
 ESC 2/8-11 2/0 2/1 Ft
 ESC 2/8-11 2/0 2/2 Ft
 ESC 2/8-11 2/0 2/3 Ft
 ESC 2/12-15 2/0 2/1 Ft
 ESC 2/12-15 2/0 2/2 Ft
 ESC 2/12-15 2/0 2/3 Ft

Ft 94/96 ( ESC 2/x 2/0 2/x 2/x <F> ) ■24,192種類
 ESC 2/8-11 2/0 2/1 2/0-15 Ft
 ESC 2/8-11 2/0 2/2 2/0-15 Ft
 ESC 2/8-11 2/0 2/3 2/0-15 Ft
 ESC 2/12-15 2/0 2/1 2/0-15 Ft
 ESC 2/12-15 2/0 2/2 2/0-15 Ft
 ESC 2/12-15 2/0 2/3 2/0-15 Ft


今後対応予定の符号

 ESC 2/8-15 2/1-3 Fp
 ESC 2/8-15 2/1-3 2/0-15 Fp

 ESC 2/4 2/8-15 2/0 Ft
 ESC 2/4 2/8-15 2/0 2/1-3 Ft
 ESC 2/4 2/8-15 2/0 2/1-3 2/0-15 Ft



他の符号の場合、TSVファイルからIDを元に名前を取り出して画面に表示することになりますが、私用文字集合は無駄に数が多いので、TSVは参照せず、内部処理でIDから名前を作り出すようにしました。

例えば、ESC 2/8-11 2/0 2/1 7/14 であれば、この情報を失わないように32ビットのCCS-IDが振られるので、ここから計算して「DRCS94 2/1 7/14」とか機械的に作られて表示される。


長さ


文字の長さは1バイト、2バイト、3バイト、4バイト以上の4種類があり、終端バイトで選択されます。
今のところ、ISO-IRでは3バイト以上の符号は一つも登録されていないので安心していましたが、DRCSに対応するとなると、問題になる。

ESC 2/4 2/8 2/0 7/0 とかすると、簡単に4バイト以上の符号が使えてしまう。

以上とか言われてもとても困るのだが、どうしたらよいのだろう。



割り当て方法


DRCSを入力した場合、U+FFFDとか吐くより、PUAのどこかに割り当てた方がよいということなので、どうするか検討中。

とりあえず、特別な規定(例えばARIB STD-B24)が無い、標準の状態での処理を想定してみた。

一番簡単なのは、どのFp/Ftでも無関係に、94なら文字2/1~7/14をU+E000~U+E05Dに、96なら2/0~7/15をU+E000~U+E05Fに、割り当てる方法ですかね。
94×94や96×96なら、最初の6400字をU+E000~U+F8FFに、残りをU+F0000~に割り当てれば簡単。

ちなみに4バイト、94^4は、78,074,896字になるようだ。0x4A75410字
BMPの6400字、15面の65534字、16面の65534字を引いてもまだ77,937,428字もある。


ISO/IEC 10646の方は細かいことが分からないのだけど、Unicodeと違って各面65535字全てが使えるという前提であれば、PUAは

00群224面~255面 0x00E00000‐0x00FFFFFF (2,097,152字)
96群~127群 0x60000000‐0x7FFFFFFF (536,870,912字)

なので、96群以降のどこかまで埋まる計算。凄い。

2009/01/16(金)19:37 |Comments(0) |Trackback(0)

製造開発 | プログラミング | コンピュータ | [編集]

▲ページトップ

コメント

コメントの投稿

ISO/IEC 2022エスケープシーケンス処理と内部管理法 ホーム ISO/IEC 2022実装
トラックバック

この記事にトラックバックする(FC2ブログユーザー)
▲ページトップ

カレンダー

09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

プロフィール

miraicorp

Author:miraicorp
未来情報産業(株) 社長

主として「ICカードこれひとつ」や「文字、文字コード」処理、時々C++などについて記述しています。

twitterツイッター

管理用

検索フォーム

お知らせ

コメント等お気軽にどうぞ。

気に入ったら拍手して頂けると、今後の記事を書く際の参考や励みになります。

■お仕事を募集しております
ソフトウェア製造の仕事や、原稿執筆の仕事などを随時受け付けております。
お気軽にご相談下さい

■初めての方へ
こまごまと更新しているため、他にも関連する記事があるかもしれません。
「月別アーカイブ」「検索フォーム」「カテゴリ」などをお試し下さい。
トップページはこちら

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

広告枠

メール

メールはこちら

リンク

このブログをリンクに追加する

RSSリンクの表示

QRコード

QR