-%!PS-Adobe-1.0: lilyponddefs
+%!PS-Adobe-2.0: lilyponddefs.ps
+% TODO:
+% * junk all magic, start-line/stop-line just: placebox @ x.y
%
% Functions for direct PostScript output
-% hmm
% /setgray { 1 add } bind def
-/staff-line-thickness lilypondpaperlinethickness def
-/staff-height lilypondpaperstaffheight def
-/line-width lilypondpaperlinewidth def
+% To let gs load fonts from builddir, do:
+% export GS_LIB=$(pwd)/mf/out:/usr/share/texmf/fonts/type1/bluesky/cm
-% FIXME: why isn't this set (by default) by lily?
-% /text-height lilypondpapertextheight def
-/lily-output-units 2.83464 def %% milimeter
-% /lily-output-units 0.996264 def %% true points.
-
-/output-scale
-lilypondpaperoutputscale lily-output-units mul
-def
-
-/set-ps-scale-to-lily-scale
-{
-output-scale output-scale scale
+/set-ps-scale-to-lily-scale {
+ lily-output-units output-scale mul
+ lily-output-units output-scale mul scale
} bind def
-/paper-size { lilypondpaperpapersize } bind def
-
-% FIXME
-% urg, read from paper block
-% fixed base line skip value, for single line staves
-/base-line-skip lilypondpaperlineheight def
/init-paper {
gsave
- .1 setlinewidth
- clippath pathbbox newpath
- /vsize exch def
- /hsize exch def pop pop pop
-
- %FIXME:
- %vsize text-height sub 2 div /top-margin exch def
- 144 2 div /top-margin exch def
+ clippath pathbbox newpath
+ /vsize exch def
+ /hsize exch def pop pop pop
+ % FIXME
+ /top-margin 2 def
hsize line-width sub 2 div /left-margin exch def
grestore
} bind def
-/place-box
-{
+
+/place-box {
/object exch def
gsave
- %exch translate
+ % exch translate
translate
0 0 moveto
object
grestore
} bind def
-/start-system % height
-{
- dup base-line-skip gt {
- /line-height exch def
- }
- {
- pop /line-height base-line-skip def
- } ifelse
- line-y top-margin sub base-line-skip lt {
- showpage
- /line-y vsize top-margin sub def
- } if
- gsave
- line-x line-y translate
-} bind def
+%% http://bibliofile.mc.duke.edu/gww/fonts/postscript-utilities/encoding-vectors.html
-/stop-system
-{
- /the-line exch def
- the-line
- stroke
- grestore
- line-y line-height output-scale mul sub /line-y exch def
-} bind def
+%/FONTLENGTH 256 bind def
-% FIXME: font definitions should come from LilyPond
-% built-in ps fonts are ugly
-/huge-bold-font {
- /Palatino-Bold findfont 20.7 scalefont setfont
-} bind def
-/Large-bold-font {
- /Palatino-Bold findfont 17.3 scalefont setfont
-} bind def
+/reencode-dict 5 dict def
-/large-bold-font {
- /Palatino-Bold findfont 14.4 scalefont setfont
-} bind def
-/large-font {
- /Palatino-Roman findfont 14.4 scalefont setfont
+%<font> <encoding> <name> reencode-font
+/reencode-font {
+ reencode-dict begin
+ /name exch def
+ /encoding exch def
+ /base-font exch def
+ % note: Needs ps level 2
+ /font base-font maxlength dict def
+ base-font {
+ exch dup dup /FID ne exch /Encoding ne and
+ { exch font 3 1 roll put }
+ { pop pop } ifelse
+ } forall
+ font /FontName name put
+ font /Encoding encoding put
+ name font definefont pop
+ end
} bind def
-/large-smallcaps-font {
- % urg
- /Bookman-Light findfont 14.4 scalefont setfont
-} bind def
-/normal-font {
- /Palatino-Roman findfont 12 scalefont setfont
+% start-system
+/start-system {
+ gsave
} bind def
-/footnote-font {
- /Palatino-Roman findfont 10 scalefont setfont
+/start-page {
+ gsave
+ 0
+ vsize translate
} 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
+/stop-system {
+ /the-line exch def
+ the-line stroke grestore
} 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
+/end-lilypond-output {
+% showpage
} 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
+/init-lilypond-parameters {
+ staff-line-thickness setlinewidth
+ staff-height init-paper
} bind def
-/turnOnExperimentalFeatures { } bind def
-
-staff-line-thickness setlinewidth
-
-% set postscript paper size
-paper-size
-
-% initialise paper dimensions
-staff-height init-paper
-
-/line-x left-margin output-scale div def
-/line-y vsize top-margin sub def
-
-make-lilypond-title
-% see if we're there...
-% 10 setlinewidth 0 0 moveto 400 800 lineto stroke
+% end lilyponddefs.ps