ekke wolf Geschrieben Mai 31, 2011 Geschrieben Mai 31, 2011 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
Ralf Herrmann Geschrieben Mai 31, 2011 Geschrieben Mai 31, 2011 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.
ekke wolf Geschrieben Mai 31, 2011 Themen-Ersteller Geschrieben Mai 31, 2011 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;
Ralf Herrmann Geschrieben Juni 1, 2011 Geschrieben Juni 1, 2011 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.
ekke wolf Geschrieben Juni 1, 2011 Themen-Ersteller Geschrieben Juni 1, 2011 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
ekke wolf Geschrieben Juni 1, 2011 Themen-Ersteller Geschrieben Juni 1, 2011 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?
Ralf Herrmann Geschrieben Juni 1, 2011 Geschrieben Juni 1, 2011 sub @PUNCT_LC @PUNCT_UC by @PUNCT_SC;[/CODE]Das wird es sein!Ersetze [i]Klasse Klasse [/i]durch [i]Klasse[/i] kann nicht gehen.
ekke wolf Geschrieben Juni 1, 2011 Themen-Ersteller Geschrieben Juni 1, 2011 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
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