Skip to content

Commit 6484ec0

Browse files
committed
Resolve conflicts
1 parent ea65e20 commit 6484ec0

File tree

1 file changed

+68
-67
lines changed

1 file changed

+68
-67
lines changed

Flow.Launcher.Infrastructure/Win32Helper.cs

Lines changed: 68 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,74 @@ public static void OpenImeSettings()
624624

625625
#endregion
626626

627+
#region System Font
628+
629+
private static readonly Dictionary<string, string> _languageToNotoSans = new()
630+
{
631+
{ "ko", "Noto Sans KR" },
632+
{ "ja", "Noto Sans JP" },
633+
{ "zh-CN", "Noto Sans SC" },
634+
{ "zh-SG", "Noto Sans SC" },
635+
{ "zh-Hans", "Noto Sans SC" },
636+
{ "zh-TW", "Noto Sans TC" },
637+
{ "zh-HK", "Noto Sans TC" },
638+
{ "zh-MO", "Noto Sans TC" },
639+
{ "zh-Hant", "Noto Sans TC" },
640+
{ "th", "Noto Sans Thai" },
641+
{ "ar", "Noto Sans Arabic" },
642+
{ "he", "Noto Sans Hebrew" },
643+
{ "hi", "Noto Sans Devanagari" },
644+
{ "bn", "Noto Sans Bengali" },
645+
{ "ta", "Noto Sans Tamil" },
646+
{ "el", "Noto Sans Greek" },
647+
{ "ru", "Noto Sans" },
648+
{ "en", "Noto Sans" },
649+
{ "fr", "Noto Sans" },
650+
{ "de", "Noto Sans" },
651+
{ "es", "Noto Sans" },
652+
{ "pt", "Noto Sans" }
653+
};
654+
655+
public static string GetSystemDefaultFont()
656+
{
657+
try
658+
{
659+
var culture = CultureInfo.CurrentCulture;
660+
var language = culture.Name; // e.g., "zh-TW"
661+
var langPrefix = language.Split('-')[0]; // e.g., "zh"
662+
663+
// First, try to find by full name, and if not found, fallback to prefix
664+
if (TryGetNotoFont(language, out var notoFont) || TryGetNotoFont(langPrefix, out notoFont))
665+
{
666+
// If the font is installed, return it
667+
if (Fonts.SystemFontFamilies.Any(f => f.Source.Equals(notoFont)))
668+
{
669+
return notoFont;
670+
}
671+
}
672+
673+
// If Noto font is not found, fallback to the system default font
674+
var font = SystemFonts.MessageFontFamily;
675+
if (font.FamilyNames.TryGetValue(XmlLanguage.GetLanguage("en-US"), out var englishName))
676+
{
677+
return englishName;
678+
}
679+
680+
return font.Source ?? "Segoe UI";
681+
}
682+
catch
683+
{
684+
return "Segoe UI";
685+
}
686+
}
687+
688+
private static bool TryGetNotoFont(string langKey, out string notoFont)
689+
{
690+
return _languageToNotoSans.TryGetValue(langKey, out notoFont);
691+
}
692+
693+
#endregion
694+
627695
#region Quick Switch
628696

629697
// Edited from: https://github.com/idkidknow/Flow.Launcher.Plugin.DirQuickJump
@@ -750,73 +818,6 @@ public static unsafe bool GetWindowRect(nint handle, out Rect outRect)
750818
rect.bottom - rect.top
751819
);
752820
return true;
753-
754-
#endregion
755-
756-
#region System Font
757-
758-
private static readonly Dictionary<string, string> _languageToNotoSans = new()
759-
{
760-
{ "ko", "Noto Sans KR" },
761-
{ "ja", "Noto Sans JP" },
762-
{ "zh-CN", "Noto Sans SC" },
763-
{ "zh-SG", "Noto Sans SC" },
764-
{ "zh-Hans", "Noto Sans SC" },
765-
{ "zh-TW", "Noto Sans TC" },
766-
{ "zh-HK", "Noto Sans TC" },
767-
{ "zh-MO", "Noto Sans TC" },
768-
{ "zh-Hant", "Noto Sans TC" },
769-
{ "th", "Noto Sans Thai" },
770-
{ "ar", "Noto Sans Arabic" },
771-
{ "he", "Noto Sans Hebrew" },
772-
{ "hi", "Noto Sans Devanagari" },
773-
{ "bn", "Noto Sans Bengali" },
774-
{ "ta", "Noto Sans Tamil" },
775-
{ "el", "Noto Sans Greek" },
776-
{ "ru", "Noto Sans" },
777-
{ "en", "Noto Sans" },
778-
{ "fr", "Noto Sans" },
779-
{ "de", "Noto Sans" },
780-
{ "es", "Noto Sans" },
781-
{ "pt", "Noto Sans" }
782-
};
783-
784-
public static string GetSystemDefaultFont()
785-
{
786-
try
787-
{
788-
var culture = CultureInfo.CurrentCulture;
789-
var language = culture.Name; // e.g., "zh-TW"
790-
var langPrefix = language.Split('-')[0]; // e.g., "zh"
791-
792-
// First, try to find by full name, and if not found, fallback to prefix
793-
if (TryGetNotoFont(language, out var notoFont) || TryGetNotoFont(langPrefix, out notoFont))
794-
{
795-
// If the font is installed, return it
796-
if (Fonts.SystemFontFamilies.Any(f => f.Source.Equals(notoFont)))
797-
{
798-
return notoFont;
799-
}
800-
}
801-
802-
// If Noto font is not found, fallback to the system default font
803-
var font = SystemFonts.MessageFontFamily;
804-
if (font.FamilyNames.TryGetValue(XmlLanguage.GetLanguage("en-US"), out var englishName))
805-
{
806-
return englishName;
807-
}
808-
809-
return font.Source ?? "Segoe UI";
810-
}
811-
catch
812-
{
813-
return "Segoe UI";
814-
}
815-
}
816-
817-
private static bool TryGetNotoFont(string langKey, out string notoFont)
818-
{
819-
return _languageToNotoSans.TryGetValue(langKey, out notoFont);
820821
}
821822

822823
#endregion

0 commit comments

Comments
 (0)