国際フォントの列挙と選択
Windows のメジャー リリースごとに、国際言語とスクリプトをサポートするために追加されたフォントがあります。 Windows 2000 以降の各 Windows バージョンで追加されたフォントと、サポートされているスクリプト、リージョン、言語については、Windows のスクリプトとフォントのサポートに関するページを参照してください。
EnumFontFamiliesEx
アプリケーションで国際フォントを列挙するには、enumFontFamiliesEx関数使用できます。 EnumFontFamiliesEx を すると、書体名と文字セット情報を含む LOGFONT 構造体へのポインターを渡すことによって、書体名と文字セットに基づいてフォントを列挙できます。 EnumFontFamiliesEx 呼び出すには、書体名または文字セットを指定するか、使用可能なものを要求できます。 LOGFONT のタイプフェイス名を NULL に設定すると、すべてのタイプフェイス名が列挙。 文字セット フィールドを DEFAULT_CHARSET に設定すると、すべての文字セットが列挙されます。
文字セットは、Unicode より前の文字セットに対応する従来の概念であることに注意してください。 現時点では、Unicode で任意のスクリプトまたは文字範囲をサポートするフォントを列挙するメカニズムはありません。 enumFontFamExProcによって渡される NEWTEXTMETRICEX 構造体には、フォント開発者が提供する FONTSIGNATURE 構造体が含まれています。これには、フォントがサポートするコード ページと Unicode 範囲に関するより詳細な宣言が含まれます。 特定のフォントでサポートされている文字範囲をより正確に判断するには、デバイス コンテキストにフォントを選択し、GetFontUnicodeRanges呼び出します。 この API は Unicode 補助プレーンをサポートしないことに注意してください。
ChooseFont
ChooseFont 関数を使用すると、文字セットに基づいて国際フォントを選択できる共通のダイアログ ボックスを表示できます。 文字セットに基づいて、ChooseFont ダイアログに表示されるフォントを決定する 3 つのフラグのいずれかを指定できます。CF_SCRIPTSONLY、CF_SELECTSCRIPT、または CF_NOSCRIPTSEL。
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) が追加され、インストールされているすべてのフォントをフォント 一覧に表示できます。これは、ChooseFont Windows 7 より前の動作と同じです。 ChooseFont 関数の Windows 7 での動作の違いの詳細については、「Windows 7 Application Quality Cookbookの ChooseFont() Win32 Common Dialogを参照してください。 Windows 7 のエンド ユーザー エクスペリエンスの違いについては、ChooseFont 関数 参照し、CHOOSEFONT 構造を してください。
文字セットは、Unicode より前の文字セットに対応する従来の概念であることに注意してください。 現時点では、Unicode スクリプトまたは文字範囲に基づいてフォントをフィルター処理するメカニズムはありません。
Windows シーニック リボンのフォント コントロール
Windows 7 には、フォントの選択を対象とする一連のコントロールが付属する Windows のシーニック リボンが導入されています。 これらのフォント コントロールは、新しい Windows 7 フォント非表示動作をサポートします。 これらのフォント コントロールを使用して、表示されているフォントのみを一覧表示し、ユーザーがフォントを選択できるようにします。
手記
Windows 7 より前のプラットフォームで Windows シーニック リボンが実行されている場合、フォントの非表示はサポートされません。
関連トピック
-
EnumFontFamiliesExの
-
ChooseFontの
-
CHOOSEFONT 構造体の
-
Windows シーニック リボンのフォント コントロールをする