2016-11-28 16 views
0

Raphael.textgetBBoxを使用して、テキストの完全なサイズを昇順から降順に取得します。したがって、getBBoxメソッドは、実際のテキストの高さを正確に反映しません。私のテストの高さは90pxです。OpenTypeを使用したRaphael.textのベースラインの計算

enter image description here

私はOpenTypeフォントを統合し、目に見えないキャンバスに同じテキストを描画し、私のテキストの正確な寸法を返しRaphael.pathBBoxにそれを渡すためにそれを使用しました。これの高さは70pxです。

enter image description here

今私の仕事は、テキストをラインアップすることができることです。これを行うには、OpenTypeテキストのピクセル単位でascender/descenderを知る必要があります。

これは、hheaテーブルを使用せず、代わりにascender/descenderのos2値を使用すると言われているpostを読んでいます。しかし、私が最終的な値を合計すると、私の合計は約70pxであり、望ましい90pxではありません。私が代わりにヒア値を使用すると、私は90pxになります。また、この記事では、ascender/descenderがunitsperemに加わると主張していますが、私の場合はos2テーブルの値を使用してもそれはありません。おそらく、os2テーブルはグリフ全体ではなく、私が使用したフォントのデータを反映しているだけでしょうか?

は本当にうまくないのですか?そして、os2テーブルは正しい情報を得ていないので、それをどのように取得するのか。

ここにhhea/os2テーブルのプリントがあります。 OpenTypeの問題に私の答えが見つかり

enter image description here

答えて

0

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 
関連する問題