+ line-y line-height output-scale mul sub /line-y exch def
+} bind def
+
+% FIXME: font definitions should come from LilyPond
+% built-in ps fonts are ugly
+/huge-bold-font {
+ /Times-Bold findfont 20.7 scalefont setfont
+} bind def
+
+/Large-bold-font {
+ /Times-Bold findfont 17.3 scalefont setfont
+} bind def
+
+/large-bold-font {
+ /Times-Bold findfont 14.4 scalefont setfont
+} bind def
+
+/large-font {
+ /Times-Roman findfont 14.4 scalefont setfont
+} bind def
+
+/large-smallcaps-font {
+ % urg
+ /Helvetica findfont 14.4 scalefont setfont
+} bind def
+
+/normal-font {
+ /Times-Roman findfont 12 scalefont setfont
+} bind def
+
+/footnote-font {
+ /Times-Roman findfont 10 scalefont setfont
+} bind def
+
+/get-text-dimensions % path .. width height
+{
+ dup true charpath pathbbox
+ newpath
+ line-x line-y moveto
+ exch 4 -1 roll
+ sub
+ 3 1 roll
+ exch sub
+} bind def
+
+/set-centered
+{
+ line-x line-y moveto
+ get-text-dimensions
+ neg line-y add /line-y exch def
+ neg line-width add 2 div 0 rmoveto
+ show
+} bind def
+
+/set-left
+{
+ line-x line-y moveto
+ get-text-dimensions
+ neg line-y add /line-y exch def
+ pop
+ show
+} bind def
+
+/set-right
+{
+ line-x line-y moveto
+ get-text-dimensions
+ neg line-y add /line-y exch def
+ neg line-width add 0 rmoveto
+ show
+} bind def
+
+/make-lilypond-title
+{
+ currentdict /lilyponddedication known {
+ normal-font lilyponddedication set-centered
+ line-y 10 sub /line-y exch def
+ } if
+ currentdict /lilypondtitle known {
+ huge-bold-font lilypondtitle set-centered
+ line-y 5 sub /line-y exch def
+ } if
+ currentdict /lilypondsubtitle known {
+ Large-bold-font lilypondsubtitle set-centered
+ line-y 5 sub /line-y exch def
+ } if
+ currentdict /lilypondsubsubtitle known {
+ large-bold-font lilypondsubsubtitle set-centered
+ } if
+ line-y /mini-page exch def
+ currentdict /lilypondcomposer known {
+ large-smallcaps-font lilypondcomposer set-right
+ line-y 2 sub /line-y exch def
+ } if
+ currentdict /lilypondopus known {
+ normal-font lilypondopus set-right
+ line-y 3 sub /line-y exch def
+ } if
+ currentdict /lilypondarranger known {
+ normal-font lilypondarranger set-right
+ line-y 3 sub /line-y exch def
+ } if
+ currentdict /lilypondpoet known {
+ mini-page /line-y exch def
+ normal-font lilypondpoet set-left
+ line-y 3 sub /line-y exch def
+ } if
+ currentdict /lilypondtexttranslator known {
+ normal-font lilypondtexttranslator set-left
+ line-y 3 sub /line-y exch def
+ } if
+ currentdict /lilypondinstrument known {
+ large-font lilypondinstrument set-centered
+ } if
+ currentdict /lilypondpiece known {
+ large-smallcaps-font lilypondpiece set-left
+ } if
+} bind def
+
+/end-lilypond-output
+{
+ /line-y top-margin def
+ footnote-font lilypondtagline set-left
+ showpage