Jump to content
Ständig interessante neue Typo-Inhalte auf Instagram. Abonniere @typography.guru.

... Invalid ligature rule replacement

Empfohlene Beiträge

ekke wolf

Hallo, ich versuche derzeit gerade, einen OpenType-Font in Fontlab Studio 5.0.4 für Mac zu erstellen.

Beim Kompilieren der OpenType-Features stoße ich auf immer dieselbe Fehlermeldung im Output Panel:

[ERROR] <EveningRegular> Invalid ligature rule replacement [/users/ekkewolf/Library/Application Support/FontLab/Studio 5/Features/fontlab.fea 218]

[FATAL] <EveningRegular> aborting because of errors

Mit den Ligaturen und Brüchen habe ich schon einiges versucht, komme aber nicht weiter.

Es wäre super, wenn mir jemand helfen könnte!

Danke im Voraus

Ekke

Link zu diesem Kommentar
Ralf Herrmann

Dann zeig mal die OpenType Features, die Du eingebaut hast. Da liegt dann mit großer Wahrscheinlichkeit der Fehler. Ohne die zu sehen, kann man auch nicht sagen, was falsch ist.

Link zu diesem Kommentar
ekke wolf

Das sind die Features, herauskopiert aus der .fea-Datei, ich hoffe, das ist so in Ordnung.

Die Features und Classes bauen auf dem freefont.pro von Fontlab auf, nur ein wenig adaptiert.

@FIG_SC sind zum Beispiel Kapitälchenziffern ohne Ober- und Unterlängen, also auf x-Höhe begrenzte Lining Figures, wenn man so will.

@FIGURES = [

@FIG_TAB_LINING @FIG_FIT_LINING @FIG_FIT_OLDSTYLE @FIG_TAB_OLDSTYLE @FIG_SC @FIG_SUPERIOR @FIG_INFERIOR @FIG_NUMERATOR @FIG_DENOMINATOR

];

@NUMERATOR_ALL = [

@FIG_NUMERATOR @MISC_NUMERATOR

];

@DENOMINATOR_ALL = [

@FIG_DENOMINATOR @MISC_DENOMINATOR

];

@LETTERS = [

@LETTERS_UC @LETTERS_LC @LETTERS_SC @LETTERS_ALT @LIGATURES

];

feature cpsp {

pos [@LETTERS_UC @PUNCT_UC Idotaccent] <7 0 14 0>;

} cpsp;

feature aalt {

feature smcp;

feature c2sc;

feature case;

feature onum;

feature lnum;

feature pnum;

feature tnum;

feature sups;

feature sinf;

feature numr;

feature dnom;

feature salt;

feature hist;

feature ordn;

feature zero;

feature fina;

sub @FIG_TAB_LINING by @FIG_FIT_OLDSTYLE;

sub @CURRENCY_LINING by @CURRENCY_TAB_OLDSTYLE;

} aalt;

feature c2sc {

sub @LETTERS_UC by @LETTERS_SC;

sub Idotaccent by Idotaccent.small;

sub @PUNCT_UC by @PUNCT_SC;

sub @FIG_TAB_LINING by @FIG_SC;

sub @FIG_FIT_LINING by @FIG_SC;

sub @CURRENCY_LINING by @CURRENCY_TAB_OLDSTYLE;

sub @ACCENTS_UC by @ACCENTS_SC;

sub [cyrBreve cyrFlex] by [cyrbreve cyrflex];

} c2sc;

feature smcp {

sub @LETTERS_LC by @LETTERS_SC;

sub @PUNCT_LC @PUNCT_UC by @PUNCT_SC;

sub @FIG_TAB_LINING by @FIG_SC;

sub @FIG_FIT_LINING by @FIG_SC;

sub @FIG_TAB_OLDSTYLE by @FIG_SC;

sub @FIG_FIT_OLDSTYLE by @FIG_SC;

sub @CURRENCY_LINING by @CURRENCY_TAB_OLDSTYLE;

sub @ACCENTS_LC by @ACCENTS_SC;

} smcp;

feature onum {

sub @FIG_TAB_LINING by @FIG_TAB_OLDSTYLE;

sub @FIG_FIT_LINING by @FIG_FIT_OLDSTYLE;

sub @FIG_SC by @FIG_FIT_OLDSTYLE;

sub @CURRENCY_LINING by @CURRENCY_TAB_OLDSTYLE;

sub [numbersign percent perthousand] by [numbersign.taboldstyle percent.oldstyle perthousand.oldstyle];

sub [franc peseta lira currency] by [franc.taboldstyle peseta.taboldstyle lira.taboldstyle currency.taboldstyle];

} onum;

feature case {

sub @FIG_TAB_OLDSTYLE by @FIG_TAB_LINING;

sub @FIG_FIT_OLDSTYLE by @FIG_FIT_LINING;

sub @FIG_SC by @FIG_FIT_LINING;

sub @CURRENCY_TAB_OLDSTYLE by @CURRENCY_LINING;

sub @CURRENCY_FIT_OLDSTYLE by @CURRENCY_LINING;

sub @ACCENTS_LC by @ACCENTS_UC;

sub @PUNCT_LC by @PUNCT_UC;

sub @PUNCT_SC by @PUNCT_UC;

} case;

feature lnum {

sub @FIG_TAB_OLDSTYLE by @FIG_TAB_LINING;

sub @FIG_FIT_OLDSTYLE by @FIG_FIT_LINING;

sub @FIG_SC by @FIG_FIT_LINING;

sub @CURRENCY_TAB_OLDSTYLE by @CURRENCY_LINING;

sub @CURRENCY_FIT_OLDSTYLE by @CURRENCY_LINING;

sub @PUNCT_SC by @PUNCT_LC;

} lnum;

feature pnum {

sub @FIG_TAB_LINING by @FIG_FIT_LINING;

sub @FIG_TAB_OLDSTYLE by @FIG_FIT_OLDSTYLE;

sub @CURRENCY_TAB_OLDSTYLE by @CURRENCY_FIT_OLDSTYLE;

} pnum;

feature tnum {

sub @FIG_FIT_LINING by @FIG_TAB_LINING;

sub @FIG_FIT_OLDSTYLE by @FIG_TAB_OLDSTYLE;

sub @CURRENCY_FIT_OLDSTYLE by @CURRENCY_TAB_OLDSTYLE;

} tnum;

feature sups {

sub @FIG_TAB_LINING by @FIG_SUPERIOR;

sub @FIG_FIT_LINING by @FIG_SUPERIOR;

sub @FIG_FIT_OLDSTYLE by @FIG_SUPERIOR;

sub @FIG_TAB_OLDSTYLE by @FIG_SUPERIOR;

sub @FIG_INFERIOR by @FIG_SUPERIOR;

sub @FIG_NUMERATOR by @FIG_SUPERIOR;

sub @FIG_DENOMINATOR by @FIG_SUPERIOR;

sub @FIG_SC by @FIG_SUPERIOR;

sub @MISC_LINING by @MISC_SUPERIOR;

sub @MISC_INFERIOR by @MISC_SUPERIOR;

sub @MISC_NUMERATOR by @MISC_SUPERIOR;

sub @MISC_DENOMINATOR by @MISC_SUPERIOR;

sub @LETTERS_NORMAL by @LETTERS_SUPERIOR;

sub [cent dollar] by [centsuperior dollarsuperior];

sub [centoldstyle dollaroldstyle] by [centsuperior dollarsuperior];

sub [cent.taboldstyle dollar.taboldstyle] by [centsuperior dollarsuperior];

} sups;

feature sinf {

sub @FIG_TAB_LINING by @FIG_INFERIOR;

sub @FIG_FIT_LINING by @FIG_INFERIOR;

sub @FIG_FIT_OLDSTYLE by @FIG_INFERIOR;

sub @FIG_TAB_OLDSTYLE by @FIG_INFERIOR;

sub @FIG_SUPERIOR by @FIG_INFERIOR;

sub @FIG_NUMERATOR by @FIG_INFERIOR;

sub @FIG_DENOMINATOR by @FIG_INFERIOR;

sub @FIG_SC by @FIG_INFERIOR;

sub @MISC_LINING by @MISC_INFERIOR;

sub @MISC_SUPERIOR by @MISC_INFERIOR;

sub @MISC_NUMERATOR by @MISC_INFERIOR;

sub @MISC_DENOMINATOR by @MISC_INFERIOR;

sub [cent dollar] by [centinferior dollarinferior];

sub [centoldstyle dollaroldstyle] by [centinferior dollarinferior];

sub [cent.taboldstyle dollar.taboldstyle] by [centinferior dollarinferior];

} sinf;

feature numr {

sub @FIG_TAB_LINING by @FIG_NUMERATOR;

sub @FIG_FIT_LINING by @FIG_NUMERATOR;

sub @FIG_FIT_OLDSTYLE by @FIG_NUMERATOR;

sub @FIG_TAB_OLDSTYLE by @FIG_NUMERATOR;

sub @FIG_SUPERIOR by @FIG_NUMERATOR;

sub @FIG_INFERIOR by @FIG_NUMERATOR;

sub @FIG_DENOMINATOR by @FIG_NUMERATOR;

sub @FIG_SC by @FIG_NUMERATOR;

sub @MISC_LINING by @MISC_NUMERATOR;

sub @MISC_INFERIOR by @MISC_NUMERATOR;

sub @MISC_SUPERIOR by @MISC_NUMERATOR;

sub @MISC_DENOMINATOR by @MISC_NUMERATOR;

sub slash by fraction;

sub [cent dollar] by [cent.numerator dollar.numerator];

sub [centoldstyle dollaroldstyle] by [cent.numerator dollar.numerator];

sub [cent.taboldstyle dollar.taboldstyle] by [cent.numerator dollar.numerator];

} numr;

feature dnom {

sub @FIG_TAB_LINING by @FIG_DENOMINATOR;

sub @FIG_FIT_LINING by @FIG_DENOMINATOR;

sub @FIG_FIT_OLDSTYLE by @FIG_DENOMINATOR;

sub @FIG_TAB_OLDSTYLE by @FIG_DENOMINATOR;

sub @FIG_NUMERATOR by @FIG_DENOMINATOR;

sub @FIG_SUPERIOR by @FIG_DENOMINATOR;

sub @FIG_INFERIOR by @FIG_DENOMINATOR;

sub @FIG_SC by @FIG_DENOMINATOR;

sub @MISC_LINING by @MISC_DENOMINATOR;

sub @MISC_INFERIOR by @MISC_DENOMINATOR;

sub @MISC_NUMERATOR by @MISC_DENOMINATOR;

sub @MISC_SUPERIOR by @MISC_DENOMINATOR;

sub slash by fraction;

sub [cent dollar] by [cent.denominator dollar.denominator];

sub [centoldstyle dollaroldstyle] by [cent.denominator dollar.denominator];

sub [cent.taboldstyle dollar.taboldstyle] by [cent.denominator dollar.denominator];

} dnom;

feature frac {

sub [@ZERO @SLASH @ZERO @ZERO] by perthousand;

sub [@ZERO @SLASH @ZERO] by percent;

sub [@ONE @SLASH @FOUR] by onequarter;

sub [@ONE @SLASH @TWO] by onehalf;

sub [@THREE @SLASH @FOUR] by threequarters;

sub [@ONE @SLASH @THREE] by onethird;

sub [@TWO @SLASH @THREE] by twothirds;

sub [@ONE @SLASH @EIGHT] by oneeighth;

sub [@THREE @SLASH @EIGHT] by threeeighths;

sub [@FIVE @SLASH @EIGHT] by fiveeighths;

sub [@SEVEN @SLASH @EIGHT] by seveneighths;

sub [slash uni2215] by fraction;

} frac;

feature liga {

sub f f i by f_f_i;

sub f i by fi;

lookup NOFI {

sub f f l by f_f_l;

sub f f by f_f;

sub f l by fl;

sub f b by f_b;

sub f f b by f_f_b;

sub f h by f_h;

sub f f h by f_f_h;

sub f f k by f_f_k;

sub f k by f_k;

sub f f j by f_f_j;

sub f j by f_j;

sub T h by T_h;

sub Tcaron h by T_h.caron;

sub Tcommaaccent h by T_h.commaaccent;

} NOFI;

language TUR exclude_dflt;

} liga;

feature salt { # Stylistic Alternates

sub @LETTERS_STANDARD by @LETTERS_ALT;

} salt;

feature hist { # Historical Forms

sub s by longs;

} hist;

feature dlig {

sub c t by c_t;

sub s p by s_p;

sub s t by s_t;

sub longs h by longs_h;

sub longs longs h by longs_longs_h;

sub longs b by longs_b;

sub longs longs b by longs_longs_b;

sub longs k by longs_k;

sub longs longs k by longs_longs_k;

sub longs i by longs_i;

sub longs longs i by longs_longs_i;

sub longs l by longs_l;

sub longs longs l by longs_longs_l;

sub longs longs by longs_longs;

} dlig;

feature ordn {

sub @FIGURES a' by ordfeminine;

sub @FIGURES o' by ordmasculine;

sub @FIGURES period a' by ordfeminine;

sub @FIGURES period o' by ordmasculine;

} ordn;

feature zero {

sub zero by zero.slash;

sub zero.fitted by zero.slash;

} zero;

feature fina { # Terminal Forms

sub sigma by uni03C2;

} fina;

Link zu diesem Kommentar
Ralf Herrmann

Ui, das ist ’ne Menge. Allerdings wird oben in der Fehlermeldung die Zeile angegeben, wo er hängengeblieben ist. Damit solltest du das schon mal leicht eingrenzen können.

Link zu diesem Kommentar
ekke wolf

Aha, vielen Dank für den Tipp!

Ich wusste nicht, dass das in der Fehlermeldung die Zeile ist, sondern dachte an den Namen einer Datei, die aufgrund eines Bugs doch nicht angelegt wurde ...

Ich werde da heute Nacht mein Glück versuchen.

Schöne Grüße

ekke

Link zu diesem Kommentar
ekke wolf

Wie es aussieht, konnte ich meinen Fehler eingrenzen. Verstehen kann ich allerdings nicht:

feature smcp {

sub @LETTERS_LC by @LETTERS_SC;

sub @PUNCT_LC @PUNCT_UC by @PUNCT_SC;

sub @FIG_TAB_LINING by @FIG_SC;

sub @FIG_FIT_LINING by @FIG_SC;

sub @FIG_TAB_OLDSTYLE by @FIG_SC;

sub @FIG_FIT_OLDSTYLE by @FIG_SC;

sub @CURRENCY_LINING by @CURRENCY_TAB_OLDSTYLE;

sub @ACCENTS_LC by @ACCENTS_SC;

} smcp;

Fontlab zeigt mir sogar die Zeile an die nicht stimmt, nur wusste ich das nicht:

sub @FIG_TAB_OLDSTYLE by @FIG_SC;

Kann das damit zusammenhängen, dass irgendwo versteckt als default figures für Kapitälchen die Taboldstyles eingetragen sind und sich das Programm gegen anderslautende Intentionen wehrt?

Link zu diesem Kommentar
ekke wolf

Ja, danke danke danke, das war es!

Dann sind noch ein paar andere Fehlermeldungen aufgetaucht, die aber konkrete Anweisungen beinhaltet haben. Zum Schluss habe ich noch eine bei "frac" nicht verstanden, aber auf dieses feature kann ich bei meiner Schrift eigentlich verzichten. Die Brüche können auch über die Glyphenpalette gewählt werden.

Jetzt habe ich endlich ein funktionierendes Preview-Fenster und kann die Arbeit weitertreiben.

Schöne Grüße

ekke

Link zu diesem Kommentar

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 erstellen

Einloggen

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

Unsere Partner

FDI Type Foundry besuchen
Entdecke hunderte Font-Sonderangebote.
Hier beginnt deine kreative Reise.
Mit über 130.000 Fonts der größte Schriften-Shop im Internet.
Adobe Stock kostenlos testen und 10 Gratis-Medien sichern …
×
×
  • Neu erstellen...

🍪 Hinweis:

Wir benutzen funktionale Cookies.