0

PHP から動的にグラフィカル メニューを作成しています。次のような画像が 1 つだけ表示されます。

One    Two    Three    Four

ただし、問題は、css で画像を配置するために、各ページ タイトルの x オフセットと幅 (たとえば、左オフセットとピクセル単位の「1」の幅) を決定する必要があることです。

スペースを含むページ タイトルを除いて、すべて正常に動作します - imagettfbbox() は間違った位置を返します。Arial フォント (TTF) を使用しています

この問題を回避する方法について何か提案はありますか?

編集:次の関数を使用してテキストの境界を決定し、現在動作しています:

function calculateTextBox($font_size, $font_angle, $font_file, $text) {
    $box = imagettfbbox($font_size, $font_angle, $font_file, $text);

    $min_x = min(array($box[0], $box[2], $box[4], $box[6]));
    $max_x = max(array($box[0], $box[2], $box[4], $box[6]));
    $min_y = min(array($box[1], $box[3], $box[5], $box[7]));
    $max_y = max(array($box[1], $box[3], $box[5], $box[7]));

    return array(
        'left' => ($min_x >= -1) ? -abs($min_x + 1) : abs($min_x + 2),
        'top' => abs($min_y),
        'width' => $max_x - $min_x,
        'height' => $max_y - $min_y,
        'box' => $box
    );
}

編集 2: 残念ながら、異なるフォント サイズとフォント ファイルを使用すると、寸法が間違ってしまいます...

4

2 に答える 2