dポイントプレゼントキャンペーン実施中!

現在、任意で指定したフォント名を使用してある文字列を表示するようなプログラムを作成しています。
CreateFont()の文字セットには、SHIFTJIS_CHARSET、タイプフェイス名にはArialを指定しても環境によっては、日本語が文字化けしたままとなります。
何故、そうなるのか分からない状況ですので、ご教授ください。
また、解決方法がございましたらお願いいたします。

表示する文字列:テスト ⇒ 出力結果:□□□

現在、CreateFont()には以下の指定を行っています。

CreateFont(X, ※1
0,
0,
0,
400,
TRUE,
FALSE,
FALSE,
SHIFTJIS_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
PROOF_QUALITY,
FIXED_PITCH | FF_DONTCARE,
Y); ※2

※1 X:任意のサイズ
※2 Y:Arial

CreateFontで作成されたハンドルはSelectObjectで関連付けています。

よろしくお願いします。

A 回答 (4件)

フォント作成での似た議題がありましたので、参考URLを以下に載せておきます。


http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?p …
http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?p …
参考URLを基に考えると、
環境によって表示が変わる。というのは各々の環境で各フォントの重みが違うからではないのでしょうか?(勝手な想像なので間違ってたらゴメンナサイ)

もし、上記の考えがあっているならば環境依存になるので
回避策というのは面倒or難しそうですね。
    • good
    • 0

Arial でも、Arial Unicode MS とかいうフォントだと、Unicode 2.1の範囲の文字の


フォントデータを持っています(もちろん漢字もある)。
それってことはないでしょうか?

参考URL:http://www.faireal.net/articles/6/23/#d21203
    • good
    • 0

ひとつ分からないのですが、


Arial
は日本語の文字を持っていないフォントですが、
なんでArialにこだわっているのでしょう?

#1さんのいうように日本語のフォントを指定した
方が良いかと思うのですが。

このプログラムもからくりも分かりませんが、
日本語の文字列にArialを指定した場合、
裏で勝手に日本語フォントに置き換えてるアプリは
多いですよね。MSのアプリなど特に。

回避方法としては、日本語には日本語フォントを
使うのが良いかと思います。
    • good
    • 0

文字セットにSHIFTJIS_CHARSETを指定したからといって、日本語の文字列が表示できるということはありません。


出力結果が日本語とならないには、そのフォントが日本語のフォントを持っていないだけです。
素直にMSゴシックなどの日本語を含むフォントにしましょう。

# 日本語を知らない外国の人に日本語でと指定しても、日本語が返ってこないことと同様かと。

この回答への補足

早速の回答ありがとうございます。

Arialを指定して、かつ、日本語文字を指定した場合、環境によっては指定した日本語文字が異なるフォントで出力される場合もあります。

どちらかというと、なぜ環境によって変わるのか?また、それの回避方法は?ということのお知恵を拝借したいと思っています。

もし、なにかよい回避方法等ありましたらご教授願います。

よろしくお願いいたします。

補足日時:2006/07/24 22:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!