[Trennmuster] selektive Ligaturwahl

Stephan Hennig sh-list at posteo.net
Fr Dez 19 18:34:42 CET 2014


Am 18.12.2014 um 21:20 schrieb Guenter Milde:


>> Ich fände es natürlich toll falls das selnolig-Paket als Basis für weitere
>> Anwendungen fungieren könnte und/oder falls ich neue Regeln zur Unterdrückung
>> von Ligaturen Eurer Arbeit entlehnen dürfte. 
> ...
> 
> Zur Zeit sehe ich die Ansätze von selnolig und über die
> "qualifizierten Trennmuster" als Alternativen.

Inzwischen habe ich auch Philipp Gesang, den Betreuer des Pakets
luaotfload, hierher eingeladen.  Noch einmal herzlich willkommen auf der
Trennmuster-Liste, Philipp!  Da Philipp ebenfalls eher wenig Zeit zu
haben scheint :-), weiß ich nicht, inwieweit er sich in die Diskussionen
hier einmischen wird.  Ich habe jedoch von ihm erfahren, dass er
längerfristig plant, das Paket luaotfload stärker zu modularisieren.

                               * * *

Wie mir erst kürzlich klar geworden ist, gibt es beim Anwenden jeglicher
Ersetzungen auf Knotenebene das Problem der Priorität.  Wenn zwei Pakete
Glyphersetzungen (für Knoten derselben Sprache) anwenden, zum Beispiel
Ligaturen und Rund-zu-Lang-S-Wandlung, dann spielt die Reihenfolge eine
Rolle.  In diesem Beispiel müssen die Lang-s-Glyphen vor der Ligierung
eingesetzt werden.  Mit unabhängigen Paketen wird man daher nicht weit
kommen.  Es bedarf bei solchen Knotenlistenmanipulationen einer
zentralen Vermittlung.  Dabei denke ich inzwischen an das Paket
luaotfload.  (Was der Grund war, auch auf Philipp zuzugehen).

                                * * *

Im Modus 'node', in welchem luaotfload für OTF-Schriften die
Ligatursetzung komplett übernimmt, sind die Entscheidung über Ligaturen
und die eigentliche Knotenlistenmanipulation eng miteinander verknüpft.
 Eine stärkere Modularisierung könnte so aussehen, dass beide Aufgaben
unabhängig voneinander erledigt werden, durch austauschbare Module und
mithilfe fester Kommunikationswege (zum Beispiel Attribute).

                                 * * *

Im Zuge der Einladung habe ich diese Gedanken Philipp bereits
geschildert.  Wieviel davon in luaotfload landen wird, werden wir sehen.
 Auf jeden Fall habe ich den Eindruck, dass sie nicht ganz ungehört
verschallen.

Mittelfristig daher folgende Idee: Da das Paket selnolig bereits
verschiedene Arten von Knotenmanipulationen bereitstellt, um Ligaturen
zu verhindern, könnten wir in dem Paket doch einen solchen modularen
Ansatz a) zur Ligaturentscheidung und b) zur eigentlichen Behandlung auf
Knotenlistenebene ausprobieren.  Mir käme das sehr entgegen, da mein
Interesse momentan eher bei Liangs Algorithmus der Musteranpassung liegt
und weniger bei den Knotenmanipulationen und der dazu nötigen Verwaltung
von vielerlei Schriftinformationen.  <vision>Es könnte dann sein, dass
das Paket selnolig später in Module für das Paket luaotfload
zerfällt.</vision>  Klingt das sinnvoll?


> Vielleicht ist eine Kombination der Ansätze "pattern" +
> "\nolig-/\keeplig-makros" sinnvoll, analog zum Zeilenumbruch, wo die
> Hauptarbeit mit den effizienten "pattern" gemacht wird und \hyphen...
> Makro zur lokalen Anpassung zur Verfügung steht. Und die Varianten zur
> Ligaturunterdückung an den einmal gefundenen Stellen sind bei selnolig
> deutlich ausgefeilter.

Ich bin momentan dabei, Ausnahmen ähnlich \hyphenation zu
implementieren.  Das erfordert einige Bereinigungen im
Padrinoma-Paket und wird voraussichtlich bis Januar dauern.


>> >  + Vielleicht das beste: Die oben beschriebenen Muster enthalten
>> >    Informationen, die nicht auf einzelne Ligaturen zugeschnitten
>> >    sind.  Das heißt, mit solchen Mustern lassen sich grundsätzlich
>> >    beliebige Ligaturen behandeln.
> 
> Das wird besonders für den Fraktursatz interessant, wo Ligaturen aus
> ch, ck, tz, ... dazukommen.

Wörter mit st- und tz-Ligaturen werden im Beispieldokument
break-ligatures.tex bereits gezeigt.  Kennt jemand eine geeignete
gebrochene Schrift, die sich für weitere Ligaturbeispiele verwenden
lässt (am besten bereits Bestandteil von TeX Live)?

Wo wir gerade dabei sind, wer Lust hat, kann break-ligatures.tex so
ändern, dass ein beliebiger längerer Text (geschachtelt in

  \begin{otherlanguage}{german}
  \end{otherlanguage}

wie in den anderen Abschnitten) mit der Schrift Junicode und der Option
Ligatures=Rare oder Ligatures=Historic kompiliert wird (weiß nicht mehr
genau welche).  Es sollten etliche außergewöhnliche Ligaturen
auftauchen, die auch sinnvoll verhindert werden.  Als vorgefertigtes
Beispiel habe ich das aber nicht aufgenommen, weil die
Informationsdichte nicht sehr hoch ist.  Man muss doch sehr suchen, um
den Effekt zu erkennen.

Viele Grüße,
Stephan Hennig




Mehr Informationen über die Mailingliste Trennmuster