Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: QRmemo: Zeilenumbruch erzwingen

  Alt 16. Okt 2020, 13:32
Es kommt drauf an wie umgebrochen wird.
* erstmal an "Wortgrenzen"
* und dann kann es sein, dass es hier keinen Maximalwert gibt, der dann "irgendwo" im Wort umbricht

PS: deswegen wird im Forum in zu lange "Wörter" Leerzeichen eingebaut, damit umgebruchen werden kann ... leider hier ein "richtiges" Leerzeichnen
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaa
Wenn ihr den Browser zusammenschiebt, merkt ihr, dass mein Post eine Grenze hat und im Gegensatz zum vorherrigen Beitrag breiter bleibt, da HTML/Browser keine Wörter trennen, weil sie nicht wissen wo sie es "dürfen".

In diesem Fall könntest du selbst ein paar passende Steuerzeichen einfügen, denn genau dafür gibt es extra ein paar Zeichen, zum Steuern.
> non-breaking space = erzwungenes Leerzeichen #160 #$A0
> non-breaking hyphen = #8209 #$2011
> zero-width space = breitenlose Leerzeichen #8203 #$200b
> soft hyphen = bedingter Trennstrich #173 #$AD
> null breiter Nichtverbinder #8204 #$200C
> null breiter Verbinder #8205 #$200D

z.B. in deinen Text alle 10 Zeichen ein #173 oder #8204 einfügen.
Über große Texte könnte man auch einen lexikalischen Parser laufen lassen, der zwischen alle Silben ein #8209 einfügt, dann kann auch die dümmste Zeilenumbruchsteuerung korrekt die Wörter trennen/umbrechen.

#160 #8209 = ein Leerzeichen/Bindestrich, wo nichts umgebrochen wird (die beiden Wörter bleiben zusammen)
#8204 #173 = unsichtbares Leerzeichen/Bindestrich im Wort, der erst sichtbar wird, wenn dort umbegrochen werden muß


Problem mit uraltem Delphi: Alles mit Unicode kannst'e vergessen, also alles über #255 bzw. #$FF.
$2B or not $2B

Geändert von himitsu (16. Okt 2020 um 13:45 Uhr)
  Mit Zitat antworten Zitat