Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Ширина символа


Автор: mzalutski 16.10.2007, 10:34
Имеется задача определить ширину текстовой строки (в единицах длины). 
Возможно ли как-то определять ширину символов средствами PHP?

Автор: MoLeX 16.10.2007, 10:47
Цитата(mzalutski @  16.10.2007,  10:34 Найти цитируемый пост)
определить ширину текстовой строки (в единицах длины). 


не совсем понял

Автор: IAmEternaL 16.10.2007, 10:51
ага
Код

$str = 'Hello world!'; // 12 символов в строке
echo strlen($str); // выведет 12


но если строка в utf-8, то будет такая кака
Код

$str = 'Привет мир!'; // 11 символов в строке
echo strlen($str); // а выведет 20


патамушо strlen выводит кол-во байт в строке, а в utf-8 не англицкие символы весят 2 байта

шоп було прально и тут - http://forum.vingrad.ru/forum/topic-176575.html

если же ты имеешь в виду отображаемую длинну строки (в пикселях), то умножь кол-во на ширину одного символа шрифта, который ты используешь (рулит еси ты используешь моноширный шрифт - типа Lucida Console)

если нет - можно приблизительно длинну узнать, множь на самый широкий сивол (w, к примеру)

Автор: mzalutski 16.10.2007, 11:51
Ребят спасибо, но нужна длина ИМЕННО в единицах длинны (пикселы, сантиметры, метры, дюймы, километры и т.д.smile.

IAmEternaL, приблизительно не пойдет, нужно точно причем шрифт немоноширинный. 
Какая-нибудь низкоуровневая функция... если таковая есть 

Автор: IAmEternaL 16.10.2007, 14:32
пачитал мануал - можна
Код

$fontSize = 12;
$fontFile = 'TAHOMA.TTF';
$text = 'Text string for testing...';
$points = imagettfbbox($fontSize, 0, $fontFile, 'test');
$width = $points[2];

смотри

$fontSize - размер шрифта текста
$fontFile - путь к TTF файлу со шрифтом (бери оные в "C:\WINDOWS\Fonts")
$text - панятно
$width - то шо те надо

по идее
потесть

я просто не уверен - пиксели оно дает или шо... ну надо испробовать в реальных условиях
а заниматься этим самостоятельно (то есть мне) - уволь, оно ж тебе надо ;)

Автор: mzalutski 18.10.2007, 08:19
Вообще, глупости это все - ширину букв находить. Всегда будешь зависить от конкретной платформы.
Переделал алгоритм.

IAmEternaL, все равно спасибо

Автор: IAmEternaL 18.10.2007, 10:24
как тебе сказать smile

код, который я дал, ни от чего не зависит - были бы шрифты на сервере и у клиента на машине

и работает он достаточно точно (главное учитывать, шо еси это применяеца для HTML, то дизигнеры могут указать размер не в pt,  а px, потому и расчет непральный будет)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)