プロが教えるわが家の防犯対策術!

こんにちは。

ドットインパクトプリンターに直接印刷する処理を作ります。
プリンタ制御コードはESC/P準拠です。
文字のデザインの制御コードに、ANK文字用と漢字用があるようですが、
出力する文字がANKかどうかを区別して、制御コードを使い分けなければならないのでしょうか?
この制御コードの使い分けを避けるためには、ANK文字を全角に変換して、
全てを漢字として漢字用制御コードで扱うことになるのでしょうか?

よろしくお願いいたします。

A 回答 (3件)

手元に資料がないので概略ですが・・・ANKと漢字混在の印刷について


たぶんプリンタが扱う漢字コードはJISコードなので、まず印字させたい文字をJISコードに変換します。(自前で変換プログラムを作ってもいいし、いろいろなツールを使ってもいいでしょう)
JISコードでは、2バイトコードと1バイトコードの切り替えにエスケープシーケンスがつきます。プリンタにデータを送るときに、これらのコードをESC/Pの制御コードに変換して送ってやればいいはずです。
具体的には、漢字の始まりの[ESC]$Bを[FS]&に、ANKの始まりの [ESC](Bを[FS]. に変換することになると思います。
ただし、JISコードは制定年によって漢字とコードの関係が微妙に変わってますので、プリンタがどの時代のJIS規格に対応しているか調査して変換する必要があるかもしれません。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
プリンタのJIS規格も確認する必要があるのですね!
まったく意識していませんでした・・・

ありがとうございました。

お礼日時:2005/01/13 13:18

ESC/P懐かしいです...



漢字の開始と終了に制御コードを付加する必要があると思います。
漢字コードは7bit JISコードを使用しているため、漢字とANK文字の区別をつける必要があります。
そのため、制御文字が必要となります。
 (ここから漢字が始まります。終わりますの印)
制御コードは1文字単位で付加する必要はなく、ANKと漢字が変わるところのみ付加すれば大丈夫です。

使い分けを避けるためには、全て全角文字に変換して出力することは可能だと思いますが、そのためには、漢字かANKかの判定は行わないと駄目なため、漢字の開始と終了で制御コードを付加する処理を実装してもあまり変わらないと思います。

使っていたのは10年以上前の事なので、もし間違っていたら、ご容赦ください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
やはり、漢字の前後で制御コードが必要になるのですね。
考慮して作っていきたいと思います。
ありがとうございました。

お礼日時:2005/01/13 13:11

>文字のデザインの制御コードに、ANK文字用と漢字用があるようですが、



外字登録の話でしょうか?単純に横幅半分(縦24ドット×横12ドットみたいに)なのがANK文字用で、そうでない(縦24ドット×横24ドットなど)なのが漢字用ではないでしょうか。。

扱える制御コードと使い方はプリンタによって様々なので、資料がなければいろいろやってみるしかないと思います。
大抵は、ANKと漢字を混ぜて印刷する場合、両者を切り替える制御コードを出力して文字コードを出すことになると思いますが。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
質問が、わかりにくくて申し訳ありません。
そして、まずは、単純にANK文字と漢字が混在した文章を出力する場合について、お聞きすべきでした。

例えば、2005/01/12(水)という文字列を出力する場合、
1.[2005/01/12(]までを出力
2.漢字モード設定(FS・&)
3.[水]を出力
4.漢字モード解除(FS・.)
5.[)]を出力
ということをする必要があるのでしょうか?

漢字モードの設定解除がわずらわしければ、最初にANK文字を全角に変換し、
全てを漢字モードで出力するという方法になるのでしょうか?

お礼日時:2005/01/12 13:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!