Китайский шрифт отображается неправильно при 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
все решают проблему.
Если кто-то, знающий об этой области, может внести свой вклад, мне все равно интересно, так как я понятия не имею, что вызывает такое поведение.