summaryrefslogtreecommitdiff
path: root/fonts/gothic/yfrak
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/gothic/yfrak
Initial commit
Diffstat (limited to 'fonts/gothic/yfrak')
-rw-r--r--fonts/gothic/yfrak/yfrabase.mf73
-rw-r--r--fonts/gothic/yfrak/yfrak.mf137
-rw-r--r--fonts/gothic/yfrak/yfrak.tfmbin0 -> 1416 bytes
-rw-r--r--fonts/gothic/yfrak/yfraklow.mf593
-rw-r--r--fonts/gothic/yfrak/yfrakmis.mf574
-rw-r--r--fonts/gothic/yfrak/yfraknum.mf194
-rw-r--r--fonts/gothic/yfrak/yfrakoth.mf528
-rw-r--r--fonts/gothic/yfrak/yfrakupp.mf1342
-rw-r--r--fonts/gothic/yfrak/ysmfrak.mf137
-rw-r--r--fonts/gothic/yfrak/ysmfrak.tfmbin0 -> 1416 bytes
10 files changed, 3578 insertions, 0 deletions
diff --git a/fonts/gothic/yfrak/yfrabase.mf b/fonts/gothic/yfrak/yfrabase.mf
new file mode 100644
index 0000000000..d7a84eebc2
--- /dev/null
+++ b/fonts/gothic/yfrak/yfrabase.mf
@@ -0,0 +1,73 @@
+def n_foot(suffix $) =
+w':=7.806u; penpos$.1(hair,90); penpos$.2(hair,0);
+penpos$.3(hair,-90);
+y$.1=y$.3=0.5foot; y$.2=-apex_o;
+x$.1=x$l-1/20w'; x$.3=x$r+1/20w';
+x$.2=x$;
+filldraw z$.2r{dir75}..z$.3r{dir15}--
+z$.3l{dir165}..z$r{up}--z$l{down}..
+z$.1r{dir195}--z$.1l{dir-15}..z$.2l{dir-65}
+--z$.2r & cycle;
+enddef;
+
+def e_umlaut(suffix $) =
+penpos$.1(2u,45); z$.1=z$;
+pickup pensquare yscaled 0.5hair xscaled 0.3[hair,stem] rotated 30;
+z$.2=z$.1r; z$.3=z$.1l; rt x$.4=rt x$.2; top y$.4=y$;
+draw z$.3--z$.2..z$.3..z$.4;
+enddef;
+
+def pointpoint =
+penpos1(0.23570*(x_height+2apex_o),45);
+penpos2(0.23570*(x_height+2apex_o),45);
+penpos3(0.23570*(x_height+2apex_o),45);
+penpos4(0.23570*(x_height+2apex_o),45);
+penpos5(0.23570*(x_height+2apex_o),45);
+penpos6(0.23570*(x_height+2apex_o),45);
+x1l=x3l=x5l=0.5w;
+z2r=z3l; z4r=z5l;
+z2-z1=whatever*dir135;
+z4-z3=whatever*dir135;
+z6-z5=whatever*dir135;
+y1l=-apex_o; y6r=x_height+apex_o;
+penstroke z1e--z2e;
+enddef;
+
+
+
+
+def old_e_umlaut(suffix $) =
+numeric ww;
+ww:=2u; penpos$.1(hair,147);
+penpos$.2(1.5hair,90); penpos$.3(2.5hair,0);
+penpos$.4(1.2hair,-90);
+penpos$.5(hair,-147);
+penpos$.6(hair,-57); penpos$.7(hair,-57);
+z$.1=z$+(0.4ww,-0.2ww);
+z$.2l=z$-(0.111ww,0.556ww);
+z$.3l=z$-(0.5ww,apex_o);
+z$.4l=(x$,y$+0.556ww);
+z$.6-z$=whatever*dir33; x$.6r=x$+0.5ww;
+z$.5l=z$.6l; z$.7=whatever[z$,z$.6];
+x$.7=x$.3;
+penstroke z$.1e..z$.2e{left}..z$.3e{up}
+..z$.4e{right}..z$.5e;
+penstroke z$.7e--z$.6e
+enddef;
+
+def umlaut (suffix $) =
+y0=0; 0.5[x0,x0']=x$-2u;
+z0'=z0+(2.5u,0);
+penpos60(hair,145);
+z60=(x0+stem,1.090x_height);
+z61=(x0+1.522stem,1.387x_height);
+z62=(x0+1.956stem,1.324x_height);
+z60'=(x0'+stem,1.090x_height);
+z61'=(x0'+1.522stem,1.387x_height);
+z62'=(x0'+1.956stem,1.324x_height);
+filldraw z60l{dir34}..z62{up}..z61{left}
+..z60r{dir259}--z60l & cycle;
+penpos60'(hair,145);
+filldraw z60'l{dir34}..z62'{up}..z61'{left}
+..z60'r{dir259}--z60'l & cycle
+enddef;
diff --git a/fonts/gothic/yfrak/yfrak.mf b/fonts/gothic/yfrak/yfrak.mf
new file mode 100644
index 0000000000..eac47e0b30
--- /dev/null
+++ b/fonts/gothic/yfrak/yfrak.mf
@@ -0,0 +1,137 @@
+if unknown cmbase: input cmbase fi
+input yfrabase; % -sl 15-3-1991
+
+font_identifier:="yfrak"; font_size 10pt#;
+
+u#:=20/36pt#; % unit width
+lower_u#:=20/36pt#;
+width_adj#:=0pt#; % width adjustment for certain characters
+serif_fit#:=0pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=270/36pt#; % height of tallest characters
+asc_height#:=250/36pt#; % height of lowercase ascenders
+cap_height#:=246/36pt#; % height of caps
+fig_height#:=232/36pt#; % height of numerals
+x_height#:=167/36pt#; % height of lowercase without ascenders
+%x_height#:=155/36pt#; % height of lowercase without ascenders
+math_axis#:=90/36pt#; % axis of symmetry for math symbols
+bar_height#:=87/36pt#; % height of crossbar in lowercase e
+comma_depth#:=70/36pt#; % depth of comma below baseline
+desc_depth#:=70/36pt#; % depth of lowercase descenders
+
+crisp#:=0pt#; % diameter of serif corners
+tiny#:=8/36pt#; % diameter of rounded corners
+fine#:=7/36pt#; % diameter of sharply rounded corners
+thin_join#:=7/36pt#; % width of extrafine details
+hair#:=7/36pt#; % lowercase hairline breadth
+%hair#:=9/36pt#; % lowercase hairline breadth
+%stem#:=25/36pt#; % lowercase stem breadth
+stem#:=24/36pt#; % lowercase stem breadth
+curve#:=30/36pt#; % lowercase curve breadth
+ess#:=27/36pt#; % breadth in middle of lowercase s
+flare#:=33/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=38/36pt#; % diameter of dots
+%cap_hair#:=11/36pt#; % uppercase hairline breadth
+cap_hair#:=8/36pt#;
+cap_amount#:=8/36pt#;
+%cap_stem#:=32/36pt#; % uppercase stem breadth
+cap_stem#:=32/36pt#;
+cap_curve#:=37/36pt#; % uppercase curve breadth
+cap_ess#:=35/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=.4pt#; % thickness of lines in math symbols
+
+dish#:=1/36pt#; % amount erased at top or bottom of serifs
+bracket#:=20/36pt#; % vertical distance from serif base to tangent
+jut#:=28/36pt#; % protrusion of lowercase serifs
+cap_jut#:=37/36pt#; % protrusion of uppercase serifs
+beak_jut#:=10/36pt#; % horizontal protrusion of beak serifs
+beak#:=70/36pt#; % vertical protrusion of beak serifs
+vair#:=8/36pt#; % vertical diameter of hairlines
+notch_cut#:=10pt#; % maximum breadth above or below notches
+bar#:=11/36pt#; % lowercase bar thickness
+slab#:=11/36pt#; % serif and arm thickness
+cap_bar#:=11/36pt#; % uppercase bar thickness
+cap_band#:=11/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=10pt#; % max breadth above/below uppercase notches
+serif_drop#:=4/36pt#; % vertical drop of sloped serifs
+stem_corr#:=1/36pt#; % for small refinements of stem breadth
+vair_corr#:=1/36pt#; % for small refinements of hairline height
+apex_corr#:=0pt#; % extra width at diagonal junctions
+
+o#:=8/36pt#; % amount of overshoot for curves
+apex_o#:=5/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=0; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=1; % factor applied to weights of heavy characters
+math_spread:=0; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/6; % extra openness inside bowls
+beak_darkness:=11/30; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=false; % should dots be square?
+hefty:=false; % should we try hard not to be overweight?
+serifs:=true; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=false; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=false; % should math-mode spacing be used?
+numeric usual_right, usual_left;
+usual_right#:=0.5u#;
+usual_left#:=0.3u#;
+
+granularity:=1.01;
+%aspect_ratio:=2/3aspect_ratio;
+
+mode_setup;
+font_setup;
+cap_amount:=8/36pt;
+foot:=0.207x_height;
+num_height:=1.242x_height;
+cap_kern:=4/36pt;
+boolean ligature; ligature:=false;
+numeric alpha; alpha:=0;
+numeric coef, gencoef; gencoef:=1;
+
+%granularity:=1.01;
+
+%readfrom("yfrakbase"); % -sl 15-3-1991
+%currenttransform:=identity xscaled 1.1;
+if proofing>1: generate ycurrent; fi % switch to the driver file%
+%generate yfrakmisc;
+generate yfrakmis; % -sl 15-3-1991
+%generate yfraklower;
+generate yfraklow; % -sl 15-3-1991
+%generate yfrakupper; % switch to the driver file
+generate yfrakupp; % -sl 15-3-1991
+generate yfraknum;
+%currenttransform:=identity;
+%generate yfrakother;
+generate yfrakoth; % -sl 15-3-1991
+
+font_slant slant; font_x_height x_height#;
+font_normal_space 6u#+2letter_fit#;
+ font_normal_stretch 3u#; font_normal_shrink 2u#;
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 2u#;
+
+%ligtable "a": "e"=:oct"032";
+ligtable "c": "h"=:oct"205", "k"=:oct"206";
+ligtable "f": "f"=:oct"204";
+ligtable "s": ":"=:oct"215", "s"=:oct"201", "t"=:oct"202", "z"=:oct"032",
+"f"=:oct"203", "b" kern 1.03u#, "d" kern 1.03u#, "h" kern 1.03u#, "k" kern 1.03u#,
+"l" kern 1.03u#, "i" kern 0.4u#, "j" kern 0.4u#;
+ligtable "t": "z"=:oct"213";
+ligtable oct"042": "a"=:oct"212", "e"=:oct"221", "o"=:oct"232", "u"=:oct"237",
+"s"=:oct"032";
+ligtable "*": "a"=:oct"211", "e"=:oct"220", "o"=:oct"231", "u"=:oct"236";
+ligtable "`": "`"=:oct"134";
+ligtable "'": "'"=:oct"042";
+ligtable "-": "-"=:oct"173";
+ligtable oct"173": "-"=:oct"174";
+ligtable oct"201": "b" kern 1.03u#, "d" kern 1.03u#, "h" kern 1.03u#, "k" kern 1.03u#
+, "l" kern 1.03u#, "i" kern 0.4u#, "j" kern 0.4u#;
+
+end.
diff --git a/fonts/gothic/yfrak/yfrak.tfm b/fonts/gothic/yfrak/yfrak.tfm
new file mode 100644
index 0000000000..5cde435a5f
--- /dev/null
+++ b/fonts/gothic/yfrak/yfrak.tfm
Binary files differ
diff --git a/fonts/gothic/yfrak/yfraklow.mf b/fonts/gothic/yfrak/yfraklow.mf
new file mode 100644
index 0000000000..4039ed91c9
--- /dev/null
+++ b/fonts/gothic/yfrak/yfraklow.mf
@@ -0,0 +1,593 @@
+numeric nombre; nombre:= 5gencoef[1,1.155556];
+
+.cmchar "The Fraktur letter a";
+.beginchar("a",nombre*lower_u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#-gencoef[0.5u#,0]);
+penpos1(stem,0); penpos2(stem,0); penpos3(gencoef[hair,2hair],-51);
+penpos4(hair,-52); penpos5(hair,-52); penpos6(whatever,angle((w,0.35h)));
+penpos8(whatever,0); penpos9(hair,gencoef[-30,-50]); penpos11(whatever,0);
+penpos12(whatever,-90); penpos11''(hair,-30);
+z1=(gencoef[0.7w,0.779w],gencoef[0.345h,0.24h]);
+z2=(x1,gencoef[0.807h,0.74h]); z3r=(gencoef[0.911w,w],gencoef[0.925h,0.829h]);
+z4l=(gencoef[x2l,0.452w],h+apex_o); z5=whatever[(0,gencoef[0.74h,0.685h]),z4];
+x5l=gencoef[1/3w,0.288w]; z6l=(0,gencoef[0.462h,0.342h]); x6r=1.083stem;
+z9=(gencoef[0.694w,0.764w],y1); z8l=whatever[z9l,(w,gencoef[0.623h,0.404h])];
+y8=-apex_o; z9r-z8r=whatever*(z9l-z8l); z8'=whatever[z8l,z9l]; y8'=y8+apex_o;
+z10=whatever[z8l,z9l]; y10=0.228h;
+z7=(gencoef[0.439w,0.481w],gencoef[0.203h,0.171h]);
+z11''r=(gencoef[0.78w,0.814w],-apex_o);
+z12r-z11''r=whatever*((gencoef[x9l,0.6w],y9l)-z8l);
+z12l-z11''l=whatever*((gencoef[x9l,0.6w],y9l)-z8l); x12=w; z11r=z11''r;
+z12l-z11l=whatever*((gencoef[x9l,0.6w],y9l)-z8l); z11'=whatever[z11l,z12l];
+y11'=y11+apex_o; z12'=whatever[z11l,z12l]; y12'=gencoef[0.217h,y7];
+penpos2'(stem,0); z2'=(x2,gencoef[y2,0.651h]);
+filldraw z11'..z1l{up}--z2l--z5r-- z4l{0.7[z2l,z3r]-z4l}..z3l--z3r..
+z2'r{down}---z1r...z12'--z12l--z12r --z11r--z11l--z11' & cycle; penstroke
+z6e{up}...z5e---z4e; penstroke z8e--z9e; filldraw z8'..z6l{up}--z6r{down}
+..z7..z10{z9-z8} & z10--z8' & cycle; .endchar;
+
+nombre:= 4.722gencoef[1,1.129412];
+
+.cmchar "The Fraktur letter b";
+.beginchar("b",nombre*lower_u#,1.376x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(stem,0); penpos2(stem,0);
+z1=(gencoef[0.241w,0.208w],gencoef[foot,0.322x_height]); z2=(x1,x_height);
+z3=(1/4[x2l,x2r],x_height+gencoef[foot,0.9foot]); z3'=(x2r,gencoef[y3,y2r]);
+z3''=(x2l,gencoef[0.633(y3-y2)+y2,y2l]); penpos4(gencoef[hair,2hair],74);
+z4=(gencoef[0.5x2l,0],gencoef[1.259x_height,1.205x_height]);
+penpos5(gencoef[hair,1.5hair],-90); z5l=(x2r+gencoef[0.875stem,0.396w],h);
+penstroke z1e--z2e; filldraw z2l--z3''{up}..z4l--z4r--
+z3{dir45}..z5l{right}--z5r{left} ...z3'{down}--z2r--z2l & cycle;
+penpos5'(gencoef[hair,1.5hair],gencoef[-40,-90]);
+z5'l=(0,gencoef[0.097x_height,0.219x_height]); penpos6(hair,gencoef[-42,-30]);
+penpos7(hair,gencoef[-42,-30]); z6r=(gencoef[0.441w,0.521w],-apex_o);
+z7-z6=whatever*((w,gencoef[0.36x_height,0.479x_height])-z6);
+x7=gencoef[0.653w,0.698w]; z6'=whatever[z6,z7]; y6'=gencoef[y6l+apex_o,y6l];
+penpos8(1.167stem,42); z8r=(w,gencoef[0.545x_height,0.664x_height]);
+penpos11(hair,gencoef[-42,-61]); penpos10(hair,gencoef[-42,-61]);
+z10l=(gencoef[x8l,0.729w],x_height+apex_o);
+z10-z11=whatever*(z7-z6-(0,gencoef[0,0.1x_height])); x11=x1;
+penpos9(5/4stem,angle(z10-z11)); z9=whatever[z11l,z10l];
+y9r=y10l+gencoef[-apex_o,0]; penstroke z11e--z10e; penstroke
+z6e---z7e...z8e{up}.. z9e; filldraw z5'l..z1l{up}--z1r--z7l--
+z6'{dir138}..z5'r--z5'l & cycle; .endchar;
+
+nombre:= 3.639gencoef[1,1.145038];
+
+.cmchar "The Fraktur letter c";
+.beginchar("c",nombre*lower_u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(gencoef[hair,1.5hair],gencoef[-30,-48]); penpos2(gencoef[hair,1.5hair],
+gencoef[-30,-48]);
+z2-z1=whatever*((w,gencoef[0.78h,0.5h]));
+z1r=(gencoef[0.565w,0.586667w],-apex_o); x2r=w; z1'=whatever[z1,z2];
+y1'=gencoef[y1l+apex_o,y1r]; x1':=gencoef[x1',x1r]; z3=whatever[z1l,z2l];
+x3=gencoef[0.809w,x2l]; z4=(gencoef[2/3w,0.64w],0.176h);
+penpos5(1.083stem,angle((w,gencoef[0.4h,0.452h])));
+z5=(gencoef[0.26w,0.226667w],0.214h); penpos6(stem,0); z6l=(0,0.5h);
+penpos9(gencoef[hair,1.5hair],gencoef[-68,-22]);
+penpos8(gencoef[hair,1.5hair],gencoef[-68,-22]);
+penpos8.5(gencoef[hair,1.5hair],gencoef[-68,-22]);
+z9l=(gencoef[0.832w,0.546667w],h+apex_o);
+z9-z8=whatever*((w,gencoef[0.25h,0.404h])); x8l=gencoef[0.458w,0.2666w];
+z7=whatever[z8l,z9l]; x7=gencoef[0.145w,x8l];
+penpos10(gencoef[stem,1.3stem],angle((w,gencoef[0.25h,0.883562h])));
+z10r=whatever[z9l,z9r]; x10r=w+gencoef[0,apex_o]; z10l-z8.5=whatever*(z10r-z9);
+z8.5=whatever[z8,z9]; penstroke z1e--z2e; filldraw z1'..z5l..z6l{up}--z6r{down}
+..z5r..z4..z3{z2-z1}--z2l--z2r--z1' & cycle; filldraw z6l{up}..z7 &
+z7--z9l--z10r-- z10l--z8.5r & z8.5r{z8-z9}..(x6r,0.738h)..z6r{down}-- z6l &
+cycle; .endchar;
+
+nombre:= 4.944gencoef[1,1.073034];
+
+.cmchar "The Fraktur letter d";
+.beginchar("d",nombre*lower_u#,gencoef[1.269x_height#,1.37x_height#],0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(stem,0); penpos2(stem,0);
+z1=(gencoef[0.227w,0.2094w],gencoef[foot,0.274x_height]); z1'=(x1r,foot);
+z2=(x1,gencoef[0.817x_height,0.795x_height]); penpos4(hair,-90);
+z4=(gencoef[0.5x1l,0],gencoef[0.11x_height,0.188x_height]); penpos5(hair,-38);
+z5r=(gencoef[x1r+0.7stem,0.6073w],-apex_o);
+penpos6(whatever,gencoef[-18,-38]);
+z6l-z5l=whatever*((w,gencoef[0.356x_height,x_height]));
+z6r-z5r=whatever*((w,gencoef[0.356x_height,x_height]));
+z6-z1'=whatever*((w,gencoef[-0.2x_height,-0.1x_height]));
+penpos7(gencoef[1.271stem,0.65stem],gencoef[50,39]); z7r=(w,0.579x_height);
+penpos8(stem,angle((w,1.04h))); z8=(gencoef[0.545w,0.52w],0.959x_height);
+penpos9(gencoef[0.946stem,0.8stem],25);
+z9l=(gencoef[0,-2apex_o],gencoef[1.093x_height,1.178x_height]);
+z10=(gencoef[0.303w,0.209w],h); penpos11(hair,-90);
+z11l=gencoef[(0.416w,h-apex_o),z10]; penpos3(hair,-57);
+z3=z8;
+%z3l-z2l=whatever*((w,gencoef[0.39x_height,0.198x_height]));
+%y3l=x_height-gencoef[2apex_o,0.075x_height];
+%y3l=x_height-2apex_o;
+penstroke z1e--z2e; penstroke
+z5e---z6e...z7e{up}..z8e ..z9e{up}; filldraw z2l--z3l--z3r{z2l-z3l}..
+z2r{down}--z2l & cycle; filldraw z4r..{z5r-z5l}z5r--z6--z1'--z1r--
+z1l{down}..z4l--z4r & cycle; filldraw z9l{up}..z10{right}..z11l
+--z11r{left}..z9r{down}--z9l & cycle; .endchar;
+
+nombre:= 3.65gencoef[1,1.230769];
+
+.cmchar "The Fraktur letter e";
+.beginchar("e",nombre*lower_u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(stem,0); z1l=(0,0.486h);
+penpos7(gencoef[hair,1.2hair],gencoef[-45,-56]);
+penpos8(gencoef[hair,1.2hair],gencoef[-45,-56]);
+z8-z7=whatever*((w,gencoef[0.45h,0.356h])); x8r=gencoef[w,0.9w];
+x7r=gencoef[x1r,0.4125w]; y7r=-apex_o; z7'=whatever[z7,z8];
+y7'=gencoef[y7l,y7r]; x7':=gencoef[x7',x7r]; z9=whatever[z7l,z8l];
+x9=gencoef[0.8w,x8l]; z2=(gencoef[0.092w,0.07475w],0.828h);
+penpos3(gencoef[hair,1.2hair],-69); penpos4(gencoef[hair,1.2hair],-69);
+y3l=h+apex_o; penpos6(gencoef[hair,1.2hair],-69); z6r=(x1r,0.5h);
+z3l-z2=whatever*((w,gencoef[0.3h,0.25h])); x4r=w-gencoef[apex_o,0];
+z4-z6=whatever*((w,gencoef[0.3h,0.226h])); penpos5(1.083stem,angle(z4-z6));
+z5r=z4r; z5'=whatever[z2,z3l]; z5'-z5l=whatever*(z3-z4); penstroke z6e--z4e;
+filldraw z5l--z5'--z3l--z4r--z5l & cycle; penpos2'(gencoef[hair,1.2hair],-69);
+z3-z2'=whatever*(z4-z6); x2'r=gencoef[x1r,0.5w];
+z10=whatever[(0,0),(w,gencoef[0.301h,0.363h])]; y10=0.193h; penstroke z2'e--z3e;
+filldraw z7'{dir135}..z1l{up}..z2 &
+z2..z2'l{z4-z6}--z2'r{gencoef[down,z6-z4]}..{down}z1r..z10
+..z9{z8-z7}--z8l-- z8r--z7' & cycle; penstroke z7e--z8e; .endchar;
+
+.cmchar "The Fraktur letter f";
+.beginchar("f",4.539lower_u#,1.366x_height#,3.167lower_u#);
+.adjust_fit(0,0.05alpha*w#+usual_right#-0.85u#);
+w':=w; penpos1.1(hair,0); z1.1=(0.318w',-d); penpos1.2(1.313stem,0); z1.2=(x1.1,0.795x_height);
+penpos1.4(3/4stem,-90); z1.4r=(0.857w',y1.2); z1.3=(0,y1.2); z1.12=whatever[z1.1l,z1.2l];
+z1.13=whatever[z1.1r,z1.2r]; y1.12=y1.13=0.512x_height; z1.12'=z1.12-(0.5apex_o,0);
+z1.13'=z1.13+(0.5apex_o,0); z1.35=whatever[z1.12,z1.2l]; y1.35=y1.4; penpos1.5(0.917stem,0);
+z1.5=(x1.1,y1.4l); penpos1.6(hair,-68); z1.6-z1.5r=whatever*dir112; z1.6l-z1.5l=whatever*dir72;
+penpos1.7(hair,0); z1.7l=z1.5l; penpos1.9(hair,-22); penpos1.11(hair,-22);
+z1.11r=(w',1.321x_height); z1.11-z1.9=whatever*dir68; x1.9=0.831w'; penpos1.8(whatever,68);
+z1.8l=z1.9l; y1.8r=y1.11r; z1.14=(0.673w',1.366x_height); filldraw z1.1r..z1.13'..z1.2r...
+z1.5r---z1.6l & z1.6l--z1.35--z1.2l.. z1.12'..z1.1l--z1.1r & cycle; filldraw
+z1.3..z1.6{z1.6-z1.5l}--z1.2l--z1.3 & cycle; filldraw z1.6l{dir72}..z1.14{right}..
+z1.8r{dir-22}--z1.8l{dir158}.. z1.6r{z1.5l-z1.6}--z1.6l & cycle; penstroke z1.9e--z1.11e; filldraw
+z1.5--z1.4l--z1.4r--z1.2--z1.5 & cycle;
+.endchar;
+
+nombre:= 5.611gencoef[1,1.168317];
+
+.cmchar "The Fraktur letter g";
+.beginchar("g",nombre*lower_u#,x_height#,gencoef[2.389lower_u#,3.4446lower_u#]);
+.adjust_fit(usual_left#-gencoef[0.315u#,0.3u#],usual_right#);
+penpos1(hair,gencoef[0,30]); penpos2(gencoef[hair,1.2hair],gencoef[90,110]);
+z1l=(gencoef[0,0.1w],gencoef[0.059h,-0.532d]); z2l=(gencoef[0.426w,0.568w],-d);
+z3=gencoef[(0.743w,0),(0.78w,-0.42d)];
+z4=(w-gencoef[apex_o,0],gencoef[0.107h,-0.161d]); penpos5(whatever,0);
+z5=gencoef[(0.733w,0.455h),(0.763w,0.199h)]; x5r=gencoef[0.8627w,0.86w];
+penpos6(hair,gencoef[-57,-20]); z6r=(gencoef[w,0.932w],0.845h);
+penpos7(4/3stem,gencoef[46,50]); z7r=gencoef[(0.673w,h+apex_o),(0.466w,h)];
+penpos8(hair,gencoef[-24,angle(z6-z7r)]); z8l=z7l; z8'=whatever[z8l,z8r];
+x8'=gencoef[0.688w,0.67w]; penpos9(gencoef[1.292stem,1.1stem],36);
+z9=(gencoef[0.228w,0.186441w],0.462h); penpos10(gencoef[hair,1.25hair],-50);
+z10r=gencoef[(0.277w,-0.239d),(0.339w,0)]; penpos11(gencoef[hair,1.25hair],-50);
+z11-z10=whatever*dir(gencoef[40,32]); x11=gencoef[0.8w,0.763w];
+z13=whatever[z10l,z11l]; x13=gencoef[0.488w,0.466w]; penstroke
+z2e{left}..z1e{gencoef[up,dir135]}; filldraw z2l{right}..z4 & flex(z4,z5r,z6r) &
+z6r--z6l{left}.. {z6l-z6r}z7r---z7l...z9l{down}..z10r--z13 &
+z13..z9r{up}..z8r{z7r-z7l} & z8r--z8' & z8'..z5l{down}
+..z3{down}..z2r{left}--z2l & cycle; penstroke z10e--z11e; .endchar;
+
+.cmchar "The Fraktur letter h";
+.beginchar("h",5.472lower_u#,1.376x_height#,2.556lower_u#);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+w':=0.863w; penpos1(stem,0); penpos2(stem,0); z1=(0.241w',foot);
+z2=(x1,x_height); z3=(1/4[x2l,x2r],x_height+foot); z3'=(x2r,y3);
+z3''=(x2l,0.633(y3-y2)+y2); penpos4(hair,74); z4=(0.5x2l,1.259x_height);
+penpos5(hair,-90); z5l=(x2r+0.875stem,h); penstroke z1e--z2e; filldraw
+z2l---z3''...z4l--z4r-- z3{dir45}..z5l{right}--z5r{left} ...z3'---z2r--z2l &
+cycle; penpos5'(hair,-40); z5'l=(0,0.097x_height); penpos6(hair,-37);
+penpos7(hair,-37); y6r=-apex_o; x6r=x1r; z7-z6=whatever*dir48; x7=0.6w;
+z6'=whatever[z6,z7]; y6'=y6l+apex_o; penpos8(1.292stem,39);
+z8r=(w,0.478x_height); penpos11(hair,-50); penpos10(hair,-50); x10r=x8l;
+y10l=x_height+apex_o; z10-z11=whatever*((w,0.559x_height)); x11=x1;
+penpos9(1.229stem,angle((w,0.559x_height))); z9=whatever[z11,z10];
+y9r=y10r-apex_o; z15=whatever[z6l,z7l]; z15-z1r=whatever*dir-30; penstroke
+z11e--z10e; penstroke z6e---z7e; penpos7'(1.2hair,-40); z7'r=(0.426w,-d);
+penstroke z7'e{dir50}...z8e{up}.. z9e; filldraw z5'l..z1l{up}--z1r-- z15--z7l--
+z6'{dir138}..z5'r--z5'l & cycle; .endchar;
+
+.cmchar "The Fraktur letter i";
+.beginchar("i",2.889lower_u#,x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(hair,-44); penpos2(hair,-44); penpos3(hair,-44); z1l=(0,0.834h);
+z2-z1=whatever*((w,0.37h)); y2l=h+apex_o; z3=whatever[z2l,z2r]; x3r=x5r+0.5stem;
+z4=(0.606w,0.931h); penpos5(stem,0); z5=(0.433w,0.759h); z6=(x5,0.238h);
+penpos6(stem,0); z7=(x6l,0.079h); z8-z7=whatever*dir-40; y8=-apex_o;
+penpos9(hair,-38); z9r-z8=whatever*dir52; x9r=w; z10=(0.788w,0.152h);
+z5'=whatever[z1,z2]; x5'=x5l; penstroke z5e--z6e; penstroke z1e--z2e; filldraw
+z5r{up}..z3r--z2--z5'--z5l{down} --z5r & cycle; filldraw z8--z9r--z9l{z8-z9r}
+..z6r{up}--z6l{down}..{z8-z7}z8 & cycle; penpos11(hair,0); z11r=(x2l,1.076h);
+z12=(0.56w,1.279h); z13=(0.73w,1.238h); filldraw z11l{up}..z12{right}..
+z13{down}..{z1-z2}z11r--z11l & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter j";
+.beginchar("j",2.944lower_u#,x_height#,1.611lower_u#);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(hair,47); penpos2(1.3hair,-90); z2r=(0.16w,-d); penpos5(stem,0);
+z5=(0.523w,0.124h); penpos3(2/3stem,0); z3l=(x5l,0.048h); penpos6(stem,0);
+z6=(x5,0.824h); penpos7(hair,-90); z7=(0.906w,0.91h); penpos8(hair,-48);
+penpos9(hair,-48); z8l=(0.481w,h+apex_o); z8-z9=whatever*((w,0.3448h)); x9l=0;
+z9'=whatever[z9r,z8r]; y9'=y9l+apex_o; z1r=(x5r+0.5stem,-0.207d);penstroke
+z2e..z3e{up}; penstroke z5e--z6e; filldraw z1r{dir137}..z5r{up}--z5l
+--z3l--z3r..z1l{dir-43}--z1r & cycle; filldraw z6r{up}..z7r{right}--z7l...
+z8r---z8l--z9l--z9r--z9'.. z6l{down}--z6r & cycle; penpos11(hair,0);
+z11r=(x8l,1.076h); z12=(0.571w,1.279h); z13=(0.744w,1.238h); filldraw
+z11l{up}..z12{right}..z13{down} ..{z9-z8}z11r--z11l & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter k";
+.beginchar("k",3.861lower_u#,1.366x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+w':=1.223w; penpos1(stem,0); penpos2(stem,0); z1=(0.241w',foot);
+z2=(x1,x_height); z3=(1/4[x2l,x2r],x_height+foot); z3'=(x2r,y3);
+z3''=(x2l,0.633(y3-y2)+y2); penpos4(hair,74); z4=(0.5x2l,1.259x_height);
+penpos5(hair,-90); z5l=(x2r+0.875stem,h); penstroke z1e--z2e;
+penpos5''(hair,-90); z5''=z5+(hair,-eps); filldraw z2l---z3''...z4l--z4r--
+z3{dir45}..z5l{right}..z5''l--z5''r..z5r{left} ...z3'---z2r--z2l & cycle;
+penpos5'(hair,-40); z5'l=(0,0.097x_height); penpos6(hair,-37); penpos7(hair,-37);
+y6r=-apex_o; x6r=x1r; z7-z6=whatever*dir48; x7=0.8w; z6'=whatever[z6,z7];
+y6'=y6l+apex_o; z15=whatever[z6l,z7l]; z15-z1r=whatever*dir-30; penstroke
+z6e---z7e; filldraw z5'l..z1l{up}--z1r-- z15--z7l-- z6r---z6l...z5'r--z5'l &
+cycle; penpos1.4(3/4stem,-90); z1.4=(0.928w,.859x_height); z1.3=(0,y1.4r);
+z1.35=(x2l,y1.4l); filldraw z1.3--z1.35--z1.4l--z1.4r-- z1.3 & cycle;
+penpos1.5(hair,0); z1.5=0.219[z1.4l,(x2r,y1.4l)]; penpos1.6(hair,-43);
+z1.6r=(x2r,0.283[y1.4l,y5l]); penpos1.7(stem,57); z1.7r-z1.6l=whatever*dir47;
+x1.7r=0.636[x2r,x1.4]; penpos1.6'(hair,-43); z1.6'l=z1.7r; penpos1.8(stem,60);
+z1.8r=(w,0.579[y1.4l,y5l]); penstroke z1.6e--z1.6'e; penstroke
+z1.5e{dir72}..z1.8e{up}..z1.7e{left}; filldraw z1.6r--z1.7l--z1.7r--z1.6l
+--z1.6r & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter l";
+.beginchar("l",3lower_u#,1.366x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+w':=1.574w; penpos1(stem,0); z1=(0.241w',foot); penpos5'(hair,-40);
+z5'l=(0,0.097x_height); penpos6(hair,-37); penpos7(hair,-37); y6r=-apex_o;
+x6r=x1r; z7-z6=whatever*dir48; x7=w; z6'=whatever[z6,z7]; y6'=y6l+apex_o;
+z15=whatever[z6l,z7l]; z15-z1r=whatever*dir-30; penstroke z6e---z7e; filldraw
+z5'l..z1l{up}--z1r-- z15--z7l-- z6r---z6l...z5'r--z5'l & cycle; penpos2(stem,0);
+z2=(x1,x_height); z3=(1/4[x2l,x2r],x_height+foot); z3'=(x2r,y3);
+z3''=(x2l,0.633(y3-y2)+y2); penpos4(hair,74); z4=(0.5x2l,1.259x_height);
+penpos5(hair,-90); z5l=(x7,h); penstroke z1e--z2e; filldraw
+z2l---z3''...z4l--z4r-- z3{dir50}..z5l{right}--z5r{left} ...z3'---z2r--z2l &
+cycle;
+.endchar;
+
+nombre:=7.806gencoef[1,1.227586];
+
+.cmchar "The Fraktur letter m";
+.beginchar("m",nombre*lower_u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+boolean itsm; itsm:=true;
+w':=w; if itsm: z0=(0.356w',0) else: z0=(0,0) fi; penpos1(stem,0);
+penpos2(stem,0); penpos3(stem,0); penpos4(stem,0); penpos5(stem,0);
+penpos6(stem,0); z1=(0.135w',foot); z3=(0.491w',foot); n_foot(1);
+z2=(x1,0.846h); z4=(x3,y2); z5=z3+z0; z6=z4+z0; penpos10(hair,-54);
+penpos11(hair,-54); penpos12(hair,-54); penpos13(hair,-54);
+z2r-z10l=whatever*dir36; x10r=x2r; z11-z10=whatever*dir36; y11l=h+apex_o;
+z14=whatever[z10r,z11r]; y14=0.881h; penpos16(2/3hair,-90);
+z16=(x6r+1/20w',y14); penstroke z1e--z2e; penstroke z5e--z6e; if itsm: penstroke
+z3e--z4e; n_foot(3); fi z12=z10+z0; z13=z11+z0; z15=z14+z0; x14'=x4l;
+z14'-z14=whatever*(z4r-z11); z15'=z14'+z0; if itsm: filldraw
+z14--z14'--z4l--z4r-- z11l--z10l--z10r--z14 & cycle; fi filldraw
+z12l--z13l---z13r...z16l{right} --z16r{left}..z6r--z6l--z15'--z15-- z12r--z12l &
+cycle; penpos18(hair,-37); penpos17(hair,-37); z17=(0.354[x5l,x5r],-apex_o);
+x18r=x5+0.157w'; y18l=foot; z20'=whatever[z17l,z18l]; x20'=x5r;
+z20=0.5[z20',z18l]; z19=(x5l,2/3foot); z17'=whatever[z17,z18]; y17'=0; filldraw
+z17'--z19--z5l--z5r{down} ..z20{z18r-z18l}--z17' & cycle; penstroke z17e--z18e;
+z8=(0,y2); z9=(x2,h+apex_o); z7=(x1l,0.194[y2,y1]); filldraw
+z7{up}..z8--z9..z2r{down} --z7 & cycle;
+.endchar;
+
+nombre:=5.028gencoef[1,1.227586];
+
+.cmchar "The Fraktur letter n";
+.beginchar("n",nombre*lower_u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+boolean itsm; itsm:=false;
+w':=1.553w; if itsm: z0=(0.356w',0) else: z0=(0,0) fi; penpos1(stem,0);
+penpos2(stem,0); penpos3(stem,0); penpos4(stem,0); penpos5(stem,0);
+penpos6(stem,0); z1=(0.135w',foot); z3=(0.491w',foot); n_foot(1);
+z2=(x1,0.846h); z4=(x3,y2); z5=z3+z0; z6=z4+z0; penpos10(hair,-54);
+penpos11(hair,-54); penpos12(hair,-54); penpos13(hair,-54);
+z2r-z10l=whatever*dir36; x10r=x2r; z11-z10=whatever*dir36; y11l=h+apex_o;
+z14=whatever[z10r,z11r]; y14=0.881h; penpos16(2/3hair,-90);
+z16=(x6r+1/20w',y14); penstroke z1e--z2e; penstroke z5e--z6e; if itsm: penstroke
+z3e--z4e; n_foot(3); fi z12=z10+z0; z13=z11+z0; z15=z14+z0; x14'=x4l;
+z14'-z14=whatever*(z4r-z11); z15'=z14'+z0; if itsm: filldraw
+z14--z14'--z4l--z4r-- z11l--z10l--z10r--z14 & cycle; fi filldraw
+z12l--z13l---z13r...z16l{right} --z16r{left}..z6r--z6l--z15'--z15-- z12r--z12l &
+cycle; penpos18(hair,-37); penpos17(hair,-37); z17=(0.354[x5l,x5r],-apex_o);
+x18r=x5+0.157w'; y18l=foot; z20'=whatever[z17l,z18l]; x20'=x5r;
+z20=0.5[z20',z18l]; z19=(x5l,2/3foot); z17'=whatever[z17,z18]; y17'=0; filldraw
+z17'--z19--z5l--z5r{down} ..z20{z18r-z18l}--z17' & cycle; penstroke z17e--z18e;
+z8=(0,y2); z9=(x2,h+apex_o); z7=(x1l,0.194[y2,y1]); filldraw
+z7{up}..z8--z9..z2r{down} --z7 & cycle; .endchar;
+
+nombre:=4.75gencoef[1,1.140351];
+
+.cmchar "The Fraktur letter o";
+.beginchar("o",nombre*lower_u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(hair,-37); penpos2(hair,-37); z9=(0,gencoef[0.117h,0.19863h]);
+x1r=gencoef[0.5w,0.561224w]; y1r=-apex_o; penpos3(1.083stem,31);
+z3r=(w,gencoef[0.479h,0.589h]); penpos7(stem,0);
+z7=(gencoef[0.211w,0.184w],gencoef[0.866h,0.829h]); penpos4(1.083stem,22);
+z4-z7l=whatever*dir22; y4r=h+apex_o; penpos5'(hair,-68); z5'l=z7l;
+penpos6(hair,-68); z6l=z4; penpos8(stem,0); z8=(x7,gencoef[foot,0.267h]);
+z2-z1=whatever*((w,0.786h)); x8'=x8r;
+y8'=foot; z2-z8r=whatever*(z1-z9); penstroke z1e---z2e...z3e..
+z4e{dir122}; penstroke z5'e--z6e; penstroke z8e--z7e; filldraw
+z9..z8l{up}--z8r--z2l--z1l--z9 & cycle; z7'=whatever[z5',z6]; x7'=x7r; filldraw
+z7l--z7'--z7r--z7l & cycle; .endchar;
+
+nombre:=5.056gencoef[1,1.131868];
+
+.cmchar "The Fraktur letter p";
+.beginchar("p",nombre*lower_u#,x_height#,3.361lower_u#);
+.adjust_fit(usual_left#+gencoef[0,0.5u#],usual_right#);
+penpos1(stem,0); z1=(gencoef[0.242w,0.223w],foot); penpos2(stem,0);
+z2=(x1,0.834h); penpos3(hair,-27); z3=(x2l,1.05h);
+penpos4(stem,53); z4l=(-apex_o,0.86h); penpos5(hair,0);
+z5=(x1,-d); penstroke z5e--z1e--z2e; z6=(x1l,0.69h); filldraw z6{up}..
+z4l{up}--z4r{down}..{dir-45}z2r--z6 & cycle; penstroke
+z4e{up}..z3e{dir53};
+penpos8(hair,-49); penpos7(hair,-49);
+z8l=(gencoef[0.714w,0.7w],h+gencoef[apex_o,0]);
+z8-z7=whatever*dir(gencoef[41,35]); x7=x1; penstroke z7e--z8e;
+z11=(-0.5u,0.15h); z9-z11=whatever*dir-20; x9=gencoef[0.527w,0.592w];
+penpos9(hair,-20); penpos10(hair,-20); z10-z9=whatever*dir57.5;
+y10r=gencoef[0.1h,0.12h]; z12-z10=whatever*(z11-z9); z12-z11=whatever*(z10-z9);
+penpos13(stem,33); penpos14(5/4stem,41); z13r=(w,gencoef[0.5h,0.548h]);
+z14r=z8l; penstroke z9e---z10e...z13e...z14e {dir131}; filldraw
+z11--z12--z10r--z9r--z11 & cycle; .endchar;
+
+nombre:=4.639gencoef[1,1.269461];
+
+.cmchar "The Fraktur letter q";
+.beginchar("q",nombre*lower_u#,x_height#,3.361lower_u#);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(hair,0); z1=(0.745w,-d); penpos2(stem,0); z2=(x1,foot); z3=(x2r,0.728h);
+z4=(w,0.879h); penpos5(hair,-33); penpos6(hair,-33); z5l=(0.485w,h+apex_o);
+z5-z6=whatever*dir52; x6=0.335w; penpos7(1.542stem,62); z7l=(0,0.445h);
+penpos8(1.125stem,45); z8l=(0.388w,-2apex_o); penpos9(hair,-45);
+penpos10(hair,-45); z9r=z8; z10-z9=whatever*dir45; x10=x2; penstroke z1e--z2e;
+z3'-z6=whatever*(z5r-z5l); x3'=x2l; filldraw z2r---z3...z4 & z4...z5r---z5l
+--z6l--z3'--z2l--z2r & cycle; penstroke z8e{(0,0.552h)-z8}..z7e{up}... z6e---z5e;
+penstroke z9e--z10e;
+.endchar;
+
+nombre:=3.944gencoef[1,1.281690];
+
+.cmchar "The Fraktur letter r";
+.beginchar("r",nombre*lower_u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+w':=1.197w;
+penpos1(stem,0); penpos2(stem,0); z1=(0.241w',foot); z2=(x1,x_height);
+z3=(1/4[x2l,x2r],x_height+foot); z3'=(x2r,y3); z3''=(x2l,0.633(y3-y2)+y2);
+penpos4(hair,74); z4=(0.5x2l,1.259x_height); penpos5(hair,-90);
+z5l=(x2r+0.875stem,h); penpos5'(hair,-40); z5'l=(0,0.097x_height);
+penpos6(hair,-37); penpos7(hair,-37); y6r=-apex_o; x6r=x1r;
+z7-z6=whatever*dir48; x7=0.817w; z6'=whatever[z6,z7]; y6'=y6l+apex_o;
+penpos8(1.292stem,39); z8r=(w,0.478x_height); penpos11(hair,-50);
+penpos10(hair,-50); x10r=x8l; y10l=x_height+apex_o; z10-z11=whatever*dir40;
+x11=x1; penpos9(1.229stem,40); z9=whatever[z11,z10]; y9r=y10r-apex_o;
+z15=whatever[z6l,z7l]; z15-z1r=whatever*dir-30; penstroke z6e---z7e;
+penpos7'(1.2hair,-40); z7'r=(0.426w,-d); filldraw z5'l..z1l{up}--z1r--
+z15--z7l-- z6{dir138}..z5'r--z5'l & cycle; penpos22(stem,0); z22=(x1,0.841h);
+z29=(x22,h+apex_o); z28=(0,y22); z27=(x22l,0.721h); filldraw
+z1l---z27...z28--z29... z22r---z1r--z1l & cycle; penpos30(hair,-70);
+penpos32(hair,-70); penpos31(1.083stem,45); z22r-z32l=whatever*dir45; x32r=x22r;
+z30-z32=whatever*dir45; y30l=h+apex_o; z31r=(w,y32);
+z33-z31l=whatever*(z30-z31r); z33=whatever[z32,z30]; penstroke z32e--z30e;
+filldraw z30--z31r--z31l--z33-- z30 & cycle; .endchar;
+
+.cmchar "The Fraktur letter long s";
+.beginchar("s",4.539lower_u#,1.366x_height#,3.167lower_u#);
+.adjust_fit(0,0.05alpha*w#+usual_right#-1.932lower_u#);
+w':=w; penpos1.1(hair,0); z1.1=(0.318w',-d); penpos1.2(1.313stem,0); z1.2=(x1.1,0.795x_height);
+penpos1.4(3/4stem,-90); z1.4r=(0.857w',y1.2); z1.3=(0,y1.2); z1.12=whatever[z1.1l,z1.2l];
+z1.13=whatever[z1.1r,z1.2r]; y1.12=y1.13=0.512x_height; z1.12'=z1.12-(0.5apex_o,0);
+z1.13'=z1.13+(0.5apex_o,0); z1.35=whatever[z1.12,z1.2l]; y1.35=y1.4; penpos1.5(0.917stem,0);
+z1.5=(x1.1,y1.4l); penpos1.6(hair,-68); z1.6-z1.5r=whatever*dir112; z1.6l-z1.5l=whatever*dir72;
+penpos1.7(hair,0); z1.7l=z1.5l; penpos1.9(hair,-22); penpos1.11(hair,-22);
+z1.11r=(w',1.321x_height); z1.11-z1.9=whatever*dir68; x1.9=0.831w'; penpos1.8(whatever,68);
+z1.8l=z1.9l; y1.8r=y1.11r; z1.14=(0.673w',1.366x_height); filldraw z1.1r..z1.13'..z1.2r...
+z1.5r---z1.6l & z1.6l--z1.35--z1.2l.. z1.12'..z1.1l--z1.1r & cycle; filldraw
+z1.3..z1.6{z1.6-z1.5l}--z1.2l--z1.3 & cycle; filldraw z1.6l{dir72}..z1.14{right}..
+z1.8r{dir-22}--z1.8l{dir158}.. z1.6r{z1.5l-z1.6}--z1.6l & cycle; penstroke z1.9e--z1.11e;
+.endchar;
+
+nombre:=5.039gencoef[1,1.168688];
+
+.cmchar "The Fraktur letter short s"; .beginchar(oct"215",nombre*lower_u#,1.286x_height#,0);
+.adjust_fit(usual_left#,usual_right#); penpos0(hair,angle((w,x_height))-90);
+penpos0'(hair,angle((w,x_height))-90); z0l=(0,0.103x_height); x0'r=0.86w;
+z0'-z0=whatever*((w,x_height)); penstroke z0e--z0'e;
+penpos5(1.083stem,angle((w,gencoef[0.797x_height,0.63x_height])));
+penpos6(1.083stem,angle(z0'-z0)); z5l=(0.54w,-apex_o); z6l=z0r; penstroke z5e{dir142}..z6e;
+penpos1(hair,angle((w,0.797x_height))-90); penpos2(hair,angle((w,0.797x_height))-90);
+penpos3(1.083stem,39); z3r=(w,0.441x_height); z1r=z5l; z2r=z5r; z4=whatever[z0r,z0'r]; x4=0.595w;
+penpos4(5/4stem,angle(z0'-z0)); penstroke z1e--z2e{z2-z1}..z3e..z4e{dir(angle(z0'-z0)+90)};
+penpos7(hair,angle(z0'-z0)-90); z7r=z6; penpos8(1.125stem,angle((w,0.5x_height)));
+z8r=whatever[z0,z0']; x8r=0.433w; penpos9(1.292stem,54); z9l=(0,0.69x_height); filldraw
+z7--z8r--z8l{down}..z7l{z0-z0'}--z7 & cycle; penstroke z8e{up}..z9e{dir144}; penpos10(hair,-36);
+z10l=z9; z11=whatever[z9l,z9r]; y11=x_height+apex_o; penpos12(1.083stem,54); z12r=z11;
+penpos14(hair,-36); z14l=z12; penstroke z10e--z14e; z13-z12l=whatever*dir-21;
+z13=whatever[z0l,z0'l]; penpos15(0.538stem,-29); z15r=whatever[z0,z0']; y15r=y11; penpos16(hair,90);
+penpos17(hair,144); z16r=(0.568w,h); z17=(0.198w,1.124x_height); penstroke
+z15e{up}..z16e{left}..z17e; filldraw z12l--z13--z0'r & z0'r{z0'-z0}..z15r{up}--z15l{down}
+..z11{z12-z13}--z12l & cycle; .endchar;
+
+.cmchar "The Fraktur letter t";
+.beginchar("t",3.444lower_u#,1.186x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#-0.3u#);
+w':=1.371w; penpos1(stem,0); penpos2(stem,0); z1=(0.241w',foot); z2=(x1,0.828x_height);
+z3=(1/4[x2l,x2r],x_height+foot); z3'=(x2r,y3); z3''=(x2l,0.633(y3-y2)+y2); penpos4(hair,74);
+z4=(0.5x2l,1.259x_height); penpos5(hair,-90); z5l=(x2r+0.875stem,h); penstroke z1e--z2e;
+penpos5''(hair,-90); z5''=z5+(hair,-eps); penpos5'(hair,-40); z5'l=(0,0.097x_height);
+penpos6(hair,-37); penpos7(hair,-37); y6r=-apex_o; x6r=x1r; z7-z6=whatever*dir48; x7=w;
+z6'=whatever[z6,z7]; y6'=y6l+apex_o; z15=whatever[z6l,z7l]; z15-z1r=whatever*dir-30; penstroke
+z6e---z7e; filldraw z5'l..z1l{up}--z1r-- z15--z7l-- z6r---z6l...z5'r--z5'l & cycle;
+penpos1.4(3/4stem,-90); z1.4=(0.928w,.859x_height); z1.3=(0,y1.4r); z1.35=(x2l,y1.4l); filldraw
+z1.3--(x1,y1.35)--z1.4l--z1.4r-- z1.3 & cycle; penpos1.5(hair,0); z1.5=0.219[z1.4l,(x2r,y1.4l)];
+penpos1.6(hair,-43); z1.6r=(x2r,0.283[y1.4l,y5l]); penpos1.7(stem,57); z1.7r-z1.6l=whatever*dir47;
+x1.7r=0.636[x2r,x1.4]; penpos1.6'(hair,-43); z1.6'l=z1.7r; penpos1.8(stem,60);
+z1.8r=(w,0.579[y1.4l,y5l]); penpos30(hair,0); z30l=(x1r,h); filldraw z1.3--z30l--z30r..z2r{down}
+--(x2r,y1.3)--z1.3 & cycle;
+.endchar;
+
+nombre:=6.15gencoef[1,1.107527];
+
+.cmchar "The Fraktur letter u";
+.beginchar("u",nombre*lower_u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(stem,0); z1=(0.727w,foot); penpos2(stem,0); z2=(x1,0.838h);
+penpos3(2/3hair,90); penpos4(2/3hair,0); penpos5(2/3hair,-90);
+penpos3'(1.5stem,0); z3'=(x1,0.5[y2,h+apex_o]); z3=z3'l; z5=z3'r;
+z4=(x1,h+apex_o); penpos16(hair,-32); penpos17(hair,-32); z17-z16=whatever*dir58;
+z16r=(0.795w,-apex_o); x17r=w; z18=whatever[z16,z17]; y18=0.179h; penstroke
+z1e--z2e; filldraw z1l--z16--z18{dir148}.. (x1r,0.31h){up}--z1l & cycle;
+penstroke z16e--z17e; filldraw z2l{up}..z3l{dir165}--
+z3r{dir15}..z4l{dir75}--z4r{dir-75} ..z5l{dir-15}--z5r{dir195}..z2r{down} --z2l
+& cycle; penpos11(stem,0); penpos12(stem,0); z11=(0.257w,foot);
+z12=(x11,0.71x_height); penpos7(hair,-41); penpos6(hair,-41); z7r=(x11r,-apex_o);
+z6r=whatever[z7r,z1l]; x6=x1; penpos9(hair,90); z9=(0.063w,0.11x_height);
+penpos8(whatever,0); z8r=z7r; x8l=x7l; z10=whatever[z7l,z6l];
+z10-z11r=whatever*dir-41; filldraw z9l{right}..z8l--z8r--z6r
+--z6l--z10--z11r--z11l{down}..z9r{dir195} --z9l & cycle; penstroke z11e--z12e;
+penpos14(hair,-38); z14l=(0,0.805x_height); z13=(0.217w,h+apex_o);
+z15-z14r=whatever*(z13-z14l); x15=0.097w; filldraw z13..z12r{down}--z12l{up}
+..z15--z14r--z14l--z13 & cycle;
+.endchar;
+
+nombre:=5.444gencoef[1,1.122449];
+
+.cmchar "The Fraktur letter v";
+.beginchar("v",nombre*lower_u#,1.203x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(stem,0); z1=(0.334w,1.05foot); penpos2(stem,0); z2=(x1,0.561x_height);
+penpos3(stem,50); z3=(0.158w,0.897x_height); penpos3'(1.042stem,37);
+z3'l=(0,0.928x_height); penpos4(hair,-44); z4l=(0.265w,h); penstroke
+z1e---z2e...z3e{dir140}.. z3'e{up}..z4e{dir46}; penpos5(hair,-90);
+penpos6(hair,0); penpos7(hair,-11); z5=(0.133w,0.11x_height);
+z6=(0.582w,-apex_o); z7r-z6r=whatever*dir58; z7-z1r=whatever*dir-11;
+z7'=whatever[z6l,z7l]; x7'=0.7w; filldraw z1l{down}..z5l--z5r{z1r-z5r}
+..z6l--z6r--z7r--z7l--z7'..{left}z1r--z1l & cycle; penpos8(1.125stem,44);
+z8r=(w,0.576x_height); penpos11(hair,-44); penpos12(hair,-44);
+z11=(0.735w,gencoef[1.055x_height,x_height]); z11-z12=whatever*dir46; x12=0.3w;
+penstroke z12e--z11e; penpos10(1.521stem,46); z10r=z11; penpos9(1.042stem,46);
+z9=(0.648w,0.928x_height); penstroke z6e---z7e...z8e..z9e; filldraw
+z9r{z10-z9}..z10r{z11-z12} --z10l{z11-z12}..z9l{z9-z10}-- z9r & cycle;
+.endchar;
+
+nombre:=7.111gencoef[1,1.2];
+
+.cmchar "The Fraktur letter w";
+.beginchar("w",nombre*lower_u#,1.083x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(stem,0); z1=(0.154w,foot); n_foot(1); penpos2(stem,0);
+z2=(x1,0.831x_height); penstroke z1e--z2e; penpos3(hair,-53); penpos4(hair,-54);
+z3r=z2r; z4-z3=whatever*dir37; y4l=x_height+apex_o; z3'=whatever[z3l,z4l];
+x3'=x1r; penpos5(stem,40); z5l=(0,0.955x_height); penpos6(hair,-50);
+z6l=(0.145w,h); penstroke z3e--z4e; filldraw
+z2r--z3'..z5r-(0,2apex_o){up}..z6r{dir60} --z6l{z5l-z5r}..z5l{down}..z2l--z2r &
+cycle; penpos7(stem,0); penpos8(stem,0); z7=(0.531w,foot); z8=(x7,y2);
+penpos9(hair,-35); penpos10(hair,-35);
+z10-z7r=whatever*((0,0.621x_height)-(w,0)); z9r=(0.668w,-apex_o);
+z10-z9=whatever*((w,0.359x_height)-z9); z9-z11=whatever*(z10-z7r); x11=0.402w;
+filldraw z11..z7l{up}--z7r--z10r-- z9r--z11 & cycle; penstroke z7e--z8e;
+penpos14(1.083stem,47); z14r=(w,gencoef[0.462x_height,0.685x_height]);
+penpos11'(hair,-53); penpos12(hair,-53); z11'r=z8r; z12-z11'=whatever*dir37;
+y12l=x_height+apex_o; penstroke z11'e--z12e; penpos13(1.083stem,37); z13r=z12;
+penstroke z9e---z10e... z14e..z13e{dir(gencoef[110,130])};
+z11.5=whatever[z11'l,z12l]; x11.5=x8r; z8'=whatever[z3r,z4r];
+z8l-z8'=whatever*(z11.5-z4); filldraw z8'--z4--z11.5--z8r--z8l --z8' & cycle;
+.endchar;
+
+nombre:=3.944gencoef[1,1.194030];
+
+.cmchar "The Fraktur letter x";
+.beginchar("x",nombre*lower_u#,x_height#,0.5x_height#);
+.adjust_fit(usual_left#+u#,usual_right#); w':=1.197w;
+penpos1(stem,0); penpos2(stem,0); z1=(0.241w',foot); z2=(x1,x_height);
+z3=(1/4[x2l,x2r],x_height+foot); z3'=(x2r,y3); z3''=(x2l,0.633(y3-y2)+y2);
+penpos4(hair,74); z4=(0.5x2l,1.259x_height); penpos5(hair,-90);
+z5l=(x2r+0.875stem,h); penpos5'(hair,-40); z5'l=(x1l,0.097x_height);
+penpos6(hair,-37); penpos7(hair,-37); y6r=-apex_o; x6r=x1r;
+z7-z6=whatever*dir48; x7=0.817w; z6'=whatever[z6,z7]; y6'=y6l+apex_o;
+penpos8(1.292stem,39); z8r=(w,0.478x_height); penpos11(hair,-50);
+penpos10(hair,-50); x10r=x8l; y10l=x_height+apex_o; z10-z11=whatever*dir40;
+x11=x1; penpos9(1.229stem,40); z9=whatever[z11,z10]; y9r=y10r-apex_o;
+z15=whatever[z6l,z7l]; z15-z1r=whatever*dir-30; penstroke z6e---z7e;
+penpos7'(1.2hair,-40); z7'r=(0.426w,-d); filldraw z5'l..z1l{up}--z1r--
+z15--z7l-- z6{dir138}..z5'r--z5'l & cycle; penpos22(stem,0); z22=(x1,0.841h);
+z29=(x22,h+apex_o); z28=(0,y22); z27=(x22l,0.721h); filldraw
+z1l---z27...z28--z29... z22r---z1r--z1l & cycle; penpos30(hair,-70);
+penpos32(hair,-70); penpos31(1.083stem,45); z22r-z32l=whatever*dir45;
+x32r=x22r; z30-z32=whatever*dir45; y30l=h+apex_o; z31r=(w,y32);
+z33-z31l=whatever*(z30-z31r); z33=whatever[z32,z30]; penstroke z32e--z30e;
+filldraw z30--z31r--z31l--z33-- z30 & cycle;
+z40=(x1l,1.5foot); z40'=(x1r,1/3foot);
+penpos41(0.8stem,180); penpos42(1.5hair,-120); penpos43(hair,-142);
+ z41l=(apex_o,-0.129d); z42l=(x1r,-0.557143d); x43l=w; y43r=-d;
+filldraw z40{down}..z41r{down}--z41l{up}..z40'{right}--z40 & cycle;
+penstroke z41e{down}..z42e..z43e{dir-60}; .endchar;
+
+
+nombre:=5.472gencoef[1,1.107527];
+
+.cmchar "The Fraktur letter y";
+.beginchar("y",nombre*lower_u#,x_height#,2.556lower_u#);
+.adjust_fit(usual_left#,usual_right#);
+w':=0.863w; penpos1(stem,0); penpos2(stem,0); z1=(0.241w',foot);
+z2=(x1,0.846x_height); z3=(1/4[x2l,x2r],x_height+foot); z3'=(x2r,y3);
+z3''=(x2l,0.633(y3-y2)+y2); penpos4(hair,74); z4=(0.5x2l,1.259x_height);
+penpos5(hair,-90); z5l=(x2r+0.875stem,h); penstroke z1e--z2e; z2.8=(0,y2);
+z2.9=(x2,h+apex_o); z2.7=(x1l,0.194[y2,y1]); filldraw
+z2.7{up}..z2.8--z2.9..z2r{down} --z2.7 & cycle; penpos5'(hair,-40);
+z5'l=(0,0.097x_height); penpos6(hair,-37); penpos7(hair,-37); y6r=-apex_o;
+x6r=x1r; z7-z6=whatever*dir48; x7=0.6w; z6'=whatever[z6,z7]; y6'=y6l+apex_o;
+penpos8(1.292stem,39); z8r=(w,0.478x_height); penpos11(hair,-50);
+penpos10(hair,-50); x10r=x8l; y10l=x_height+apex_o;
+z10-z11=whatever*((w,0.559x_height)); x11=x1; penpos9(1.229stem,40);
+z9=whatever[z11,z10]; y9r=y10r-apex_o; z15=whatever[z6l,z7l];
+z15-z1r=whatever*dir-30; penstroke z11e--z10e; penstroke z6e---z7e;
+penpos7'(1.2hair,-40); z7'r=(0.426w,-d); penstroke z7'e{dir50}...z8e{up}.. z9e;
+filldraw z5'l..z1l{up}--z1r-- z15--z7l-- z6'{dir138}..z5'r--z5'l & cycle;
+.endchar;
+
+nombre:=3.444gencoef[1,1.330645];
+
+.cmchar "The Fraktur letter z";
+.beginchar("z",nombre*lower_u#,x_height#,gencoef[2.15lower_u#,3.07lower_u#]);
+.adjust_fit(usual_left#,usual_right#); penpos1(hair,122);
+penpos2(gencoef[hair,1.5hair],180); penpos3(0.625stem,-42);
+penpos4(1.313stem,37); z1l=gencoef[(w,0.524h),(0.945w,0.459h)]; z2r=(0,-0.1d);
+z3r=(gencoef[0.548w,0.509w],-d); z4r=(w,gencoef[0.103h,0]); penstroke
+z1e..z2e{down}..z3e{right}..z4e{up}; penpos5(hair,-90);
+z5=gencoef[(0,0.414h),(0.145w,0.390h)]; z6-z5=whatever*dir38;
+x6=gencoef[0.484w,0.454w]; filldraw z5r{right}..z4l{down}-- z4r{up}..z6--z5r &
+cycle; penpos7(4/3stem,43); z7=gencoef[(0.629w,0.734h),(0.618w,0.699h)];
+z8=(gencoef[0.532w,0.4w],h+apex_o); z9=(gencoef[0.081w,0.107782w],0.793h);
+penpos9'(hair,-90); z9'l=z9; penstroke z5e{z6-z5r}..z7e{up}; filldraw
+z7l{up}..z9'r{z9-z8}--z9--z8.. z7r{down}--z7l & cycle; .endchar;
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fonts/gothic/yfrak/yfrakmis.mf b/fonts/gothic/yfrak/yfrakmis.mf
new file mode 100644
index 0000000000..55cf511569
--- /dev/null
+++ b/fonts/gothic/yfrak/yfrakmis.mf
@@ -0,0 +1,574 @@
+.cmchar "The Fraktur ligature ch";
+.beginchar(oct"205",3.639lower_u#+4.772lower_u#,x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+w:=3.639u; penpos101(hair,-30); penpos102(hair,-30); z102l=(w+0.438u-0.5stem,foot);
+z101r=(0.565w,-apex_o); z101'=whatever[z101,z102]; y101'=y101l+apex_o; z103=whatever[z101l,z102l];
+x103=0.809w; z104=(2/3w,0.176h); penpos105(1.083stem,angle((w,0.4h))); z105=(0.26w,0.214h);
+penpos106(stem,0); z106l=(0,0.5h); penpos109(hair,-68); penpos108(hair,-68); penpos108.5(hair,-68);
+z109l=(0.832w,h+apex_o); z109-z108=whatever*((w,0.25h)); x108l=0.458w; z107=whatever[z108l,z109l];
+x107=0.145w; penpos110(stem,angle((w,0.25h))); z110r=whatever[z109l,z109r]; x110r=w;
+z110l-z108.5=whatever*(z110r-z109); z108.5=whatever[z108,z109]; penstroke z101e--z102e; filldraw
+z101'..z105l..z106l{up}--z106r{down} ..z105r...z103---z102l--z102r--z101' & cycle; filldraw
+z106l{up}..z107 & z107--z109l--z110r-- z110l--z108.5r &
+z108.5r{z108-z109}..(x106r,0.738h)..z106r{down}-- z106l & cycle; z0=(w-0.7u,0); w:=5.472u;
+h:=1.376x_height; d:=2.556u; w':=0.863w; penpos1(stem,0); penpos2(stem,0); z1l=z102l;
+z2=(x1,x_height); z3=(1/4[x2l,x2r],x_height+foot); z3'=(x2r,y3); z3''=(x2l,0.633(y3-y2)+y2);
+penpos4(hair,74); z4=(0.5[x0,x2l],1.259x_height); penpos5(hair,-90); z5l=(x2r+0.875stem,h);
+penstroke z1e--z2e; filldraw z2l---z3''...z4l--z4r-- z3{dir45}..z5l{right}--z5r{left}
+...z3'---z2r--z2l & cycle; penpos5'(hair,-40); penpos6(hair,-37); penpos7(hair,-37); y6r=-apex_o;
+x6r=x1r; z7-z6=whatever*dir48; x7=0.6w+x0; z6'=whatever[z6,z7]; y6'=y6l+apex_o;
+penpos8(1.292stem,39); z5'=whatever[z101,z102]; z8r=(w,0.478x_height)+z0; penpos11(hair,-50);
+penpos10(hair,-50); x10r=x8l; y10l=x_height+apex_o; z10-z11=whatever*((w,0.559x_height)); x11=x1;
+penpos9(1.229stem,angle((w,0.559x_height))); z9=whatever[z11,z10]; y9r=y10r-apex_o;
+z15=whatever[z6l,z7l]; z15-z1r=whatever*dir-30; z5'r-z6'=whatever*(z1r-z15); penstroke z11e--z10e;
+penstroke z6e---z7e; penpos7'(1.2hair,-40); z7'r=(0.426w,-d)+z0; penstroke z7'e{dir50}...z8e{up}..
+z9e; filldraw z5'l--z1l--z1r-- z15--z7l--
+z6'--z5'r--z5'l & cycle; .endchar;
+
+.cmchar "The Fraktur ligature ck";
+.beginchar(oct"206",3.639lower_u#+3.161lower_u#,x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+w:=3.639u; penpos101(hair,-30); penpos102(hair,-30); z102l=(w+0.438u-0.5stem,foot);
+z101r=(0.565w,-apex_o); z101'=whatever[z101,z102]; y101'=y101l+apex_o; z103=whatever[z101l,z102l];
+x103=0.809w; z104=(2/3w,0.176h); penpos105(1.083stem,angle((w,0.4h))); z105=(0.26w,0.214h);
+penpos106(stem,0); z106l=(0,0.5h); penpos109(hair,-68); penpos108(hair,-68); penpos108.5(hair,-68);
+z109l=(0.832w,h+apex_o); z109-z108=whatever*((w,0.25h)); x108l=0.458w; z107=whatever[z108l,z109l];
+x107=0.145w; penpos110(stem,angle((w,0.25h))); z110r=whatever[z109l,z109r]; x110r=w;
+z110l-z108.5=whatever*(z110r-z109); z108.5=whatever[z108,z109]; penstroke z101e--z102e; filldraw
+z101'..z105l..z106l{up}--z106r{down} ..z105r...z103---z102l--z102r--z101' & cycle; filldraw
+z106l{up}..z107 & z107--z109l--z110r-- z110l--z108.5r &
+z108.5r{z108-z109}..(x106r,0.738h)..z106r{down}-- z106l & cycle; z0=(w-0.7u,0);
+w:=3.861u; h:=1.366x_height; w':=1.223w; penpos1(stem,0); penpos2(stem,0); z1l=z102l;
+z2=(x1,x_height); z3=(1/4[x2l,x2r],x_height+foot); z3'=(x2r,y3); z3''=(x2l,0.633(y3-y2)+y2);
+penpos4(hair,74); z4=(0.5[x0,x2l],1.259x_height); penpos5(hair,-90); z5l=(x2r+0.875stem,h);
+penstroke z1e--z2e; penpos5''(hair,-90); z5''=z5+(hair,-eps); filldraw z2l---z3''...z4l--z4r--
+z3{dir45}..z5l{right}..z5''l--z5''r..z5r{left} ...z3'---z2r--z2l & cycle; penpos5'(hair,-40);
+penpos6(hair,-37); penpos7(hair,-37); y6r=-apex_o; x6r=x1r; z7-z6=whatever*dir48; x7=0.8w+x0;
+z6'=whatever[z6,z7]; y6'=y6l+apex_o; z15=whatever[z6l,z7l]; z15-z1r=whatever*dir-30; penstroke
+z6e---z7e; z5'r-z6'=whatever*(z1r-z15); z5'=whatever[z101,z102]; filldraw z5'l..z1l{up}--z1r--
+z15--z7l-- z6r---z6l...z5'r--z5'l & cycle; penpos1.4(3/4stem,-90); z1.4=(x0+0.928w,.859x_height);
+z1.3=(x0,y1.4r); z1.35=(x2l,y1.4l); filldraw z1.3--z1.35--z1.4l--z1.4r-- z1.3 & cycle;
+penpos1.5(hair,0); z1.5=0.219[z1.4l,(x2r,y1.4l)]; penpos1.6(hair,-43);
+z1.6r=(x2r,0.283[y1.4l,y5l]); penpos1.7(stem,57); z1.7r-z1.6l=whatever*dir47;
+x1.7r=0.636[x2r,x1.4]; penpos1.6'(hair,-43); z1.6'l=z1.7r; penpos1.8(stem,60);
+z1.8r=(x0+w,0.579[y1.4l,y5l]); penstroke z1.6e--z1.6'e; penstroke
+z1.5e{dir72}..z1.8e{up}..z1.7e{left}; filldraw z1.6r--z1.7l--z1.7r--z1.6l --z1.6r & cycle;
+.endchar;
+
+.cmchar "The Fraktur ligature st";
+.beginchar(oct"202",6.5lower_u#,1.366x_height#,3.167lower_u#);
+.adjust_fit(0,0.05alpha*w#+usual_right#);
+w':=0.698w; penpos0.1(hair,0); z0.1=(0.318w',-d); penpos0.2(1.313stem,0);
+z0.2=(x0.1,0.795x_height); penpos0.4(3/4stem,-90); z0.4r=(0.857w',y0.2); z0.3=(0,y0.2);
+z0.12=whatever[z0.1l,z0.2l]; z0.13=whatever[z0.1r,z0.2r]; y0.12=y0.13=0.512x_height;
+z0.12'=z0.12-(0.5apex_o,0); z0.13'=z0.13+(0.5apex_o,0); z0.35=whatever[z0.12,z0.2l]; y0.35=y0.4;
+penpos0.5(0.917stem,0); z0.5=(x0.1,y0.4l); penpos0.6(hair,-68); z0.6-z0.5r=whatever*dir112;
+z0.6l-z0.5l=whatever*dir72; penpos0.7(hair,0); z0.7l=z0.5l; penpos0.9(hair,-22);
+penpos0.11(hair,-22); z0.11r=(w',1.321x_height); z0.11-z0.9=whatever*dir68; x0.9=0.831w';
+penpos0.8(whatever,68); z0.8l=z0.9l; y0.8r=y0.11r; z0.14=(0.673w',1.366x_height); filldraw
+z0.1r..z0.13'..z0.2r... z0.5r---z0.6l & z0.6l--z0.35--z0.2l.. z0.12'..z0.1l--z0.1r & cycle;
+filldraw z0.3..z0.6{z0.6-z0.5l}--z0.2l--z0.3 & cycle; filldraw z0.6l{dir72}..z0.14{right}..
+z0.8r{dir-22}--z0.8l{dir158}.. z0.6r{z0.5l-z0.6}--z0.6l & cycle; penstroke z0.9e--z0.11e;
+w':=0.726w; z100=(x0.14,0); penpos1(stem,0); penpos2(stem,0); z1=(0.241w',foot)+z100;
+z2=(x1,0.828x_height); z3=(1/4[x2l,x2r],x_height+foot); z3'=(x2r,y3); z3''=(x2l,0.633(y3-y2)+y2);
+penpos4(hair,74); z4=(0.5x2l,1.259x_height); penpos5(hair,-90); z5l=(x2r+0.875stem,h); penstroke
+z1e--z2e; penpos5''(hair,-90); z5''=z5+(hair,-eps); penpos5'(hair,-40); z5'l=(0,0.097x_height)+z100;
+penpos6(hair,-37); penpos7(hair,-37); y6r=-apex_o; x6r=x1r; z7-z6=whatever*dir48; x7=x100+0.53w;
+z6'=whatever[z6,z7]; y6'=y6l+apex_o; z15=whatever[z6l,z7l]; z15-z1r=whatever*dir-30; penstroke
+z6e---z7e; filldraw z5'l..z1l{up}--z1r-- z15--z7l-- z6r---z6l...z5'r--z5'l & cycle;
+penpos1.4(3/4stem,-90); z1.4=(0.928x100+0.4916w,.859x_height); z1.3=(x100,y1.4r);
+z1.35=(x2l,y1.4l); filldraw z1.3--(x1,y1.35)--z1.4l--z1.4r-- z1.3 & cycle; penpos1.5(hair,0);
+z1.5=0.219[z1.4l,(x2r,y1.4l)]; penpos1.6(hair,-43); z1.6r=(x2r,0.283[y1.4l,y5l]);
+penpos1.7(stem,57); z1.7r-z1.6l=whatever*dir47; x1.7r=0.636[x2r,x1.4]; penpos1.6'(hair,-43);
+z1.6'l=z1.7r; penpos1.8(stem,60);
+z1.8r=(x100+0.529w,0.579[y1.4l,y5l]); penpos30(hair,0); z30l=(x1r,1.186x_height); filldraw
+z1.3--z30l--z30r..z2r{down} --(x2r,y1.3)--z1.3 & cycle; penpos30'(hair,180); z30'=z30;
+penpos30''(hair,-90); z30''r=(x30l,h); penstroke z0.11e{z0.11-z0.9}.. z30''e..z30'e{z1.3-z30l};
+.endchar;
+
+.cmchar "The Fraktur ligature ss";
+.beginchar(oct"201",6.928lower_u#,1.366x_height#,3.167lower_u#);
+.adjust_fit(0,0.05alpha*w#+usual_right#-1.932u#);
+w':=0.655w;
+penpos0.1(hair,0); z0.1=(0.318w',-d); penpos0.2(1.313stem,0); z0.2=(x0.1,0.795x_height);
+penpos0.4(3/4stem,-90); z0.4r=(0.857w',y0.2); z0.3=(0,y0.2); z0.12=whatever[z0.1l,z0.2l];
+z0.13=whatever[z0.1r,z0.2r]; y0.12=y0.13=0.512x_height; z0.12'=z0.12-(0.5apex_o,0);
+z0.13'=z0.13+(0.5apex_o,0); z0.35=whatever[z0.12,z0.2l]; y0.35=y0.4; penpos0.5(0.917stem,0);
+z0.5=(x0.1,y0.4l); penpos0.6(hair,-68); z0.6-z0.5r=whatever*dir112; z0.6l-z0.5l=whatever*dir72;
+penpos0.7(hair,0); z0.7l=z0.5l; penpos0.9(hair,-22); penpos0.11(hair,-22);
+z0.11r=(w',1.321x_height); z0.11-z0.9=whatever*dir68; x0.9=0.831w'; penpos0.8(whatever,68);
+z0.8l=z0.9l; y0.8r=y0.11r; z0.14=(0.673w',1.366x_height); filldraw z0.1r..z0.13'..z0.2r...
+z0.5r---z0.6l & z0.6l--z0.35--z0.2l.. z0.12'..z0.1l--z0.1r & cycle; filldraw
+z0.3..z0.6{z0.6-z0.5l}--z0.2l--z0.3 & cycle; filldraw z0.6l{dir72}..z0.14{right}..
+z0.8r{dir-22}--z0.8l{dir158}.. z0.6r{z0.5l-z0.6}--z0.6l & cycle; penstroke z0.9e--z0.11e;
+z100=(x0.2r,0); penpos1.1(hair,0); z1.1=(0.318w'+x100,-d); penpos1.2(1.313stem,0);
+z1.2=(x1.1,0.795x_height); penpos1.4(3/4stem,-90); z1.4r=(0.857w'+x100,y1.2); z1.3=(x100,y1.2);
+z1.12=whatever[z1.1l,z1.2l]; z1.13=whatever[z1.1r,z1.2r]; y1.12=y1.13=0.512x_height;
+z1.12'=z1.12-(0.5apex_o,0); z1.13'=z1.13+(0.5apex_o,0); z1.35=whatever[z1.12,z1.2l]; y1.35=y1.4;
+penpos1.5(0.917stem,0); z1.5=(x1.1,y1.4l); penpos1.6(hair,-68); z1.6-z1.5r=whatever*dir112;
+z1.6l-z1.5l=whatever*dir72; penpos1.7(hair,0); z1.7l=z1.5l; penpos1.9(hair,-22);
+penpos1.11(hair,-22); z1.11r=(x100+w',1.321x_height); z1.11-z1.9=whatever*dir68; x1.9=0.831w'+x100;
+penpos1.8(whatever,68); z1.8l=z1.9l; y1.8r=y1.11r; z1.14=(0.673w'+x100,1.366x_height); filldraw
+z1.1r..z1.13'..z1.2r... z1.5r---z1.6l & z1.6l--z1.35--z1.2l.. z1.12'..z1.1l--z1.1r & cycle;
+filldraw z1.3..z1.6{z1.6-z1.5l}--z1.2l--z1.3 & cycle; filldraw z1.6l{dir72}..z1.14{right}..
+z1.8r{dir-22}--z1.8l{dir158}.. z1.6r{z1.5l-z1.6}--z1.6l & cycle; penstroke z1.9e--z1.11e;
+.endchar;
+
+.cmchar "The Fraktur ligature sf";
+.beginchar(oct"203",6.928lower_u#,1.366x_height#,3.167lower_u#);
+.adjust_fit(0,0.05alpha*w#+usual_right#-0.85u#);
+w':=0.655w; penpos0.1(hair,0); z0.1=(0.318w',-d); penpos0.2(1.313stem,0);
+z0.2=(x0.1,0.795x_height); penpos0.4(3/4stem,-90); z0.4r=(0.857w',y0.2); z0.3=(0,y0.2);
+z0.12=whatever[z0.1l,z0.2l]; z0.13=whatever[z0.1r,z0.2r]; y0.12=y0.13=0.512x_height;
+z0.12'=z0.12-(0.5apex_o,0); z0.13'=z0.13+(0.5apex_o,0); z0.35=whatever[z0.12,z0.2l]; y0.35=y0.4;
+penpos0.5(0.917stem,0); z0.5=(x0.1,y0.4l); penpos0.6(hair,-68); z0.6-z0.5r=whatever*dir112;
+z0.6l-z0.5l=whatever*dir72; penpos0.7(hair,0); z0.7l=z0.5l; penpos0.9(hair,-22);
+penpos0.11(hair,-22); z0.11r=(w',1.321x_height); z0.11-z0.9=whatever*dir68; x0.9=0.831w';
+penpos0.8(whatever,68); z0.8l=z0.9l; y0.8r=y0.11r; z0.14=(0.673w',1.366x_height); filldraw
+z0.1r..z0.13'..z0.2r... z0.5r---z0.6l & z0.6l--z0.35--z0.2l.. z0.12'..z0.1l--z0.1r & cycle;
+filldraw z0.3..z0.6{z0.6-z0.5l}--z0.2l--z0.3 & cycle; filldraw z0.6l{dir72}..z0.14{right}..
+z0.8r{dir-22}--z0.8l{dir158}.. z0.6r{z0.5l-z0.6}--z0.6l & cycle; penstroke z0.9e--z0.11e;
+z100=(x0.2r,0); penpos1.1(hair,0); z1.1=(0.318w'+x100,-d); penpos1.2(1.313stem,0);
+z1.2=(x1.1,0.795x_height); penpos1.4(3/4stem,-90); z1.4r=(0.857w'+x100,y1.2); z1.3=(x100,y1.2);
+z1.12=whatever[z1.1l,z1.2l]; z1.13=whatever[z1.1r,z1.2r]; y1.12=y1.13=0.512x_height;
+z1.12'=z1.12-(0.5apex_o,0); z1.13'=z1.13+(0.5apex_o,0); z1.35=whatever[z1.12,z1.2l]; y1.35=y1.4;
+penpos1.5(0.917stem,0); z1.5=(x1.1,y1.4l); penpos1.6(hair,-68); z1.6-z1.5r=whatever*dir112;
+z1.6l-z1.5l=whatever*dir72; penpos1.7(hair,0); z1.7l=z1.5l; penpos1.9(hair,-22);
+penpos1.11(hair,-22); z1.11r=(x100+w',1.321x_height); z1.11-z1.9=whatever*dir68; x1.9=0.831w'+x100;
+penpos1.8(whatever,68); z1.8l=z1.9l; y1.8r=y1.11r; z1.14=(0.673w'+x100,1.366x_height); filldraw
+z1.1r..z1.13'..z1.2r... z1.5r---z1.6l & z1.6l--z1.35--z1.2l.. z1.12'..z1.1l--z1.1r & cycle;
+filldraw z1.3..z1.6{z1.6-z1.5l}--z1.2l--z1.3 & cycle; filldraw z1.6l{dir72}..z1.14{right}..
+z1.8r{dir-22}--z1.8l{dir158}.. z1.6r{z1.5l-z1.6}--z1.6l & cycle; penstroke z1.9e--z1.11e; filldraw
+z1.5--z1.4l--z1.4r--z1.2--z1.5 & cycle;
+.endchar;
+
+.cmchar "The Fraktur ligature ff";
+.beginchar(oct"204",6.928lower_u#,1.366x_height#,3.167lower_u#);
+.adjust_fit(0,0.05alpha*w#+usual_right#-0.85u#);
+w':=0.655w; penpos0.1(hair,0); z0.1=(0.318w',-d); penpos0.2(1.313stem,0);
+z0.2=(x0.1,0.795x_height); penpos0.4(3/4stem,-90); z0.4r=(0.857w',y0.2); z0.3=(0,y0.2);
+z0.12=whatever[z0.1l,z0.2l]; z0.13=whatever[z0.1r,z0.2r]; y0.12=y0.13=0.512x_height;
+z0.12'=z0.12-(0.5apex_o,0); z0.13'=z0.13+(0.5apex_o,0); z0.35=whatever[z0.12,z0.2l]; y0.35=y0.4;
+penpos0.5(0.917stem,0); z0.5=(x0.1,y0.4l); penpos0.6(hair,-68); z0.6-z0.5r=whatever*dir112;
+z0.6l-z0.5l=whatever*dir72; penpos0.7(hair,0); z0.7l=z0.5l; penpos0.9(hair,-22);
+penpos0.11(hair,-22); z0.11r=(w',1.321x_height); z0.11-z0.9=whatever*dir68; x0.9=0.831w';
+penpos0.8(whatever,68); z0.8l=z0.9l; y0.8r=y0.11r; z0.14=(0.673w',1.366x_height); filldraw
+z0.1r..z0.13'..z0.2r... z0.5r---z0.6l & z0.6l--z0.35--z0.2l.. z0.12'..z0.1l--z0.1r & cycle;
+filldraw z0.3..z0.6{z0.6-z0.5l}--z0.2l--z0.3 & cycle; filldraw z0.6l{dir72}..z0.14{right}..
+z0.8r{dir-22}--z0.8l{dir158}.. z0.6r{z0.5l-z0.6}--z0.6l & cycle; penstroke z0.9e--z0.11e;
+z100=(x0.2r,0); penpos1.1(hair,0); z1.1=(0.318w'+x100,-d); penpos1.2(1.313stem,0);
+z1.2=(x1.1,0.795x_height); penpos1.4(3/4stem,-90); z1.4r=(0.857w'+x100,y1.2); z1.3=(x100,y1.2);
+z1.12=whatever[z1.1l,z1.2l]; z1.13=whatever[z1.1r,z1.2r]; y1.12=y1.13=0.512x_height;
+z1.12'=z1.12-(0.5apex_o,0); z1.13'=z1.13+(0.5apex_o,0); z1.35=whatever[z1.12,z1.2l]; y1.35=y1.4;
+penpos1.5(0.917stem,0); z1.5=(x1.1,y1.4l); penpos1.6(hair,-68); z1.6-z1.5r=whatever*dir112;
+z1.6l-z1.5l=whatever*dir72; penpos1.7(hair,0); z1.7l=z1.5l; penpos1.9(hair,-22);
+penpos1.11(hair,-22); z1.11r=(x100+w',1.321x_height); z1.11-z1.9=whatever*dir68; x1.9=0.831w'+x100;
+penpos1.8(whatever,68); z1.8l=z1.9l; y1.8r=y1.11r; z1.14=(0.673w'+x100,1.366x_height); filldraw
+z1.1r..z1.13'..z1.2r... z1.5r---z1.6l & z1.6l--z1.35--z1.2l.. z1.12'..z1.1l--z1.1r & cycle;
+filldraw z1.3..z1.6{z1.6-z1.5l}--z1.2l--z1.3 & cycle; filldraw z1.6l{dir72}..z1.14{right}..
+z1.8r{dir-22}--z1.8l{dir158}.. z1.6r{z1.5l-z1.6}--z1.6l & cycle; penstroke z1.9e--z1.11e; filldraw
+z1.5--z1.4l--z1.4r--z1.2--z1.5 & cycle; filldraw z0.5--z0.4l--z0.4r--z0.2--z0.5 & cycle;
+.endchar;
+
+.cmchar "The Fraktur ligature sz";
+.beginchar(oct"032",5.444lower_u#,1.366x_height#,3.167lower_u#);
+.adjust_fit(0,0.05alpha*w#+usual_right#+0.5u#); w':=0.834w;
+penpos0.1(hair,0); z0.1=(0.318w',-d); penpos0.2(1.313stem,0);
+z0.2=(x0.1,0.795x_height); penpos0.4(3/4stem,-90); z0.4r=(0.857w',y0.2);
+z0.3=(0,y0.2); z0.12=whatever[z0.1l,z0.2l]; z0.13=whatever[z0.1r,z0.2r];
+y0.12=y0.13=0.512x_height; z0.12'=z0.12-(0.5apex_o,0);
+z0.13'=z0.13+(0.5apex_o,0); z0.35=whatever[z0.12,z0.2l]; y0.35=y0.4;
+penpos0.5(0.917stem,0); z0.5=(x0.1,y0.4l); penpos0.6(hair,-68);
+z0.6-z0.5r=whatever*dir112; z0.6l-z0.5l=whatever*dir72; penpos0.7(hair,0);
+z0.7l=z0.5l; penpos0.9(hair,-22); penpos0.11(hair,-22);
+z0.11r=(w',1.321x_height); z0.11-z0.9=whatever*dir68; x0.9=0.831w';
+penpos0.8(whatever,68); z0.8l=z0.9l; y0.8r=y0.11r;
+z0.14=(0.673w',1.366x_height); filldraw z0.1r..z0.13'..z0.2r... z0.5r---z0.6l &
+z0.6l--z0.35--z0.2l.. z0.12'..z0.1l--z0.1r & cycle; filldraw
+z0.3..z0.6{z0.6-z0.5l}--z0.2l--z0.3 & cycle; filldraw
+z0.6l{dir72}..z0.14{right}.. z0.8r{dir-22}--z0.8l{dir158}..
+z0.6r{z0.5l-z0.6}--z0.6l & cycle; penstroke z0.9e--z0.11e;
+z100=(x0.2r-hair,hair); w':=0.633w; d':=0.679w; penpos1(hair,122);
+penpos2(hair,180); penpos3(0.625stem,-42); penpos4(1.313stem,37);
+z1l=(w',0.524h)+z100; z2r=(x0.2,-0.1d'+y100); z3r=(0.548w',-0.8d')+z100;
+z4r=(w'+u,0.103x_height)+z100; penstroke z2e{down}..z3e{right} ..z4e{up};
+penpos5(hair,-90); z5=(0,0.414x_height)+z100; z6-z5=whatever*dir38;
+x6=0.484w'+x100; filldraw z5r{right}..z4l{down}-- z4r{up}..z6--z5r &
+cycle; penpos7(4/3stem,43); z7=(0.629w',0.734x_height)+z100;
+z8=(0.532w',x_height+apex_o)+z100; z9=(0.081w',0.793x_height)+z100;
+penpos9'(hair,-90); z9'l=z9; penstroke z5e{z6-z5r}..z7e{up}; filldraw
+z7l{up}..z9'r{z9-z8}--z9--z8.. z7r{down}--z7l & cycle; .endchar;
+
+.cmchar "The Fraktur ligature tz";
+.beginchar(oct"213",4.75lower_u#,1.186x_height#,3.167lower_u#);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#+u#);
+w':=0.994w; penpos1(stem,0); penpos2(stem,0); z1=(0.241w',foot); z2=(x1,0.828x_height);
+z3=(1/4[x2l,x2r],x_height+foot); z3'=(x2r,y3); z3''=(x2l,0.633(y3-y2)+y2); penpos4(hair,74);
+z4=(0.5x2l,1.259x_height); penpos5(hair,-90); z5l=(x2r+0.875stem,h); penstroke z1e--z2e;
+penpos5''(hair,-90); z5''=z5+(hair,-eps); penpos5'(hair,-40); z5'l=(0,0.097x_height);
+penpos6(hair,-37); penpos7(hair,-37); y6r=-apex_o; x6r=x1r; z7-z6=whatever*dir48; x7=0.632w;
+z6'=whatever[z6,z7]; y6'=y6l+apex_o; z15=whatever[z6l,z7l]; z15-z1r=whatever*dir-30; penstroke
+z6e---z7e; filldraw z5'l..z1l{up}--z1r-- z15--z7l-- z6r---z6l...z5'r--z5'l & cycle;
+penpos1.4(3/4stem,-90); z1.4=(x1r,.859x_height); z1.3=(0,y1.4r); z1.35=(x2l,y1.4l); filldraw
+z1.3--(x1,y1.35)--z1.4l--z1.4r-- z1.3 & cycle; penpos1.5(hair,0); z1.5=0.219[z1.4l,(x2r,y1.4l)];
+penpos1.6(hair,-43); z1.6r=(x2r,0.283[y1.4l,y5l]); penpos1.7(stem,57); z1.7r-z1.6l=whatever*dir47;
+x1.7r=0.636[x2r,x1.4]; penpos1.6'(hair,-43); z1.6'l=z1.7r;
+penpos1.8(stem,60); z1.8r=(w,0.579[y1.4l,y5l]); penpos30(hair,0); z30l=(x1r,h); filldraw
+z1.3--z30l--z30r..z2r{down} --(x2r,y1.3)--z1.3 & cycle; z100=(x1r-hair,hair); w':=0.725w;
+d':=0.679d; penpos0.1(hair,122); penpos0.2(hair,180); penpos0.3(0.625stem,-42);
+penpos0.4(1.313stem,37); z0.1l=(w',0.524h)+z100; z0.2r=(0,-0.1d')+z100; z0.3r=(0.548w',-d')+z100;
+z0.4r=(w'+u,0.103x_height)+z100; penstroke z0.2e{down}..z0.3e{right} ..z0.4e{up};
+penpos0.5(hair,-90); z0.5=(0,0.414x_height)+z100; z0.6-z0.5=whatever*dir38; x0.6=0.484w'+x100;
+filldraw z0.5r{right}..z0.4l{down}-- z0.4r{up}..z0.6--z0.5r & cycle; penpos0.7(4/3stem,43);
+z0.7=(0.629w',0.734x_height)+z100; z0.8=(0.532w',x_height+apex_o)+z100;
+z0.9=(0.081w',0.793x_height)+z100; penpos0.9'(hair,-90); z0.9'l=z0.9; penstroke
+z0.5e{z0.6-z0.5r}..z0.7e{up}; filldraw z0.7l{up}..z0.9'r{z0.9-z0.8}--z0.9--z0.8..
+z0.7r{down}--z0.7l & cycle; filldraw (x1r,y1.4l){right}.. z0.8{z0.8-z0.9}--z0.9--(x1r,y1.4l) &
+cycle;
+.endchar;
+
+numeric nombre; nombre:= 5gencoef[1,1.155556];
+
+.cmchar "The Fraktur letter a with little-e Umlaut";
+.beginchar(oct"211",nombre*lower_u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#-gencoef[0.5u#,0]);
+penpos1(stem,0); penpos2(stem,0); penpos3(gencoef[hair,2hair],-51);
+penpos4(hair,-52); penpos5(hair,-52); penpos6(whatever,angle((w,0.35h)));
+penpos8(whatever,0); penpos9(hair,gencoef[-30,-50]); penpos11(whatever,0);
+penpos12(whatever,-90); penpos11''(hair,-30);
+z1=(gencoef[0.7w,0.779w],gencoef[0.345h,0.24h]);
+z2=(x1,gencoef[0.807h,0.74h]); z3r=(gencoef[0.911w,w],gencoef[0.925h,0.829h]);
+z4l=(gencoef[x2l,0.452w],h+apex_o); z5=whatever[(0,gencoef[0.74h,0.685h]),z4];
+x5l=gencoef[1/3w,0.288w]; z6l=(0,gencoef[0.462h,0.342h]); x6r=1.083stem;
+z9=(gencoef[0.694w,0.764w],y1); z8l=whatever[z9l,(w,gencoef[0.623h,0.404h])];
+y8=-apex_o; z9r-z8r=whatever*(z9l-z8l); z8'=whatever[z8l,z9l]; y8'=y8+apex_o;
+z10=whatever[z8l,z9l]; y10=0.228h;
+z7=(gencoef[0.439w,0.481w],gencoef[0.203h,0.171h]);
+z11''r=(gencoef[0.78w,0.814w],-apex_o);
+z12r-z11''r=whatever*((gencoef[x9l,0.6w],y9l)-z8l);
+z12l-z11''l=whatever*((gencoef[x9l,0.6w],y9l)-z8l); x12=w; z11r=z11''r;
+z12l-z11l=whatever*((gencoef[x9l,0.6w],y9l)-z8l); z11'=whatever[z11l,z12l];
+y11'=y11+apex_o; z12'=whatever[z11l,z12l]; y12'=gencoef[0.217h,y7];
+penpos2'(stem,0); z2'=(x2,gencoef[y2,0.651h]);
+filldraw z11'..z1l{up}--z2l--z5r-- z4l{0.7[z2l,z3r]-z4l}..z3l--z3r..
+z2'r{down}---z1r...z12'--z12l--z12r --z11r--z11l--z11' & cycle; penstroke
+z6e{up}...z5e---z4e; penstroke z8e--z9e; filldraw z8'..z6l{up}--z6r{down}
+..z7..z10{z9-z8} & z10--z8' & cycle; z100=(x9l,1.214x_height);
+e_umlaut(100);.endchar;
+
+nombre:= 3.65gencoef[1,1.230769];
+
+.cmchar "The Fraktur letter e with little-e Umlaut";
+.beginchar(oct"220",nombre*lower_u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(stem,0); z1l=(0,0.486h);
+penpos7(gencoef[hair,1.2hair],gencoef[-45,-56]);
+penpos8(gencoef[hair,1.2hair],gencoef[-45,-56]);
+z8-z7=whatever*((w,gencoef[0.45h,0.356h])); x8r=gencoef[w,0.9w];
+x7r=gencoef[x1r,0.4125w]; y7r=-apex_o; z7'=whatever[z7,z8];
+y7'=gencoef[y7l,y7r]; x7':=gencoef[x7',x7r]; z9=whatever[z7l,z8l];
+x9=gencoef[0.8w,x8l]; z2=(gencoef[0.092w,0.07475w],0.828h);
+penpos3(gencoef[hair,1.2hair],-69); penpos4(gencoef[hair,1.2hair],-69);
+y3l=h+apex_o; penpos6(gencoef[hair,1.2hair],-69); z6r=(x1r,0.5h);
+z3l-z2=whatever*((w,gencoef[0.3h,0.25h])); x4r=w-gencoef[apex_o,0];
+z4-z6=whatever*((w,gencoef[0.3h,0.226h])); penpos5(1.083stem,angle(z4-z6));
+z5r=z4r; z5'=whatever[z2,z3l]; z5'-z5l=whatever*(z3-z4); penstroke z6e--z4e;
+filldraw z5l--z5'--z3l--z4r--z5l & cycle; penpos2'(gencoef[hair,1.2hair],-69);
+z3-z2'=whatever*(z4-z6); x2'r=gencoef[x1r,0.5w];
+z10=whatever[(0,0),(w,gencoef[0.301h,0.363h])]; y10=0.193h; penstroke z2'e--z3e;
+filldraw z7'{dir135}..z1l{up}..z2 &
+z2..z2'l{z4-z6}--z2'r{gencoef[down,z6-z4]}..{down}z1r..z10
+..z9{z8-z7}--z8l-- z8r--z7' & cycle; penstroke z7e--z8e; z100=(0.569w,1.214x_height);
+e_umlaut(100);
+.endchar;
+
+nombre:=4.75gencoef[1,1.140351];
+
+.cmchar "The Fraktur letter o with little-e Umlaut";
+.beginchar(oct"231",nombre*lower_u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(hair,-37); penpos2(hair,-37); z9=(0,gencoef[0.117h,0.19863h]);
+x1r=gencoef[0.5w,0.561224w]; y1r=-apex_o; penpos3(1.083stem,31);
+z3r=(w,gencoef[0.479h,0.589h]); penpos7(stem,0);
+z7=(gencoef[0.211w,0.184w],gencoef[0.866h,0.829h]); penpos4(1.083stem,22);
+z4-z7l=whatever*dir22; y4r=h+apex_o; penpos5'(hair,-68); z5'l=z7l;
+penpos6(hair,-68); z6l=z4; penpos8(stem,0); z8=(x7,gencoef[foot,0.267h]);
+z2-z1=whatever*((w,0.786h)); x8'=x8r;
+y8'=foot; z2-z8r=whatever*(z1-z9); penstroke z1e---z2e...z3e..
+z4e{dir122}; penstroke z5'e--z6e; penstroke z8e--z7e; filldraw
+z9..z8l{up}--z8r--z2l--z1l--z9 & cycle; z7'=whatever[z5',z6]; x7'=x7r; filldraw
+z7l--z7'--z7r--z7l & cycle; z100=(x4,1.214x_height);
+e_umlaut(100);
+.endchar;
+
+nombre:=6.15gencoef[1,1.107527];
+
+.cmchar "The Fraktur letter u with little-e Umlaut";
+.beginchar(oct"236",nombre*lower_u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(stem,0); z1=(0.727w,foot); penpos2(stem,0); z2=(x1,0.838h);
+penpos3(2/3hair,90); penpos4(2/3hair,0); penpos5(2/3hair,-90);
+penpos3'(1.5stem,0); z3'=(x1,0.5[y2,h+apex_o]); z3=z3'l; z5=z3'r;
+z4=(x1,h+apex_o); penpos16(hair,-32); penpos17(hair,-32); z17-z16=whatever*dir58;
+z16r=(0.795w,-apex_o); x17r=w; z18=whatever[z16,z17]; y18=0.179h; penstroke
+z1e--z2e; filldraw z1l--z16--z18{dir148}.. (x1r,0.31h){up}--z1l & cycle;
+penstroke z16e--z17e; filldraw z2l{up}..z3l{dir165}--
+z3r{dir15}..z4l{dir75}--z4r{dir-75} ..z5l{dir-15}--z5r{dir195}..z2r{down} --z2l
+& cycle; penpos11(stem,0); penpos12(stem,0); z11=(0.257w,foot);
+z12=(x11,0.71x_height); penpos7(hair,-41); penpos6(hair,-41); z7r=(x11r,-apex_o);
+z6r=whatever[z7r,z1l]; x6=x1; penpos9(hair,90); z9=(0.063w,0.11x_height);
+penpos8(whatever,0); z8r=z7r; x8l=x7l; z10=whatever[z7l,z6l];
+z10-z11r=whatever*dir-41; filldraw z9l{right}..z8l--z8r--z6r
+--z6l--z10--z11r--z11l{down}..z9r{dir195} --z9l & cycle; penstroke z11e--z12e;
+penpos14(hair,-38); z14l=(0,0.805x_height); z13=(0.217w,h+apex_o);
+z15-z14r=whatever*(z13-z14l); x15=0.097w; filldraw z13..z12r{down}--z12l{up}
+..z15--z14r--z14l--z13 & cycle; z100=(x2l-hair,1.214x_height);
+e_umlaut(100);
+.endchar;
+
+numeric nombre; nombre:= 5gencoef[1,1.155556];
+
+.cmchar "The Fraktur letter a with Umlaut";
+.beginchar(oct"212",nombre*lower_u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#-gencoef[0.5u#,0]);
+penpos1(stem,0); penpos2(stem,0); penpos3(gencoef[hair,2hair],-51);
+penpos4(hair,-52); penpos5(hair,-52); penpos6(whatever,angle((w,0.35h)));
+penpos8(whatever,0); penpos9(hair,gencoef[-30,-50]); penpos11(whatever,0);
+penpos12(whatever,-90); penpos11''(hair,-30);
+z1=(gencoef[0.7w,0.779w],gencoef[0.345h,0.24h]);
+z2=(x1,gencoef[0.807h,0.74h]); z3r=(gencoef[0.911w,w],gencoef[0.925h,0.829h]);
+z4l=(gencoef[x2l,0.452w],h+apex_o); z5=whatever[(0,gencoef[0.74h,0.685h]),z4];
+x5l=gencoef[1/3w,0.288w]; z6l=(0,gencoef[0.462h,0.342h]); x6r=1.083stem;
+z9=(gencoef[0.694w,0.764w],y1); z8l=whatever[z9l,(w,gencoef[0.623h,0.404h])];
+y8=-apex_o; z9r-z8r=whatever*(z9l-z8l); z8'=whatever[z8l,z9l]; y8'=y8+apex_o;
+z10=whatever[z8l,z9l]; y10=0.228h;
+z7=(gencoef[0.439w,0.481w],gencoef[0.203h,0.171h]);
+z11''r=(gencoef[0.78w,0.814w],-apex_o);
+z12r-z11''r=whatever*((gencoef[x9l,0.6w],y9l)-z8l);
+z12l-z11''l=whatever*((gencoef[x9l,0.6w],y9l)-z8l); x12=w; z11r=z11''r;
+z12l-z11l=whatever*((gencoef[x9l,0.6w],y9l)-z8l); z11'=whatever[z11l,z12l];
+y11'=y11+apex_o; z12'=whatever[z11l,z12l]; y12'=gencoef[0.217h,y7];
+penpos2'(stem,0); z2'=(x2,gencoef[y2,0.651h]);
+filldraw z11'..z1l{up}--z2l--z5r-- z4l{0.7[z2l,z3r]-z4l}..z3l--z3r..
+z2'r{down}---z1r...z12'--z12l--z12r --z11r--z11l--z11' & cycle; penstroke
+z6e{up}...z5e---z4e; penstroke z8e--z9e; filldraw z8'..z6l{up}--z6r{down}
+..z7..z10{z9-z8} & z10--z8' & cycle; z100=(x9l,1.214x_height);
+umlaut(100);.endchar;
+
+nombre:= 3.65gencoef[1,1.230769];
+
+.cmchar "The Fraktur letter e with Umlaut";
+.beginchar(oct"221",nombre*lower_u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(stem,0); z1l=(0,0.486h);
+penpos7(gencoef[hair,1.2hair],gencoef[-45,-56]);
+penpos8(gencoef[hair,1.2hair],gencoef[-45,-56]);
+z8-z7=whatever*((w,gencoef[0.45h,0.356h])); x8r=gencoef[w,0.9w];
+x7r=gencoef[x1r,0.4125w]; y7r=-apex_o; z7'=whatever[z7,z8];
+y7'=gencoef[y7l,y7r]; x7':=gencoef[x7',x7r]; z9=whatever[z7l,z8l];
+x9=gencoef[0.8w,x8l]; z2=(gencoef[0.092w,0.07475w],0.828h);
+penpos3(gencoef[hair,1.2hair],-69); penpos4(gencoef[hair,1.2hair],-69);
+y3l=h+apex_o; penpos6(gencoef[hair,1.2hair],-69); z6r=(x1r,0.5h);
+z3l-z2=whatever*((w,gencoef[0.3h,0.25h])); x4r=w-gencoef[apex_o,0];
+z4-z6=whatever*((w,gencoef[0.3h,0.226h])); penpos5(1.083stem,angle(z4-z6));
+z5r=z4r; z5'=whatever[z2,z3l]; z5'-z5l=whatever*(z3-z4); penstroke z6e--z4e;
+filldraw z5l--z5'--z3l--z4r--z5l & cycle; penpos2'(gencoef[hair,1.2hair],-69);
+z3-z2'=whatever*(z4-z6); x2'r=gencoef[x1r,0.5w];
+z10=whatever[(0,0),(w,gencoef[0.301h,0.363h])]; y10=0.193h; penstroke z2'e--z3e;
+filldraw z7'{dir135}..z1l{up}..z2 &
+z2..z2'l{z4-z6}--z2'r{gencoef[down,z6-z4]}..{down}z1r..z10
+..z9{z8-z7}--z8l-- z8r--z7' & cycle; penstroke z7e--z8e; z100=(0.569w,1.214x_height);
+umlaut(100);
+.endchar;
+
+nombre:=4.75gencoef[1,1.140351];
+
+.cmchar "The Fraktur letter o with Umlaut";
+.beginchar(oct"232",nombre*lower_u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(hair,-37); penpos2(hair,-37); z9=(0,gencoef[0.117h,0.19863h]);
+x1r=gencoef[0.5w,0.561224w]; y1r=-apex_o; penpos3(1.083stem,31);
+z3r=(w,gencoef[0.479h,0.589h]); penpos7(stem,0);
+z7=(gencoef[0.211w,0.184w],gencoef[0.866h,0.829h]); penpos4(1.083stem,22);
+z4-z7l=whatever*dir22; y4r=h+apex_o; penpos5'(hair,-68); z5'l=z7l;
+penpos6(hair,-68); z6l=z4; penpos8(stem,0); z8=(x7,gencoef[foot,0.267h]);
+z2-z1=whatever*((w,0.786h)); x8'=x8r;
+y8'=foot; z2-z8r=whatever*(z1-z9); penstroke z1e---z2e...z3e..
+z4e{dir122}; penstroke z5'e--z6e; penstroke z8e--z7e; filldraw
+z9..z8l{up}--z8r--z2l--z1l--z9 & cycle; z7'=whatever[z5',z6]; x7'=x7r; filldraw
+z7l--z7'--z7r--z7l & cycle; z100=(x4,1.214x_height);
+umlaut(100);
+.endchar;
+
+nombre:=6.15gencoef[1,1.107527];
+
+.cmchar "The Fraktur letter u with Umlaut";
+.beginchar(oct"237",nombre*lower_u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(stem,0); z1=(0.727w,foot); penpos2(stem,0); z2=(x1,0.838h);
+penpos3(2/3hair,90); penpos4(2/3hair,0); penpos5(2/3hair,-90);
+penpos3'(1.5stem,0); z3'=(x1,0.5[y2,h+apex_o]); z3=z3'l; z5=z3'r;
+z4=(x1,h+apex_o); penpos16(hair,-32); penpos17(hair,-32); z17-z16=whatever*dir58;
+z16r=(0.795w,-apex_o); x17r=w; z18=whatever[z16,z17]; y18=0.179h; penstroke
+z1e--z2e; filldraw z1l--z16--z18{dir148}.. (x1r,0.31h){up}--z1l & cycle;
+penstroke z16e--z17e; filldraw z2l{up}..z3l{dir165}--
+z3r{dir15}..z4l{dir75}--z4r{dir-75} ..z5l{dir-15}--z5r{dir195}..z2r{down} --z2l
+& cycle; penpos11(stem,0); penpos12(stem,0); z11=(0.257w,foot);
+z12=(x11,0.71x_height); penpos7(hair,-41); penpos6(hair,-41); z7r=(x11r,-apex_o);
+z6r=whatever[z7r,z1l]; x6=x1; penpos9(hair,90); z9=(0.063w,0.11x_height);
+penpos8(whatever,0); z8r=z7r; x8l=x7l; z10=whatever[z7l,z6l];
+z10-z11r=whatever*dir-41; filldraw z9l{right}..z8l--z8r--z6r
+--z6l--z10--z11r--z11l{down}..z9r{dir195} --z9l & cycle; penstroke z11e--z12e;
+penpos14(hair,-38); z14l=(0,0.805x_height); z13=(0.217w,h+apex_o);
+z15-z14r=whatever*(z13-z14l); x15=0.097w; filldraw z13..z12r{down}--z12l{up}
+..z15--z14r--z14l--z13 & cycle; z100=(x2l-hair,1.214x_height);
+umlaut(100);
+.endchar;
+
+.cmchar "The Fraktur hyphen";
+.beginchar(oct"055",4u#,x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(0.5stem,-90);
+penpos2(0.5stem,-90);
+penpos3(0.5stem,-90);
+penpos4(0.5stem,-90); penpos5(stem,-90);
+z2-z1=whatever*dir35;
+z4-z3=whatever*dir35;
+z3r=z5l; z5r=z1l; x1=0;
+x2=x4=w;
+y1r=foot;
+penstroke z1e--z2e;
+penstroke z3e--z4e;
+.endchar;
+
+def par_s(suffix $) =
+h':=cap_height; w':=0.379h';
+z$.1=z$+(0.5w',0.5h');
+penpos$.1(stem,30);
+penpos$.2(2hair,0);
+penpos$.3(hair,-90);
+penpos$.4(hair,180);
+penpos$.5(hair,90);
+z$.2l=z$+(0,0.8h'); z$.3l=(x$.1,y$+h');
+z$.4=z$+(0.84w',0.886h');
+z$.5=(x$.4r,y$+0.826h');
+penstroke z$.2e{up}..z$.3e
+{right} if panw: ..z$.4e{down}..z$.5e{left} fi;
+penpos$.6(2hair,90); z$.6l=z$.5l;
+if panw:
+filldraw z$.6r..z$.6l..z$.6r & cycle;
+fi
+penpos$.1'(stem,-150);
+penpos$.2'(2hair,180);
+penpos$.3'(hair,90);
+penpos$.4'(hair,0);
+penpos$.5'(hair,-90);
+z$.1=z$.1';
+z$.2'r=z$+(w',0.2h'); z$.3'r=(x$.1,y$);
+z$.4'=z$+(0.16w',0.114h');
+z$.5'=(x$.4'r,y$+0.174h');
+penpos$.2''(2hair,0); z$.2''=z$.2';
+z$.25=(z$.2''{up}..z$.2{up})
+intersectionpoint (z$+(0,0.5h')--
+z$+(w',0.5h'));
+penpos$.25(stem,30);
+penstroke z$.2''e{up}..z$.25e..
+z$.2e{up};
+penstroke z$.2'e{down}..z$.3'e
+{left} if katw: ..z$.4'e{up}..z$.5'e{right} fi;
+penpos$.6'(2hair,-90); z$.6'l=z$.5'l;
+if katw:
+filldraw z$.6'r..z$.6'l..z$.6'r & cycle;
+fi
+enddef;
+
+.cmchar "The Fraktur paragraph sign";
+.beginchar(oct"074",7.4u#,cap_height#,3.167u#);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+boolean panw, katw;
+panw:=true; katw:=false;
+z0=(0.17h,0); par_s(0);
+panw:=false; katw:=true;
+z1=(0,-0.3h); par_s(1);
+.endchar;
+
+.cmchar "The Fraktur paragraph sign";
+.beginchar(oct"244",7.4u#,cap_height#,3.167u#);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+boolean panw, katw;
+panw:=true; katw:=false;
+z0=(0.17h,0); par_s(0);
+panw:=false; katw:=true;
+z1=(0,-0.3h); par_s(1);
+.endchar;
+
+.cmchar "The Fraktur Mitlaut J proposed by Sanders in 1879";
+.beginchar("$",8.541u#,cap_height#,2.497u#);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(cap_hair,28); penpos2(cap_hair,-17.5); penpos3(0.889cap_stem,-116); penpos4(cap_stem,-126);
+penpos5(cap_hair,-44); penpos6(1.056cap_stem,53); penpos7(1.056cap_stem,21); penpos8(cap_hair,-90);
+penpos9(cap_hair,180); z1=(0.115w,-0.886d); z2r=(x1,-0.519d); z3=(0.234w,-0.1d); z4r=(0.517w,-d);
+z5=(0.795w,-0.329d); z6r=(0.966w,0.196h); z7=(0.636w,0.56h); z8=(0.808w,0.683h); z9l=(x6r,0.554h);
+penstroke z1e..z2e{up}..z3e{right} ..z4e{right}..z5e..z6e{up}..z7e{up} ..z8e{right}..z9e{down};
+penpos10(1.037cap_stem,50); penpos11(cap_hair,-45); penpos12(0.889cap_stem,43);
+penpos13(1.185cap_stem,-146); penpos14(0.741cap_stem,-119); penpos15(cap_hair,0);
+penpos16(cap_hair,28); z10l=z11r=(0.1w,0.515h); z12l=(0,0.69h); z13l=(0.506w,h+apex_o);
+z14r=z8l+(0,0.035h); z15r=(w,0.875h); z16=(x15l,0.924h); filldraw z11l{z12r-z11l}..z12l{up}--
+z12r{down}..z10r--z10l--z11l & cycle; penstroke z12e{up}..z13e{right}..
+z14e{right}..z15e{up}..z16e{dir118}; penpos20(hair,-41); penpos21(hair,-41);
+penpos22(2/3cap_stem,-90); penpos23(0.593cap_stem,-113); z20l=(0,0.235h); z21=(x8,0.48y8);
+z22=(0.261w,0.328h); z23=(0.586w,0.251h); penstroke z20e..z22e{right}..z23e{right} ..z21e;
+.endchar;
+
+.cmchar "The Fraktur symbol for etc"; .beginchar(oct"311",8.194lower_u#,x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#); penpos1(hair,-52);
+penpos2(hair,-52); penpos3(stem,48); penpos4(stem,48); penpos5(hair,-42); penpos6(1.2stem,34);
+penpos8(hair,-49); z1r=(0.22w,-apex_o); z2-z1=whatever*dir38; x2=0.458w; z3l=z1r;
+z4l-z1r=whatever*dir140; x4l=0; z5l=z4; y6=0.707h; x6r=x2r; z7=(0.231w,h+apex_o);
+z9=(0.163w,0.841h); z8l=(0,0.793h); penstroke z1e--z2e; penstroke z3e--z4e; penstroke
+z5e{z4r-z4l}..z6e{up}; filldraw z6r{up}..z7{dir160} & z7-- z8l--z8r{z7-z8l}..z9{right}..z6l{down}
+--z6r & cycle; penpos10(hair,-59); penpos11(hair,-59); penpos12(whatever,50); penpos13(1.2stem,30);
+penpos14(stem,11.5); penpos15(hair,-75); penpos16(0.857stem,14); penpos17(0.857stem,14);
+z11r=(0.695w,-apex_o); z10-z11=whatever*dir31; x10r=w; z12l=z11r; z12r=whatever[z11l,z10l];
+z13=(0.631w,0.49h); z14=(0.678w,0.859h); z16r=(w,y8l); z15-z16r=whatever*dir105; y15l=h+apex_o;
+z17r=z15; penstroke z11e--z10e; penstroke z12e..z13e{up}..z14e.. z15e{z16r-z16l}; penstroke
+z16e--z17e;
+.endchar;
+
+.cmchar "Scandinavian circle accent";
+.beginchar(oct"027",9u#,cap_height#,0);
+.adjust_fit(0,0);
+penpos0.1(2u,45); z0.1=z0=(0.5w,1.283x_height);
+pickup pensquare yscaled 0.5hair xscaled 0.3[hair,stem] rotated 30;
+z0.2=z0.1r; z0.3=z0.1l; rt x0.4=rt x0.2; top y0.4=y0;
+draw z0.2..z0.3..z0.2;
+penlabels(1,2,3,4); .endchar;
+
+.cmchar "The Fraktur letter dotless j";
+.beginchar(oct"021",2.944lower_u#,x_height#,1.611lower_u#);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(hair,47); penpos2(1.3hair,-90); z2r=(0.16w,-d); penpos5(stem,0);
+z5=(0.523w,0.124h); penpos3(2/3stem,0); z3l=(x5l,0.048h); penpos6(stem,0);
+z6=(x5,0.824h); penpos7(hair,-90); z7=(0.906w,0.91h); penpos8(hair,-48);
+penpos9(hair,-48); z8l=(0.481w,h+apex_o); z8-z9=whatever*((w,0.3448h)); x9l=0;
+z9'=whatever[z9r,z8r]; y9'=y9l+apex_o; z1r=(x5r+0.5stem,-0.207d);penstroke
+z2e..z3e{up}; penstroke z5e--z6e; filldraw z1r{dir137}..z5r{up}--z5l
+--z3l--z3r..z1l{dir-43}--z1r & cycle; filldraw z6r{up}..z7r{right}--z7l...
+z8r---z8l--z9l--z9r--z9'.. z6l{down}--z6r & cycle; penpos11(hair,0);
+z11r=(x8l,1.076h); z12=(0.571w,1.279h); z13=(0.744w,1.238h);
+.endchar;
+
+.cmchar "The Fraktur letter dotless i";
+.beginchar(oct"020",2.889lower_u#,x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(hair,-44); penpos2(hair,-44); penpos3(hair,-44); z1l=(0,0.834h);
+z2-z1=whatever*((w,0.37h)); y2l=h+apex_o; z3=whatever[z2l,z2r]; x3r=x5r+0.5stem;
+z4=(0.606w,0.931h); penpos5(stem,0); z5=(0.433w,0.759h); z6=(x5,0.238h);
+penpos6(stem,0); z7=(x6l,0.079h); z8-z7=whatever*dir-40; y8=-apex_o;
+penpos9(hair,-38); z9r-z8=whatever*dir52; x9r=w; z10=(0.788w,0.152h);
+z5'=whatever[z1,z2]; x5'=x5l; penstroke z5e--z6e; penstroke z1e--z2e; filldraw
+z5r{up}..z3r--z2--z5'--z5l{down} --z5r & cycle; filldraw z8--z9r--z9l{z8-z9r}
+..z6r{up}--z6l{down}..{z8-z7}z8 & cycle; penpos11(hair,0); z11r=(x2l,1.076h);
+z12=(0.56w,1.279h); z13=(0.73w,1.238h);
+.endchar;
+
diff --git a/fonts/gothic/yfrak/yfraknum.mf b/fonts/gothic/yfrak/yfraknum.mf
new file mode 100644
index 0000000000..56ef6327e9
--- /dev/null
+++ b/fonts/gothic/yfrak/yfraknum.mf
@@ -0,0 +1,194 @@
+.cmchar "The Fraktur numeral 1";
+.beginchar("1",2.778u#,1.2x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos2(w,0); z2=(0.5w,0);
+penpos1(stem,0); z1=(0.5w,foot);
+penpos3(hair,90); penpos4(hair,90);
+z3l=z2l; z4l=z2r; penpos5(stem,0);
+z5=(x1,0.79h); penpos6(hair,0);
+z6r=(x5r,h); penpos7(1.5hair,90);
+z7=(0,0.9h);
+filldraw z4l--z4r...z1r---z6r--
+z6l..z7r{left}--z7l{right}...
+z5l---z1l...z3r--z2l--z4l & cycle;
+.endchar;
+
+.cmchar "The Fraktur numeral 2";
+.beginchar("2",5.694u#,1.2x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(0.625stem,-90); penpos2(stem,-90);
+penpos3(4/3stem,-115);
+z1r=(0,0); z2r=(0.722w,0.026h);
+x3l=w; y3r=-apex_o;
+penstroke z1e..z2e{right}..z3e;
+penpos4(0.917stem,20);
+z4r=(0.966w,0.721h);
+z5=(0.478w,0.848h);
+z6=(0.244w,h+apex_o);
+z7=(0.093w,0.822h);
+penpos8(hair,13); z8=(0.146w,3/4h);
+penstroke z1e{dir44}..z4e{up};
+filldraw z8r..z5{right}..z4l{down}
+--z4r{up}..z6{dir173} & z6--z7--z8l--z8r &
+cycle;
+.endchar;
+
+.cmchar "The Fraktur numeral 3";
+.beginchar("3",5.5u#,1.2x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(1.5hair,-90); penpos2(stem,18);
+penpos3(1.833stem,35);
+penpos4(hair,-90); penpos5(0.625stem,0);
+z1r=(0,-apex_o); z2=(0.788w,0.353h);
+z4r=(0.167w,0.489h); z5r=(w,h);
+z3l=z4r;
+penstroke z1e{dir12}..z2e{up}..z3e{left};
+penstroke z4e{dir30}..z5e{up};
+penpos7(0.917stem,-90);
+penpos8(0.417stem,-17);
+penpos9(hair,0);
+z8l=(0,0.796h); z9l-z8l=whatever*dir73;
+y9=h+apex_o; z7l=(0.273w,h-apex_o);
+z6=(z4l{dir30}..z5l{up}) intersectionpoint
+((0,y7r+apex_o)--(w,y7r+apex_o));
+filldraw z8l--z9l--z9r..z7l{right}...
+z5l---z5r--z6..z7r{left}..z8r{z8l-z9l}
+--z8l & cycle;
+.endchar;
+
+.cmchar "The Fraktur numeral 4";
+.beginchar("4",7.361u#,1.2x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(stem,0); penpos2(stem,0);
+z1=(0.619w,foot); z2=(x1,0.831h);
+z3=(x1,h); z4=(0,0.444h);
+penpos6(0.521stem,90); z6=(0.796w,0.45h);
+y5=y6l; (x2r,h)-z5=whatever*dir50;
+z4'=(1/45w,y6r); z3'-z4'=whatever*dir50;
+x3'=x2l; penpos9(hair,90);
+penpos10(hair,-90); z9l=(x1-stem,0);
+z10r=(x1+stem,0);
+z8=(w,0.521h); z7=(0.921w,0.376h);
+filldraw z9l--z9r...z1l---z2l--
+z2r---z1r...z10l--z10r--z9l & cycle;
+z3''=whatever[z5,(x2r,h)]; x3''=x2l;
+filldraw z2l--z3''--z5--z4'---z3'...
+z3{right}..{down}z2r--z2l & cycle;
+filldraw z6l---z5...z4{up}..z4'{z3'-z4'}
+& z4'---z6r...z8{right}--z7..
+z6l{left} & cycle;
+.endchar;
+
+.cmchar "The Fraktur numeral 5";
+.beginchar("5",5.528u#,1.2x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(0.458stem,-60); penpos2(1.125stem,25);
+penpos3(1.125stem,65); penpos4(1.167stem,53);
+penpos5(1.5hair,-25); penpos6(0.958stem,-77);
+z1=(0.221w,-apex_o); z2=(0.729w,0.417h);
+z3=(0.462w,0.578h); z4l=(0,0.618h);
+z5=(0.161w,0.814h); z6l=(0.349w,h);
+z7=(0.673w,0.98h); z8=(w,h);
+z9=(0.851w,0.828h);
+penstroke z1e{dir30}..z2e{up}..
+z3e{dir169}..z4e{up}..z5e{dir65}..z6e{right};
+filldraw z6l{right}..z7..z8 & z8--z9 &
+z9..{left}z6r--z6l & cycle;
+.endchar;
+
+.cmchar "The Fraktur numeral 6";
+.beginchar("6",6.056u#,1.2x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(1.4hair,-42); penpos2(1.208stem,40);
+penpos3(1.125stem,54); penpos4(1.2hair,-36);
+penpos5(stem,30); penpos7(hair,-45);
+z1l=(0.716w,h+apex_o); z2l=(0,0.342h);
+z3l=(0.674w,-apex_o);
+penstroke z3e..z2e{up}..z1e{dir48};
+z4r=z3; z5r=(w,0.362h); z6=(0.573w,0.753h);
+z6-z7l=whatever*dir45; y7l=0.555h;
+z8=(0.477w,0.566h);
+filldraw z4r---z3r...z5r{up}..z6{dir135}
+--z7l--z7r{z6-z7l}..z8{right}..z5l{down}
+..z4l{z3l-z3r}--z4r & cycle;
+.endchar;
+
+.cmchar "The Fraktur numeral 7";
+.beginchar("7",5.906u#,1.2x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(1.417stem,0); z1=(0.466w,0);
+penpos2(hair,-57); y2l=h; x2r=w;
+penstroke z1e{up}..z2e{dir64};
+penpos3(hair,-20); penpos5(stem,-90);
+z3l=(0,0.776h); z5l=(0.24w,h);
+z4-z3l=whatever*dir70; y4=h+apex_o;
+z6=(z5r--(w,y5r)) intersectionpoint
+(z1{up}..z2{dir64});
+filldraw z3r{z4-z3l}...z5r---z6--
+z2--z2l---z5l...z4 & z4--z3l--z3r &
+cycle;
+.endchar;
+
+.cmchar "The Fraktur numeral 8";
+.beginchar("8",6.722u#,1.2x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(1.042stem,61.5);
+penpos2(hair,110);
+z1=z2=(0.5w,0.51h);
+penpos3(0.917stem,24);
+z3l=(0.083w,0.721h);
+penpos5(0.917stem,-204);
+z5l=(w-x3l,y3l);
+penpos4(hair,-90); z4l=(0.5w,h+apex_o);
+penpos6(stem,180); z6r=(0,0.245h);
+penpos7(2hair,-90); z7r=(0.5w,-apex_o);
+penpos8(stem,0); z8r=(w,y6);
+penstroke z1e{dir151.5}..z3e{up}..
+z4e{right}..z5e{down}..z2e{dir200}..
+z6e{down}..z7e{right}..z8e{up}..
+z1e{dir151.5};
+.endchar;
+
+.cmchar "The Fraktur numeral 9";
+.beginchar("9",6.056u#,1.2x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(1.4hair,-42); penpos2(1.208stem,40);
+penpos3(1.125stem,54); penpos4(1.2hair,-36);
+penpos5(stem,30); penpos7(hair,-45);
+z1l=(0.716w,h+apex_o); z2l=(0,0.342h);
+z3l=(0.674w,-apex_o);
+penstroke z3e..z2e{up}..z1e{dir48};
+z4r=z3; z5r=(w,0.362h); z6=(0.573w,0.753h);
+z6-z7l=whatever*dir45; y7l=0.555h;
+z8=(0.477w,0.566h);
+filldraw z4r---z3r...z5r{up}..z6{dir135}
+--z7l--z7r{z6-z7l}..z8{right}..z5l{down}
+..z4l{z3l-z3r}--z4r & cycle;
+transform gurisma;
+gurisma=identity
+rotatedaround ((0.5w,0.5h),180);
+picture krufo;
+krufo:= currentpicture transformed
+gurisma;
+picture currentpicture;
+currentpicture=krufo;
+.endchar;
+
+.cmchar "The Fraktur numeral 0";
+.beginchar("0",7.332u#,1.2x_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(1.059stem,-143);
+penpos2(stem,-140);
+penpos3(1.05stem,-136);
+penpos4(1.1stem,-142);
+penpos5(hair,128);
+penpos6(hair,127);
+z1l=(0.535w,h+apex_o); z4r=(w-x1l,-apex_o);
+z2l=(w,0.528h); x3r=0; y3=y2l+apex_o;
+z5l=z4; z6r=z1;
+penstroke z1e{dir-25}..z2e{down}..
+z5e{z4r-z4l};
+penstroke z6e{z1r-z1l}..z3e{down}..
+z4e{dir-31};
+.endchar;
+
diff --git a/fonts/gothic/yfrak/yfrakoth.mf b/fonts/gothic/yfrak/yfrakoth.mf
new file mode 100644
index 0000000000..b0f939e8e0
--- /dev/null
+++ b/fonts/gothic/yfrak/yfrakoth.mf
@@ -0,0 +1,528 @@
+.cmchar "The Fraktur comma";
+.beginchar(",",5u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(0.23570*(x_height+2apex_o),45);
+penpos2(0.23570*(x_height+2apex_o),45);
+penpos3(0.23570*(x_height+2apex_o),45);
+penpos4(0.23570*(x_height+2apex_o),45);
+penpos5(0.23570*(x_height+2apex_o),45);
+penpos6(0.23570*(x_height+2apex_o),45);
+x1l=x3l=x5l=0.5w;
+z2r=z3l; z4r=z5l;
+z2-z1=whatever*dir135;
+z4-z3=whatever*dir135;
+z6-z5=whatever*dir135;
+y1l=-apex_o; y6r=x_height+apex_o;
+%penstroke z1e--z2e;
+penpos10(0.11785*(x_height+2apex_o),-30);
+z10l=(x2l-apex_o,-1.3y2r);
+filldraw z10l--z2l+(2hair,0){up}..{down}
+z1r--z10r--z10l & cycle;
+.endchar;
+
+.cmchar "The Fraktur colon";
+.beginchar(":",5u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(0.23570*(x_height+2apex_o),45);
+penpos2(0.23570*(x_height+2apex_o),45);
+penpos3(0.23570*(x_height+2apex_o),45);
+penpos4(0.23570*(x_height+2apex_o),45);
+penpos5(0.23570*(x_height+2apex_o),45);
+penpos6(0.23570*(x_height+2apex_o),45);
+x1l=x3l=x5l=0.5w;
+z2r=z3l; z4r=z5l;
+z2-z1=whatever*dir135;
+z4-z3=whatever*dir135;
+z6-z5=whatever*dir135;
+y1l=-apex_o; y6r=x_height+apex_o;
+penstroke z1e--z2e;
+penstroke z5e--z6e;
+.endchar;
+
+.cmchar "The Fraktur semicolon";
+.beginchar(";",5u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+penpos1(0.23570*(x_height+2apex_o),45);
+penpos2(0.23570*(x_height+2apex_o),45);
+penpos3(0.23570*(x_height+2apex_o),45);
+penpos4(0.23570*(x_height+2apex_o),45);
+penpos5(0.23570*(x_height+2apex_o),45);
+penpos6(0.23570*(x_height+2apex_o),45);
+x1l=x3l=x5l=0.5w;
+z2r=z3l; z4r=z5l;
+z2-z1=whatever*dir135;
+z4-z3=whatever*dir135;
+z6-z5=whatever*dir135;
+y1l=-apex_o; y6r=x_height+apex_o;
+penstroke z1e--z2e;
+penstroke z5e--z6e;
+penpos10(hair,-30); z10l=(x2l,-y2r);
+filldraw z10l{z1r-z10r}..z2l{z2-z1}
+& z2l--z1r--z10r--z10l & cycle;
+.endchar;
+
+.cmchar "The Fraktur point";
+.beginchar(".",5u#,x_height#,0);
+.adjust_fit(usual_left#,usual_right#);
+pointpoint;
+.endchar;
+
+.cmchar "Grave accent";
+.beginchar(oct"022",9u#,min(asc_height#,2x_height#),0);
+.adjust_fit(0,0);
+if serifs: pickup crisp.nib; x1-.5stem=hround 2u; x2=2/3[x1,w-x1];
+ y1+.5stem=h+eps; y2=max(2/3[h,x_height],x_height+o+hair);
+ numeric theta; theta=angle(z2-z1)+90;
+ pos1(stem,theta); pos2(hair,theta);
+ filldraw circ_stroke z1e--z2e; % diagonal
+else: pickup fine.nib; pos1(stem,0); pos2(vair,0);
+ lft x1l=hround 1.5u; rt x2r=hround(.5w+.25u+.5vair);
+ top y1=h; bot y2=vround 2/3[h,x_height];
+ filldraw stroke z1e--z2e; fi % diagonal
+penlabels(1,2); .endchar;
+
+.cmchar "Acute accent";
+.beginchar(oct"023",9u#,min(asc_height#,2x_height#),0);
+italcorr h#*slant-if serifs: 1.5 fi u#;
+.adjust_fit(0,0);
+if serifs: pickup crisp.nib; x1+.5stem=hround(w-2u); x2=2/3[x1,w-x1];
+ y1+.5stem=h+eps; y2=max(2/3[h,x_height],x_height+o+hair);
+ numeric theta; theta=angle(z2-z1)+90;
+ pos1(stem,theta); pos2(hair,theta);
+ filldraw circ_stroke z1e--z2e; % diagonal
+else: pickup fine.nib; pos1(stem,0); pos2(vair,0);
+ rt x1r=hround(w-1.5u); lft x2l=hround(.5w-.25u-.5vair);
+ top y1=h; bot y2=vround 2/3[h,x_height];
+ filldraw stroke z1e--z2e; fi % diagonal
+penlabels(1,2); .endchar;
+
+.cmchar "Hachek (check) accent";
+.beginchar(oct"024",9u#,.75[x_height#,min(asc_height#,2x_height#)],0);
+h':=vround min(asc_height,2x_height); % height of circumflex being inverted
+if serifs: italcorr h#*slant+.5hair#-1.75u#;
+ .adjust_fit(0,0);
+ pickup crisp.nib; pos2'(.5[vair,curve],90); top y2'r=h;
+ pos2(.5[vair,curve],90); x2=.5w;
+ x1=w-x3=good.x 2.25u; top y1=top y3=h; y1-y2=.5(y2'-x_height);
+ pos1(hair,angle(z2-z1)+90); pos3(hair,angle(z3-z2)+90);
+ filldraw stroke z1e--z2e--z3e; % diagonals
+else: italcorr h#*slant-.5stem#+.5vair#-.75u#;
+ .adjust_fit(0,0);
+ pickup fine.nib; pos1(vair,0); pos3(vair,0); x1=w-x3;
+ pos2(stem,0); bot y2=vround(1/12[x_height,h']+o); x2=.5w;
+ top y1=top y3=h+o; lft x1l=hround(rt x2r-3.25u-.5vair);
+ z0=whatever[z1r,z2r]=whatever[z2l,z3l];
+ y4l=y4r=y2; x4l=good.x .2[x2l,x2]; x4r=w-x4l;
+ filldraw z4l--z1l--z1r--z0--z3l--z3r--z4r--cycle; fi % diagonals
+penlabels(0,1,2,3,4); .endchar;
+
+.cmchar "Breve accent";
+.beginchar(oct"025",9u#,min(asc_height#,2x_height#),0);
+italcorr h#*slant+.5vair#-1.5u#;
+.adjust_fit(0,0);
+pickup crisp.nib; pos1(vair,-180); pos3(vair,0);
+top y1=top y3=h; lft x1r=w-rt x3r=hround(2u-.5vair);
+numeric mid_thickness; mid_thickness=vround 1/3[vair,stem];
+pos2(mid_thickness,-90); x2=.5w;
+bot y2r=vround max(x_height+o+tiny,1/3[x_height,h]+o-.5mid_thickness);
+filldraw stroke z1e{down}...z2e{right}...{up}z3e; % stroke
+penlabels(1,2,3); .endchar;
+
+.cmchar "Macron (bar) accent";
+numeric macron_breadth#; macron_breadth#=.2[vair#,stem#];
+.beginchar(oct"026",6u#,.4[x_height#,asc_height#]+macron_breadth#,0);
+italcorr h#*slant-.75u#;
+.adjust_fit(0,0);
+numeric macron_breadth; macron_breadth:=Vround .2[vair,stem];
+pickup if serifs: crisp.nib else: fine.nib fi;
+pos1(2/3stem,70); pos2(2/3stem,70);
+top y1r=top y2r=h+o; lft x1r=w-rt x2l=hround 1.25u;
+filldraw stroke z1e--z2e; % bar
+penlabels(1,2); .endchar;
+
+.cmchar "Cedilla accent";
+.beginchar(oct"030",8u#,0,.875desc_depth#);
+.adjust_fit(0,0);
+x1=.5w+.5u;
+if serifs: pickup crisp.nib; pos1(eps,0); pos2(stem,0);
+ pos3(vair,90); pos4(stem,0); pos5(vair,-90);
+ x1=x2; z3l=z2l; x4=x2+1.5u; x5=x3-1.5u;
+ bot y1=-o; bot y2=-vround 2/7d-o; y4=.5[y3,y5]; bot y5=-d-o;
+ filldraw stroke z1e--z2e; % stem
+ filldraw stroke z3e{right}...z4e{down}...{left}z5e; % hook
+else: pickup fine.nib; pos1(vair,0); top y1=-o-2;
+ pos2(.5[vair,stem],0); bot y2=-d-o; x2=x1-1.25u;
+ filldraw stroke z1e--z2e; fi % diagonal
+penlabels(1,2,3,4,5); .endchar;
+
+.cmchar "Circumflex (hat) accent";
+.beginchar(oct"136",9u#,min(asc_height#,2x_height#),0);
+if serifs: italcorr .5[x_height#,h#]*slant+.5hair#-1.75u#;
+ .adjust_fit(0,0);
+ pickup crisp.nib; pos2(.5[vair,curve],90); top y2r=h; x2=.5w;
+ x1=w-x3=good.x 2.25u; y1=y3=.5[x_height,y2];
+ pos1(hair,angle(z2-z1)+90); pos3(hair,angle(z3-z2)+90);
+ filldraw stroke z1e--z2e--z3e; % diagonals
+else: italcorr 2/3[x_height#,h#]*slant-.5stem#+.5vair#-.75u#;
+ .adjust_fit(0,0);
+ pickup fine.nib; pos1(vair,0); pos3(vair,0); x1=w-x3;
+ pos2(stem,0); top y2=h; x2=.5w; bot y1=bot y3=vround 2/3[h,x_height]-eps;
+ lft x1l=hround(rt x2r-3.25u-.5vair); % same slope as in the acute accent
+ z0=whatever[z1r,z2r]=whatever[z2l,z3l];
+ y4l=y4r=y2; x4l=good.x .2[x2l,x2]; x4r=w-x4l;
+ filldraw z4l--z1l--z1r--z0--z3l--z3r--z4r--cycle; fi % diagonals
+penlabels(0,1,2,3,4); .endchar;
+
+iff ligs>0: .cmchar "Dot accent";
+numeric dot_diam#; dot_diam#=max(dot_size#,cap_curve#);
+.beginchar(oct"137",5u#,min(asc_height#,10/7x_height#+.5dot_diam#),0);
+define_whole_blacker_pixels(dot_diam);
+italcorr h#*slant+.5dot_diam#-2u#;
+.adjust_fit(0,0);
+pickup tiny.nib; pos1(dot_diam,0); pos2(dot_diam,90);
+x1=x2=.5w; top y2r=h+1;
+if bot y2l<x_height+o+slab: y2l:=min(y2r-eps,x_height+o+slab+.5tiny); fi
+y1=.5[y2l,y2r]; dot(1,2); % dot
+penlabels(1,2); .endchar;
+
+iff ligs>0: .cmchar "Long Hungarian umlaut accent";
+.beginchar(oct"175",9u#,min(asc_height#,2x_height#),0);
+italcorr h#*slant-u#;
+.adjust_fit(0,0);
+x3-x1=x4-x2=hround 3u; y3=y1; y4=y2;
+if serifs: pickup crisp.nib; x3+.5stem=hround(w-1.5u); x2=2.5u;
+ y1+.5stem=h; y2=max(2/3[h,x_height],x_height+o+hair);
+ numeric theta; theta=angle(z2-z1)+90;
+ pos1(stem,theta); pos2(hair,theta);
+ pos3(stem,theta); pos4(hair,theta);
+ filldraw circ_stroke z1e--z2e; % left diagonal
+ filldraw circ_stroke z3e--z4e; % right diagonal
+else: pickup fine.nib; pos1(stem,0); pos2(vair,0);
+ pos3(stem,0); pos4(vair,0);
+ rt x3r=hround(w-1.5u); lft x4l=hround(.5w+u-.5vair);
+ top y1=h; bot y2=vround 2/3[h,x_height];
+ filldraw stroke z1e--z2e; % left diagonal
+ filldraw stroke z3e--z4e; fi % right diagonal
+penlabels(1,2,3,4); .endchar;
+
+.cmchar "Tilde (squiggle) accent";
+.beginchar(oct"176",9u#,min(asc_height#,10/7x_height#+.5dot_size#),0);
+italcorr h#*slant-u#;
+.adjust_fit(0,0);
+if serifs: numeric theta; theta=angle(1/6(6u-vair),1/4(h-x_height));
+ pickup crisp.nib; numeric mid_width; mid_width=.4[vair,stem];
+ pos1(vair,theta+90); pos2(vair,theta+90);
+ pos3(vair,theta+90); pos4(vair,theta+90);
+ z2-z1=z4-z3=(mid_width-crisp)*dir theta;
+ lft x1r=w-rt x4l=hround 1.5u; top y4r=h;
+ bot y1l=vround(bot y1l+min(2/3[x_height,h],y3l-.25vair)-top y1r);
+ pair delta; ypart delta=3(y3l-y1l); delta=whatever*dir theta;
+ filldraw z1l..controls(z1l+delta)and(z3l-delta)..z3l..z4l
+ --z4r..controls(z4r-delta)and(z2r+delta)..z2r..z1r--cycle; % stroke
+else: pickup fine.nib; pos1(vair,180); pos2(vair,90);
+ pos3(.5[vair,slab],90); pos4(vair,90); pos5(vair,180);
+ lft x1r=w-rt x5l=hround 1.5u; x2-x1=x3-x2=x4-x3=x5-x4;
+ bot y1=bot y4l=vround(.75[x_height,h]-vair);
+ top y2r=top y5=h; y3=.5[y2,y4];
+ filldraw stroke z1e{up}...z2e{right}..z3e..{right}z4e...{up}z5e; fi % stroke
+penlabels(1,2,3,4,5); .endchar;
+
+.cmchar "Opening Gaensefuesschen";
+.beginchar(oct"134",9u#,asc_height#,0);
+italcorr asc_height#*slant+dot_size#-4.1u#;
+.adjust_fit(0,0);
+x2+.5dot_size=hround(w-.6u); y2-.5dot_size=0;
+x2-x1=hround(1.5u+max(2u,dot_size)); y2=y1;
+comma(1,a,dot_size,.25u,comma_depth); % left dot and tail
+comma(2,b,dot_size,.25u,comma_depth); % right dot and tail
+penlabels(1,2); .endchar;
+
+
+.cmchar "Closing Gaensefuesschen";
+.beginchar(oct"042",9u#,asc_height#,0);
+italcorr asc_height#*slant-.1u#;
+.adjust_fit(0,0);
+x1-.5dot_size=hround .6u;
+ y1+.5dot_size=h-comma_depth;
+x2-x1=hround(1.5u+max(2u,dot_size)); y2=y1;
+ammoc(1,a,dot_size,.25u,comma_depth); % left dot and tail
+ammoc(2,b,dot_size,.25u,comma_depth); % right dot and tail
+penlabels(1,2);
+.endchar;
+
+.cmchar "En dash";
+.beginchar(oct"173",9u#,x_height#,0);
+italcorr .61803x_height#*slant+.5u#;
+.adjust_fit(0,0);
+pickup crisp.nib; pos1(vair,90); pos2(vair,90);
+top y1r=top y2r=vround(.61803h+.5vair); lft x1=-eps; rt x2=w+eps;
+filldraw stroke z1e--z2e; % bar
+penlabels(1,2); .endchar;
+
+.cmchar "Em dash";
+.beginchar(oct"174",18u#,x_height#,0);
+italcorr .61803x_height#*slant+.5u#;
+.adjust_fit(letter_fit#,letter_fit#);
+pickup crisp.nib; pos1(vair,90); pos2(vair,90);
+top y1r=top y2r=vround(.61803h+.5vair); lft x1=-eps; rt x2=w+eps;
+filldraw stroke z1e--z2e; % bar
+penlabels(1,2); .endchar;
+
+.cmchar "Hash mark (number sign)";
+if monospace: compute_spread(.6x_height#,.7x_height#);
+else: compute_spread(.45x_height#,.55x_height#); fi
+.beginchar("#",15u#,asc_height#,asc_depth#);
+italcorr (math_axis#+.5(spread#+rule_thickness#))*slant-.5u#;
+.adjust_fit(0,0);
+pickup rule.nib; lft x1=hround u-eps; x3=x1; x2=x4=w-x1;
+y1=y2; y3=y4; y1-y3=spread; .5[y1,y3]=math_axis;
+draw z1--z2; % upper bar
+draw z3--z4; % lower bar
+lft x6=hround 3u; rt x7=hround(w-3u); x5-x6=x7-x8;
+x8=good.x if monospace: .6 else: .5 fi\\w;
+top y5=top y7=h+eps; bot y6=bot y8=-d-eps;
+y15=y1; z15=whatever[z5,z6]; y36=y3; z36=whatever[z5,z6];
+y27=y2; z27=whatever[z7,z8]; y48=y4; z48=whatever[z7,z8];
+draw z5--if x5>x6+1:(good.x(x15+.5),y1)--(good.x(x15-.5),y1)
+ --(good.x(x36+.5),y3)--(good.x(x36-.5),y3)--fi\\z6; % left diagonal
+draw z7--if x7>x8+1:(good.x(x27+.5),y2)--(good.x(x27-.5),y2)
+ --(good.x(x48+.5),y4)--(good.x(x48-.5),y4)--fi\\z8; % right diagonal
+labels(1,2,3,4,5,6,7,8,15,27,36,48); .endchar;
+
+.cmchar "Per cent sign";
+.beginchar("%",15u#,
+ body_height#,body_height#-asc_height#);
+italcorr if hefty: .4asc_height#*slant-.5u# else: h#*slant-u# fi;
+.adjust_fit(0,0); pickup fine.nib;
+numeric left_curve,right_curve;
+left_curve=hround 5/6[fudged.hair,fudged.stem];
+right_curve=max(fine.breadth,hround(fudged.hair if hefty:-2stem_corr fi));
+pos1(vair,90); pos2(left_curve,180); pos3(vair,270); pos4(right_curve,360);
+top y1r=h; lft x2r=hround u; rt x4r=hround(.5w-1.5u);
+bot y3r=floor(if monospace: .7 else: .5 fi\\ asc_height);
+x1=x3=.5[x2,x4]; y2=y4=.5[y1,y3];
+filldraw stroke pulled_super_arc.e(1,2)(superpull)
+ & pulled_super_arc.e(2,3)(superpull); % left half of upper bowl
+filldraw stroke super_arc.e(3,4) & super_arc.e(4,1); % right half of upper bowl
+pos5(vair,90); pos6(left_curve,180); pos7(vair,270); pos8(right_curve,360);
+bot y7r=-d; rt x8r=hround(w-u); lft x6r=hround(.5w+1.5u);
+top y5r=vround(if monospace: .3 else: .5 fi\\ asc_height);
+x5=x7=.5[x6,x8]; y6=y8=.5[y5,y7];
+filldraw stroke pulled_super_arc.e(5,6)(superpull)
+ & pulled_super_arc.e(6,7)(superpull); % left half of lower bowl
+filldraw stroke super_arc.e(7,8) & super_arc.e(8,5); % right half of lower bowl
+pickup rule.nib; top y9=h; bot y10=-d;
+if hefty: x9=good.x(x5-eps); x10=good.x(x1+eps);
+ draw z9--z10; % diagonal
+else: rt x9=hround(w-2.5u); lft x10=hround 2.5u; draw z9--z10; % diagonal
+ pickup fine.nib; pos9(rule_thickness,angle(z9-z10)+90);
+ pos11(vair,angle(z1r-z4r)-90); pos12(vair,angle(z9-z10)+90);
+ path p; p=super_arc.r(1,4); z11r=point 2/3 of p; z12r=z9r;
+ filldraw stroke z11e{direction 2/3 of p}...{z9-z10}z12e; fi % link
+penlabels(1,2,3,4,5,6,7,8,9,10,11,12); .endchar;
+
+.cmchar "Apostrophe";
+.beginchar("'",5u#,asc_height#,0);
+italcorr asc_height#*slant+.5dot_size#-2u#;
+.adjust_fit(0,0);
+x1-.5dot_size=hround(.5w-.5dot_size); y1+.5dot_size=h;
+if monospace: comma(1,a,dot_size,.28u,vround 1.5comma_depth); % large comma
+else: comma(1,a,dot_size,.25u,comma_depth); fi % comma with increased jut
+penlabels(1); .endchar;
+
+.cmchar "Left parenthesis";
+.beginchar("(",7u# if monospace: -u# fi,body_height#,paren_depth#);
+italcorr body_height#*slant-.5u#;
+.adjust_fit(0,0); pickup fine.nib;
+pos1(vair,0); pos2(.75[hair,stem],0); pos3(vair,0);
+rt x1r=rt x3r=hround(w-u); lft x2l=hround(x1-4u if monospace: +4/3u fi);
+top y1=h; y2=.5[y1,y3]=math_axis;
+filldraw stroke z1e{3(x2e-x1e),y2-y1}...z2e
+ ...{3(x3e-x2e),y3-y2}z3e; % arc
+penlabels(1,2,3); .endchar;
+
+.cmchar "Right parenthesis";
+.beginchar(")",7u# if monospace: -u# fi,body_height#,paren_depth#);
+italcorr math_axis#*slant-.5u#;
+.adjust_fit(0,0); pickup fine.nib;
+pos1(vair,0); pos2(.75[hair,stem],0); pos3(vair,0);
+lft x1l=lft x3l=hround u; rt x2r=hround(x1+4u if monospace: -4/3u fi);
+top y1=h; y2=.5[y1,y3]=math_axis;
+filldraw stroke z1e{3(x2e-x1e),y2-y1}...z2e
+ ...{3(x3e-x2e),y3-y2}z3e; % arc
+penlabels(1,2,3); .endchar;
+
+.cmchar "Asterisk";
+.beginchar("*",9u#,
+ if low_asterisk:math_axis#+.5x_height# else: body_height# fi,0);
+italcorr h#*slant-.75u#;
+.adjust_fit(0,0);
+numeric ast_flare; ast_flare=hround .7[thin_join,stem];
+x0=.5w; y0=h-.5x_height;
+for d=-150 step 60 until 150: z[d]=z0+.5dir d xscaled 7.5u yscaled x_height;
+ numeric theta; theta=angle(z[d]-z0);
+ fill z0+.5(0,-thin_join)rotated theta
+ ---z[d]+.5(-ast_flare,-ast_flare)rotated theta
+ ..z[d]..z[d]+.5(-ast_flare,ast_flare)rotated theta
+ ---z0+.5(0,thin_join)rotated theta--cycle; endfor % diagonal at angle |d|
+labels(0,[-150],[-90],[-30],30,90,150); .endchar;
+
+.cmchar "Plus sign";
+beginarithchar("+"); pickup rule.nib;
+x1=x2=good.x .5w; top y1=h+eps; .5[y1,y2]=math_axis;
+lft x3=hround u-eps; x4=w-x3; y3=y4=math_axis;
+draw z1--z2; % stem
+draw z3--z4; % crossbar
+labels(1,2,3,4); .endchar;
+
+.cmchar "Virgule (slash)";
+.beginchar("/",9u#,body_height#,paren_depth#);
+italcorr body_height#*slant-.5u#;
+.adjust_fit(0,0); pickup rule.nib;
+rt x1=hround(w-u)+eps; top y1=h+eps;
+lft x2=hround u-eps; bot y2=-d-eps;
+draw z1--z2; % diagonal
+penlabels(1,2); .endchar;
+
+.cmchar "Equals sign";
+compute_spread(.45x_height#,.55x_height#);
+.beginchar("=",14u#,v_center(spread#+rule_thickness#));
+italcorr h#*slant-.5u#;
+.adjust_fit(0,0); pickup rule.nib;
+lft x1=hround u-eps; x3=x1; x2=x4=w-x1;
+y1=y2; y3=y4; y1-y3=spread; .5[y1,y3]=math_axis;
+draw z1--z2; % upper bar
+draw z3--z4; % lower bar
+labels(1,2,3,4); .endchar;
+
+.cmchar "Left bracket";
+numeric wd#; wd#=max(5u#,6u#);
+.beginchar("[",wd#,body_height#,paren_depth#);
+italcorr body_height#*slant;
+.adjust_fit(0,0);
+numeric top_thickness,side_thickness;
+if hefty: top_thickness=vair;
+ side_thickness=max(crisp.breadth,stem-2stem_corr);
+else: top_thickness=side_thickness=rule_thickness; fi;
+pickup crisp.nib; pos1(side_thickness,0); pos2(side_thickness,0);
+top y1=h; bot y2=-d; lft x1l=lft x2l=hround(2.5u-.5side_thickness)-1-eps;
+filldraw stroke z1e--z2e; % stem
+pos3(top_thickness,90); pos4(top_thickness,90);
+pos5(top_thickness,90); pos6(top_thickness,90);
+x3=x5=x1l; rt x4=rt x6=ceiling(w-.4u)+eps; y3r=y4r=y1; y5l=y6l=y2;
+filldraw stroke z3e--z4e; % upper bar
+filldraw stroke z5e--z6e; % lower bar
+penlabels(1,2,3,4,5,6); .endchar;
+
+.cmchar "Right bracket";
+numeric wd#; wd#=max(5u#,6u#);
+.beginchar("]",wd#,body_height#,paren_depth#);
+italcorr body_height#*slant-2u#+.5if hefty:stem# else:rule_thickness# fi;
+.adjust_fit(0,0);
+numeric top_thickness,side_thickness;
+if hefty: top_thickness=vair;
+ side_thickness=max(crisp.breadth,stem-2stem_corr);
+else: top_thickness=side_thickness=rule_thickness; fi;
+pickup crisp.nib; pos1(side_thickness,0); pos2(side_thickness,0);
+top y1=h; bot y2=-d; rt x1r=rt x2r=hround(w-2.5u+.5side_thickness)+1+eps;
+filldraw stroke z1e--z2e; % stem
+pos3(top_thickness,90); pos4(top_thickness,90);
+pos5(top_thickness,90); pos6(top_thickness,90);
+x3=x5=x1r; lft x4=lft x6=floor .4u-eps; y3r=y4r=y1; y5l=y6l=y2;
+filldraw stroke z3e--z4e; % upper bar
+filldraw stroke z5e--z6e; % lower bar
+penlabels(1,2,3,4,5,6); .endchar;
+
+.cmchar "Reverse apostrophe";
+.beginchar("`",5u#,asc_height#,0);
+italcorr asc_height#*slant+.5dot_size#-2u#;
+.adjust_fit(0,0);
+x1-.5dot_size=hround(.5w-.5dot_size); y1+.5dot_size=h-comma_depth;
+if monospace: ammoc(1,a,dot_size,.28u,vround 1.5comma_depth); % large ammoc
+else: ammoc(1,a,dot_size,.25u,comma_depth); fi % normal ammoc
+penlabels(1); .endchar;
+
+cmchar "Exclamation point";
+beginchar("!",5u#,asc_height#,0);
+italcorr asc_height#*slant-2u#-.5width_adj#+.5dot_size#;
+adjust_fit(0,0);
+pointpoint;
+pickup tiny.nib; pos103(dot_size,0); pos104(dot_size,90);
+lft x103l=hround(.5w-.5dot_size); bot y104l=0; z103=z104; % dot
+numeric bot_width;
+bot_width=if hefty:max(hround .8dot_size,fine.breadth) else: hair fi;
+pickup fine.nib; pos101(dot_size,0); pos102(bot_width,0);
+x101=x102=x103; bot y102=.25[top y104r,x_height]+1;
+if square_dots: top y101=h;
+ filldraw stroke z101e--z102e; % stem
+else: top z100=(x101,h+o); y101+.5dot_size=h+o;
+ filldraw z101r...z100...z101l---z102l--z102r---cycle; fi % stem and bulb
+penlabels(0,1,2,3,4); endchar;
+
+cmchar "Question mark";
+beginchar("?",8.5u#,asc_height#,0);
+italcorr .8asc_height#*slant;
+adjust_fit(0,0);
+pointpoint;
+pickup tiny.nib; pos107(dot_size,0); pos108(dot_size,90);
+lft x107l=hround(.5w-.25u-.5dot_size); bot y108l=0; z107=z108; % dot
+numeric bot_width;
+bot_width=if hefty:max(hround .8dot_size,fine.breadth) else: hair fi;
+pickup fine.nib; pos102(vair,90); pos103(curve,0);
+pos104(vair,-90); pos105(bot_width,0); pos106(bot_width,0);
+x102=x104=x105=x106=x107; rt x103r=hround(w-u); bot y106=1+.25[top y108r,x_height];
+top y102r=h+oo; y103=.75[y106,y102]; y104=.5[y106,y102]; y105=.1[y106,y102];
+{{interim superness:=more_super;
+filldraw stroke pulled_super_arc.e(102,103)(superpull)
+ & subpath (0,1) of super_arc.e(103,104) .. z105e---z106e\\}}; % arc and stem
+if serifs: pos101(hair,180); pos100(flare,180);
+ lft x101r=hround u; y101=y103; bulb(102,101,100); % bulb
+else: pos101(Vround 5/7[vair,flare],110);
+ lft x101r=hround u; top y101r=vround .9[y106,top y102r];
+ filldraw stroke term.e(102,101,left,101,104); fi % terminal
+penlabels(0,1,2,3,4,5,6,7,8); endchar;
+
+
+cmchar "Ampersand";
+beginchar("&",14u#,asc_height#,0);
+italcorr x_height#*slant-serif_fit# - if serifs: .4u# else: 1.5u# fi;
+adjust_fit(0,serif_fit#);
+pickup tiny.nib; pos2(slab,-90); x2=4u; bot y2r=-o;
+if not hefty:(x,y2l)=whatever[z2r,(w-5u,x_height)]; x2l:=x; fi
+if serifs: pos0(fudged.hair,0);
+ rt x0r+jut=hround(w-.9u); top y0=x_height;
+ pos1(fudged.hair,0); z1=whatever[z0,(.6[x0,x2],0)];
+ y1=max(y0-1.5bracket-.2x_height,2/3x_height);
+ filldraw stroke z0e---z1e...{left}z2e; % short diagonal
+else: pickup fine.nib; pos1(.25[slab,flare],-15); rt x1r=hround(w-2u);
+ y1r=good.y .75[bar_height,x_height]; x1l:=good.x x1l; y1l:=good.y y1l;
+ top z2'l=(x2l,tiny.top y2l); bot z2'r=(x2r,tiny.bot y2r);
+ filldraw stroke term.e(2',1,right,1,4); fi % short diagonal and terminal
+pickup tiny.nib; numeric slope,theta,reduced_hair;
+slope=(h-2vair-slab)/10.5u; theta=angle(-slope,1);
+reduced_hair=max(tiny.breadth,hround(fudged.hair if hefty:-2stem_corr fi));
+lft x3r=hround .75u; x5=.5[x3r,x6l]; lft x6r=hround .5(w-u);
+x3l-x3r=curve-tiny; pos6(reduced_hair,180);
+pos5(vair,theta); y5=.5h;
+ellipse_set(2l,3l,4l,5l); ellipse_set(2r,3r,4r,5r);
+pos7(vair,270); top y7l=h+o; x7=.45[x6r,x8r];
+pos8(fudged.stem,30); x8l=good.x(x8l+3.5u-x8); y8r=y6;
+ellipse_set(7l,6l,5',5l);
+filldraw stroke z2e{left}...z3e{up}...z4e---z5e...{up}z6e
+ ...z7e{left}...z8e{down}; % bowls
+pos10(slab,90); x10=w-3.5u; bot y10l=-o;
+pos9(fudged.stem,angle(z8-z10)-90);
+z9=.5[z8,z10]+(1.75u,0) rotated(angle(z8-z10)+90);
+filldraw stroke z8e{down}...z9e{z10-z8}...{right}z10e; % long diagonal
+if serifs: pickup crisp.nib; pos10'(slab,90); z10'=z10;
+ pos11(fudged.hair,180); rt x11l=hround(w-u); y11=.5bar_height;
+ filldraw stroke z10'e{right}...{up}z11e; % terminal
+ numeric inner_jut; if rt x6l+.5u<lft x0l-1.5jut: inner_jut=1.5jut;
+ else: rt x6l+.5u=lft x0l-inner_jut; fi
+ dish_serif(0,1,a,.6,inner_jut,b,.5,jut)(dark); % serif
+else: pickup fine.nib; pos10'(slab,90); z10'=z10;
+ pos11(Vround .5[slab,flare],90);
+ rt x11=hround(r-letter_fit-u); bot y11l=vround .07bar_height-o;
+ filldraw stroke term.e(10',11,right,1,4); fi % terminal
+penlabels(0,1,2,3,4,5,6,7,8,9,10,11); endchar;
+
diff --git a/fonts/gothic/yfrak/yfrakupp.mf b/fonts/gothic/yfrak/yfrakupp.mf
new file mode 100644
index 0000000000..df5a8046e0
--- /dev/null
+++ b/fonts/gothic/yfrak/yfrakupp.mf
@@ -0,0 +1,1342 @@
+.cmchar "The Fraktur letter A";
+.beginchar("A",9.522u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+% made in Athens, Greece on Friday July 27, 1990
+penpos1(cap_hair,-51);
+penpos2(cap_hair,-51);
+z2-z1=whatever*dir39;
+x2r=w; z1r=(0.722w,-apex_o);
+penpos4'(cap_hair,39); z4'l=z1l;
+z4'r=z4;
+penpos5(cap_stem,0);
+z5=(x1r,0.223h);
+penpos13(cap_hair,-62); z13r=z5r;
+z13l-z14=whatever*dir26;
+z13r-z14'=whatever*dir26;
+y14=0; y14'=-apex_o;
+z6=whatever[z14',z13r]; x6=x5l;
+filldraw z14--z13l--z13r{down}..
+z2l{z2-z1}--z2r--z1r--z1l--z4--
+z6--z14'--z14 & cycle;
+filldraw z5l--z6--z5r--z5l & cycle;
+z1.1=whatever[z6,z4]; y1.1=y4+cap_hair;
+filldraw z1l{z2-z1}..z1.1{z6-z4}--
+z2--z1r--z1l & cycle;
+%
+%
+%
+penpos7(cap_stem,0); z7=(x5,0.862h);
+penpos8(cap_hair,-57);
+penpos9(cap_hair,-57);
+z8l=z7l; z9-z8=whatever*dir33;
+y9=h; z10=(0.937w,h+apex_o);
+z11=(0.99w,0.981h); z12=(0.953w,0.955h);
+z9'=whatever[z8r,z9r];
+x9'=0.4[x7r,x9r];
+penstroke z5e--z7e;
+filldraw z7r{up}..z9'{z9-z8}--
+z9r..z12{right}..z11{up}..z10{left}
+...z9l---z8l--z7r & cycle;
+%
+%
+%
+penpos15(cap_hair,-90); z15=(0,0.213h);
+z15r-z16=whatever*dir137;
+x16=0.936x14; z17=whatever[z14,z13l];
+x17=0.392w;
+penpos18(cap_hair,-43);
+z18-z17=whatever*dir133;
+y18r=y15l; penpos19(0.815cap_stem,0);
+x19=0.5w; y19=0.521h;
+z14''=(x14'-cap_hair,0);
+filldraw z15l{right}..z18l..z19l{up}
+--z19r{down}..z18r{dir-162}--
+z17--z14''{dir72}...z16---z15r--
+z15l & cycle;
+%
+%
+%
+penpos20'(1.037cap_stem,29.5);
+z20'=(0.405w,0.846h);
+penpos20(0.889cap_stem,50);
+z20=(x18r,0.904h);
+penpos21(1.25cap_hair,180);
+z21r=(0,3/4h);
+penpos22(1.148cap_stem,-162);
+z22l=(x20,0.678h);
+penpos23(cap_hair,180);
+z23=(0.284w,0.535h);
+penpos24(0.685cap_stem,66.6);
+z24l=(x22,0.367h);
+z25=(0.027w,0.426h); z26=(0.079w,0.473h);
+penstroke z19e{up}..z20'e{dir135}..
+z20e{left}..z21e{down}..z22e{dir-45}
+..z23e{down}..z24e{left};
+filldraw z24l{left}..z25{up}..z26{right}
+..z24r{right}--z24l & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter B";
+.beginchar("B",12.415u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+z1=(0.045w,0.096h); z2=(0.081w,0.141h);
+z3=(0,0.165h); z4=(x1,0.213h);
+penpos5(cap_stem,-142);
+z5=(0.179w,0.301h);
+penpos6(1.259cap_stem,-147);
+z6r=(0.538w,-apex_o);
+penpos7(cap_hair,-65);
+z7=(0.775w,0.103h);
+penpos8(0.907cap_stem,30);
+z8r=(w,0.4h);
+penpos9(1.741cap_stem,27);
+z9l=(x6r,0.6h);
+filldraw z1{right}..z2{up}..z4 &
+z4..z5r{right}..z6r{right} &
+z6r---z7r...z8r{up}..z9r{left}--
+z9l{right}..z8l{down}..z7l..z6l{left}
+..z5l{left}..z3{down}..z1{right} &
+cycle;
+%
+%
+%
+penpos10(1.222cap_stem,-153);
+z10r=0.883[z9l,z9r];
+penpos11(2/3cap_hair,-63);
+z11r=whatever[z9,z10]; x11=x10l+cap_hair;
+penpos13(1.056cap_stem,-125);
+z13l=(0.691w,h);
+z12=(z13l{right}..z10l{dir-63})
+intersectionpoint ((x10l-1.5hair,0)--
+(x10l-1.5hair,h));
+penpos14(cap_hair,0);
+penpos16(0.889cap_stem,17); z16r=z9l;
+z14=(x16,0.686h);
+filldraw z14l{dir78}..z13l{right}..z12..
+z11l{z10-z9}--z11r--z10r{dir117}..
+z13r{left}..{dir258}z14r--z14l & cycle;
+%
+%
+%
+penpos15'(cap_hair,-90);
+z15'l=z5l;
+penpos15(0.889cap_stem,0);
+z14-z15=whatever*dir85; y15=y5l+2cap_hair;
+penpos17(cap_stem,76);
+z17r=(0.256w,h+apex_o);
+penpos18(cap_hair,180);
+z18=(0.055w,0.745h);
+penpos19(1.185cap_stem,-145);
+z19=(0.148w,0.644h);
+penpos20(cap_hair,197);
+z20=(0.246w,0.548h);
+penpos21(cap_hair,118);
+z21=whatever[(0,0),z17]; x21=0.108w;
+penstroke z15'e{right}
+..z15e..z16e{up}..z17e{left}
+..z18e{down}..z19e{dir-45}..z20e{z20l-z19l}..
+z21e{dir202};
+.endchar;
+
+.cmchar "The Fraktur letter C";
+.beginchar("C",10.406u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+z1=(0.157w,0.08h); z2=(0.211w,0.138h);
+z3=(0.084w,0.141h);
+z5=(0.113w,0.209h); z4=0.4[z3,z5];
+penpos6(cap_hair,180);
+z6r=(0,0.117h); penpos7(cap_hair,-118);
+z7r=(0.189w,-apex_o);
+penpos8(cap_hair,-48);
+z8=(0.469w,0.136h);
+penpos9(1.074cap_stem,36);
+z9=(0.623w,0.367h); z10=(0.5w,0.721h);
+penpos10(0.889cap_stem,30);
+z11'=(0.736w,0.931h);
+z13=(0.803w,0.729h);
+z14=(w,0.777h); penpos11(cap_hair,
+angle(z13-z11'));
+z11l=z11'; z12-z11l=whatever*dir7;
+x12=0.912w; z16'-z12=whatever*(z13-z11);
+z16'=whatever[z13,z14];
+penpos15(cap_hair,angle(z13-z11));
+z15r=z14; z15l-z16=whatever*(z14-z13);
+z16=whatever[z12,z16'];
+penstroke z6e{down}..z7e{right}..
+z8e..z9e{up}..z10e{up}..z11e{z12-z11l};
+filldraw z11l--z12--z16--z15l--z15r
+--z13--z11l & cycle;
+filldraw z6l{up}..z4{right} &
+z4..z3{down}..z1{right}..z2{up}..
+z5{left}..z6r{down}--z6l & cycle;
+%
+%
+%
+penpos17(1.037cap_stem,90);
+z17l=(0.738w,-apex_o);
+penpos18(1.093cap_stem,38);
+z18=(0.17w,0.58h);
+penpos19(1.5cap_hair,-57);
+z19l=(0.45w,h+apex_o);
+penpos20(1.2cap_hair,-197);
+z20=(0.692w,0.824h);
+penpos21(cap_hair,-219);
+z21=(3/4[x9l,x9r],y10);
+penstroke z17e{left}..z18e{up}..
+z19e..z20e{down}..z21e;
+penpos22(cap_hair,-44);
+z22r-z17l=whatever*dir46;
+x22r=w;
+filldraw z17r{right}..z22l{z22r-z17l}
+--z22r--z17l--z17r & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter D";
+.beginchar("D",12.168u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+z1=(0.073w,-apex_o);
+penpos2(0.6cap_stem,0);
+z2=(x1,0.04h); penpos4(1.204cap_stem,-148);
+z4=(0.229w,0.190h);
+penpos5(1.185cap_stem,-144);
+z5r=(0.545w,-apex_o);
+penpos6(cap_hair,-65); x6=0.787w;
+z6r-z5r=whatever*dir25;
+penpos7(0.815cap_stem,38);
+z7r=(w,0.418h); penpos8(0.926cap_stem,67.5);
+z8r=(0.41w,h+apex_o);
+penpos9(0.537cap_stem,-173);
+z9r=(0,0.685h); penpos10(2/3cap_hair,-90);
+z10=(0.242w,0.53h);
+penstroke z2e{up}..z4e{right}..z5e{right};
+penstroke z6e{dir25}..z7e{up}..z8e{left}
+..z9e{down}..z10e{right};
+filldraw z2l{down}..z1..z2r{up}--z2l
+& cycle;
+filldraw z5l{right}..z6l{dir25}--
+z6r--z5r--z5l & cycle;
+%
+%
+%
+z11=(0.171w,0.389h); z12=(0.197w,0.427h);
+penpos13(cap_hair,-90);
+z13=(x4l,0.3h); penpos14(cap_stem,0);
+z14=(0.462w,0.5[y11,y12]);
+penpos15(1.074cap_stem,34);
+z15=(0.353w,0.655h); z16=(0.488w,0.78h);
+penpos16(cap_hair,-90);
+penstroke z13e{right}..z14e{up}..
+z15e{up}..z16e{right};
+filldraw z11{up}..z12{right}..z13l{right}
+--z13r{left}..z11{up} & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter E";
+.beginchar("E",8.508u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(1.074cap_stem,62.5);
+z1l=(0.623w,-apex_o);
+penpos2(0.796cap_stem,16);
+z2l=(0,0.485h); penpos3(4/3cap_hair,-90);
+z3l=(0.485w,h+apex_o);
+penpos6(cap_stem,-151.5);
+penpos5(cap_stem,-151.5);
+x6l=w; y5l=h; z6-z5=whatever*dir-37;
+x5l=0.808w;
+penstroke z5e--z6e;
+penpos4(cap_hair,-151.5);
+z4r=z5r; penstroke z3e{right}..
+z4e{z6-z5};
+penpos16(cap_hair,-90);
+z16=(w,0.149h);
+filldraw z1l--z16r--z16l..z1r{left}
+--z1l & cycle;
+penstroke z1e{left}..z2e{up}..z3e{right};
+%
+%
+%
+penpos7(cap_hair,-164); z7=whatever[z2l,z2r];
+x7=0.31w;
+penpos8(0.444cap_stem,-51.5);
+z8=(0.492w,0.393h);
+penpos9(0.796cap_stem,6.5);
+z9=(x1l,y2-eps);
+penpos10(0.963cap_stem,34);
+z10=(0.441w,0.767h);
+penpos11(cap_hair,-37); z11l=z4r;
+penstroke z7e{dir-74}..z8e{right}..
+z9e{up}..z10e{up}..z11e{z5l-z5r};
+%
+%
+%
+penpos12(cap_hair,-55.5);
+z12l=(z9{up}..z10{up})
+intersectionpoint (z9l--(x9l,h));
+z13-z12l=whatever*dir31.5;
+x13=0.854w; penpos14(whatever,0);
+z15=(x13,0.53h); z14r=(w,0.639h);
+z14l-z12r=whatever*(z13-z12l);
+filldraw z12l--z13--z14r--z15--
+z14l--z12r--z12l & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter F";
+.beginchar("F",8.213u#,cap_height#,3.010u#);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(2/3cap_hair,68);
+z1=(0.34w,0.535h); penpos2(cap_hair,0);
+z2l=(0.036w,0.739h);
+penpos3(4/3cap_stem,-150);
+z3l=(0.614w,h+apex_o);
+penpos4(cap_stem,-128); z4l-z3l=whatever*dir-37;
+x4l=w; penpos5(cap_hair,-38);
+x5l=w; z5r=whatever[z4r,z4l];
+penstroke z1e{dir158}..z2e{up}..
+z3e{right};
+z5'=whatever[z3l,z4l]; z5'-z5l=whatever*(z4-z5r);
+filldraw z3l--z5'--z5l--z5r--z4r
+{z3l-z4l}...z3r{left}--z3l & cycle;
+%
+%
+%
+penpos6(cap_hair,-23); penpos7(cap_hair,-90);
+penpos8(0.778cap_stem,-219);
+penpos9(0.741cap_stem,-203);
+penpos10(cap_hair,-90);
+penpos11(cap_stem,17);
+penpos12(1.111cap_stem,30);
+penpos13(eps,-63);
+z6l=(0,0.351h); z7=(x2r+cap_hair,0.44h);
+x8l=x1; y8=0.339h; z9r=(x2l,0);
+z10r=(0.462w,-d); z11l=(0.709w,0);
+z12=(0.542w,0.652h);
+z13=(0.789w,0.821h);
+penstroke z6e{dir67}..z7e{right}..z8e{down}
+..z9e{down}..z10e{right}..z11e{up}..
+z12e{up}..z13e{dir27};
+%
+%
+%
+penpos14(cap_hair,-47);
+penpos15(cap_hair,-47);
+z14=(z11{up}..z12{up}) intersectionpoint
+((0,0.476h)--(w,0.476h));
+z15-z14=whatever*dir43;
+x15l=x4r; penpos16(0.833cap_stem,-137);
+z16l=z15l; penpos17(0.833cap_stem,-137);
+x17l=w; z17-z16=whatever*dir-47;
+penstroke z14e--z15e;
+penstroke z16e--z17e;
+.endchar;
+
+.cmchar "The Fraktur letter G";
+.beginchar("G",10.638u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(cap_hair,0);
+penpos2(0.5cap_stem,90);
+penpos3(cap_stem,180);
+penpos4(cap_hair,-90);
+penpos5(0.926cap_stem,14);
+penpos7(cap_hair,-51);
+penpos9(cap_hair,-51);
+z1=(0.595w,0.739h); z2r=(0.385w,h+apex_o);
+z3r=(0,0.517h); z4r=(0.537w,-apex_o);
+z5r=(w,0.392h); z6=(0.686w,0.628h);
+z7=(x4,0.566h); z9-z7=whatever*dir39;
+x9=0.963w; z8=whatever[z7r,z9r];
+x8=0.817w;
+penstroke z1e{up}..z2e{left}..z3e{down}
+..z4e{right}..z5e{up};
+filldraw z7r{z9-z7}..z6{right}..
+z5l{down}--z5r{up}..z8--z9r--z9l--
+z7l--z7r & cycle;
+%
+%
+%
+penpos11(1.148cap_stem,39);
+penpos12(1.148cap_stem,39);
+z11=whatever[z7l,z9l]; x11=0.856w;
+penpos10(cap_hair,-51);
+z10=whatever[z9l,z9r]; y10l=h+apex_o;
+z12-z11=whatever*dir129;
+z10l-z12=whatever*dir39;
+penpos13(cap_hair,-51); z13l=z12l;
+penstroke z11e--z12e;
+penstroke z13e--z10e;
+%
+%
+%
+penpos14(cap_hair,180); penpos15(0.5cap_stem,-45);
+penpos16(0.796cap_stem,21.5);
+penpos17(0.926cap_stem,43);
+penpos18(cap_hair,-37);
+penpos19(cap_hair,-37);
+z14=(0.3w,0.58h); z15=(0.441w,0.385h);
+z16=(0.5[x7,x1],0.507h);
+z17=(0.385w,0.776h); z18=(0.442w,0.873h);
+z19-z18=whatever*dir53; y19=1.032h;
+penstroke z14e{down}..z15e{right}..
+z16e{up}..z17e{up}...z18e---z19e;
+.endchar;
+
+.cmchar "The Fraktur letter H";
+.beginchar("H",10.275u#,cap_height#,1.996u#);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(cap_hair,111);
+penpos2(cap_hair,90);
+penpos3(cap_hair,0);
+penpos8(cap_hair,-45);
+penpos7(cap_hair,-45);
+penpos9(0.889cap_stem,0);
+penpos10(1.222cap_stem,48.5);
+penpos11(cap_hair,132);
+z1=(0.57w,-0.679d);
+z2l=(0.452w,-d); z3=(0.354w,-0.23d);
+z4=(0.503w,0.082h); z5=(0.621w,0.217h);
+z6=(0.71w,0.12h); z8l=(0.592w,-apex_o);
+z7r-z8r=whatever*dir45;
+x7r=0.809w; z9r=(w,0.429h);
+z10=(0.624w,3/4h); %z11=whatever[z1l,z1r];
+z11=(0.28w,0.543h);
+penstroke z1e..z2e{left}..z3e{up};
+filldraw z3r{up}..z4{right}..
+z8l{z8r-z7r}--z8r---z7r...z9r{up}--
+z9l{down}..z7l{z8r-z7r}..z6{left}..
+z5{dir123} & z5{dir211}..z3l{down}--
+z3r & cycle;
+penstroke z9e{up}..z10e{left}..
+z11e{dir222};
+%
+%
+%
+penpos12(1.259cap_stem,-131);
+penpos13(1.2cap_hair,-41);
+penpos14(1.074cap_stem,25);
+penpos15(cap_hair,-41);
+penpos18(cap_hair,-36);
+z12r=(0,0.141h); y13=0.2h; x13l=x11;
+z14=z11; z15=(x11,0.845h);
+z16=(0.478w,h); z17=(0.516w,0.837h);
+z18r-z17=whatever*dir54;
+y18r=h+apex_o;
+penstroke z12e{dir-41}..z13e{dir49}
+..z14e..z15e{dir49};
+filldraw z15r{dir49}..z17--z18r--
+z18l{z17-z18r}..z16{left}..z15l
+{dir229}--z15r & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter I";
+.beginchar("I",8.541u#,cap_height#,2.497u#);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(cap_hair,28);
+penpos2(cap_hair,-17.5);
+penpos3(0.889cap_stem,-116);
+penpos4(cap_stem,-126);
+penpos5(cap_hair,-44);
+penpos6(1.056cap_stem,53);
+penpos7(1.056cap_stem,21);
+penpos8(cap_hair,-90);
+penpos9(cap_hair,180);
+z1=(0.115w,-0.886d); z2r=(x1,-0.519d);
+z3=(0.234w,-0.1d); z4r=(0.517w,-d);
+z5=(0.795w,-0.329d); z6r=(0.966w,0.196h);
+z7=(0.636w,0.56h); z8=(0.808w,0.683h);
+z9l=(x6r,0.554h);
+penstroke z1e..z2e{up}..z3e{right}
+..z4e{right}..z5e..z6e{up}..z7e{up}
+..z8e{right}..z9e{down};
+%
+%
+%
+penpos10(1.037cap_stem,50);
+penpos11(cap_hair,-45);
+penpos12(0.889cap_stem,43);
+penpos13(1.185cap_stem,-146);
+penpos14(0.741cap_stem,-119);
+penpos15(cap_hair,0);
+penpos16(cap_hair,28);
+z10l=z11r=(0.1w,0.515h);
+z12l=(0,0.69h); z13l=(0.506w,h+apex_o);
+z14r=z8l+(0,0.035h);
+z15r=(w,0.875h); z16=(x15l,0.924h);
+filldraw z11l{z12r-z11l}..z12l{up}--
+z12r{down}..z10r--z10l--z11l & cycle;
+penstroke z12e{up}..z13e{right}..
+z14e{right}..z15e{up}..z16e{dir118};
+.endchar;
+
+.cmchar "The Fraktur letter J";
+.beginchar("J",8.541u#,cap_height#,2.497u#);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(cap_hair,28);
+penpos2(cap_hair,-17.5);
+penpos3(0.889cap_stem,-116);
+penpos4(cap_stem,-126);
+penpos5(cap_hair,-44);
+penpos6(1.056cap_stem,53);
+penpos7(1.056cap_stem,21);
+penpos8(cap_hair,-90);
+penpos9(cap_hair,180);
+z1=(0.115w,-0.886d); z2r=(x1,-0.519d);
+z3=(0.234w,-0.1d); z4r=(0.517w,-d);
+z5=(0.795w,-0.329d); z6r=(0.966w,0.196h);
+z7=(0.636w,0.56h); z8=(0.808w,0.683h);
+z9l=(x6r,0.554h);
+penstroke z1e..z2e{up}..z3e{right}
+..z4e{right}..z5e..z6e{up}..z7e{up}
+..z8e{right}..z9e{down};
+%
+%
+%
+penpos10(1.037cap_stem,50);
+penpos11(cap_hair,-45);
+penpos12(0.889cap_stem,43);
+penpos13(1.185cap_stem,-146);
+penpos14(0.741cap_stem,-119);
+penpos15(cap_hair,0);
+penpos16(cap_hair,28);
+z10l=z11r=(0.1w,0.515h);
+z12l=(0,0.69h); z13l=(0.506w,h+apex_o);
+z14r=z8l+(0,0.035h);
+z15r=(w,0.875h); z16=(x15l,0.924h);
+filldraw z11l{z12r-z11l}..z12l{up}--
+z12r{down}..z10r--z10l--z11l & cycle;
+penstroke z12e{up}..z13e{right}..
+z14e{right}..z15e{up}..z16e{dir118};
+.endchar;
+
+.cmchar "The Fraktur letter K";
+.beginchar("K",9.478u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+cap_stem:=0.95cap_stem;
+%cap_hair:=0.95cap_hair;
+z1=(0,0.182h); z2=(0.177w,0.207h);
+z3=(0.033w,-apex_o);
+penpos4(cap_hair,-90);
+z4=(0.282w,0.045h); penpos5(cap_hair,0);
+z5=(0.4w,0.136h); z7=(0.434w,0.227h);
+z7'=(0.328w,0.556h);
+z8=(0.197w,0.732h); z6=(0.052w,0.566h);
+penpos9(1.25cap_hair,-90);
+z9l=(0.561w,h+apex_o);
+penpos9'(cap_hair,180);
+z9'l=(w-apex_o,0.707h);
+penpos10(cap_hair,140); z10=(0.813w,0.492h);
+filldraw z1--z3{dir30}..z4r{right}
+..z5r..z7{up}..z7'..z8{up}..z9r{right}
+--z9l{left}..z6{down} & z6{dir-52}
+..z5l..z4l{left}..z2{up}--z1 & cycle;
+penstroke z9e{right}..z9'e{down}..
+z10e;
+%
+%
+%
+penpos12(cap_hair,-78);
+penpos11(cap_hair,-78);
+z12l-z7'=whatever*dir12;
+z7'-z11l=whatever*dir12;
+x12=x10; x11=0.243w;
+penstroke z11e--z12e;
+penpos13(cap_hair,12); z13r=z7';
+penpos14(0.463cap_stem,-116);
+z14=(0.492w,0.8h);
+penpos16(1.074cap_stem,-168);
+z16=whatever[z11l,z12l]; x16l=x12-cap_hair;
+z12-z15=whatever*dir-78;
+penpos15(cap_hair,-78);
+y15=0.823h; z17-z15r=whatever*(z12-z11);
+z16l-z17=whatever*(z12-z15);
+filldraw z13r{dir102}..z14r{right}
+..z16r{dir-78}--z16l--z17--z15r--
+z15l{z13-z12}..z14l{left}..z13l{dir-78}
+--z13r & cycle;
+%
+%
+%
+penpos18(1.053cap_stem,-168);
+z18=0.5[z12r,z11r];
+penpos18'(1.053cap_stem,-168);
+z19=(0.767w,-apex_o); penpos21(cap_hair,-90);
+z21r-z19=whatever*dir45; x21=w;
+z20=(0.869w,0.149h);
+z18'-z18=whatever*dir-70; x18'l=x15;
+filldraw z18r---z18'r...z19--z21r--
+z21l{z19-z21r}..z20{left}...z18'l
+---z18l--z18r & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter L";
+.beginchar("L",6.131u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+cap_stem:=1.022cap_stem;
+penpos1(cap_hair,0); penpos2(cap_hair,-60);
+penpos3(1.056cap_stem,30);
+penpos4(cap_stem,23); penpos5(0.481cap_stem,-67);
+penpos6(cap_hair,-149);
+penpos7(whatever,-140);
+penpos8(cap_hair,-147);
+penpos9(cap_hair,-90); penpos10(cap_hair,0);
+z1l=(0,0.082h); z2=(0.15w,0.207h);
+z3=(0.453w,0.37h); z4l=(0,0.731h);
+z5l=(0.539w,h+apex_o);
+z6=(0.829w,0.886h); z7l=(0.933w,0.739h);
+x7r=x3r;
+z8=(0.658w,0.53h); z9=(x6,0.476h);
+z10=(x7l,0.543h);
+penstroke z1e{up}..z2e..z3e{up}..
+z4e{up}..z5e{right}..z6e..z7e{down}
+..z8e..z9e{right}..z10e{up};
+%
+%
+%
+z11=(0.109w,0.111h); z13=(0.539w,-apex_o);
+z12=(0.731w,y11); penpos14(cap_hair,-21);
+z14r=(w,0.223h);
+z15'-z11=whatever*(z12-z13); x15'=w;
+z15=(z1{up}..z2..z3{up}) intersectionpoint
+((0.238w,0)--(0.238w,h));
+filldraw z1r{up}..z11{right}..z13{dir-25}
+& z13{dir25}..z14r{dir69}--z14l{dir249}
+..z12{left}..z15{left}& z15..z2..
+z1{down}--z1r & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter M";
+.beginchar("M",13.432u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(cap_hair,-40); penpos2(cap_hair,-40);
+z1=(0.067w,0.035h); z2-z1=whatever*dir50;
+x2=0.176w; z3=(1/5w,-apex_o);
+penpos4(cap_hair,-41.5);
+z4r-z3=whatever*dir48.5;
+z4=whatever[z2l,z2r];
+penpos5(1.3cap_stem,48);
+% ant'i 1.111 pou j'aprepe n'anai
+z5=(0.4w,0.394h); penpos6(0.778cap_stem,44);
+z6=(0.148w,0.915h); penpos7(cap_hair,180);
+z7r=(0,0.782h); penpos8(1.111cap_stem,-147);
+z8l=(x6,0.649h); penpos9(2.2cap_hair,-171.5);
+penpos10(cap_hair,90); z9r=(x2l,0.46h);
+z10=(0.122w,0.378h); penpos11(cap_hair,58);
+z11=(0.047w,0.418h);
+z1'=whatever[z1r,z2r]; x1'=x1r+0.014117w;
+filldraw z1l--z2l--z4r--z3--z1'--z1r
+--z1l & cycle;
+penstroke z4e{z4r-z3}..z5e{up}..
+z6e{left}..z7e{down}..z8e..z9e{down}
+..z10e{left}..z11e;
+%
+%
+%
+penpos12(cap_hair,-40); penpos13(cap_hair,-40);
+z12=(0.329w,0.024h); z13-z12=whatever*dir50;
+x13=x5r; z13'=(0.466w,-apex_o);
+penpos14(cap_hair,-40); z14r-z13'=whatever*dir48;
+z14=whatever[z13l,z13r];
+penpos15(1.5cap_stem,-50);
+penpos16(0.741cap_stem,48);
+penpos17(cap_hair,180);
+z15=(0.647w,0.548h);
+x16=0.424w; y16r=h+apex_o;
+z17=(0.306w,0.843h);
+penstroke z12e--z13e;
+z12'=whatever[z12r,z13r]; x12'=x12r+0.014117w;
+filldraw z12'--z13'--z14r--z13l--
+z12' & cycle;
+penstroke z14e{z14r-z13'}..z15e{up}
+..z16e{left}..z17e{dir251};
+%
+%
+%
+penpos18(cap_hair,-46); penpos19(cap_hair,-46);
+penpos20(1.13cap_stem,37);
+penpos21(0.852cap_stem,-15);
+penpos22(cap_hair,-72);
+z18r=(0.814w,-apex_o);
+z19-z18=whatever*dir44;
+x19r=w; z20=(x18-eps,0.34h);
+z21=(x18r+eps,0.556h);
+z22=(0.906w,0.609h);
+z20'=0.7[z18l,z19l];
+penstroke z18e--z19e;
+filldraw z18l{up}..z20l{up}..z21l--
+z22l--z22r{z21l-z22l}..z21r..
+z20r{down}..z20'{dir-35}--z18l
+& cycle;
+%
+%
+%
+penpos23(1.148cap_stem,53);
+penpos24(0.944cap_stem,12);
+penpos27(2/3cap_hair,90);
+z23r=(w,0.670h); z24=(0.871w,0.84h);
+z25=(0.715w,0.947h); z26=(x25,0.87h);
+z27=(0.621w,0.824h);
+filldraw z23r{dir124}..z24r%{dir124}
+...z25---z27r--z27l{z25-z27r}..
+z26{right}..z24l%{dir-56}
+..z23l{dir-56}
+--z23r & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter N";
+.beginchar("N",11.662u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(cap_hair,-45); penpos3(cap_hair,-45);
+penpos4(cap_hair,-90);
+penpos5(0.944cap_stem,0);
+penpos6(0.811cap_stem,64);
+penpos7(cap_hair,180);
+penpos8(1.094cap_stem,-132);
+penpos9(cap_hair,180); penpos10(cap_hair,90);
+penpos11(cap_hair,21);
+z1=(0.123w,0); z3-z1=whatever*dir52;
+x3=0.239w; 0.5[z1,z3]-z2=whatever*dir-45;
+x2=x1l-eps; z4r=(0.325w,-apex_o);
+z5=(0.55w,0.371h); z6=(x3,0.932h);
+z7r=(0,0.751h); z8=(0.197w,0.553h);
+z9=(x4,0.428h); z10=(x3,0.317h);
+z11=(0.125w,0.423h);
+penpos2(1/3cap_hair,52);
+filldraw z1l{dir71}..z2l--z2r
+..{dir31}z3l--z3r{z1-z3}..z4l{right}
+--z4r{left}..z1r{z1-z3}--z1l{z3-z1}
+& cycle;
+penstroke z4e{right}..z5e{up}..
+z6e{left}..z7e{down}..z8e{dir-22}..
+z9e{down}..z10e{left}..z11e;
+%
+%
+%
+penpos12(2/3cap_hair,0); penpos13(0.778cap_stem,-126);
+penpos14(0.944cap_stem,-162);
+penpos15(0.944cap_stem,-90);
+penpos16(cap_hair,0);
+penpos17(cap_hair,-32);
+penpos19(0.981cap_stem,0);
+penpos20(0.793cap_stem,0);
+penpos21(cap_hair,-90);
+z12=(0.516w,0.745h); y13l=h+apex_o;
+z14=(0.886w,0.751h);
+z15=(w,0.669h);
+z19=(0.769w,y5); x13=x19l;
+z16=(x19r,-apex_o);
+z17r-z16r=whatever*dir58;
+x17r=0.977w; z20=(0.798w,0.537h);
+z21r=z15r;
+filldraw z16r--z17r--z17l{z16r-z17r}
+..z19r{up}..z20r..z21r{dir18}--
+z21l{dir198}..z20l..z19l{down}..
+z16l--z16r & cycle;
+penstroke z12e{up}..z13e{right}..
+z14e{dir-71}..z15e{right};
+.endchar;
+
+.cmchar "The Fraktur letter O";
+.beginchar("O",12.01u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(cap_hair,41); penpos2(cap_hair,0);
+penpos3(cap_hair,-59);
+penpos5(1.037cap_stem,24);
+penpos6(1.074cap_stem,38);
+penpos7(cap_hair,-47); penpos8(2/3cap_hair,0);
+penpos4(1.315cap_stem,-146);
+penpos10(1.111cap_stem,70);
+penpos11(0.704cap_stem,22);
+penpos14(cap_hair,-46);
+z1r=(0.084w,0); z2l=(0,0.09h);
+z3=(0.234w,0.298h); z4=(0.184w,0.197h);
+z5=(0.332w,0.412h); z6=(0.179w,0.71h);
+z7=(0.263w,0.843h); z8=(0.389w,h+apex_o);
+z9=(x8,0.787h); z10=(0.595w,0.864h);
+z11r=(w,0.484h); z12=(0.637w,0.144h);
+z13=(2x10-x12,-apex_o);
+z14=(0.858w,0.227h);
+penstroke z1e..z2e{up}..z3e..z5e{up}
+..z6e{up}..z7e{dir43};
+penstroke z1e..z2e{up}..z4e{dir-19};
+filldraw z4r{dir-19}..{z13-(x4r,0.5y4r)}z13 &
+z13{dir27}..z14r..z11r{up}..z10r{left}..
+z8r{dir100}--z8l{down}..z7l{dir223}--
+z7r..z9..z10l{right}..z11l{down}..
+z14l..z12{left}..z4l{dir161}--z4r &
+cycle;
+.endchar;
+
+.cmchar "The Fraktur letter P";
+.beginchar("P",9.482u#,cap_height#,2.651u#);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(cap_hair,0); penpos2(cap_stem,0);
+penpos3(cap_stem,0);
+penpos4(0.926cap_stem,58);
+penpos5(cap_hair,180);
+penpos8(1.5cap_hair,-145);
+penpos9(cap_hair,114);
+z1=(0.427w,-d); z2=(0.453w,0.09h);
+z3=(x2,0.7h); z4r=(0.227w,h+apex_o);
+z5r=(0,0.778h); z6=(0.173w,0.67h);
+z7=(0.083w,0.564h); z8=(0.275w,0.524h);
+z9r=(x7,0.4h);
+penstroke z1e...z2e---z3e..z4e{left}
+..z5e{down};
+penstroke z8e{down}..z9e;
+filldraw z5r{down}..z7 & z7{right}..
+z8r{down}--z8l{up}..z6..z5l{up}--
+z5r & cycle;
+%
+%
+%
+penpos18(cap_hair,0); penpos19(cap_hair,-80);
+penpos16(1.037cap_stem,23);
+penpos15(cap_stem,35);
+penpos14(cap_hair,-56);
+z18r=z3r; z19=(0.74w,0.931h);
+z16=(0.793w,0.782h);
+z15r=(w,0.42h); z14=(0.687w,0.059h);
+penstroke z14e{dir33}..z15e{up}..
+z16e{up};
+penstroke z18e{up}..z19e{dir22.5};
+z17'=(0.917w,h-apex_o);
+filldraw z16l{up}..z19l & z19l{dir22.5}
+..z17'{right} & z17'..z16r{down}--
+z16l & cycle;
+%
+%
+%
+penpos10(cap_stem,64); penpos11(cap_stem,71);
+penpos12(cap_hair,-36);
+penpos13(cap_hair,-23);
+z10=(0.713w,0.027h); z11=(0.387w,0.16h);
+z12=(x6,0.059h); z13l=(x8,0.266h);
+filldraw z10r..z11r...z13r---z13l
+& z13l..z12l{dir234}--z12r{dir54}...
+z11l---z10l--z10r & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter Q";
+.beginchar("Q",13.559u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+w':=12.01u;
+penpos1(cap_hair,41); penpos2(cap_hair,0);
+penpos3(cap_hair,-59);
+penpos5(1.037cap_stem,24);
+penpos6(1.074cap_stem,38);
+penpos7(cap_hair,-47); penpos8(2/3cap_hair,0);
+penpos4(1.315cap_stem,-146);
+penpos10(1.111cap_stem,70);
+penpos11(0.704cap_stem,22);
+penpos14(cap_hair,-46);
+penpos16(1.074cap_stem,-127);
+penpos17(cap_hair,-45);
+z1r=(0.084w',0); z2l=(0,0.09h);
+z3=(0.234w',0.298h); z4=(0.184w',0.197h);
+z5=(0.332w',0.412h); z6=(0.179w',0.71h);
+z7=(0.263w',0.843h); z8=(0.389w',h+apex_o);
+z9=(x8,0.787h); z10=(0.595w',0.864h);
+z11r=(0.925w,0.503h); z12=(0.637w',0.144h);
+z13=(2x10-x12,-apex_o);
+z14=(0.884w',0.227h);
+penpos15(1.3cap_stem,angle(z13-z14));
+z15l=z14; z16r=(0.825w,-apex_o);
+z17r=(w,0.144h);
+penstroke z1e..z2e{up}..z3e..z5e{up}
+..z6e{up}..z7e{dir43};
+penstroke z1e..z2e{up}..z4e{dir-19};
+filldraw z4r{dir-19}..{z13-(x4r,0.5y4r)}z13 &
+z13{dir27}..z14r..z11r{up}..z10r{left}..
+z8r{dir100}--z8l{down}..z7l{dir223}--
+z7r..z9..z10l{right}..z11l{down}..
+z14l..z12{left}..z4l{dir161}--z4r &
+cycle;
+penstroke z15e..z16e{dir-10} & z16e..z17e
+{dir45};
+.endchar;
+
+.cmchar "The Fraktur letter R";
+.beginchar("R",10.493u#,cap_height#,0);
+.adjust_fit(usual_left#,usual_right#+0.3u#);
+penpos1(cap_hair,-49); penpos2(cap_hair,-49);
+penpos4(cap_hair,-90);
+z1l=(0,0.056h); z2=(0.253w,0.234h);
+z3=(apex_o,0.202h); z7=(0.036w,0.128h);
+z4r=(0.3w,-apex_o);
+z5=(0.181w,0.128h); z6=(0.084w,0.051h);
+filldraw z1l..z7..z3 & z3{dir-10}..
+z2l--z2r..z5..z4l{right}--z4r{left}
+..z6..z1r--z1l & cycle;
+penpos8(0.963cap_stem,19);
+penpos9(cap_stem,60); penpos10(cap_hair,180);
+penpos13(0.574cap_stem,-153);
+penpos14(cap_hair,90); penpos15(cap_hair,0);
+z8=(0.53w,0.375h); z9r=(0.247w,h+apex_o);
+z10r=(0,0.771h); z11=(0,0.614h);
+z12=(0.169w,0.641h); z13=(0.247w,0.481h);
+z14=(0.117w,0.348h); z15l=(0,0.468h);
+penstroke z4e{right}..z8e{up}..z9e
+{left}..z10e{down};
+penstroke z13e{down}..z14e{left}..
+z15e{up};
+filldraw z10r---z11..z13r{down}--
+z13l{up}..z12..z10l{up}--z10r &
+cycle;
+%
+%
+%
+penpos16(cap_hair,-90); penpos17(cap_hair,-90);
+penpos21(cap_hair,0); z16=(x8,0.585h);
+z17-z16=whatever*dir30;
+x17=0.934w; z21=(0.488w,3/4h);
+z20=(0.578w,0.936h); z22=(0.651w,0.91h);
+z19=(0.768w,h+apex_o);
+z23=whatever[z16l,z17l]; x23=x19;
+z18=(0.895w,0.867h);
+penstroke z16e--z17e;
+filldraw z21r{up}..z22{right}..
+z23{dir-76}--z17l{left}..z18..
+z19 & z19{z22-z19}..z20..z21l{down}
+--z21r & cycle;
+%
+%
+%
+penpos25(0.926cap_stem,-153);
+penpos26(1.074cap_stem,-174);
+penpos27(cap_hair,-32);
+z24=whatever[z16r,z17r]; x24=x23+0.18cap_stem;
+z25=(3/4w,0.612h); z26=(0.825w,0.205h);
+penpos26'(0.926cap_stem,-153); z26'r=z26r;
+y27r=0.189h; x27l=w; z28=(0.849w,-apex_o);
+z27'-z27l=whatever*(z28-z27r);
+x27'=w-cap_hair;
+filldraw z16r{z17-z16}...z25r
+---z26'r...z28 & z28--z27r--z27l &
+z27l---z27'...z26'l---
+z25l..z24--z16r & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter S";
+.beginchar("S",12.813u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos0(0.032067w,-27); penpos0'(0.032067w,24);
+z0'r=z0l=(0.715w,0.745h);
+penpos1(1.5cap_hair,-156);
+penpos2(cap_hair,114);
+penpos7(cap_hair,114);
+penpos8(1.2cap_stem,-142);
+penpos9(cap_stem,-107);
+penpos10(0.926cap_stem,-123);
+penpos11(cap_hair,0);
+penpos16(0.722cap_stem,40);
+penpos17(cap_hair,-58);
+penpos18(cap_hair,-118);
+z1l=(w,0.952h); x2=0.93w;
+z3=(0.8w,0.859h); z5-z3=whatever*dir153;
+y5=h+apex_o; z4=z0r; z2l-z4=whatever*dir24;
+z6=whatever[z0r,z0l]; x6=0.462w;
+z7=(0.291w,0.931h); z8r=(0,0.505h);
+z9r=(0.562w,-apex_o);
+z10r=(0.76w,0.077h); z11=(0.933w,0.364h);
+z13=z0'l; z15-z13=whatever*dir204;
+x15=x14=0.407w; z12=(x9l,0.512h);
+z14-z12=whatever*(z15-z13);
+z16=(0.258w,0.649h);
+z17=(0.324w,0.782h); z18=(0.508w,0.739h);
+penstroke z7e{dir204}..z8e{down}..
+z9e{right}..z11e{up};
+penstroke z16e{up}..z17e{dir24}..
+z18e{dir-27};
+filldraw z1r{down}..z2r{z4-z2l}...
+z3---z5 & z5..z7r{dir204}--z7l
+{dir24}...z6---z4---z2l...z1l{up}
+& z1l--z1r & cycle;
+filldraw z11r{up}..z13{z6-z4} &
+z13---z15...z16r{up}--z16l{down}
+..z14{dir-27} & z14---z12...
+z11l{down}--z11r & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter T";
+.beginchar("T",10.386u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+z1=(0.041w,0.053h); z2=(0,0.104h);
+z3=(0.078w,y2); penpos4(1.037cap_stem,-133);
+z4=(0.165w,0.253h); z5=(0.592w,-apex_o);
+z6=(0.731w,0.123h); penpos7(cap_hair,0);
+z7r=(w,0.303h); penpos8(0.5cap_hair,-90);
+z8=(0.29w,0.271h); penpos9(1.185cap_stem,10);
+penpos10(1.148cap_stem,19);
+z9=(x5,0.415h); z10=(0.381w,0.691h);
+penpos11(0.5cap_hair,-90); z11=(0.677w,0.83h);
+penpos12(cap_hair,-112);
+penpos13(cap_hair,180);
+penpos14(1.111cap_stem,31);
+penpos14'(1.037cap_stem,57);
+z14'=(0.562w,0.939h);
+penpos15(1.185cap_stem,72);
+penpos16(cap_hair,-37.5);
+penpos17(cap_hair,-48);
+z12=(0.236w,0.6h); z13=(0.072w,0.761h);
+z14r=(0.436w,h+apex_o);
+z15=(0.858w,0.755h); z16=z15l;
+penpos15'(1.5cap_stem,72); z15'l=z15l;
+z17l=whatever[z16,z15r]; x17=0.956w;
+filldraw z1{right}..z3{up}..z4r{right}
+..z5{dir-29} & z5{dir22}..z7r{up}--
+z7l{down}..z6{left}..z4l{left}..
+z2{down}..z1{right} & cycle;
+penstroke z8e{right}..z9e{up}..z10e
+{up}..z11e{right};
+penstroke z15e{dir142.5}..z14'e..z14e{left}..z13e{down}
+..z12e{dir-22};
+penstroke z16e{z15r-z15l}..z17e
+{dir42};
+.endchar;
+
+.cmchar "The Fraktur letter U";
+.beginchar("U",10.608u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(cap_stem,0); penpos2(whatever,39);
+penpos3(1.176cap_stem,48);
+penpos4(cap_hair,-42); penpos5(cap_hair,-42);
+penpos10(cap_hair,-47);
+penpos11(cap_hair,-47);
+penpos13(cap_stem,0);
+penpos14(cap_stem,0);
+penpos15(cap_hair,-90);
+penpos19(cap_hair,-41);
+z1=(0.258w,0.162h); z2r=(x1r,0.853h);
+x2l=x1l;
+z4l=(0,0.822h); z5-z4=whatever*dir48;
+y5l=h+apex_o; z3=whatever[z4r,z5r]; y3r=y5r-apex_o;
+z7=(x1l,0.26h); z8=(0.111w,y1);
+z9=(x1r,-apex_o); z8'=(0.278w,0.082h);
+z11r-z9=whatever*dir43; x11=0.737w;
+z12-z11l=whatever*(z9-z11r);
+x12=0.472w; z6-z12=whatever*(z8-z9);
+x6=x1r;
+penstroke z1e---z2e...z3e{dir138};
+penstroke z4e--z5e;
+filldraw z9--z11r--z11l--z12--z6--
+z7{down}..z8{dir231} &
+flex(z8,z8',z9) & cycle;
+%
+%
+%
+z13=(x11,y7); z14=(x13,y2r-cap_hair);
+z15=(0.573w,0.898h); z16=(0.737w,h+apex_o);
+z17=(0.886w,0.915h); z18=(x17,y1);
+z20=(0.786w,-apex_o);
+z21=(x13l,y1); x19r=w;
+z19r-z20=whatever*dir49;
+penstroke z13e--z14e;
+filldraw z15r{z16-z15l}..z14l{down}
+--z14r{up}..z17{right} & z17
+..z16 & z16..z15l--z15r & cycle;
+filldraw z20--z19r--z19l{z20-z19r}
+..z18{left}..z13r{up}--z13l--z21--
+z20 & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter V";
+.beginchar("V",10.303u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(cap_hair,41); penpos2(cap_hair,0);
+penpos3(0.926cap_stem,-117);
+penpos6(cap_hair,-63);
+penpos7(0.704cap_stem,30);
+penpos8(cap_stem,44);penpos9(cap_hair,-65);
+penpos10(cap_hair,-65);
+penpos11(0.852cap_stem,-138);
+penpos12(2/3cap_hair,-55);
+penpos13(cap_hair,-48); penpos14(0.907cap_stem,-12);
+penpos15(1.037cap_stem,35);
+penpos16(0.889cap_stem,46);
+penpos17(cap_hair,155);
+penpos17'(0.489cap_stem,-123);
+penpos18(0.889cap_stem,-118);
+penpos20(0.537cap_stem,-147);
+penpos21(cap_hair,90);
+penpos22(cap_hair,44);
+z1=(0.115w,0.046h); z2=(0.072w,0.117h);
+z3=(0.209w,0.228h); z4=(0.613w,-apex_o);
+z5=(0.755w,0.103h); z5'=(x4,0.172h);
+z6=(0.853w,0.114h);
+z7r=(w,0.293h); z8=(0.742w,0.543h);
+z9=(0.822w,0.655h);
+z10r=(w,3/4h); z10'=(x7,0.788h);
+z11l=(0.75w,h+apex_o);
+z15=(0.414w,0.875h); z13=(0.288w,0.242h);
+z14=(0.534w,0.527h); z12=z15+(0.1w,-0.1h);
+z16r=(0.252w,h+apex_o);
+z17=(0.044w,0.859h);
+z17'r=(0,0.742h); z19=(0.043w,0.628h);
+z18=(0.096w,0.674h);
+z20=(0.267w,0.549h); z21l=(0.173w,0.435h);
+z22=(x19,0.516h);
+penstroke z1e..z2e{up}..z3e{right};
+filldraw z3r{right}..z4{dir-44} &
+z4---z6r...z7r{up}--z7l{down}..
+z6l..z5{left}..z5'..z3l{left}--z3r &
+cycle;
+penstroke z7e{up}..z8e{up}..z9e..
+z10e;
+penstroke z13e{dir42}..z14e{up}..
+z15e..z16e{left}..z17e..z17'e{down};
+filldraw z17'r{down}..z19{z3-z19} & z19---
+z18r...z20r{down}--z20l{up}..z18l..
+z17'l{up}--z17'r & cycle;
+penstroke z20e{down}..z21e{left}..
+z22e;
+filldraw z12r{up}..z11r{right}..
+1/10[z9,z10]{right} & 1/10[z9,z10]--z10--z10l &
+z10l{left}..z10'..z11l{left}..z12l{down}
+--z12r & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter W";
+.beginchar("W",13.812u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(cap_hair,44); penpos2(cap_hair,22);
+penpos3(1.074cap_stem,-133);
+z1=(0.095w,0); z2=(0.055w,0.09h);
+z3=(0.16w,0.213h); z4=(0.366w,-apex_o);
+z5=(0.435w,0.118h); penpos6(cap_hair,-56);
+penpos7(4/3cap_stem,45);
+z6=(0.508w,0.126h); z7=(0.645w,0.41h);
+penpos9(1.222cap_stem,52);
+penpos10(cap_hair,0);
+z9=(0.532w,0.733h); z10=(0.604w,h+2apex_o);
+penstroke z1e..z2e..z3e{right};
+filldraw z3r{right}..z4{dir-30} &
+z4---z6r...z7r{dir72} & z7r{dir120}..
+z9r{up}..z10r--z10l..z9l{down}..
+z7l{down}..z6l{z4-z6r}...z3l{left}
+--z3r & cycle;
+%
+%
+%
+penpos11(cap_hair,-37); penpos12(0.778cap_stem,-140);
+penpos13(1.056cap_stem,-133);
+z11=(0.561w,0.865h); z12l=(0.735w,h+apex_o);
+z13l=(0.982w,0.756h);
+penstroke z11e{dir53}..z12e{right}..
+z13e{dir-60};
+%
+%
+%
+penpos14(cap_hair,-60); z14r=z13l+(apex_o,apex_o);
+penpos15(cap_stem,43); penpos16(0.741cap_stem,37.5);
+penpos17(cap_hair,-64); penpos18(1.222cap_stem,26);
+penpos17'(cap_hair,-64);
+z15=(0.808w,0.537h); z16r=(w,0.303h);
+z18l=(0.716w,-apex_o); z17r=z18; z17'r=z18r;
+z18.1-z18l=whatever*dir146;
+z18.2-z18r=whatever*dir146; x18.2=x18.1=0;
+z18'=(z6{z6r-z4}..z7{up}) intersectionpoint
+(z18l--z18.1);
+z18''=(z6{z6r-z4}..z7{up}) intersectionpoint
+(z18r--z18.2);
+filldraw z18l--z18'--z18''--z18r--z18l & cycle;
+penpos16'(whatever,54); z16'l=z16l; x16'r=w;
+penstroke z17e---z17'e...z16'e{up}..z15e{up}..
+z14e{dir36};
+%
+%
+%
+penpos19(cap_hair,-58); penpos22'(1.111cap_stem,44);
+penpos22(1.037cap_stem,41.5);
+penpos23(1.2cap_hair,-139);
+penpos24(cap_stem,-90); penpos25(0.556cap_stem,-140);
+penpos26(cap_hair,90); penpos27(cap_hair,37);
+z19=(0.224w,0.213h); x20=x5; z20-z19r=whatever*dir32;
+z21=(0.339w,0.483h); z22'=(0.326w,0.84h);
+z22r=(0.2w,h+apex_o); z23r=(0,0.767h);
+z24=(0.114w,0.654h); z25=(0.197w,0.551h);
+z26=(0.119w,0.437h); z27=(0.025w,0.5h);
+filldraw z19r--z20 & z20{up}..z22'r
+{dir129.5}--z22'l{dir-50.5}..z21{down}
+..z19l{z19r-z20}--z19r & cycle;
+penstroke z22'e{dir129.5}..z22e{left}
+..z23e{down}..z24e{right}..z25e{down}
+..z26e{left}..z27e{dir127};
+%
+%
+%
+penpos28(cap_hair,-32); penpos29(cap_hair,-90);
+penpos30(cap_hair,-141.5);
+z28=(0.357w,0.848h); z30=z11;
+z29=(0.5[x28,x30],0.958h);
+penstroke z28e..z29e..z30e;
+.endchar;
+
+.cmchar "The Fraktur letter X";
+.beginchar("X",9.418u#,cap_height#,0);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos0(cap_stem,0); z0=(0.5w,0.537h);
+z1=z0l; penpos5(cap_stem,-90); z5l=z0r;
+penpos2(cap_hair,0); z2r=(x0r,0.697h);
+penpos3(cap_hair,0); z3l=(x0l,0.253h);
+penpos6(cap_hair,-40); penpos7(cap_hair,-40);
+z6r=(0.758w,-apex_o); z7-z6=whatever*dir50;
+x7r=w; z7'=whatever[z6l,z7l];
+z6'=whatever[z6,z7]; y6'=apex_o;
+x7'=0.893w;
+penstroke z6e--z7e;
+filldraw z6'{left}...z3l---z1--z5l
+---z5r...z7'---z7l--z7--z6' & cycle;
+penpos12(cap_hair,-45); penpos13(cap_hair,-45);
+z13l=(0.289w,h+apex_o); z13-z12=whatever*dir45;
+x12l=apex_o; z13'=whatever[z12,z13];
+y13'=h-2apex_o;
+penstroke z12e--z13e;
+filldraw z12r{z13-z12}..z1{down}--
+z5l---z2r...z13'{dir148}--z12--z12r & cycle;
+%
+%
+%
+penpos15(0.852cap_stem,-116);
+penpos16(cap_hair,-21);
+penpos14(cap_hair,-21);
+z16=(0.852w,0.723h); z14-z16=whatever*dir69;
+y14=y15l+apex_o; z15=(0.77w,0.91h);
+penstroke z2e{up}..z15e{right};
+filldraw z15r{right}..z16l{z16-z14}
+--z16r--z14r--z14l{z1-z14l}
+..z15l{left}--z15r & cycle;
+%
+%
+%
+penpos9(cap_hair,-35); penpos10(cap_hair,-35);
+z9l=(0,0.069h); z10-z9=whatever*dir55;
+y10=0.229h; z8=(0.221w,-apex_o);
+z11=(0.297w,0.1h);
+filldraw z9r{dir20}..z8{right}..
+z3r{up}--z3l{down}..z11{left}..
+z10r{z10-z9}--z10l--z9l--z9r &
+cycle;
+%
+%
+%
+penpos20(cap_hair,0); penpos21(cap_hair,0);
+penpos22(cap_hair,0); penpos23(cap_hair,0);
+z21-z20=whatever*dir74;
+z23-z22=whatever*dir74;
+y22=y5r; y21=y5l; x22=0.772w;
+x21=0.235w; y23=y21+0.072h;
+y20=y22-0.072h;
+z20'=whatever[z20,z21]; z23'=whatever[z22,z23];
+y20'=y22; y23'=y21;
+penstroke z20e--z21e;
+penstroke z22e--z23e;
+filldraw z20'--z22--z23'--z21--z20' &
+cycle;
+z20''=whatever[z20',z22]; x20''=x20'+2cap_hair;
+z23''=whatever[z21,z23']; x23''=x23'-2cap_hair;
+filldraw z20r{z21-z20}..z20''{right}
+--z21--z20--z20r & cycle;
+filldraw z23''{right}..z23l{z23-z22}
+--z23--z22--z23'' & cycle;
+.endchar;
+
+.cmchar "The Fraktur letter Y";
+.beginchar("Y",10.556u#,cap_height#,2.181u#);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+z1=(0,0); z2=(0.079w,0.089h);
+z3=(2x2,0.025h); penpos4(0.611cap_stem,-35);
+penpos5(1.074cap_stem,13);
+penpos7'(1.111cap_stem,39);
+z4r=(0.338w,-d); z5r=(w,0.513h);
+z7'r=(0.778w,h); z6'=(0.656w,0.864h);
+penpos7(cap_hair,-51); penpos8(cap_hair,-51);
+z8=whatever[z7'l,z7'r]; y8r=h;
+z7=whatever[z7'l,z7'r]; y7=0.787h;
+filldraw z1{up}..z2{right}..z3{down}
+..z4l{right}--z4r{left}..z1{up} &
+cycle;
+penstroke z4e{right}..z5e{up}..z7'e
+{dir129};
+z6=(z5l{up}..z7'l{dir129}) intersectionpoint
+((0,0.8h)--(w,0.8h));
+filldraw z5l{up}..z6..z6'..z7r{z7-z8}--
+z7--z7'{dir-51}..z5{down}--z5l &
+cycle;
+penstroke z7e--z8e;
+%
+%
+%
+penpos11(cap_hair,-90); penpos9(cap_hair,-42);
+penpos10(cap_hair,-42); penpos22(1.148cap_stem,48);
+z9r=(0.359w,-apex_o); z10-z9=whatever*dir48;
+x10=0.719w; z22=whatever[z9,z10]; x22=0.479w;
+z11=(0.126w,0.215h); penpos12(2/3cap_hair,-42);
+z12-z22r=whatever*dir-42;
+x12=0.371w; penpos13(whatever,19);
+x13l=0.5w-0.5cap_stem; x13r=0.5w+0.5cap_stem;
+y13=0.585h;
+penstroke z9e--z10e;
+filldraw z11r{right}..z22l{dir-42}--
+z22r{dir138}--z12r{dir23}..z13r{up}
+--z13l{down}..z12l..z11l{left}--
+z11r & cycle;
+%
+%
+%
+penpos14(1.037cap_stem,32); penpos15(0.889cap_stem,42);
+penpos16(cap_hair,150); penpos17(0.389cap_stem,-134);
+penpos18(0.759cap_stem,-90);
+penpos19(cap_hair,180);
+penpos20(cap_hair,90);
+penpos21(1.5cap_hair,45);
+z14=(x13l,0.904h); z15r=(0.281w,h+apex_o);
+z16=(0.066w,0.883h); z17=(0.051w,0.822h);
+z18=(0.159w,0.713h); z19=(0.275w,0.606h);
+z20r=(0.189w,0.532h); z21=(0.087w,0.561h);
+penstroke z13e{up}..z14e{dir136}..
+z15e{left}..z16e..z17e{down}..z18e
+{right}..z19e{down}..z20e{left}..
+z21e{dir135};
+.endchar;
+
+.cmchar "The Fraktur letter Z";
+.beginchar("Z",8.407u#,cap_height#,2.528u#);
+.adjust_fit(0.05alpha*w#+usual_left#,0.05alpha*w#+usual_right#);
+penpos1(0.704cap_stem,0); z1l=(0.038w,0.213h);
+penpos2(0.815cap_stem,-147);
+penpos3(1.148cap_stem,-152.5);
+penpos4(cap_hair,90);
+penpos1'(cap_hair,-66);
+z2=(0.395w,0.4h); z3l=(w-x1l,0.096h);
+z4l=(0.586w,-0.763d); z1'=(0.237w,0.372h);
+penstroke z1e{up}..z1'e..z2e..
+z3e{down}..z4e{left};
+z5=(0.368w,-0.525d); z6=(0.305w,-0.575d);
+z7=(0.338w,-0.15d); z8=(0.523w,0.077h);
+z9=(0.406w,0.061h); penpos10(cap_hair,90);
+z10r=(0.248w,0.077h);
+z8'=(x8,-0.288d);
+penpos11(cap_hair,180); z11=(0.068w,-0.3d);
+penpos12(1.5cap_hair,-90); z12r=(0.218w,-d);
+filldraw z4l{left}..z5{left}..z6 &
+z6..z7{up}..z10l{left}--z10r{right}
+..z9{right}..z8 & z8---z8'...z4r{right}
+--z4l & cycle;
+penstroke z10e{left}..z11e{down}
+..z12e{right};
+%
+%
+%
+penpos14(cap_hair,-90); penpos15(0.778cap_stem,25);
+penpos16(cap_stem,90); penpos17(0.5cap_stem,159);
+z15r=(w,0.7h); z16r=(0.5w,h+apex_o);
+z17r=(0,x15r); z14=(0.5w,0.415h);
+penstroke z15e{up}..z16e{left}..
+z17e{down}..z14e{right}..z15e{up};
+%
+%
+%
+z0=(x16,y17r); z18-z0=whatever*dir201;
+z13-z0=whatever*dir221;
+x18=x13=0;
+unfilldraw z18--z0--z13--z18 &
+cycle;
+.endchar; \ No newline at end of file
diff --git a/fonts/gothic/yfrak/ysmfrak.mf b/fonts/gothic/yfrak/ysmfrak.mf
new file mode 100644
index 0000000000..366b7f9f43
--- /dev/null
+++ b/fonts/gothic/yfrak/ysmfrak.mf
@@ -0,0 +1,137 @@
+if unknown cmbase: input cmbase fi
+input yfrabase; % -sl 15-3-1991
+
+font_identifier:="ysmfrak"; font_size 10pt#;
+
+u#:=20/36pt#; % unit width
+lower_u#:=20/36pt#;
+width_adj#:=0pt#; % width adjustment for certain characters
+serif_fit#:=0pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=270/36pt#; % height of tallest characters
+asc_height#:=250/36pt#; % height of lowercase ascenders
+cap_height#:=246/36pt#; % height of caps
+fig_height#:=232/36pt#; % height of numerals
+x_height#:=167/36pt#; % height of lowercase without ascenders
+%x_height#:=155/36pt#; % height of lowercase without ascenders
+math_axis#:=90/36pt#; % axis of symmetry for math symbols
+bar_height#:=87/36pt#; % height of crossbar in lowercase e
+comma_depth#:=70/36pt#; % depth of comma below baseline
+desc_depth#:=70/36pt#; % depth of lowercase descenders
+
+crisp#:=0pt#; % diameter of serif corners
+tiny#:=8/36pt#; % diameter of rounded corners
+fine#:=7/36pt#; % diameter of sharply rounded corners
+thin_join#:=7/36pt#; % width of extrafine details
+hair#:=6/36pt#; % lowercase hairline breadth
+%hair#:=9/36pt#; % lowercase hairline breadth
+%stem#:=25/36pt#; % lowercase stem breadth
+stem#:=22/36pt#; % lowercase stem breadth
+curve#:=30/36pt#; % lowercase curve breadth
+ess#:=27/36pt#; % breadth in middle of lowercase s
+flare#:=33/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=38/36pt#; % diameter of dots
+%cap_hair#:=11/36pt#; % uppercase hairline breadth
+cap_hair#:=7/36pt#;
+cap_amount#:=8/36pt#;
+%cap_stem#:=32/36pt#; % uppercase stem breadth
+cap_stem#:=30/36pt#;
+cap_curve#:=37/36pt#; % uppercase curve breadth
+cap_ess#:=35/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=.4pt#; % thickness of lines in math symbols
+
+dish#:=1/36pt#; % amount erased at top or bottom of serifs
+bracket#:=20/36pt#; % vertical distance from serif base to tangent
+jut#:=28/36pt#; % protrusion of lowercase serifs
+cap_jut#:=37/36pt#; % protrusion of uppercase serifs
+beak_jut#:=10/36pt#; % horizontal protrusion of beak serifs
+beak#:=70/36pt#; % vertical protrusion of beak serifs
+vair#:=8/36pt#; % vertical diameter of hairlines
+notch_cut#:=10pt#; % maximum breadth above or below notches
+bar#:=11/36pt#; % lowercase bar thickness
+slab#:=11/36pt#; % serif and arm thickness
+cap_bar#:=11/36pt#; % uppercase bar thickness
+cap_band#:=11/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=10pt#; % max breadth above/below uppercase notches
+serif_drop#:=4/36pt#; % vertical drop of sloped serifs
+stem_corr#:=1/36pt#; % for small refinements of stem breadth
+vair_corr#:=1/36pt#; % for small refinements of hairline height
+apex_corr#:=0pt#; % extra width at diagonal junctions
+
+o#:=8/36pt#; % amount of overshoot for curves
+apex_o#:=5/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=0; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=1; % factor applied to weights of heavy characters
+math_spread:=0; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/6; % extra openness inside bowls
+beak_darkness:=11/30; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=false; % should dots be square?
+hefty:=false; % should we try hard not to be overweight?
+serifs:=true; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=false; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=false; % should math-mode spacing be used?
+numeric usual_right, usual_left;
+usual_right#:=0.75u#;
+usual_left#:=0.45u#;
+
+granularity:=1.01;
+%aspect_ratio:=2/3aspect_ratio;
+
+mode_setup;
+font_setup;
+cap_amount:=8/36pt;
+foot:=0.207x_height;
+num_height:=1.242x_height;
+cap_kern:=4/36pt;
+boolean ligature; ligature:=false;
+numeric alpha; alpha:=0;
+numeric coef, gencoef; gencoef:=1;
+
+%granularity:=1.01;
+
+%readfrom("yfrakbase"); % -sl 15-3-1991
+%currenttransform:=identity xscaled 1.1;
+if proofing>1: generate ycurrent; fi % switch to the driver file%
+%generate yfraklower;
+generate yfraklow; % -sl 15-3-1991
+%generate yfrakmisc;
+generate yfrakmis; % -sl 15-3-1991
+%generate yfrakupper; % switch to the driver file
+generate yfrakupp; % -sl 15-3-1991
+generate yfraknum;
+%currenttransform:=identity;
+%generate yfrakother;
+generate yfrakoth; % -sl 15-3-1991
+
+font_slant slant; font_x_height x_height#;
+font_normal_space 6u#+2letter_fit#;
+ font_normal_stretch 3u#; font_normal_shrink 2u#;
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 2u#;
+
+%ligtable "a": "e"=:oct"032";
+ligtable "c": "h"=:oct"205", "k"=:oct"206";
+ligtable "f": "f"=:oct"204";
+ligtable "s": ":"=:oct"215", "s"=:oct"201", "t"=:oct"202", "z"=:oct"032",
+"f"=:oct"203", "b" kern 1.03u#, "d" kern 1.03u#, "h" kern 1.03u#, "k" kern 1.03u#,
+"l" kern 1.03u#, "i" kern 0.4u#, "j" kern 0.4u#;
+ligtable "t": "z"=:oct"213";
+ligtable oct"042": "a"=:oct"212", "e"=:oct"221", "o"=:oct"232", "u"=:oct"237",
+"s"=:oct"032";
+ligtable "*": "a"=:oct"211", "e"=:oct"220", "o"=:oct"231", "u"=:oct"236";
+ligtable "`": "`"=:oct"134";
+ligtable "'": "'"=:oct"042";
+ligtable "-": "-"=:oct"173";
+ligtable oct"173": "-"=:oct"174";
+ligtable oct"201": "b" kern 1.03u#, "d" kern 1.03u#, "h" kern 1.03u#, "k" kern 1.03u#
+, "l" kern 1.03u#, "i" kern 0.4u#, "j" kern 0.4u#;
+
+end.
diff --git a/fonts/gothic/yfrak/ysmfrak.tfm b/fonts/gothic/yfrak/ysmfrak.tfm
new file mode 100644
index 0000000000..65ba46b289
--- /dev/null
+++ b/fonts/gothic/yfrak/ysmfrak.tfm
Binary files differ