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