2016-12-09 3 views
0

今私は次のコードでフォント名を取得しています:英語win7のシステムでC#でPrivateFontCollectionを使用して常に英語のフォント名を取得するにはどうすればよいですか?

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

、私は「DFPHeiMedium-UN」を得るが、中国Win7のシステム上で、私は(華」康中黑體を取得しますP)-UN」である。 したがって、フォント名はシステム言語によって異なります。

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

ありがとうございます。

ところで、私はCurrentCultureを試しました。私は上記のコードの前にこの行を置きます。まだ動作しません。 Thread.CurrentThread.CurrentCulture = new CultureInfo( "en-us");

答えて

1

あなたはニュートラル言語のGetName言語識別子を受け付ける関数、または0を使用することができます。

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

あなたの文化の変更が機能しなかった理由として、我々はName in the reference sourceの実装を見ることができます:

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

そして、我々はCurrentLanguageを検査した場合、我々はそれがSystem.Globalization.CultureInfo.CurrentUICulture.LCIDを使っていること、つまり、現在のUI文化を参照してください、というよりもすることができます。

関連する問題