Zweck von "ASCII-Text mit überstrichenem" Dateiformat

46

Nachdem ich den Quellcode für Bash heruntergeladen hatte, durchsuchte ich das docVerzeichnis und stieß auf folgende Dateien:

Diese Steuerzeichen werden in der von der Git-Weboberfläche bereitgestellten Darstellung nicht angezeigt, die eigentliche Datei kann jedoch in einem Texteditor wie Vim heruntergeladen und überprüft werden.

Wenn Sie den fileBefehl bash.0ausführen, wird die folgende Ausgabe ausgegeben:

bash.0: ASCII text, with overstriking

Ich bin noch nie auf dieses Dateiformat gestoßen und habe mich gefragt, wozu es dient und wie es verwendet wird. Das Durchsuchen des Webs nach dem Begriff „ASCII-Text mit Überstrichen“ war nicht besonders aufschlussreich.

Anthony G - Gerechtigkeit für Monica
quelle

Antworten:

14

Eine Websuche nach "Backspace" und "Overstrike" würde zu besseren Ergebnissen führen.

Die Datei ist eine Handbuchseite, die mit formatiert wurde nroff. Normalerweise werden solche Dateien bash.0einfach generiert und verworfen. Vor einiger Zeit wurden sie gerettet, um die Arbeit für das manProgramm zu reduzieren . Anstatt /usr/share/man/man1, würden Ihre Handbuchseiten gelesen werden /usr/share/man/cat1. Lesen Sie beispielsweise die Beschreibung von catman.

nroffist der Unix-Befehl zum Formatieren von Manualpages und anderen Dateien. Als es zum ersten Mal geschrieben wurde, gab es mehrere andere Dienstprogramme, die jeweils eine eigene Auszeichnungssprache hatten. Ich habe mindestens ein Dutzend verschiedene verwendet. Sie alle lösten das Problem des Druckens von hervorgehobenem Text auf dieselbe Weise: mit der Wagensteuerung. Leerzeichen sind nur deshalb auffällig, weil sie in anderen Nur-Text-Dateien nicht verwendet werden. Tabs , Zeilenumbrüche , Line-Feeds und Form-Feeds haben alle eine Rolle in Textdateien (obwohl Form-Feeds weit weniger wichtig ist , als sie waren ursprünglich).

nroffVerwendet Unterstreichungen, um Kursiv zu kennzeichnen, und Überstrichen, um Fettdruck zu kennzeichnen . Die Technik ist veraltet: Sie ist nützlich für Hardcopy-Geräte, bei denen mehr als ein Zeichen an derselben Position gedruckt werden kann. Das machen nur sehr wenige Videoterminals. In terminfo(5), das wäre

   over_strike               os     os   terminal can over-
                                         strike

oder vollständiger :

Wenn das Terminal überschreitet (anstatt eine Position zu löschen, wenn ein Charakter getroffen wird), sollte es die os Fähigkeit haben.

Im üblichen Fall wird das letzte Zeichen einer gegebenen Zeile / Spalte eines Videoterminal geschrieben würde all die angezeigt wird. nroffDie Ausgabe wurde so organisiert, dass ein unterstrichenes Zeichen als Unterstreichung, ein Backspace und das eigentliche Zeichen geschrieben wurde. Auf diese Weise wurde sichergestellt, dass Terminals ohne Overstrike-Funktion etwas Nützliches drucken.

Unter den wenigen aufgeführten Videoterminals , die die Fähigkeit zum Übersteuern haben , sehe ich das DEC gt40 , das ich ungefähr drei Jahre lang (1976-1979) verwendet habe. Es gab kein Unix auf diesem System (es lief mit RT-11), aber ich habe einen Textformatierer geschrieben , der dieselbe Art von überstrichenem Text verwendete. Letztendlich brauchte ich eine Hardcopy und schrieb ein Hilfsprogramm , um dies zu erreichen - colvielleicht so etwas wie -, aber um ein damit zusammenhängendes Problem zu lösen. Das Terminal druckte sehr langsam, wenn es viel unterstrichenen Text enthielt, bis mein Programm den Text reorganisierte, um die Umschaltdauer zwischen Vorwärts- und Rückwärtsbewegung zu verringern.

Bei Video-Terminals ist dies nicht erforderlich. Aber sie übertreffen nicht. Stattdessen haben wir Programme, die die Unterstreichungen und erkennen zeigen Unterstreichungen oder haben groff, die Text anstelle von unterstrichen farbigen zeigen könnten (und fett gedruckt).

Weitere Lektüre:

Thomas Dickey
quelle
Vielen Dank für die umfassende Antwort mit interessanten historischen Hintergründen. Es ist spät in der Nacht für mich, also werde ich es morgen richtig lesen. FWIW, ich habe Ihre Antwort auf die Erstellung von Manpages heute früher, als ich mich mit der * roff-Familie von Textformatierern befasste, tatsächlich positiv bewertet.
Anthony G - Gerechtigkeit für Monica
43

Overstriking ist eine Methode, die in nroff(siehe das Troff-Papier ) verwendet wird, um mehr typografische Möglichkeiten zu bieten, als es normales ASCII erlauben würde:

  • fetter Text (durch Überschreiben des gleichen Zeichens)
  • unterstrichener Text (durch Überstrichen _)
  • Akzente und Diakritika ( zB é durch Überstreichen emit )

und verschiedene andere Symbole, wie vom Zielausgabegerät zugelassen.

In bashwerden diese .0Dateien direkt erzeugt nroff, mit MakefileRegeln wie

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

Sie können solche Dateien anzeigen, indem Sie less; Es verarbeitet die überstrichenen Sequenzen und ersetzt sie nach Bedarf:

less bash.0

Die ursprüngliche nroffAusgabe zielte auf Ausgabegeräte im Schreibmaschinenstil ab, die bei jedem Empfang eines Backspace-Zeichens eine Sicherungskopie erstellt haben. Überzeichnen würde die gewünschte visuelle Ausgabe erzeugen. Wie von Chirlu hervorgehoben , würde das zweimalige Schlagen desselben Charakters in der Regel zu einem mutigeren Erscheinungsbild führen, da die aufeinanderfolgenden Schläge unvermeidlich falsch ausgerichtet sind. Die Zunahme der Menge der abgelagerten Tinte würde ebenfalls helfen.

( troffgezielte Satzmaschinen.)

Stephen Kitt
quelle
Vielen Dank für den Link zum Troff-Benutzerhandbuch und die Informationen zur Herstellung der Dateien. In meiner Frage habe ich auch gefragt, wie diese Dateien verwendet werden sollen. Ich habe versucht, nroff bash.0auf meinem Ubuntu-System zu laufen , aber es gab eine Reihe von Warnungen, die Ausgabe war mit 65 Zeichen fest verpackt und es gab keine spezielle Formatierung.
Anthony G - Gerechtigkeit für Monica
1
Ah ja, ich habe diesen Teil vergessen; Ich habe meine Antwort bearbeitet. nroffwird verwendet, um diese Dateien zu erzeugen, nicht um sie anzuzeigen.
Stephen Kitt
2
Ja, und so man bashfunktioniert es so ziemlich ; Es wird verwendet nroff -man, um die .1Datei (oder den relevanten Abschnitt), bei der es sich um eine nroffDatei handelt, zu verarbeiten, bevor sie dem entsprechenden Pager zugeführt wird.
Stephen Kitt
5
@Anthony Geoghegan: Die Idee war, dass Sie diese Datei an einen Anschlagdrucker senden, z. B. einen Raddrucker . Es würde tatsächlich ein Zeichen drucken, dann zurückgehen und dann das andere Zeichen mit den oben beschriebenen Ergebnissen drucken. Der fett gedruckte Text ähnelt einem „Chorus-Effekt“ in der Audioverarbeitung: Das zweite Zeichen ist leicht gegen das erste verschoben, was zu dickeren Linien führt.
Chirlu
1
@chirlu Das ist eine großartige Erklärung dafür, wie Steuerzeichen verwendet wurden, um typografische Effekte mit Legacy-Hardware zu erzielen. Die Verwendung dieser bestimmten Zeichen ist jetzt sehr sinnvoll. Wenn Sie dies als Antwort posten, kann ich es richtig bewerten. Edit: Stephen hat dies bereits aufgenommen und erweitert.
Anthony G - Gerechtigkeit für Monica
7

Und noch früher war es eine Druckmethode auf Golfballdruckern, die wie alte Schreibmaschinen funktionierten und nur eine sehr begrenzte Anzahl von Zeichen hatten, die sie drucken konnten. Nroff verwendet also den Byte-Stream eines alten Teletyp-Druckers, um darzustellen, wie er auf dem Bildschirm aussehen soll.

dsz
quelle
nroffEigentlich war es ursprünglich dafür gedacht, auf Schreibmaschinen zu drucken, im Gegensatz zu troffden zielgerichteten Schreibmaschinen . Die Verwendung von Bildschirmen für die Ausgabe erfolgte später ...
Stephen Kitt
9
Ich bin alt genug , um eine mechanische Schreibmaschine verwendet haben , wo Sie eingegeben !durch Eingabe' BACKSPACE .
Barmar