【问题标题】:Truetype font spacing?Truetype字体间距?
【发布时间】:2011-04-19 12:57:26
【问题描述】:

我正在对 True Type 字体进行矢量化以将它们呈现为 Direct3D 基元。到目前为止,我已经成功地使用 GetGlyphOutline 提取了字形,并将它们呈现为线表原语。无论如何,关于间距...

如何找出字符之间的间距,或者它是如何/在哪里确定的? 很明显,空间因非等宽字体而异。

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

【问题讨论】:

标签: text fonts directx rendering truetype


【解决方案1】:

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

  1. GetCharABCWidthsI 如果您已经有一个字形 ID 数组。这种方法可以支持 Unicode 中的任何字符,包括扩展的 CJK 和埃及象形文字等新添加的字符,而不仅仅是较低的基本多语言平面。
  2. GetCharWidth32 用于字符宽度 - 仅限于基本平面,但是是简单的选项。
  3. 使用 GGO_METRICS 调用 GetGlyphOutline 并使用 gmCellIncX。不过,这会返回比您可能感兴趣的更多字段。

字距调整是对标称推进的附加可选调整,例如在单词“AVATAR”中,为了美观,“A”和“V”会更接近。

【讨论】:

    【解决方案2】:

    我对direct3d一无所知,但是如果您只是在度量之后,它们就会存储在字体字距调整表中; GetKerningPairs 会告诉你字符对集的正确位置。

    【讨论】:

      猜你喜欢
      • 2012-03-22
      • 2010-10-06
      • 2012-03-18
      • 2016-05-30
      • 2015-02-01
      • 2013-01-06
      • 2011-10-15
      • 2014-07-16
      • 2012-11-26
      相关资源
      最近更新 更多