Buchstabenkünstler

ASCII-Grafiken erstellen mit cadubi, figlet und boxes

01.12.2003
Lustige Rahmen in E-Mails, farbenfrohe Login-Texte und dreidimensionale Fonts - und das alles nur aus Buchstaben: Die Tools, die wir hier vorstellen, setzen Ihrer Kreativität keine Grenzen.

Kaum hat der Mensch das Alphabet erfunden, wird es ein paar Tausend Jährchen später auch schon zweckentfremdet: In der Zeit der Grün-Grün-Monitore und Textkonsolen entstand die so genannte ASCII-Art, die Kunst, mit Buchstaben Bilder zu malen. Musste man damals noch mühsam im Text-Editor Zeichen für Zeichen setzen, erleichtern heute spezielle Werkzeuge das Malen.

Eine ASCII-Grafik kommt in der Regel ohne Umlaute daher. Sie eignet sich deshalb zum Beispiel für plattformübergreifende und auch auf älteren Systemen darstellbare Info-Grafiken (Abbildung 1). Vor allem aber macht das Zeichnen mit Buchstaben Spaß: Mit einer liebevoll gestalteten /etc/issue oder /etc/motd beispielsweise verleihen Sie Ihrem System schon beim Login eine ganz persönliche Note. Diesem Aspekt wenden wir uns im Folgenden zu.

Abbildung 1: Eine Infografik im ASCII-Format

Kasten 1: Installationshinweise

cadubi liegt der LinuxUser-CD bei. Entpacken Sie das Tar-Archiv mit tar xvzf cadubi_1.2.tar.gz und wechseln mit cd in das cadubi-Verzeichnis. Dort starten Sie das Perl-Skript mit ./cadubi. cadubi benötigt Perl 5.002 oder höher, außerdem das Perl-Modul Term::ReadKeyREADME im Paket TermReadKey-2.21.tar.gz verrät Ihnen Näheres zur Installation des Moduls, ebenso wie der Befehl perldoc -q cpan .

Von figlet haben wir neben dem Quellcode auch RPM- und Deb-Pakete auf die LinuxUser-CD gepackt, die Sie mit den Werkzeugen Ihrer Distribution installieren. Wer figlet selbst kompilieren will, entpackt zunächst das Archiv mit dem Befehl tar xvzf figlet221.tar.gz. Standardmäßig installiert figlet Programme, Hilfskripte, Fonts und Manpage nach /usr/local; um das zu ändern, passen Sie die Variablen DESTDIRDEFAULTFONTDIR und MANDIR im Makefile an. Dort müssen Sie auch die Zeile

DEFAULTFONTDIR = fonts

mit dem Hash-Zeichen # auskommentieren, da die Installation der Fonts sonst fehlschlägt. Existiert das Verzeichnis /usr/local/man/man6, in das Figlet seine Manpage kopieren will, bei Ihnen noch nicht, legen Sie es mit mkdir -p /usr/local/man/man6 an.

Mit make figlet erzeugen Sie nun die beiden Binaries figlet und chkfont. Jetzt müssen Sie nur noch die Shell-Skripte figlist und showfigfonts, wie in [5] beschrieben, mit dem Befehl chmod +x figlist showfigfonts ausführbar machen. Nach einem von Ihnen als root aufgerufenen make install befinden sich dann alle Programmteile am gewünschten Ort.

Zur Installation von boxes greifen Sie auf das fertige RPM-Paket zurück, das auf der LinuxUser-CD oder auf der Boxes-Homepage [2] zu finden ist.

Der Schönschreiber

Beginnen wir mit figlet [1], einem Tool, das unterschiedliche Schriftbilder hervorzaubert, zum Beispiel den Debian-Schriftzug in Abbildung 2. Debianern genügt der Befehls apt-get install figlet, um den Schönschreiber auf die Festplatte zu bannen. Auch die Utilities cadubi und boxes, mit denen wir uns noch beschäftigen werden, installieren sie via apt-get. Wie Sie die drei hier vorgestellten Tools auf anderen Distributionen installieren, behandelt Kasten 1.

Abbildung 2: cadubi erstellt eine /etc/motd

Doch zurück zu figlet. Das Programm stellt eingegebene Texte in ASCII-Schriftzügen dar: das sind Fonts, die komplett aus einzelnen Zeichen bestehen und sich damit ideal für die Kommandozeile eignen, die nur einen einzigen Zeichensatz mit fester Breite verwendet.

Mit der Anweisung figlist erhalten Sie eine alphabetische Liste der verfügbaren Fonts für figlet. Am besten schicken Sie den Befehl durch den Pager less, da die Ausgabe sonst an Ihnen vorbeirauscht:

> figlist | less
Default font: standard
Font directory: /usr/share/figlet
Figlet fonts in this directory:
3-d
3x5
[…]
big
[…]

Schriftmuster der figlet-Fonts zeigt das Kommando showfigfonts.

> showfigfonts | less
[…]
big :
 _     _
| |   (_)
| |__  _  __ _
| '_ \| |/ _` |
| |_) | | (_| |
|_.__/|_|\__, |
          __/ |
         |___/
[…]

Die per showfigfonts und figlist entdeckten Fonts übergeben Sie figlet mit der Option -f, gefolgt vom Text, den Sie anzeigen wollen. So schreibt figlet -f caligraphy Linux das Wort Linux in geschwungenen, altertümlichen Lettern.

Standardmäßig umbricht figlet nach 80 Zeichen, -t passt den Umbruch automatisch an die Größe des benutzten Terminals an. Mit -w geben Sie die Textweite fest vor, beispielsweise umbricht die Option -w 40 nach 40 Zeichen.

Wie der Text ausgerichtet werden soll, bestimmen Sie mit den Parametern -c (zentriert), -l (linksbündig) und -r (rechtsbündig). -R schreibt den Text sogar von rechts nach links.

Wie bei fast allen Kommandozeilen-Tools dürfen Sie hier Pipes einsetzen. Im nächsten Beispiel ersetzt der Befehl tr alle Hash-Zeichen (#) im Font banner3 durch den Klammeraffen @ (Abbildung 3):

figlet -f banner ABC | tr '#' '@'
Abbildung 3: Figlet-Fonts lassen sich mit dem Kommando "tr" on-the-fly manipulieren

Typografische Feinheiten wie Kerning und weitere Beispiele behandelt die Manpage des Pakets, die Sie mit man figlet aufrufen.

Der Rahmenbauer

Zum dekorativen Font der richtige Rahmen: Hier muss das Mini-DTP-Programm figlet passen und übergibt stattdessen an einen Spezialisten. boxes heißt das Tool, das vorgegebene Texte dekorativ umrandet – selbstverständlich in purem ASCII. (Abbildung 4).

Abbildung 4: Im Duo richtig stark: Font-Programm figlet und Rahmengenerator boxes

Welche Rahmenstile das Programm bereithält, verrät es mit der Option -l (list). Auch diese Liste schaut man sich besser seitenweise an:

boxes -l | less

Mit dem Parameter -d wählen Sie den gewünschten Stil:

boxes -d boxname alt neu

alt ist der Name der Originaldatei und neu der Name der gerahmten Ausgabedatei. Alternativ arbeitet das Tool auch mit der Standardein- und -ausgabe des Terminals:

andreas:~> echo "Dies ist
> ein C-Kommentar"|boxes -d c-cmt2
/* Dies ist ein C-Kommentar */

Hier zeigt sich boxes von einer höchst praktischen Seite: Das Tool zeichnet nicht nur Zierrahmen, sondern beherrscht auch die Kommentarstile zahlreicher Programmiersprachen. Dazu integriert man boxes am besten in den Text-Editor. Wie das in Jed und den üblichen Verdächtigen, Vim und Emacs, geht und auch wie Sie eigene Rahmen entwerfen, erfahren Sie auf der Boxes-Projektseite [2].

Bei größeren Boxen (z. B. dem Rahmenstil dog in Abbildung 4) mit wenig Inhalt ist es sinnvoll, die Satzausrichtung zu definieren. Die Option -a leitet die Ausrichtung ein, gefolgt von c, r oder l (zentiert, rechts, links).

Den Abstand zwischen Text und Rahmen bestimmt die Option -p (Padding), die Sie um Richtungsangabe und Zeichenzahl ergänzen. Zum Beispiel bedeutet -pa5t3r1: Der Inhalt ist in jeder Richtung fünf Zeichen vom Rahmen entfernt (a5). Lediglich vom oberen Rand trennen ihn drei Zeilen (t3) und vom rechten sogar nur ein Zeichen (r1). Folgende Angaben sind zusammen mit -p möglich:

  • a: In alle Richtungen
  • b: Zum Boden der Box
  • h: In horizontaler Richtung
  • l: Zur linken Seite der Box
  • r: Zur rechten Seite der Box
  • t: Zum Kopf (top) der Box
  • v: In vertikaler Richtung

Einen starren Rahmen, unabhängig vom Text, geben Sie mit der Option -s (size) vor. Im folgenden Beispiel erzwingen wir eine Box, die neun Zeichen breit und drei Zeilen hoch ist:

> echo LINUX | boxes -s 9x3 -d shell
#########
# LINUX #
#########

Der letzte wichtige Parameter lautet -r (remove). Mit ihm löschen Sie falsch gewählte oder unpassende Boxen, ohne den Inhalt anzutasten. boxes erkennt dabei automatisch den Rahmenstil und entfernte im Test sogar doppelte Rahmen mühelos.

Der Maler

Unsere bisherigen Experimente verliefen in braven, schwarz-weißen Bahnen. Der ASCII-Art-Editor cadubi [3] bringt Farbe ins Spiel.

Wer sich jemals damit abgequält hat, mit Escape-Sequenzen [4] einen farbigen Prompt zu erzeugen, wird überrascht sein, wie einfach es ihm cadubi macht. Im Gegensatz zu seinen Editor-Brüdern stellt er seine Ausgabe nämlich WYSIWYG dar. Sie wählen die Farben aus – cadubi bastelt im Hintergrund die Escape-Sequenzen dazu, die der Shell signalisieren, Text farbig anzuzeigen.

Das Helferlein verfügt über zwei Betriebsarten: einen Texteingabe-Modus, den Sie mit der Taste [t] erreichen, und einen Grundmodus, in den Sie die Taste [Esc] führt.

In der unteren Bildschirmleiste sehen Sie den aktuellen Modus und die Farbauswahl in der Sektion Pen: (Abbildung 2).

Im Texteingabe-Modus verhält sich des Programm wie jeder andere Text-Editor: Der Druck auf eine Taste schreibt ein Zeichen. Im Grundmodus hingegen setzen Sie über die Tastatur Vorder- und Hintergrundfarben, öffnen und speichern Dateien oder lesen die Online-Hilfe.

Nachdem Sie mit [Esc] in den Grundmodus gewechselt sind, bewegen Sie über die Pfeiltasten den Cursor. Sollten die Pfeiltasten bei Ihnen nicht greifen, nehmen Sie statt dessen die Tasten [i],[j],[k] oder [l] für oben, rechts, unten und links.

Wichtige Befehle sind an die Steuerungstaste gekoppelt. Mit der Tastenkombination [Strg-h] erreichen Sie die Hilfe-Seite, und [Strg-w] zeichnet den Bildschrirm neu. Zum Laden einer Datei drücken Sie [Strg-r]. Möchten Sie sie speichern, nehmen Sie [Strg-o]. [Strg-x] beendet und schließt das Programm.

Die Farbauswahl treffen Sie mit den Tasten [f] (Foreground) und [b] (Background) für den Vorder- und Hintergrund. In der Statuszeile fragt Sie cadubi nun nach der gewünschten Farbe, die Sie mit den Kürzeln aus Tabelle 1 eingeben.

Tabelle 1: Cadubis Farbpalette

0 bzw. N Default
1 bzw. W Weiss
2 bzw. R Rot
3 bzw. G Grün
4 bzw. Y Gelb
5 bzw. B Blau
6 bzw. M Magenta
7 bzw. C Cyan
8 bzw. K Schwarz

Neben den Farben existieren zusätzliche Punkte wie Fettschrift [g], inverse Ausgabe [v] oder Blinktext [W]. Mit [p] ändern Sie den Pen Character, der im Grundmodus so etwas wie ein Pinsel ist. Die Leertaste fügt diesen in der ausgewählten Farbkombination ein – ideal zum Ausmalen größerer Flächen.

Das fertige Werk prüfen Sie anschließend mit dem Kommando cat, bevor Sie es beispielsweise als handgemalte Begrüßungsnachricht /etc/motd den anderen Benutzern präsentieren.

Glossar

ASCII

Der "American Standard Code for Information Interchange" stellt die Zeichen des englischen Alphabets für Computer-Programme bereit. Mehr dazu verrät die Handbuchseite man ascii.

/etc/motd

Die "Message of the Day" (Mitteilung des Tages) wird allen Benutzern beim Login angezeigt.

/etc/issue

Diese Datei erscheint vor dem Login-Prompt auf der Konsole und enthält üblicherweise Angaben zur Distribution und Kernel-Version.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Related content

Kommentare