文本指标
为了帮助你的布局、自定义字体选择和其他指标密集型作,从 Windows 8 开始,DirectWrite 有许多新的 API 来表达有关你可能需要开发富文本应用字体的所有信息。
PANOSE
PANOSE 是用于识别字面的视觉分类系统。 PANOSE 分类包含有关家庭、衬线样式、重量、比例、对比度、笔划、手臂样式、X 高度等的信息。此信息描述字体的视觉样式。 此信息很重要,因为具有类似 PANOSE 值的字体看起来相似。 在字体不可用且应用需要回退到可用的字体的情况下,这非常有用。 比较字体的 PANOSE 值可以让你选择与原始字体类似的字体。
若要访问字体的 PANOSE 信息,请在 IDWriteFont1 和 IDWriteFontFace1 接口上使用 GetPanose 方法。 此方法返回一个 DWRITE_PANOSE 枚举,其中包含该字体的所有 PANOSE 信息。
其他指标
从 Windows 8 开始,DirectWrite API 还支持许多新指标,以便向应用表达有关字体的有用信息。 这些新指标包括此信息。
- 左、右、上和下字形边界框指标。
- 上标和下标元素的 X 和 Y 定位。
- 上标和下标元素的 X 和 Y 缩放信息。
- 字体是否具有版式指标。
此信息全部通过 IDWriteFontFace1 和 IDWriteFont1 接口上的新的 GetMetrics 方法获得。 此方法返回包含所有这些信息的 DWRITE_FONT_METRICS1 结构。
插入点指标
若要创建文本编辑应用,需要访问有关如何绘制浏览文本的插入符号的信息。 从 Windows 8 开始,DirectWrite 针对此方案的 IDWriteFontFace1 和 IDWriteFont1 接口提供 GetCaretMetrics 方法。 GetCaretMetrics 返回一个 DWRITE_CARET_METRICS 枚举,其中包含有关沿基线插入点的斜率和偏移量的信息。
如果希望能够适当地使用斜体文本,此信息特别有用。
Monospaced Discoverability
允许用户编写计算机代码的应用通常使用单空格字体代替更传统的字体。 因此,你可以更好地控制与开发相关的应用中的字体选择,DirectWrite 表示字体是否通过 API 分隔。 IDWriteFontFace1 接口上的 IsMonospacedFont 方法返回一个布尔值,指示字体是否为单空格。
字体名称匹配
PDF 阅读器等富文本应用需要能够将其内容中的字体与系统上的字体匹配,需要访问多种格式的字体全名。 因此,可以更好地匹配字体,DirectWrite 包含一个枚举,该枚举以多种格式表达有关字体的完整命名信息。
使用 DWRITE_INFORMATIONAL_STRING_ID 枚举获取系统上任何字体的全名、PostScript 名称和 PostScript CID 名称。 当你需要将应用中的字体与本地系统上的相应字体匹配时,此信息非常有用。
字形推进
IDWriteFontFace1 和 IDWriteFont1 接口上的 GetGlyphAdvances 方法采用需要有关字形的字形计数和索引,然后返回有关字形的进步。
Unicode 范围
想要处理自己字体选择的应用需要访问字体支持的 Unicode 范围。 这样,如果字体不支持 Unicode 代码点,应用可以选择包含该字形的相应字体。 如果没有此信息,应用可能会使用不包含显示信息所需的所有字形的字体。
IDWriteFontFace1 和 IDWriteFont1 接口上的 GetUnicodeRanges 方法采用从客户端传入的最大范围数,并返回字体支持的实际范围。
EUDC 字体集合
在 IDWriteFactory1 接口上使用 GetEudcFontCollection 方法访问 EUDC 字体集合。 此方法的工作方式与 GetSystemFontCollection相同,而是返回指向 EUDC 字体集合的指针。