Schriftersetzung bei Schrifteinbettung

Bei der Schrifteinbettung kann es vorkommen, dass die einzubettende Schrift gar nicht auf dem System vorhanden ist. Mittels Schriftersetzung lässt sich festlegen, welcher Font stattdessen verwendet werden soll.

Mit den vordefinierten Korrekturen werden auch unterschiedliche Schriftersetzungsrichtlinien mitausgeliefert:

  • Fehlende Schriften einbetten: Arial mit Helvetica ersetzen und anders herum
  • Fehlende Schriften einbetten: ähnliche Schriften ersetzen
  • Fehlende Schriften durch Arial ersetzen wenn notwendig

Durch einen Klick auf den untersten Menü-Eintrag öffnet sich der Ordner, in welchem die Schriftersetzungs-Richtlinien als .cfg-Datei gespeichert sind. Es empfiehlt sich, diese nicht zu verändern, sondern zu kopieren und ggf. als Vorlage für eigene Schriftersetzungen zu verwenden.

Syntax für Schriftersetzungs-Richtlinien

Bitte verwenden Sie einfach einen  Texteditor zur Erstellung und Bearbeitung dieser Dateien und speichern Sie diese als UTF-8 ab.
Alle Werte müssen mit Tabulatoren separiert sein. Raute-Zeichen "#" am Anfang einer Zeile bedeuten, dass diese Zeilen Kommentare sind und von der Verarbeitung nicht berücksichtigt werden.

Die folgenden Ersetzungsmodi sind verfügbar:

SubstituteFirst

Die erste Schrift in der Liste dieses Eintrags kann durch die folgenden Schriften ersetzt werden.
Notation:
SubstituteFirst<tab>Zu ersetzende Schrift<tab>Schriftname<tab>Schriftnam<tab>Schriftname ...

Regular Expressions
Es ist möglich RegEx in SubstituteFirst Zeilen zu verwenden. Beispiel:
SubstituteFirst   '(.*)Bold(.*)Italic'   'Arial(.*)Bold(.*)Italic'   '\1Regular'   '\1'

Ein beliebiger Schriftname mit "Bold" und "Italic" und beliebigen Zeichen davor und dazwischen wird durch eine Schrift mit "Arial", "Bold" und "Italic" (und beliebigen Zeichen zwischen diesen Begriffen) ersetzt. Wenn eine solche Schrift nicht gefunden wird, wird eine Schrift, die den gleichen Anfang hat (referenziert durch \1) und danach "Regular" und wenn das auch nicht möglich ist, eine Schrift, die den gleichen Anfang hat.
Die Schriftersetzung mit RegEx wird dann verwendet, wenn die normale Ersetzung (ohne RegEx) nicht erfolgreich war.

SubstituteAll
Dieser Modus erlaubt es, eine Liste zu definieren, in der jeder Font jeden anderen ersetzen kann.
Wenn eine Schrift fehlt, wird versucht, diese durch die nächstfolgende Schrift in der Liste zu ersetzen.
Wenn auch diese fehlt, wird die zuvor stehende Schrift gesucht.
Fehlt auch diese,  wird nach der übernächsten Schrift gesucht usw.
Notation:
SubstituteAll<tab>Schriftname<tab>Schriftname<tab>Schriftname ...

Regular Expressions
In SubstituteAll Zeilen wird RegEx aus Performance-Gründen nicht unterstützt.

Die Engine ignoriert alle Zeichen außer a-z, A-Z und 0-9. Das bedeutet, dass "Helvetica Bold", "Helvetica-Bold" und "HelveticaBold" alle gleich sind. Es könnte trotzdem sinnvoll sein, sie alle in einer Konfigurationsdatei zur Dokumentation und Übersichtlichkeit zu haben (und das ist der Grund, warum sie alle in der vordefinierten fontsubsitution.cfg vorhanden sind).

Beispiel

Diese Schriftenersetzungsliste ersetzt Arial mit Helvetica und Helvetica mit Arial.
Am Ende dieser Datei sind weitere Einträge, die umfangreichere Schriftersetzungen erlauben.
Für deren Verwendung muss die Raute '#' am Beginn der Zeile entfernt werden.


SubstituteAll	Arial	ArialMT	Helvetica	Helvetica Neue	Futura	Helvetica Neue	Microsoft Sans Serif	MS PGothic	Trebuchet MS	Verdana
SubstituteAll	Arial Bold	Arial-Bold	ArialMT,Bold	Helvetica Bold	Futura-Bold	Futura Bold	Helvetica-Bold
SubstituteAll	Arial Italic	Arial-Italic	ArialMT,Italic	Helvetica Italic	Helvetica-Italic	Futura-Italic	Futura Italic	Arial Oblique	Arial-Oblique	Helvetica Oblique	Helvetica-Oblique	Futura-Oblique	Futura Oblique
SubstituteAll	Arial Bold Italic	Arial-Bold-Italic	ArialMT,BoldItalic	Helvetica Bold Italic	Futura-Bold-Italic	Futura Bold Italic	Arial Bold Oblique	Arial-Bold-Oblique	Arial-BoldOblique	Helvetica Bold Oblique	Helvetica-BoldOblique	Futura-Bold-Oblique	Futura Bold Oblique
SubstituteAll	Arial Black	Arial-Black	Helvetica Black	Helvetica-Black	Futura-Bold	Futura Bold	Arial-Bold
SubstituteAll	Arial Narrow	Helvetica Narrow
SubstituteAll	Arial Narrow Bold	Helvetica Narrow Bold	Arial Narrow Fett	Helvetica Narrow Fett
SubstituteAll	Arial Narrow Bold Italic	Helvetica Narrow Bold Italic	Arial Narrow Fett Kursiv	Helvetica Narrow Fett Kursiv
SubstituteAll	Times-Roman	Times	Times New Roman	Garamond
SubstituteAll	Times-Bold	Times-Roman Bold	Times Bold	Times New Roman Bold	Times Fett	Times New Roman Fett
SubstituteAll	Times-Italic	Times-Roman Italic	Times New Roman Italic	Times Italic	Times Kursiv	Times New Roman Kursiv
SubstituteAll	Times-Bold-Italic	Times-Roman Bold Italic	Times Bold Italic	Times New Roman Bold Italic	Times Fett Kursiv	Times New Roman Fett Kursiv
SubstituteAll	Courier	Courier New	Courier Std New	Lucida Console	MS Gothic
SubstituteAll	CourierStd-Bold	Courier Std Bold	Courier Bold	Courier-Bold	Courier New Bold	Courier New-Bold
SubstituteAll	CourierStd-Oblique	Courier Std Oblique	CourierStd-Italic	Courier Std Italic	Courier Italic	Courier-Italic	Courier New Italic	Courier New-Italic	Courier Oblique	Courier-Oblique	Courier New Oblique	Courier New-Oblique
SubstituteAll	CourierStd-BoldOblique	Courier Std Bold Oblique	Courier BoldItalic	Courier-BoldItalic	Courier New Bold Italic	Courier New-Bold-Italic	Courier BoldOblique	Courier-BoldOblique	Courier New Bold Oblique	Courier New-Bold-Oblique
#SubstituteFirst	'(.*)Regular'	Arial	Helvetica	'\1Regular'	'\1'
#SubstituteFirst	'(.*)Medium'	Arial	Helvetica	'\1Regular'	'\1'
#SubstituteFirst	'(.*)Bold'	'Arial(.*)Bold'	'Helvetica(.*)Bold'	'\1Regular'	'\1'
#SubstituteFirst	'(.*)Italic'	'Arial(.*)Italic'	'Helvetica(.*)Italic'	'\1Regular'	'\1'
#SubstituteFirst	'(.*)Black'	'Arial(.*)Black'	'Helvetica(.*)Black'	'\1Regular'	'\1'	Arial(.*)Bold'	'Helvetica(.*)Bold'
#SubstituteFirst	'(.*)Bold(.*)Italic'	'Arial(.*)Bold(.*)Italic'	'Helvetica(.*)Bold(.*)Italic'	'\1Regular'	'\1'
#SubstituteFirst	'(.*)Bold(.*)'	'Arial(.*)Bold'	'Helvetica(.*)Bold'	'\1Regular'	'\1'
#SubstituteFirst	'(.*)Italic(.*)'	'Arial(.*)Italic'	'Helvetica(.*)Italic'	'\1Regular'	'\1'
#SubstituteFirst	'(.*)'	'\1Regular'	'\1Medium'	'\1'	Arial	Helvetica

Syntax für die Glyphenersetzung in Schriftersetzungs-Richtlinen

Für die Schrifteinbettung muss die Schriftart Glyphen für alle Glyph-Codes im PDF enthalten.
Einige PDFs verwenden falsch formatierte Glyph-Namen. In diesem Fall schlägt die Schrifteinbettung fehl. Der Eintrag SubstituteGlyphName ermöglicht die Definition der Zuordnung von deformierten Glyph-Namen zu korrekten Glyph-Namen.
Der erste Eintrag ist der richtige Glyph-Name, danach kann eine unbegrenzte Anzahl von fehlerhaften Einträgen angegeben werden.
Dadurch werden alle fehlerhaften Glyph-Namen im PDF korrigiert und das Ergebnis bei der Schrifteinbettung berücksichtigt.

SubstituteGlyphName <tab> nonbreakingspace <tab> no_break_space <tab> non_breaking_space

SubstituteGlyphName <tab> Hungarumlaut <tab> hungarumlaut__now_576