From 6311227992ba509b5e5e3256504980bf4632742d Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Fri, 17 Jul 2026 05:10:53 +0200 Subject: Fix markerless line-break join gluing whole words without a space MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TextBereiniger.verbindeUmbrueche assumed any letter-ending, no-trailing-space line followed by a lowercase continuation was a hyphen-less mid-word split (PDF extraction artifact) and joined it with zero separator. That assumption breaks for deliberate word-boundary breaks, e.g. the short-label/hanging- indent definition format in the UWG Anhang ("...Nachhaltigkeitssiegels" + "das Anbringen..."), producing glued words in the rendered synopsis. Gate the markerless join on the candidate line reaching a locally-typical "full column width" (90th percentile in a ±20-line window), since automatic wraps always land near the column edge while deliberate breaks don't. The window is local rather than document-wide because some source PDFs mix column widths within one document (narrower Regelungstext vs. wider Begründung), which a global statistic would otherwise penalize. Also route the single-unit Neufassung fallback through the existing normalisiereZitatText normalization, matching its sibling code paths, so that internal line breaks now more often preserved by the fix above don't leak into the HTML output as spurious line breaks instead. Co-Authored-By: Claude Sonnet 5 Change-Id: I0a79f22f9286cd4a90eea32bad9b54cb4a082cf4 --- FASSUNGEN.txt | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'FASSUNGEN.txt') diff --git a/FASSUNGEN.txt b/FASSUNGEN.txt index 71ffaaf..c8e4d19 100644 --- a/FASSUNGEN.txt +++ b/FASSUNGEN.txt @@ -20,6 +20,62 @@ Vorbemerkung zur Führung dieses Verzeichnisses gelegte Ausdrucksweise entsprechend. +════════════════════════════════════════════════════════════════════════════════ + Fassung vom 17. Juli 2026, + zuletzt geändert durch die am 17. Juli 2026 vorgenommenen Änderungen +════════════════════════════════════════════════════════════════════════════════ + +Auf Grund eines gemeldeten Wiedergabefehlers wird die Zusammenzugsheuristik des +Textbereinigers für markerlose Zeilenumbrüche um ein Spaltenbreiten-Kriterium +ergänzt; ferner wird die Neufassungs-Anweisung ohne Stellenbereich an die bereits +bestehende Zitat-Normalisierung angeschlossen. + + +Artikel 1 +Spaltenbreiten-Kriterium für markerlose Zeilenumbruch-Zusammenzüge + +Der Textbereiniger (TextBereiniger.verbindeUmbrueche) zog eine Zeile, die ohne +Leerraum am Ende mit einem Buchstaben schließt und deren Folgezeile klein +beginnt, bislang stets ohne Trennzeichen mit der Folgezeile zusammen, in der +Annahme, es handle sich um eine bei der PDF-Extraktion um den Bindestrich +gebrachte Silbentrennung. Diese Annahme trifft auf einen bewussten Wortgrenzen- +Umbruch (etwa das Stichwort einer hängend eingerückten Definition, wie er im +Anhang zum UWG vorkommt) nicht zu und führte dort zu verklebten Wörtern ohne +jedes Leerzeichen. Die Heuristik (TextBereiniger.endetMarkerlos, +.typischeZeilenlaenge) wird deshalb um ein Spaltenbreiten-Kriterium ergänzt: Der +Zusammenzug unterbleibt, wenn die Zeile deutlich kürzer ist als die in ihrem +Umfeld übliche Zeilenlänge (neunzig vom Hundert-Perzentil eines Fensters von +zwanzig Zeilen davor und danach), da ein automatischer Umbruch stets nahe der +Spaltenbreite erfolgt und ein deutlich kürzeres Zeilenende mithin nicht auf eine +Silbentrennung, sondern auf einen gewollten Umbruch schließen lässt. Das Fenster +wird bewusst lokal statt dokumentweit bemessen, da ein und dasselbe Schriftstück +Abschnitte unterschiedlicher Spaltenbreite mischen kann (etwa Regelungstext und +Begründung eines Entwurfs). + + +Artikel 2 +Zitat-Normalisierung bei der stellenlosen Neufassung + +Der Befehlsanwender (BefehlAnwender.wendeNeufassungAn) übernahm den Zitatinhalt +bei der Neufassung eines Satzes, einer Nummer oder eines Buchstabens bislang +ungefiltert, während die übrigen mit Zitattext arbeitenden Anwendungsfälle ihn +durchweg der Normalisierung (normalisiereZitatText) unterziehen, welche +eingestreute Zeilenumbrüche zu einem Leerzeichen faltet. Damit ein durch +Artikel 1 nunmehr häufiger erhaltener Zeilenumbruch nicht unnormalisiert bis in +die Synopse durchschlägt und dort als unerwünschter Zeilenumbruch innerhalb +eines Satzes in Erscheinung tritt, wird auch dieser Anwendungsfall der +Normalisierung unterworfen. + + +Schlussbestimmung + +Die vorstehenden Änderungen sind durch die Prüfung sämtlicher Testfälle (einhun- +dertfünfundsiebzig an der Zahl) sowie durch die vollständige Erstellung (mvnw +verify) bestätigt worden. Anlass war ein anhand der UWG-Novelle 2026 gemeldeter +Wiedergabefehler; die Behebung wurde anhand der Beispieldaten (UWG-Anhang, +Nummern 2a sowie 4a bis 4c) verifiziert. + + ════════════════════════════════════════════════════════════════════════════════ Fassung vom 16. Juli 2026, zuletzt geändert durch die am 16. Juli 2026 vorgenommenen Änderungen -- cgit v1.2.1