2

您可以在此处查看问题以及如何重现它:

缺字问题

该问题导致单词在文本块中最长行的末尾被截断。请注意最后一个TextBlock缺少“动物”一词。

有谁知道这个问题的解决方法?或者有什么相关信息?我需要基本上保持第二个的渲染和布局行为TextBlock- 但只是让所有单词都存在。

XAML 复制代码:

<Window x:Class="TextWeirdness.Application.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <StackPanel>

        <StackPanel.Resources>
            <Style TargetType="TextBlock">
                <Setter Property="Text" Value="{Binding Text, ElementName=ATextBox}"/>
                <Setter Property="FontSize" Value="{Binding Value, ElementName=ASlider}"/>
                <Setter Property="FontFamily" Value="Arial"/>
                <Setter Property="HorizontalAlignment" Value="Left"/>
                <Setter Property="TextWrapping" Value="Wrap"/>
            </Style>
        </StackPanel.Resources>

        <Slider Name="ASlider" Minimum="1" Maximum="30" Value="12" />
        <TextBox Name="ATextBox" Text="I love mules - best of all the animals" AcceptsReturn="True"/>

        <TextBlock />
        <TextBlock TextOptions.TextFormattingMode="Display"/>
    </StackPanel>
</Window>

更多信息:

  • 仅当文本中出现连字符(但仅是减号)时才会出现问题。
  • 仅当字体大小在特定的重复范围内时才会发生(我不知道那是什么)。
  • 只发生在某些字体上。
    • 宋体
    • 巴克斯顿素描
    • 口径
    • 口径灯
    • 坎布里亚
    • 坎布里亚数学
    • 康斯坦蒂亚
    • 牛腿
    • 多占巴
    • 尤菲米亚
    • 全球等宽
    • 全球无衬线字体
    • 全局衬线
    • 蒙古白提
    • 尼亚拉
    • 帕拉蒂诺列型
    • 英语字体格式一种
4

2 回答 2

1

如果你能删除

<Setter Property="TextWrapping" Value="Wrap"/>

那么这将作为解决方法......

这是一个错误,您应该通过 Microsoft Connect 站点报告它,但不要屏息以待很快修复它。事实上,它可能永远不会得到修复。

我的经验表明,在过去几年中,Microsoft 需要 6 个多月的时间来做出响应(如果有的话),大多数 bug 将被归类为按设计,或者如果您在字里行间读到“微软有比修复 bug 更好的事情要做”。我估计 .NET 5.0 修复此问题的可能性小于 5%

于 2013-08-21T11:10:54.917 回答
1

我们遇到了同样的问题。我们的客户能够自定义字体系列和大小,其中一些客户报告缺少单词。

我们选择的解决方法是用 ‐ 替换默认的连字符/减号。Unicode 字符。这在标点符号的意义上似乎是正确的,但无论如何有点麻烦。这就是为什么我们正在考虑自动检查和更新构建服务器上的所有 resx 文件。

于 2014-05-26T10:11:24.807 回答