2009-04-22 12 views
4

フォントがインストールされているかどうかをテストするにはどうすればよいですか?フォントがインストールされているかどうかのテスト(Win32)

最終的に、私はHTMLのようなフォント選択を実装したいと思います。 "Verdana、Arial"、それはインストールされている最初のフォントを選択する必要があります。

This Questionは、.NETの回答を提供しています。フォントを作成し、実際に使用したフォントフェイスをcmpareすることをお勧めします。

これが最も効率的な方法ですか?

答えて

5

EnumFontFamiliesExを使用して、システム上のフォントのリストを列挙するか、フォント名を渡すとそのファミリのフォントを列挙できます。

+0

EnumFontsその他のDCパラメータのポイントは何ですか。 CreateFontでは必須ではありません。デスクトップウィンドウのDCが正常に動作しているようですが、MSDNのドキュメント(「デバイスコンテキストへのハンドル」を除く)は見つかりません – peterchen

+1

プリンタDCを使用している可能性がありますが、GetDC NULL)、他に何も試したことがありません。 – Steven

+1

DCは列挙されたフォントをデバイスで利用可能なフォントに制限します。今日、それはあまり制限されていません。 CreateFontはLOGFONTの内部バージョンを作成してハンドルを提供するだけなので、CreateFontを呼び出すとDCは必要ありません。そのハンドルをDCに選択した場合にのみ、実際のフォントが選択され、インスタンス化されます。 –

6

フォントを作成して取得することができます(OSのフォント名の一致/置換を使用)。

また、インストールされているフォントを列挙し、自分自身と一致するフォントを列挙できます。

"最も効率的な"方法は、 "一致"の詳細と、おそらくインストールされているフォントの数によって異なります。たとえば、50フォントのシステムでは、1000フォントがインストールされたシステムとパフォーマンスが大きく異なることがわかります。

最終的には、パフォーマンスのボトルネックになることがわかっていれば、代表的なシステムでしかプロファイルできません。

関連する問題