【发布时间】:2020-09-01 22:34:53
【问题描述】:
如何在 WPF 中禁用后备字体?
我想以不支持所有字符的字体显示文本,但 VS 不断用备用值替换缺失的字符。
例如,如果我想以没有 'e' 和 's' 代码点的字体显示“test”, 我只想显示“tt”not“tESt”,其中“E”和“S”在其他一些备用字体中。这就是现在正在发生的事情。
我试过了:
<TextBlock Text="{Binding SampleText}" FontFamily="{Binding FFamily, FallbackValue={x:Null}}"/>
但它不起作用。
有什么想法吗?
【问题讨论】:
-
From BindingBase.FallbackValue Property > 获取或设置绑定无法返回值时使用的值。
<TextBlock Text="{Binding SampleText}" FontFamily="{Binding FFamily, FallbackValue={x:Null}}"/>表示如果FontFamily属性绑定失败,则使用 FallbackValue 的值。 -
@Cfun:我已经阅读了有关字体的所有内容,并且知道后备是如何工作的。我只是不知道如何关闭它。
-
为什么需要为包含不受支持的字符的
TextBlock提供值?顺便说一句,您可以使用IValueConverter过滤掉不受支持的字符。禁用后备将导致t□□t。 -
@aepot:想法是以所有可用字体显示“示例文本”。因此,显示该字体不支持的字符(字形)将是错误的。显示 t□□t 就可以了。用户可以看到哪些字符不受支持。我可以过滤
IValueConverter中不受支持的字符,但如果您有数百或数千种字体,恐怕会非常耗时。禁用回退是我能想到的最干净的方法。