Jeśli jesteś właścicielem tej strony, możesz wyłączyć reklamę poniżej zmieniając pakiet na PRO lub VIP w panelu naszego hostingu już od 4zł!

Taki znaczek: link do str. zewnętrznej oznacza, że link prowadzi do strony zewnętrznej.

Co to jest format=flowed i delsp=yes

Listy (e-maile i posty na grupy dyskusyjne) w formacie zwykłego tekstu, kodowane 7- i 8-bitowo, cechują się pewnymi drobnymi ograniczeniami, które zaczęły wychodzić na jaw w drugiej połowie lat 90 XX w. Najważniejsze z nich to konwencjonalne zawijanie linii po siedemdziesięciu kilku znakach. Dopóki korzystano z terminali znakowych i komputerów z interfejsem graficznym, do których podłączone były monitory o niskiej rozdzielczości, a aplikacja do wyświetlania treści używała czcionki o stałej szerokości (nieproporcjonalnej), nie było większego problemu z wyświetlaniem tak sformatowanych listów – na ówcześnie używanym sprzęcie dany list wyglądał mniej więcej tak samo. W miarę rozpowszechniania się z jednej strony monitorów o coraz większej rozdzielczości i aplikacji wyświetlających treść z użyciem czcionki proporcjonalnej, a z drugiej urządzeń typu palmtopy i PDA, a od pewnego czasu również telefony komórkowe, wyposażonych w ekrany o znacznie mniejszej rozdzielczości, stała długość linii zaczęła być przeszkodą. Albo wyświetlany tekst kończył się w połowie ekranu, albo (w przypadku wyświetlania czcionką proporcjonalną) były widoczne znaczne różnice długości linii, albo na urządzeniach o małej rozdzielczości tekst zawijał się utrudniając rozróżnienie, co jest cytatem, a co odpowiedzią. Rozwiązaniem była zasadniczo rezygnacja z łamania linii i pozostawienie formatowania (w tym oznaczania, co jest cytatem) aplikacji wyświetlającej, ale to z kolei było nie do przyjęcia dla użytkowników wciąż korzystających ze starych terminali, w których tekst nie zawija się, tylko wyjeżdża za ekran. Opracowano więc nowy standard, w którym program wysyłający łamie linie po siedemdziesięciu kilku znakach, ale każde takie złamanie oznacza odpowiednio, pozwalając programowi wyświetlającemu na ponowne połączenie linii i wyświetlenie ich w całości z użyciem całej dostępnej szerokości wyświetlacza. Programy nieobsługujące tego formatu pokażą treść tak, jakby była wysłana w sposób tradycyjny.

Zasada format=flowed jest bardzo prosta: program wysyłający w tym formacie łamie długie linie normalnie, ale dodatkowo na końcu każdego złamanego fragmentu linii dodaje (lub zostawia) spację. Do tego wstawia w nagłówku odpowiednią deklarację typu zawartości, przykładowo wyglądającą tak:
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Program odbierający list z powyższą linią w nagłówku ma więcej do roboty: ignoruje znak nowej linii na końcu każdej linii zakończonej spacją (co powoduje, że linia łączy się z następną linią) i ignoruje też wszystkie znaki cytowania (w tym formacie stosuje się wyłącznie znaki większości, czyli >) na początku następnej linii występujące razem, do pierwszego znaku innego niż znak cytowania; jeżeli tym znakiem jest spacja, jest ona również ignorowana. Jeżeli występuje więcej spacji, dokładnie jedna jest ignorowana. Program musi przy tym sprawdzić, czy łączone linie należą do tego samego poziomu cytowania (każda zaczyna się od tej samej liczby znaków cytowania). Po tym może wyświetlić treść na ekranie zawijając ją tak, by w całości zmieściła się na ekranie. Program wyświetlający listy w tym formacie zazwyczaj ma wbudowany mechanizm pozwalający na prawidłowe oznaczenie cytatu i jego poziomu, najłatwiejszy sposób oznaczania to ukrycie znaków cytowania (znaków większości) i zastąpienie ich pionowymi, kolorowymi liniami, ciągnącymi się przez całą wysokość danego poziomu cytowania.

Przykładowa treść, sformatowana zgodnie z panującymi zwyczajami tak, by żadna linia nie miała więcej niż około 70 znaków (\n to normalnie niewidoczny znak końca linii, popularnie zwany Enter, wstawiony wyłącznie dla ilustracji, znaki na żółtym tle to znaki, które zostaną usunięte przez program obsługujący format=flowed):

>> To jest cytat drugiego stopnia, który zajmuje w źródle trzy linie: \n
>>
przykładowy tekst ma około stu siedemdziesięciu znaków i przez to \n
>>
musi zostać podzielony na trzy linie.\n
>To jest cytat pierwszego stopnia, który zajmuje dwie linie: ten \n
>
tekst ma około stu dziesięciu znaków.\n
A to jest główny tekst, który również zajmuje dwie linie w źródle: \n
ten tekst ma około stu dwudziestu znaków.\n

Tekst ten w programie obsługującym format=flowed, zaznaczanie cytatów pionowymi liniami i kolorowanie cytatów zostanie przeformatowany tak, by wyświetlał się na całą dostępną szerokość ekranu, a jednocześnie wyraźnie były zaznaczone kolejne poziomy cytowania. Na szerokim ekranie (np. normalnym, współczesnym ekranie komputerowym, na którym można zmieścić dużo więcej znaków w linii niż standardowe 80) będzie pokazany w następujący sposób:

To jest cytat drugiego stopnia, który zajmuje w źródle trzy linie: przykładowy tekst ma około stu siedemdziesięciu znaków i przez to musi zostać podzielony na trzy linie.
To jest cytat pierwszego stopnia, który zajmuje dwie linie: ten tekst ma około stu dziesięciu znaków.
A to jest główny tekst, który również zajmuje dwie linie w źródle: ten tekst ma około stu dwudziestu znaków.

Zaś na wąskim (np. na wyświetlaczu telefonu komórkowego, na którym mieści się jakieś 20–30 znaków w linii):

To jest cytat drugiego stopnia, który zajmuje w źródle trzy linie: przykładowy tekst ma około stu siedemdziesięciu znaków i przez to musi zostać podzielony na trzy linie.
To jest cytat pierwszego stopnia, który zajmuje dwie linie: ten tekst ma około stu dziesięciu znaków.
A to jest główny tekst, który również zajmuje dwie linie w źródle: ten tekst ma około stu dwudziestu znaków.

Jak widać program wyświetlający zwrócił uwagę, że na końcu dwóch linii przed znakami końca linii nie ma spacji, dlatego mógł pozostawić oba cytaty i odpowiedź właściwą osobno, zachowując doskonałą czytelność niezależnie od szerokości wyświetlacza. W szczególności unika się nieprzyjemnego łamania „w chorągiewkę”, efektu znanego z OE. Zachęcam do poeksperymentowania z szerokością okna przeglądarki, co lepiej zilustruje działanie formatu.

Użytkownika nieprzyzwyczajonego do tego formatu w pierwszym momencie może zmylić fakt, że treść w oknie kompozycji nie jest odpowiednio zawijana mimo wprowadzenia odpowiednich ustawień dotyczących zawijania. Podejrzenia zdaje się potwierdzać wygląd kopii tego listu w katalogu z pocztą wysłaną, w którym linie zajmują pełną szerokość okna. Tymczasem jest to wyłącznie skutek działania opisanego mechanizmu, w rzeczywistości linie zostały prawidłowo połamane. Podobnie brak standardowych znaków cytowania na początku każdej cytowanej linii wraz z zaznaczaniem cytatu pionowymi, kolorowymi liniami może takiemu użytkownikowi mylnie sugerować, że czyta list w formacie HTML.

Mimo starania się, by zapewnić jak największą identyczność wyglądu treści w programach obsługujących i nieobsługujących format=flowed (z wyjątkiem rzecz jasna samego zawijania linii), nie obyło się bez pewnych problemów. Bezproblemowe jest dodawanie spacji na końcu każdej linii – jest to zwykle niezauważalne. Problemy to po pierwsze to, że standard przewiduje, iż na początku każdej linii zaczynającej się od znaku większości niebędącego znacznikiem cytowania (gdy znak taki został wstawiony ręcznie przez nadawcę) trzeba dodać spację. Ma to na celu zabezpieczenie przed pomyleniem głębokości cytowania i pomyłkowym usunięciem znaku większości przez program odbiorcy. Program obsługujący format=flowed podczas wyświetlania usunie tę spację, niestety w programie nieobsługującym format=flowed spacja ta zostanie. Przez to w niektórych programach nie można w treść listu wkleić fragmentu tekstu tak, by wyświetlił się jako cytat, nie ma prostego rozwiązania tego ograniczenia. Po drugie standard również przewiduje, że na początku każdej linii zaczynającej się od spacji powinna zostać dodana spacja. W przypadku ASCII-artów, zaznaczeń i formatowania spacjami treść wyświetlona w programie nieobsługującym format=flowed będzie się różnić od zamierzonej o te dodane spacje. Jeżeli został stworzony jakiś blok tekstu, w którym istotne jest względne ustawienie wszystkich linii i którakolwiek zaczyna się od spacji (lub znaku większości), każda linia w całym bloku musi zaczynać się od spacji. Nie można też polegać na automatycznym łamaniu, tylko trzeba ręcznie połamać wszystkie linie wchodzące w skład tego bloku.
Spacja dodawana też jest na początku każdej linii zaczynającej się od słowa From i następującej zaraz po nim spacji.

format=flowed absolutnie nie powinien być używany wraz z kodowaniem transportowym treści Quoted-Printable lub Base64 (z wyjątkiem pewnych ściśle określonych sytuacji). Zasady tej nie przestrzega ani Thunderbird, ani Opera M2. Prawdopodobnie nie przestrzega jej też OE6 SP2. format=flowed stosuje się wyłącznie z typem wiadomości text/plain, czyli zwykły tekst.

Przeciwieństwem format=flowed jest format=fixed (format domyślny, brak deklaracji formatu lub deklaracja niezrozumiała – w praktyce inna niż flowed – równoznaczna jest z deklaracją format=fixed).

Po paru latach okazało się, że nie ma możliwości odtworzenia linii złamanej w miejscu innym niż spacja. Istnieją języki, w których nie używa się europejskiej spacji. Problem najłatwiej sobie uzmysłowić wyobrażając sobie, że w treści pojawiło się bardzo długie słowo (np. mające ponad sto liter), które ma być zawinięte. Dotychczasowy format nie miał mechanizmu pozwalającego na połączenie tak długiego słowa z powrotem bez wstawienia między łączone części spacji. Rozwiązaniem jest dodatkowy parametr mówiący, że program wyświetlający list w tym formacie ma usuwać jeszcze jedną spację spomiędzy łączonych linii. Program wysyłający w tym formacie na końcu każdego złamanego fragmentu linii dodaje extra spację i wstawia odpowiednią deklarację, na przykład:
Content-Type: text/plain; charset=ISO-8859-2; format=flowed; delsp=yes
Program wyświetlający łącząc linie wykrywa, która linia kończy się spacją i znakiem nowej linii, i ignoruje zarówno spację, jak i następujący zaraz po niej znak nowej linii, znaki cytowania i ewentualnie występującą po nich jedną spację. Jeżeli po połączeniu dwóch linii ma być między nimi spacja (jak to zwykle bywa w językach europejskich, w przypadku których linie łamane są między poszczególnymi wyrazami), na końcu tak przełamanej linii program wysyłający wstawia dwie spacje.

Przykładowa treść (\n to normalnie niewidoczny znak końca linii, popularnie zwany Enter, wstawiony wyłącznie dla ilustracji, znaki na żółtym tle to znaki, które zostaną usunięte przez program obsługujący format=flowed i delsp=yes):

>> To jest cytat drugiego stopnia, który zajmuje w źródle trzy linie: p \n
>>
rzykładowy tekst ma około stu siedemdziesięciu znaków i przez to mus \n
>>
i zostać podzielony na trzy linie.\n
>To jest cytat pierwszego stopnia, który zajmuje dwie linie: ten tekst  \n
>
ma około stu dziesięciu znaków.\n
A to jest główny tekst, który również zajmuje dwie linie w źródle: ten  \n
tekst ma około stu dwudziestu znaków.\n

Powyższy przykład w programie obsługującym format=flowed i delsp=yes będzie wyświetlony tak, jak poprzedni przykład. Oczywiście w rzeczywistości raczej nie zdarzy się przełamywanie linii w taki sposób, by dzielić słowa, gdyż wprowadzałoby to znaczną niewygodę dla użytkowników programów nieobsługujących tego formatu. Na szczęście nie wprowadza on żadnych dalszych problemów dla użytkowników takich programów – jedyna różnica w porównaniu z samym format=flowed to obecność na końcu każdej przełamanej linii dwóch spacji zamiast jednej, co normalnie jest niezauważalne.

Przeciwieństwem delsp=yes jest delsp=no (wartość domyślna, brak deklaracji lub deklaracja niezrozumiała – w praktyce inna niż yes – równoznaczna jest z deklaracją delsp=no).

W miarę postępu technicznego i wzrostu różnorodności rozdzielczości ekranów, na których czytane są listy elektroniczne i posty z grup dyskusyjnych, zaleta tego formatu polegajaca na automatycznym dostosowywaniu się do szerokości okna aplikacji czytelnika niezależnie od rozdzielczości jego wyświetlacza będzie coraz bardziej widoczna.

Linki:

licznik