2011-04-19 105 views
0

我正在向量化真正的字體以將它們渲染爲Direct3D原語。到目前爲止,我已經成功設法使用GetGlyphOutline提取字形,並將它們呈現爲線列表基元。無論如何,在間距...Truetype字體間距?

我怎樣才能找出字符之間的間距,或如何/它在哪裏確定? 顯然,空格會隨着非等寬字體而變化。

是否有GDI +或其他Windows函數調用來確定間距?

+0

我在這裏問了一個類似的問題:http://stackoverflow.com/questions/42737846/true-type-font-format-pen-position-advance-width-and-kerning – user18490 2017-03-13 13:12:47

回答

0

我不知道任何關於direct3d的內容,但是如果你只是在它們存儲在字體kerning表中的度量之後; GetKerningPairs會告訴你一組字符對的正確位置。

1

您指的是字形的前進寬度(存儲在字體的hmtx表中,或垂直文本的vmtx中)。通過GDI,它聽起來像你正在使用,而不是DirectWrite,你可以使用:

  1. GetCharABCWidthsI如果你已經有一個字形id的數組。這種方法可以支持Unicode中的任何字符,包括擴展的CJK和更新的添加項目,如埃及的heiroglyphics,而不僅僅是基礎較低的多語言平面。
  2. GetCharWidth32用於字符寬度 - 僅限於基本平面,但是是簡單的選項。
  3. 用GGO_METRICS調用GetGlyphOutline並使用gmCellIncX。這會返回比您可能感興趣的字段更多的字段。

字距調整是額外的可選調整的名義上的進步,如在單詞「阿凡達」,其中'A'和'V'將審美的目的轉移更近。