Formatierung in Textblöcken

Anforderung

Motivation für die Einführung von Textblöcken in print2forms war die Beobachtung, dass in sehr vielen Formualaren noch grosse Anteile von Texten enthalten sind, die zudem noch eine erhöhte Änderungswahrscheinlichkeit haben. Das sind beispielsweise die Geschäftsangaben mit Adresse, Telephonnummern und Geschäftsführern oder etwa Rücksendegründe auf Versandpapieren.

Sind diese Texte Bestandteil eines in print2forms importierten Formulars, muss im Bedarfsfall das Formular geändert und neu importiert werden. Je nachdem ein nicht unbedeutender Aufwand. Es wäre also wartungsfreundlicher, wenn bestimmte Texte des Formulars direkt im Administrationsprogramm von print2forms geändert werden könnten.

In den bisherigen Versionen von print2forms liess sich diese Anforderung im Prinzip schon lösen, wenn für jeden Text ein Textfeld im Formular angelegt wird. Das ist aber sehr aufwändig, weil für jeden Text die Position neu errechnet werden muss, und weil Formatierungen - etaw im Sinne von Fett- oder Kursivschrift - ein neues Textfeld erfordern.

Realisierung

Ab der Build-Nummer 5830 des print2forms-Clients und der Build-Nummer 3104 des print2forms-Gateways steht nunmehr ein sogenanntes Textblockfeld zur Verfügung, das mehrzeilige Texte enthalten kann, und einige Möglichkeiten der Text­formatierung via eines bestimmten Markups anbietet. 1)

Weitere Informationen dazu sind in der Beschreibung der Schablone für den Textblock enthalten.

Ausgabe auf Drucker:


Skalierungsfaktor

Der Skalierungsfaktor ist eine Dezimalziffer '0' bis '9', was einer Skalierung von 100% bis 190% entspricht. Der Skalier­ungsfaktor wirkt zum einen auf die Einstellungen Schriftgrösse als auch auf Zeilenvorschub des Textblockfeldes. Ausserdem wird auch noch die mit dem Markup 'I erzeugte Einrückung entsprechend angepasst.

Demzufolge ist bei einer Schriftgrösse von 12 Punkten ein mit dem Markup '0 versehener Text 12 Punkte gross, während einer mit '5 schon 18 Punkte gross ist. Gleichzeitig mit der Schriftgrösse ändert sich auch der Zeilenabstand. Ein Markup von '5 bedeutet einen 1.5-zeiligen Abstand - aus 6 Zeilen pro Zoll (12 Punkte) werden 4 Zeilen pro Zoll (18 Punkte). 2)

Das kann sehr effektiv für die Gestaltung des Textes eingesetzt werden.

Im obigen Beispiel ist schon am Ende der ersten Zeile zu sehen, dass mit '3 und dem '2 am Anfang der nächsten Zeile der Zeilenabstand etwas vergrössert wird. Dass sorgt für den erhöhten Durchschuss unter 'Passform' und lässt 'Passform' als Überschrift erscheinen. Das gleiche gilt in der viertletzten Zeile, in der mit '4 gefolgt von '2 in der drittletzten Zeile die Liste 'zu kurz:' vertikal abgesetzt wird.

Einrückung

Mit dem Markup 'I kann eine horizontale Einrückung (in Form einer absoluten Positionierung) erzeugt werden, die auch vom Skalierungsfaktor abhängig ist (erster Textblock im neben­stehender Abbildung).

Das kann dazu genutzt werden, tatsächlich hängende Einzüge zu erzeugen (zweiter Textblock im neben­stehender Abbildung), oder für die Formatierung von Auf­zähl- oder Ankreuzlisten (dritter Text­block im neben­stehender Abbildung).

Dabei wird durch den Skalier­ungsfaktor unmittelbar vor der Einrückung für den nötigen Abstand gesorgt. Nach der Ein­rückung muss dann über einen weiteren Skalierungs­faktor wieder die ursprüngliche Schriftgrösse hergestellt werden.

Zeilenumbruch

Normalerweise sind die in der Schablone des Textblockfeldes eingegebenen Texte bereits auf Zeilen verteilt. Es gibt aber Anwendungsfälle, in denen das nicht der Fall sein kann, weil in der Schablone zum Beispiel variabler Text aus den Druckdaten eingefügt werden muss. Klassischer Fall ist die Einbettung des Namens einer Bank beim Avis eines Last­schrifteinzugs.

Aus diesem Grund gibt es in den Einstellungen des Textblocks eine Zeilenlänge. Diese wird nicht in Punkten, Milli- oder Zentimetern angegeben, sondern in Zeichen je Zeile. 3)



Der Text innerhalb der Schablone wird sinnvollerweise natürlich ohne einen Zeilenumbruch geschrieben. Im Beispiel enthält die Schablone zu Vergleichszwecken zwei unter­schiedlich formatierte Texte mit einem einzusetzenden Banknamen.

Der Zeilenumbruch erfolgt selbstverständlich erst, nachdem alle variablen Daten innerhalb der Schablone eingesetzt worden sind.

Da print2forms die Laufweiten der Texte nicht korrekt ermit­teln kann, wird ein Umbruch beim Erreichen einer maximalen Anzahl von Zeichen innerhalb einer Zeile eingefügt. Die Position wird soweit zurückgeschoben, bis eine Wortgrenze 4) erreicht ist. Wie im oberen Textblock zu sehen ergibt das je nach Wort­längen mehr oder minder schönen Flattersatz.

Etwas mildern kann man den Flattersatz, indem man im Text Trennpunkte zwischen den Silben markiert. Das geschieht mit dem Markup '-. Liegt ein solcher Trennpunkt in der Nähe des Zeilenendes wird er aktiviert, indem ein Bindestrich ausge­geben und die Zeile unmittelbar danach umgebrochen wird. Im unteren Textblock ist zu sehen, wie das Wort 'veranlassen' vor der letzten Silbe getrennt worden ist.

In beiden Textblöcken ist auch zu sehen, dass der eingefügte Name der Bank 'Sparkasse Langen-Seligenstadt' ebenfalls am Bindestrich getrennt worden ist.

Zeilenunterdrückung

Die Motivation für einen Mechanismus zur Unterdrückung von Zeilen resultiert aus dem Wunsch, Texte vertikal zusammen­zuschieben, wenn irgendwelche optionalen Bestandteile fehlen. Das ist zum Beispiel bei Adressfeldern der Fall, bei denen durchaus einmal ein oder zwei Zusatzzeilen für den Absender benötigt werden können. Damit diese Zusatzzeilen nicht weissen Leerraum hinterlassen, wenn sie nicht gefüllt sind, sollten die nachfolgenden Zeilen 'hochgezogen' werden.

Dazu gibt es im Textblockfeld ein Markup 's, welches den Anfang einer optionalen Zeile definiert. In der Regel folgt nach dem Markup innerhalb der Schablone die Ausgabe von variablen Daten aus dem Druckdaten.

Unter der Annahme, dass mit 'Adresse1' bis 'Adresse3' bis zu drei Empfängerangaben aus den Druckdaten auf­ge­nommen wurden, erzeugt der Textblock je nach Umfang der Empfängerangaben die nachfolgend gezeigten Ausgaben.

Die Leerzeile nach dem Empfänger bleibt immer erhalten.



1)
Diese Builds sind in print2forms-Installern mit Build-Nummern grösser als 290 enthalten.

2)
Maximum für die Schriftgrösse wäre hier 22.8 Punkte und für den Zeilenabstand 3.15 Zeilen pro Zoll.

3)
Das ist eine Folge des simplen Algorithmus zum Zeilenumbruch. Bei proportionaler oder typographischer Schrift ist das natürlich relativ ungenau, weil die Zeichenbreiten ja variieren. In der Praxis liefert es aber trotzdem brauchbare Resultate. Evenutell muss man mit der Zeilenlänge etwas justieren.

4)
Als Wortgrenze gelten Leerzeichen, Bindestriche, Schrägstriche und das Trennkennzeichen (Markup '-).