3

我正在创建 W8 C++/CX DirectX 应用程序,并且正在尝试使用来自应用程序自己的存储的自定义字体文件。我弄清楚如何使用IDWriteFactory::CreateFontFileReference从目录加载IDWriteFontFile,然后如何从中创建IDWriteFontFace

我现在不知道的是如何使用IDWriteFontFace加载IDWriteTextFormat,如果可能的话。我应该这样做IDWriteFontCollection吗?

对不起,如果答案真的很愚蠢和微不足道,我对 DirectX 很陌生,并且在旅途中学习一切。

4

2 回答 2

4

有关如何在运行时加载您自己的自定义字体的必要高级视图,请参阅有关自定义字体集合的MSDN DirectWrite 帮助主题。您对如何执行此操作的猜测是错误的。

似乎有关如何执行此操作的最佳示例直接与 Win7SDK directWrite 示例一起提供。请参阅DirectWrite\CustomFont C++ 示例

该过程不涉及获取或使用任何IDWriteFontFace类型。事实上,IDWriteFontFace我能看到的唯一能做的事情就是确定glyphindices

相反,您从工厂开始,就像在所有 DirectX API 中一样,然后使用工厂,您想要创建一个字体集合和一个字体文件加载器,并使用该字体集合枚举字体。创建文本格式的界面希望您传入自定义字体集合,而不是字体。

在codeproject上可以找到正确使用接口类型 IDWritefontFace 来获取字形信息的示例。

于 2014-09-04T17:16:59.030 回答
0

你不能用 IDWriteFontFace 创建 IDWriteTextFormat,你可以用函数 IDWriteFactory::CreateTextFormat 创建一个 IDWriteTextFormat 实例。IDWriteFontFace 用于描述字体的属性,IDW​​riteTextFormat 用于描述文本的属性。

于 2012-11-08T09:22:46.230 回答