gpt4 book ai didi

windows - 亚洲字符显示(带 Unicode): Difference in character spacing when presented in a RichEdit control compared with using ExtTextOut

转载 作者:可可西里 更新时间:2023-11-01 14:14:05 26 4
gpt4 key购买 nike

这张图说明了我的困境:

Image1

所有字符的大小看起来都一样,但与我使用 ExtTextOut 时相比,在 RichEdit 控件中显示时它们之间的间距不同。

我想以与 RichEdit 控件中相同的方式显示字符(理想情况下),以保留换行位置。

谁能告诉我:

a) 哪个表示更正确?

b) 为什么 RichEdit 控件显示的文本在亚洲字符之间没有间隙?

c) 有没有办法让 ExtTextOut 在绘制这些字符时重现 RichEdit 控件的行为?

d) 如果我使用的是亚洲版 Windows,这会有什么不同吗?

也许我很乐观,但如果有人能提供任何提示,我会很想听听。

如果有帮助:

这是我的文字:

快的棕色狐狸跳在懶惰狗1 2 3 4 5 6 7 8 9 0

向亚洲读者道歉,这只是为了测试我们的 Unicode 实现,我什至不知道这些字符来自哪种语言,更不用说它们是否意味着什么

为了通过将这些字符粘贴到 RichEdit 控件(例如写字板)中来查看效果,您可能会发现必须滑动它们并将字体设置为“Arial”。

我得到的富文本是:

{\rtf1\ansi\ansicpg1252\deff0\deflang2057{\fonttbl{\f0\fnil\fcharset0 Arial;}}{\colortbl ;\red0\green0\blue0;}\viewkind4\uc1\pard\sa200\sl276\slmult1\lang9\fs22\u24555?\u30340?\u26837?\u33394?\u29392?\u29432?\u36339?\u22312?\u25078?\u24816?\u29399?1 2 3 4 5 6 7 8 9 0\par\pard\'a3 $$ \'80\'80\cf1\lang2057\fs16\par}

它似乎不包含字符“pitch”的值,这是我的第一个想法。

最佳答案

我不知道答案,但有几点值得怀疑:

  • Rich Edit 控件有多个版本。也许您使用的是旧版本,但没有进行所有最新的排版改进。
  • 有许多样式和标志会影响富编辑控件的行为,因此您可能想探索设置了哪些以及它们的作用。例如,查看 EM_GETEDITSTYLE .
  • 许多亚洲字体在 Windows 上有两个版本。一个针对水平布局进行了优化,另一个针对垂直布局进行了优化。后者通常具有相同的名称,但前面有 @。也许您在丰富的编辑控件中使用了错误的控件。

更新:通过使用写字板,我能够重现富编辑控件中文本拥挤的问题。

  1. 在 Windows 7 的写字板中打开一个新文档。请注意,所选字体为 Calibri。
  2. 将示例文本粘贴到文档中。
  3. 文本显示正确,但写字板将字体更改为 SimSun。
  4. 选择文本并将字体改回 Calibri 或 Arial。

文本现在会过于拥挤,与您的示例非常相似。因此,看起来根本问题在于字体链接和回退。 ExtTextOut 可能会自动为脚本选择合适的字体。您面临的挑战是弄清楚如何为脚本识别正确的字体并在 Rich Edit 控件中设置该字体。

关于windows - 亚洲字符显示(带 Unicode): Difference in character spacing when presented in a RichEdit control compared with using ExtTextOut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5092126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com