Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Długość tekstu
Forum PHP.pl > Forum > PHP
gargamel
Jako że jest to mój pierwszy post na tym forum, chciałbym się przywitać smile.gif

A zatem witam szanowne grono!

I przejdę od razu do rzeczy.

Rozchodzi się o to w jaki sposób mogę policzyć długość zadanego tekstu (nie chodzi tu oczywiście o liczbę znaków a o długość wyrażoną w milimetrach na przykład ) używając PHP.
Zależne to będzie na pewno od czcionki, jej rozmiaru stylu i tego jaki mamy tekst, z tym że nie wiem w jaki sposób ... sadsmiley02.gif

Może ktoś miał podobny problem, to byłbym wdzięczny, gdyby się podzielił rozwiązaniem smile.gif
maly_swd
odpowiedz na 1 podstawowe pytanie:
ile milimetrow ma pixel na monitorze 17calowym w rozdzielczosci 650x480 a ile w 1920x1080. Jak to juz bedzie jasne to dalej z gorki.
http://pl.wikipedia.org/wiki/Ppi
phpion
Musisz sobie zrobić jakąś mapę długości znaków w wybranej jednostce. Niech to będą np. pixele:
  1. $map = array(
  2. 'a' => 5,
  3. 'b' => 5,
  4. //...
  5. 'm' => 8
  6. );

Oczywiście powyższe wartości to kompletny strzał, przykład. Następnie mając taką mapę możesz zastosować przelicznik na dowolną inną jednostkę miary (musisz wówczas określić stosunek pixel : inna jednostka). Do tego dochodzi jeszcze rozmiar i krój czcionki. Nie wiem czy jest jakaś zależność, ale jeśli wszystkie znaki skalują się proporcjonalnie przy zmianie rozmiaru/kroju czcionki (a możliwe, że tak jest) to możesz zastosować jakiś modyfikator tych wartości w zależności od aktualnych parametrów czcionki.

Możesz również usprawnić powyższą mapę do grup znaków, co dla powyższego przykładu by było:
  1. $map = array(
  2. 5 => array('a', 'b'),
  3. 8 => array('m')
  4. );

Jak to sobie zorganizujesz to już zależy od Ciebie.
erix
Cytat
Oczywiście powyższe wartości to kompletny strzał, przykład. Następnie mając taką mapę możesz zastosować przelicznik na dowolną inną jednostkę miary (musisz wówczas określić stosunek pixel : inna jednostka).

Piksele, to piksele; w tym wypadku są miarą absolutną.

Ale żeby przeliczyć na jednostki drukarskie, musisz znać wartość parametru DPI wyświetlacza i wg niego przeliczać.
gargamel
No właśnie o przypisaniu długości określonym znakom myślałem, ale miałem nadzieje że jest jakiś mniej pracochłonny sposób smile.gif
Dzięki za odpowiedzi:)
croc
A można wiedzieć do czego ci to potrzebne? Szerokość tekstu i tak będzie się różniła w zależności od takich czynników jak chociażby anti-aliasing. Jeżeli koniecznie musisz znać szerokość tekstu, to zastosuj bibliotekę GD i imageftbbox. Nie widzę sensu poznania szerokości tekstu w HTML-u.
gargamel
Chodzi o generowanie dokumentów z FPDF. Text wysyłany z formularza musi znaleźć się w określonym miejscu dokumentu pdf.
MultiCell w prawdzie świetnie się tu spisuje - łamie wiersze tam gdzie ma łamać, jednak nie da rady narzucić mu tego ile wierszy maksymalnie może stworzyć (bynajmniej ja nie wiem jak...)
Wymyśliłem więc sobie że zrobię to określając maksymalną długość tekstu jako np 3 x szerokość pola tekstowego i wtedy powstaną maksymalnie 3 wiersze.
Jeśli ktoś będzie chciał wpisać dłuższy tekst, to tekst taki nie zostanie przyjęty.

Co do funkcji zwracającej długość tekstu to właśnie znalazłem w samej bibliotece fpdf : GetStringWidth smile.gif Nie zaglądałem tam do manuala bo myślałem że znam wszystkie metody w nim zawarte, jednak się okazało że coś mi umknęło tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.