Win32 文本 API 比较

对于正在迁移其 Win32 应用程序代码的开发人员,下表列出了 Win32 文本 API 以及 DirectWrite 中的大致等效项。

GDI 文本调用 描述 DirectWrite 等效项
AddFontMemResourceEx 将嵌入的字体添加到系统字体表中。 CreateCustomFontFileReference + CreateCustomFontCollection
AddFontResource 将字体资源添加到系统字体表。 没有等效项。 AddFontResource 作为 GDI 字体安装步骤的一部分添加到系统字体集合中。 DirectWrite 会提前填充系统字体集合,并自动监视更新,因此无需安装。
AddFontResourceEx 将专用或不可枚举的字体添加到系统字体表中。 与上面的相同
CreateFont 创建逻辑字体。 应用程序可以指定一组字体属性(例如系列名称、粗细、样式、拉伸和大小)来创建 IDWriteTextFormat,而不是逻辑字体。 只有需要枚举字体的应用才能通过 IDWriteFontCollection访问 IDWriteFont
CreateFontIndirect 从结构创建逻辑字体。 与上面的相同
CreateFontIndirectEx 从结构创建逻辑字体。 与上面的相同
DrawText 在矩形中绘制带格式的文本。 IDWriteTextLayout::D raw
DrawTextEx 在矩形中绘制带格式的文本。 IDWriteTextLayout::D raw
EnumFontFamExProc 应用程序定义的回调函数,用于处理字体 EnumFontFamiliesEx IDWriteFontCollection 接口,通过 IDWriteFactory::GetSystemFontCollection
EnumFontFamiliesEx 枚举系统中具有特定特征的所有字体。 IDWriteFontCollection 接口,通过 IDWriteFactory::GetSystemFontCollection
ExtTextOut 绘制字符串。 IDWriteTextLayout::D rawIDWriteRenderBitmapTarget::D rawGlyphRun
GetAspectRatioFilterEx 获取纵横比筛选器的设置。 N/A
GetCharABCWidths 从 TrueType 字体获取连续字符的宽度。 IDWriteFontFace::GetDesignGlyphMetrics
GetCharABCWidthsFloat 获取当前字体中连续字符的宽度。 IDWriteFontFace::GetDesignGlyphMetrics
GetCharABCWidthsI 获取连续字形索引的宽度或 TrueType 字体中的字形索引数组。 IDWriteFontFace::GetDesignGlyphMetrics
GetCharacterPlacement 获取有关字符串的信息。 IDWriteTextAnalyzer
GetCharWidth32 获取当前字体中连续字符的宽度。 IDWriteFontFace::GetDesignGlyphMetricsIDWriteTextLayout::GetMetrics
GetCharWidthFloat 获取当前字体中连续字符的分数宽度。 IDWriteFontFace::GetDesignGlyphMetricsIDWriteTextLayout::GetMetrics
GetCharWidthI 获取连续字形索引的宽度或当前字体中的字形索引数组。 IDWriteFontFace::GetDesignGlyphMetricsIDWriteTextLayout::GetMetrics
GetFontData 获取 TrueType 字体的指标数据。 IDWriteFontFace::TryGetFontTable
GetFontLanguageInfo 返回有关显示上下文的所选字体的信息。 N/A
GetFontUnicodeRanges 指示字体支持哪些 Unicode 字符。 IDWriteFont::HasCharacter 的循环
GetGlyphIndices 将字符串转换为字形索引数组。 IDWriteFontFace::GetGlyphIndices
GetGlyphOutline 获取 TrueType 字体中字符的轮廓或位图。 字形指标 -- IDWriteFontFace::GetDesignGlyphMetrics,实际大纲信息 --IDwriteFontFace::GetGlyphRunOutline,如果需要字形位图,IDWriteRenderBitmapRenderTarget::D rawGlyphRun
GetKerningPairs 获取字体的字符字距对。 允许通过布局的版式属性(DirectWrite 执行字距处理本身,因此没有返回此信息的方法)。
GetOutlineTextMetrics 获取 TrueType 字体的文本指标。 IDWriteFontFace::GetMetrics
GetRasterizerCaps 指示是否安装了 TrueType 字体。 (TrueType 字体默认安装在 Windows Vista 和 Windows 7 上。
GetTabbedTextExtent 计算字符串的宽度和高度,包括制表符。 IDWriteTextLayout::GetMetrics
GetTextAlign 获取设备上下文的文本对齐设置。 IDWriteTextFormat::GetTextAlignment
GetTextCharacterExtra 获取设备上下文的当前字符间距。 N/A
GetTextColor 获取设备上下文的文本颜色。 N/A. (DirectWrite 独立于渲染,因此不知道颜色。应用程序需要自行跟踪它。
GetTextExtentExPoint 获取将容纳在空格中的字符串中的字符数。 IDWriteTextLayout::GetMetrics
GetTextExtentExPointI 获取将容纳在空间中的字形索引数。 IDWriteTextLayout::GetMetrics
GetTextExtentPoint32 计算文本字符串的宽度和高度。 IDWriteTextLayout::GetMetrics
GetTextExtentPointI 计算字形索引数组的宽度和高度。 IDWriteTextLayout::GetMetrics
GetTextFace 获取在设备上下文中选择的字体的名称。 IDWriteFont::GetFaceNames(返回所有名称)
GetTextMetrics 使用字体的指标填充缓冲区。 IDWriteFontFace::GetMetrics
PolyTextOut 使用设备上下文中的字体和文本颜色绘制多个字符串。 N/A;创建多个布局对象
RemoveFontMemResourceEx 从系统字体表中删除源嵌入文档中的字体。 IUnknown::释放关联对象的
RemoveFontResource 从系统字体表中删除文件中的字体 N/A
RemoveFontResourceEx 从系统字体表中删除私有或不可枚举的字体。 N/A
SetMapperFlags 更改用于将逻辑字体映射到物理字体的算法。 N/A
SetTextAlign 设置设备上下文的文本对齐标志。 IDWriteTextFormat::SetTextAlignment
SetTextCharacterExtra 设置字符间间距。 N/A
SetTextColor 设置设备上下文的文本颜色。 应用程序必须负责指定 绘制 调用之一中的颜色。
SetTextJustification 指定系统应添加到字符串中的断字符的空间量。 N/A. 此版本中不支持对齐和字符间距。
TabbedTextOut 在某个位置写入字符串,将选项卡展开为指定值。 IDWriteTextLayout::D raw
TextOut 在某个位置写入字符串 IDWriteTextLayout::D raw