当你选择显示不可打印的字符时,我需要渲染常规空间,不间断空格和一些其他格式化字符(如从左到右标记)的方式,如MS Word渲染它们。
我尝试了两种方法:
1)用很少使用的字符替换字符。 它有效,但在这种情况下,我们松开了不可破坏空间的“不间断”行为(并且LTR和RTL标记也停止工作)
2)使用自定义字体
它允许保留不间断空格和LTR / RTL标记的特殊行为,但由于某些奇怪的原因,WPF使用通常的空格字形呈现不间断空格。
WinForms RichTextBox正确呈现相同字体的文本。
这个问题可以通过为空格和不间断空格应用具有不同空格字形的不同字体来解决,但即使我为它们添加字形,也不会渲染LTR和RTL标记。
您是否有任何想法如何使用可见的字形呈现字符,保留其“LTR”,“RTL”,“不间断”行为?
答案 0 :(得分:1)
直到现在我才尝试过类似的东西,但我可以想到两个选择:
警告 - >我没试过
此方法的优点是您具有干净的分离并且不需要子类化RTFBox,但是您将无法操纵间距的宽度以为较大的符号腾出空间。此外,其他开发人员需要知道他们需要该样式才能获得该功能。
它也没有子类化RTBox。你也无法调整间距。与方法1相反,其他开发人员将立即认识到已添加此功能。一个缺点是你也必须处理滚动。
答案 1 :(得分:0)
您可以尝试在LTR / RTL可见字形附近插入而不是替换它。
答案 2 :(得分:0)
将所有值存储为特殊字符。听起来你的打印功能需要处理a)用户想要什么样的输出,b)解释你的数据数组/大量字符串,并根据用户想要看到的内容吐出值。你没有提供太多关于你的东西存储的详细信息,但这是一种非常合理的方式。