FontSize中的中文字体渲染不正确小于22

时间:2016-12-05 15:10:37

标签: wpf xaml fonts uwp cjk

在大多数情况下,我的应用会呈现不同的字符集而不会出现问题。但是,有些中文字符在FontSize为22时呈现良好状态,但在较小时则可怜:

Chinese strings

这是由以下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

这两种选择都没有吸引力。有没有人有其他建议?或解释为什么这些特殊字符如此麻烦?

1 个答案:

答案 0 :(得分:1)

结果FontWeight="Light"可以解决问题:

enter image description here

MediumNormalSemiLight都失败了。 LightSemiBoldThinBoldExtraBoldBlackExtraBlackExtraLight都解决了问题问题

如果对此领域有所了解的人有贡献,我仍然感兴趣,因为我不知道是什么原因导致这种行为。