Китайский шрифт отображается неправильно при FontSize менее 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>

Вторая и четвертая строка показывает, как должна выглядеть строка; первый и третий показывают искаженные версии.

Ответ на этот несколько связанный вопрос предлагает FontFamily="SimSun", который действительно заставляет вещи отображаться правильно. Мои варианты в настоящее время кажутся следующими:

  • Измените семейство шрифтов со стандартного "Segoe UI" на "SimSun"
  • Увеличьте размер шрифта с 15 до 22

Ни один из вариантов не является привлекательным. У кого-нибудь есть другие предложения? Или объяснение того, почему эти конкретные персонажи так неприятны?

1 ответ

Решение

Оказывается FontWeight="Light" делает трюк:

введите описание изображения здесь

Medium, Normal а также SemiLight все терпят неудачу. Light, SemiBold, Thin, Bold, ExtraBold, Black, ExtraBlack а также ExtraLight все решают проблему.

Если кто-то, знающий об этой области, может внести свой вклад, мне все равно интересно, так как я понятия не имею, что вызывает такое поведение.

Другие вопросы по тегам