Как всегда получить английское имя шрифта через PrivateFontCollection в C#?
Теперь я получаю имя шрифта с помощью следующего кода:
PrivateFontCollection fontCollection = new PrivateFontCollection();
fontCollection.AddFontFile("path_to_my_Thai_font");
return fontCollection.Families[0].Name;
В английской системе Win7 я получаю "DFPHeiMedium-UN", а в китайской системе Win7 я получаю "華康中黑ustoms (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
в справочном источнике:
public String Name
{
get
{
return GetName(CurrentLanguage);
}
}
И если мы проверяем CurrentLanguage
мы можем видеть, что он использует System.Globalization.CultureInfo.CurrentUICulture.LCID
текущая культура интерфейса, а не CurrentCulture
,