Very good! The MetaFont code could still be improved, but don't think about it. The only things you have to improve in MetaFont are the character boxes, which are broken. Example: \markup \box { \musicglyph #"noteheads.u3kievan" \musicglyph #"scripts.barline.kievan" \musicglyph #"accidentals.kievanM1" }
A glyph for clef changes would also be great. Then we have to integrate your patch to LilyPond. First, I think you made the right thing in output-lib.scm. Now, let's do a KievanStaff! *** Add this in scm/output-lib.scm, line 581: (define-public alteration-kievan-glyph-name-alist '((-1/2 . "accidentals.kievanM1") (0 . "accidentals.vaticana0") (1/2 . "accidentals.kievan1"))) *** Add this in lily/bar-line.cc, line 289: else if (str == "kievan") m.add_stencil (Font_interface::get_default_font (me)->find_by_name ("scripts.barline.kievan")); *** Add this in scm/output-lib.scm, line 324: ;; ancient bar lines ("kievan" . ("kievan" . "")) *** Add this in scm/parser-clef.scm, line 79: ("kievan-do" . ("clefs.kievan.do" 0 0)) *** and line 107: ("clefs.kievan.do" . 0) *** Add this to ly/engraver-init.ly, line 1103: \context { \Voice \name "KievanVoice" \alias "Voice" \description "Same as @code{Voice} context, except that it is accommodated for typesetting a piece in Kievan style." \remove Stem_engraver %% Set glyph styles. \override NoteHead #'style = #'kievan \override Rest #'style = #'mensural \override Accidental #'glyph-name-alist = #alteration-kievan-glyph-name-alist \override Dots #'style = #'kievan %% There are no beams in Kievan notation. autoBeaming = ##f } \context { \Staff \name "KievanStaff" \alias "Staff" \denies "Voice" \defaultchild "KievanVoice" \accepts "KievanVoice" \description "Same as @code{Staff} context, except that it is accommodated for typesetting a piece in Kievan style." %% Choose kievan do clef. clefGlyph = #"clefs.kievan.do" middleCClefPosition = #0 middleCPosition = #0 clefPosition = #0 clefOctavation = #0 %% Accidentals are valid only once (if the following note is different) extraNatural = ##f autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0) ,neo-modern-accidental-rule) autoCautionaries = #'() printKeyCancellation = ##f } *** and line 550: \accepts "KievanStaff" Of course, you can change what I wrote, especially the names. Thanks! Bertrand http://codereview.appspot.com/4951062/diff/59001/mf/parmesan-noteheads.mf File mf/parmesan-noteheads.mf (right): http://codereview.appspot.com/4951062/diff/59001/mf/parmesan-noteheads.mf#newcode1861 mf/parmesan-noteheads.mf:1861: fet_beginchar ("kievan half note (space position)", "s1rkievan"); "sr1kievan" instead of "s1rkievan". http://codereview.appspot.com/4951062/ _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel