文本指标

为了帮助你进行布局、自定义字体选择和其他指标密集型操作,从Windows 8开始,DirectWrite提供了许多新的 API 来表达开发 RTF 应用可能需要的字体的所有相关信息。

PANOSE

PANOSE 是用于标识字样的视觉分类系统。 PANOSE 分类包含有关系列、衬线样式、重量、比例、对比度、笔划、手臂样式、X 高度等的信息。此信息描述字体的视觉样式。 此信息很重要,因为具有类似 PANOSE 值的字体看起来相似。 在字体不可用且应用需要回退到可用字体的情况下,这非常有用。 通过比较字体的 PANOSE 值,可以选择在视觉上与原始字体相似的字体。

若要访问字体的 PANOSE 信息,请在 IDWriteFont1 和 IDWriteFontFace1 接口上使用 GetPanose 方法。 此方法返回包含该字体的所有 PANOSE 信息的 DWRITE_PANOSE 枚举。

其他指标

从 Windows 8 开始,DirectWrite API 还支持许多新指标,以便向应用表达有关字体的有用信息。 这些新指标包括此信息。

  • 左、右、上和下字形边界框指标。
  • 上标和下标元素的 X 和 Y 定位。
  • 上标和下标元素的 X 和 Y 缩放信息。
  • 字体是否具有版式指标。

此信息全部通过 IDWriteFontFace1 和 IDWriteFont1 接口上的新 GetMetrics 方法提供。 此方法返回包含所有这些信息的 DWRITE_FONT_METRICS1 结构。

插入点指标

若要创建文本编辑应用,需要访问有关如何绘制在文本中导航的插入点的信息。 从 Windows 8 开始,DirectWrite针对此方案的 IDWriteFontFace1IDWriteFont1 接口提供 GetCaretMetrics 方法。 GetCaretMetrics 返回一个 DWRITE_CARET_METRICS 枚举,其中包含有关沿基线的插入点的斜率和偏移量的信息。

如果希望能够使用斜体文本适当地显示插入点斜率,此信息特别有用。

单空间可发现性

允许用户编写计算机代码的应用通常使用空格字体代替更传统的字体。 因此,你可以更好地控制与开发相关的应用中的字体选择,DirectWrite通过 API 表示字体是否为空格。 IDWriteFontFace1 接口上的 IsMonospacedFont 方法返回一个 Boolean 类型的值,该值指示字体是否为空格。

字体名称匹配

PDF 阅读器等富文本应用需要能够将内容中的字体与系统上的字体匹配,需要访问多种格式的字体全名。 因此可以更好地匹配字体,DirectWrite包含一个枚举,该枚举以多种格式表示有关字体的完整命名信息。

使用 DWRITE_INFORMATIONAL_STRING_ID 枚举获取系统上任何字体的全名、PostScript 名称和 PostScript CID 名称。 当你需要将应用中的字体与本地系统上的相应字体进行匹配时,此信息非常有用。

字形前移

IDWriteFontFace1 和 IDWriteFont1 接口上的 GetGlyphAdvances 方法会获取需要提前信息的字形计数和索引,然后返回有关字形的推进。

Unicode 范围

想要处理自己的字体选择的应用需要访问字体支持的 Unicode 范围。 这样,如果字体不支持 Unicode 码位,则应用可以选择包含该字形的相应字体。 如果没有此信息,应用可能会使用不包含显示所显示信息所需的所有字形的字体。

IDWriteFontFace1 和 IDWriteFont1 接口上的 GetUnicodeRanges 方法采用从客户端传入的最大范围数,并返回字体支持的实际范围。

EUDC 字体集合

使用 IDWriteFactory1 接口上的 GetEudcFontCollection 方法访问 EUDC 字体集合。 此方法的工作方式与 GetSystemFontCollection 相同,但会返回指向 EUDC 字体集合的指针。