• ベストアンサー

日本語不可のフォントで日本語を出力させた場合の動作についての質問

現在、任意で指定したフォント名を使用してある文字列を表示するようなプログラムを作成しています。 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で関連付けています。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keibou21
  • ベストアンサー率31% (18/58)
回答No.2

フォント作成での似た議題がありましたので、参考URLを以下に載せておきます。 http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200607/06070032.txt http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200606/06060035.txt 参考URLを基に考えると、 環境によって表示が変わる。というのは各々の環境で各フォントの重みが違うからではないのでしょうか?(勝手な想像なので間違ってたらゴメンナサイ) もし、上記の考えがあっているならば環境依存になるので 回避策というのは面倒or難しそうですね。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

Arial でも、Arial Unicode MS とかいうフォントだと、Unicode 2.1の範囲の文字の フォントデータを持っています(もちろん漢字もある)。 それってことはないでしょうか?

参考URL:
http://www.faireal.net/articles/6/23/#d21203
すると、全ての回答が全文表示されます。
  • palmmy
  • ベストアンサー率38% (841/2169)
回答No.3

ひとつ分からないのですが、 Arial は日本語の文字を持っていないフォントですが、 なんでArialにこだわっているのでしょう? #1さんのいうように日本語のフォントを指定した 方が良いかと思うのですが。 このプログラムもからくりも分かりませんが、 日本語の文字列にArialを指定した場合、 裏で勝手に日本語フォントに置き換えてるアプリは 多いですよね。MSのアプリなど特に。 回避方法としては、日本語には日本語フォントを 使うのが良いかと思います。

すると、全ての回答が全文表示されます。
  • yosi_yosi
  • ベストアンサー率35% (165/468)
回答No.1

文字セットにSHIFTJIS_CHARSETを指定したからといって、日本語の文字列が表示できるということはありません。 出力結果が日本語とならないには、そのフォントが日本語のフォントを持っていないだけです。 素直にMSゴシックなどの日本語を含むフォントにしましょう。 # 日本語を知らない外国の人に日本語でと指定しても、日本語が返ってこないことと同様かと。

chochoro_mei
質問者

補足

早速の回答ありがとうございます。 Arialを指定して、かつ、日本語文字を指定した場合、環境によっては指定した日本語文字が異なるフォントで出力される場合もあります。 どちらかというと、なぜ環境によって変わるのか?また、それの回避方法は?ということのお知恵を拝借したいと思っています。 もし、なにかよい回避方法等ありましたらご教授願います。 よろしくお願いいたします。

すると、全ての回答が全文表示されます。

関連するQ&A