2012-06-05 17 views
7

Ich mache eine Schriftart mit Skripten auf FontForge. Alles funktioniert gut, aber ich habe dieses Problem, ich weiß nicht, wie man für eine ausgewählte Glyphe angibt, dass, wenn zwei andere Glyphen gleichzeitig erscheinen, die ausgewählte Glyphe angezeigt wird. Ich habe bereits die Lookuptable und die Untertabelle dafür gemacht, aber ich kenne die Funktion nicht, die einige Ligaturen für eine bestimmte Glyphe definieren würde. Hier ist der Code zum Erstellen einer Tabelle und Untertabelle zum Hinzufügen von Ligaturen zu einer Glyphe.FontForge Scripting zum Hinzufügen von Ligaturen für ein Glyphe

AddLookup("Ligatures","GSUB_ligature",9,[["rlig",[["arab",["dflt"]]]]]) 
AddLookupSubtable("Ligatures","Ligatureshi") 
+0

Die Frage fragt nach, wie Ligaturen eine Schriftart hinzufügen, um ein Skript, aber es ist auch möglich, in der Fontforge GUI-Schnittstelle zu tun. Ich weiß nicht, wie ich das gut genug machen soll, um eine vollständige Antwort hinzuzufügen, aber gehe zu ** Element> Font Info> Lookups> GSUB **. Siehe [diese Antwort] (http://stackoverflow.com/a/43315958/3681880) für das Entfernen von Ligaturen. – Suragch

Antwort

0

Nachdem Sie die Nachschlag-& untergeordnete Tabelle hinzugefügt haben, dies zu tun:

Select("fl") 
AddPosSub("LigatureSubtableName", "f l") 

Das obige Skript Fontforge wird eine fl Ligatur hinzufügen.

+0

Hi @Arthaey, Diese Codezeile, die du geschrieben hast, wird einige Substitutionen in der Substitutionstabelle deklarieren, die "fl" nicht zu zeigen scheint, wenn ich "f" und "l" schreibe, also denke ich, dass ich etwas brauche fügen Sie einige Informationen für "fl" in die Ligaturentabelle ein, um "f" und "l" in "fl" umzuwandeln, wenn sie zusammen erscheinen. Hast du irgendeine Idee? oder hast du das schon mal gemacht? – Ehsan

4

Sie müssen die Ligatursubstitution mit einem Tupel vorhandener Glyphnamen angeben. Ein konstruiertes Beispiel:

ligature_name = 'f_l' 
ligature_tuple = ('f', 'l') 
font.AddLookup('ligatures','gsub_ligature',(),[['rlig',[['arab',['dflt']]]]]) 
font.AddLookupSubtable('ligatures', 'ligatureshi') 
glyph = font.createChar(-1, ligature_name) 
glyph.addPosSub('ligatureshi', ligature_tuple)