===== Austausch einer Schrift ===== ==== Anforderung ==== In sehr vielen Anwendungsfällen wird (p2f) eingesetzt, um Druckausgaben von Betriebssystemen wie %%i5/OS, z/OS%%, BS2000 oder Unix aufzubereiten. Sehr viele der auf diesen Systemen laufenden Anwendungen erzeugen Ausdrucke in einer dicktengleichen Schrift, meist Courier. Dies liegt daran, dass die Nutzung von Proportional- oder gar typographischen Schriften komplexe Laufweitenberechnungen erfordern, was im Vergleich zur eigentlichen Funktion der Programme erheblichen Rechenaufwand erfordert. Die Schrift Courier hat inzwischen eine etwas //angestaubte// Optik, weil sie die gängige Schrifttype auf älteren Schreib(-)maschinen ist. Es steht daher manchmal die Anforderung im Raum, die Schrift Courier zu ersetzen. Ersetzt man Courier mit einer Proportionalschrift oder einer typographischen Schrift, kommt es unweigerlich zu grossen Problemen bei der Darstellung von Tabellen mit numerischen Inhalten. Das liegt daran, dass die Leerstelle (bei typographischen Schriften) meist nur die Hälfte der Breite einer Ziffer hat, und es dann unweigerlich bei rechtsbündig ausgerichteten Zahlen (zum Beispiel bei Preisen) zum 'Flattersatz' kommt. ((Die Ersetzung gegen typographische Schriften ist mit (p2f) natürlich auch möglich, erfordert aber Textfelder für jede einzelne Tabellenspalte. Hier bietet sich aber auch an, darüber nachzudenken, die Tabellengestaltung mit einer Vorlage zu realisieren. Das wird im Tip [[print2forms:tips:tip57|Tabelle ausfüllen]] vorgestellt.\\ \\ )) Von daher kommt für eine Ersetzung einer dicktengleichen Schrift immer nur eine andere dicktengleiche Schrift in Frage. \\ \\ ==== Realisierung ==== Zusammen mit dem (p2f)-Installer Build 289 wird eine neue Einstellung innerhalb von Prozessen angeboten: die **Ersatzschrift**. Die Motivation, den Austausch der Schrift in das Prozess zu übernehmen, besteht zum einen darin, dass so prozess(-)spezifische Schriften ausgewählt werden können. Zum anderen bezieht sich diese Einstellung auf den Nutzdatenstrom und hat nichts mit den durch Formulare erzeugten zusätzlichen Bestandteilen des Ausdrucks zu tun. \\ \\ {{print2forms:tips:0073-5.png}} \\ \\ Die Einstellung **Ersatzschrift** hat nur Gültigkeit, wenn im Druckdatenstrom eine der drei druckerresidenten Schriften //Courier//, //Letter Gothic// oder //Lineprinter// angewählt wird. Es ist also nicht möglich, Courier gegen eine andere Schrift zu ersetzen, als Letter Gothic.((Das ist eine sehr exotische Anforderung, die in der Praxis bisher nicht vorkam. Daher rechtfertigt sie auch keine komplexere Einstellung der Ersatzschrift. Sollte diese Anforderung im Raum stehen, kann das aber mit entsprechenden Textfeldern im Formular realisiert werden.\\ \\ )) Alle anderen Schriftselektionen werden unverändert weitergegeben. Als Ersatzschriften werden neben den drucker(-)residenten Schriften //Courier// und //Letter Gothic// auch alle dicktengleichen Schriften aus der [[print2forms:schriften:schriften|Schriftenbiblithek]] von (p2f) angeboten. Die Schrift //Lineprinter// wird nicht angeboten, weil sie keine skalierbare Schrift ist. \\ \\ {{print2forms:tips:0073-1.png}} {{print2forms:tips:0073-2.png}} \\ Wird nun im Druckdatenstrom eine %%PCL%%-Sequenz gefunden, die die Schrift //Courier// wählt, wird diese Sequenz so verändert, dass die eingestellte Ersatzschrift selektiert wird. Andere Schriftattribute wie Laufweite, Kursiv (Oblique) oder Fett (Bold) bleiben dabei erhalten. Wenn gegen eine Schrift aus der Schriftenbibliothek ersetzt wird, bedeutet dies natürlich auch automatisch, dass die betroffene Schrift in den Drucker geladen wird. Dabei geschieht das Laden inkrementell - das heist, es werden immer nur die Zeichen in den Drucker geladen, die für den aktuellen Text benötigt werden. So wird vermieden, dass die teils sehr grossen Schriften komplett zum Drucker übertragen werden. ((Unabhängig davon, dass nur die Zeichen einer Schrift aus der Schriftenbibliothek geladen werden, die für einen auszugebenden Text benötigt werden, muss der sogenannte //Fontheader// immer komplett übertragen werden. Da dieser die Dicktentabellen und die Kerning-Paare enthält, kommen je nach Schriftumfang doch einige Kilobyte zusammen, die zum Drucker übertragen werden müssen.)) \\ \\ Ausdruck ohne Ersatzschrift: {{print2forms:tips:0073-6.png}} \\ \\ Ausdruck mit Ersatzschrift: {{print2forms:tips:0073-7.png}} \\ \\ ==== Hinweise ==== * Bei der Ersetzung auch gleich eine fette oder kursive Schrift anzuwählen, ist nicht möglich, weil dann nicht klar wäre, was passiert, wenn dann später die %%PCL-Sequenzen%% für Fett oder Kursiv im Datenstrom auf(-)tauchen. * Wird als Ersatz eine [[print2forms:schriften:firmenschrift|Firmenschrift]] ausgewählt, ist darauf zu achten, dass diese eine dicktengleiche Schrift ist. Falls nicht, findet keine Ersetzung statt. * Die Möglichkeit, in einem Textfeld den Schrifttyp der **%%PCL%%-Schrift als numerische Angabe** zu definieren, wird wegen der Möglichkeit einer Ersatzschrift nicht länger unterstützt. Zum einen entfällt damit und mit der Schriftenbibliothek der Hauptgrund für den Einsatz einer numerischen Definition, und zum anderen wird damit eine sehr vom jeweiligen Druckermodell abhängige Einstellung innerhalb der Formularobjekte beseitigt. Bestehende (p2f)-Installation, die die numerische Definition von Schrifttypen nutzen, müssen auf die Nutzung der Ersatzschrift umgestellt werden. * Wird eine Schrift aus der Schriftenbibliothek genutzt, werden in der Ablaufverfolgung unter Umständen Meldungen für gar nicht verwendete Buchstaben sichtbar. Zum Beispiel kann das Zeichen 'U' geladen werden, ohne dass ein 'U' im Text vorkommt, sehr wohl aber ein 'Ü'. Das hat seinen Grund darin, dass in den Truetype-Schriften manche Zeichen aus anderen zusammengesetzt sind - im Falle des 'Ü' ist es eine Kombination aus 'U' und einer höher gestellten Diarese ([[https://de.wikipedia.org/wiki/Trema|Trema]]). In der Ablaufverfolgung taucht dann als erstes das 'U' auf und dann - als Kombination - das 'Ü'. Es gibt Zeichen, die sind aus bis zu vier anderen Zeichen zusammengesetzt. \\ \\