这个过程似乎是"打破"单词,因此干扰拼写检查。例如,这个单词,在C#中正确拼写并完全以编程方式写入FlowDocument,它似乎在内部分解,因此可以说是RTF编辑器(例如Word 2016)上的拼写检查器,以后会打开该文件,会发现拼写错误(如上述图片中所示)。如果复制该单词然后直接粘贴到纯文本模式,则不会正确显示拼写错误。
如果我使用TextRange保存FlowDocument,则行为没有区别。问题没有出现在英语中。问题是不一致的,这个词可能偶尔正确显示。
我怀疑它是RTF编写过程本身的限制或错误。也许偶尔会有某种内部换行符。我想知道是否有人找到了解决这个问题的方法。
更新:这是来自RTF明文的图像,以防铃声响起。中间的粉红色文字是"错误"单词,底部和顶部的粉红色单词基本上是相同的单词,但Word 2016没有正确找到任何拼写错误:
答案 0 :(得分:0)
我无法使用此示例复制问题(我使用了另一个Unicode字符串)。
public MainWindow()
{
InitializeComponent();
RichTextBox rtb = new RichTextBox();
rtb.Language = System.Windows.Markup.XmlLanguage.GetLanguage("fa-IR");
rtb.Document.Blocks.Add(new Paragraph(new Run("درست")) { FlowDirection = FlowDirection.RightToLeft });
TextRange tr = new TextRange(rtb.Document.ContentStart,
rtb.Document.ContentEnd);
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
tr.Save(ms, DataFormats.Rtf);
ms.Seek(0, System.IO.SeekOrigin.Begin);
System.IO.File.WriteAllBytes(@"J:\test.rtf", ms.ToArray());
}
}