2012-02-14 26 views
1

C#で画像を作成します。日本語のテキストが含まれています。それから、私はこのイメージを日本語でもあるページ全体に入れました。ページ全体が正しく表示されますが(エンコーディング:UTF-8)、イメージは正しく表示されません。正しいテキストの代わりに私は間違った記号(「?」ではなく、正方形に似たもの)を得る。ASP.NETページの画像に日本語文字が正しく表示されない

私はこのテキストをArialの画像に記述する必要があります。誰が何が間違っているかも知っていますか?テキストが正しく表示されない理由 さらにもう1つ考えると...ローカルマシンですべてをテストすると正しく見えますが、外部サーバーにページを持つアプリケーションをデプロイすると、この奇妙なエラーが発生します。テキストとイメージを作成するために

私が使用します。

Font f = Font("Arial", 10f, FontStyle.Bold); 
g.DrawString(text, f, b, rect); 
+0

画像を生成するマシンに正しいフォントがインストールされていますか?どのように画像を制作していますか? – Oded

+0

こんにちは、私は正しいものがインストールされているとコードに関する。非常にシンプルです:gはGraphicsのタイプで、fはフォントg.DrawString(text、f、b、rect)です。フォントは以下のように作成されます:Font( "Arial"、10f、FontStyle.Bold); – ravenik

+0

コメントを編集してコードを投稿してください。コメントが失われ、適切な書式設定が行われません。 – Oded

答えて

4

限り私が思い出すよう(日本語文字セットが含まれていない可能性が高いのArialのバージョンがインストールされている外部サーバ、1を「Arial Unicode MS」と呼ばれています)。 ASP.NETでイメージを生成するときは、それが使用されているサーバーフォントであることに注意してください。

ただし、Officeの一部である場合を除き、またはArial Unicode MSのインストールを許可されていない場合は、Monotype/Ascenderから「Arial Unicode MS」をインストールすることは法的に許可されています。あなたの資金に応じて、Arialを他の書体で置き換える方がより現実的な選択肢になるかもしれません(私はArialの主観的な意見を残しておきます)。

新しいフォントをサーバーにインストールする場合は、IISを再起動してください。再起動するまで、.NETはインストールされたフォントを認識しません(アプリケーションを再起動するには十分ではありません。アプリプールをリサイクルするには十分かもしれませんが、それは試みたことがありません)。

更新

それはまだ動作しない場合は、フォントのフォールバックが行われていない可能性があります。つまり、あなたは「Arial」を指定していますが、Grial +(DrawString)はArialにない文字については「Arial Unicode MS」にフォールバックすることは知られていません(Officeはこれをインストール時に設定します)。

2つの可能性:

  • が実際にフォント(任意の他のバージョンで日本語の文字を持っていることはありません)ではなく、「ゴシック」より(すなわち「はArial UnicodeのMS」)を使用するようにコードを変更し

    。これは、日本語以外の文字を使用している場合、 "Arial Unicode MS"にカーニングなどの機能が含まれていないため、標準の "Arial"タイプフェイスよりも(あまり)見栄えが悪いことがあります。あなたの(ローカル)レジストリ内のArialと他のフォントとの間にリンクがあるかどう

  • またはチェック: - これらのフォントのいずれかが実際にフォールバックフォントとして、あなたの日本語の文字を表示するものになる - HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLinkはそれも「ArialのではないかもしれませんUnicode "です。同じリンクをサーバー上のレジストリに手動で追加することができます(おそらくIISを再起動します)。

フォールバックに使用される可能性が高い別の候補は、「MS Gothic」です。私が思い出す限り、GDI +はフォントフォールバックのために上記の "FontLink"システムを使用しますが、WPFは独自のシステムを使用します。とにかく制御するフォントを使用しているときには、日本語グリフを持つフォントを直接使用するのが最も簡単な方法です。 Arial Unicodeは、他のフォントにグリフが見つからない場合にのみ、Windowsの最後の手段として意図されています。

+0

サーバーに「Arial Unicode MS」フォントをインストールしようとしましたが、それでも動作しません。/ – ravenik

+0

IISを再起動しましたが、変更はありません... – ravenik

+0

答えの詳細については長い説明を移動しました。 – JimmiTh

関連する問題