Przeznaczenie formatu pliku „Tekst ASCII z nadpisywaniem”


46

Po pobraniu kodu źródłowego dla Bash przeglądałem dockatalog i natrafiłem na następujące pliki:

  • bash.1jest zwykłym plikiem troff używanym do budowania strony man .
  • bash.0jest jak zwykła wersja tekstowa strony man - tyle tylko, że ma ^Hznak kontrolny backspace swobodnie rozmieszczony na całej jej stronie.

Te znaki kontrolne nie są wyświetlane w reprezentacji zapewnianej przez interfejs sieciowy Git, ale rzeczywisty plik można pobrać i zbadać w edytorze tekstów, takim jak Vim.

Uruchomienie filepolecenia bash.0powoduje wydrukowanie następujących danych wyjściowych:

bash.0: ASCII text, with overstriking

Nigdy wcześniej nie spotkałem się z tym formatem pliku i zastanawiałem się, jaki jest jego cel i jak jest używany. Wyszukiwanie w Internecie frazy „tekst ASCII z nadpisywaniem” nie było zbyt pouczające.

Odpowiedzi:


14

Wyszukiwarka „backspace” i „overstrike” uzyskałaby lepsze wyniki.

Plik jest podręcznikiem sformatowanym za pomocą nroff. Zwykle pliki takie jak bash.0są po prostu generowane i odrzucane. Jakiś czas temu zostali uratowani, aby ograniczyć pracę manprogramu. Zamiast /usr/share/man/man1tego strony podręcznika zostałyby odczytane /usr/share/man/cat1. Przeczytaj opis catmanna przykład.

nroffto uniksowe polecenie formatowania stron podręcznika i innych plików. Kiedy pisano go po raz pierwszy, istniało kilka innych narzędzi, każde z własnym językiem znaczników. Użyłem co najmniej tuzina różnych. Ale wszystkie rozwiązały problem drukowania podkreślonego tekstu w ten sam sposób: za pomocą kontroli karetki. Odstępy są zauważalne, ponieważ nie są używane w innych plikach tekstowych. Tabs , powroty karetki , line-karma i form-zasila wszystkie odgrywać rolę w plikach tekstowych (choć Form-kanały są znacznie mniej ważne niż były pierwotnie).

nroffużywa podkreślenia, aby wskazać kursywą i overstrike, aby przedstawić pogrubienie . Technika jest datowana: jest przydatna w przypadku urządzeń drukowanych, w których można wydrukować więcej niż jeden znak w tej samej pozycji. Bardzo niewiele terminali wideo to robi. W terminfo(5), która byłaby

   over_strike               os     os   terminal can over-
                                         strike

lub bardziej kompletnie :

Jeśli terminal przebije (zamiast wyczyścić pozycję, gdy postać zostanie powalona), powinien mieć taką os możliwość.

W zwykłym przypadku ostatni znak zapisany w danym wierszu / kolumnie terminala wideo byłby wszystkim, co pokazano. nroffzorganizował wynik tak, że podkreślony znak został zapisany jako podkreślenie, backspace i rzeczywisty znak. Dzięki temu terminale bez funkcji overstrike wydrukują coś pożytecznego.

Wśród niewielu wymienionych terminali wideo, które mają funkcję overstrike, widzę DEC gt40 , którego używałem przez około trzy lata (1976-1979). W tym systemie nie było Uniksa (działał RT-11), ale napisałem formatyzator tekstu , używając tego samego typu tekstu przerywanego. W końcu potrzebowałem papierowej kopii i napisałem narzędzie, aby tak się stało - może coś w rodzaju col- ale rozwiązanie podobnego problemu. Terminal drukował bardzo powoli, kiedy miał dużo podkreślonego tekstu, dopóki mój program nie zreorganizował tekstu, aby zmniejszyć ilość przełączania między ruchem do przodu / do tyłu.

W przypadku terminali wideo nie ma takiej potrzeby. Ale nie robią nadmiernego uderzenia. Zamiast tego mamy programy, które rozpoznają podkreślenie i pokazują podkreślenia lub mają takie groff, które mogą pokazywać kolorowy tekst zamiast podkreślenia (i pogrubienia).

Dalsza lektura:


Dzięki za wyczerpującą odpowiedź z interesującym tłem historycznym. Jest dla mnie późno w nocy, więc jutro przeczytam go poprawnie. FWIW, rzeczywiście głosowałem dziś twoją odpowiedź na temat generowania stron podręcznika, kiedy badałem rodzinę formatów tekstu * roff.
Anthony G - sprawiedliwość dla Moniki

43

Overstriking jest metodą stosowaną w nroff(patrz artykuł Troffa ), aby zaoferować więcej możliwości typograficznych niż zwykły ASCII pozwoliłby:

  • pogrubiony tekst (poprzez zastąpienie tego samego znaku)
  • podkreślony tekst (poprzez nadpisywanie _)
  • akcenty i znaki diakrytyczne ( np. é produkowane przez overstrike ez )

oraz różne inne symbole dozwolone przez docelowe urządzenie wyjściowe.

W bashte .0pliki są produkowane bezpośrednio nroff, z Makefilezasadami, takimi jak

.1.0:
        $(RM) $@
        -${NROFF} -man $< > $@

Możesz przeglądać takie pliki za pomocą less; przetworzy sekwencje nadmiernego uderzenia i zastąpi je odpowiednio:

less bash.0

Pierwotnie nroffdane wyjściowe były ukierunkowane na urządzenia wyjściowe w stylu maszyny do pisania, które tworzyłyby kopie zapasowe za każdym razem, gdy otrzymywały znak cofania; overstriking wytworzy pożądany efekt wizualny. Jak zauważył chirlu , dwukrotne trafienie w tę samą postać zwykle powodowałoby odważniejszy wygląd dzięki nieuniknionemu przesunięciu kolejnych uderzeń; pomocny byłby również wzrost ilości osadzonego atramentu.

( troffukierunkowane maszyny do składu).


Dziękujemy za link do Instrukcji obsługi Troffa i informacje o tym, jak tworzone są pliki. W moim pytaniu zapytałem również, w jaki sposób te pliki mają być używane. Próbowałem uruchomić nroff bash.0na moim systemie Ubuntu, ale generowało to wiele ostrzeżeń, wynik był zawijany na 65 znaków i nie było specjalnego formatowania.
Anthony G - sprawiedliwość dla Moniki

1
Ach tak, zapomniałem tej części; Zredagowałem swoją odpowiedź. nroffsłuży do tworzenia tych plików, a nie do ich przeglądania.
Stephen Kitt,

2
Tak, i tak w zasadzie man bashdziała; używa nroff -mando przetworzenia .1pliku (lub dowolnej odpowiedniej sekcji), która jest nroffplikiem, przed podaniem go do odpowiedniego pagera.
Stephen Kitt,

5
@Anthony Geoghegan: Pomysł polegał na wysłaniu tego pliku do drukarki udarowej, takiej jak drukarka typu daisy-wheel . W rzeczywistości wydrukuje znak, a następnie wróci, a następnie wydrukuje inny znak, z wynikami opisanymi powyżej. Pogrubiony tekst jest podobny do „efektu refrenu” w przetwarzaniu dźwięku: drugi znak jest bardzo nieznacznie niedopasowany do pierwszego, co prowadzi do grubszych linii.
chirlu

1
@chirlu To świetne wyjaśnienie, w jaki sposób znaki kontrolne zostały użyte do osiągnięcia efektów typograficznych przy użyciu starszego sprzętu. Używanie tych konkretnych postaci ma teraz sens. Jeśli opublikujesz to jako odpowiedź, mogę odpowiednio go głosować. Edycja: Stephen już to uwzględnił i rozwinął.
Anthony G - sprawiedliwość dla Moniki

7

A nawet wcześniej była to metoda drukowania na drukarkach piłek golfowych, która działała jak stare maszyny do pisania i miała bardzo ograniczony zestaw znaków, które mogli wydrukować. Więc nroff używa strumienia bajtów starej drukarki typu teletekstu do przedstawienia, jak powinien wyglądać „na ekranie”.


nrofffaktycznie został pierwotnie zaprojektowany do drukowania na maszynach do pisania, w przeciwieństwie do tego, troffktóre z nich są skierowane. Wykorzystanie ekranów do wydruku pojawiło się później ...
Stephen Kitt

9
Jestem na tyle !' BACKSPACE .
dorosły,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.