Update AppBuilderExtension.cs

This commit is contained in:
JieXu 2025-11-18 20:49:49 +08:00 committed by GitHub
parent dadf29c925
commit 80720c74c6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,68 +1,20 @@
using System; public static AppBuilder WithFontByDefault(this AppBuilder appBuilder)
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using Avalonia;
using Avalonia.Media;
namespace v2rayN.Desktop.Common;
public static class AppBuilderExtension
{ {
public static AppBuilder WithFontByDefault(this AppBuilder appBuilder) var fallbacks = new List<FontFallback>();
var notoSansSc = new FontFamily(Path.Combine(Global.AvaAssets, "Fonts#Noto Sans SC"));
fallbacks.Add(new FontFallback { FontFamily = notoSansSc });
if (OperatingSystem.IsLinux())
{ {
var notoSansSc = new FontFamily(Path.Combine(Global.AvaAssets, "Fonts#Noto Sans SC")); fallbacks.Add(new FontFallback
var fallbacks = new List<FontFallback>
{ {
new() { FontFamily = notoSansSc } FontFamily = new FontFamily("Noto Color Emoji")
};
if (OperatingSystem.IsLinux())
{
var emojiFamily = DetectLinuxEmojiFamily();
if (!string.IsNullOrWhiteSpace(emojiFamily))
{
fallbacks.Add(new FontFallback
{
FontFamily = new FontFamily(emojiFamily)
});
}
}
return appBuilder.With(new FontManagerOptions
{
FontFallbacks = fallbacks.ToArray()
}); });
} }
private static string? DetectLinuxEmojiFamily() return appBuilder.With(new FontManagerOptions
{ {
try FontFallbacks = fallbacks.ToArray()
{ });
var psi = new ProcessStartInfo
{
FileName = "/bin/bash",
ArgumentList =
{
"-c",
"fc-match -f \"%{family[0]}\\n\" \"emoji\" | head -n 1"
},
RedirectStandardOutput = true,
RedirectStandardError = false,
UseShellExecute = false
};
using var p = Process.Start(psi);
if (p == null)
return null;
var output = p.StandardOutput.ReadToEnd().Trim();
return string.IsNullOrWhiteSpace(output) ? null : output;
}
catch
{
return null;
}
}
} }