我在 UWP 中有一个项目,我需要在 RichEditBox 和 RichTextBlock 中显示相同的文本。
对于某些字体(例如 Courier),这是相当不错的,没有什么大问题,但对于其他字体(例如 Arial)来说,差异是相当大的。请注意,我使用完全相同的代码,唯一的区别只是字体。
请在此处找到重现该问题的 MVCE:https ://github.com/vfailla/UWPrichEditBox
如何设置这两个元素以相同的视觉方式在 Arial 中显示文本?
我在 UWP 中有一个项目,我需要在 RichEditBox 和 RichTextBlock 中显示相同的文本。
对于某些字体(例如 Courier),这是相当不错的,没有什么大问题,但对于其他字体(例如 Arial)来说,差异是相当大的。请注意,我使用完全相同的代码,唯一的区别只是字体。
请在此处找到重现该问题的 MVCE:https ://github.com/vfailla/UWPrichEditBox
如何设置这两个元素以相同的视觉方式在 Arial 中显示文本?
对于某些字体(例如 Courier),这是相当不错的,没有什么大问题,但对于其他字体(例如 Arial)来说,差异是相当大的。请注意,我使用完全相同的代码,唯一的区别只是字体。
首先,您需要CharacterSpacing
对这两个不同的控件进行相同的设置:
m_richEditBox.CharacterSpacing = 100;
m_richTextBlock.CharacterSpacing = 100;
然后,您需要对FontStretch
两个控件进行相同的设置,但问题来了:经过几次测试后,我发现 textStretch 不适用于 RichEditBox/TextBox。而且默认情况下,里面的文本看起来更像FontStretch.Condensed
. 因此,作为临时解决方法,您可以将您的设置RichTextBlock.FontStretch
为FontStretch.Condensed
:
m_richTextBlock.FontStretch = FontStretch.Condensed;
我将通过内部渠道咨询以报告此问题,并在收到任何回复后更新此线程。