C#/WPF

WPF Font Family 한글 표시

기공이 2017. 5. 12. 11:30

WPF 에서 시스템에 있는 폰트를 ComboBox 를 통해 혹은 List 를 통해 볼 수 있습니다.


그러나 WPF에서 제공해주는 폰트들은 영어로 표시가 되어 한글 폰트들도 영어 이름으로 나옵니다


예를 들어 "맑은 고딕" -> "Malgun Gothic" 과 같이 말입니다.


그래서 한글로 표시해 주는 방법을 찾아보았습니다.



참고



먼저 System.Windows.Markup.XmlLanguage 에서 GetLanguage 라는 함수를 통해 

현재 System 의 언어(System.Globalization.CultureInfo.CurrentUICulture.Name)의 Key를 불러옵니다.

(우리의 경우 ko-kr)


그 뒤 Fonts 의 SystemFontFamilies 로 해당 컴퓨터에 있는 Font List로 각 Font들에 접근합니다.


해당 폰트가 System의 언어 (우리는 ko-kr) Key를 포함하고 있다면 해당 언어 설정의 이름으로 list에 추가합니다.


System의 언어 Key를 포함하고 있지 않다면 원래의 이름(영어)으로 list에 추가합니다.


이 List는 영어이름 기준 알파벳 순으로 되어있기 때문에 한글 이름을 포함해서 다시 정렬해 줍니다.



코드입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var cond = System.Windows.Markup.XmlLanguage.GetLanguage
        (System.Globalization.CultureInfo.CurrentUICulture.Name);
 
listFont = new List<string>();
foreach (FontFamily font in Fonts.SystemFontFamilies)
{
    if (font.FamilyNames.ContainsKey(cond))
        listFont.Add(font.FamilyNames[cond]);
    else
        listFont.Add(font.ToString());
}
 
listFont.Sort();
 
cbxFont.ItemsSource = listFont;
cs