0

今、私は次のコードでフォント名を取得しています:

PrivateFontCollection fontCollection = new PrivateFontCollection();
fontCollection.AddFontFile("path_to_my_Thai_font");
return fontCollection.Families[0].Name;

英語の Win7 システムでは「DFPHeiMedium-UN」と表示されますが、中国語の Win7 システムでは「華康中黑體(P)-UN」と表示されます。そのため、フォント名はシステム言語によって異なります。

私の質問は、システム言語に関係なく常に「DFPHeiMedium-UN」を取得できるようにコードを書く方法ですか?

ありがとうございました。

ところで、CurrentCulture を試してみました。この行を上記のコードの前に置きます。それでもうまくいきません。Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us");

4

1 に答える 1

1

GetName言語識別子、またはニュートラル言語の場合は 0 を受け入れる関数を使用できます。

PrivateFontCollection fontCollection = new PrivateFontCollection();
fontCollection.AddFontFile("path_to_my_Thai_font");
return fontCollection.Families[0].GetName(0);

文化の変化がうまくいかなかった理由についてはName、参照ソースでの実装を見ることができます。

    public String Name 
    {
        get 
        {   
            return GetName(CurrentLanguage);
        }
    }

を調べると、 ではなく、つまり現在のUICurrentLanguageカルチャを使用していることがわかります。System.Globalization.CultureInfo.CurrentUICulture.LCIDCurrentCulture

于 2016-12-09T07:45:43.727 に答える