那麼,你已經發現了兩個「捷徑」。 FontBBox將字體中所有字形的邊界框疊加在一起。 false charpath flattenpath pathbbox
給出指定字符串的框。
對於Type 3(用戶定義的)字體,這是所有你可以反覆指望的;但對於更受歡迎的Type 1字體,在字體和「度量」文件(用於其他應用程序)中存在豐富的度量信息和。
但這是我不知道的部分。因此,我要閱讀(在Adobe Type 1手冊中)並稍後擴展此答案。
編輯:事實上,它看起來像這些可能是一般的最佳途徑。
There is在/ Private字典中的名稱/ BlueValues下的Type 1字體中的垂直對齊值數組;但是不能保證字體能夠尊重它們。陣列中的第一個數字是基準超調;這是字母底部的邊緣,如'O',低於基線。陣列中的最大值將爲上升高度超調或高程超調(以較高者爲準)。但是任何個人角色都可能被繪製出來而不考慮這些值(因此,不能保證)。
在另一方面,FontBBox本身可能反映了存在於字體中「特」字的邊框,無論它們是否是通過訪問編碼向量(即你不能show
他們,但它們必須是glyphshow
)。
所以最好的辦法是將pathbbox
中的所有字符串打算使用。這會忽略可能存在但與您的目的無關的任何其他角色的貢獻。並且不要忘記flattenpath
從曲線上移除控制點(可能遠離「真實」邊界框)。