2

如果将以下内容粘贴到 RichTextBox 中,CJK 字符和之后的所有内容都会变成第二种字体 - SimSun。

插入一个 CJK 字符:色</p>

...使此字体更改。

这会以一种不需要的方式影响 RichTextBox 的格式,并且还会大大减慢大型复制/粘贴的速度。

我尝试将 RichTextBox 设置为使用 unicode 字体,例如“Lucida Sans Unicode”,并确保我从中复制的源(写字板)也使用“Lucida Sans Unicode”字体。但是,在一天结束时,当我粘贴到 RichTextBox 时,它会强制使用其他字体,例如 SimSun(如果我们使用其他类型的字符,则强制使用其他字体,例如“Shonar Bangla”或“Microsoft Himalaya”)。

既然“Lucida Sans Unicode”都有,为什么不能坚持一种字体呢?

我注意到其他人也有类似的问题: RichTextBox - 保留原始格式(字体),即使在粘贴之后

不幸的是,该页面上的解决方案对我不起作用,因为我仍然发现 RTB 在 CJK 字符之后使用另一种字体。

4

3 回答 3

7

我自己时断时续地遇到这个问题。

今天在网上到处翻找之后,我注意到了一些东西msdn并尝试了一些东西。将此行添加到您的Form1_Load(),或行之后的表单构造函数InitializeComponent()

richTextBox1.LanguageOption = RichTextBoxLanguageOptions.DualFont;

我不是专家,我不能告诉你它为什么有效,但它对我有用!

于 2012-08-28T22:24:47.233 回答
2

不幸的是,尽管它的名称有点令人困惑,但它Lucida Sans Unicode不包含 CJK 字符(正如您可以从名称中包含Unicode的字体所期望的那样)。这会触发一些字体回退机制,从而生成包含所需符号的字体。我看到的唯一可能的解决方案是使用实际上包含所有必需字符的字体。

于 2012-04-12T09:09:38.030 回答
0

为了补充 Petr 的答案(并部分使用他评论中的信息),事实证明,许多 Unicode 符号在 RichTextBox 中的渲染速度要慢得多。

但是通过过滤掉大约 1280 (0x500) 和更大的 unicode 字符,我发现粘贴的速度和以前一样快。

于 2012-04-13T16:55:38.430 回答