国際フォントの列挙と選択
Windows のメジャー リリースごとに、国際言語とスクリプトをサポートするためにフォントが追加されています。 Windows 2000 以降の各 Windows バージョンで 追加されたフォントと、サポートされているスクリプト、リージョン、言語については、「Windows でのスクリプトとフォントのサポート」を参照してください。
EnumFontFamiliesEx
アプリケーションで国際フォントを列挙するには、 EnumFontFamiliesEx 関数を使用します。 EnumFontFamiliesEx を使用すると、書体名と文字セット情報を含む LOGFONT 構造体へのポインターを渡すことによって、書体名と文字セットに基づいてフォントを列挙できます。 EnumFontFamiliesEx を呼び出すには、書体名または文字セットを指定するか、使用可能なものを要求できます。 LOGFONT の書体名を NULL に設定すると、すべての書体名が列挙されます。 charset フィールドを DEFAULT_CHARSET に設定すると、すべての文字セットが列挙されます。
文字セットは、Unicode より前の文字セットに対応する従来の概念であることに注意してください。 現時点では、Unicode で任意のスクリプトまたは文字範囲をサポートするフォントを列挙するメカニズムはありません。 EnumFontFamExProc によって渡される NEWTEXTMETRICEX 構造体には FONTSIGNATURE 構造体が含まれています。これには、フォント開発者が、どのコード ページと、フォントがサポートする Unicode 範囲に関して提供されるより詳細な宣言が含まれます。 特定のフォントでサポートされている文字範囲をより正確に判断するには、デバイス コンテキストにフォントを選択し、 GetFontUnicodeRanges を呼び出します。 この API は Unicode 補助プレーンをサポートしないことに注意してください。
ChooseFont
ChooseFont 関数を使用すると、文字セットに基づいて国際フォントを選択できる共通のダイアログ ボックスを表示できます。 [フォントの選択] ダイアログに表示されるフォント (CF_SCRIPTSONLY、CF_SELECTSCRIPT、またはCF_NOSCRIPTSEL) に基づいて、文字セットに基づいて決定する 3 つのフラグのいずれかを指定できます。
CF_SCRIPTSONLY フラグは、シンボルまたは OEM ではないすべての文字セットのフォントを一覧表示するように API に指示します。
特定の文字セットをカバーするフォントのみを表示する場合は、フラグ CF_SELECTSCRIPTを指定する必要があります。 ChooseFont を呼び出す前に、LOGFONT 構造体の lfCharSet フィールドを初期化します。 文字セットのみを指定する場合は、 LOGFONT 構造体の他のフィールドを NULL に設定 します。 SelectFont で LOGFONT 構造を確認するには、CF_INITTOLOGFONTSTRUCT フラグも指定する必要があります。
最後に、[フォント] ダイアログ ボックスの他のフィールドと同様に、空白のスクリプト リスト ボックスを表示することもできます。 この機能は、ユーザーが複数の文字セットにまたがる複数の異なるフォントを強調表示している場合に便利です。 この場合は、CF_NOSCRIPTSEL フラグを指定して ChooseFont を呼び出します。
Windows 7 以降、 ChooseFont では 、フォント選択リストからフォントを非表示にするためのサポートが実装されています。 ChooseFont では、表示されているフォントのみが一覧表示され、リスト ボックスにフォントが表示されている間は非表示のフォントが除外されます。 ChooseFont 構造体の flags メンバーに追加のフラグ (CF_INACTIVEFONTS) が追加され、Windows 7 より前に動作した ChooseFont と同じように、インストールされているすべてのフォントをフォント 一覧に表示できます。 ChooseFont 関数の Windows 7 での動作の違いの詳細については、Windows 7 アプリケーション品質クックブックの「ChooseFont() Win32 Common Dialog」を参照してください。 Windows 7 でのエンド ユーザー エクスペリエンスの違いについては、 ChooseFont 関数と CHOOSEFONT 構造体を参照してください。
文字セットは、Unicode より前の文字セットに対応する従来の概念であることに注意してください。 現時点では、Unicode スクリプトまたは文字範囲に基づいてフォントをフィルター処理するメカニズムはありません。
Windows のシーニック リボンのフォント コントロール
Windows 7 では、フォントの選択を対象とするコントロールのセットが付属する Windows のシーニック リボンが導入されています。 これらのフォント コントロールは、新しい Windows 7 フォント非表示動作をサポートします。 これらのフォント コントロールを使用して、表示されているフォントのみを一覧表示し、ユーザーがフォントを選択できるようにします。
Note
Windows 7 より前のプラットフォームで Windows シーニック リボンが実行されている場合、フォントの非表示のサポートは利用できません。
関連トピック