Direct2D:如何将后备转换为 SystemLink 模式?

问题描述 投票:0回答:1

我现在正在将项目的渲染引擎从 GDI 转换为 D2D。 GDI 使用“CreateFontIndirect”分配字体大小“-13”、字体系列“Segoe UI”。 D2D 使用“CreateTextFormat”分配字体大小“13”、字体系列“Segoe UI”。效果如下图:

enter image description here

在GDI情况下,系统在“Segoe UI”中没有找到中文字符,它会在regedit“SystemLink”中查找中文字体,在我的机器上是“雅黑”。但是在D2D情况下,系统没有找到“雅黑”,它会选择哪种中文字体来绘制,它是如何工作的?

direct2d directwrite
1个回答
1
投票

它根据 DirectWrite 布局逻辑工作。请参阅 IDWriteTextLayout2::SetFontFallback(),如果默认配置不令人满意,您将能够提供自己的后备实现。

基本上,布局对象将调用您的自定义后备方法来将字符映射到字体,然后您可以检测要将哪些字符映射到哪种字体,对于您不关心的情况,可能会重用系统后备实现。

© www.soinside.com 2019 - 2024. All rights reserved.