2016-11-28 62 views
0

使用Raphael.textgetBBox我從上行到下行獲得文本的完整維度。因此,getBBox方法不能準確反映我的文本的實際高度。我測試的高度是90px。使用OpenType計算Raphael.text中的基線

enter image description here

我已經集成OpenType和用它來繪製相同的文本在一個無形的畫布,並傳遞到Raphael.pathBBox返回我的文字的確切尺寸。這個高度是70px。

enter image description here

現在我的任務就是要能夠排隊的文本。爲了做到這一點,我需要知道OpenType文本的像素上升/下降。

我讀了這個post,它表示不使用hhea表,而是使用上升/下降的os2值。但是,當我加起來的最終值我的總數約爲70px,而不是所需的90px。如果我反而使用hhea值,我得到90px。另外請注意,在這篇文章中,它聲稱上行/下行會引用unitsperem,但當我使用os2表值時,它們不在我的情況下。也許os2表只反映我使用的字體而不是整個字形的數據?

是hhea真的不好用嗎?而且由於os2表格不會產生正確的信息,所以如何獲得它。

下面是hhea/os2表格的打印。

enter image description here

回答

0

找到我的答案中的OpenType問題:https://github.com/nodebox/opentype.js/issues/110

OpenType字體提供font.ascenderfont.descender值。所以:

var aboveBaseline = font.ascender/font.unitsPerEm * fontSize; 
var belowBaseline = font.descender/font.unitsPerEm * fontSize; 
var boundingBoxHeight = aboveBaseline + belowBaseline