locked
Vista上のIE7でsans-serifで指定された部分のフォントが異常(?)になる RRS feed

  • 質問

  • Windows Vista Ultimate(32bit)で、以下の現象が起きており、困っています。

     

    Windows VistaのIE7にて、以下の条件の両方に合致するWebページを表示した際、表示に使用される日本語のフォントがMS Pゴシック等で使用される字形と異なったものになります。

     

     条件1:該当の文字のスタイルのfont-familyがsans-serifのみで指定されている

     条件2:Webページのエンコードがeuc-jp、もしくはshift_jis

     

    表示される文字の特徴:

     

    ・字形が日本で一般的に使われているものと異なる(中国の繁体字っぽい?)。
     例えば、『会社』の『社』のへんが、「片仮名のネ」ではなく、「示」の形そのままになる。

     

    ・文字のバランスがおかしい。
     ひらがな等はガタガタになる。漢字も数種類のフォントからフォントリンクでツギハギしたような感じで表示される。


    webページのエンコードがutf-8の場合は、一般的な(?)MS Pゴシック等と同じ見慣れた字形で表示されます。
    また、XP上のIE7では再現しませんので、Vista、もしくはそれ以降のバージョンで発生しているようです。
    ※ちょっと試してみた感じ、2008 Server のRCでも再現するようです。


    特にblogやwikiなど、euc-jpで動いているものが結構多く、困っています。
    PCメーカーのサポートにも問い合わせたのですが、「現象は確認したのでMicrosftに問い合わせてみるが、解決するかは分からない」とのことで、その後連絡がありません。


    上記現象について、以下についてわかる方がおられましたら、教えていただければと思います。

     

    1) KB等でなにか情報がないか?
     調べてみたつもりなのですが、見つかりませんでした。該当の情報が、できればMirosoft社からのリリースという形であれば知りたいと考えています。もう少し突っ込むと、本件をMicrosft社が仕様と考えているのか不具合と考えているのかを知りたいと思っています。

     

    2) 一体どのフォントの文字が表示されているのか?
     当初、MS-WORD等でフォント指定して調べ、Gulimではないかと思い無理やり削除してみたのですが、変わりませんでした。Gulimではないようです。
     どのフォントなのか分かれば、該当フォントを削除したりフォントリンクの設定をたどって何か対処が出来そうに思うのですが、現在突き止めれておりません。

     

     

    3)  対処法はないか?
     現状、インターネットオプションで「Webページで指定されたフォントスタイルを使用しない」をチェックすればとりあえず回避できるのですが、当然ながらフォントに対する他のスタイルも無効になるので避けたいと考えています。
     
     最終的に私が望む姿は、utf-8の場合や、XPのIE7で表示されているものと同様の字形で表示されることです。


     『fireFox等のように、「"総称ファミリA"は"FONT X"で表示する」のような設定をIEで実現する方法』や、『フォントリンクの設定』や『フォントの削除』(=フォントの特定が必要?)など、なんらか解決できそうな方法があれば、知りたいと考えています。

     

     

     

    以上、よろしくお願いいたします。

    2008年1月14日 11:57

すべての返信

  •  

    https://www.microsoft.com/japan/msdn/windowsvista/compatibility/default.aspxの「IE 7 互換性情報パック」中のIE7FAQ.docの8ページに以下の記述があります。
    「CSS で一般フォントファミリを指定していたら Windows XP SP2 と Windows Vista のInternet Explorer 7 では違うフォントで表示されました。どうすればよいでしょうか?」
    2008年3月13日 5:37
  • はhんdさdhさk さん、情報ありがとうございます。

    #気が付くのが遅れました。すみません。

     

    実は、SP1を当てたあたりからだと思うのですが(確証がないです。フォントを入れたり消したり、フォントリンク周りの設定をいじったものの有効な変化が見られなかったので元に戻していた…とは思うのですが戻し忘れがあった可能性は否定できません)、漢字については一般的に日本で使われている字形(MS Pゴシック)にでレンダリングされるようになったのですが、相変わらずひらがなやカタカナはおかしなバランスの文字のままですし、半角¥はウォン記号でレンダリングされており、結局途方に暮れたままでした。

     

     

    教えていただいたドキュメント確認してみました。

    なるほど、こういうドキュメントがあったのですね。見たつもりだったのですが、見落としていました。

    ありがとうございます。

     

     

    ご指摘のドキュメント読み、、もう少しいくつか確認した結果、やはり疑問が残りました。

    1. フォントファミリを明示的にTahomaで指定しみたのですが、この場合は先の投稿に記述したような症状とならず、MS Pゴシックで表示されているようです。(shift_jis、euc-jp、utf-8とも。フォントリンクが適切に働いている?)
    2. そもそも、utf-8の時はおかしくなっていない。

    以上の動きを見ると、先のドキュメントに記述されている内容とも、実際の動きが食い違っているように思えます。

     

    IE7FAQ.docの記述によれば『EnumFontFamiliesEx API Charset とフォントファミリーパラメータを渡し、API によって返される最初の結果がWindows Vistaでは "Tahoma"になる』ようなのですが、この症状をみると、どうもshift_jisとeuc-jpの時には、渡しているCharset が間違っているのか、ドキュメントにある仕様通りのTahomaが返ってきていないようにも思えてきます。

     

     

    とりあえず、EnumFontFamiliesEx については時間を確保して自分でコードを書いてどんな感じなのか試してみようと思いますが(出来るかどうかわかりませんが)、上記ドキュメントとも沿わない動きに見えるので、IEのバグのような気が……。

     

     

    週末に時間を取って、別のクリーンなVista環境、SP1環境等を使い、EnumFontFamiliesEx APIを直接たたいてみることなども試してみたいと思います。

    はhんdさdhさk さん、貴重な情報をありがとうございました。

    2008年3月18日 14:39
  • EnumFontFamiliesEx を直接触りながらいろいろ試してみた結果、とりあえずCSSのfont-familyに「Malgun Gothic(韓国語フォント」を指定したのと等価の状態でレンダリングされているらしい、という事が解りました。

    EnumFontFamiliesExを使ってそれっぽいパラメータでフォントを列挙、列挙されたフォントからそれっぽいのを順番にCSSに書いて実際にレンダリングさせる、という力技で行きました。ですので、正確ではないかもしれませんが、少なくとも上記指定で全く同じ状態で表示されているのは確認できました。

     

    実際のところ、IEがEnumFontFamiliesExを呼ぶ際にいったいどんなパラメータで呼んでいるかは解らない状態なので、EnumFontFamiliesEx を使ったアプローチは私では手詰まりな感がありますが、とりあえずMalgun Gothicを中心にフォントリンクの設定などの方向で対処できないかを探ってみる予定です。

     

     

    引き続き、何か情報があれば、よろしくお願いしたいと思います。

    2008年3月18日 17:18