ページ 11

フォントの入ってないPCではどうなる?

Posted: 2011年5月10日(火) 21:49
by Eli's
初めまして。何でも質問掲示板ということで、お言葉に甘えて質問させて頂きます。
フォントを指定して文字を表示する関数がありますが、珍しいフォントを用いてゲームを作成した場合
プレイヤーのPCにそのフォントがなければ表示不良になるのでしょうか?

Re: フォントの入ってないPCではどうなる?

Posted: 2011年5月10日(火) 21:53
by h2so5
フォントがインストールされていない場合は、
デフォルトのフォントが使用されると思います。

フォントファイルを同梱してAddFontResourceEx関数を使えば
インストール無しでそのフォントを表示することはできますが、
ライセンスには十分注意してください。

Re: フォントの入ってないPCではどうなる?

Posted: 2011年5月10日(火) 22:16
by Eli's
ご回答の速さと、解決策までご教授頂けたことに感動いたしました。
ほんとに有難うございます。

フォントのライセンス関係がシビアなのは、同人誌で学んだので大丈夫です(笑)

Re: フォントの入ってないPCではどうなる?

Posted: 2011年5月10日(火) 22:57
by Eli's
[解決ボタンを押すための投稿]

Re: フォントの入ってないPCではどうなる?

Posted: 2011年5月11日(水) 00:56
by YuO
ちなみに,GDIにおけるSelectObject時のフォント選択は,最優先はlfFaceNameではなくlfCharSetです。
つまり,lfCharSetとして正しくない値を指定すると,lfFaceNameに正しいフォント名を指定したとしてもそのフォントは選択されません。

いい加減,Windows 3.1時代の記事へのリファレンスは正しいのか疑問ではあるのですが,GDIのペナルティ情報は1992年の記事である,
Windows Font Mappingが最新のようなので,リファレンスとしてリンクをはっておきます。

この資料を見ると,他にもlfFaceNameよりもlfPitchAndFamilyでのFIXED_PITCHが優先されることもわかります。
つまり,lfPitchAndFamilyにFF_DONTCARE | FIXED_PITCHを指定した場合,lfFaceNameに"MS Pゴシック"を指定しても優先度で"MS ゴシック"に劣る,ということになります。


この機構によって,lfFaceNameに指定したフォントを持っていなくても,フォントが選ばれます。
細かく指定すればするほど,似通ったフォントが選ばれることになります。
# とはいえ,大きなくくりで似ている物しか指定できませんが。

なので,特殊なフォントであれば,できるだけ指定しておいた方がよいでしょう。
# フォント埋め込みが確実であるのは確かですが。

Re: フォントの入ってないPCではどうなる?

Posted: 2011年5月11日(水) 19:03
by Eli's
ご教授頂いた手前恐縮ですが、今の私の実力では上記はよく理解できません。
実際にフォント表示がうまくいかない場面に直面した際に、
レベルアップする為の参考とさせていただきます。