Skip to content

Commit ec5ebaa

Browse files
committed
add: 过滤等宽字体。bug:切屏导致选中字体失效
1 parent b5404d3 commit ec5ebaa

File tree

2 files changed

+46
-11
lines changed

2 files changed

+46
-11
lines changed

llcomNext/LLCOM/ViewModels/Pages/SettingPageViewModel.cs

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,22 +29,24 @@ public SettingPageViewModel(Func<Type, ViewModelBase> getService)
2929
//用skia接口获取系统字体列表
3030
var fontMgr = SkiaSharp.SKFontManager.Default;
3131
var fonts = new List<string>();
32+
var monoFonts = new List<string>();
3233
foreach (var f in fontMgr.FontFamilies)
3334
{
3435
fonts.Add(f);
36+
using var typeface = fontMgr.MatchFamily(f) ;
37+
if (typeface.IsFixedPitch)
38+
monoFonts.Add(f);
3539
}
3640
//把列表内容按字母排序
3741
fonts.Sort();
42+
monoFonts.Sort();
3843
//添加到系统字体列表
3944
foreach (var f in fonts)
40-
{
4145
SystemFontList.Add(f);
42-
}
46+
foreach (var f in monoFonts)
47+
MonoFontList.Add(f);
4348
//找找看当前设置的是什么字体,对应上
44-
PacketFontIndex = SystemFontList.IndexOf(Services.Utils.Setting.PacketFont);
45-
PacketHexFontIndex = SystemFontList.IndexOf(Services.Utils.Setting.PacketHexFont);
46-
PacketHeaderFontIndex = SystemFontList.IndexOf(Services.Utils.Setting.PacketHeaderFont);
47-
PacketExtraFontIndex = SystemFontList.IndexOf(Services.Utils.Setting.PacketExtraFont);
49+
RefreshFontIndexCommand.Execute(null);
4850

4951
//是否已经检查过更新?
5052
if (Services.Utils.HasUpdate())
@@ -82,7 +84,9 @@ public SettingPageViewModel(Func<Type, ViewModelBase> getService)
8284
#region FontSettings
8385

8486
[ObservableProperty]
85-
private ObservableCollection<FontFamily> _SystemFontList = new();
87+
private ObservableCollection<FontFamily> _systemFontList = new();
88+
[ObservableProperty]
89+
private ObservableCollection<FontFamily> _monoFontList = new();
8690
[ObservableProperty]
8791
private int _packetFontIndex;
8892
[ObservableProperty]
@@ -91,7 +95,20 @@ public SettingPageViewModel(Func<Type, ViewModelBase> getService)
9195
private int _packetHeaderFontIndex;
9296
[ObservableProperty]
9397
private int _packetExtraFontIndex;
98+
[ObservableProperty]
99+
private bool _useMonoFont;
94100

101+
[RelayCommand]
102+
private void RefreshFontIndex()
103+
{
104+
var list = UseMonoFont ? MonoFontList : SystemFontList;
105+
//刷新字体索引
106+
PacketFontIndex = list.IndexOf(Services.Utils.Setting.PacketFont);
107+
PacketHexFontIndex = list.IndexOf(Services.Utils.Setting.PacketHexFont);
108+
PacketHeaderFontIndex = list.IndexOf(Services.Utils.Setting.PacketHeaderFont);
109+
PacketExtraFontIndex = list.IndexOf(Services.Utils.Setting.PacketExtraFont);
110+
}
111+
95112
#endregion
96113

97114
#region About

llcomNext/LLCOM/Views/Pages/SettingPageView.axaml

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@
1414
<Design.DataContext>
1515
<vm:SettingPageViewModel />
1616
</Design.DataContext>
17+
<UserControl.Styles>
18+
<Style Selector="ComboBox.ListFontAll">
19+
<Setter Property="ItemsSource" Value="{Binding SystemFontList}" />
20+
</Style>
21+
<Style Selector="ComboBox.ListFontMono">
22+
<Setter Property="ItemsSource" Value="{Binding MonoFontList}" />
23+
</Style>
24+
</UserControl.Styles>
1725
<TabControl>
1826
<TabItem Header="常规设置">
1927
<ScrollViewer Background="{DynamicResource SemiGrey0}">
@@ -25,6 +33,12 @@
2533
<TabItem Header="外观与字体" IsSelected="True">
2634
<ScrollViewer Background="{DynamicResource SemiGrey0}">
2735
<StackPanel Margin="10" Spacing="5">
36+
<CheckBox
37+
Margin="5,5,5,0"
38+
Command="{Binding RefreshFontIndexCommand}"
39+
Content="限制使用等宽字体"
40+
IsChecked="{Binding UseMonoFont}" />
41+
<Separator Margin="0,10" />
2842
<Grid
2943
Margin="5,0"
3044
ColumnDefinitions="*, 250"
@@ -38,7 +52,8 @@
3852
Grid.Row="0"
3953
Grid.Column="1"
4054
Width="250"
41-
ItemsSource="{Binding SystemFontList}"
55+
Classes.ListFontAll="{Binding !UseMonoFont}"
56+
Classes.ListFontMono="{Binding UseMonoFont}"
4257
SelectedIndex="{Binding PacketFontIndex}"
4358
SelectedItem="{Binding PacketFontFamily, Source={x:Static services:Utils.Setting}}">
4459
<ComboBox.ItemTemplate>
@@ -56,7 +71,8 @@
5671
Grid.Row="2"
5772
Grid.Column="1"
5873
Width="250"
59-
ItemsSource="{Binding SystemFontList}"
74+
Classes.ListFontAll="{Binding !UseMonoFont}"
75+
Classes.ListFontMono="{Binding UseMonoFont}"
6076
SelectedIndex="{Binding PacketHexFontIndex}"
6177
SelectedItem="{Binding PacketHexFontFamily, Source={x:Static services:Utils.Setting}}">
6278
<ComboBox.ItemTemplate>
@@ -74,7 +90,8 @@
7490
Grid.Row="4"
7591
Grid.Column="1"
7692
Width="250"
77-
ItemsSource="{Binding SystemFontList}"
93+
Classes.ListFontAll="{Binding !UseMonoFont}"
94+
Classes.ListFontMono="{Binding UseMonoFont}"
7895
SelectedIndex="{Binding PacketHeaderFontIndex}"
7996
SelectedItem="{Binding PacketHeaderFontFamily, Source={x:Static services:Utils.Setting}}">
8097
<ComboBox.ItemTemplate>
@@ -92,7 +109,8 @@
92109
Grid.Row="6"
93110
Grid.Column="1"
94111
Width="250"
95-
ItemsSource="{Binding SystemFontList}"
112+
Classes.ListFontAll="{Binding !UseMonoFont}"
113+
Classes.ListFontMono="{Binding UseMonoFont}"
96114
SelectedIndex="{Binding PacketExtraFontIndex}"
97115
SelectedItem="{Binding PacketExtraFontFamily, Source={x:Static services:Utils.Setting}}">
98116
<ComboBox.ItemTemplate>

0 commit comments

Comments
 (0)