<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<font face="monospace">Am 10.06.24 um 23:44 schrieb Florian Kohrt:<br>
</font>
<blockquote type="cite"
cite="mid:8f4c4a60-8413-4b69-9115-87b9eb0c3077@anche.no"><font
face="monospace">ich bin kürzlich auf die LaTeX-Pakete autotype
und ligtype gestoßen, nachdem ich längere Zeit selnolig
verwendet habe. Nun frage ich mich, was so Erfahrungen oder
Meinungen sind zur Unterdrückung falscher Ligaturen mittels der
Pakete autotype und ligtype: Ist ein Ansatz mit seinen
Regeln/Algorithmen „besser“? Wäre auch nicht schlimm, wenn die
Antwort durch die Entwicklung an autotype gefärbt ist ;)
<br>
</font>
<font face="monospace"><br>
Der Dokumentation und meinem kurzen Test entnehme ich, dass
ligtype das Kerning anpasst, während autotype das nicht tut.
Gibt es darüber hinaus Unterschiede darin, wie vollständig oder
akkurat jeweils die eingebauten Regeln sind?</font></blockquote>
<font face="monospace"><br>
Lieber Florian,<br>
<br>
die Frage ist recht allgemein, aber berechtigt und bisher zu wenig
untersucht worden. Ich habe nun Vergleiche angestellt und kann
einiges dazu sagen. Welches Paket „besser“ ist, mag dann jeder
selbst entscheiden.<br>
<br>
Was die Auswahl der zu setzenden und zu unterdrückenden Ligaturen
betrifft, reden wir über einen Vergleich von autotype mit
selnolig, da ligtype die Regeln von selnolig übernimmt.<br>
<br>
autotype unterdrückt Ligaturen an allen Fugen, die gleichzeitig
Trennstellen sind, also nach Vorsilben (Auf|lage), zwischen den
Bestandteilen eines Kompositums (Tarif|information) und vor
Nachsilben, vor denen eine Trennstelle vorliegt (Häuf|lein,
kopf|los), aber nicht bei Nachsilben, die mit Vokalen beginnen
(affig, grafisch).<br>
<br>
Bei selnolig sind die getroffenen Entscheidungen zum Ligatursatz
ausführlich in der Anleitung dokumentiert. Wenn man die dortigen
Ausführungen zusammenfasst, kann man sagen, dass selnolig
Ligaturen aufbricht, die an Morphemgrenzen liegen, mit folgenden
drei Ausnahmen: 1. Das zweite Morphem ist eine Nachsilbe, die mit
einem Vokal beginnt (affig). 2. Das zweite Morphem besteht nur aus
einem Buchstaben (Aufl., zu fünft). 3. Das zweite Morphem ist das
Flexionsmorphem „te“ in Vergangenheitsformen und Partizipien
(raffte, gestreifte).<br>
<br>
In den meisten Fällen führen beide Philosophien zum gleichen
Ergebnis, aber es gibt die folgenden Ausnahmen, bei denen selnolig
die Ligatur aufbricht und autotype nicht:<br>
1. Vergangenheitsformen und Partizipien von Verben, deren Stamm
auf f endet: ich kaufte, du rafftest, gestreifte (kein
Ligaturaufbruch bei beiden Paketen jedoch bei gekauft, gerafft,
gestreift).<br>
2. Ordnungszahlen: der fünfte, der elfte, der zwölfte (kein
Ligaturaufbruch bei beiden Paketen jedoch bei fünft, elft und
zwölft).<br>
3. Grundwort mit ausgefallenem e in der Endsilbe vor einem Suffix,
das mit einem Vokal beginnt: Verzweiflung, Zweifler, schweflig,
knifflig.<br>
4. erste Person Singular von Verben auf eln: ich schaufle, ich
zweifle, ich löffle.<br>
<br>
Außerdem gibt es noch einen wichtigen prinzipiellen Unterschied:
selnolig bricht an den beschriebenen Stellen nur f-Ligaturen auf,
autotype prinzipiell alle. Wenn man<br>
</font>
<blockquote><font face="monospace">\setmainfont{Libertinus
Serif}[Ligatures=Historic]</font><br>
</blockquote>
<font face="monospace">wählt, erhält man bei dem Wort „Tagestourist“
zwei st-Ligaturen, wobei autotype die erste aufbricht, selnolig
nicht. Die Nicht-f-Ligaturen sind insbesondere bei gebrochenen
Schriften von Bedeutung (z. B. ch, ck, tz).<br>
<br>
Die konkreten Muster zur Umsetzung des Ligaturaufbruchs werden im
Falle von autotype auf der Grundlage der Wortliste des
deutschsprachigen Trennmusterprojekts
(<a class="moz-txt-link-freetext" href="https://repo.or.cz/w/wortliste.git">https://repo.or.cz/w/wortliste.git</a>) erstellt, die handgepflegt
wird und ca. 600000 Wörter mit Markierung der Trennstellen und
Wortfugen enthält. Die Wortliste dient in erster Linie der
Erstellung der Silbentrennmuster, der Ligaturaufbruch ist ein
Nebenprodukt. Aufgrund des Umfangs der Wortliste ist die
Wahrscheinlichkeit hoch, dass auch ein Wort, das in der Liste
nicht enthalten ist, von den Ligaturaufbruchmustern korrekt
behandelt wird, aber natürlich wird es exotische Komposita geben,
die mit den Mustern nicht abgedeckt werden können. Die
selnolig-Muster sind meines Wissens handgeschrieben. Gängige
Wörter werden damit sicherlich gut abgedeckt, aber auch hier gibt
es seltenere Wörter, die bei der Entwicklung nicht berücksichtigt
wurden (Beispiele nenne ich unten).<br>
<br>
Was das Kerning anbelangt, ist autotype noch nicht ausgereift. Zur
Zeit wird an allen potentiellen Ligaturaufbruchstellen ein
\kern0pt eingefügt, selbst wenn die betreffende Schrift gar keine
entsprechende Ligatur bereitstellt. Das führt dazu, dass an
solchen Stellen ein etwaiges Kerning des Fonts verhindert wird.
Beispielsweise hat Latin Modern Regular in 10pt für das Paar „oe“
ein Kerning von 0,28pt, das mit autotype an Wortfugen wie
„Autoerfinder“ verloren geht (mit selnolig und ligtype nicht).
Dies ist ein klarer Bug, den ich noch beheben will.<br>
<br>
Das Kerning-Problem betrifft auch Stellen, an denen eine
vorhandene Ligatur aufgebrochen wird. Beispielsweise definiert die
Schrift TeX Gyre Pagella sowohl eine Ligatur als auch ein Kerning
für das Paar fl. Beim Ligaturaufbruch mit autotype oder selnolig
(z. B. Auflage) wird dieses Kerning jedoch nicht durchgeführt, mit
ligtype schon. Ich nehme an, dass autotype hier noch verbessert
werden kann. Eine offene Frage ist noch, wie mit Schriften
umgegangen werden soll, die für Fälle wie fi oder fl kein eigenes
Kerning haben. In der Regel stehen die Buchstaben nach dem
Ligaturaufbruch dann zu eng zusammen. Die Nutzerschnittstelle mit
der maximal denkbaren Flexibilität (wählbares Kerning in
Abhängigkeit von Schriftart, Schriftgröße und Buchstabenpaar) wäre
für die meisten Nutzer sicherlich zu unhandlich. Zu überlegen
wäre, ob in solchen Fällen ein pauschales Kerning durchgeführt
werden sollte wie die 0,03em mit dem babel-Shorthand "|.<br>
<br>
Nach der Darlegung der prinzipiellen Unterschiede sollen noch
einige Einzelbeobachtungen zum Vergleich der drei Pakete
vorgestellt werden, die ich auf der Grundlage der Wortliste des
deutschsprachigen Trennmusterprojekts gemacht habe. Der Wettbewerb
ist hier natürlich unfair, da autotype auf dieser Liste beruht und
somit auch bei Wörtern daraus keine Fehler macht. Aus
arbeitsökonomischen Gründen habe ich mich auf die
Anfangsbuchstaben A-D beschränkt. Der Test wurde mit babel-ngerman
und den Silbentrennmustern aus dem Paket hyph-utf8, die zuletzt
2021 aktualisiert wurden, durchgeführt.<br>
<br>
selnolig und ligtype lösen die fl-Ligatur in „Dickkopfleguan“ und
„Dörfli“ nicht auf.<br>
<br>
ligtype löst die fl-Ligatur in „Dampflanze“ nicht auf. Das ist
äußerst merkwürdig, da ligtype eigentlich die Regeln von selnolig
übernimmt, das dieses Wort richtig behandelt.<br>
<br>
Fälschlich aufgelöst werden von selnolig und ligtype folgende
Ligaturen: Äff|innen, Arsenf|lasche, betrof|fenster (dieses Wort
ist anfechtbar), Börsenf|laute, Delf|ter.<br>
<br>
Die Schrift „Linux Libertine O“ verfügt über eine fft-Ligatur. Mit
selnolig und ligtype bleibt diese in „abgeschlafft“ und
„abgeschlaffte“ erhalten, was den oben zusammengefassten Regeln
von selnolig entspricht. In „Abgeschlafftheit“ wird die Ligatur
hingegen vor dem „t“ getrennt, was gegen die Regeln ist.<br>
<br>
Der Algorithmus von selnolig hat in seltenen Fällen negative
Auswirkungen auf die Silbentrennung. Mit selnolig werden die
Trennungen „Affektepilepsi-en“, „Aftershaveloti-on“,
„Akkreditiver-öffnung“, „Angriffside-en“, „Bahner-öffnung“,
„Begriffscha-os“, „Bronzein-schrift“, „Bundesplatzer-öffnung“,
„Dorfinformati-onen“, „Dufter-gebnis“, „Dufter-lebnis“ ermöglicht,
obwohl die Trennmuster sie nicht enthalten, da diese Trennstellen
ungünstig sind. Ein gravierenderes Beispiel ist die Trennung
„Abholauftra-gs“, die ebenfalls von selnolig ermöglicht wird.
Außerdem unterdrückt selnolig die Trennstellen „Abstrahleffek-te“,
„Ad-optivneffe“, „Ae-roflot“, „Ammoni-akentgiftung“,
„Co-laflasche“, obwohl sie in den Trennmustern enthalten sind. Mit
autotype und ligtype habe ich solche Probleme nicht festgestellt.<br>
<br>
Abschließend noch Hinweise für technisch Interessierte: Für den
Vergleich habe ich l3build-Testfälle (lvt-Dateien, siehe dazu das
Dokument „l3build.pdf“) für alle drei Ligaturaufbruchpakete
geschrieben und dann die geeignet bearbeiteten Ausgabedateien
(tlg-Dateien) mit diff verglichen. (Mit dem Paket nodetree müsste
Ähnliches möglich sein.) Der Eintrag für „Auflage“ in der
tlg-Datei sieht folgendermaßen aus:<br>
<br>
Mit autotype:<br>
.\TU/lmr/m/n/10 A<br>
.\kern-0.28 (font)<br>
.\TU/lmr/m/n/10 u<br>
.\TU/lmr/m/n/10 f<br>
.\kern0.0<br>
.\discretionary (penalty 50)<br>
..< \TU/lmr/m/n/10 -<br>
.\TU/lmr/m/n/10 l<br>
.\TU/lmr/m/n/10 a<br>
.\discretionary (penalty 50)<br>
..< \TU/lmr/m/n/10 -<br>
.\TU/lmr/m/n/10 g<br>
.\TU/lmr/m/n/10 e<br>
<br>
Mit selnolig:<br>
.\TU/lmr/m/n/10 A<br>
.\kern-0.28 (font)<br>
.\TU/lmr/m/n/10 u<br>
.\TU/lmr/m/n/10 f<br>
.\discretionary (penalty 50)<br>
..< \TU/lmr/m/n/10 -<br>
.\whatsit123456=0<br>
.\TU/lmr/m/n/10 l<br>
.\TU/lmr/m/n/10 a<br>
.\discretionary (penalty 50)<br>
..< \TU/lmr/m/n/10 -<br>
.\TU/lmr/m/n/10 g<br>
.\TU/lmr/m/n/10 e<br>
<br>
Mit ligtype:<br>
.\TU/lmr/m/n/10 A<br>
.\kern-0.28 (font)<br>
.\TU/lmr/m/n/10 u<br>
.\TU/lmr/m/n/10 f<br>
.\whatsit289473=0<br>
.\discretionary (penalty 50)<br>
..< \kern0.0 (font)<br>
..< \TU/lmr/m/n/10 -<br>
..= \kern0.0 (font)<br>
.\TU/lmr/m/n/10 l<br>
.\TU/lmr/m/n/10 a<br>
.\discretionary (penalty 50)<br>
..< \TU/lmr/m/n/10 -<br>
.\TU/lmr/m/n/10 g<br>
.\TU/lmr/m/n/10 e<br>
<br>
Schöne Grüße<br>
Keno<br>
</font>
</body>
</html>