问题标签 [directwrite]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
400 浏览

directwrite - 斜体文本的 IDWriteTextLayout 问题

有谁知道让 IDWriteTextLayout 调整布局以使字形不会超出布局边界的方法?当与 LHS 或 RHS 对齐时,在某些字体下使用诸如“f”之类的斜体尤其是一个问题。

GDI+ 默认以这种方式运行(请参阅:StringformatFlagsNoFitBlackBox)。一种选择是实现自定义布局..但这似乎过于复杂。如果可能的话,我更喜欢使用标准布局。

0 投票
1 回答
631 浏览

delphi - 如何创建 IDWriteFontFile

我想从文本创建 Direct2D 路径几何。据我了解,我需要创建一个 IDWriteFontFace,我必须从中调用 GetGlyphRunOutline。

不幸的是,我无法弄清楚如何创建该字体。到目前为止,我什至偶然发现了一个字体文件引用,我认为我必须使用它来创建字体。

Winapi.D2D1中CreateFontFileReference的原型如下:

我知道放置字符串而不是 WCHAR 会打扰编译器,但是应该如何编写呢?如果有另一种更简单的方法,我也很感兴趣......

更新: 正如 Remy Lebeau 所说,Winapi.D2D1 单元中还有其他类似的错误声明。我遇到的第二个也是在 CreateFontFileReference 中:参数 lastWriteTime 应该是一个指针,所以为了让我的代码工作,我必须改变我对 ft 变量的使用,如下所示:

0 投票
2 回答
1007 浏览

direct2d - DirectWrite:如何获取渲染的位图数据

有没有办法使用 DirectWrite 和 Direct2D 获得渲染的位图图像?

就像 FreeType2 的 FT_GlyphSlot->bitmap...

0 投票
1 回答
472 浏览

directx - DirectWrite.TextLayout 变换矩阵没有效果

我正在使用 DirectWrite (通过SharpDX)绘制一个 TextLayout 并且它按预期工作,除了几件事。我正在调用这个 TextLayout 构造函数:

http://sharpdx.org/documentation/api/m-sharpdx-directwrite-textlayout--ctor-2

我的代码非常简单:

我可以将变换矩阵更改为任何值,但它对我的输出没有影响。我还发现pixelsPerDip除了在我指定零时不绘制文本之外没有任何效果。我深入研究了 SharpDX 源,这些输入似乎得到了正确处理。我究竟做错了什么?

我正在使用的 TextLayout 构造函数调用CreateGdiCompatibleTextLayout()。我正在做/使用的其他事情是否可能与 GDI 不兼容,这会导致我的问题?

0 投票
3 回答
2598 浏览

c++ - DirectWrite text position different by font size

I'm using DirectWrite to render some text to a window. Everything seems to work except positioning when using different font sizes: I'd expect 2 texts with font size v1 and v2 and both with (x, y) = (0, 0) to be at the top left but as you can see:

enter image description here

neither "Test" nor "X" are really at the top left.

Is there a way to make this work?

0 投票
1 回答
836 浏览

c++ - 在 D3D 上正确调整 D2D 的大小

我在通过 D3D11 调整 D2D 渲染目标的大小时遇到​​问题。我制作了调整交换链缓冲区大小的函数。它工作得很好,但是当我激活 D2D 时,调整大小就坏了。

当我缩小窗口时,所有网格都会从窗口中消失 - 只显示文本。当我制作更大的网格时 - 渲染了网格,但比例不正确,尽管我重新创建了投影矩阵。

我的问题是 - 如何在窗口大小更改后正确调整 D2D 渲染目标和文本的大小?

这是我创建 D3D11Device、swapchain1 和 D2D 的代码。

我在 WM_SIZE 事件上调整缓冲区大小:

0 投票
5 回答
6358 浏览

windows - 是否可以在chrome中启用directwrite?

在 IE10 之上的几乎所有方面我都更喜欢 google chrome,但我讨厌的一件事是字体在 IE10 中看起来好多了。这对于小型数学字体尤其明显。它们看起来像 IE10 中的 pdf 质量。

稍微搜索了一下,发现这是因为IE10在windows 7/8中使用DirectWrite进行字体渲染。我正在搜索 chrome 将来是否会支持此功能,我发现了以下信息:

2013 年 4 月 24 日

给正在看这个的每个人的更新:

我们的 Windows 字体渲染正在积极进行中。现在在 Skia 中提供对 DirectWrite 的基本支持(从评论 #13 更新)。同时,GDI 非常深入地嵌入到 Windows WebKit 端口中,并且仍在被根除。我们希望在一两个里程碑内有一些开发人员可以开始使用的东西。与往常一样,它变得稳定的速度取决于我们能够以多快的速度根除并消除任何回归。

当它在运行时标志后面可用时,我们将在此处更新线程供大家试用。

2013 年 10 月 8 日

以下修订涉及此错误: http ://src.chromium.org/viewvc/blink?view=rev&rev= 159071 更改路径:M http://src.chromium.org/viewvc/blink/trunk/Source/core /platform/graphics/skia/FontCacheSkiaWin.cpp?r1=159071&r2=159070&pathrev=159071 M http://src.chromium.org/viewvc/blink/trunk/Source/core/page/RuntimeEnabledFeatures.in?r1=159071&r2=159070&pathrev =159071
添加运行时标志以在 Windows 上使用 DirectWrite
添加运行时启用功能以在
Windows 上使用 DirectWrite skia 后端。
BUG=25541 R=bungeman@chromium.org, eseidel@chromium.org
审核网址:https ://codereview.chromium.org/26335002

我什至不知道运行时标志是什么,但这对我来说听起来可能以某种方式在 chrome 中启用直接写入。这是真的 ?还是我应该再等一会儿才能在 chrome 中使用 directwrite 字体渲染?

0 投票
2 回答
770 浏览

c++ - 如何让 DirectWrite PadWrite 示例工作?

我正在尝试了解 DirectWrite API,这样我就可以获得一个灵活的解决方案来解决从任何文化中呈现文本的问题,并可能使用它将富文本编辑合并到应用程序中,并且比“固定”方式具有更多的控制权编辑/显示文本。

PadWrite示例看起来很棒,并展示了 API 的精心设计——这是 Microsoft 自己的屏幕截图:

PadWrite 截图

示例文本包括以“混合脚本”开头的行:在源代码中,所有示例文本都由单个 C++wchar_t[]文字指定,并且混合脚本都在 Visual Studio 2012 的代码编辑器中正确显示。如果我将它们复制并粘贴到普通的 Windows 写字板中,它们也会正确显示。并且阿拉伯语从右到左部分在这两个编辑器中都有正确的插入符号导航行为。

但是当我实际运行 PadWrite 示例时,这些都不起作用。相反,我看到了这个:

在此处输入图像描述

它几乎看起来像是被转换为 UTF-8 然后被误解了(这没有意义,因为这一切都是用 . 完成的wchar_t。)

我正在运行 Windows 8.1。我需要做什么才能使 PadWrite 与 WordPad 或 Visual Studio 2012 一样好用?它是来自从未更新过的 API 预发布版本的失效样本吗?

注意。第一个警告信号是 PadWrite 一开始甚至没有编译 - 在文件中EditableLayout.cppTextEditor.cpp我不得不在#include语句之后添加:

0 投票
1 回答
1356 浏览

c++-cli - Windows 7 上的 D3D D2D 互操作

我正在尝试使用 DWrite 在我的 dx11 应用程序中绘制文本,但我遇到了很多问题,我在 D3D10 设备和 D3D11 设备之间共享资源,因为 dx10 能够将 D3D 与 D2D 连接起来,这是我的 GraphicsDevice 的代码:




这是我的 SpriteBatch:


当我从我的 C# 应用程序调用 SpriteBatch.DrawString(...) 时,我没有在我的屏幕上获得任何内容,可以请有人解释我缺少什么吗?我是 DirectX 编程的新手,所以请对我保持安静 xD 谢谢!

0 投票
1 回答
271 浏览

windows-7 - DirectWrite FPS 减速

经过很长时间(比如一个月)后,我能够通过 Direct3D11、Direct3D10、Direct2D 和 DirectWrite 的互操作性在我的应用程序上呈现文本字体。现在我找到了解决方案,我注意到在绘制一些文本时 FPS(每秒帧速率)显着减慢,有什么建议吗?

编辑:

分析应用程序花费我很多时间的功能是 d2dRender->DrawText(...); 其中 d2dRender 是一个 ID2DRendertTarget 指针