Am 29.09.2013 17:54, schrieb Federico Bruni:
Hi

I'm trying to use LilyJAZZ on version 2.17.27
I've updated the file with convert-ly and also tried the change made by
Keith:
http://lilypond.1069038.n5.nabble.com/Pseudo-handwritten-font-tt142117.html#a147230

But I still get an error.
I attach both files.

Hi Federico,

see my reworked file attached. It covers the dot spacing bug in
markups as well.

It works for me under 2.17.27.

HTH,

Marc

\version "2.16.0"

% preliminary LilyJAZZ version for testing purposes

\paper { indent = #0 }

%***********************************************************************
% MAPPING ALISTS / LOOKUP TABLES
%***********************************************************************

% MAPPING ALIST: GLYPH NAME TO UNICODE CHAR NUMBER =====================
#(define jazz-map '(
    ("noteheads.s0jazz" . #xe191)
    ("noteheads.s1jazz" . #xe192)
    ("noteheads.s2jazz" . #xe193)
    ("noteheads.s0slashjazz" . #xe19c)
    ("noteheads.s1slashjazz" . #xe19d)
    ("noteheads.s2slashjazz" . #xe19e)
    ("noteheads.s2crossjazz" . #xe1a1)
    ("flags.u3jazz" . #xe21c)
    ("flags.u4jazz" . #xe21d)
    ("flags.u5jazz" . #xe21e)
    ("flags.u6jazz" . #xe21f)
    ("flags.u7jazz" . #xe220)
    ("flags.d3jazz" . #xe221)
    ("flags.d4jazz" . #xe222)
    ("flags.d5jazz" . #xe223)
    ("flags.d6jazz" . #xe224)
    ("flags.d7jazz" . #xe225)
    ("flags.ugracejazz" . #xe226)
    ("flags.dgracejazz" . #xe227)
    ("dots.dot" . #xe131)
    ("accidentals.doublesharpjaz" . #xe126)
    ("accidentals.sharpjazz" . #xe10f)
    ("accidentals.naturaljazz" . #xe117)
    ("accidentals.flatjazz" . #xe11b)
    ("accidentals.flatflatjazz" . #xe124)
    ("accidentals.rightparenjaz" . #xe127)
    ("accidentals.leftparenjazz" . #xe128)
    ("rests.mmendjazz" . #xe0f8)
    ("rests.0jazz" . #xe100)
    ("rests.1jazz" . #xe101)
    ("rests.0ojazz" . #xe102)
    ("rests.1ojazz" . #xe103)
    ("rests.2jazz" . #xe108)
    ("rests.3jazz" . #xe10a)
    ("rests.4jazz" . #xe10b)
    ("rests.5jazz" . #xe10c)
    ("rests.6jazz" . #xe10d)
    ("rests.7jazz" . #xe10e)
    ("clefs.Fjazz" . #xe170)
    ("scripts.ufermatajazz" . #xe132)
    ("scripts.dfermatajazz" . #xe133)
    ("scripts.asteriskjazz" . #xe138)
    ("scripts.sforzatojazz" . #xe13b)
    ("scripts.esprjazz" . #xe13c)
    ("scripts.staccatojazz" . #xe13d)
    ("scripts.tenutojazz" . #xe140)
    ("scripts.uportatojazz" . #xe141)
    ("scripts.dportatojazz" . #xe142)
    ("scripts.umarcatojazz" . #xe143)
    ("scripts.dmarcatojazz" . #xe144)
    ("scripts.openjazz" . #xe145)
    ("scripts.stoppedjazz" . #xe148)
    ("scripts.trilljazz" . #xe14d)
    ("scripts.segnojazz" . #xe153)
    ("scripts.varsegnojazz" . #xe154)
    ("scripts.codajazz" . #xe155)
    ("scripts.varcodajazz" . #xe156)
    ("scripts.trill_elementjazz" . #xe15c)
    ("scripts.trilelementjazz" . #xe15f)
    ("scripts.pralljazz" . #xe160)
    ("scripts.prallpralljazz" . #xe162)
    ("clefs.F_changejazz" . #xe171)
    ("clefs.Gjazz" . #xe172)
    ("clefs.G_changejazz" . #xe173)
    ("timesig.C44jazz" . #xe178)
    ("timesig.C22jazz" . #xe179)
    ("zerojazz" . #x0030)
    ("onejazz" . #x0031)
    ("twojazz" . #x0032)
    ("threejazz" . #x0033)
    ("fourjazz" . #x0034)
    ("fivejazz" . #x0035)
    ("sixjazz" . #x0036)
    ("sevenjazz" . #x0037)
    ("eightjazz" . #x0038)
    ("ninejazz" . #x0039)
    ("Fjazz" . #x0046)
    ("fjazz" . #x0066)
    ("mjazz" . #x006d)
    ("pjazz" . #x0070)
    ("rjazz" . #x0072)
    ("sjazz" . #x0073)
    ("zjazz" . #x007a)))

#(define jazz-alteration-glyph-name-alist
  '((0 . "accidentals.naturaljazz")
    (-1/2 . "accidentals.flatjazz")
    (1/2 . "accidentals.sharpjazz")
    (1 . "accidentals.doublesharpjaz")
    (-1 . "accidentals.flatflatjazz")))


%***********************************************************************
%  JAZZ GLYPH ACCESS
%***********************************************************************

#(define-markup-command (jazzchar layout props charnum) (number?)
  "char for jazz characters"
    (interpret-markup layout props
      (markup (#:fontsize 5 #:override '(font-name . "LilyJAZZ") #:char 
charnum))))

% JAZZGLYPH: REPLACEMENT FOR MUSICGLYPH ================================
#(define-markup-command (jazzglyph layout props glyphname) (string?)
  "musicglyph replacemet for jazz (i. e. non-Feta) characters"
    (let* ((charnum (cdr (assoc glyphname  jazz-map))))
    (interpret-markup layout props
      (markup (#:fontsize 5 #:override '(font-name . "LilyJAZZ") #:char 
charnum)))))


%***********************************************************************
%  JAZZ CLEFS
%***********************************************************************

#(define (jazz-clef grob)
  "jazz clef stencil"
  (let* ((glyphname (string-append (ly:grob-property grob 'glyph-name) "jazz")))
    (if (pair? (assoc glyphname jazz-map))
        (grob-interpret-markup grob (markup #:jazzglyph glyphname))
        (ly:clef::print grob))))


%***********************************************************************
% KEY SIGNATURES
%***********************************************************************

% #(define (jazz-keysig grob)
%   "stencil: jazz key signature (including cancellation)"
%   (let* ((altlist (ly:grob-property grob 'alteration-alist))
%     (c0pos (ly:grob-property grob 'c0-position))
%     (keysig-stencil '()))
%     (for-each (lambda (alt)
%          (let* ((alteration (if (grob::has-interface grob 
'key-cancellation-interface) 0 (cdr alt)))
%          (glyphname (assoc-get alteration jazz-alteration-glyph-name-alist 
""))
%          (padding (cond
%            ((< alteration 0) 0.25)  ; any kind of flat
%            ((= alteration 0) 0.05)    ;  natural
%            ((< alteration 1) 0.1)    ; sharp (less than double sharp)
%            (else -0.4)))                ; double sharp
%          (ypos (key-signature-interface::alteration-position (car alt) (cdr 
alt) c0pos))
%          (acc-stencil (grob-interpret-markup grob (markup #:raise (/ ypos 2) 
#:jazzglyph glyphname))))
%          (set! keysig-stencil (ly:stencil-combine-at-edge acc-stencil X RIGHT 
keysig-stencil padding)))) altlist)
%     keysig-stencil))

#(define (jazz-keysig grob)
  "stencil: jazz key signature (including cancellation)"
  (let* ((altlist (ly:grob-property grob 'alteration-alist))
    (c0pos (ly:grob-property grob 'c0-position))
    (keysig-stencil '()))
    (for-each (lambda (alt)
         (let* ((alteration (if (grob::has-interface grob 
'key-cancellation-interface) 0 (cdr alt)))
         (glyphname (assoc-get alteration jazz-alteration-glyph-name-alist ""))
         (padding (cond
           ((< alteration 0) 0.25)  ; any kind of flat
           ((= alteration 0) 0.05)  ;  natural
           ((< alteration 1) 0.1)   ; sharp (less than double sharp)
           (else -0.4)))            ; double sharp
         (ypos (key-signature-interface::alteration-positions alt c0pos grob))
         (acc-stencil (fold (lambda (y s)
                              (ly:stencil-add
                                (grob-interpret-markup grob
                                  (markup #:raise (/ y 2) #:jazzglyph 
glyphname))
                                s))
                            empty-stencil
                            ypos)))
         (set! keysig-stencil (ly:stencil-combine-at-edge acc-stencil X RIGHT 
keysig-stencil padding)))) altlist)
    keysig-stencil))


%***********************************************************************
% TIME SIGNATURE
%***********************************************************************

#(define (jazz-timesig grob)
  (let* ((style (ly:grob-property grob 'style))
         (fraction (ly:grob-property grob 'fraction))
         (glyphname (if (equal? style 'C)
                (cond
                   ((equal? fraction '(4 . 4)) "timesig.C44jazz")
                   ((equal? fraction '(2 . 2)) "timesig.C22jazz")
                   (else "")) "")))
    (if (equal? glyphname "")
        (ly:time-signature::print grob)
        (grob-interpret-markup grob (markup #:fontsize -5 #:jazzglyph 
glyphname)))))


%***********************************************************************
% NOTE HEADS
%***********************************************************************

#(define (jazz-notehead grob)
  "stencil: jazz noteheads"
  (let* ((log (ly:grob-property grob 'duration-log)))
     (set! (ly:grob-property grob 'stem-attachment) '(1.0 . 0.35))
     (grob-interpret-markup grob
      (cond
         ((<= log 0) (markup #:jazzglyph "noteheads.s0jazz"))
         ((<= log 1) (markup #:jazzglyph "noteheads.s1jazz"))
         (else  (markup #:jazzglyph "noteheads.s2jazz"))))))

%***********************************************************************
% FLAGS
%***********************************************************************

#(define (jazz-flag grob)
  "stencil: jazz flags"
   (let* ((stem-grob (ly:grob-parent grob X))
          (log (ly:grob-property stem-grob 'duration-log))
          (dir (ly:grob-property stem-grob 'direction))
          (stem-width (* (ly:staff-symbol-line-thickness grob) 
(ly:grob-property stem-grob 'thickness)))
          (glyphname (string-append "flags." (if (> dir 0) "u" "d") 
(number->string log) "jazz"))
          (flag-stencil (grob-interpret-markup grob (markup #:jazzglyph 
glyphname)))
          (flag-pos (cons (* stem-width -1) 0))
          (stroke-style (ly:grob-property grob 'stroke-style))
          (stroke-stencil (if (equal? stroke-style "grace")
                              (if (equal? dir UP)
                                  (make-line-stencil 0.15 -0.5 -1.6 0.75 -0.6)
                                  (make-line-stencil 0.15 -0.4 1.6 0.85 0.6))
     ;                             (grob-interpret-markup grob (markup 
#:jazzglyph "flags.ugracejazz"))
     ;                             (grob-interpret-markup grob (markup 
#:jazzglyph "flags.dgracejazz")))
                              empty-stencil)))
          (ly:stencil-translate (ly:stencil-add flag-stencil stroke-stencil) 
flag-pos)))


%***********************************************************************
% DOTS (DURATION)
%***********************************************************************

#(define (jazz-dots grob)
  "stencil: jazz duration dots"
  (let* ((dot-count (ly:grob-property grob 'dot-count)))
     (grob-interpret-markup grob (markup
         (if (>= dot-count 1) (markup #:translate '(0.4 . 0) #:jazzglyph 
"dots.dot") (markup #:null))
         (if (>= dot-count 2) (markup #:translate '(0.25 . 0) #:jazzglyph 
"dots.dot") (markup #:null))
         (if (>= dot-count 3) (markup #:translate '(0.25 . 0) #:jazzglyph 
"dots.dot") (markup #:null))
         (if (>= dot-count 4) (markup #:translate '(0.25 . 0) #:jazzglyph 
"dots.dot") (markup #:null))
         (if (>= dot-count 5) (markup #:translate '(0.25 . 0) #:jazzglyph 
"dots.dot") (markup #:null))))))


%***********************************************************************
% ACCIDENTALS
%***********************************************************************

% ACCIDENTALS (MUSICAL CONTEXT) ========================================
#(define (jazz-accidental grob)
   "stencil: jazz accidentals in front of notes or used as suggestions"
  (let* ((alt (ly:grob-property grob 'alteration))
         (show (if (null? (ly:grob-property grob 'forced)) (if (null? 
(ly:grob-object grob 'tie)) #t #f ) #t )))
    (if (equal? show #t)
      (grob-interpret-markup grob (markup #:jazzglyph (assoc-get alt 
jazz-alteration-glyph-name-alist "")))
      (ly:accidental-interface::print grob))))

% CAUTIONARY ACCIDENTALS (MUSICAL CONTEXT) =============================
#(define (jazz-accidental-cautionary grob)
   "stencil: jazz cautionary accidentals in front of notes"
  (let* ((alt (ly:grob-property grob 'alteration)))
    (grob-interpret-markup grob
      (case alt
         ((1) (markup #:concat (
                     #:translate '(0 . -0.05) #:jazzglyph 
"accidentals.leftparenjazz"
                     #:jazzglyph "accidentals.doublesharpjaz"
                     #:translate '(0 . 0.05) #:jazzglyph 
"accidentals.rightparenjaz" )))
         ((1/2) (markup #:concat (
                     #:translate '(0 . -0.1) #:jazzglyph 
"accidentals.leftparenjazz"
                     #:jazzglyph "accidentals.sharpjazz"
                     #:translate '(0 . 0.3) #:jazzglyph 
"accidentals.rightparenjaz" )))
         ((0) (markup #:concat (
                     #:translate '(0.1 . 0) #:rotate 5 #:jazzglyph 
"accidentals.leftparenjazz"
                     #:jazzglyph "accidentals.naturaljazz"
                     #:translate '(0.05 . 0.3) #:rotate 5 #:jazzglyph 
"accidentals.rightparenjaz" )))
         ((-1/2) (markup #:concat (
                     #:translate '(-0.15 . 0.3) #:jazzglyph 
"accidentals.leftparenjazz"
                     #:jazzglyph "accidentals.flatjazz"
                     #:translate '(0 . 0.2) #:jazzglyph 
"accidentals.rightparenjaz" )))   ;
         ((-1) (markup #:concat (
                     #:translate '(-0.15 . 0.5) #:jazzglyph 
"accidentals.leftparenjazz"
                     #:jazzglyph "accidentals.flatflatjazz"
                     #:translate '(-0.1 . 0.4) #:jazzglyph 
"accidentals.rightparenjaz" )))))))


%***********************************************************************
% RESTS
%***********************************************************************

#(define (jazz-rest grob)
  (let* ((duration (ly:grob-property grob 'duration-log))
         (glyphname (string-append "rests." (number->string duration) "jazz")))
      (grob-interpret-markup grob (markup #:jazzglyph glyphname))))


%***********************************************************************
% DYNAMICS
%***********************************************************************

  sfpp = #(make-dynamic-script  "sfpp" )
% re-defined because of spefilal f with horizontal bar for ligatures/grouping:
  ff = #(make-dynamic-script  "FF" )
  fff = #(make-dynamic-script  "FFF" )
  ffff = #(make-dynamic-script  "FFFF" )
  fffff = #(make-dynamic-script  "FFFFF" )

% to do: make reversible for \jazzOff
#(define-markup-command (dynamic layout props arg)
  (markup?)
  #:category font
  "Use jazz instead of feta for dynamic markup font."
  (interpret-markup layout props (markup #:fontsize 5 #:override '(font-name . 
"LilyJAZZ") arg)))



%***********************************************************************
% ACCENTS
%***********************************************************************

#(define (jazz-articulation grob)
  (let* ((dir (ly:grob-property grob 'direction))
           (var (ly:grob-property grob 'script-stencil))
           (glyphname (if (= dir DOWN) (car (cdr var)) (cdr (cdr var))))
           (jazzchar (assoc-get (string-append "scripts." glyphname "jazz") 
jazz-map 0 )))
     (if (> jazzchar 0)
         (grob-interpret-markup grob (markup #:jazzchar jazzchar))
         (ly:script-interface::print grob))))


fermataMarkup =
#(make-music 'MultiMeasureTextEvent
             'tweaks (list
                      ;; Set the 'text based on the 'direction
                      (cons 'text (lambda (grob)
                                    (if (eq? (ly:grob-property grob 'direction) 
DOWN)
                                        (markup #:concat (" " #:jazzglyph 
"scripts.dfermatajazz"))
                                        (markup #:concat (" " #:jazzglyph 
"scripts.ufermatajazz")))))
                      (cons 'outside-staff-priority 40)
                      (cons 'outside-staff-padding 0)))


makeUnpurePureContainer =
        #(ly:make-unpure-pure-container
       ly:grob::stencil-height
       (lambda (grob start end) (ly:grob::stencil-height grob)))


jazzOn = {
  \override Staff.Clef #'stencil = #jazz-clef
  \override Score.BarNumber #'stencil = ##f

  \override Staff.KeySignature #'stencil = #jazz-keysig
  \override Staff.KeyCancellation #'stencil = #jazz-keysig

  \override Staff.TimeSignature #'stencil = #jazz-timesig

  \override Staff.NoteHead #'stencil = #jazz-notehead
  \override Staff.NoteHead #'Y-extent = \makeUnpurePureContainer

  \override Staff.Stem #'thickness = #2
  \override Staff.Beam #'beam-thickness = #0.55
  \override Staff.Flag #'stencil = #jazz-flag
  \override Staff.Flag #'Y-extent = \makeUnpurePureContainer

  \override Staff.Dots #'stencil = #jazz-dots
  \override Staff.Dots #'X-extent = \makeUnpurePureContainer %% added mh

  \override Staff.Accidental #'stencil = #jazz-accidental
  \override Staff.Accidental #'Y-extent = \makeUnpurePureContainer

  \override Staff.AccidentalCautionary #'stencil = #jazz-accidental-cautionary
  \override Staff.AccidentalCautionary #'Y-extent = \makeUnpurePureContainer

  \override Staff.AccidentalSuggestion #'stencil = #jazz-accidental
  \override Staff.AccidentalSuggestion #'Y-extent = \makeUnpurePureContainer

  \override Staff.Script #'stencil = #jazz-articulation

  \override Staff.Rest #'stencil = #jazz-rest
  \override Staff.Slur #'thickness = #2.5
  \override Staff.Tie #'thickness = #2.5
  \override Staff.BarLine #'hair-thickness = #3
  \override Score.BarNumber #'font-name = #"LilyJAZZ Text"

  \override Staff.TimeSignature #'font-name = #"LilyJAZZ"
  \override Staff.TimeSignature #'font-size = #5

  \override Staff.DynamicText #'font-name = #"LilyJAZZ"
  \override Staff.DynamicText #'font-size = #6

  \override Score.RehearsalMark #'font-name = #"LilyJAZZ Text"
  \override Score.MetronomeMark #'font-name = #"LilyJAZZ Text"

  \override Staff.TextScript #'font-name = #"LilyJAZZ Text"
  \override Staff.TextScript #'font-size = #1

  \override Staff.InstrumentName #'font-name = #"LilyJAZZ Text"

  \override Staff.TupletNumber #'font-name = "LilyJAZZ Text"
  \override Staff.TupletBracket #'thickness = #1.5

  \override Score.VoltaBracket #'font-name = #"LilyJAZZ Text"
  \override Score.VoltaBracket #'font-size = #0
  \override Score.VoltaBracket #'thickness = #2
}

jazzOff = {
  \revert Staff.Clef #'stencil

  \revert Staff.KeySignature #'stencil
  \revert Staff.KeyCancellation #'stenci

  \revert Staff.TimeSignature #'stencil

  \revert Staff.NoteHead #'stencil
  \revert Staff.NoteHead #'Y-extent
  \revert Staff.Stem #'thickness
  \revert Staff.Beam #'beam-thickness
  \revert Staff.Flag #'stencil
  \revert Staff.Dots #'stencil
  \revert Staff.Dots #'X-extent
  \revert Staff.Accidental #'stencil
  \revert Staff.AccidentalCautionary #'stencil
  \revert Staff.AccidentalSuggestion #'stencil
  \revert Staff.Script #'stencil
  \revert Staff.Rest #'stencil
  \revert Staff.Slur #'thickness
  \revert Staff.Tie #'thickness
  \revert Staff.BarLine #'hair-thickness
  \revert Score.BarNumber #'font-name
  \revert Staff.TimeSignature #'font-name
  \revert Staff.TimeSignature #'font-size
  \revert Staff.DynamicText #'font-name
  \revert Staff.DynamicText #'font-size
  \revert Score.RehearsalMark #'font-name
  \revert Score.MetronomeMark #'font-name
  \revert Staff.TextScript #'font-name
  \revert Staff.TextScript #'font-size
  \revert Staff.InstrumentName #'font-name
  \revert Staff.TupletNumber #'font-name
  \revert Staff.TupletBracket #'thickness
  \revert Score.VoltaBracket #'font-name
  \revert Score.VoltaBracket #'font-size
  \revert Score.VoltaBracket #'thickness
}



_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to