- PR -

漢字からビットマップ変換について(BDF、PCF)

投稿者投稿内容
あぶぽん
大ベテラン
会議室デビュー日: 2005/10/20
投稿数: 205
投稿日時: 2007-12-19 13:29
おそらく、ライセンスの関係で使えないかと思いますが。。

MS明朝やMSゴシック(プロポーショナルもか?)などのフォントには、
Embedded Bitmap Data(EBDT)という形でビットマップが埋め込まれてるらしいです。

breakttcなどのツールで分解できるのですが、どうやって取り出すかは知りません。

8ドット限定の美咲フォントなんかは、ビットマップフォントで、フリーですけどね。。

BDF/PCFっていうのは、話の流れからして、仕様とかではなく
「なんとなく。。」レベルなのかと思っていましたが、本当に仕様だとしたら、
UNIXのツールを探すのが先決ですね。。C#以前に。

組込みとかゲームなんかではビットマップを2値にして独自のフォントを作ってる
ことも多いですよ。

まずは、仕様確認ですか。。。
moco
ベテラン
会議室デビュー日: 2006/05/01
投稿数: 54
投稿日時: 2007-12-19 13:57
みなさん、お忙しいのに優しくアドバイスくださって
本当にありがとうございます。

引用:

学校の課題とかじゃないですよね?
その電光掲示板の仕様は把握されてるんでしょうか。
ビットマップイメージに変換したとしても、そこからまた電光掲示板が
求めているフォーマットに変換する必要があると思いますし。


電光掲示板にどういったデータを送れば良いか確認していました。
あと、これは学校の課題ではないです。
電光掲示板には、表示させたい文字をビットマップに展開し、
電光掲示板のドットマトリクス1行分に相当する16進数を送るという流れでした。

電光掲示板では甕星さんの教えてくださった通り、文字が潰れる恐れがあるので、
ビットマップフォントを使用すると解釈できました。

みなさんにこんなにアドバイス頂いてから
今更「16進数を送れば良い」なんて仕様をお伝えしていますが、
この仕様でしたらフォントの購入・・には結びつかないでしょうか?

私のイメージでは、漢字をBDF or PCFに落とし込んで、
そこから安易にビット配置データを取得できると考えていますが、
どうやってやるか等、
まだよくわかってません。バカでごめんなさい。。

あと、あぶぽんさんありがとうございます。
教えてくださったサイト、今見ています。
あぶぽん
大ベテラン
会議室デビュー日: 2005/10/20
投稿数: 205
投稿日時: 2007-12-19 14:35
まるっきり追い詰めるつもりはありませんが。。
「ありがとうございます」と言われて舞い上がって追記してます(*^_^*)

引用:

電光掲示板には、表示させたい文字をビットマップに展開し、
電光掲示板のドットマトリクス1行分に相当する16進数を送るという流れでした。



というのはビットデータということですね?

BDF or PCFでなくても、Bitmapを2値に変換すれば取得できますね。
(参考サイト、英語でごめんなさい)

引用:

みなさんにこんなにアドバイス頂いてから
今更「16進数を送れば良い」なんて仕様をお伝えしていますが、
この仕様でしたらフォントの購入・・には結びつかないでしょうか?



フォントのライセンスの問題は残るかと思いますよ。
学校の課題でないなら、なおさら。。

実は、僕もフリーのフォントで12ドット×12ドットのビットマップを
抽出しましたが、完全に潰れてしまいます。

フリーのビットマップフォントで良いのが見つかれば教えてください。。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-12-19 14:50
引用:

mocoさんの書き込み (2007-12-19 13:57) より:

電光掲示板にどういったデータを送れば良いか確認していました。
あと、これは学校の課題ではないです。
電光掲示板には、表示させたい文字をビットマップに展開し、
電光掲示板のドットマトリクス1行分に相当する16進数を送るという流れでした。

電光掲示板では甕星さんの教えてくださった通り、文字が潰れる恐れがあるので、
ビットマップフォントを使用すると解釈できました。


うーむ、その「ドットマトリクス1行分に相当する16進数」が一番の
キモなんですけどね。
あ、僕らは逆に知らなくても回答はできますけど、moco さんがこ
れから作っていくとなったら、そこを知らないで済ませないでしょう。

たとえばこんな文字があったとします(便宜上8×8で表現)

コード:

□□□□□□□□ 00
□□□■■□□□ 18
□□■□□■□□ 24
□■□□□□■□ 42
□■■■■■■□ 7E
□■□□□□■□ 42
□■□□□□■□ 42
□□□□□□□□ 00


この場合、一般的には横の黒い部分を 1 としたビットで表現して
数値にした形で持ちます。右側の16進数がそれにあたります。
最終的にはフォントからビットを判別して、右側の16進数にあたる
部分を取り出したい、という話ですよね(ライセンスの問題はともか
くとして)。
実際にはその生データを電子掲示板が求めるフォーマットに加工
するとか、実は横じゃなくて縦で変換する必要があるとか(電子掲
示板だとそういうのが多そうな気がします。根拠なし)いろいろ問
題は山積みなわけですが。

引用:

私のイメージでは、漢字をBDF or PCFに落とし込んで、
そこから安易にビット配置データを取得できると考えていますが、
どうやってやるか等、
まだよくわかってません。バカでごめんなさい。。


まず BDF / PCF については忘れてください。やることは上記のよ
うに「文字をビットマップ形式で取得してバイナリデータとして取り
出す」ことだと思うので、この場合フォーマットは関係ないと思い
ます。むしろノイズにしかならなさそう。

あと、個人的には「バカだから〜」とか、そういった理由で謝られ
るのはあまりいい感じはしないです。その文言が努力を放棄して
いるように感じられるというだけですが。
謝られても事態は好転しませんし、謝るぐらいならば自分がで
きること、やらなくてはいけないことを考えた方がよいと思います。


ライセンスに関して。
「どのように使ってもよい」とするフリーなフォントがあればそれを
利用すればよいし(あるのかは調べてません)なければ購入
するか自分で作成するかだと思います。
アルファベットと数字ぐらいであればなんとかなるレベルでしょう
ね。漢字を出力する必要があればまた問題が違ってきます。
そういったことを含めて「仕様を把握してください」と書きました。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-12-19 15:06
引用:

ぽぴ王子さんの書き込み (2007-12-19 14:50) より:
実際にはその生データを電子掲示板が求めるフォーマットに加工
するとか、実は横じゃなくて縦で変換する必要があるとか(電子掲
示板だとそういうのが多そうな気がします。根拠なし)いろいろ問
題は山積みなわけですが。



私が扱った範囲では「横」が多いですね。
縦は一個もみたことないです。

#っていってもただのマトリクスだから
#横に置けば横が縦に、縦が横になるんだけども。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-12-19 15:20
脱線しちゃってゴメンナサイ。

引用:

れいさんの書き込み (2007-12-19 15:06) より:

私が扱った範囲では「横」が多いですね。
縦は一個もみたことないです。

#っていってもただのマトリクスだから
#横に置けば横が縦に、縦が横になるんだけども。


ほうほう、そうなんですか。
そういった組み込み系の仕事はしたことがないので、勝手な
妄想で書いちゃってました。
電子掲示板ってば右から左へ<del>受け流す</del>流れる
のが多いので、縦でスライスして持ってた方が便利なんじゃ
ね?とか思ってたです。まぁ下から上へ<del>見てるだけ</del>
流れるやつもありますしね。そういった処理は内部でやって
くれてるんでしょう。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
moco
ベテラン
会議室デビュー日: 2006/05/01
投稿数: 54
投稿日時: 2007-12-19 15:47
あぶぽんさん、ぽぴ王子さん、れいさん、ありがとうございます^^

引用:

というのはビットデータということですね?
BDF or PCFでなくても、Bitmapを2値に変換すれば取得できますね。


はい、ビットデータのことです。
確かに2進数に自分で書けばokなのですが、全ての文字を2進数で自作するのは大変そうなので、
2進数へ変換後のものがBDF or PCFだったらなぁと思ってました。^^;
ビットマップ展開された文字が2進数表現されているものはないでしょうか・・

引用:

「仕様を把握してください」


仕様の定義が曖昧でご迷惑をおかけしています。
用途・目的は社内プレゼンのみなので、世に出ることはありません。
フォントのライセンス違反に関しては問題ないのかなと思います。
あと、ドットの並びは『縦』、16bitです。


[ メッセージ編集済み 編集者: moco 編集日時 2007-12-19 15:59 ]
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-12-19 16:41
引用:

mocoさんの書き込み (2007-12-19 15:47) より:

確かに2進数に自分で書けばokなのですが、全ての文字を2進数で自作するのは大変そうなので、
2進数へ変換後のものがBDF or PCFだったらなぁと思ってました。^^;
ビットマップ展開された文字が2進数表現されているものはないでしょうか・・


うーむ、誰も全ての文字を「手作業で」変換しろとは言ってないわけで。
さすがにそれは無理というか、普通はコンバータなどを作ってビットマップデータ
をバイナリに落とす作業をさせますよね、コンピュータに。
BDF / PCF については調べればわかりますが、単なるビットマップのデータでは
ありませんよ。
もしかして調べてなくて、こうだったらなぁとかいう願望で書かれてます?
それに、もしも単なるビットの並びをバイナリにしたデータであったとしても、それ
を電子掲示板が要求するフォーマットにあわせてコンバートしなくてはいけま
せん(並びが縦なのですよね?)。であれば最初からそのような形にするコン
バータを作ったほうが早いと思いませんか。

引用:

用途・目的は社内プレゼンのみなので、世に出ることはありません。
フォントのライセンス違反に関しては問題ないのかなと思います。


「社内プレゼンのみで世に出ることはない」から「ライセンス違反しても大丈
夫」という風に読み取れますが、そのつもりでしょうか。まさか…ねえ。
ライセンス的に大丈夫なフォント(しつこいようですが存在するのかどうかすら
調べてません)を探して使用するべきですね。
(れいさんも書かれてますが、MSゴシックなどのフォントはその辺グレーか
黒の可能性があります)
変換するにしても TrueType フォントよりは、最初からビットマップで配布
しているフォントの方がいいでしょうね。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。

スキルアップ/キャリアアップ(JOB@IT)