问题标签 [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.
directwrite - 如何在 DirectWrite 中呈现混合颜色的文本?
我想将 DirectWrite 用于混合颜色文本格式(准确地说是语法突出显示),但似乎无法在 Layout 或 Typography 选项中找到方法。唯一的选择是在渲染文本时传递一个画笔,这对我不起作用,因为我基本上只有一个布局。帮助!
c++ - SetLineSpacing() 在 DirectWrite 中不起作用 - 为什么?
我在 Direct2D/DirectWrite 中呈现文本,但调用SetLineSpacing()
TextFormat 或 TextLayout 似乎没有效果。有谁知道为什么?
c# - 为什么 Direct2D 和 DirectWrite 不使用传统的 COM 对象?
我正在使用 C# 中的一个小 2D 游戏引擎,并决定使用 Direct2D 和 DirectWrite 进行渲染。我知道有 Windows API 代码包和 SlimDX,但我真的很想深入研究并从头开始编写接口。我正在尝试不使用托管 C++,但 Direct2D 和 DirectWrite 似乎不使用传统的 COM 对象。它们定义了派生自 的接口IUnknown
,但似乎无法从 C# 与 COM 互操作实际使用它们。中有 IID d2d1.h
,但没有 CLSID。
当然,我对 COM 互操作真的很陌生,所以也许我只是遗漏了一些东西。有人可以阐明这种情况吗?
java - 是否有 SWT 3.6 到 WPF 的端口?
最近我一直在寻找使用 WPF(或 DirectWrite)作为其渲染器的 SWT 版本。
我发现的最后一个移植到 WPF 的 SWT 版本是 3.3。
无论如何,是否有任何 SWT 3.6 到 WPF 的端口?
谢谢
c++ - Win32/Direct2D - 如何渲染无限滚动列表框
我正在使用 C++ 构建一个 Win32 应用程序,它需要显示 Twitter 中相对简单的项目列表。列表中的每个项目都将包括作者和推文文本以及一些图标。在 OS X 上沿着 Twitter 客户端的线条平滑滚动和加速会很好(可能使用 Core Animation 完成)。我只需要支持Windows 7。
我假设我需要创建某种类型的所有者绘制的列表框,该列表框被虚拟化以允许大量项目。有没有一些类似的例子?
我一直在考虑使用 Direct2D 和 DirectWrite,但这些似乎不适合控件开发。我假设这些新技术需要我实施命中测试,因为我将负责渲染每个项目,并且我还必须计算出滚动列表的物理特性。继续研究这个是否明智?有没有人得到 Direct2D 的示例来替代自绘的 Win32 控件。
css - 不同平台上的文字大小不同
如果每个平台以不同的大小呈现文本,我如何在不同的平台上获得精确的大小?最近发布的Firefox 4加剧了这个问题。此版本支持使用DirectWrite对文本进行硬件渲染。使用 DirectWrite 编写的文本的大小比没有使用硬件加速编写的文本要大得多。请注意以下示例。如果您需要查看 CSS,这是一个实时示例。
- Windows 7 64 位家庭版
- ATI Radeon HD 4670
- DirectWrite 已关闭,因为我的驱动程序未更新。
- 620×283
- Windows Vista 64 位商业版
- 英伟达 GeForce 8800GT
- DirectWrite 已打开,因为我刚刚更新了我的驱动程序。
- 620 x 293
HTML
CSS
您是否看到 DirectWrite 关闭时导航与内容对齐,但 DirectWrite 开启时导航比内容高?我知道有一些 hacky 解决方案。font-size, width, height
一种是在 px中指定所有内容 ( )。这并不理想,因为组件不会是模块化的——也就是说,它不能在缩放到另一个大小的另一个设置中重复使用。它还破坏了 IE6 的字体大小选项。另一种解决方案是使用 JavaScript 读取导航的物理高度,并使内容高度相同。这并不理想,因为样式是 CSS 的角色。有没有任何CSS解决方案?
这只是众多例子之一。另一个是 Ubuntu 9 上的 Firefox 3 具有更宽的文本,因此并非所有链接都适合我的主导航。我被迫切断了最后一个导航链接max-width: 37em; overflow: hidden
。
wpf - 在 IE9 中禁用 Cleartype(文本抗锯齿)
IE9 忽略了操作系统范围的字体平滑设置(也称为抗锯齿),这是有据可查的(例如这里)。即使在 Windows 中禁用了字体平滑和 ClearType,IE 仍然显示抗锯齿字体,一些用户难以阅读,尤其是在小字体时。
如何在 IE9 中禁用所有字体抗锯齿(ClearType 或其他)?
更多细节:
我们公司构建了一个使用大量小字体的 Web 应用程序。随着 IE9 的发布,我们的一些用户抱怨 IE9 的默认抗锯齿功能使我们的小字体变得模糊或模糊。所以我们需要帮助那些已经安装了 IE9 并且想要关闭抗锯齿功能的用户。
另外,就我个人而言,我在阅读小的抗锯齿字体时遇到了麻烦,所以我想要一个我自己使用的解决方案,即使对于我无法控制的网站也是如此。
在 IE8 中,我可以取消选中“始终为 HTML 使用 ClearType”,然后在操作系统中禁用 ClearType,IE8 将显示所有字体别名。但在 IE9 中,缺少此选项。
在对这个问题进行一些研究之后,我了解到:核心问题是 IE 依赖 DirectWrite 进行文本渲染,并且不支持任何更新的渲染选项,这些选项将在没有抗锯齿的情况下绘制文本并尊重用户的操作系统-广泛的默认选择。
更糟糕的是,如果您在操作系统中禁用 ClearType,在某些情况下 IE 将回退到 DirectWrite 的默认非 cleartype 抗锯齿,这甚至比 ClearType 更模糊。
c++ - Directwrite:获取字体的高度
我的目标: 我想获得 IDWriteTextFormat 字体的高度,这样我就可以计算出在某个高度的 IDWriteTextLayout 中可以容纳多少行文本。
我的问题: 现在我正在使用这段代码来计算可见的行数:
对于某些字体,计算似乎是准确的,但对于任何 TrueType 字体(例如:Courier New、Arial、Times New Roman)都不是。对于这些字体,显示的文本在渲染目标的下垂直边界处被剪裁得很短。
一些上下文: 我正在制作一个文本回滚缓冲区控件,它使用 IDWriteTextLayout 将文本放入控件的呈现目标。我使用 GetVisLines() 的结果来确定要从循环缓冲区(按行将文本存储在 std::strings 中的文本)中的多少行文本拉入布局,并在每次滚动或调整窗口大小时重新创建它。
这是使用“本机”Win32 API C++ 完成的。
silverlight - Silverlight 或 WPF 应用程序是否使用 Direct2D 或 DirectWrite 来呈现字体和 UI?
我发现很多信息表明 IE9 使用 DirectWrite 和 Direct2D 而不是 GDI 来呈现 UI。WPF 和 Silverlight 应用程序是否也是如此?