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

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

Спасибо

Ответы [ 5 ]

17 голосов
/ 29 октября 2009

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

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

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

   $width = $right - $left;
17 голосов
/ 29 октября 2009

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

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

5 голосов
/ 29 октября 2009

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

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

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

Посмотрите на этот вопрос , чтобы узнать, как это сделать в javascript.

3 голосов
/ 25 сентября 2010

Используйте jQuery,

$("text").each(function(){alert(this.innerHTML+" is "+$(this).width()+" pixels.");});
2 голосов
/ 27 июня 2014

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

imagefontwidth()


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

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

Если вы не используете встроенные шрифты, используйте imagettfbbox (), как упомянуто выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...