Подтвердить что ты не робот

Как определить длину (в пикселях) строки, отображаемой на веб-странице?

Если я знаю размер шрифта (12) и семейство шрифтов (calibri), есть ли способ определить длину (в пикселях), какая строка будет принята после ее отображения? Я абсолютно уверен в шрифте и размере. Существуют ли таблицы поиска для этой цели, чтобы определить длину в самом PHP-коде? Я пишу PHP script для динамического создания SVG-изображения, которое содержит различные поля, заполненные данными, выведенными из БД. Проблема в том, что мне нужно вручную обернуть текст вокруг и увеличить размер поля, если строка большая.

Спасибо

4b9b3361

Ответ 1

Используйте функцию PHP imagettfbbox, чтобы получить размер ограничивающей рамки для данной строки.

С другой стороны, вы можете использовать javascript для управления изображениями SVG, если вы хотите обработать его на стороне клиента. Таким образом, было бы неважно, имел ли клиент указанный шрифт или нет...

Ответ 2

Вы можете использовать PHP GD, чтобы отобразить строку в качестве изображения и получить размер результирующего изображения.

Если вы используете это, он должен работать:

   list($left,, $right) = imageftbbox( 12, 0, "arial.ttf", "Hello World");

   $width = $right - $left;

Ответ 3

Ваше название и фактическое сообщение, кажется, говорят немного разные вещи. Я предполагаю, что вы действительно спрашиваете, можно ли определить ширину в пикселях текста, отображаемого на веб-странице в вашем PHP-коде (до отображения веб-страницы).

Если да, ответ будет "НЕТ". Указанный шрифт может быть недоступен на компьютере пользователя; s/он может иметь пользовательскую таблицу стилей; используйте большие размеры шрифта; и т.д...

То, что вы можете сделать, - это определить ширину с помощью javascript после визуализации страницы (очевидно, вы можете сделать это и на другой странице и надеяться, что ничего не изменится до тех пор) и представить это обратно PHP. С помощью какого-то умного AJAX-ing вы можете сделать это на одной странице.

Посмотрите этот вопрос для получения подробной информации о том, как это сделать в javascript.

Ответ 4

Использовать jQuery,

$("text").each(function(){alert(this.innerHTML+" is "+$(this).width()+" pixels.");});

Ответ 5

Если вы хотите определить длину строки текста, используя PHP Build-In-Fonts (например, если вы используете imagestring()), вы можете использовать:

imagefontwidth()


$text = "Your text here"
$fontSize = 5;

$textLength = imagefontwidth($fontSize) * strlen($text);

Если вы не используете Build-In-Fonts, используйте imagettfbbox(), как указано выше.