Truetype字体间距?

时间:2011-04-19 12:57:27

标签: text fonts directx rendering true-type-fonts

我正在对真实类型字体进行矢量化以将它们渲染为Direct3D基元。到目前为止,我已成功设法使用GetGlyphOutline提取字形,并将它们渲染为linelist基元。无论如何,在间距......

如何找出字符之间的间距,或者确定的方式/位置? 显然,空间因非等宽字体而异。

是否有GDI +或其他Windows函数调用来确定间距?

2 个答案:

答案 0 :(得分:1)

您指的是字形的前进宽度(存储在字体的hmtx表中,或垂直文本的vmtx中)。通过GDI,它听起来像你使用而不是DirectWrite,你可以使用:

  1. GetCharABCWidthsI,如果您已经有一组字形ID。这种方法可以支持Unicode中的任何字符,包括扩展的CJK和更新的添加,如埃及的heiroglyphics,而不仅仅是较低的基本多语言平面。
  2. GetCharWidth32用于字符宽度 - 仅限于基本平面,但是选项很简单。
  3. 使用GGO_METRICS调用GetGlyphOutline并使用gmCellIncX。这会返回比您可能感兴趣的更多字段。
  4. 对于名义前进,Kerning是一个额外的可选调整,例如在“AVATAR”这个词中,为了审美目的,“A”和“V”会更加接近。

答案 1 :(得分:0)

我对direct3d一无所知,但如果你刚刚将这些指标存储在字体kerning表中; GetKerningPairs会告诉您字符对的正确位置。