こんにちは。初めまして。
いつもこちらのHPを拝見して勉強させていただいてます。
今回、VB6.0(Windows XP)で作成しているツールで、Unicode文字の
入力、表示、ファイル出力(UTF16BE)を実現させるべく調査中です。
VB標準のコントロールでは、Unicodeに対応していないとのことで、
こちらのサイトにも掲載されていた、WebBrowserを使用してUnicode対応の
テキストボックスを作成してみましたが、私用領域(E000-F8FF)に定義
されているUnicode文字が正しく表示されません。(「・」になります)
ファイルの入出力は正常に動作しており、入力時およびファイル読み込み時の
文字列をダンプしてバイトオーダーを比較したところ一致しています。
同じバイトオーダーにもかかわらず、入力した文字にマッピングされないので、
何が原因なのかがさっぱりわからないのです。
ご教授いただけないでしょうか?
> 私用領域(E000-F8FF)に定義されているUnicode文字が
> 正しく表示されません。(「・」になります)
こちらの環境では、状況を再現できません。
とりあえず手元の環境で、
WebBrowser1.Document.write "たとえば「" & ChrW(&HE000) & "」とか。"
のようにして、WebBrowser に外字を渡してみましたが、問題なく、
作成した外字を表示する事ができています。
ただし、ファイルを渡す手法(IPersistFile経由 or Navigateメソッド)の場合は、
UTF-16BE のファイルを渡すと、文字コードの判定に失敗してしまいましたが、
それも、BOM付きのUTF-16ビッグエンディアンならば問題ありませんでしたし。
> 入力した文字にマッピングされないので、
WebBrowser にどのように表示させるのか、にもよりますが、
とりあえず関係がありそうな所としては、.document.charset や
.document.body.runtimeStyle.font、あるいは lang 設定あたりでしょうか。
お忙しいところ回答ありがとうございます。
どうにか解決することができました!
今回使用しているフォントは独自のフォントで、WebBrowserで作成している
コントロール側で明示的にフォントを指定しなければならなかったようです。
魔界の仮面弁士さんがおっしゃった
>> 入力した文字にマッピングされないので、
>WebBrowser にどのように表示させるのか、にもよりますが、
>とりあえず関係がありそうな所としては、.document.charset や
>.document.body.runtimeStyle.font、あるいは lang 設定あたりでしょうか。
これをヒントに下記のようにフォントを指定しました。
Set TextControl = doc.CreateElement("INPUT")
TextControl.Type = "text"
With TextControl.runtimeStyle
.Width = "100%"
.Height = "100%"
↓↓↓ ここです!(UserControlのフォントに独自のフォントを指定しています。)
.Fontfamily = UserControl.Font
End With
かなり行き詰まっていたので解決してよかったです!
本当にありがとうございました。
ツイート | ![]() |