W PPLA language manual nie ma funkcji do zawijania długich linii tekstu, więc musisz sam obliczyć, gdzie wstawić znaki linii przed wysłaniem poleceń do drukarki.
Sposób wykonania zależy od używanego języka programowania; na przykład w języku PHP jest wordwrap function, który może to dla ciebie zrobić (kod źródłowy C funkcji wordwrap to here, w linii 803).
Prosty opis algorytmu owijania słowo można znaleźć na wikipedia:
SpaceLeft := LineWidth
for each Word in Text
if (Width(Word) + SpaceWidth) > SpaceLeft
insert line break before Word in Text
SpaceLeft := LineWidth - Width(Word)
else
SpaceLeft := SpaceLeft - (Width(Word) + SpaceWidth)
Przede wszystkim, trzeba podzielić tekst w słowach, ale przypuszczam, że nie jest to problem dla ciebie, więc Nie będę się dalej rozwodzić.
LineWidth
należy obliczyć jako szerokość etykiety minus szerokość lewego i prawego marginesu.
Zakładając, że dla tekstu używasz pojedynczej czcionki o stałej szerokości (nieproporcjonalnej), możesz przekonwertować liczbę LineWidth
na liczbę znaków, dzieląc ją po prostu przez szerokość znaków (lub po prostu drukowując długą linię tekstu a następnie zliczanie liczby znaków, które zostaną wydrukowane); w ten sposób długość każdego słowa odpowiada liczbie jego znaków.
W przeciwnym razie, jeśli używasz czcionki proporcjonalnej, obliczanie szerokości każdego słowa jest trudniejsze, chyba że znasz szerokość każdego znaku.
Pomysł może polegać na użyciu obrazu o tym samym rozmiarze piksela etykiety, aby symulować drukowanie i obliczanie miejsc wstawiania linii, ale wymaga to funkcji do obliczania szerokości piksela każdego słowa (dla przykład w PHP jest imagettfbbox function), a także użycie dokładnie tej samej czcionki na drukarce i komputerze.
Pamiętaj, że możesz również obsługiwać słowa dłuższe niż szerokość etykiety; w tym przypadku musisz po prostu podzielić słowo na: LineWidth
i przejść do następnego wiersza.