【问题标题】:Chinese font renders incorrectly at FontSize less than 22中文字体在 FontSize 小于 22 时渲染不正确
【发布时间】:2016-12-06 19:56:18
【问题描述】:

在大多数情况下,我的应用程序可以毫无问题地呈现不同的字符集。但是,有些汉字在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

这两种选择都不吸引人。有人有其他建议吗?或者解释一下为什么这些特殊的字符这么麻烦?

【问题讨论】:

    标签: wpf xaml fonts uwp cjk


    【解决方案1】:

    原来FontWeight="Light" 可以解决问题:

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

    如果任何了解该领域的人有什么可以贡献的,我仍然很感兴趣,因为我不知道是什么导致了这种行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      相关资源
      最近更新 更多