Là, on n'est pas loin de la solution :
%%%%%
#(define-markup-command (arcText layout props radius txt)
(number? string?)
(let* ((font-size 8)
(pi (atan 0 -1))
(txt-len (* (/ font-size 4)
(cdr (ly:stencil-extent
(interpret-markup layout props txt) X))))
(circle-len (* pi radius 2))
(angle-rad (/ txt-len radius))
(height (* radius (- 1 (cos (/ angle-rad 2)))))
(width
(abs (* 2 radius (sin (/ angle-rad 2))))))
(interpret-markup layout props
(markup ;#:box
#:with-dimensions
(cons (* width -.5) (* width .5))
(cons (* height -.5) (* height .5))
#:raise (- radius) ; non!
#:postscript
(format #f "
/r ~a def
/ch 1 string def
/Times findfont
~a scalefont
setfont
/text (~a) def
/depar text stringwidth pop 90 mul ~a div
r div def
depar rotate
text {
ch 0 3 2 roll put
/l ch stringwidth pop def
/dec l r atan 2 div neg def
0 0 moveto dec rotate l neg 2 div r rmoveto
ch show dec rotate
} forall
" radius font-size txt pi)))))
\header {
title = \markup \arcText #20 "petit texte"
%title = \markup \arcText #40 "long long long long long texte"
% title = \markup \arcText #10 "long long long long long texte"
}
\relative c'' {
c1
}
%%%%%%%5