使用 XAML 字体系列会破坏一些 Unicode 字形

Using a XAML font family breaks some Unicode glyphs

我试图在没有任何特定属性的 XAML TextBlock 中显示各种 Unicode 字符:

<TextBlock Text="{Binding MyString}" Foreground="Black" />

这适用于我的 Windows 8.1 系统上的所有脚本,表情符号字符除外:

由于这些符号在 Segoe UI Symbol 字体中可用,我只是将其添加到 FontFamily:

<TextBlock Text="{Binding MyString}" Foreground="Black"
           FontFamily="Segoe UI Symbol" />

但是,现在一些西里尔符号被破坏了:

所以我尝试启用了几种字体,包括composite fonts listed on MSDN:

<TextBlock Text="{Binding MyString}" Foreground="Black"
           FontFamily="Lucida Sans Unicode, Lucida Grande, Segoe UI Symbol,
                       Open Sans, Arial, Microsoft Sans Serif, Tahoma,
                       Courier New, Times New Roman, Global User Interface,
                       Portable User Interface" />

但我得到完全相同的结果:

我该如何解决这个问题?难道 全局用户界面 不应该给我一个适合所有角色的后备吗?当我指定没有 FontFamily 时,我的 TextBlock 可以使用什么?

我终于设法修复了它。看来:

  • Segoe UI 此外 Segoe UI Symbol.
  • Segoe UI Symbol会把后面的一些字符和字体弄乱,不会用;因此应该移到末尾

以下字符串有效,现在我所有的字形都得到了渲染:

<TextBlock Text="{Binding MyString}" Foreground="Black"
           FontFamily="Segoe UI, Lucida Sans Unicode, Lucida Grande,
                       Open Sans, Arial, Microsoft Sans Serif, Tahoma,
                       Courier New, Times New Roman, Global User Interface,
                       Portable User Interface, Segoe UI Symbol" />