Umbruch
Restzeilen am Seitenanfang und Seitenende, Überschriften am Seitenfuß, halbleere Seiten, Fortsetzungsseiten und Trennungen über den Umbruch.
Wer PDFs aus HTML erzeugt, sieht Fehler erst nach der Paginierung: eine Überschrift am Seitenfuß, eine Restzeile allein auf der Folgeseite, ein Block, der auf keine Seite passt. breaklint misst jede Seite nach dem Umbruch und nennt zu jedem Befund den gemessenen Wert neben der Schwelle, an der er scheiterte.
npx breaklint --demo
Der Befehl braucht keinen Browser und keine Konfiguration. Er endet mit Exit 1, weil das mitgelieferte Beispiel absichtlich Befunde enthält — eine Demo, die mit 0 endet, zeigt nie, wie ein Befund aussieht. Der Block unten ist unveränderte Ausgabe dieses Befehls. Die Regelkette darin ist die echte; die Seite, die sie beurteilt, ist ein handgeschriebenes Fixture, damit jeder Regelpfad ohne Browser erreichbar ist — der Bericht schreibt selbst in sein source-Feld, welche Art Fixture er gelesen hat.
error layout/unbreakable-block-too-tall page 2
measured 848 px; threshold 606 px (uncalibrated)
detail This block asks not to be broken and is
848.00 px tall; the page content box is
606.00 px. It cannot fit on any page.
source examples/demo.html:31
Prosa-Linter sehen keine Seite. Satzsysteme sehen die Seite, kennen aber die deutsche typografische Konvention nicht. Für Dokumente, die aus HTML zu PDF entstehen, gab es beides nicht.
Der Anlass war ein Fall, den die Prüfung am Quelltext nicht gefunden hat: eine Grafik bestand die XML-Validitätsprüfung und eine Geometrieprüfung — und kam mit kollidierenden Beschriftungen aus dem Renderer. Ob eine Seite trägt, entscheidet sich nach der Paginierung, im Renderer, mit den Schriften, die tatsächlich verfügbar waren.
Dreizehn Regeln. Zwei davon können einen Build scheitern lassen; zehn weitere sind Hinweise, bis man mit --fail-on warn ausdrücklich mehr verlangt; und eine — layout/half-empty-page — ist experimentell und bewegt nie einen Exit-Code, auch dann nicht. Diese Trennung ist keine Vorsicht, sondern die Beweislast: nur zwei Regeln vergleichen unmittelbar gemessene Größen mit einer strukturellen Grenze.
Restzeilen am Seitenanfang und Seitenende, Überschriften am Seitenfuß, halbleere Seiten, Fortsetzungsseiten und Trennungen über den Umbruch.
Text, der über den Viewport hinausläuft. Clip-/Masken-Beschneidung und Pixelkollision sind noch keine ausgelieferten Regeln: der Produktionspfad besitzt dafür keinen sicheren Ink-Pass.
Bindestrich statt Gedankenstrich, gerade Anführungszeichen im Satz, zu kurze Ausgangszeilen, aufgerissene Wortabstände.
file:-Verweise und Pfade der Buildmaschine, die im ausgelieferten Dokument stehen geblieben sind.
Alle dreizehn ausgelieferten Regeln sind weiterhin als uncalibrated gekennzeichnet. Die zwei Ink-Definitionen bleiben als ausdrücklich nicht ausgelieferte M3-Forschung erhalten. Die technische Grundlage für eine spätere Kalibrierung steht inzwischen: Läufe im echten Renderer, ein auf Rechte und Datenschutz geprüfter Prozesspilot mit drei realen Dokumenten, getrennte Daten für Entwicklung, Schwellenabstimmung und die zurückgehaltene Schlussprüfung sowie verblindete Prüfpakete und Kontrollen gegen unzulässige Evidenz.
Das ist noch keine empirische Kalibrierung. Dafür fehlen ein ausreichend großer Korpus echter Dokumente, zwei voneinander unabhängige blinde menschliche Bewertungen, die dokumentierte Klärung von Uneinigkeiten, eine extern bestätigte und unverändert eingefrorene Testmenge sowie genau eine vorab festgelegte Schlussauswertung. Bis dahin bleibt bei jeder Regel calibrated: false.
Die Tests und Renderer-Nachweise zeigen, dass breaklint die Messungen der dreizehn ausgelieferten Regeln ausführt und bekannte Gegenbeispiele erkennt. Ein verpflichtender Real-Document-Gate bindet einen öffentlichen, rechte- und privacy-geprüften HTML-Hash und verlangt analysierte Seiten sowie echte Regelmessungen; das belegt Robustheit, nicht Kalibrierung. Wie häufig heuristische Grenzen bei realen Dokumenten richtig liegen, bleibt unbekannt.
Dafür gibt es veraPDF und pdfcpu.
Dafür gibt es Bildvergleichswerkzeuge. breaklint beurteilt den ersten Build, wo es nichts zu vergleichen gibt.
Dafür gibt es vale und typopo.
PDF wird erzeugt und gerastert, um Belege zu produzieren — nie gelesen, um es zu prüfen.
Aktueller Release: 0.3.1. Er liefert dreizehn öffentliche Regeln statt fünfzehn Definitionen. Das Fremddokument-Gate misst auf dem unveränderten, rechtegeprüften Project-Gutenberg-HTML 9 von 13 Regeln über neun Seiten und endet mit Exit 0; das ist ein Robustheitsbeleg, keine Kalibrierung. Ein zweites, first-party Dargel-Dokument misst 11 von 13 Regeln über sechs Seiten und prüft separat die Paketierung fehlender Bilder. Beide Läufe weisen die unabhängige Geometrieprüfung mit 8 von 8 erforderlichen Browser-Layout-Checks aus; ein verkleinertes oder leeres Sample ist fatal. Ein Bildfehler wird nur dann als image-content-unavailable nicht-fatal benannt, wenn positive width- und height-Attribute exakt der gemessenen Browserbox entsprechen; Ersatztext und CSS-Abweichungen genügen nicht. Eingabe ist ausschließlich .html/.htm; eigenständige SVG-, PDF- und Markdown-Dateien enden mit Usage Exit 2. Node 22.13 oder neuer, auf macOS oder Linux. Ein Lauf über echte Dokumente braucht zusätzlich einen Chromium-basierten Browser und pagedjs@0.4.3; pdfjs-dist rastert das erzeugte PDF, um Belege an Befunde zu binden. Windows wird nicht unterstützt — die Prozessbehandlung ruht auf POSIX-Prozessgruppen. Der Messpfad ist unter Linux belegt; Prozessbeendigung und Profilbereinigung sind empirisch nur auf macOS gemessen.
npm i -D breaklint
npm i -D puppeteer-core pagedjs@0.4.3 pdfjs-dist@6.2.108
breaklint verwendet zur Prüfzeit kein Sprachmodell. Es führt keine Inferenz aus und enthält keinen API-Client.
Genau diese Fälle suchen wir. Jeder kann ein öffentliches oder eigens dafür gebautes HTML-Dokument testen — ohne Bewerbung, Auswahl oder Vorkenntnisse. Der kurze Leitfaden führt in etwa zehn Minuten vom Installieren bis zum strukturierten Bericht.
Bitte nur Inhalte verwenden, die veröffentlicht werden dürfen. GitHub-Name, Bericht und Reproduktion sind öffentlich; vertrauliche Dokumente, personenbezogene Daten und Sicherheitsbefunde gehören nicht in das Formular. Die Auswertung nimmt strukturierte Angaben automatisch an, führt eingereichte Inhalte aber niemals aus.
Das Programm ist zusätzliche Qualitätssicherung. Öffentliche Tests sind keine Blindstudie und ersetzen nicht die noch ausstehende empirische Kalibrierung der Regeln.
breaklint entsteht bei Dargel Solutions und ist unter der MIT-Lizenz frei verwendbar, auch kommerziell. Teile des Repositories wurden mit Hilfe von Sprachmodellen geschrieben; der Regelsatz, die Schwellen und ihre Quellen wurden von einem Menschen gewählt. Jede Regel, die sich auf das deutsche Regelwerk der Rechtschreibung beruft, wurde gegen dessen veröffentlichten Text geprüft, nicht gegen die Zusammenfassung eines Modells.
Für die Erstellung und Pflege dieser Seite wird generative KI eingesetzt. Die fachliche und visuelle Veröffentlichungsfreigabe bleibt bei einem Menschen.