Wo diese Zeile endet

Jede Zeile, die Sie gerade lesen, hört an einer Stelle auf, die eine Maschine gewählt hat: Ihr Browser, in Sekundenbruchteilen, ohne einen Blick auf das, was danach kommt. Es gibt ein besseres Verfahren. Es ist von 1981, es arbeitet seither in jedem TeX-Satz, und der Absatz weiter unten führt es an sich selbst vor.

Zeile für Zeile

Der übliche Umbruch ist gierig. Er schiebt Wort für Wort in die Zeile, bis das nächste nicht mehr passt, bricht dort und fängt die nächste an. Jede Entscheidung fällt endgültig, bevor feststeht, was folgt. Für linksbündigen Satz genügt das — ein unruhiger rechter Rand fällt kaum auf.

Im Blocksatz wird dieselbe Entscheidung sichtbar. Die Zeile muss die volle Breite erreichen, also müssen die Wortabstände dehnen, was an Text fehlt. Ein langes Wort, das gerade nicht mehr hineinpasste, reißt die Zeile davor auf. Zurücknehmen kann der gierige Umbruch das nicht: Als er merkte, dass es klemmt, war die Zeile davor schon gesetzt.

Der Absatz als Ganzes

Donald Knuth und Michael Plass haben 1981 vorgeschlagen, die Reihenfolge umzudrehen: erst bewerten, dann entscheiden. Ein Absatz zerfällt bei ihnen in drei Sorten von Bausteinen — Kästen für den Text, Leim für die dehnbaren Wortabstände, Strafpunkte für mögliche Trennstellen.

Für jede denkbare Zeile lässt sich ausrechnen, wie weit ihr Leim gezogen werden musste. Dieses Verhältnis heißt r. Bei r = 0 passt die Zeile von selbst; bei r = 1 ist der Leim bis an die Grenze gedehnt, bei r = −1 bis an die Grenze gestaucht. Daraus wird die Schlechtigkeit einer Zeile:

badness = 100 · |r|³

Die dritte Potenz ist die eigentliche Entscheidung. Sie sorgt dafür, dass zwei mittelmäßige Zeilen zusammen weniger kosten als eine tadellose und eine schlimme. Damit wird der Absatz zu einem Graphen — jede Bruchstelle ein Knoten, jede mögliche Zeile eine Kante mit Gewicht — und gesucht ist der leichteste Weg hindurch. Das ist dynamische Programmierung, und sie sieht alle Zeilen gleichzeitig.

Der Versuch

Der Absatz unten beschreibt genau diesen Unterschied und ist zugleich das Material, an dem er vorgeführt wird. Der Balken links neben jeder Zeile ist ihr r: nach rechts gedehnt, nach links gestaucht, Mitte heißt genau passend. Ein Balken mit dickem Ende stößt an den Rand — die Zeile ist schlimmer, als der Balken zeigen kann.

Der gierige Umbruch trifft jede Entscheidung sofort und nimmt sie nie zurück. Er füllt die Zeile, bis das nächste Wort nicht mehr passt, und bricht dort. Was danach kommt, spielt für diese Entscheidung keine Rolle. Knuth und Plass drehen die Reihenfolge um: Sie bewerten zuerst jede denkbare Zeile, geben ihr eine Zahl, und suchen dann den Weg durch den Absatz, dessen Zahlen zusammen am kleinsten sind. Eine Zeile darf schlecht werden, wenn zwei andere dadurch gut werden.

Ohne JavaScript steht dieser Absatz im gierigen Blocksatz Ihres Browsers — genau in dem Zustand, den der Text oben beschreibt. Das andere Verfahren daneben zu stellen, heißt es auszurechnen; dafür fehlt hier die Voraussetzung. Der Rest der Seite bleibt davon unberührt.

Was dabei herauskommt

Zwei Dinge, die man erst sieht, wenn man den Regler bewegt.

Bei breiter Spalte tut das Verfahren, was es verspricht. Die Summe fällt gegenüber dem gierigen Umbruch um ein Vielfaches, und es braucht dafür keine einzige Trennung — es reicht, dass eine Zeile früher enden darf, damit die drei danach aufgehen.

Bei Spaltenbreiten, wie ein Telefon sie hergibt, kippt das Bild. Dort steht in fast jeder Zeile ein Wort, das nicht mehr hineinpasst, und die Wahl zwischen zwei Katastrophen bleibt eine Katastrophe. Der leichteste Weg durch den Graphen nützt wenig, wenn alle Wege schwer sind: Die schlechteste Zeile ist dann in beiden Verfahren dieselbe, und die Summen liegen dicht beieinander. Erst wenn die Trennstellen dazukommen, hat das Verfahren etwas zu entscheiden — und die schlechteste Zeile fällt um Größenordnungen.

Das ist die unbequeme Hälfte der Sache. Der berühmte Algorithmus allein rettet den schmalen deutschen Blocksatz nicht. Die Silbentrennung tut es. Wer im Web Blocksatz setzt und hyphens weglässt, hat den zweitwichtigsten Teil eingebaut und den wichtigsten vergessen.

Umgekehrt gilt es auch, und die Tabelle gibt es bei manchen Breiten her: Trennstellen allein garantieren nichts. Dem gierigen Umbruch können sie sogar schaden, weil er die erstbeste Trennung nimmt statt der richtigen. Ein Angebot nützt nur dem, der es ausschlagen kann.

Die Trennstellen

Für diesen einen Absatz habe ich sie von Hand gesetzt, nach den Regeln des Dudens. Das ist ein Kompromiss, und er ist der Grund, warum das Verfahren hier nur auf diesem Absatz läuft und nicht auf der ganzen Seite.

Richtig löst man es, wie TeX es löst. Frank Liang hat 1983 in Stanford gezeigt, dass sich Silbentrennung als Mustererkennung schreiben lässt: rund 4500 Muster, gepackt in einen Trie von 25 Kilobyte, finden 89 Prozent der Trennstellen eines Taschenwörterbuchs — praktisch ohne Fehler. Für Deutsch gibt es solche Mustersätze frei; sie hätten diese Seite um ein Mehrfaches ihres jetzigen Umfangs vergrößert, und der Punkt wäre derselbe geblieben.

Warum das gerade wieder auftaucht

Browser haben vier Jahrzehnte lang gierig umgebrochen. Seit kurzem nicht mehr ganz: CSS kennt text-wrap: pretty. Chromium liefert es seit Version 117 im Herbst 2023 aus, beschränkt die Optimierung aber auf das Ende des Absatzes — vor allem, um ein einzelnes Wort in der letzten Zeile zu vermeiden. WebKit hat 2025 eine Fassung nachgelegt, die den ganzen Absatz betrachtet; sie erschien zuerst in der Safari Technology Preview 216 vom 8. April 2025.

Der Aufsatz, aus dem beide schöpfen, ist von 1981. Er ist 66 Seiten lang, und sein Kern passt in die eine Zeile weiter oben.

Quellen

  1. Donald E. Knuth, Michael F. Plass: Breaking Paragraphs into Lines. Software: Practice and Experience, Bd. 11, Nr. 11, November 1981, S. 1119–1184.
  2. Franklin Mark Liang: Word Hy-phen-a-tion by Com-put-er. Dissertation, Stanford University, August 1983, Report STAN-CS-83-977.
  3. WebKit: Better typography with text-wrap pretty. webkit.org, 2025 — zu Safari Technology Preview 216 vom 8. April 2025.
  4. Der Umbruch auf dieser Seite ist eigener Code, ohne Bibliothek. Die Wortbreiten misst die Seite an einem unsichtbaren Musterstück im Absatz selbst — in genau der Schrift, die Ihr Gerät gerade rendert. Deshalb stehen bei Ihnen andere Zahlen als bei mir.