2

特定の理由から、私は独自のフォント レンダリングを実装しており、単一グリフのバウンディング ボックスを使用してテキストのバウンディング ボックスを計算するアルゴリズムと、それぞれの進歩が必要です。明確にするために、次の図を参照してください。

ここに画像の説明を入力

これらのN 個のグリフのそれぞれに対して、原点 (xmin、xmax、ymin、ymax) に対する相対的な bbox と、前進 (疑似コード) が与えられます。

int xmin[N], xmax[N], ymin[N], ymax[N], adv[N];

誰も噛まなければ、自分で答えます。

4

1 に答える 1

1

一般的なケースでは、グリフのバウンディング ボックスとアドバンス幅だけを使用して文字列を正確に測定することはできません。これは、ヒンティング、カーニング、合字が原因で、グリフのサイズとグリフの位置に応じてそれらの間隔が大幅に変更されるためです。文字列と選択したフォント サイズ。

グリフを反復し、advance width と xMin を追加して文字列の長さを計算する単純な方法は、特定のサイズの特定のフォントに対してのみ正しく、可能な限り使用しないでください。

フォント メトリックを取得する最も簡単な方法は、確立されたフォント レンダリング エンジンを使用してテキストの長さを直接取得するか (API がそれを公開している場合)、テキストをサーフェスにレンダリングして X/Y の最小/最大ピクセルを見つけることです。方向。

于 2012-07-17T16:36:31.173 に答える