2

コンマ区切りのフォント リストを受け入れる Windows フォーム コントロールのフォントを C# で設定する方法はありますか? コンピューターにインストールされている最初のフォントが見つかるまで、ブラウザーが CSS フォント ファミリーを解釈する方法に似たものが必要です。

例:

string fontList = "Obscure Font1, Obscure Font2, Verdana"
textBox1.Font = new Font( FontFamilyFromHtml(fontList), FontStyle.Bold);

.NET に組み込まれているものはありますか、それとも文字列をコンマで分割するメソッドを作成し、一致するものが見つかるまでインストールされているフォント リストをそれぞれテストする必要がありますか?

4

1 に答える 1

3

すぐに使用できる API 呼び出しはないため、文字列を分割し、インストールされているフォントを検索する必要があります。

これを行うためにInstalledFontCollectionを使用する実装を次に示します。

private FontFamily FindFontByCSSNames(string cssNames)
{
    string[] names = cssNames.Split(',');
    System.Drawing.Text.InstalledFontCollection installedFonts = new System.Drawing.Text.InstalledFontCollection();
    foreach (var name in names)
    {

        var matchedFonts = from ff in installedFonts.Families where ff.Name == name.Trim() select ff;

        if (matchedFonts.Count() > 0)
            return matchedFonts.First();
    }

    // No match, return a default
    return new FontFamily("Arial");
}
于 2012-12-28T23:54:19.363 に答える