[Mitglied Josh…] Geschrieben März 27, 2009 Teilen Geschrieben März 27, 2009 Ich möchte in einer OpenType-Schrift erreichen, daß in Dreierfolgen (beispielsweise „ffi“), für die es keinen Verbund gibt, der Verbund für die letzten beiden (fi) und nicht für die ersten beiden Buchstaben (ff) gesetzt wird. Das funktioniert, wenn ich die Verbünde auf zwei Ligatur-Abfragen aufteile: die „hinteren“ Verbünde (fi) in die erste, die „vorderen“ Verbünde (ff) in die zweite. (Auf zwei Untertabellen aufgeteilt klappt es nicht.) Wie kann das aber sein? Eigentlich müßten die Buchstaben doch von links nach rechts ausgelesen werden, sodaß in der Folge „ffi“ zuerst der ff-Verbund gesetzt wird, und fi dann gar nicht mehr angewandt werden kann, oder? (Das Problem gab es hier im Forum schonmal, es wurde aber nicht geklärt.) Link zu diesem Kommentar
Ralf Herrmann Geschrieben März 27, 2009 Teilen Geschrieben März 27, 2009 Was genau ist jetzt die Frage? Und wie in dem anderen Thread: Kopier mal den Feature-Code für die betreffenden Zeichen hier rein. Link zu diesem Kommentar
[Mitglied Seba…] Geschrieben März 27, 2009 Teilen Geschrieben März 27, 2009 hilft es nicht, wenn du zuerst die fi-Ligatur definierst, und erst hinterher die ff? also in dieser Reihenfolge: sub f i by f_i; sub f f by f_f; Dann müsste doch, so es linear abgearbeitet wird, was so sein müsste(?) "f i" durch "f_i" ersetzt, und dann die "f f"-Abfrage nicht mehr anspringen, da es ja kein "f f" mehr zu ersetzen gibt sondern nur noch ein "f f_i" dasteht. Oder versteh ich was falsch? Link zu diesem Kommentar
[Mitglied Josh…] Geschrieben März 27, 2009 Themen-Ersteller Teilen Geschrieben März 27, 2009 Meine genaue Frage ist: Muß ich die Verbünde in zwei Abfragen aufteilen, reicht es, die Reihenfolge der Verbünde zu ändern, oder was ist sonst die sinnvollste Möglichkeit, zu erreichen, daß der Verbund für die beiden hinteren Buchstaben der Dreierfolge gesetzt wird? Der betroffene Code (mit allen Verbünden in einer einzigen Abfrage): lookup ligaStandardLigaturesinLatinloo { lookupflag 0; sub \c \h by \c_h; sub \longs \c \h by \longs_c_h; sub \f \f by \f_f; sub \f \i by \f_i; } ligaStandardLigaturesinLatinloo; feature liga { script DFLT; language dflt ; lookup ligaStandardLigaturesinLatinloo; script latn; language dflt ; lookup ligaStandardLigaturesinLatinloo; } liga; Diesen Code hat Fontforge (!) erzeugt, damit habe ich über die graphische Oberfläche die Ligaturen eingetragen. Das Problem: Auf der Oberfläche kann die Reihenfolge der Verbünde nicht geändert werden; aber obwohl jetzt hier c_h vor longs_c_h steht, wird auch der longs_c_h-Verbund richtig gesetzt. (Möglicherweise sortiert Fontforge die Verbünde intern richtig um?) Wenn ich selbst eine Feature-Datei mit anderer Reihenfolge erstelle und diese in Fontforge einfüge, sortiert Fontforge die Verbünde leider auch wieder wie im obigen Code. Und hier der Code für zwei Abfragen (womit es funktioniert): lookup ligaStandardLigaturesinLatinloo { lookupflag 0; sub \c \h by \c_h; sub \longs \c \h by \longs_c_h; sub \f \i by \f_i; } ligaStandardLigaturesinLatinloo; lookup sub_ligature_ligalatn_0 { lookupflag 0; sub \f \f by \f_f; } sub_ligature_ligalatn_0; feature liga { script DFLT; language dflt ; lookup ligaStandardLigaturesinLatinloo; lookup sub_ligature_ligalatn_0; script latn; language dflt ; lookup ligaStandardLigaturesinLatinloo; lookup sub_ligature_ligalatn_0; } liga; Kann mir jemand bestätigen, daß es funktioniert, wenn der hintere Verbund (fi) vor dem vorderen (ff) in einer Abfrage steht? Link zu diesem Kommentar
Ralf Herrmann Geschrieben März 27, 2009 Teilen Geschrieben März 27, 2009 Kann mir jemand bestätigen, daß es funktioniert, wenn der hintere Verbund (fi) vor dem vorderen (ff) in einer Abfrage steht? Nein, das würde nicht funktionieren. Bevor die Layout-Engine zu dem fi kommt, hat sie vorher schon das ff gefunden und ersetzt. Es geht ja eben der Reihe nach durch den Text. Für dieses Problem gibt es aber die Ignore-Funktion: ignore sub f f ; sub f f by f_f; Dann greift die ff-Ligatur bei ffi und ffl nicht mehr. Ralf Link zu diesem Kommentar
[Mitglied Josh…] Geschrieben März 30, 2009 Themen-Ersteller Teilen Geschrieben März 30, 2009 Nein, das würde nicht funktionieren. Bevor die Layout-Engine zu dem fi kommt, hat sie vorher schon das ff gefunden und ersetzt. Es geht ja eben der Reihe nach durch den Text. Hmh, das habe ich vermutet. Ich verstehe allerdings nicht, wieso es dann funktioniert, wenn man die Ligaturen auf zwei Lookups aufteilt. Für dieses Problem gibt es aber die Ignore-Funktion:ignore sub f f ; sub f f by f_f; Vielen Dank! Das scheint genau zu sein, was ich brauche. Leider schluckt Fontforge das nicht, sondern meldet: „All entries in a lookup must have the same type“. Ich wende mich damit mal an die Fontforge-Mailinglist . . . Link zu diesem Kommentar
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenEinloggen
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden