Zu Inhalt springen

... Invalid ligature rule replacement

Hervorgehobene Antworten

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

  • Ersteller

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;

  • Ersteller

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

  • Ersteller

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?

  • Ersteller

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

Erstelle ein Konto, um zu kommentieren

Wichtige Informationen

Wir setzen Cookies, um die Benutzung der Seite zu verbessern. Du kannst die zugehörigen Einstellungen jederzeit anpassen. Ansonsten akzeptiere bitte diese Nutzung.

Konto

Navigation

Browser-Push-Nachrichten konfigurieren

Chrome (Android)
  1. Klicke das Schloss-Symbol neben der Adressleiste.
  2. Klicke Berechtigungen → Benachrichtigungen.
  3. Passe die Einstellungen nach deinen Wünschen an.
Chrome (Desktop)
  1. Klicke das Schloss-Symbol in der Adresszeile.
  2. Klicke Seiteneinstellungen.
  3. Finde Benachrichtigungen und passe sie nach deinen Wünschen an.