Thanks, Pierre, that is quite good already, but there is an issue with octavation spanning only one note. See this:
\version "2.19.13"
myOttavaUp = {
\override Staff.OttavaBracket.stencil = #ly:line-spanner::print
\override Staff.OttavaBracket.bound-details =
#`((left . ((Y . 0)
(stencil-align-dir-y . ,UP)))
(right . ((Y . 0)
(text . ,(make-draw-dashed-line-markup (cons 0 -1.2))))))
\override Staff.OttavaBracket.left-bound-info =
#ly:line-spanner::calc-left-bound-info-and-text
\override Staff.OttavaBracket.right-bound-info =
#ly:line-spanner::calc-right-bound-info
\ottava #1
}
myOttavaDown = {
\override Staff.OttavaBracket.stencil = #ly:line-spanner::print
\override Staff.OttavaBracket.bound-details =
#`((left . ((Y . 0)
(stencil-align-dir-y . ,DOWN)))
(right . ((Y . 0)
(text . ,(make-draw-dashed-line-markup (cons 0 1.2))))))
\override Staff.OttavaBracket.left-bound-info =
#ly:line-spanner::calc-left-bound-info-and-text
\override Staff.OttavaBracket.right-bound-info =
#ly:line-spanner::calc-right-bound-info
\ottava #-1
}
\relative c'' {
c1
\ottava #1
c c
\ottava #-1
c c
\ottava #0
c
\ottava #1
c
\ottava #-1
c
\break
\ottava #0
c
\myOttavaUp
c
c
\myOttavaDown
c
c
\ottava #0
c
\myOttavaUp
c
\myOttavaDown
c
}