问题描述
我正在使用 Microsoft 的 Cascadia Code 字体并使用 ID2D1RenderTarget::DrawTextLayout
通过 DirectWrite 绘制文本,并使用 IDWriteTextLayout::SetDrawingEffect(CreateSolidColorBrush(...))
对各个字形进行着色。
Cascadia Code 有一个“大于或等于”(=>) 的连字,绘制为单箭头字形。如果我选择了一半的字形,则使用 HitTestTextRange 绘制背景会突出显示正确的区域,但将所选字符的绘图效果设置为与未选择侧不同的颜色不起作用。使用第二个字符的绘制效果绘制整个字形,导致一侧绘制为白底白字或蓝底黑字。 GetClusterMetrics 为其返回两个单独的集群。相反,如果我有一些像 ممم 这样的阿拉伯语文本,它大概使用了替代字体,它会绘制为连字,但其中的单个字符将绘制为不同的颜色。
实现 IDWriteTextRenderer 是处理这种情况的最佳方法还是有更简单的方法?
此外,将记事本或 Visual Studio Code 中 Cascadia Code 支持的连字与我的应用程序进行比较表明,大多数连字都按应有的方式绘制,但少数不是。 -~(减去波浪号)在记事本、VS Code、我的应用程序和 Windows SDK 的 PadWrite 示例应用程序中绘制为单个符号,但 /\ 仅在前两个中绘制为倒 V。像 >==>==> 这样的“无限箭头”同样被分解。是否需要使用某个设置来启用所有这些设置?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)