Если я знаю размер шрифта (12) и семейство шрифтов (calibri), есть ли способ определить длину (в пикселях), какая строка будет взята после того, как она будет отображаться? Я абсолютно уверен в шрифте и размере. Существуют ли таблицы поиска для этой цели, чтобы определить длину в самом PHP-коде? Я пишу PHP-скрипт для динамического создания SVG-изображения, которое содержит различные поля, заполненные данными, выведенными из БД. Проблема в том, что мне нужно вручную обернуть текст вокруг и увеличить размер поля, если строка большая.
благодаря
Используйте функцию PHP imagettfbbox
чтобы получить размер ограничивающей рамки для данной строки.
С другой стороны, вы можете использовать javascript для управления изображениями SVG, если вы хотите обработать его на стороне клиента. Таким образом, было бы неважно, имел ли клиент указанный шрифт или нет …
Вы можете использовать PHP GD для визуализации строки в качестве изображения и получения размера полученного изображения.
Если вы используете это, он должен работать:
list($left,, $right) = imageftbbox( 12, 0, arial.ttf, "Hello World"); $width = $right - $left;
Ваше название и фактическое сообщение, кажется, говорят немного разные вещи. Я предполагаю, что вы действительно спрашиваете, можно ли определить ширину в пикселях текста, отображаемого на веб-странице в вашем PHP-коде (до отображения веб-страницы).
Если да, то ответ «НЕТ». Указанный шрифт может быть недоступен на компьютере пользователя; s / он может иметь пользовательскую таблицу стилей; используйте большие размеры шрифта; и т.д…
Что вы можете сделать, так это определить ширину, используя javascript после визуализации страницы (очевидно, вы можете сделать это и на другой странице, и надеяться, что ничего не изменится до тех пор) и отправить это обратно на PHP. С некоторыми умными AJAX-IN вы можете даже сделать это на одной странице.
Взгляните на этот вопрос, чтобы узнать, как это сделать в javascript.
Используйте jQuery,
$("text").each(function(){alert(this.innerHTML+" is "+$(this).width()+" pixels.");});
Если вы хотите определить длину строки текста, используя встроенные шрифты PHP (например, если вы используете imagestring ()), вы можете использовать:
imagefontwidth() $text = "Your text here" $fontSize = 5; $textLength = imagefontwidth($fontSize) * strlen($text);
Если вы не используете Build-In-Fonts, используйте imagettfbbox (), как указано выше.