Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ширина символа 
:(
    Опции темы
mzalutski
Дата 16.10.2007, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 22.12.2006
Где: Волгоград

Репутация: нет
Всего: нет



Имеется задача определить ширину текстовой строки (в единицах длины). 
Возможно ли как-то определять ширину символов средствами PHP?
PM MAIL ICQ   Вверх
MoLeX
Дата 16.10.2007, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: нет
Всего: 140



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


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



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
IAmEternaL
Дата 16.10.2007, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.10.2007
Где: Киев, Украина

Репутация: нет
Всего: нет



ага
Код

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


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

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


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

шоп було прально и тут - смотри эту тему

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

если нет - можно приблизительно длинну узнать, множь на самый широкий сивол (w, к примеру)
PM MAIL ICQ Skype   Вверх
mzalutski
Дата 16.10.2007, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 22.12.2006
Где: Волгоград

Репутация: нет
Всего: нет



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

IAmEternaL, приблизительно не пойдет, нужно точно причем шрифт немоноширинный. 
Какая-нибудь низкоуровневая функция... если таковая есть 
PM MAIL ICQ   Вверх
IAmEternaL
Дата 16.10.2007, 14:32 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.10.2007
Где: Киев, Украина

Репутация: нет
Всего: нет



пачитал мануал - можна
Код

$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 - то шо те надо

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

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

Это сообщение отредактировал(а) IAmEternaL - 16.10.2007, 14:33
PM MAIL ICQ Skype   Вверх
mzalutski
Дата 18.10.2007, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 22.12.2006
Где: Волгоград

Репутация: нет
Всего: нет



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

IAmEternaL, все равно спасибо
PM MAIL ICQ   Вверх
IAmEternaL
Дата 18.10.2007, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.10.2007
Где: Киев, Украина

Репутация: нет
Всего: нет



как тебе сказать smile

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

и работает он достаточно точно (главное учитывать, шо еси это применяеца для HTML, то дизигнеры могут указать размер не в pt,  а px, потому и расчет непральный будет)
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0687 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.