[Trennmuster] Skript zum Erstellen einer Wortliste für Ligatursatzmuster
Lukas Sommer
sommerluk at gmail.com
Di Aug 9 23:52:30 CEST 2016
> Kannst du mal kurz darlegen, wie Patgen-Muster in OpenType
> verwendet werden können?
Hm, ich verwende sie gar nicht in den OpenType-Schriften selbst,
sondern in einem Skript für Scribus …
OpenType bietet Schriftgestaltern die Möglichkeit, Ligaturen zu
entwerfen – überall dort, wo der Schriftgestalter sie aus ästhetischen
Gründen für sinnvoll erachtet. Die Ligaturen sind ein Aspekt der
Gestaltung dieses konkreten Schriftschnitts und haben an sich nichts
mit den Besonderheiten des Deutschen zu tun. Standardligaturen werden
von OpenType-fähigen Programmen im Regelfall immer und überall
gesetzt, wo der Schriftgestalter sie vorgesehen hat. Dabei kümmert es
nicht, dass der traditionelle Schriftsatz für einige Sprachen wie
Deutsch halt an einigen Stellen keine Ligaturen vorsieht.
(Es ist meines Erachtens auch nicht sinnvoll, so eine Funktion in eine
Schriftart zu packen. Es gibt beispielsweise einige Frakturschriften,
die eine automatische Lang-ſ-Rund-s-Auswahl für die deutsche Sprache
anbieten. Der Preis dafür ist, dass die Anzeige inhaltlich nicht mehr
dem zugrundeliegenden Unicode-String entspricht, und dass die
Schriftart natürlich für nicht-deutsche Texte völlig unvorhersehbare
Resultate produziert. Ich halte das für Flickschusterei und nicht für
eine technisch saubere, standardkonforme Lösung.)
Eine saubere Lösung ist es, innerhalb von deutschem Text die Ligaturen
mit dem dafür vorgesehenen Zeichen, nämlich einem Bindehemmer
(Unicode-Zeichen U+200C ZERO WIDTH NON-JOINER), dort zu unterdrücken,
wo sie nicht hingehören. Das führt dann zum beabsichtigten Ergebnis,
und zwar sowohl für die OpenType-Standardeinstellung
(Standardligaturen ja, Schmuckligaturen und historische Ligaturen
nein) als auch für abweichende Einstellungen, die der Benutzer
auswählt. Auch wenn die Schriftart sehr exotische Schmuckligaturen
enthalten sollte, kann man mit dem Bindehemmer das richtige Ergebnis
erziehen.
(Unicode enthält zwar auch eine Handvoll Codepoints für Ligaturen,
aber nur auch Gründen der Kompatibilität mit älteren Zeichensätzen.
Diese Gruppe von Ligaturen ist nicht vollständig; es gibt
OpenType-Schriften, die weitaus mehr Ligaturen enthalten. Die
Ligaturen machen den Unicode-String viel schwieriger zu durchsuchen
und zu vergleichen. Der Unicode-Standard selbst setzt vielmehr auf
Smartfont-Technologie wie OpenType, und nicht auf die
Ligatur-Codepoints. Mehr zum Thema im Unicode-Standard 9.0.0, Kapitel
23.2 Layout controls → Cursive Connection and ligatures.)
Scribus kann in der aktuellen Version nicht mit OpenType-Funktionen
umgehen. Ligaturen, die in der Schrift enthalten sind, werden von
Scribus einfach nicht benutzt. Das hat sich mit der neuen
CTL-Entwicklerversion geändert: Scribus unterstützt dort jetzt
OpenType-Ligaturen.
Nun kann man die Bindehemmer in Scribus natürlich per Hand im Text
einfügen, so wie man das mit bedingten Trennstrichen ja auch machen
kann. Aber eine automatische Funktion erleichtert die Sache doch
erheblich, ganz so wie bei der automatischen Worttrennung.
Deshalb habe ich ein Skript für Scribus-CTL geschrieben. Das Skript
ist auch in die Entwicklerversion von Scribus-CTL aufgenommen worden
(https://github.com/HOST-Oman/scribus/blob/ctl/scribus/plugins/scriptplugin/scripts/Ligatursatz.py)
und ich hoffe natürlich, dass es es auch in die endgültige Version
schafft. Das Skript fügt im Text fehlende Bindehemmer ein und löscht
Bindehemmer an falschen Stellen. Und die Information, wo Bindehemmer
hingehören, die holt sich das Skript aus einem eigens dafür erzeugten
Ligatursatz-Bindehemmer-Patgen-Muster. (Im Grundsatz: Dort, wo in der
Wortliste „<“, „>“ und „=“ auftreten, werden Ligaturen unterdrückt.
Nicht jedoch dort, wo „-“ auftritt.)
Das Scribus-Skript ist recht ausführlich kommentiert (wenn auch in
schlechtem Englisch). Falls sich das jemand durchlesen möchte, nur zu!
Über Rückmeldungen freue ich mich.
Gebt mir noch ein bisschen Zeit, dann kommt auch das Python-Skript,
das aus der Wortliste die Eingabedatei für Patgen erzeugt … Auch dort
freue ich mich dann über Rückmeldungen.
> kurz darlegen
Hm, jetzt ist’s doch etwas länger geworden. Ich hoffe, das ist nicht schlimm …
Viele Grüße
Mehr Informationen über die Mailingliste Trennmuster