C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Shift-JISのビットマップフォントをUnicodeに変換するには


(過去ログ 2 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■2175 / inTopicNo.1)  Shift-JISのビットマップフォントをUnicodeに変換するには
  
□投稿者/ 初心者.NET 一等兵(6回)-(2005/12/20(Tue) 21:58:11)

分類:[VB.NET] 


分類:[VB.NET] 

毎度お世話になっております。m(__)m

タイトル通りなのですが、、、
Shift-JISで表現されているビットマップフォントがあるのですが、そのビットマップフォントを読み込んだ時にUnicodeに変換して、UnicodeをTextBoxに表示させたいのです。

Asc関数を使ったり、System.Text.Encoding等使ったりしたのですが、全く違うコードが出てしまっています。。。

どなたかお助けください!

0
引用返信 編集キー/
■2177 / inTopicNo.2)  Re[1]: Shift-JISのビットマップフォントをUnicodeに変換するには
□投稿者/ 魔界の仮面弁士 少佐(49回)-(2005/12/21(Wed) 10:00:01)

分類:[VB.NET] 

> Shift-JISで表現されているビットマップフォントがあるのですが、
> そのビットマップフォントを読み込んだ時にUnicodeに変換して、
> UnicodeをTextBoxに表示させたいのです。

すみません。上記質問中の「Shift-JISで表現されたフォント」ですとか、
「フォントをUnicode変換して読み込む」ですとか、あるいは
「UnicodeをTextBoxに表示させる」といった意味がわかりませんでした。

(フォントのバイナリ解析の話なのでしょうか?)


たとえば、『あ』という文字についてみると、
 Shift_JIS では 82,A0 というバイナリ
 Unicode(UTF-7) では 2B,4D,45,49,2D というバイナリ
 Unicode(UTF-8) では E3,81,82 というバイナリ
 Unicode(UTF-16LE) では 42,30 というバイナリ
になりますが、それはあくまでバイナリとしてエンコードとした表現であって、
単に文字として見れば、いずれも『あ』という文字なわけですから、
TextBox に表示させる分には、TextBox1.Text = "あ" にしかならない気がします。

# "82-A0" といった文字列として表現したいだけならば、
# ビットマップフォントとは関係の無い話でしょうし……。


できれば、具体的な変換例をあげて、別の表現で再質問して頂けると助かります。

0
引用返信 編集キー/
■2181 / inTopicNo.3)  Re[2]: Shift-JISのビットマップフォントをUnicodeに変換するには
□投稿者/ 初心者.NET 一等兵(7回)-(2005/12/21(Wed) 11:06:00)

分類:[VB.NET] 

魔界の仮面弁士様、ご返信ありがとうございます。

> 上記質問中の「Shift-JISで表現されたフォント」ですとか、
> 「フォントをUnicode変換して読み込む」ですとか、あるいは
> 「UnicodeをTextBoxに表示させる」といった意味がわかりませんでした。
すみません。。。日本語も勉強してきます。m(__;)m

> 具体的な変換例をあげて、別の表現で再質問して頂けると助かります。
簡単に言いますと、
========================================
Label.Text = Hex(AscW(TextBox.Text))
========================================
上記のプログラムですと、例えばTextBoxに"あ"と入力すると、
Labelに"あ"のUnicodeが表示されますよね?
ということをやりたいだけなのです。(^^;

私が現在やろうとしていることは、BMPファイルにフォントが埋め込まれているのですが、
そのBMPファイルをOpenFileDialogで読み込み文字コード(Unicode)を取得させようとしています。

========================================
Dim Filename As String
Dim Uni As String

'ファイル読み込み
Filename = OpenFileDialog.FileName

'文字コード取得
Uni = Filename
TextBox.Text = Hex(AscW(Uni))
========================================
上記のプログラムで試してみたのですが、全く違う文字コードが取得されます。
また、どのBMPファイルを読み込んでも、取得される文字コードが同じになってしまいます。


どうでしょうか。。。お解りになられましたか?(^^;
本当にすみません。m(__;)m


0
引用返信 編集キー/
■2182 / inTopicNo.4)  Re[3]: Shift-JISのビットマップフォントをUnicodeに変換するには
□投稿者/ 中博俊 神(274回)-(2005/12/21(Wed) 11:31:13)
中博俊 さんの Web サイト

分類:[VB.NET] 

BMPファイルに埋め込まれているものは本当に(字形を意味する)フォントなんでしょうか?
そうなると難しいと思います。
でも、うめこまれているのはShift_JISの文字データじゃないですか?

0
引用返信 編集キー/
■2186 / inTopicNo.5)  Re[4]: Shift-JISのビットマップフォントをUnicodeに変換するには
□投稿者/ 初心者.NET 一等兵(8回)-(2005/12/21(Wed) 12:53:41)

分類:[VB.NET] 

中博俊様、ご返信ありがとうございます。

> BMPファイルに埋め込まれているものは本当に(字形を意味する)フォントなんでしょうか?
はい。フォントになっております。

> うめこまれているのはShift_JISの文字データじゃないですか?
確かにShift-JISです。これをUnicodeに変換させなければならないのです。
・・・これはそういうことでしょうか?(^^;

0
引用返信 編集キー/
■2187 / inTopicNo.6)  Re[5]: Shift-JISのビットマップフォントをUnicodeに変換するには
□投稿者/ しおん 二等兵(2回)-(2005/12/21(Wed) 14:17:35)

分類:[VB.NET] 

確認したいのですが、
ファイルのヘッダあたりに埋め込まれている情報を元に文字コードを取り出すと言う事ですよね?
実際のイメージデータを解析して文字を判別すると言う事ではないですよね?
もし、後者なら、かなり大変なのですが。

0
引用返信 編集キー/
■2188 / inTopicNo.7)  Re[3]: Shift-JISのビットマップフォントをUnicodeに変換するには
□投稿者/ 魔界の仮面弁士 中佐(50回)-(2005/12/21(Wed) 14:36:32)

分類:[VB.NET] 

> Label.Text = Hex(AscW(TextBox.Text))
> 上記のプログラムですと、例えばTextBoxに"あ"と入力すると、
> Labelに"あ"のUnicodeが表示されますよね?
> ということをやりたいだけなのです。(^^;

フォントとの関連性がわかりません。

Label や TextBox の Font を変更したところで、
Textプロパティが持つ String が変化するわけでも無いですよね?


> 私が現在やろうとしていることは、BMPファイルにフォントが埋め込まれているのですが、
ビットマップフォントファイル(*.fon)ではなく、
画像としてのビットマップファイル(*.bmp)なのですか?


> そのBMPファイルをOpenFileDialogで読み込み文字コード(Unicode)を取得させようとしています。
すみません、まだ話が見えません……。

そのBMPというファイルの中には、「Shift_JIS で表現可能な文字列」が
何らかの形式で含まれているのですよね。それは、どのようなバイナリで
保持されているのでしょうか? また、Unicode 変換とは何の話なのでしょうか?

そしてそれを、どのような文字列として、TextBox/Label に
表示したいのでしょうか?

幾つか、具体的な例を示していただけると助かります。



例えば、そのBMPのある位置に、82,A0 というバイナリデータがあって、
それを Shift_JIS でデコードすると、『あ』の文字を示しているから、
TextBox には "あ" の文字を表示させておき、Label のほうには、
それを Unicode(UTF-7) でデコードした結果を、"2B-4D-45-49-2D" という
文字列で表示させたい……とか。


> Uni = Filename
> Filename = OpenFileDialog.FileName
> Uni = Filename
> TextBox.Text = Hex(AscW(Uni))
これって、得られたのが「C:\A.TXT」というファイル名だったら、
ファイルパスの先頭の "C" が AscW されて &H0043 になるので、
TextBoxには単に、"43" という文字が表示されますね。

0
引用返信 編集キー/
■2196 / inTopicNo.8)  Re[1]: Shift-JISのビットマップフォントをUnicodeに変換するには
□投稿者/ 囚人 二等兵(1回)-(2005/12/23(Fri) 14:26:11)

分類:[VB.NET] 

こんにちは。
興味深かったので初投稿。まだ見てくれていると嬉しいです。

ここで「ビットマップフォント」や「BMPファイル」が出てきていますが、

>「BMPファイルにフォントが埋め込まれているのですが、」

の一文から、例えば「画像ファイルに"あいうえお"」という字が埋め込まれていると仮定します。

確認しておきたいのですが、フォント自身には「文字コード」なんていう概念はないですよね?
文字コードとは「字体」に対して「あるコード」を割り振っている事です。

「字体に」であって「字形に」ではありません。

フォントがいくら違っても「あ」という字は「あ」という同じ「字体」であると言います。
フォントが違えば「あ」の形が変わるので、そういう場合は「字形」が違うと言います。

なので

>Shift-JISで表現されているビットマップフォントがあるのですが

というのはあり得ない事になります。
フォントの違いとは「字形」の違いであって、文字コードの違いではないからです。

先に仮定した「画像ファイルに"あいうえお"」は「画像」として表現しているので「文字コード」という概念は存在していないことになります。

他の皆さんも仰っていますが、「あいうえお」という「画像」を「文字」として解析するとなると結構な労力になります。OCR の機能を実装することになりますね。

>> うめこまれているのはShift_JISの文字データじゃないですか?
>確かにShift-JISです。これをUnicodeに変換させなければならないのです。

これの根拠は何だったのでしょうか。
こうなると私の先の仮定が間違っていることになります。
フォントであろうが、画像であろうが、「文字コード」という概念はそこには存在しないはずです。
よろしければ、その根拠となった判断材料をお教え願えますか?解決の糸口が掴めるやもしれません。


0
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -