]> git.donarmstrong.com Git - lilypond.git/blob - tex/fetdefs.tex
release: 0.1.34
[lilypond.git] / tex / fetdefs.tex
1 % fetdefs.tex
2 % encapsulating tex backend for auto-generated font-en-tja definitions
3
4 \def\fetsixteendefs{
5         \font\fontentja=feta16
6         \font\vetfont=feta-beams16
7         \font\fetanummer=feta-nummer8
8         \font\dynfont=feta-din10 scaled \magstep1
9 }
10 \def\fettwentydefs{
11         \font\fontentja=feta20
12         \font\vetfont=feta-beams20
13         \font\fetanummer=feta-nummer10
14         \font\dynfont=feta-din10 scaled \magstep2
15 }
16 \def\fetdef#1#2{\def#1{%
17         % what the fuck is this?
18         %\lower.3884\staffrulethickness
19         \hbox{\fetchar{#2}}}}
20
21 \def\fetchar#1{\fontentja\char#1}
22
23 %\input feta16
24 \input feta20
25
26 \def\beamslope#1#2{{\count0=#2\advance\count0 by#1
27         \advance\count0by128
28         {\vetfont\char\count0}}}
29
30 % stacked numbers; overrules def in lilyponddefs
31 % widest num should be .4 balkheight
32 % oeps: \meter 12/8;
33 \def\generalmeter#1#2{%
34         \vbox to 0pt{\vss%
35         \hbox to0.45\balkheight{\hfill\fetanummer #1\hfill}%
36         \nointerlineskip%
37         \hbox to0.45\balkheight{\hfill\fetanummer #2\hfill}%
38         \vss}}
39
40 \newcount\embedcount\embedcount=0
41 \newwrite\checkexists
42 \newwrite\embedfile
43 \def\inputifexists#1{%
44         \openin\checkexists #1
45         \ifeof\checkexists
46                  \closein\checkexists
47         \else
48                 \closein\checkexists
49                 \input #1
50         \fi
51 }
52 \def\embedcountid{feta-embed}
53 \inputifexists{\embedcountid.aux}
54 %
55 % let's not overwrite -- and be sure to create new
56 \def\storeembedcount{%
57         \immediate\openout\embedfile=\embedcountid.aux
58         \immediate\write\embedfile{\embedcount=\the\embedcount}
59         \immediate\closeout\embedfile
60 }
61
62
63
64 \def\turnOnExperimentalFeatures{
65
66 %
67 % WARNING: don't leave blank lines in the PS-code; they are
68 % transformed into \par 
69 %
70
71
72 \special{ps:
73 /draw_decresc
74         {
75                 /ht exch def
76                 /wd exch def
77 %
78                 0 ht moveto
79                 wd ht neg rlineto
80                 wd neg ht neg rlineto 
81                 stroke
82         }
83         def
84         /draw_cresc
85         {
86                 /ht exch def
87                 /wd exch def
88 %
89                 0 0 moveto
90                 wd ht rmoveto
91                 wd neg ht neg rlineto 
92                 wd ht neg rlineto
93                 stroke
94         }
95         def
96 }
97
98
99 % draw a slur in embedded postscript
100 \special{ps:
101 /xbow 1 3 div def
102 /ybow 1 4 div def
103 /thin 0.2 def
104 /thick thin 5 mul def
105 /draw_slur { 
106         % up or down?
107         /dir exch def
108 %       
109 %       for mo*tex shift
110 %       exch
111 %       1 copy /dx exch def
112 %       exch
113 %
114         % calc angle alpha
115         2 copy exch atan /alpha exch def
116         % calc len(gth)
117         2 exp exch 2 exp add sqrt /len exch def
118 %
119         % add and calc z2, z3
120         len xbow mul
121         len ybow mul dir mul
122         1 xbow sub len mul
123         len ybow mul dir mul
124 %       
125         % add z4, z1
126         len 0 
127         0 0
128 %
129         % add and calc z5..z8 
130         8 copy
131         thin dir mul sub
132         8 2 roll
133         thin dir mul sub
134         8 2 roll
135         thick dir mul sub
136         8 2 roll
137         thick dir mul sub
138 %
139         % reverse order, must be cycle
140         8 6 roll
141         6 2 roll
142         4 2 roll
143         8 6 roll
144 %       
145         % set z1..z4
146         16 8 roll
147 %
148         alpha rotate
149 %       silly mo*tex convention
150 %       dx 2 div -1 mul 0 translate
151         % draw z1..z4
152         moveto curveto
153         % draw z5..z8
154         lineto curveto
155         % cycle
156         0 0 lineto
157         fill
158 } def }
159 }
160
161 \def\embeddedtex#1{#1}
162 \def\embeddedps#1{
163         %
164         % This sets CTM so that you get to the currentpoint
165         % by executing a 0 0 moveto
166         \special{ps: @beginspecial @setspecial #1 @endspecial}       
167 }
168 \def\embeddedmf#1{
169         \edef\embedid{feta-sleur-\number\embedcount}
170         \immediate\openout\embedfile=\embedid.mf
171         \global\advance\embedcount by 1
172
173 % should write ``automatically generated.''
174 %        \immediate\write\embedfile{\def\
175 %       
176 %      }
177
178         \immediate\write\embedfile{#1}
179
180         \immediate\closeout\embedfile
181         \font\expandafter\embedid\expandafter=\embedid
182         \embedid\char0
183 }
184
185 \def\notex{\def\embeddedtex##1{}}
186 \def\nopostscript{\def\embeddedps##1{}}
187 \def\nometafont{\def\embeddedmf##1{}}
188
189 % dat heb je handig gedaan, lieverd!
190 \nometafont
191 %\nopostscript
192 %\notex
193
194 \def\EndLilyPondOutput{
195         \storeembedcount
196         \csname bye\endcsname
197 }
198
199