From 29d3a0f01663430d630dc95c588376ad74f3dc75 Mon Sep 17 00:00:00 2001 From: ericek111 Date: Sat, 24 Oct 2026 01:07:47 +0000 Subject: [PATCH] Name a monospace font list instead of the generic monospace The generic name only resolves through fontconfig, so on Windows the windows fell back to the proportional default. Co-Authored-By: Claude Sonnet 5.5 --- src/Nonemm.App/Dialogs/MessagesDialog.axaml | 3 ++- src/Nonemm.App/Theming/Fonts.cs | 12 ++++++++++++ src/Nonemm.App/Windows/AvailableWindow.axaml.cs | 3 ++- src/Nonemm.App/Windows/BandmapView.cs | 3 ++- src/Nonemm.App/Windows/CallStackWindow.axaml.cs | 3 ++- src/Nonemm.App/Windows/CheckWindow.axaml.cs | 3 ++- src/Nonemm.App/Windows/DigitalWindow.Grab.cs | 2 +- src/Nonemm.App/Windows/DigitalWindow.axaml | 5 +++-- src/Nonemm.App/Windows/DigitalWindow.axaml.cs | 2 +- src/Nonemm.App/Windows/EntryWindow.axaml | 11 ++++++----- src/Nonemm.App/Windows/GraylineView.cs | 3 ++- src/Nonemm.App/Windows/LogWindow.axaml | 9 +++++---- src/Nonemm.App/Windows/NetworkStatusWindow.axaml | 9 +++++---- src/Nonemm.App/Windows/QtcWindow.axaml.cs | 2 +- src/Nonemm.App/Windows/ScoreWindow.axaml.cs | 3 ++- src/Nonemm.App/Windows/StatisticsChart.cs | 3 ++- src/Nonemm.App/Windows/StatisticsWindow.axaml | 5 +++-- src/Nonemm.App/Windows/TelnetWindow.axaml | 3 ++- 18 files changed, 55 insertions(+), 29 deletions(-) create mode 100644 src/Nonemm.App/Theming/Fonts.cs diff --git a/src/Nonemm.App/Dialogs/MessagesDialog.axaml b/src/Nonemm.App/Dialogs/MessagesDialog.axaml index 8cf0923..852f6d9 100644 --- a/src/Nonemm.App/Dialogs/MessagesDialog.axaml +++ b/src/Nonemm.App/Dialogs/MessagesDialog.axaml @@ -1,5 +1,6 @@ @@ -31,7 +32,7 @@ - diff --git a/src/Nonemm.App/Theming/Fonts.cs b/src/Nonemm.App/Theming/Fonts.cs new file mode 100644 index 0000000..ee2c722 --- /dev/null +++ b/src/Nonemm.App/Theming/Fonts.cs @@ -0,0 +1,12 @@ +using Avalonia.Media; + +namespace Nonemm.App.Theming; + +public static class Fonts +{ + /// The generic name `monospace` only resolves through fontconfig, so on + /// Windows it falls back to the proportional default. Each family listed is + /// tried in order. + public static readonly FontFamily Mono = new( + "Cascadia Mono, Consolas, DejaVu Sans Mono, Liberation Mono, Courier New, monospace"); +} diff --git a/src/Nonemm.App/Windows/AvailableWindow.axaml.cs b/src/Nonemm.App/Windows/AvailableWindow.axaml.cs index d4b8127..b00caf9 100644 --- a/src/Nonemm.App/Windows/AvailableWindow.axaml.cs +++ b/src/Nonemm.App/Windows/AvailableWindow.axaml.cs @@ -1,3 +1,4 @@ +using Nonemm.App.Theming; using Avalonia.Controls; using Avalonia.Input; using Avalonia.Layout; @@ -85,7 +86,7 @@ public sealed partial class AvailableWindow : RefreshableWindow TextBlock text = new() { Text = Label(station), - FontFamily = new FontFamily("monospace"), + FontFamily = Fonts.Mono, FontSize = 13, Foreground = Verdicts.Colour(station.Verdict), HorizontalAlignment = HorizontalAlignment.Left, diff --git a/src/Nonemm.App/Windows/BandmapView.cs b/src/Nonemm.App/Windows/BandmapView.cs index 44fb23c..ca715ea 100644 --- a/src/Nonemm.App/Windows/BandmapView.cs +++ b/src/Nonemm.App/Windows/BandmapView.cs @@ -1,3 +1,4 @@ +using Nonemm.App.Theming; using System.Globalization; using Avalonia; using Avalonia.Controls; @@ -37,7 +38,7 @@ public sealed class BandmapView : Control /// Past the band edge. The slice can reach there when the radio does. private static readonly IBrush OutsideBrush = new SolidColorBrush(Color.FromRgb(0xC0, 0x39, 0x2B), 0.13); - private readonly Typeface typeface = new(new FontFamily("monospace")); + private readonly Typeface typeface = new(Fonts.Mono); private IReadOnlyList placed = []; private BandmapScale scale = new(Bands.Band20M.Low, Bands.Band20M.High, 1); diff --git a/src/Nonemm.App/Windows/CallStackWindow.axaml.cs b/src/Nonemm.App/Windows/CallStackWindow.axaml.cs index 9d9b9a5..514c63b 100644 --- a/src/Nonemm.App/Windows/CallStackWindow.axaml.cs +++ b/src/Nonemm.App/Windows/CallStackWindow.axaml.cs @@ -1,3 +1,4 @@ +using Nonemm.App.Theming; using Avalonia; using Avalonia.Controls; using Avalonia.Input; @@ -45,7 +46,7 @@ public sealed partial class CallStackWindow : RefreshableWindow TextBlock text = new() { Text = call, - FontFamily = new FontFamily("monospace"), + FontFamily = Fonts.Mono, FontSize = 14, Foreground = Verdicts.Colour(position.JudgeCall(call)), }; diff --git a/src/Nonemm.App/Windows/CheckWindow.axaml.cs b/src/Nonemm.App/Windows/CheckWindow.axaml.cs index f04c5aa..5bb8ddb 100644 --- a/src/Nonemm.App/Windows/CheckWindow.axaml.cs +++ b/src/Nonemm.App/Windows/CheckWindow.axaml.cs @@ -1,3 +1,4 @@ +using Nonemm.App.Theming; using Avalonia.Controls; using Avalonia.Layout; using Avalonia.Media; @@ -57,7 +58,7 @@ public sealed partial class CheckWindow : RefreshableWindow panel.Children.Add(new TextBlock { Text = candidate.Text, - FontFamily = new FontFamily("monospace"), + FontFamily = Fonts.Mono, FontSize = 14, Foreground = Verdicts.Colour(candidate.Verdict), HorizontalAlignment = HorizontalAlignment.Left, diff --git a/src/Nonemm.App/Windows/DigitalWindow.Grab.cs b/src/Nonemm.App/Windows/DigitalWindow.Grab.cs index f79adb1..1f6fed6 100644 --- a/src/Nonemm.App/Windows/DigitalWindow.Grab.cs +++ b/src/Nonemm.App/Windows/DigitalWindow.Grab.cs @@ -61,7 +61,7 @@ public sealed partial class DigitalWindow TextBlock text = new() { Text = call, - FontFamily = new FontFamily("monospace"), + FontFamily = Fonts.Mono, FontSize = Settings.DigitalFontSize, Foreground = Verdicts.Colour(position.JudgeCall(call)), }; diff --git a/src/Nonemm.App/Windows/DigitalWindow.axaml b/src/Nonemm.App/Windows/DigitalWindow.axaml index 00ddccb..db8bb7d 100644 --- a/src/Nonemm.App/Windows/DigitalWindow.axaml +++ b/src/Nonemm.App/Windows/DigitalWindow.axaml @@ -1,6 +1,7 @@ @@ -29,7 +30,7 @@ + CanUserReorderColumns="True" FontSize="12" FontFamily="{x:Static theming:Fonts.Mono}" /> + FontSize="12" FontFamily="{x:Static theming:Fonts.Mono}" /> diff --git a/src/Nonemm.App/Windows/NetworkStatusWindow.axaml b/src/Nonemm.App/Windows/NetworkStatusWindow.axaml index 2fe0a90..1045226 100644 --- a/src/Nonemm.App/Windows/NetworkStatusWindow.axaml +++ b/src/Nonemm.App/Windows/NetworkStatusWindow.axaml @@ -1,6 +1,7 @@ @@ -10,12 +11,12 @@ @@ -72,7 +73,7 @@ @@ -156,7 +157,7 @@