问题标签 [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.
c++ - 最接近 Direct2D/DirectWrite 的跨平台替代方案?
Windows 特定的 2D API 有哪些好的跨平台替代方案?我正在寻找一种用于渲染简单几何对象的 API,以及一种用于渲染具有亚像素抗锯齿 (ClearType) 和 OpenType 支持的文本的 API,特别是对提示的支持。
c# - 使用本地磁盘中的字体文件
我正在使用 C# 开发一个 UWP 应用程序来预览用户本地磁盘中的字体文件。我正在使用 SharpDX 库来读取 .ttf 文件内容并查询不同的字体属性。我的问题是:
如何将 TextBlock FontFamily 设置为加载的字体?
当然,使用加载的字体名称设置 FontFamily 属性不起作用,因为加载的字体不需要安装在系统上。
请帮忙。
gdi - 如何基于 LOGFONT 结构创建具有特定拉伸的 DirectWrite 字体?
我有一个 LOGFONT 结构,我使用 CreateFontFromLOGFONT() 将其转换为 IDWriteFont:
如果 LOGFONT 描述了 Tw Cen MT Condensed字体,我希望 DirectWrite 的字体具有分配的 DWRITE_FONT_STRETCH_CONDENSED 属性。
LOGFONT 的宽度为“0”,无论我选择什么拉伸(冷凝、宽等)。似乎只能从字体名称中扣除拉伸,而DirectWrite的方法无法做到这一点。这是一个错误吗?
如何基于 LOGFONT 结构创建具有特定拉伸的 DirectWrite 字体?
text - 如何获得 DirectWrite 布局的高度?
我知道我可以调用IDWriteTextLayout::GetMetrics
,但这给了我文本的边界,包括文本上方和下方的空间,用于上升和下降等。但是,我正在寻找的是文本实际的确切空间量占用。我将如何获得或计算这个边界框?
c++ - DirectWrite GDI 互操作:使用“IDWriteFontFace”绘制文本的简单方法
我有一个设备上下文,其中选择了一些字体,我想DrawText
在ID2D1RenderTarget
.
目前,我走以下路线来实现这一目标:
- 获得一个
IDWriteFontFace
viaCreateFontFaceFromHdc
。 IDWriteFont
通过IDWriteFontFace
默认系统字体集合(我通过GetSystemFontCollection
- 请参阅下一步)获取一个。- 获取
IDWriteTextFormat
viaCreateTextFormat
,提供 中指定的参数IDWriteFont
并指定nullptr
为fontCollection
,表示我想使用默认的系统字体集合。 - 传递
IDWriteTextFormat
给DrawText
.
我对此感到奇怪的是,我IDWriteFontFace
在第一步中已经有了一个,显然必须“返回”并要求一个字体集合来获取一个IDWriteFont
,只是为了将它传递给一个DrawTextFormat
,然后可以使用它DrawText
。这似乎是不必要的复杂 - 特别是因为要绘制文本,系统可能不得不降到一个IDWriteFontFace
反正,对吧?
我找到DrawGlyphRun
了 ,但这需要例如 a baselineOrigin
,我必须事先计算(更不用说它glyphRun
本身了)。
ID2D1RenderTarget
如果我已经有了一个,难道没有更简单的方法可以将文本绘制到一个上IDWriteFontFace
吗?
opentype - 使用 DirectWrite 进行部分连字选择
使用来自IDWriteTextLayout的HitTestTextPosition样式 API,我无法正确处理“ti”、“ffi”或其他带有 Calibri 等字体的连字中的文本位置。它总是在连字之后或之前返回位置,而不是像 t|i 或 f|f|i 那样在内部。
使用 DirectWrite API 在连字中进行插入符号移动的推荐方法是什么?
fonts - DirectWrite 字体拉伸
我想使用 DirectWrite 将字体垂直或水平拉伸 x%。
我正在使用 IDWriteTextFormat::CreateTextFormat 和 IDWriteFactory::CreateTextLayout 和 DrawTextLayout。
传递给 CreateTextFormat 的 DWRITE_FONT_STRETCH 枚举太粗糙,没有给我足够的控制权。例如,我想要的不是“半压缩”,而是 71% 的垂直压缩。
到目前为止,如果没有 direct2d 缩放转换或使用 GDI,我无法弄清楚如何做到这一点。我宁愿避免使用 GDI 的 LOGFONT,因为它会使我的应用程序更加复杂。
c# - Wpf 应用程序崩溃 dwrite.dll
我的 WPF 应用程序在某些不同的 PC 上崩溃。
这是 Windows 事件日志:
Faulting module name: dwrite.dll, version: 6.3.9600.18696,time stamp:0x5915df3a<br/>
Exception code:0xc00000fd<br/>
Fault offset:0x0000706a<br/>
Faulting process id:0x59f8<br/>
Faulting application start time:0x01d3b7aa9dba2f15<br/>
Faulting application path:C:\Windows\SYSTEM32\dwrite.dll<br/>
Faulting package full name: <br/>
Faulting package-relative application ID:<br/>
Windows 10 和视频驱动程序已更新。dxdiag 没有发现任何问题。请告诉我解决这个问题的方向。
directwrite - 使用directwrite在指定矩形中显示文本
我想在指定的矩形和指定的字体大小中显示带有directwrite的文本,矩形外的文本应该被切断。
通过搜索,我发现了一些关于 CreateTextLayout 的信息,但看起来无法用它定义字体大小。
感谢您的回答。