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"));
var fallbacks = new List<FontFallback> var notoSansSc = new FontFamily(Path.Combine(Global.AvaAssets, "Fonts#Noto Sans SC"));
{ fallbacks.Add(new FontFallback { FontFamily = notoSansSc });
new() { FontFamily = notoSansSc }
};
if (OperatingSystem.IsLinux()) if (OperatingSystem.IsLinux())
{
var emojiFamily = DetectLinuxEmojiFamily();
if (!string.IsNullOrWhiteSpace(emojiFamily))
{ {
fallbacks.Add(new FontFallback fallbacks.Add(new FontFallback
{ {
FontFamily = new FontFamily(emojiFamily) FontFamily = new FontFamily("Noto Color Emoji")
}); });
} }
}
return appBuilder.With(new FontManagerOptions return appBuilder.With(new FontManagerOptions
{ {
FontFallbacks = fallbacks.ToArray() FontFallbacks = fallbacks.ToArray()
}); });
}
private static string? DetectLinuxEmojiFamily()
{
try
{
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;
}
}
} }