認識エラーからエンコード変更のプレビュNo.27387
久立珍重 さん 10/01/06 12:43
 
IEからUnicodeで出力したテキストファイルの読込時、認識エラーが表示されエン
コードの変更をすると、プレビューでは正常表示されているのに部分的に中黒表示さ
れてしまいます。

同じファイルをメモ帳で開くと正常に表示されます。

BOM等の問題なのかフォントの問題なのかよく判りませんが、何に起因するものなの
でしょうか?

ちなみに、Unicode(UTF-8)でも正常に表示されません。
(メモ帳なら正常に表示されます)

[ ]
RE:27387 認識エラーからエンコード変更のNo.27388
秀丸担当 さん 10/01/06 14:09
 

>IEからUnicodeで出力したテキストファイルの読込時、認識エラーが表示されエン
>コードの変更をすると、プレビューでは正常表示されているのに部分的に中黒表示さ
>れてしまいます。

もしかしたら、フォントに該当の文字が無いのかもしれないです。
Unicodeで開いた後、中黒表示されている状態で、[その他]→[ファイルタイプ別
の設定]→[フォント]より、フォントを変えてみると変化があるかもしれません。
(フォントはエンコードごとに違う設定になるので、Unicodeで開いた後に変更
しないといけないです)

メモ帳で表示されているとのことで、メモ帳で選ばれているフォントと違う場合
は同じにしてみると同じ表示になるかもしれないです。

そういうことではないとしたらちょっとわからないですが、具体的なフォント名
や中黒となる文字の文字コード、OSや秀丸エディタのバージョンなど、詳しいこ
とを教えていただけると何かわかるかもしれません。


[ ]
RE:27388 認識エラーからエンコード変更のNo.27389
久立珍重 さん 10/01/06 18:56
 
早速の返答ありがとうございます。

環境を書かずに失礼しました。

OSは XPsp3
秀丸エディタのバージョンは 7.11(7.05)

メモ帳のフォントはMSゴシックであり秀丸も同じ設定です。
念の為、エンコード変更後に再設定したけれど変化は無かった。

中黒で表示されている文字の実態?はハングルで、その文字コードは

先頭から

  文字サンプル  ・
  Shift-JIS      ---
  EUC            ---
  JIS            ---
  Unicode        0xC8FC
  Unicode(UTF-8) 0xECA3BC

2 文字目以降
  Unicode        0xC548
  Unicode(UTF-8) 0xEC9588

  Unicode        0xCCAD
  Unicode(UTF-8) 0xECB2AD

  Unicode        0xCC3D
  Unicode(UTF-8) 0xECB0BD
と続いてます。

今回再確認したところ、メモ帳で正常表示されるのは Unicode(UTF-8)
で出力したファイルでした。

Unicodeで出力したファイルは正常に表示されませんでした。
妙な気がしてますが、何か勘違いしていたようです。

又、エンコード変更画面の正常表示のプレビューをコピペしてみましたが同じ内容で
した。

[ ]
RE:27389 認識エラーからエンコード変更のNo.27390
秀丸担当 さん 10/01/07 11:23
 

情報ありがとうございます。
該当文字コードで確認することができました。
いろいろ調べてみたところ、概ね理由がわかりました。

とりあえずの対策としては、フォントに「Tahoma」や「MS UI Gothic」を選ぶと
いいと思います。

または、少々危ないかもしれませんが、レジストリをいじってフォントリンクを
追加修正すると、MS ゴシックなどでもOKにすることもできるようです。

Windows Vista, Windows 7 と進むにつれて、これらの問題は解消に向かっている
ようで、Vista, 7においては秀丸エディタでもほぼ大丈夫でした。


------------------------
以下は蛇足かもしれませんが調べたことを書いておきます。

●OSによってフォントリンクが違う
フォントに含まれない文字を別のフォントで代替するフォントリンクという機能
があって、今回のハングル文字もフォントリンクによって表示されているものと
思われます。

WindowsXPではハングルにフォントリンクされているのが Tahoma や MS UI
Gothic などの一部だけのようで、これらのフォントでは秀丸エディタでも大丈夫
でした。
WindowsVista,Windows7では、MS ゴシックなどでも網羅的にフォントリンクさ
れていて、多くのフォントで秀丸エディタでも大丈夫でした。


●APIによってフォントリンクの挙動が違う
プログラム的なことですが、WindowsAPIによるテキスト描画は幾つか種類があっ
て、昔からある方法として主に4つあります。
今回調べてみて、APIによってフォントリンクの挙動が違うことがわかりました。
いずれもフォントリンクは有効なのですが、×と書いたものはフォントリンクの
みが有効で、○と書いたものはフォントリンクを超越して、何でもOKになって
いました。

  WindowsXP,Vista
   × TextOut
   × ExtTextOut
   ○ DrawText
   ○ TabbedTextOut
  Windows7
   ○ TextOut
   ○ ExtTextOut
   ○ DrawText
   ○ TabbedTextOut

TextOut, ExtTextOut はフォントリンクのみで、TahomaやMS UI Gothicではハン
グルが正しく表示されます。
DrawText, TabbedTextOut はなぜかフォントリンクを超越していて、どのフォン
トでもハングルは表示されました。
Windows7においては、全てのAPIでフォントリンクを超越してOKになっていまし
た。

おそらくメモ帳はDrawText,TabbedTextOutのほうを使っているのかもしれないで
す。でもメモ帳でも「MS Pゴシック」だけはNGでした。謎です。
秀丸エディタでも DrawText,TabbedTextOut を使って描画している箇所ではOK
でしたが、ほとんど使っていない箇所だらけなのでだめでした。(例:見出し
バーの描画はOK)


秀丸エディタとしても全面的に DrawText,TabbedTextOut を使うようにすると対
策できると思います。
しかし全面的に影響があるということと、OSとして対策が進んでいるようで、で
きればこのままとさせていただきたいところです。
できるかどうかわりませんが、もしできそうなら検討したいと思います。

[ ]
RE:27390 認識エラーからエンコード変更のNo.27394
久立珍重 さん 10/01/08 11:09
 
解析有難うございました。

全く納得いく内容です。

フォントに絞れなかった事もあり、「Tahoma」や「MS UI Gothic」までは試してなか
ったです。

今後、類似の現象に対しての「Tip」として役立てようと思います。

>または、少々危ないかもしれませんが、レジストリをいじってフォントリンクを
>追加修正すると、MS ゴシックなどでもOKにすることもできるようです。
このあたり暇をみて手探りしてみようと思います。

>Windows Vista, Windows 7 と進むにつれて、これらの問題は解消に向かっている
>ようで、Vista, 7においては秀丸エディタでもほぼ大丈夫でした。
〜〜〜
>以下は蛇足かもしれませんが調べたことを書いておきます。
>
>●OSによってフォントリンクが違う
〜〜〜
>●APIによってフォントリンクの挙動が違う
〜〜〜
いかにもMSらしい。

>秀丸エディタとしても全面的に DrawText,TabbedTextOut を使うようにすると対
>策できると思います。
>しかし全面的に影響があるということと、OSとして対策が進んでいるようで、で
>きればこのままとさせていただきたいところです。
>できるかどうかわりませんが、もしできそうなら検討したいと思います。
フォント変更で対処出来るし、このままで良いと思います。

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

[ ]