@@ -39,31 +39,48 @@ public void Save()
39
39
}
40
40
41
41
private string language = Constant . SystemLanguageCode ;
42
+ private static readonly Dictionary < string , string > LanguageToNotoSans = new ( )
43
+ {
44
+ { "ko" , "Noto Sans KR" } ,
45
+ { "ja" , "Noto Sans JP" } ,
46
+ { "zh-CN" , "Noto Sans SC" } ,
47
+ { "zh-SG" , "Noto Sans SC" } ,
48
+ { "zh-Hans" , "Noto Sans SC" } ,
49
+ { "zh-TW" , "Noto Sans TC" } ,
50
+ { "zh-HK" , "Noto Sans TC" } ,
51
+ { "zh-MO" , "Noto Sans TC" } ,
52
+ { "zh-Hant" , "Noto Sans TC" } ,
53
+ { "th" , "Noto Sans Thai" } ,
54
+ { "ar" , "Noto Sans Arabic" } ,
55
+ { "he" , "Noto Sans Hebrew" } ,
56
+ { "hi" , "Noto Sans Devanagari" } ,
57
+ { "bn" , "Noto Sans Bengali" } ,
58
+ { "ta" , "Noto Sans Tamil" } ,
59
+ { "el" , "Noto Sans Greek" } ,
60
+ { "ru" , "Noto Sans" } ,
61
+ { "en" , "Noto Sans" } ,
62
+ { "fr" , "Noto Sans" } ,
63
+ { "de" , "Noto Sans" } ,
64
+ { "es" , "Noto Sans" } ,
65
+ { "pt" , "Noto Sans" }
66
+ } ;
67
+
42
68
public static string GetSystemDefaultFont ( )
43
69
{
44
70
try
45
71
{
46
- var systemLanguage = CultureInfo . CurrentCulture . Name ;
47
- var font = SystemFonts . MessageFontFamily ;
72
+ var culture = CultureInfo . CurrentCulture ;
73
+ var language = culture . Name ; // e.g., "zh-TW"
74
+ var langPrefix = language . Split ( '-' ) [ 0 ] ; // e.g., "zh"
48
75
49
- // Set Noto Sans as default font for specific languages
50
- switch ( systemLanguage )
76
+ // First, try to find by full name, and if not found, fallback to prefix
77
+ if ( TryGetNotoFont ( language , out var notoFont ) || TryGetNotoFont ( langPrefix , out notoFont ) )
51
78
{
52
- case "ko-KR" :
53
- if ( Fonts . SystemFontFamilies . Any ( f => f . Source . Equals ( "Noto Sans KR" ) ) )
54
- return "Noto Sans KR" ;
55
- break ;
56
- case "ja-JP" :
57
- if ( Fonts . SystemFontFamilies . Any ( f => f . Source . Equals ( "Noto Sans JP" ) ) )
58
- return "Noto Sans JP" ;
59
- break ;
60
- case "zh-CN" :
61
- case "zh-Hans" :
62
- if ( Fonts . SystemFontFamilies . Any ( f => f . Source . Equals ( "Noto Sans SC" ) ) )
63
- return "Noto Sans SC" ;
64
- break ;
79
+ if ( Fonts . SystemFontFamilies . Any ( f => f . Source . Equals ( notoFont ) ) )
80
+ return notoFont ;
65
81
}
66
82
83
+ var font = SystemFonts . MessageFontFamily ;
67
84
if ( font . FamilyNames . TryGetValue ( System . Windows . Markup . XmlLanguage . GetLanguage ( "en-US" ) , out var englishName ) )
68
85
{
69
86
return englishName ;
@@ -76,6 +93,11 @@ public static string GetSystemDefaultFont()
76
93
return "Segoe UI" ;
77
94
}
78
95
}
96
+
97
+ private static bool TryGetNotoFont ( string langKey , out string notoFont )
98
+ {
99
+ return LanguageToNotoSans . TryGetValue ( langKey , out notoFont ) ;
100
+ }
79
101
80
102
private string _theme = Constant . DefaultTheme ;
81
103
public string Hotkey { get ; set ; } = $ "{ KeyConstant . Alt } + { KeyConstant . Space } ";
@@ -527,4 +549,5 @@ public enum BackdropTypes
527
549
Mica ,
528
550
MicaAlt
529
551
}
552
+
530
553
}
0 commit comments