diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/beuron/beuronbuchst.mf')
-rw-r--r-- | Master/texmf-dist/fonts/source/public/beuron/beuronbuchst.mf | 320 |
1 files changed, 234 insertions, 86 deletions
diff --git a/Master/texmf-dist/fonts/source/public/beuron/beuronbuchst.mf b/Master/texmf-dist/fonts/source/public/beuron/beuronbuchst.mf index c1dbf97206b..6a47fa607c9 100644 --- a/Master/texmf-dist/fonts/source/public/beuron/beuronbuchst.mf +++ b/Master/texmf-dist/fonts/source/public/beuron/beuronbuchst.mf @@ -1,14 +1,14 @@ % beuronbuchst.mf % Die Buchstaben der Beuroner Kunst % The letters of Beuronese art -% Autor: Keno Wehr -% 4. September 2016 +% Autor: K. Wehr +% 1. November 2017 % U.I.O.G.D. mode_setup; -Schriftgr# := 1cc#; % nominelle Schriftgröße -hoe# := 2/3Schriftgr#; % Höhe der Buchstaben +Schriftgr# := 1cc#; % nominelle Schriftgröße +hoe# := 2/3Schriftgr#; % Höhe der Buchstaben font_size Schriftgr#; font_x_height 0.6hoe#; @@ -18,62 +18,62 @@ font_normal_stretch f*1/3hoe#; font_normal_shrink f*1/6hoe#; -S# := 0.11hoe#; % Stiftbreite +S# := 0.11hoe#; % Stiftbreite define_pixels(S); -klAb# := f*1.0S#; % kleinstmöglicher Buchstabenabstand -grAb# := f*2.6S#; % größtmöglicher Buchstabenabstand -Ue:=0.2*S; % Überstand der Rundungen nach oben und unten +klAb# := f*1.0S#; % kleinstmöglicher Buchstabenabstand +grAb# := f*2.6S#; % größtmöglicher Buchstabenabstand +Ue:=0.2*S; % Überstand der Rundungen nach oben und unten % Korrektur des solve-Makros, die Verschachtelungen erlaubt: vardef save_solve@#(expr true_x,false_x) = - save tx_, fx_, x_; - tx_ := true_x; - fx_ := false_x; - forever: - x_ := 0.5[tx_,fx_]; - exitif abs(tx_-fx_) <= tolerance; - if @#(x_): tx_ else: fx_ fi := x_; - endfor - x_ + save tx_, fx_, x_; + tx_ := true_x; + fx_ := false_x; + forever: + x_ := 0.5[tx_,fx_]; + exitif abs(tx_-fx_) <= tolerance; + if @#(x_): tx_ else: fx_ fi := x_; + endfor + x_ enddef; % Bestimme z.i so, dass die Gerade durch z.i und z.j zur Parallelen durch z.k % den Abstand S hat: def bestimme_Parallelenpunkt_A(suffix i, j, k) = - % Überprüfe, ob der Abstand der Geraden durch z.i und z.j zur Parallelen - % durch z.k größer ist als S, wobei die unbekannte Koordinate von z.i durch - % das Argument ersetzt wird: - vardef Abstand_groesser_S(expr Wert) = - pair Lotfuss; - if (unknown x.i): - Lotfuss = whatever[z.j,(Wert,y.i)]; - Lotfuss-z.k = whatever*((Wert,y.i)-z.j) rotated 90; - else: - Lotfuss = whatever[z.j,(x.i,Wert)]; - Lotfuss-z.k = whatever*((x.i,Wert)-z.j) rotated 90; - fi - length(Lotfuss-z.k) > S - enddef; - - if (unknown x.i): - x.i = save_solve Abstand_groesser_S(x.j,x.k); - else: - y.i = save_solve Abstand_groesser_S(y.j,y.k); - fi + % Überprüfe, ob der Abstand der Geraden durch z.i und z.j zur Parallelen + % durch z.k größer ist als S, wobei die unbekannte Koordinate von z.i durch + % das Argument ersetzt wird: + vardef Abstand_groesser_S(expr Wert) = + pair Lotfuss; + if (unknown x.i): + Lotfuss = whatever[z.j,(Wert,y.i)]; + Lotfuss-z.k = whatever*((Wert,y.i)-z.j) rotated 90; + else: + Lotfuss = whatever[z.j,(x.i,Wert)]; + Lotfuss-z.k = whatever*((x.i,Wert)-z.j) rotated 90; + fi + length(Lotfuss-z.k) > S + enddef; + + if (unknown x.i): + x.i = save_solve Abstand_groesser_S(x.j,x.k); + else: + y.i = save_solve Abstand_groesser_S(y.j,y.k); + fi enddef; % Bestimme den Punkt z.i links von der Geraden durch z.j und z.k so, % dass er von dieser Geraden den Abstand Ab hat: def bestimme_Parallelenpunkt_B(suffix i, j, k)(expr Ab) = - pair Lotfuss; - Lotfuss = z.j+Ab*unitvector(z.k-z.j) rotated 90; - z.i-Lotfuss = whatever*(z.k-z.j); + pair Lotfuss; + Lotfuss = z.j+Ab*unitvector(z.k-z.j) rotated 90; + z.i-Lotfuss = whatever*(z.k-z.j); enddef; -Avn# := klAb#; % Vor- und Nachbreite des A -Ab# := f*1.15hoe#+2Avn#; % Dickte des A +Avn# := klAb#; % Vor- und Nachbreite des A +Ab# := f*1.15hoe#+2Avn#; % Dickte des A define_pixels(Avn); beginchar("A",Ab#,hoe#,0); "Buchstabe A"; @@ -86,8 +86,8 @@ y6 = y7 = h; bestimme_Parallelenpunkt_A(6,1,5); z5-z2 = whatever*(z6-z1); fill z1--z2--z5--z3--z4--z7--z6--cycle; -picture ABild; -ABild := currentpicture; +picture ABild_teilweise, ABild; +ABild_teilweise := currentpicture; z8 = 0.45[z2,z5]; x9 = w/2; z10 = (w-x8,y8); @@ -103,16 +103,17 @@ z9l-z8l = whatever*(z9-z8); z10l-z9l = whatever*(z10-z9); penstroke z8e--z9e--z10e; penlabels(range 1 thru 10); +ABild := currentpicture; endchar; -Pvor# := grAb#; % Vorbreite des P -Pnach# := 0.4[klAb#,grAb#]; % Nachbreite des P -Pb# := f*0.7hoe#+Pvor#+Pnach#; % Dickte des P +Pvor# := grAb#; % Vorbreite des P +Pnach# := 0.4[klAb#,grAb#]; % Nachbreite des P +Pb# := f*0.7hoe#+Pvor#+Pnach#; % Dickte des P define_pixels(Pvor,Pnach); beginchar("P",Pb#,hoe#,0); "Buchstabe P"; -PBreite := w-Pvor-Pnach; % wird für das B und das R benötigt +PBreite := w-Pvor-Pnach; % wird für das B und das R benötigt pickup pensquare scaled S; lft bot z1 = (Pvor,0); lft top z2 = (Pvor,h); @@ -127,12 +128,14 @@ y6 = y2; pickup pencircle scaled S; draw z3---z5..z4..z6---z2; labels(range 1 thru 6); +picture PBild; +PBild := currentpicture; endchar; -Bvor# := grAb#; % Vorbreite des B -Bnach# := 0.5[klAb#,grAb#]; % Nachbreite des B -Bb# := f*0.85hoe#+Bvor#+Bnach#; % Dickte des B +Bvor# := grAb#; % Vorbreite des B +Bnach# := 0.5[klAb#,grAb#]; % Nachbreite des B +Bb# := f*0.85hoe#+Bvor#+Bnach#; % Dickte des B define_pixels(Bvor,Bnach); beginchar("B",Bb#,hoe#,0); "Buchstabe B"; @@ -151,16 +154,18 @@ y7 = 0.5[y1,y3]; x8 = x9 = 0.5[x1,x7]; y8 = y1; draw z3--z9; -draw z3--z5; % falls bei großer Stauchung z5 links von z3 liegt +draw z3--z5; % falls bei großer Stauchung z5 links von z3 liegt pickup pencircle scaled S; draw z1---z8..z7..{left}z9; draw z2---z6..z4..{left}z5; labels(range 1 thru 9); +picture BBild; +BBild := currentpicture; endchar; -Ovn# := 0.3[klAb#,grAb#]; % Vor- und Nachbreite des O -Ob# := f*1.1hoe#+2Ovn#; % Dickte des O +Ovn# := 0.3[klAb#,grAb#]; % Vor- und Nachbreite des O +Ob# := f*1.1hoe#+2Ovn#; % Dickte des O define_pixels(Ovn); beginchar("O",Ob#,hoe#,0); "Buchstabe O"; @@ -171,26 +176,28 @@ x2 = x4 = w/2; y1 = y3 = h/2; top y2 = h+Ue; bot y4 = -Ue; -OBreite := w-2Ovn; % wird für das Q benötigt -pair OUnten; % wird für das G benötigt +OBreite := w-2Ovn; % wird für das Q benötigt +pair OUnten; % wird für das G benötigt OUnten := z4; def OSpannung = ..tension 0.93.. enddef; -path OPfad; % wird für das C und das G benötigt +path OPfad; % wird für das C und das G benötigt OPfad := z1 OSpannung z2 OSpannung z3 OSpannung z4 OSpannung cycle; draw OPfad; -picture OBild; % wird für das Q benötigt -OBild := currentpicture; labels(1,2,3,4); +picture OBild; % wird auch für das Q benötigt +OBild := currentpicture; endchar; -Cvor# := Ovn#; % Vorbreite des C -Cnach# := 0.55[klAb#,grAb#]; % Nachbreite des C -Cb# := f*0.95hoe#+Cvor#+Cnach#; % Dickte des C +Cvor# := Ovn#; % Vorbreite des C +Cnach# := 0.55[klAb#,grAb#]; % Nachbreite des C +Cb# := f*0.95hoe#+Cvor#+Cnach#; % Dickte des C beginchar("C",Cb#,hoe#,0); "Buchstabe C"; pickup pencircle scaled S; cutdraw subpath(0.5,3.5) of OPfad; +picture CBild; +CBild := currentpicture; endchar; @@ -213,6 +220,8 @@ y5 = y2; pickup pencircle scaled S; draw z1---z4..z3..z5---z2; labels(range 1 thru 5); +picture DBild; +DBild := currentpicture; endchar; @@ -223,7 +232,7 @@ define_pixels(Evor,Enach); beginchar("E",Eb#,hoe#,0); "Buchstabe E"; interim autorounding := 0; -EBreite := w-Evor-Enach; % Breite der Glyphe +EBreite := w-Evor-Enach; % Breite der Glyphe pickup pencircle scaled S; lft x5 = Evor; lft x3 = Evor+1/8EBreite; @@ -241,6 +250,8 @@ Eunten = z4{left}..z5{down}..z6{right}..{up}z7; cutdraw subpath(0.4,3.0) of Eoben; cutdraw subpath(0,2.7) of Eunten; labels(range 1 thru 7); +picture EBild; +EBild := currentpicture; endchar; @@ -261,6 +272,8 @@ y5 = y4; draw z1--z2--z3; draw z4--z5; labels(range 1 thru 5); +picture FBild; +FBild := currentpicture; endchar; @@ -270,7 +283,7 @@ Gb# := f*1.05*hoe#+Gvor#+Gnach#; define_pixels(Gvor, Gnach); beginchar("G",Gb#,hoe#,0); "Buchstabe G"; -Galpha:=65; % Anfangswinkel in Punkt 1 +Galpha:=65; % Anfangswinkel in Punkt 1 pickup pencircle scaled S; z4 = OUnten; rt x3 = w-Gnach; @@ -281,6 +294,8 @@ x1 = 0.5[Gvor+S/2,x2]; y1 = 0.25[y2,y4]; cutdraw subpath(0.5,3) of OPfad & z4{right}..z3{up}..z2{left}..{-dir(Galpha)}z1; labels(range 1 thru 4); +picture GBild; +GBild := currentpicture; endchar; @@ -300,6 +315,8 @@ draw z1--z2; draw z3--z4; draw z5--z6; labels(range 1 thru 6); +picture HBild; +HBild := currentpicture; endchar; @@ -311,6 +328,8 @@ bot z1 = (0.5w,0); top z2 = (0.5w,h); draw z1--z2; labels(1,2); +picture IBild; +IBild := currentpicture; endchar; @@ -330,6 +349,8 @@ rt x3 = rt x4 = w-Jnach; y4 = h; cutdraw z1{down}..z2{right}..z3---z4; labels(1,2,3,4); +picture JBild; +JBild := currentpicture; endchar; @@ -355,6 +376,8 @@ z8-z4 = whatever*(z9-z5); draw z1--z2; fill z4--z8--z9--z5--z7--z6--z3--cycle; labels(range 1 thru 9); +picture KBild; +KBild := currentpicture; endchar; @@ -366,6 +389,8 @@ rt bot z3 = (w-Fnach,0); draw z1--z2; draw z1--z3; labels(1,2,3); +picture LBild; +LBild := currentpicture; endchar; @@ -391,6 +416,8 @@ draw z1--z2; draw z3--z4; fill z7--z5--z9--z10--z6--z8--cycle; labels(range 1 thru 10); +picture MBild; +MBild := currentpicture; endchar; @@ -414,6 +441,8 @@ draw z1--z2; draw z3--z4; fill z5--z6--z7--z8..cycle; labels(range 1 thru 8); +picture NBild; +NBild := currentpicture; endchar; @@ -432,6 +461,8 @@ x4-x2 = x3-x1; bestimme_Parallelenpunkt_B(2,1,3)(S); fill z1--z2--z4--z3--cycle; labels(1,2,3,4); +picture QBild; +QBild := currentpicture; endchar; @@ -461,6 +492,8 @@ draw z2---z6..z4{down}..{left}z5; interim autorounding := 0; cutdraw z3{right}..z7---z8; labels(range 1 thru 8); +picture RBild; +RBild := currentpicture; endchar; @@ -486,6 +519,8 @@ path SPfad; SPfad = z1{up}..z2{left}..z3{down}..z4..z5{down}..z6{left}..{up}z7; cutdraw subpath (0.3,5.75) of SPfad; labels(range 1 thru 7); +picture SBild; +SBild := currentpicture; endchar; @@ -498,7 +533,7 @@ pickup pensquare scaled S; bot z1 = (w/2,0); top z2 = (w/2,h); draw z1--z2; -Talpha = 30; % Neigungswinkel der Querstrichenden +Talpha = 30; % Neigungswinkel der Querstrichenden penpos3(whatever,-90-Talpha); penpos4(whatever,-90+Talpha); x3r = w-x4r = Tvn; @@ -506,11 +541,13 @@ y3l = y4l = h; y3l-y3r = y4l-y4r = S; penstroke z3e--z4e; penlabels(1,2,3,4); +picture TBild; +TBild := currentpicture; endchar; beginchar("U",Ab#,hoe#,0); "Buchstabe U"; -currentpicture := ABild reflectedabout ((0,h/2),(w,h/2)); +currentpicture := ABild_teilweise reflectedabout ((0,h/2),(w,h/2)); picture VBild; VBild := currentpicture; endchar; @@ -538,15 +575,15 @@ x10 = w-x13; x11 = w-x12; y10 = y11 = y12 = y13 = 0; vardef linker_Winkel_groesser(expr xWert) = - x8' := xWert; - y8' := y8; - x5' := whatever; - y5' := y5; - x10' := whatever; - y10' := y10; - bestimme_Parallelenpunkt_A(10',1,8'); - bestimme_Parallelenpunkt_A(5',8',7); - 180-angle(z1-z10') > angle(z5'-z8') + x8' := xWert; + y8' := y8; + x5' := whatever; + y5' := y5; + x10' := whatever; + y10' := y10; + bestimme_Parallelenpunkt_A(10',1,8'); + bestimme_Parallelenpunkt_A(5',8',7); + 180-angle(z1-z10') > angle(z5'-z8') enddef; x8 = save_solve linker_Winkel_groesser(x1+S,x7-S); bestimme_Parallelenpunkt_A(10,1,8); @@ -555,6 +592,8 @@ z2-z8 = whatever*(z1-z10); z11-z7 = whatever*(z5-z8); fill z1--z2--z8--z5--z6--z9--z3--z4--z13--z12--z7--z11--z10--cycle; labels(range 1 thru 13); +picture WBild; +WBild := currentpicture; endchar; @@ -571,9 +610,11 @@ x2 = x6 = w-x3 = w-x7; bestimme_Parallelenpunkt_A(7,1,8); fill z1--z2--z8--z7--cycle; fill z3--z4--z6--z5--cycle; -z9 = whatever[z4,z6] = whatever[z1,z7]; % Hilfspunkt für das Y +z9 = whatever[z4,z6] = whatever[z1,z7]; % Hilfspunkt für das Y Xmh = y9; labels(range 1 thru 9); +picture XBild; +XBild := currentpicture; endchar; @@ -595,6 +636,8 @@ top y8 = y5; fill z1--z6--z4--z3--z5--z2--cycle; draw z7--z8; labels(range 1 thru 8); +picture YBild; +YBild := currentpicture; endchar; @@ -618,10 +661,12 @@ x8-x7 = x6-x5; bestimme_Parallelenpunkt_A(7,5,8); fill z5--z6--z8--z7--cycle; labels(range 1 thru 8); +picture ZBild; +ZBild := currentpicture; endchar; -Tzb# := f*1.0hoe#; % Dickte des Trennzeichens (Mittenpunkt) +Tzb# := f*1.0hoe#; % Dickte des Trennzeichens (Mittenpunkt) beginchar("/",Tzb#,hoe#,0); "Worttrennung"; pickup pencircle scaled 1.5S; @@ -639,9 +684,9 @@ drawdot z2; endchar; -Krvn# := 1.5grAb#; % Vor- und Nachbreite des Kreuzzeichens (+) -Krhoe# := 0.65hoe#; % Höhe und Breite des Kreuzzeichens -Krb# := Krhoe#+2Krvn#; % Dickte des Kreuzzeichens +Krvn# := 1.5grAb#; % Vor- und Nachbreite des Kreuzzeichens (+) +Krhoe# := 0.65hoe#; % Höhe und Breite des Kreuzzeichens +Krb# := Krhoe#+2Krvn#; % Dickte des Kreuzzeichens define_pixels(Krhoe); beginchar("+",Krb#,hoe#,0); "Kreuz"; @@ -657,8 +702,8 @@ labels(1,2,3,4); endchar; -Bsvn# := 0.4[klAb#,grAb#]; % Vor- und Nachbreite des Bindestrichs -Bsb# := f*0.5hoe#+2Bsvn#; % Dickte des Bindestrichs +Bsvn# := 0.4[klAb#,grAb#]; % Vor- und Nachbreite des Bindestrichs +Bsb# := f*0.5hoe#+2Bsvn#; % Dickte des Bindestrichs define_pixels(Bsvn); beginchar("-",Bsb#,hoe#,0); "Bindestrich"; @@ -678,12 +723,11 @@ endchar; % Griechisches Omega -Omegavn# := Ovn#; % Vor- und Nachbreite des Omega -Omegab# := f*1.1hoe#+2Omegavn#; % Dickte des Omega +Omegavn# := Ovn#; % Vor- und Nachbreite des Omega +Omegab# := f*1.1hoe#+2Omegavn#; % Dickte des Omega define_pixels(Omegavn); -beginchar(10,Omegab#,hoe#,0); "Griechischer Buchstabe Omega"; -%interim autorounding := 0; +beginchar(141,Omegab#,hoe#,0); "Griechischer Buchstabe Omega"; pickup pensquare scaled S; lft x1 = w-rt x9 = Omegavn+S/3; bot y1 = 0; @@ -710,6 +754,110 @@ cutoff(z7h,180); labels(range 1 thru 9,3h,7h); endchar; +beginchar("a",Ab#,hoe#,0); "Buchstabe a"; +currentpicture := ABild; +endchar; + +beginchar("b",Bb#,hoe#,0); "Buchstabe b"; +currentpicture := BBild; +endchar; + +beginchar("c",Cb#,hoe#,0); "Buchstabe c"; +currentpicture := CBild; +endchar; + +beginchar("d",Db#,hoe#,0); "Buchstabe d"; +currentpicture := DBild; +endchar; + +beginchar("e",Eb#,hoe#,0); "Buchstabe e"; +currentpicture := EBild; +endchar; + +beginchar("f",Fb#,hoe#,0); "Buchstabe f"; +currentpicture := FBild; +endchar; + +beginchar("g",Gb#,hoe#,0); "Buchstabe g"; +currentpicture := GBild; +endchar; + +beginchar("h",Hb#,hoe#,0); "Buchstabe h"; +currentpicture := HBild; +endchar; + +beginchar("i",Ib#,hoe#,0); "Buchstabe i"; +currentpicture := IBild; +endchar; + +beginchar("j",Jb#,hoe#,0); "Buchstabe j"; +currentpicture := JBild; +endchar; + +beginchar("k",Kb#,hoe#,0); "Buchstabe k"; +currentpicture := KBild; +endchar; + +beginchar("l",Fb#,hoe#,0); "Buchstabe l"; +currentpicture := LBild; +endchar; + +beginchar("m",Mb#,hoe#,0); "Buchstabe m"; +currentpicture := MBild; +endchar; + +beginchar("n",Nb#,hoe#,0); "Buchstabe n"; +currentpicture := NBild; +endchar; + +beginchar("o",Ob#,hoe#,0); "Buchstabe o"; +currentpicture := OBild; +endchar; + +beginchar("p",Pb#,hoe#,0); "Buchstabe p"; +currentpicture := PBild; +endchar; + +beginchar("q",Qb#,hoe#,0); "Buchstabe q"; +currentpicture := QBild; +endchar; + +beginchar("r",Rb#,hoe#,0); "Buchstabe r"; +currentpicture := RBild; +endchar; + +beginchar("s",Sb#,hoe#,0); "Buchstabe s"; +currentpicture := SBild; +endchar; + +beginchar("t",Tb#,hoe#,0); "Buchstabe t"; +currentpicture := TBild; +endchar; + +beginchar("u",Ab#,hoe#,0); "Buchstabe u"; +currentpicture := VBild; +endchar; + +beginchar("v",Ab#,hoe#,0); "Buchstabe v"; +currentpicture := VBild; +endchar; + +beginchar("w",Wb#,hoe#,0); "Buchstabe w"; +currentpicture := WBild; +endchar; + +beginchar("x",Xb#,hoe#,0); "Buchstabe x"; +currentpicture := XBild; +endchar; + +beginchar("y",Yb#,hoe#,0); "Buchstabe y"; +currentpicture := YBild; +endchar; + +beginchar("z",Zb#,hoe#,0); "Buchstabe z"; +currentpicture := ZBild; +endchar; + input beuronkern; end |