中文字体在 FontSize 小于 22 时呈现不正确
Chinese font renders incorrectly at FontSize less than 22
在大多数情况下,我的应用程序可以毫无问题地呈现不同的字符集。然而,有些汉字在 FontSize
为 22 时呈现良好,但在较小时呈现可怕:
这是由以下 XAML 片段呈现的,它适用于 WPF 和 UWP,具有相同的问题结果:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBox x:Name="textBox" Grid.Row="0" FontSize="21" Text="〾⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻" />
<TextBox Grid.Row="1" FontSize="22" Text="{Binding Text, ElementName=textBox}" />
<TextBlock Grid.Row="2" FontSize="21" Text="{Binding Text, ElementName=textBox}" />
<TextBlock Grid.Row="3" FontSize="22" Text="{Binding Text, ElementName=textBox}" />
</Grid>
第二行和第四行显示了字符串的外观;第一和第三显示乱码版本。
this somewhat related question 的答案建议设置 FontFamily="SimSun"
,这确实可以正确显示内容。那么,目前我的选择似乎是:
- 将字体系列从默认 "Segoe UI" 更改为 "SimSun"
- 将字体大小从 15 增加到 22
这两个选项都不吸引人。有人有其他建议吗?或者解释为什么这些特定字符如此麻烦?
事实证明 FontWeight="Light"
成功了:
Medium
、Normal
和 SemiLight
都失败了。 Light
、SemiBold
、Thin
、Bold
、ExtraBold
、Black
、ExtraBlack
和ExtraLight
都解决了问题。
如果任何了解该领域的人有贡献,我仍然很感兴趣,因为我不知道是什么导致了这种行为。
在大多数情况下,我的应用程序可以毫无问题地呈现不同的字符集。然而,有些汉字在 FontSize
为 22 时呈现良好,但在较小时呈现可怕:
这是由以下 XAML 片段呈现的,它适用于 WPF 和 UWP,具有相同的问题结果:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBox x:Name="textBox" Grid.Row="0" FontSize="21" Text="〾⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻" />
<TextBox Grid.Row="1" FontSize="22" Text="{Binding Text, ElementName=textBox}" />
<TextBlock Grid.Row="2" FontSize="21" Text="{Binding Text, ElementName=textBox}" />
<TextBlock Grid.Row="3" FontSize="22" Text="{Binding Text, ElementName=textBox}" />
</Grid>
第二行和第四行显示了字符串的外观;第一和第三显示乱码版本。
this somewhat related question 的答案建议设置 FontFamily="SimSun"
,这确实可以正确显示内容。那么,目前我的选择似乎是:
- 将字体系列从默认 "Segoe UI" 更改为 "SimSun"
- 将字体大小从 15 增加到 22
这两个选项都不吸引人。有人有其他建议吗?或者解释为什么这些特定字符如此麻烦?
事实证明 FontWeight="Light"
成功了:
Medium
、Normal
和 SemiLight
都失败了。 Light
、SemiBold
、Thin
、Bold
、ExtraBold
、Black
、ExtraBlack
和ExtraLight
都解决了问题。
如果任何了解该领域的人有贡献,我仍然很感兴趣,因为我不知道是什么导致了这种行为。