summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/fonts')
-rw-r--r--Master/texmf-dist/fonts/map/dvips/lxfonts/lxfonts.map21
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lamsya.mf34
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lamsyb.mf22
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lasymbols.mf1933
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lbigacc.mf35
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lbigdel.mf700
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lbigop.mf392
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lbsymbols.mf1622
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lcmbsy8.mf98
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lcmex8.mf92
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lcmmi8.mf78
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lcmmib8.mf76
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lcmsy8.mf103
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/leclb8.mf90
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lecli8.mf91
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/leclo8.mf90
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/leclq8.mf91
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lexroman.mf83
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lexslides.mf203
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/llasy.mf375
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/llasy8.mf9
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/llasyb8.mf10
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/llcmss8.mf79
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/llcmssb8.mf79
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/llcmssi8.mf79
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/llcmsso8.mf79
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lmathex.mf315
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lmathit.mf66
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lmathsy.mf47
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lmsam8.mf138
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lmsbm8.mf105
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lroman.mf247
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/ltclb8.mf87
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/ltcli8.mf87
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/ltclo8.mf87
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/ltclq8.mf87
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/ltxsymb.mf94
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lxbbase.mf204
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lxbbold.mf162
-rw-r--r--Master/texmf-dist/fonts/source/public/lxfonts/lxbcaps.mf805
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/lcmbsy8.tfmbin0 -> 1120 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/lcmex8.tfmbin0 -> 1004 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/lcmmi8.tfmbin0 -> 1508 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/lcmmib8.tfmbin0 -> 1496 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/lcmsy8.tfmbin0 -> 1116 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/leclb8.tfmbin0 -> 3172 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/lecli8.tfmbin0 -> 3360 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/leclo8.tfmbin0 -> 3380 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/leclq8.tfmbin0 -> 3144 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/llasy8.tfmbin0 -> 520 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/llasyb8.tfmbin0 -> 520 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/llcmss8.tfmbin0 -> 1320 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/llcmssb8.tfmbin0 -> 1336 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/llcmssi8.tfmbin0 -> 1512 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/llcmsso8.tfmbin0 -> 1532 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/lmsam8.tfmbin0 -> 912 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/lmsbm8.tfmbin0 -> 940 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/ltclb8.tfmbin0 -> 1460 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/ltcli8.tfmbin0 -> 1588 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/ltclo8.tfmbin0 -> 1576 bytes
-rw-r--r--Master/texmf-dist/fonts/tfm/public/lxfonts/ltclq8.tfmbin0 -> 1452 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/lcmbsy8.pfbbin0 -> 45003 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/lcmex8.pfbbin0 -> 27265 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/lcmmi8.pfbbin0 -> 45087 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/lcmmib8.pfbbin0 -> 46069 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/lcmsy8.pfbbin0 -> 44798 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/leclb8.pfbbin0 -> 80734 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/lecli8.pfbbin0 -> 78558 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/leclo8.pfbbin0 -> 82205 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/leclq8.pfbbin0 -> 75530 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/llasy8.pfbbin0 -> 16212 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/llasyb8.pfbbin0 -> 16290 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/llcmss8.pfbbin0 -> 42513 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/llcmssb8.pfbbin0 -> 44502 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/llcmssi8.pfbbin0 -> 43959 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/llcmsso8.pfbbin0 -> 45761 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/lmsam8.pfbbin0 -> 38933 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/lmsbm8.pfbbin0 -> 49746 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/ltclb8.pfbbin0 -> 37952 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/ltcli8.pfbbin0 -> 39317 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/ltclo8.pfbbin0 -> 38913 bytes
-rw-r--r--Master/texmf-dist/fonts/type1/public/lxfonts/ltclq8.pfbbin0 -> 38242 bytes
82 files changed, 9095 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/map/dvips/lxfonts/lxfonts.map b/Master/texmf-dist/fonts/map/dvips/lxfonts/lxfonts.map
new file mode 100644
index 00000000000..a797ef03481
--- /dev/null
+++ b/Master/texmf-dist/fonts/map/dvips/lxfonts/lxfonts.map
@@ -0,0 +1,21 @@
+lcmbsy8 <lcmbsy8.pfb
+lcmex8 <lcmex8.pfb
+lcmmi8 <lcmmi8.pfb
+lcmmib8 <lcmmib8.pfb
+lcmsy8 <lcmsy8.pfb
+leclb8 <leclb8.pfb
+lecli8 <lecli8.pfb
+leclo8 <leclo8.pfb
+leclq8 <leclq8.pfb
+llasy8 <llasy8.pfb
+llasyb8 <llasyb8.pfb
+llcmss8 <llcmss8.pfb
+llcmssb8 <llcmssb8.pfb
+llcmssi8 <llcmssi8.pfb
+llcmsso8 <llcmsso8.pfb
+lmsam8 <lmsam8.pfb
+lmsbm8 <lmsbm8.pfb
+ltclb8 <ltclb8.pfb
+ltcli8 <ltcli8.pfb
+ltclo8 <ltclo8.pfb
+ltclq8 <ltclq8.pfb
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lamsya.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lamsya.mf
new file mode 100644
index 00000000000..88e85674ae6
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lamsya.mf
@@ -0,0 +1,34 @@
+%% Copied and modified from AMSYA by American Mathematical Society
+%% in order to apply the necessary modification so as to generate the
+%% MSAM symbol fonts that cope with the slides fonts.
+%%
+%% Claudio Beccari 2007
+%% }
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+font_coding_scheme:="TeX math symbols";
+mode_setup; font_setup;
+
+autorounding:=0;
+
+font_slant slant; font_x_height x_height#;
+font_quad 18u# if not monospace:+4letter_fit# fi;
+% (The spacing is zero so that \TeX\ will always add the italic correction.)
+% (The calling file should give the other math symbol font parameters.)
+
+slant:=mono_charic#:=0; % the remaining characters will not be slanted
+currenttransform:=identity yscaled aspect_ratio scaled granularity;
+input lasymbols; % the symbols
+
+%if not monospace:
+% skewchar=oct"060"; skew#=.5u#;
+% ligtable "I": "T": "V": skewchar kern skew#;
+% ligtable "K": skewchar kern 2skew#;
+% ligtable "D": "N": "P": "R": "U": "W": "Y": skewchar kern 3skew#;
+% ligtable "E": "F": "G": "H": "O": "Q": skewchar kern 4skew#;
+% ligtable "B": "C": "L": "M": "S": "X": "Z": skewchar kern 5skew#;
+% ligtable "J": skewchar kern 6skew#;
+% ligtable "A": skewchar kern 7skew#;
+%fi;
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lamsyb.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lamsyb.mf
new file mode 100644
index 00000000000..07afec89f77
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lamsyb.mf
@@ -0,0 +1,22 @@
+%% File LAMSYB copied and modified from AMSYB by American Mathematical Society
+%% in order to cope with the necessities of the slides fonts
+%%
+%% Claudio Beccari 2007
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+font_coding_scheme:="TeX math symbols";
+mode_setup; font_setup;
+
+autorounding:=0;
+
+font_slant slant; font_x_height x_height#;
+font_quad 18u# if not monospace:+4letter_fit# fi;
+% (The spacing is zero so that \TeX\ will always add the italic correction.)
+% (The calling file should give the other math symbol font parameters.)
+
+slant:=mono_charic#:=0; % the remaining characters will not be slanted
+currenttransform:=identity yscaled aspect_ratio scaled granularity;
+input lbsymbols; % the symbols
+input lxbbold; % Neenie's blackboard bold
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lasymbols.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lasymbols.mf
new file mode 100644
index 00000000000..5dc60c0622a
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lasymbols.mf
@@ -0,0 +1,1933 @@
+%% Copied and modified from ASYMBOLS by American Mathematical Society
+%% in order to app;y the necessary modifictions so as to produce the MSAM
+%% symbols that cope with the slides fonts
+%%
+%% Claudio Beccari 2007
+%%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Italic corrections have not been computed for most of these characters,
+% since they are generally not slanted.
+
+% Changed some assignments for
+%
+% cmchar "Circle-R brand"
+% cmchar "Circle-S brand"
+%
+% to avoid rounding problems and the differences in TFM files for
+% different magnifications
+%
+% Changed by Stefan Lindner 15.03.1991
+%
+% original: radius=.5(6u++cap_height)+3u; radius=radius#*hppp;
+% changed: radius#=.5(6u#++cap_height#)+3u#; radius:=radius#*hppp;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+def makesquare (suffix i,j,k,l) =
+%% z.j, z.k are the lower left and right corners
+%% assumed on baseline; ie, y.k=y.j=0
+%% z.i, z.l are upper left and right corners
+%% that is, start labeling with upper left corner, and
+%% proceed to the successive corners counter-clockwise.
+y.i-y.j=x.k-x.j; y.i:=good.y y.i+o; y.l=y.i
+%% user must draw the square him/herself.
+enddef;
+
+
+cmchar "Square with dot";
+beginchar(oct"000",14u#,12u#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.0u; x2=x1; x4=x5=w-x1;
+bot y2=0; y4=y2;
+makesquare (1,2,4,5);
+y3=good.y .5[y1,y2]; x3=good.x .5[x1,x5];
+draw z1---z2---z4---z5---cycle; % square
+fill fullcircle scaled dot_size shifted z3; % dot
+penlabels(1,2,3,4,5); endchar;
+
+cmchar "Square plus";
+beginchar(oct"001",14u#,12u#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.0u; x2=x1; x4=x5=w-x1;
+bot y2=0; y4=y2; makesquare(1,2,4,5);
+draw z1---z2---z4---z5---cycle; % square
+x6=x1; x7=x4; y6=.5[y1,y2]; y7=y6; % cross strut
+y8=y1; y9=y2; x8=.5[x1, x5]; x9=x8; % vertical strut
+draw z6---z7; draw z8---z9; % plus
+penlabels(1,2,4,5,6,7,8,9); endchar;
+
+cmchar "Square times";
+beginchar(oct"002",14u#,12u#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.0u; x2=x1; x4=x5=w-x1;
+bot y2=0; y4=y2; makesquare(1,2,4,5);
+draw z1---z2---z4---z5---cycle; % square
+draw z1---z4; draw z2---z5; % diagonals
+penlabels(1,2,4,5); endchar;
+
+cmchar "Square";
+beginchar(oct"003",14u#,12u#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.0u; x2=x1;
+x4=x5=w-x1;
+bot y2=0; y4=y2; makesquare(1,2,4,5);
+draw z1---z2---z4---z5---cycle; % square
+penlabels(1,2,4,5); endchar;
+
+cmchar "Filled square";
+beginchar(oct"004",14u#,12u#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.0u; x2=x1; x4=x5=w-x1;
+bot y2=0; y4=y2; makesquare(1,2,4,5);
+filldraw z1---z2---z4---z5---cycle; % square
+penlabels(1,2,4,5); endchar;
+
+cmchar "Small filled square";
+beginchar(oct"005",5u#,.8asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.0u; x2=x1; x3=x4=w-x1;
+bot y2=0; y3=y2; makesquare(1,2,3,4);
+filldraw z1---z2---z3---z4---cycle; % draw and fill square
+penlabels(1,2,3,4); endchar;
+
+
+cmchar "Diamond";
+beginchar(oct"006",12u#,asc_height#,2u#);
+adjust_fit(0,0); pickup rule.nib;
+%% z1, z2 are left & right vertices
+%% z3, z4 are top and bottom points
+lft x1=hround u; x2=w-x1; y1=y2;
+x3=x4=.5[x1, x2]; bot y4=-d-o; top y3= good.y h+o;
+y1=.5[y4,y3];
+draw z1---z3---z2---z4---cycle; % draw diamond
+penlabels(1,2,3,4); endchar;
+
+cmchar "Filled Diamond";
+beginchar(oct"007",12u#,asc_height#,2u#);
+adjust_fit(0,0); pickup rule.nib;
+%% z1, z2 are left & right vertices
+%% z3, z4 are top and bottom points
+lft x1=hround u; x2=w-x1; y1=y2;
+x3=x4=.5[x1, x2]; bot y4=-d-o; top y3= good.y h+o;
+y1=.5[y4,y3];
+filldraw z1---z3---z2---z4---cycle; % draw diamond
+penlabels(1,2,3,4); endchar;
+
+% do char "011 before char "010.
+cmchar "Counter-clockwise-circle indicator";
+beginarithchar(oct"011"); pickup light_rule.nib;
+autorounded; lft x6=hround u; x2=w-x6;
+y2=math_axis; top y8=h;
+circle_points; % define points on circumference
+%% see page 487 of vol E
+path p; numeric t;
+p=z8{right}...z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left}
+ ...z5{z6-z4}...z6{up}...z7{z8-z6}...cycle;
+t=xpart(p intersectiontimes ((4.5u,0)--(4.5u,y8)));
+draw subpath (0,t) of p; % circle with gap
+z0=.5[z5,z1]; % the origin of the circle
+%% Now prepare for left arrowhead--see pg E465
+pickup crisp.nib;
+pos12(rule_thickness,90); pos13(bar,0); pos14(bar,0);
+y10=y12=y8; lft x10=hround x8;
+y13-y10=y10-y14=.19asc_height+eps; x13=x14=x10+3u+eps;
+pos15(bar,angle(z14-z10)); z15l=z10;
+pos16(bar,angle(z13-z10)); z16l=z10;
+z19=.38[.5[z13,z14],z10];
+numeric t; path p; % re-use t, p
+p=z14r{z19-z14}..z16r;
+t=xpart(p intersectiontimes((0,y12l)--(w,y12l)));
+x12=xpart point t of p;
+path p;
+p=z10..{z14-z19}z14l--subpath(0,t) of
+(z14r{z19-z14}..z16r)--z12l--z12r
+--subpath(t,0) of (z13r{z19-z13}..z15r)
+--z13l{z19-z13}..z10&cycle; % arrowhead
+p:=p shifted -z8; % move back to origin
+p:=p rotated -16; % rotate down a bit
+p:=p shifted z8; % move back to tip of circle
+filldraw p;
+penlabels(0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,19);
+picture v; v:=currentpicture; endchar;
+
+cmchar "Clockwise-circle indicator";
+beginarithchar(oct"010");
+currentpicture:=v reflectedabout ((w/2,0),(w/2,h));
+penlabels(0,1,2,3,5,6,7,8,9,10); endchar;
+
+cmchar "Left-Right Harpoons";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"013",18u#,v_center(spread#+.48asc_height#));
+path topleft; % for top left half arrow (harpoon)
+adjust_fit(0,0);
+pickup crisp.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis;
+x1+.5rule_thickness=hround(w-u); lft x0=hround u;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0));
+z6l=z0; numeric t; path p; p=z4r..{2(x0-x4),y0-y4}z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));
+x2=xpart point t of p;
+topleft=z0--(x0,y2l)---z1l..z1r---z2r
+ ..subpath (t,0) of\\(z3r..{2(x0-x3),y0-y3}z5r)
+ --z3l..{2(x0-x3),y0-y3}cycle; % arrowhead and stem
+topleft:=
+topleft shifted (0,.5spread); % shift above math_axis
+path botright; % for bottom right half arrow
+botright:=topleft reflectedabout ((w/2,0),(w/2,h));
+botright:=botright reflectedabout
+((0,math_axis+eps),(w,math_axis+eps));
+filldraw topleft; filldraw botright;
+penlabels(0,1,2,3,4,5,6); endchar;
+
+cmchar "Right-Left Harpoons";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"012",18u#,v_center(spread#+.48asc_height#));
+path topright, botleft;
+adjust_fit(0,0);
+pickup crisp.nib;
+topright:=topleft reflectedabout((w/2,0),(w/2,h));
+botleft:=botright reflectedabout((w/2,0),(w/2,h));
+filldraw topright; filldraw botleft; endchar;
+
+cmchar "Square minus";
+beginchar(oct"014",14u#,12u#,0); adjust_fit(0,0);
+pickup rule.nib; lft x1=hround 1.0u; x2=x1; x4=x5=w-x1; bot
+y2=0; y4=y2; makesquare(1,2,4,5);
+draw z1---z2---z4---z5---cycle; % square
+x6=x1; x7=x4; y6=.5[y1,y2]; y7=y6; % cross strut
+draw z6---z7; % minus
+penlabels(1,2,4,5,6,7); endchar;
+
+cmchar "Forces";
+beginchar(oct"015",13u#,asc_height#,0);
+adjust_fit(0,0);; pickup rule.nib;
+top y1=h; bot y2=0; y3=y4=good.y .5h; y5=y1; y6=y2;
+lft x5=hround u; x4=w-x5;
+compute_spread(.45x_height#,.55x_height#);
+x1=x5+spread; x1=x2=x3; x6=x5;
+draw z6--z5; draw z2--z1; draw z3--z4;
+penlabels(1,2,3,4,5,6); endchar;
+
+cmchar "Forces with extra bar";
+beginchar(oct"016",16u#, asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+compute_spread(.42x_height#,.52x_height#);
+top y1=h; bot y2=0; y3=y4=good.y .5h;
+y5=y7=y1; y6=y8=y2; lft x7=hround u; x4=w-x7;
+x5=good.x x7+spread; x1=good.x x5+spread;
+x1=x2=x3; x6=x5; x7=x8;
+draw z7--z8; draw z5--z6; draw z1--z2; % verticals
+draw z3--z4; % horizontal piece
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Satisfies";
+beginchar(oct"017",11u#,asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+compute_spread(.45x_height#,.55x_height#);
+top y1=h; bot y2=0; y0=good.y .5[y1,y2];
+y3=vround y0+.5spread;
+y5=vround y0- .5spread; y4=y3; y6=y5;
+lft x1=hround u; x4=w-x1;
+x1=x2=x3=x5; x4=x6; x0=x1;
+draw z1--z2; % vertical line
+draw z3--z4; % draw top horizontal piece
+draw z5--z6; % draw bottom horizontal piece
+penlabels(0,1,2,3,4,5,6); endchar;
+
+cmchar "Rightward double arrowhead";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"020",18u#,v_center(spread#+.48asc_height#)); adjust_fit(0,0);
+pickup crisp.nib; pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis; x1-.5rule_thickness=hround u;
+rt x0=hround(w-u); y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0]; numeric t; path p; p=z4l{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p; path p;
+p=z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l--z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle;
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+filldraw p shifted (x3l-x0,0);
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Leftward double arrowhead";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"021",18u#,v_center(spread#+.48asc_height#));
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis;
+x1+.5rule_thickness=hround(w-u); lft x0=hround u;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0));
+z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p;
+p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));
+x2=xpart point t of p;
+path p; p=z0..{z4-z9}z4l--subpath (0,t)
+of\\(z4r{z9-z4}..z6r)
+ --z2l--z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % second arrowhead
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+filldraw p shifted (x3r-x0,0);
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Leftward double arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"022",18u#,v_center(spread#+.96asc_height#));
+adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,90);
+pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft
+x0=hround u; y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0));
+z6l=z0; z9=.381966[.5[z3,z4],z0]; numeric t; path p;
+p=z4r{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+path p; % re-use p
+p=z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+p:=p shifted (0,y2-y4+eps); filldraw p; % top arrow
+p:= p shifted (0,y4-y3-eps); filldraw p; % bottom arrow
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Rightward double arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"023",18u#,v_center(spread#+.96asc_height#));
+adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,90);
+pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=hround u; rt
+x0=hround(w-u); y3-y0=y0-y4=.24asc_height+eps;
+x3=x4=x0-3u-eps; pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+path p; p=z0..{z4-z9}z4r--subpath (0,t)
+of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+p:=p shifted (0,y2-y4+eps); filldraw p; % top
+p:=p shifted (0,y4-y3-eps); filldraw p; %bottom
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Double upward arrow";
+beginchar(oct"024",15u#,asc_height#,asc_depth#); italcorr
+.76asc_height#*slant+.5crisp#-u#; adjust_fit(0,0); pickup
+crisp.nib; pos1(rule_thickness,0); pos2(rule_thickness,0);
+pos3(bar,90); pos4(bar,90); lft
+x1l=hround(.5w-.5rule_thickness); y1-.5rule_thickness=-d;
+x0=x1=x2; top y0=h; x0-x3=x4-x0=3u+eps;
+y3=y4=y0-.24asc_height-eps; pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r; t=xpart(p
+intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of
+p;
+path p; p=z0..{z4-z9}z4r--subpath (0,t)
+of\\(z4l{z9-z4}..z6r)
+ --z2r---z1r..z1l---z2l--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+p:=p shifted (x0-x4-eps,0); filldraw p; % left arrow
+p:=p shifted (x4-x3+eps,0); filldraw p;
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Double downward arrow";
+beginchar(oct"025",15u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,0);
+pos2(rule_thickness,0); pos3(bar,90); pos4(bar,90); lft
+x1l=hround(.5w-.5rule_thickness); y1+.5rule_thickness=h;
+x0=x1=x2; bot y0=-d; x0-x3=x4-x0=3u+eps;
+y3=y4=y0+.24asc_height+eps; pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r; t=xpart(p
+intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of
+p;
+path p; p=z0..{z4-z9}z4l--subpath (0,t)
+of\\(z4r{z9-z4}..z6r)
+ --z2r---z1r..z1l---z2l--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+p:=p shifted (x0-x4-eps,0); filldraw p; % left arrow
+p:=p shifted (x4-x3+eps,0); filldraw p;
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+%%
+cmchar "Upward rightward harpoon";
+beginchar(oct"026",7.5u#,asc_height#, asc_depth#);
+%% see page E431
+adjust_fit(0,0); pickup crisp.nib;
+x0=x1=x2; lft x1l=hround(.5w-.5rule_thickness);
+y1-.5rule_thickness=-d; pos1(rule_thickness,0);
+pos2(rule_thickness,0); pos3(bar,-90); pos4(bar,-90);
+top y0=vround h;
+x3-x0=x0-x4=.24asc_height+eps; y3=y4=y0-3u-eps;
+pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p;
+p=z4r..{y0-y4,2(x0-x4)}z6r;
+t=xpart (p intersectiontimes ((x2l,0)--(x2l,h)));
+y2=ypart point t of p;
+filldraw z0--(x2l,y0)---z1l..z1r---z2r
+ ..subpath(t,0) of (z3r..{x0-x3,2(y0-y3)}z5r)
+ --z3l..{x0-x3,2(y0-y3)}cycle;
+picture v; v:=currentpicture;
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Downward rightward harpoon";
+beginchar(oct"027",7.5u#,asc_height#,asc_depth#);
+adjust_fit(0,0);
+currentpicture:=v
+reflectedabout((0,.5(h-d)*aspect_ratio+eps),(w,.5(h-d)*aspect_ratio+eps));
+penlabels(0,1,2,3,4,5,6); endchar;
+
+cmchar "Upward leftward harpoon";
+beginchar(oct"030",7.5u#,asc_height#, asc_depth#);
+adjust_fit(0,0);
+currentpicture:=
+v reflectedabout((w/2+eps,-d),(w/2+eps,h));
+picture v; v:=currentpicture;
+penlabels(0,1,2,3,4,5,6); endchar;
+
+cmchar "Downward leftward harpoon";
+beginchar(oct"031",7.5u#,asc_height#,asc_depth#);
+adjust_fit(0,0);
+currentpicture:=v
+reflectedabout((0,.5(h-d)*aspect_ratio+eps),(w,.5(h-d)*aspect_ratio+eps));
+penlabels(0,1,2,3,4,5,6); endchar;
+
+cmchar "Rightward arrow with tail";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"032",20u#,v_center(spread#+.48asc_height#));
+adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,90);
+pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=hround 1.5u; rt
+x0=hround(w-3u); y3-y0=y0-y4=.24asc_height+eps;
+x3=x4=x0-3u-eps; pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+path p;
+p=z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+path arrow;
+arrow=z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle;
+p:=p shifted (2u,0); filldraw p;
+arrow:=arrow shifted (-13u+bar,0); filldraw arrow;
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Leftward arrow with tail";
+beginchar(oct"033",20u#,v_center(spread#+.48asc_height#));
+adjust_fit(0,0); pickup crisp.nib;
+p:= p reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+arrow:= arrow reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+filldraw p; filldraw arrow;
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Leftward-rightward parallel arrows";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"034",18u#,v_center(spread#+.96asc_height#));
+adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,90);
+pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft
+x0=hround u; y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0));
+z6l=z0; z9=.381966[.5[z3,z4],z0]; numeric t; path p;
+p=z4r{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+path p, q; % re-use p
+p=z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+p:=p shifted (0,.5[y3,y4]+eps); filldraw p; % top arrow
+p:= p shifted (0,y4-y3);
+q:= p reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+p:=p shifted (0,y3-y4+eps); % restore p's position
+filldraw q; % bottom arrow
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Rightward-leftward parallel arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"035",18u#,v_center(spread#+.96asc_height#));
+adjust_fit(0,0); pickup crisp.nib;
+p:=p reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+q:=q reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+filldraw p; filldraw q;
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Leftward shift";
+beginchar(oct"036",9u#,asc_height#, 0);
+adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,90);
+pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=.8h; x1+.5rule_thickness=hround(w-u); lft x0=hround
+u; y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0));
+z6l=z0; z9=.381966[.5[z3,z4],z0];
+z10=z1; x11=x10; y11-.5rule_thickness =vround -d;
+pos10(rule_thickness,0); pos11(rule_thickness,0);
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));
+x2=xpart point t of p;
+path p;
+p=z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+--z2l---(x10l,y1l)--z11l..z11r---{up}z10r..{left}z1r---z2r--subpath
+(t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and bent stem
+filldraw p;
+penlabels(0,1,2,3,4,5,6,9,10); endchar;
+
+cmchar "Rightward shift";
+beginchar(oct"037",9u#,asc_height#, 0);
+adjust_fit(0,0); pickup crisp.nib;
+p:=p reflectedabout((w/2+eps,-d),(w/2+eps,h));
+filldraw p;
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+compute_spread(.45x_height#,.55x_height#);
+cmchar "Rightward squiggly arrow";
+beginchar(oct"040",18u#,v_center(spread# +
+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis;
+x1-.5rule_thickness=hround 11u; rt x0=hround(w-u);
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0));
+z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p;
+p=z4l{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+path p;
+p=z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+filldraw p;
+%% now for squiggle
+x12-x11=x13-x12=x14-x13=x15-x14=x16-x15=x1-x16;
+x1-x11=hround (w-2u-x0+x1-.5rule_thickness);
+y11=y13=y15=y0; y12=y16=.5[y0,y3];
+y14=.5[y4,y0];
+pickup pencircle scaled rule_thickness;
+draw z11---z12---z14---z16---z1;
+penlabels(0,1,2,3,4,5,6,9,11,12,13,14,15,16); endchar;
+
+compute_spread(.45x_height#,.55x_height#);
+cmchar "Leftward rightward squiggly arrow";
+beginchar(oct"041",25u#,v_center(spread# +
+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+arrow_length=4.5u+eps;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis;
+x1+.5rule_thickness=hround(u+arrow_length);
+lft x0=hround u; y3-y0=y0-y4=.24asc_height+eps;
+x3=x4=x0+3u+eps; pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+path p; p=z0..{z4-z9}z4l--subpath (0,t)
+of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+filldraw p; % left arrow
+p:=p reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+filldraw p; % right arrow
+z10=z1 reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+y11=y15=y19=.5[y0,y3]; y13=y17=.5[y4,y0];
+y12=y14=y16=y18=y10;
+x11-x1=x12-x11=x13-x12=x14-x13=x15-x14=x16-x15=x17-x16=x18-x17=
+x19-x18=x10-x19;
+pickup pencircle scaled rule_thickness;
+draw z1---z11---z13---z15---z17---z19---z10;
+penlabels(0,1,2,3,4,5,6,9,10,11,12,13,14,15,16,17,18,19);
+endchar;
+
+cmchar "Leftward curly arrow";
+beginchar(oct"042",18u#,.8asc_height#,0#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric arrow_length; arrow_length=.66*(w-2u+eps);
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis;
+x1+.5rule_thickness=hround(u+arrow_length);
+lft x0=hround u; y3-y0=y0-y4=.24asc_height+eps;
+x3=x4=x0+3u+eps; pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+path p; p=z0..{z4-z9}z4l--subpath (0,t)
+of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+filldraw p; % left arrow
+z10=z1; x13=x14=hround(u+arrow_length+eps); y13=y1; y14=-o;
+x12=.5[x11,x13]; y12=h; rt x11=hround(w-u); y11=.5[y10,y12];
+pickup pencircle scaled rule_thickness;
+path q;
+q=z10{right}..tension0.8..{up}z11..tension0.8..{left}z12
+..tension0.8..{down}z13--z14;
+draw q;
+penlabels(0,1,2,3,4,5,6,9,10,11,12,13,14); endchar;
+
+cmchar "Rightward curly arrow";
+beginchar(oct"043",18u#,.8asc_height#,0#);
+adjust_fit(0,0); pickup crisp.nib;
+p:=p reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+filldraw p;
+pickup pencircle scaled rule_thickness;
+q:=q reflectedabout ((w/2+eps,-d),(w/2+eps,h));
+draw q; endchar;
+
+numeric circ_diam; % diameter of little circle
+circ_diam=2.5u;
+cmchar "Equals circle sign";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"044",14u#,v_center(4spread#+rule_thickness#+2.5u#));
+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 %
+penpos11(rule_thickness,90); penpos13(rule_thickness,-90);
+penpos12(rule_thickness,180); penpos14(rule_thickness,0);
+x12r=hround(.5w-.5circ_diam-rule_thickness); %
+x14r=w-x12r; x11=x13=.5w; y11l=y13l+circ_diam;
+y12=y14=.5[y11,y13]; y13r=vround(y1+.8spread); %
+penstroke pulled_arc.e(11,12) & pulled_arc.e(12,13)
+ & pulled_arc.e(13,14) & pulled_arc.e(14,11) & cycle; %
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+
+
+cmchar "Follows or equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % spread of similarity sign
+compute_spread(.54 x_height#,.66 x_height#);
+spread#'':=spread#; spread'':=spread; % spread between symbols
+compute_spread(5/4 x_height#,3/2 x_height#); % spread of follows sign
+beginchar(oct"045",14u#,v_center(spread#'+spread#+spread#''));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x1=x3; x2=w-x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1{u,-spread}...{right}z2; %upper `diagonal'
+draw z3{u,spread}...{right}z2; % lower diagonal
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread'';
+y3-y14=spread';
+draw z11{up}...z12{right}..{right}z13...{up}z14;
+penlabels(1,2,3,11,12,13,14); endchar;
+
+cmchar "Greater than or similar to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54x_height#,.66x_height#);
+spread#'':=spread#; spread'':=spread;
+compute_spread(5/4 x_height#,3/2 x_height#);
+beginchar(oct"046",14u#,v_center(spread#'+spread#+spread#''));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x1=x3; x2=w-x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3;
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread'';
+ y3-y14=spread';
+draw z11{up}...z12{right}..{right}z13...{up}z14;
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+cmchar "Greater than or approximately equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54x_height#,.66x_height#);
+spread#'':=spread#; spread'':=spread; % spread between similarities
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"047",14u#,v_center(spread#+2spread#''+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x1=x3; x2=w-x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3;
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread';
+bot y3- top y13 = spread'';
+path p; p=z11{up}...z12{right}..{right}z13...{up}z14;
+draw p; draw p shifted (0,-spread'');
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+cmchar "Multimap symbol";
+beginchar(oct"050",20u#,.8asc_height#,0#);
+adjust_fit(0,0); pickup rule.nib; autorounded;
+numeric circ_diam; circ_diam=5u;
+y2=math_axis; y8=y2+.5circ_diam; rt x2=w-u;
+x6=x2-circ_diam;
+circle_points; draw_circle;
+x9=u+.5rule_thickness; y9=y10=y2; x10=x6-.5rule_thickness;
+draw z9---z10;
+penlabels(1,2,3,4,5,6,7,8,9,10); endchar;
+
+cmchar "Therefore";
+beginchar(oct"051",12u#,asc_height#,0);
+adjust_fit(0,0);
+lft x1=hround 1.5u; x2=w-x1; bot y1=-o; y2=y1;
+z3-z1=(z2-z1)rotated60;
+fill fullcircle scaled dot_size shifted z1;
+% left bottom dot
+fill fullcircle scaled dot_size shifted z2;
+% rigth bottom
+fill fullcircle scaled dot_size shifted z3; % top dot
+penlabels(1,2,3); endchar;
+
+
+cmchar "Because";
+beginchar(oct"052",12u#,asc_height#,0);
+adjust_fit(0,0);
+lft x1=hround 1.5u; x2=w-x1; y2=y1;
+x3=w/2; y3=-o;
+z3-z1=(z2-z1)rotated-60;
+fill fullcircle scaled dot_size shifted z1; % top left dot
+fill fullcircle scaled dot_size shifted z2;
+% top right dot
+fill fullcircle scaled dot_size shifted z3; % bottom dot
+penlabels(1,2,3); endchar;
+
+cmchar "Equals-and-dots sign";
+beginarithchar(oct"053");
+compute_spread(.45x_height#,.55x_height#);
+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; draw z3--z4; % draw bars
+pickup light_rule.nib;
+x5=x6=x7=x8=hround w/2+eps; z5=z6; z7=z8;
+penpos5(.8dot_size,0); penpos6(.8dot_size,90);
+penpos7(.8dot_size,0); penpos8(.8dot_size,90);
+y5-y1=y3-y7=spread;
+dot(5,6); dot(7,8); % draw dots
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Equals sign with triangle";
+beginchar(oct"054", 14u#,12u#+math_axis# ,6u#-math_axis#);
+compute_spread(.45x_height#,.55x_height#);
+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; draw z3--z4; % draw bars
+numeric tri_side; % length of equilateral triangle
+tri_side=7u;
+x6-x5=tri_side; .5[x5,x6]=w/2; y5=y6; y5-y1=.8spread;
+%top y7=body_height;x7=w/2;
+z7-z5=(z6-z5) rotated 60;
+draw z5--z6--z7--cycle;
+penlabels(1,2,3,4,5,6,7); endchar;
+
+
+cmchar "Precedes or equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54x_height#,.55x_height#);
+spread#'':=spread#; spread'':=spread;
+compute_spread(5/4 x_height#,3/2 x_height#);
+beginchar(oct"055",14u#,v_center(spread#'+spread#+spread#''));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1{-u,-spread}...{left}z2; %upper `diagonal'
+draw z3{-u,spread}...{left}z2; % lower diagonal
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread'';
+ y3-y14=spread';
+draw z11{up}...z12{right}..{right}z13...{up}z14;
+penlabels(1,2,3,11,12,13,14); endchar;
+
+cmchar "Less than or similar to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54x_height#,.55x_height#);
+spread#'':=spread#; spread'':=spread;
+compute_spread(5/4 x_height#,3/2 x_height#);
+beginchar(oct"056",14u#,v_center(spread#'+spread#+spread#''));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3;
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread'';
+ y3-y14=spread';
+draw z11{up}...z12{right}..{right}z13...{up}z14;
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+cmchar "Less than or approximately equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54x_height#,.66x_height#);
+spread#'':=spread#; spread'':=spread; % spread between similarities
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"057",14u#,v_center(spread#+2spread#''+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3;
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread';
+bot y3- top y13 = spread'';
+path p; p=z11{up}...z12{right}..{right}z13...{up}z14;
+draw p; draw p shifted (0,-spread'');
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+cmchar "Equal or less than sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"060",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; y8-y1=y9-y2=spread'; top y8=h;
+x2=x9; x1=x8;
+draw z1--z2--z3; % diagonals
+draw z8--z9; % equal sign
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Equal or greater than sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"061",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x9; x1=x8;
+y2=.5[y1,y3]; y8-y1=y9-y2=spread'; top y8=h;
+draw z1--z2--z3; % diagonals
+draw z8--z9;
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Less than or (slanted) equal sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"066",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; y3-y8=y2-y9=spread'; top y1=h;
+x2=x9; x1=x8;
+draw z1--z2--z3; % diagonals
+draw z8--z9; % equal sign
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Greater than or (slanted) equal sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"076",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x9; x1=x8;
+y2=.5[y1,y3]; y3-y8=y2-y9=spread'; top y1=h;
+draw z1--z2--z3; % diagonals
+draw z8--z9;
+penlabels(1,2,3,8,9); endchar;
+cmchar "Less than or greater than sign";
+compute_spread(.4x_height#,.5x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"067",14u#,v_center(2spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround w-1.5u+eps; x1=x3=x5; x2=x4=x6=w-x1;
+y1-y3=spread; top y1=h; y2-y4=spread'; y4-y6=spread;
+y2=.5[y1,y3]; y5=.5[y4,y6];
+draw z1--z2--z3; draw z4--z5--z6;
+penlabels(1,2,3,4,5,6); endchar;
+
+cmchar "Greater than or less than sign";
+compute_spread(.4x_height#,.5x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(1.111 x_height#,1.333x_height#);
+beginchar(oct"077",14u#,v_center(2spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x1=x3=x5; x2=x4=x6=w-x1;
+y1-y3=spread; top y1=h; y2-y4=spread'; y4-y6=spread;
+y2=.5[y1,y3]; y5=.5[y4,y6];
+draw z1--z2--z3; draw z4--z5--z6;
+penlabels(1,2,3,4,5,6); endchar;
+
+cmchar "Equals or precedes sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"062",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround(1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y8-bot y1=top y9-bot y2=spread'; bot y3=0;
+x2=x9;x8=x1-2u;
+draw z1{-u,-spread}...{left}z2;
+draw z3{-u, spread}...{left}z2;
+draw z8{-u,-spread}...{left}z9;
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Equals or follows sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"063",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y8-bot y1=top y9-bot y2=spread'; bot y3=0;% top y8=h;
+x2=x9;x8=x1+2u;
+draw z1{u,-spread}...{right}z2;
+draw z3{u, spread}...{right}z2;
+draw z8{u,-spread}...{right}z9;
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Precedes or curvy equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"064",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround(1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y3-bot y8=top y2-bot y9=spread'; bot y3=0;
+x2=x9;x8=x1-2u;
+%for i=1 upto 3: %lower entire character
+%y[i]:=y[i]-spread'; endfor
+%for i=8 upto 9:
+%y[i]:=y[i]-spread'; endfor
+draw z1{-u,-spread}...{left}z2;
+draw z3{-u, spread}...{left}z2;
+draw z8{-u, spread}...{left}z9;
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Follows or curvy equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"074",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y3-bot y8=top y2-bot y9=spread'; bot y3=0;
+x2=x9;x8=x1+2u;
+%for i=1 upto 3: %lower entire character
+%y[i]:=y[i]-spread'; endfor
+%for i=8 upto 9:
+%y[i]:=y[i]-spread'; endfor
+draw z1{u,-spread}...{right}z2;
+draw z3{u, spread}...{right}z2;
+draw z8{u, spread}...{right}z9;
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Less than or (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"065",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y1=h;
+x2=x9=x7; x1=x8=x6; y7=y6; y8=y9;
+y7-y9=spread'; top y3-bot y6=spread';
+draw z1--z2--z3; % diagonals
+draw z6--z7; draw z8--z9; % equal sign
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Greater than or (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"075",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x7=x9; x1=x6=x8; y6=y7; y8=y9;
+y2=.5[y1,y3]; top y3-bot y6=spread'; top y1=h;
+y7-y9=spread';
+draw z1--z2--z3; % diagonals
+draw z6--z7; draw z8--z9;
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Reverse prime symbol (superscript only)";
+beginchar(oct"070",3u#+max(1.75u#,curve#+2(curve#-stem#)),
+ .8asc_height#,0); adjust_fit(0,0); pickup fine.nib; numeric
+light_stem,heavy_stem; light_stem=hround .5[vair,stem];
+heavy_stem=hround(bold+2dw); x1-.5heavy_stem=hround(.25u);
+y1+.5heavy_stem=h; x2+.5light_stem=hround (w-.5u);
+y2=1/12asc_height;
+numeric theta; theta=angle(z1-z2)-90;
+pos1(heavy_stem,theta); pos2(light_stem,theta);
+filldraw circ_stroke z1e--z2e; % diagonal
+penlabels(1,2); endchar;
+
+cmchar "short axis line";
+beginchar(oct"071",9u#,27/7u#+math_axis#,27/7u#-math_axis#); pickup rule.nib;
+lft x1=hround 1.5u-eps; x2=w-x1; y1=y2=math_axis;
+draw z1--z2;
+labels(1,2); endchar;
+
+cmchar "Dotted (right-left) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"072",14u#,v_center(3spread#+2rule_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
+pickup tiny.nib;
+x6=x5=x2; y6=y5=y1+spread;
+pos5(dot_size,0); pos6(dot_size,90);
+x7=x8=x3; y7=y8=y4-spread;
+pos7(dot_size,0); pos8(dot_size,90);
+dot(5,6); dot(7,8);
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Dotted (left-right) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"073",14u#,v_center(3spread#+2rule_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
+pickup tiny.nib;
+x6=x5=x1; y6=y5=y1+spread;
+pos5(dot_size,0); pos6(dot_size,90);
+x7=x8=x4; y7=y8=y4-spread;
+pos7(dot_size,0); pos8(dot_size,90);
+dot(5,6); dot(7,8);
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Square subset sign"; % taken from vol E, p533
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"100",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; lft x2=hround(1.5u);
+x1=x4=hround(w-x2)+eps; x3=x2; y1-y4=spread; y2=y1; y3=y4;
+top y1=h; draw z1--z2--z3--z4; % bars and stem x8=x1;
+penlabels(1,2,3,4); endchar;
+
+cmchar "Square superset sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"101",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x2=hround(w-1.5u); x1=x4=hround w-x2-eps; x3=x2;
+y1-y4=spread; y2=y1; y3=y4; top y1=h; draw z1--z2--z3--z4;
+% bars and stem
+penlabels(1,2,3,4); endchar;
+
+cmchar "Rightward pointing isosceles triangle";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"102",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; lft x2=hround(1.5u);
+x3=x2; x1=hround(w-x2);
+top y2=h; y2-y3=spread; y1=.5[y2,y3];
+draw z1--z2--z3--cycle;
+penlabels(1,2,3); endchar;
+
+cmchar "Leftward pointing isosceles triangle";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"103",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; rt x2=hround(w-1.5u-eps);
+x3=x2; x1=hround(w-x2);
+top y2=h; y2-y3=spread; y1=.5[y2,y3];
+draw z1--z2--z3--cycle;
+penlabels(1,2,3); endchar;
+
+cmchar "Rightward isosceles triangle with lower bar";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"104",14u#,v_center(spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; lft x2=hround(1.5u);
+x3=x2; x1=hround(w-x2);
+top y2=h; y2-y3=spread; y1=.5[y2,y3];
+x4=x2; x5=x1; y3-y4=spread'; y5=y4;
+draw z1--z2--z3--cycle; draw z4--z5;
+penlabels(1,2,3,4,5); endchar;
+
+cmchar "Leftward isosceles triangle with lower bar";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"105",14u#,v_center(spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; rt x2=hround(w-1.5u-eps);
+x3=x2; x1=hround(w-x2);
+top y2=h; y2-y3=spread; y1=.5[y2,y3];
+x4=x2; x5=x1; y3-y4=spread'; y5=y4;
+draw z1--z2--z3--cycle; draw z4--z5;
+penlabels(1,2,3,4,5); endchar;
+
+cmchar "Large, filled, 5-pointed star";
+beginchar(oct"106",asc_height#+desc_depth#,asc_height#,desc_depth#);
+adjust_fit(.5u#, .5u#); pickup tiny.nib;
+numeric theta; theta=360/5;
+x0=good.x .5w; y0=good.y .5[h, -d]; x1=x0; top y1=h;
+for n=2 upto 5: z[n]=z0+(z1-z0) rotated((n-1)*theta); endfor
+% z0 is the `origin'
+% z1 thru z5 are the points; z1 at the top going
+% counterclockwise
+z6=(z1--z3)intersectionpoint(z2--z5);
+for n=7 upto10: z[n]=z0+(z6-z0)rotated((n-1)*theta); endfor
+filldraw z1--z6--z2--z7--z3--z8--z4--z9--z5--z10--cycle;
+penlabels(0,1,2,3,4,5); endchar;
+
+cmchar "Vertical overlapping slurs";
+beginchar(oct"107",9u#,body_height#,paren_depth#);
+adjust_fit(0,0); pickup fine.nib;
+numeric light_stem; light_stem=Vround .5[vair,stem];
+y2=.5[h,-d]; x2r=hround w-1.5u; pos2(light_stem,0);
+x1-.5hair=hround w-x2; x3=x1; y1+.5hair=h; y3-.5hair=-d;
+numeric theta; theta= angle((z2-z1)xscaled3);
+numeric theta'; theta'=angle((z3-z2)xscaled3);
+pos1(hair, theta+90); pos3(hair, theta'+90);
+path p;
+p=z1l{dir theta}...z2l...{dir theta'}z3l
+ ..z3r{-dir theta'}...z2r...{-dir theta}z1r..cycle;
+filldraw p;
+p:=p reflectedabout((.5w,-d),(.5w,h)); filldraw p;
+penlabels(1,2,3); endchar;
+
+cmchar "Filled rightward pointing isosceles triangle";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"111",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; lft x2=hround(1.5u);
+x3=x2; x1=hround(w-x2);
+top y2=h; y2-y3=spread; y1=.5[y2,y3];
+filldraw z1--z2--z3--cycle;
+penlabels(1,2,3); endchar;
+
+cmchar "Filled leftward pointing isosceles triangle";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"112",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; rt x2=hround(w-1.5u-eps);
+x3=x2; x1=hround(w-x2);
+top y2=h; y2-y3=spread; y1=.5[y2,y3];
+filldraw z1--z2--z3--cycle;
+penlabels(1,2,3); endchar;
+
+ cmchar "short axis right arrow";
+beginchar(oct"113",9u#,27/7u#+math_axis#,27/7u#-math_axis#);
+pickup rule.nib;
+penpos1(.25rule_thickness,90); penpos2(.25rule_thickness,90); penpos3(bar,0);
+penpos4(bar,0);
+y0=y1=y2=math_axis;
+x1=hround 1.5u-eps;
+rt x0=w-x1;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
+penpos5(bar,angle(z4-z0)); z5l=z0; penpos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "short axis left arrow";
+beginchar(oct"114",9u#,27/7u#+math_axis#,27/7u#-math_axis#);
+pickup rule.nib;
+penpos1(.25rule_thickness,90); penpos2(.25rule_thickness,90); penpos3(bar,0);
+penpos4(bar,0);
+y0=y1=y2=math_axis; x0=hround 1.5u-eps;
+rt x1=w-x0;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+penpos5(bar,angle(z4-z0)); z5l=z0; penpos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+
+cmchar "Filled downward triangle";
+beginchar(oct"110",.8asc_height#+3u#,.8asc_height#,0pt#);
+adjust_fit(0,0); pickup rule.nib;
+y2=0; lft x1=1.5u;
+x3=hround w-x1;
+y1=y3=vround h-y2; x2=.5[x1,x3];
+filldraw z1--z2--z3--cycle;
+penlabels(1,2,3); endchar;
+
+cmchar "Downward triangle";
+beginchar(oct"117",.8asc_height#+3u#,.8asc_height#,0pt#);
+adjust_fit(0,0); pickup rule.nib;
+y2=0; lft x1=1.5u;
+x3=hround w-x1;
+y1=y3=vround h-y2; x2=.5[x1,x3];
+draw z1--z2--z3--cycle;
+penlabels(1,2,3); endchar;
+
+cmchar "Upward triangle";
+beginchar(oct"115",.8asc_height#+3u#,.8asc_height#,0pt#);
+adjust_fit(0,0); pickup rule.nib;
+y2=h; lft x1=1.5u;
+x3=hround w-x1;
+y1=y3=vround h-y2; x2=.5[x1,x3];
+draw z1--z2--z3--cycle;
+penlabels(1,2,3); endchar;
+
+cmchar "Filled upward triangle";
+beginchar(oct"116",.8asc_height#+3u#,.8asc_height#,0pt#);
+adjust_fit(0,0); pickup rule.nib;
+y2=h; lft x1=1.5u;
+x3=hround w-x1;
+y1=y3=vround h-y2; x2=.5[x1,x3];
+filldraw z1--z2--z3--cycle;
+penlabels(1,2,3); endchar;
+
+cmchar "Egg sandwich";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"120",14u#,asc_height#,0);
+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
+pickup tiny.nib;
+x5=x6=hround w/2; bot y5=bot y1; top y6=top y3;
+y7=y8=math_axis;x8-x7=y5-y6;
+x6=.5[x7,x8];
+draw z5{right}..z8..z6{left}..z7..cycle;
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Stacked symbols: <, bar, >";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.98 x_height#,1.176 x_height#);
+beginchar(oct"121",14u#,v_center(2spread#'+2spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+y1=y2; lft x1=hround 1.5u-eps; rt x2=w-x1;
+x4=x6=x8=x1; x3=x5=x7=x2;
+y5-y1=y1-y6=spread';top y3=h; y3-y5=spread;
+y6-y8=spread;
+y7=.5[y6,y8]; y4=.5[y3,y5];
+draw z3--z4--z5; draw z6--z7--z8; draw z1--z2;
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Stacked symbls: greater than, bar, less than";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.98 x_height#,1.176 x_height#);
+beginchar(oct"122",14u#,v_center(2spread#'+2spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+y1=y2; lft x2=hround 1.5u-eps; rt x1=w-x2;
+x4=x6=x8=x1; x3=x5=x7=x2;
+y5-y1=y1-y6=spread';top y3=h; y3-y5=spread;
+y6-y8=spread;
+y7=.5[y6,y8]; y4=.5[y3,y5];
+draw z3--z4--z5; draw z6--z7--z8; draw z1--z2;
+numeric bar_ht; bar_ht=y1; %save height of bar
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Stacked symbls: less than, =, greater than";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.98 x_height#,1.176 x_height#);
+beginchar(oct"123",14u#,v_center(3spread#'+2spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x2=w-x1;
+x1'=x1; x2=x2'; x4=x6=x8=x1;
+x3=x5=x7=x2;
+y1=y2; y1'=y2'; y2-y2'=spread'; bot y2=math_axis+.5spread';
+draw z1--z2; draw z1'--z2';
+y3-y5=y6-y8=spread;
+y5-y2=y2'-y6=spread';
+y7=.5[y6,y8]; y4=.5[y3,y5];
+draw z3--z4--z5; draw z6--z7--z8;
+penlabels(1,1',2,2',3,4,5,6,7,8); endchar;
+
+cmchar "Stacked symbols: greater than, =, less than";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.98 x_height#,1.176 x_height#);
+beginchar(oct"124",14u#,v_center(3spread#'+2spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=w-x2;
+x1'=x1; x2=x2'; x4=x6=x8=x1;
+x3=x5=x7=x2;
+y1=y2; y1'=y2'; y2-y2'=spread'; bot y2=math_axis+.5spread';
+draw z1--z2; draw z1'--z2';
+y3-y5=y6-y8=spread;
+y5-y2=y2'-y6=spread';
+y7=.5[y6,y8]; y4=.5[y3,y5];
+draw z3--z4--z5; draw z6--z7--z8;
+penlabels(1,1',2,2',3,4,5,6,7,8); endchar;
+
+cmchar "Yen symbol";
+compute_spread(.45x_height#, .55x_height#);
+beginchar(oct"125",13u#,1.35cap_height#,0); %% adapted from "Y"
+italcorr cap_height#*slant+.45u#;
+adjust_fit(cap_serif_fit#,cap_serif_fit#); numeric
+left_stem,right_stem,outer_jut,dy,alpha;
+left_stem=cap_stem-stem_corr; right_stem=min(cap_hair if
+hefty:-2stem_corr fi,left_stem); outer_jut=.75cap_jut;
+x1l=w-x4r=l+letter_fit+outer_jut+.05u;
+x2l=x5l=hround(.5w-.5left_stem); x3r=x5r; y1=y4=h;
+y2=y3=y5=.4h; dy=y1-y2; alpha=((x2l-x1l)++dy)/dy;
+penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
+penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0);
+penpos5(left_stem,0); penpos6(left_stem,0); x5=x6; y6=0;
+z0=whatever[z1r,z2r]=whatever[z3l,z4l]; if
+y0>y2+cap_notch_cut: y0:=y2+cap_notch_cut;
+ fill
+z0+.5right{up}...{z4-z3}diag_end(3l,4l,1,1,4r,3r)--z5r
+--diag_end(5r,6r,1,1,6l,5l)--z5l--diag_end(2l,1l,1,1,1r,2r){z2-z1}
+ ...{down}z0+.5left--cycle; % diagonals and stem
+else: fill z0--diag_end(0,4l,1,1,4r,3r)--z5r
+ --diag_end(5r,6r,1,1,6l,5l)--z5l
+ --diag_end(2l,1l,1,1,1r,0)--cycle; fi % diagonals & stem
+if serifs: numeric inner_jut; pickup tiny.nib;
+ prime_points_inside(1,2); prime_points_inside(4,3);
+prime_points_inside(6,5);
+ if rt x1'r+cap_jut+.5u+1<=lft x4'l-cap_jut:
+inner_jut=cap_jut;
+ else: rt x1'r+inner_jut+.5u+1=lft x4'l-inner_jut; fi
+ dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut);
+%upper lft serif
+ dish_serif(4',3,c,.6,inner_jut,d,1/2,outer_jut)(dark);
+% upper right serif
+ dish_serif(6',5,e,1/3,cap_jut,f,1/3,cap_jut); fi
+% lower serif
+pickup pencircle scaled .5[fine, rule_thickness];
+x7=x9=x1l; x8=x10=x4r;
+y9=y10;
+top y7=bar_height; y7=y8; draw z7--z8;
+y9-y7=spread;
+draw z9--z10;
+penlabels(0,1,2,3,4,5,6,1',2',3',4',5',6',7,8,9,10); endchar;
+
+cmchar "Triple rightward arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"126",18u#,v_center(2spread#+.5asc_height#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; penpos1(rule_thickness,90);
+penpos2(rule_thickness,90); penpos3(1.5bar,0); penpos4(1.5bar,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=u;
+rt x0=hround (w-u); x0'=x0''=x0; x1'=x1''=x1;
+y1'=y1+spread;y1''=y1-spread; y0'=y1'; y0''=y1'';
+draw z0'--z1'; draw z0''--z1''; % draw bars
+pickup crisp.nib;
+y3-y0'=y0''-y4=.24asc_height+eps; x3=x4=x0-6u-eps;
+penpos5(bar,angle(z0-z4)); z5r=z0; penpos6(bar,angle(z0-z3));
+z6r=z0; z9=.381966[.5[z3,z4],z0]; erase filldraw
+z0..{z3-z9}z3--(w,y3)--(w,y4)--z4{z9-z4}..z0& cycle;
+numeric t; path p;
+p=z4l{z9-z4}..z6l; t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));
+x2=xpart point t of p;
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6l)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5l)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9,0',0'',1',1''); endchar;
+
+
+cmchar "Triple leftward arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"127",18u#,v_center(2spread#+.5asc_height#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; penpos1(rule_thickness,90);
+penpos2(rule_thickness,90); penpos3(1.5bar,0); penpos4(1.5bar,0);
+y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft
+x0=hround u; x0'=x0''=x0; x1'=x1''=x1;
+y1'=y1+spread;y1''=y1-spread; y0'=y1'; y0''=y1''; draw
+z0'--z1'; draw z0''--z1''; % draw bars
+pickup crisp.nib;
+y3-y0'=y0''-y4=.24asc_height+eps; x3=x4=x0+6u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0));
+z6l=z0; z9=.381966[.5[z3,z4],z0]; erase filldraw
+z0..{z3-z9}z3--(0,y3)
+ --(0,y4)--z4{z9-z4}..z0& cycle; numeric t; path p;
+p=z4r{z9-z4}..z6r; t=xpart(p
+intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9,0',0'',1',1''); endchar;
+
+cmchar "Check mark"; beginchar(oct"130",15u#,asc_height#,
+0); adjust_fit(0,0); pickup cal.nib;
+lft x1=hround(1.5u);y1=math_axis; y2=0; x2=hround(w/3);
+x3=w-x1; y3=asc_height-o;
+x4=w-1.5x2; y4=asc_height;
+draw z1--z2{z4-z2}..z3;
+penlabels(1,2,3,4);
+endchar;
+
+cmchar "Vee on bar";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"131",11u#,asc_height#, desc_depth#);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=lft x4=hround u; x3=x5=w-x1; x2=hround(w/2);
+bot y4=bot y5=0; y2=y4+spread; top y1=top y3=h+o;
+draw z1--z2--z3; draw z4--z5;
+penlabels(1,2,3,4,5);
+endchar;
+
+cmchar "Bar on mountain";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"132",11u#,asc_height#, desc_depth#); adjust_fit(0,0);
+pickup rule.nib;
+lft x1=lft x4=hround u; x3=x5=w-x1; x2=hround(w/2);
+top y4=top y5=h+o; y2=y4-spread; bot y1=bot y3=0;
+draw z1--z2--z3; draw z4--z5;
+numeric t; % t is used in char"133, = on mountain
+t=y2-y3;
+penlabels(1,2,3,4,5);
+endchar;
+
+cmchar "Equal sign on mountain";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"133",11u#,body_height#, desc_depth#); adjust_fit(0,0);
+pickup rule.nib;
+lft x1=lft x4=lft x6=hround u; x3=x5=x7=w-x1; x2=hround(w/2);
+y4=y5; y6=y7; y6-y4=y4-y2=spread; top y4=asc_height+o-.5spread;
+y2-y1=t; % t is defined in char "132
+y1=y3;
+draw z1--z2--z3; draw z4--z5; draw z6--z7;
+penlabels(1,2,3,4,5,6,7);
+endchar;
+
+cmchar "Angle sign (simple)";
+beginchar(oct"134",13u#,asc_height#, 0);
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround u; x1=x3=w-x2;
+bot y2=bot y3=0; top y1=h;
+draw z1--z2--z3;
+penlabels(1,2,3);
+endchar;
+
+cmchar "Angle sign (with small arc)";
+beginchar(oct"135",13u#,asc_height#, 0);
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround u; x1=x3=w-x2;
+bot y2=bot y3=0; y1=h;
+draw z1--z2--z3;
+path p; p=quartercircle scaled 15u;
+numeric t; t= xpart(p intersectiontimes (z1--z2));
+draw subpath (0,t) of p;
+penlabels(1,2,3);
+endchar;
+
+cmchar "Eye-like angle sign (with small arc)";
+beginchar(oct"136",13u#,v_center(.75body_height#));
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround u; x1=x3=w-x2;
+y2=math_axis; y2=.5[y1,y3]; y1-y3=.75body_height;
+draw z1--z2--z3;
+path p; p=quartercircle scaled 17u;
+numeric t; t= xpart(p intersectiontimes ((z1--z2)shifted
+-z2));
+draw subpath (0,t) of p shifted z2;
+draw subpath (0,t) of p shifted z2
+reflectedabout(z2,(w,y2));
+penlabels(1,2,3);
+endchar;
+
+cmchar "Proportional sign made of circles";
+beginchar(oct"137",14u#,asc_height#,0);
+adjust_fit(0,0); pickup pencircle scaled rule_thickness;
+numeric radius; radius:=w-2u; radius:=radius/3;
+radius:=radius-.5rule_thickness;
+x2=hround w-u; x1=w-x2+radius;
+y1=y2=math_axis;
+pair m; m=(rule_thickness,0);
+draw fullcircle scaled 2radius shifted (z1+.5m);
+draw (halfcircle scaled 2radius rotated 90) shifted
+(z2-.5m);
+penlabels(1,2);
+endchar;
+
+cmchar "Simple slur below (smile)";
+beginchar(oct"140",14u#,asc_height#,desc_depth#);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround u; y1=vround(math_axis+.25x_height);
+x3=w-x1; y3=y1; penpos2(rule_thickness,90); x2=.5w;
+y2l=good.y -(.25x_height-math_axis);
+numeric theta; theta=angle((z2-z1)yscaled 3);
+penpos1(rule_thickness,90+theta);
+penpos3(rule_thickness,90-theta);
+draw z1{dir theta}...z2...{dir-theta}z3;
+penlabels(1,2,3); endchar;
+
+cmchar "Simple slur above (frown)";
+beginchar(oct"141",14u#,asc_height#,desc_depth#);
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround u; y1=vround(math_axis-.25x_height);
+x3=w-x1; y3=y1;
+penpos2(rule_thickness,90); x2=.5w; y2=good.y(.25x_height+math_axis);
+numeric theta; theta=angle((z2-z1)yscaled 3);
+penpos1(rule_thickness,90+theta);
+penpos3(rule_thickness,90-theta);
+draw z1{dir theta}...z2...{dir-theta}z3; penlabels(1,2,3);
+endchar;
+
+cmchar "Very proper subset sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+spread':=spread'-rule_thickness;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"142",14u#,v_center(spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+autorounded; lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]=math_axis; x4=x5=.5w; y4=y1;
+y5=y3; draw z1---z4...z2{down}...z5---z3; % arc and bars
+x1'=x3'=x1; y1-y1'=y3'-y3=spread';
+x4'=x5'=x4; y4-y4'=y5'-y5=spread';
+y2'=y2; x2'-x2=spread';
+draw z1'--z4'..z2'{down}..z5'--z3';
+penlabels(1,2,3,4,5,1',2',3',4',5'); endchar;
+
+cmchar "Very proper superset sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+spread':=spread'-rule_thickness;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"143",14u#,v_center(spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+autorounded; lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
+y1-y3=spread; y2=.5[y1,y3]=math_axis; x4=x5=.5w; y4=y1;
+y5=y3; draw z1---z4...z2{down}...z5---z3; % arc and bars
+x1'=x3'=x1; y1-y1'=y3'-y3=spread';
+x4'=x5'=x4; y4-y4'=y5'-y5=spread';
+y2'=y2; x2-x2'=spread';
+draw z1'--z4'..z2'..z5'--z3';
+penlabels(1,2,3,4,5,1',2',3',4',5'); endchar;
+
+cmchar "Parallel set union sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+spread':=spread'-rule_thickness;
+beginchar(oct"144",12u#,.8asc_height#,0);
+italcorr .8asc_height#*slant-.5u#;
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+y1=good.y h+o; bot y3=-o; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cup
+y1'=y5'=y1; x1'-x1=x5-x5'=spread';
+y2'=y4'=y2+u; x2'-x2=x4-x4'=spread';
+x3'=x3; y3'-y3=spread';
+draw z1'..{down}z2'..z3'{right}..z4'{up}..z5';
+penlabels(1,2,3,4,5,1',2',3',4',5'); endchar;
+
+cmchar "Parallel set intersection sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+spread':=spread'-rule_thickness;
+beginchar(oct"145",12u#,.8asc_height#,0);
+italcorr .8asc_height#*slant-.5u#; adjust_fit(0,0);
+pickup rule.nib; autorounded;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+y3=good.y h+o; bot y1=-o; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cap
+y1'=y5'=y1; x1'-x1=x5-x5'=spread';
+y2'=y4'=y2-u; x2'-x2=x4-x4'=spread';
+x3'=x3; y3-y3'=spread';
+draw z1'..{up}z2'..z3'{right}..z4'{down}..z5';
+penlabels(1,2,3,4,5,1',2',3',4',5'); endchar;
+
+cmchar "Subset or (double) equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"152",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x2=hround
+1.5u-eps; x1=x3=w-x2; y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3; draw z1---z4...z2{down}...z5---z3;
+% arc and bars
+x8=x1; x9=x2;
+y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9';
+penlabels(1,2,3,4,5,8,9,8',9'); endchar;
+
+cmchar "Superset or (double) equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"153",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x1=hround
+1.5u-eps; x2=w-x1; x3=x1; y1-y3=spread; y2=.5[y1,y3]; top
+y1=h; x4=x5=.5w; y4=y1; y5=y3; draw
+z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1;
+x9=x2;
+y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9';
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Christmas tree symbol";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"146",spread#+4u#,.8asc_height#,0);
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+autorounded;
+lft x1=1.5u; x3=w-x1; x2=.5[x1,x3];
+bot y1=-d-o; y3=y1; top y2=h+o;
+draw z1{spread,u}...{up}z2;
+draw z3{-spread,u}...{up}z2;
+penlabels(1,2,3); endchar;
+
+cmchar "Inverted Christmas tree symbol";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"147",spread#+4u#,.8asc_height#,0);
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+autorounded;
+lft x1=1.5u; x3=w-x1; x2=.5[x1,x3];
+top y1=h+o; y3=y1; bot y2=-d-o;
+draw z1{spread,-u}...{down}z2;
+draw z3{-spread,-u}...{down}z2;
+penlabels(1,2,3); endchar;
+
+cmchar "Stylized lambda symbol";
+beginchar(oct"150",14u#,1.35asc_height#,0);
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=u; top y1=h;
+rt x2=w-u; bot y2=-o;
+draw z1--z2;
+z3=.5[z1,z2];
+x4=x1; y4=y2; draw z3--z4;
+penlabels(1,2,3,4); endchar;
+
+cmchar "Reflected stylized lambda symbol";
+beginchar(oct"151",14u#,1.35asc_height#,0);
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=u; bot y1=-o;
+rt x2=w-u; top y2=h;
+draw z1--z2;
+z3=.5[z1,z2];
+x4=x2; y4=y1; draw z3--z4;
+penlabels(1,2,3,4); endchar;
+
+cmchar "Sunrise symbol";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct "154",14u#,v_center(3spread#+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;
+y5=y6=y1; x7=.5[x1,x2]; x5=.3[x1,x2];
+x2-x6=x5-x1;
+y7-y1=.5(x6-x5);
+draw z1--z5{up}...z7...{down}z6--z2; % upper bar
+draw z3--z4; % lower bar
+penlabels(1,2,3,4,5,6,7); endchar;
+
+cmchar "Sunrise-over-water symbol";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct "155",14u#,v_center(3spread#+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;
+y5=y6=y1; x7=.5[x1,x2]; x5=.3[x1,x2];
+x2-x6=x5-x1;
+y7-y1=.5(x6-x5);
+x5'=x5; x7'=x7; x6'=x6; y5'=y6'=y3; y3-y7'=y7-y1;
+draw z1--z5{up}...z7...{down}z6--z2; % upper bar
+draw z3--z5'{down}...z7'...{up}z6'--z4; % lower bar
+penlabels(1,2,3,4,5,6,7); endchar;
+
+cmchar "Much, much less sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"156",24u#,v_center(spread#+rule_thickness#));
+adjust_fit(if monospace:-u#,-u# else: 0,0 fi); pickup
+rule.nib; lft x2=hround u-epsilon; x1=x3=hround 12.5u-x2;
+y1-y3=ceiling 1.1spread; y2=.5[y1,y3]=math_axis;
+draw z1--z2--z3; % left diagonals
+z4-z1=z5-z2=z6-z3=z7-z4=z8-z5=z9-z6;
+x7=w-x2; y4=y1;
+draw z4--z5--z6; % middle diagonals
+draw z7--z8--z9; % right diagonals
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "Much, much greater sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"157",24u#,v_center(spread#+rule_thickness#));
+adjust_fit(if monospace:-u#,-u# else: 0,0 fi); pickup
+rule.nib;
+lft x1=hround u-epsilon; x2=hround 12.5u-u; x1=x3;
+y1-y3=ceiling 1.1spread; y2=.5[y1,y3]=math_axis;
+draw z1--z2--z3; % left diagonals
+z4-z1=z5-z2=z6-z3=z7-z4=z8-z5=z9-z6;
+x8=w-x1; y4=y1;
+draw z4--z5--z6; % middle diagonals
+draw z7--z8--z9; % right diagonals
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "Northwest right angle symbol";
+beginchar(oct"160",9u#, asc_height#, 0);
+adjust_fit(0,0); pickup rule.nib;
+x1=x2; lft x1=u; x3=w-x1; y2=y3; top y2=h;
+y2-y1=x3-x2;
+draw z1--z2--z3;
+penlabels(1,2,3); endchar;
+
+cmchar "Northeast right angle symbol";
+beginchar(oct"161",9u#,asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x3=u; x2=w-x3; top y3=h; y3=y2; x1=x2; x2-x3=y2-y1;
+draw z1--z2--z3;
+penlabels(1,2,3); endchar;
+
+cmchar "Southwest right angle symbol";
+beginchar(oct"170", 9u#, 7u#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x2=u; x3=w-x2; x1=x2; bot y2=-o; y3=y2;
+y1-y2=x3-x2;
+draw z1--z2--z3;
+penlabels(1,2,3); endchar;
+
+cmchar "Southeast right angle symbol";
+beginchar(oct"171", 9u#, 7u#,0);
+adjust_fit(0,0); pickup rule.nib;
+lft x3=u; x2=w-x3; x1=x2; bot y2=-o; y3=y2;
+y1-y2=x2-x3;
+draw z1--z2--z3;
+penlabels(1,2,3); endchar;
+
+%% include these parameters to `shrink R and S so they
+%% fit inside a circle
+%
+begingroup
+save u, width_adj, cap_serif_fit, letter_fit,
+ body_height, cap_height, x_height, bar_height, comma_depth,
+ flare, cap_hair, stem, cap_stem, cap_curve, cap_ess,
+ cap_jut, beak_jut, beak, slab, cap_bar, cap_band, cap_notch_cut,
+ o, apex_o;
+numeric radius;
+old.u:=u; old.cap_curve:=cap_curve; old.cap_height:=cap_height;
+old.u#:=u#; old.cap_curve#:=cap_curve#; old.cap_height#:=cap_height#;
+forsuffixes $=u, width_adj, cap_serif_fit, letter_fit,
+ body_height, cap_height, x_height, bar_height,
+comma_depth, flare, cap_hair,
+stem, cap_stem, cap_curve, cap_ess,
+ cap_jut, beak_jut, beak,
+slab, cap_bar,
+cap_band, cap_notch_cut,
+ o, apex_o: $.#:=lower.$.#; endfor
+fudge:=lower.fudge;
+font_setup;
+% Changed by Stefan Lindner 15.03.1991 -sl
+% original: radius=.5(6u++cap_height)+3u; radius=radius#*hppp;
+radius#=.5(6u#++cap_height#)+3u#; radius:=radius#*hppp;
+% end of change
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+cmchar "Circle-R brand";
+beginchar(oct"162",13u#, .52cap_height#+radius#,radius#-.52cap_height#);
+adjust_fit(4u#,4u#);
+pickup tiny.nib; pos1(cap_stem',0); pos2(cap_stem',0);
+lft x1l=lft x2l=hround max(2u,3u-.5cap_stem');
+top y1=cap_height; bot y2=0;
+filldraw stroke z1e--z2e; % stem
+penpos3(cap_band,90); penpos4(cap_band,90);
+penpos5(cap_curve,0);
+penpos6(vair,-90); penpos7(vair,-90);
+z3r=top z1; y4=y3; y5=.5[y4l,y6l]; y6=y7;
+x7=x2; y7l=vround(.5cap_height+.5vair); x4=x6;
+x4=.5w-.5u; x5r=hround(w-2.25u);
+x4l:=x6l:=x4-.125cap_curve;
+fill stroke z3e..pulled_arc.e(4,5) & pulled_arc.e(5,6)..z7e; % lobe
+pos6'(vair,-90); pos0(cap_stem,180);
+ pos8(cap_curve,180); pos9(vair,-90); pos10(hair,0);
+ z6'=z6; lft x0r=lft x8r=hround(x5-2/3u-.5cap_curve);
+ y8=1/3[y2,y7]; y0=3/5[y2,y7]; x9=.5[x8l,x10r];
+ bot y9r=-o; rt x10r=hround(w-.05u); y10=1/4[y2,y7];
+ filldraw stroke z6'e{right}..z0e---z8e....z9e{right}..z10e{up}; % tail
+ nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
+ dish_serif(2,1,c,1/3,cap_jut,d,1/3,cap_jut); % lower serif
+ % tail
+math_fit(0,.75ic#);
+pickup rule.nib;
+z100=(hround w/2,.52cap_height); z101=z100+(0,radius); z103=z100-(0,radius);
+z102=z100+(radius,0); z104=z100-(radius,0);
+draw z101...z102...z103...z104...cycle;
+penlabels(0,1,2,3,4,5,6,7,8,9,10,100,101,102,103,104);
+endchar;
+
+cmchar "Circle-S brand";
+beginchar(oct"163",10u#,radius#+.52cap_height#,radius#-.52cap_height#);
+adjust_fit(5u#,5u#);
+numeric theta; theta=90-angle(50u,cap_height); slope:=-cap_height/50u; % angle at middle
+numeric s_slab; s_slab=slab;
+numeric ess'; ess'=max(fine.breadth,cap_ess);
+pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-90);
+pos0(ess',theta); pos7(s_slab,-90);
+x2+x7=2x0=w; x7-x2=u; top y2l=cap_height+o; bot y7r=-o;
+y0=.52cap_height; lft x3l=hround u; rt x6r=hround(w-u);
+x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine;
+ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r;
+ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r;
+filldraw stroke super_arc.e(2,3) & z3e{down}
+ ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke
+pos1(hair,180); pos8(hair,180);
+ rt x1l=hround(w-1.5u); lft x8r=hround u;
+ bot y1=vround 2/3cap_height+1; top y8=vround 1/3cap_height-1;
+ filldraw stroke z1e{x2-x1,10(y2-y1)}....{left}z2e; % upper arc
+ filldraw stroke z7e{left}....{up}z8e; % lower arc
+ path upper_arc, lower_arc;
+ upper_arc=z1{x2-x1,10(y2-y1)}....{left}z2;
+ lower_arc=z7{left}....{up}z8;
+ pos10(.3[fine.breadth,cap_hair],0);
+ pos9(.3[fine.breadth,cap_hair],0);
+ x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r;
+ x1l-x1'=x8'-x8r=1.6cap_curve-fine; y1'=y1; y8'=y8;
+ numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1'));
+ filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb
+ t:=xpart(lower_arc intersectiontimes(z9r--z8'));
+ filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb
+% lower arc and terminal
+math_fit(0,.5ic#);
+pickup rule.nib;
+z100=(hround w/2,.52cap_height); z101=z100+(0,radius); z103=z100-(0,radius);
+z102=z100+(radius,0); z104=z100-(radius,0);
+draw z101...z102...z103...z104...cycle;
+penlabels(0,1,1',2,3,4,5,6,7,8,8',9,10,100,101,102,103,104);
+endchar;
+endgroup;
+
+
+cmchar "Pitchfork symbol";
+beginchar(oct"164",12u#,asc_height#,0);
+italcorr .8asc_height#*slant-.5u#;
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+y3=good.y .7h+o; bot y1=-o; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cap
+x6=x7=good.x w/2; y6=y1; y7=h+o;
+draw z6--z7; % stem
+penlabels(1,2,3,4,5,6,7); endchar;
+
+cmchar "Dotted plus sign";
+beginchar(oct"165",14u#,8u#+math_axis#,6u#-math_axis#);
+adjust_fit(0,0); pickup rule.nib;
+x1=x2=good.x .5w; top y1=h-2.5rule_thickness+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
+x5=x1; y5=h+o;
+pickup pencircle scaled 2.5rule_thickness; drawdot z5;
+penlabels(1,2,3,4,5); endchar;
+
+cmchar "Inverted similarity sign";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"166",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0);
+pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround(u); x2=4u; x3=w-x2; x4=w-x1;
+bot y2=bot y4=-d; top y1=top y3=h;
+draw z1{down}...z2{right}..{right}z3...{down}z4; % stroke
+labels(1,2,3,4); endchar;
+
+cmchar "Inverted similar or equal sign";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"167",14u#,v_center(2spread#+rule_thickness#));
+adjust_fit(0,0);
+pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround(u); x2=4u; x3=w-x2; x4=w-x1;
+bot y2=bot y4=floor math_axis; top y1=top y3=h;
+draw z1{down}...z2{right}..{right}z3...{down}z4; % stroke
+pickup rule.nib; lft x5=hround u-eps; x6=w-x5; y5=y6=math_axis-spread;
+draw z5--z6; % bar
+labels(1,2,3,4,5,6); endchar;
+
+cmchar "Iron cross";
+beginchar(oct"172",15u#,asc_height#,0); adjust_fit(0,0);
+pickup pencircle scaled .5rule_thickness;
+numeric cross_tension; cross_tension=.9;
+numeric cross_foot; cross_foot=4u;
+y0=.5[y1,y2]; x0=hround w/2;
+x1=x2=x0; bot y1=-o; lft x1l=3.5u; x1r=w-x1l; y1l=y1r=y1;
+top y2=h+o; x2r=x1l; x2l=x1r; y2l=y2r=y2;
+y3=y4=y0; x3=x0+eps; x4+x3=2x0;
+path p; p=z1l--z1r..tension cross_tension..z3..tension cross_tension
+ ..z2l--z2r..tension cross_tension..z4..tension cross_tension..
+ z1l..cycle;
+filldraw p;
+p:=p shifted -z0; p:=p rotated 90; p:=p shifted z0;
+filldraw p;
+penlabels(0,1,2,3,4); endchar;
+
+cmchar "Bourbaki C symbol";
+beginchar(oct"173",9u#, 1.1body_height#, 0);
+adjust_fit(0,0); pickup pencircle scaled 2rule_thickness;
+lft x4=lft x5=u; x1=x2=x8=x7=w-x4; x3=x6=hround
+w/2;
+bot y6=-o; top y3=h+o; y2=y4=y3-1.5u; y5=y7=y6+1.5u;
+y1=y2-1.5u; y8=y7+1.5u;
+draw z1--z2{up}..{left}z3..{down}z4--z5{down}..z6{right}..{up}z7--z8;
+labels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Bourbaki T symbol";
+beginchar(oct "174", 10u#, x_height#, desc_depth#);
+adjust_fit(0,0); pickup pencircle scaled 2rule_thickness;
+lft x1=u; x2=w-x1; top y1=top y2=h; x3=x4=hround w/2; y3=y1;
+bot y4=-1.1d;
+draw z1--z2; draw z3--z4;
+labels(1,2,3,4); endchar;
+
+cmchar "Circle-in-a-circle operator";
+beginarithchar(oct"175"); pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
+circle_points; draw_circle; % circle
+pickup rule.nib;
+numeric x[],y[];
+lft x6=hround 4.5u; x2=w-x6; y2=math_axis;
+top y8=y2+.5(rt x2-lft x6); circle_points; draw_circle;
+labels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Asterisk-in-a-circle";
+beginarithchar(oct"176");
+pickup light_rule.nib; autorounded;
+y2=math_axis; top y8=6u+math_axis;
+lft x6=hround w/2 - 6u; x2=w-x6;
+circle_points; draw_circle; % circle
+numeric x[], y[];
+numeric ast_flare; ast_flare=hround .7[thin_join,stem];
+x0=.5w; y0=math_axis; 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 "Bar-in-a-circle operator";
+beginarithchar(oct"177"); pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
+circle_points; draw_circle; % circle
+y9=y10=y2; x9=x6+3u; x10=w-x9;
+draw z9--z10;
+labels(1,2,3,4,5,6,7,8,9,10); endchar;
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lbigacc.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lbigacc.mf
new file mode 100644
index 00000000000..987e70f42f2
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lbigacc.mf
@@ -0,0 +1,35 @@
+% THIS IS THE OFFICIAL COMPUTER MODERN SOURCE FILE bigacc.mf BY D E KNUTH.
+% IT MUST NOT BE MODIFIED IN ANY WAY UNLESS THE FILE NAME IS CHANGED!
+
+% This file contains series of large accents for math extension fonts.
+
+% The sizes are `wide' (|10u#|), `wider' (|18u#|), and `widest' (|26u#|).
+
+% Character codes \0142--\0147 are generated.
+
+charlist oct"142": oct"143": oct"144"; % circumflexes
+charlist oct"145": oct"146": oct"147"; % tildes
+
+cmchar "Wide circumflex (hat) accent";
+beginchar(oct"142",10u#,.5[asc_height#,body_height#],0);
+big_hat; endchar;
+
+cmchar "Wider circumflex (hat) accent";
+beginchar(oct"143",18u#,body_height#,0);
+big_hat; endchar;
+
+cmchar "Widest circumflex (hat) accent";
+beginchar(oct"144",26u#,body_height#,0);
+big_hat; endchar;
+
+cmchar "Wide tilde (squiggle) accent";
+beginchar(oct"145",10u#,.5[asc_height#,body_height#],0);
+big_tilde; endchar;
+
+cmchar "Wider tilde (squiggle) accent";
+beginchar(oct"146",18u#,body_height#,0);
+big_tilde; endchar;
+
+cmchar "Widest tilde (squiggle) accent";
+beginchar(oct"147",26u#,body_height#,0);
+big_tilde; endchar;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lbigdel.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lbigdel.mf
new file mode 100644
index 00000000000..0e7ab76423d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lbigdel.mf
@@ -0,0 +1,700 @@
+% THIS IS THE OFFICIAL COMPUTER MODERN SOURCE FILE bigdel.mf BY D E KNUTH.
+% IT MUST NOT BE MODIFIED IN ANY WAY UNLESS THE FILE NAME IS CHANGED!
+
+% This file contains series of large delimiters for math extension fonts.
+
+% The sizes are `{\tt\char`\\big}' (|2dh#|), `{\tt\char`\\Big}' (|3dh#|),
+% `{\tt\char`\\bigg}' (|4dh#|), and `{\tt\char`\\Bigg}' (|5dh#|),
+% followed in most cases by an extensible character that can grow
+% arbitrarily large in |dh#| steps,
+% where |dh#| is 60\% of the font design size.
+% (For example, a 10-point font will have large delimiters in sizes
+% 12$\,$pt, 18$\,$pt, 24$\,$pt, 30$\,$pt, 36$\,$pt, 42$\,$pt, etc.)
+
+% Character codes \0000--\0105 and \0150--\0177 are generated.
+
+charlist oct"000": oct"020": oct"022": oct"040": oct"060"; % left parentheses
+charlist oct"001": oct"021": oct"023": oct"041": oct"061"; % right parentheses
+charlist oct"002": oct"150": oct"024": oct"042": oct"062"; % left brackets
+charlist oct"003": oct"151": oct"025": oct"043": oct"063"; % right brackets
+charlist oct"004": oct"152": oct"026": oct"044": oct"064"; % left floors
+charlist oct"005": oct"153": oct"027": oct"045": oct"065"; % right floors
+charlist oct"006": oct"154": oct"030": oct"046": oct"066"; % left ceilings
+charlist oct"007": oct"155": oct"031": oct"047": oct"067"; % right ceilings
+charlist oct"010": oct"156": oct"032": oct"050": oct"070"; % left braces
+charlist oct"011": oct"157": oct"033": oct"051": oct"071"; % right braces
+charlist oct"012": oct"104": oct"034": oct"052"; % left angle brackets
+charlist oct"013": oct"105": oct"035": oct"053"; % right angle brackets
+charlist oct"016": oct"056": oct"036": oct"054"; % slashes
+charlist oct"017": oct"057": oct"037": oct"055"; % backslashes
+charlist oct"160": oct"161": oct"162": oct"163": oct"164"; % radical signs
+
+extensible oct"014": 0,0,0,oct"014"; % vertical line
+extensible oct"015": 0,0,0,oct"015"; % double vertical line
+extensible oct"060": oct"060",0,oct"100",oct"102"; % left parenthesis
+extensible oct"061": oct"061",0,oct"101",oct"103"; % right parenthesis
+extensible oct"062": oct"062",0,oct"064",oct"066"; % left bracket
+extensible oct"063": oct"063",0,oct"065",oct"067"; % right bracket
+extensible oct"064": 0,0,oct"064",oct"066"; % left floor bracket
+extensible oct"065": 0,0,oct"065",oct"067"; % right floor bracket
+extensible oct"066": oct"062",0,0,oct"066"; % left ceiling bracket
+extensible oct"067": oct"063",0,0,oct"067"; % right ceiling bracket
+extensible oct"070": oct"070",oct"074",oct"072",oct"076"; % left brace
+extensible oct"071": oct"071",oct"075",oct"073",oct"076"; % right brace
+extensible oct"072": oct"070",0,oct"072",oct"076"; % sharp left parenthesis
+extensible oct"073": oct"071",0,oct"073",oct"076"; % sharp right parenthesis
+extensible oct"074": 0,0,0,oct"077"; % arrow extension modules only
+extensible oct"075": 0,0,0,oct"167"; % double arrow extension modules only
+extensible oct"076": 0,0,0,oct"076"; % brace extension modules only
+extensible oct"077": oct"170",0,oct"171",oct"077"; % updownarrow
+extensible oct"100": oct"070",0,oct"073",oct"076"; % left moustache
+extensible oct"101": oct"071",0,oct"072",oct"076"; % right moustache
+extensible oct"102": 0,0,0,oct"102"; % left parenthesis extension modules only
+extensible oct"103": 0,0,0,oct"103"; % right parenthesis extension modules only
+extensible oct"164": oct"166",0,oct"164",oct"165"; % radical sign
+extensible oct"167": oct"176",0,oct"177",oct"167"; % double updownarrow
+extensible oct"170": oct"170",0,0,oct"077"; % uparrow
+extensible oct"171": 0,0,oct"171",oct"077"; % downarrow
+extensible oct"176": oct"176",0,0,oct"167"; % double uparrow
+extensible oct"177": 0,0,oct"177",oct"167"; % double downarrow
+
+cmchar "\big left parenthesis";
+beginchar(oct"000",7u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(1.5u#,-.25u#); left_paren(hair,stem); endchar;
+
+cmchar "\Big left parenthesis";
+beginchar(oct"020",9u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(2u#,-.25u#); left_paren(rule_thickness,.5[stem,bold]); endchar;
+
+cmchar "\bigg left parenthesis";
+beginchar(oct"022",11u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(2.5u#,-.25u#); left_paren(rule_thickness+.2dw,bold); endchar;
+
+cmchar "\Bigg left parenthesis";
+beginchar(oct"040",11.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(3u#,-.25u#); left_paren(rule_thickness+.4dw,bold+dw); endchar;
+
+cmchar "Extensible left parenthesis---top";
+beginchar(oct"060",12u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(4u#,-.25u#); pickup fine.nib;
+numeric min_breadth,max_breadth;
+min_breadth=rule_thickness+.6dw; max_breadth=bold+2dw;
+pos1(hround min_breadth,0); pos2(hround max_breadth,0);
+rt x1r=hround(w-1.25u+.5min_breadth); lft x2l=hround 1.25u;
+top y1=h-1; y2=-d-eps;
+filldraw stroke z1e{3(x2e-x1e),y2-y1}...{down}z2e; % upper arc
+penlabels(1,2); endchar;
+
+cmchar "Extensible left parenthesis---bottom";
+beginchar(oct"100",12u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(4u#,-.25u#); pickup fine.nib;
+numeric min_breadth,max_breadth;
+min_breadth=rule_thickness+.6dw; max_breadth=bold+2dw;
+pos3(hround min_breadth,0); pos2(hround max_breadth,0);
+rt x3r=hround(w-1.25u+.5min_breadth); lft x2l=hround 1.25u;
+bot y3=1-d; y2=h+eps;
+filldraw stroke z3e{3(x2e-x3e),y2-y3}...{up}z2e; % lower arc
+penlabels(2,3); endchar;
+
+cmchar "Extensible left parenthesis---extension module";
+beginchar(oct"102",12u#,0,dh#);
+adjust_fit(4u#,-.25u#); pickup fine.nib;
+numeric max_breadth; max_breadth=bold+2dw;
+pos2(hround max_breadth,0); pos2'(hround max_breadth,0);
+lft x2l=lft x2'l=hround 1.25u; y2=h+eps; y2'=-d-eps;
+filldraw stroke z2e--z2'e; % link
+penlabels(2,2'); endchar;
+
+cmchar "\big right parenthesis";
+beginchar(oct"001",7u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(-.25u#,1.5u#); right_paren(hair,stem); endchar;
+
+cmchar "\Big right parenthesis";
+beginchar(oct"021",9u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(-.25u#,2u#); right_paren(rule_thickness,.5[stem,bold]); endchar;
+
+cmchar "\bigg right parenthesis";
+beginchar(oct"023",11u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(-.25u#,2.5u#); right_paren(rule_thickness+.2dw,bold); endchar;
+
+cmchar "\Bigg right parenthesis";
+beginchar(oct"041",11.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(-.25u#,3u#); right_paren(rule_thickness+.4dw,bold+dw); endchar;
+
+cmchar "Extensible right parenthesis---top";
+beginchar(oct"061",12u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(-.25u#,4u#); pickup fine.nib;
+numeric min_breadth,max_breadth;
+min_breadth=rule_thickness+.6dw; max_breadth=bold+2dw;
+pos1(hround min_breadth,0); pos2(hround max_breadth,0);
+lft x1l=hround(1.25u-.5min_breadth); rt x2r=hround(w-1.25u);
+top y1=h-1; y2=-d-eps;
+filldraw stroke z1e{3(x2e-x1e),y2-y1}...{down}z2e; % upper arc
+penlabels(1,2); endchar;
+
+cmchar "Extensible right parenthesis---bottom";
+beginchar(oct"101",12u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(-.25u#,4u#); pickup fine.nib;
+numeric min_breadth,max_breadth;
+min_breadth=rule_thickness+.6dw; max_breadth=bold+2dw;
+pos3(hround min_breadth,0); pos2(hround max_breadth,0);
+lft x3l=hround(1.25u-.5min_breadth); rt x2r=hround(w-1.25u);
+bot y3=1-d; y2=h+eps;
+filldraw stroke z3e{3(x2e-x3e),y2-y3}...{up}z2e; % lower arc
+penlabels(2,3); endchar;
+
+cmchar "Extensible right parenthesis---extension module";
+beginchar(oct"103",12u#,0,dh#);
+adjust_fit(-.25u#,4u#); pickup fine.nib;
+numeric max_breadth; max_breadth=bold+2dw;
+pos2(hround max_breadth,0); pos2'(hround max_breadth,0);
+rt x2r=rt x2'r=hround(w-1.25u); y2=h+eps; y2'=-d-eps;
+filldraw stroke z2e--z2'e; % link
+penlabels(2,2'); endchar;
+
+cmchar "\big left bracket";
+beginchar(oct"002",6u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(1.5u#,0); left_bracket(rule_thickness,true,true); endchar;
+
+cmchar "\Big left bracket";
+beginchar(oct"150",6.5u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(2u#,0); left_bracket(.25[rule_thickness,stem],true,true); endchar;
+
+cmchar "\bigg left bracket";
+beginchar(oct"024",7u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(2.5u#,0); left_bracket(.5[rule_thickness,stem],true,true); endchar;
+
+cmchar "\Bigg left bracket";
+beginchar(oct"042",7.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(3u#,0); left_bracket(.75[rule_thickness,stem],true,true); endchar;
+
+cmchar "Extensible left bracket---top";
+beginchar(oct"062",8u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(4u#,0); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+top y1=h-1; y2=-d-eps; lft x1l=lft x2l=hround(2.5u-.5stem);
+filldraw stroke z1e--z2e; % stem
+pos3(stem,90); pos4(stem,90);
+x3=x1l; rt x4=hround(w-.75u+.5stem); y3r=y4r=y1;
+filldraw stroke z3e--z4e; % upper bar
+penlabels(1,2,3,4); endchar;
+
+cmchar "Extensible left bracket---bottom";
+beginchar(oct"064",8u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(4u#,0); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+y1=h+eps; bot y2=1-d; lft x1l=lft x2l=hround(2.5u-.5stem);
+filldraw stroke z1e--z2e; % stem
+pos5(stem,90); pos6(stem,90);
+x5=x1l; rt x6=hround(w-.75u+.5stem); y5l=y6l=y2;
+filldraw stroke z5e--z6e; % lower bar
+penlabels(1,2,5,6); endchar;
+
+cmchar "Extensible left bracket---extension module";
+beginchar(oct"066",8u#,0,dh#);
+adjust_fit(4u#,0); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+y1=h+1+eps; bot y2=-d-1-eps; lft x1l=lft x2l=hround(2.5u-.5stem);
+filldraw stroke z1e--z2e; % stem
+penlabels(1,2); endchar;
+
+cmchar "\big right bracket";
+beginchar(oct"003",6u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(0,1.5u#); right_bracket(rule_thickness,true,true); endchar;
+
+cmchar "\Big right bracket";
+beginchar(oct"151",6.5u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(0,2u#); right_bracket(.25[rule_thickness,stem],true,true); endchar;
+
+cmchar "\bigg right bracket";
+beginchar(oct"025",7u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(0,2.5u#); right_bracket(.5[rule_thickness,stem],true,true); endchar;
+
+cmchar "\Bigg right bracket";
+beginchar(oct"043",7.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(0,3u#); right_bracket(.75[rule_thickness,stem],true,true); endchar;
+
+cmchar "Extensible right bracket---top";
+beginchar(oct"063",8u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(0,4u#); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+top y1=h-1; y2=-d-eps; rt x1r=rt x2r=hround(w-2.5u+.5stem);
+filldraw stroke z1e--z2e; % stem
+pos3(stem,90); pos4(stem,90);
+x3=x1r; lft x4=hround(.75u-.5stem); y3r=y4r=y1;
+filldraw stroke z3e--z4e; % upper bar
+penlabels(1,2,3,4); endchar;
+
+cmchar "Extensible right bracket---bottom";
+beginchar(oct"065",8u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(0,4u#); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+y1=h+eps; bot y2=1-d; rt x1r=rt x2r=hround(w-2.5u+.5stem);
+filldraw stroke z1e--z2e; % stem
+pos5(stem,90); pos6(stem,90);
+x5=x1r; lft x6=hround(.75u-.5stem); y5l=y6l=y2;
+filldraw stroke z5e--z6e; % lower bar
+penlabels(1,2,5,6); endchar;
+
+cmchar "Extensible right bracket---extension module";
+beginchar(oct"067",8u#,0,dh#);
+adjust_fit(0,4u#); pickup crisp.nib;
+pos1(stem,0); pos2(stem,0);
+y1=h+1+eps; bot y2=-d-1-eps; rt x1r=rt x2r=hround(w-2.5u+.5stem);
+filldraw stroke z1e--z2e; % stem
+penlabels(1,2); endchar;
+
+cmchar "\big left floor bracket";
+beginchar(oct"004",7u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(1.5u#,0); left_bracket(rule_thickness,false,true); endchar;
+
+cmchar "\Big left floor bracket";
+beginchar(oct"152",7.5u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(2u#,0); left_bracket(.25[rule_thickness,stem],false,true); endchar;
+
+cmchar "\bigg left floor bracket";
+beginchar(oct"026",8u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(2.5u#,0); left_bracket(.5[rule_thickness,stem],false,true); endchar;
+
+cmchar "\Bigg left floor bracket";
+beginchar(oct"044",8.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(3u#,0); left_bracket(.75[rule_thickness,stem],false,true); endchar;
+
+cmchar "\big right floor bracket";
+beginchar(oct"005",7u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(0,1.5u#); right_bracket(rule_thickness,false,true); endchar;
+
+cmchar "\Big right floor bracket";
+beginchar(oct"153",7.5u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(0,2u#); right_bracket(.25[rule_thickness,stem],false,true); endchar;
+
+cmchar "\bigg right floor bracket";
+beginchar(oct"027",8u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(0,2.5u#); right_bracket(.5[rule_thickness,stem],false,true); endchar;
+
+cmchar "\Bigg right floor bracket";
+beginchar(oct"045",8.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(0,3u#); right_bracket(.75[rule_thickness,stem],false,true); endchar;
+
+cmchar "\big left ceiling bracket";
+beginchar(oct"006",7u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(1.5u#,0); left_bracket(rule_thickness,true,false); endchar;
+
+cmchar "\Big left ceiling bracket";
+beginchar(oct"154",7.5u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(2u#,0); left_bracket(.25[rule_thickness,stem],true,false); endchar;
+
+cmchar "\bigg left ceiling bracket";
+beginchar(oct"030",8u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(2.5u#,0); left_bracket(.5[rule_thickness,stem],true,false); endchar;
+
+cmchar "\Bigg left ceiling bracket";
+beginchar(oct"046",8.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(3u#,0); left_bracket(.75[rule_thickness,stem],true,false); endchar;
+
+cmchar "\big right ceiling bracket";
+beginchar(oct"007",7u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(0,1.5u#); right_bracket(rule_thickness,true,false); endchar;
+
+cmchar "\Big right ceiling bracket";
+beginchar(oct"155",7.5u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(0,2u#); right_bracket(.25[rule_thickness,stem],true,false); endchar;
+
+cmchar "\bigg right ceiling bracket";
+beginchar(oct"031",8u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(0,2.5u#); right_bracket(.5[rule_thickness,stem],true,false); endchar;
+
+cmchar "\Bigg right ceiling bracket";
+beginchar(oct"047",8.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(0,3u#); right_bracket(.75[rule_thickness,stem],true,false); endchar;
+
+cmchar "\big left curly brace";
+beginchar(oct"010",9u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(.75u#,.75u#); left_curly(hair,stem); endchar;
+
+cmchar "\Big left curly brace";
+beginchar(oct"156",10u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(u#,u#); left_curly(rule_thickness,.5[stem,bold]); endchar;
+
+cmchar "\bigg left curly brace";
+beginchar(oct"032",11u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(1.25u#,1.25u#); left_curly(rule_thickness+.2dw,bold); endchar;
+
+cmchar "\Bigg left curly brace";
+beginchar(oct"050",11.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(1.5u#,1.5u#); left_curly(rule_thickness+.4dw,bold+dw); endchar;
+
+cmchar "Extensible left curly brace---top";
+beginchar(oct"070",12u#,0,1.5dh#);
+adjust_fit(2u#,2u#); pickup fine.nib;
+numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
+pos1(min_breadth,0); pos1'(min_breadth,0);
+pos2(heavy_rule_thickness,0); pos3(heavy_rule_thickness,0);
+rt x1r=rt x1'r=hround(w-1.5u+.5min_breadth);
+lft x2l=lft x3l=hround(.5w-.5heavy_rule_thickness);
+top y1=h-1; y3=-d-eps; y2=.5[y1,y3]; y1-y1'=min_breadth-fine;
+filldraw z1l{3(x2l-x1l),y2-y1}...z2l---z3l
+ --z3r---z2r...{3(x1r-x2r),y1'-y2}z1'r--z1r--cycle; % stroke
+penlabels(1,2,3); endchar;
+
+cmchar "Extensible left curly brace---bottom";
+beginchar(oct"072",12u#,0,1.5dh#);
+adjust_fit(2u#,2u#); pickup fine.nib;
+numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
+pos7(min_breadth,0); pos7'(min_breadth,0);
+pos5(heavy_rule_thickness,0); pos6(heavy_rule_thickness,0);
+rt x7r=rt x7'r=hround(w-1.5u+.5min_breadth);
+lft x5l=lft x6l=hround(.5w-.5heavy_rule_thickness);
+y5=h+eps; bot y7=1-d; y6=.5[y5,y7]; y7'-y7=min_breadth-fine;
+filldraw z5l---z6l...{3(x7l-x6l),y7-y6}z7l
+ --z7r--z7'r{3(x6r-x7r),y6-y7'}...z6r---z5r--cycle; % stroke
+penlabels(5,6,7); endchar;
+
+cmchar "Extensible left curly brace---middle";
+beginchar(oct"074",12u#,0,3dh#);
+adjust_fit(2u#,2u#); pickup fine.nib;
+numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
+pos4(min_breadth,0); pos4'(min_breadth,0);
+forsuffixes $=2,3,5,6: pos$(heavy_rule_thickness,0); endfor
+lft x4l=lft x4'l=hround(1.5u-.5min_breadth);
+x2=x3=x5=x6; lft x2l=hround(.5w-.5heavy_rule_thickness);
+y2=h+eps; y6=-d-eps; .5[y4,y4']=.5[y2,y6]=.5[y3,y5];
+y3-y4=(y2-y6)/4; y4-y4'=min_breadth-fine;
+filldraw z2l---z3l...{3(x4l-x3l),y4-y3}z4l
+ --z4'l{3(x5l-x4l),y5-y4'}...z5l---z6l--z6r---z5r
+ ...{3(x4r-x5r),.5[y4,y4']-y5}.5[z4r,z4'r]{3(x3r-x4r),y3-.5[y4,y4']}
+ ...z3r---z2r--cycle; % stroke
+penlabels(2,3,4,5,6); endchar;
+
+cmchar "Extensible curly brace---extension module";
+beginchar(oct"076",12u#,0,.5dh#);
+adjust_fit(2u#,2u#); pickup fine.nib;
+pos2(heavy_rule_thickness,0); pos3(heavy_rule_thickness,0);
+lft x2l=lft x3l=hround(.5w-.5heavy_rule_thickness); y2=h+eps; y3=-d-eps;
+filldraw stroke z2e--z3e; % stem
+penlabels(2,3); endchar;
+
+cmchar "\big right curly brace";
+beginchar(oct"011",9u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(.75u#,.75u#); right_curly(hair,stem); endchar;
+
+cmchar "\Big right curly brace";
+beginchar(oct"157",10u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(u#,u#); right_curly(rule_thickness,.5[stem,bold]); endchar;
+
+cmchar "\bigg right curly brace";
+beginchar(oct"033",11u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(1.25u#,1.25u#); right_curly(rule_thickness+.2dw,bold); endchar;
+
+cmchar "\Bigg right curly brace";
+beginchar(oct"051",11.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(1.5u#,1.5u#); right_curly(rule_thickness+.4dw,bold+dw); endchar;
+
+cmchar "Extensible right curly brace---top";
+beginchar(oct"071",12u#,0,1.5dh#);
+adjust_fit(2u#,2u#); pickup fine.nib;
+numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
+pos1(min_breadth,0); pos1'(min_breadth,0);
+pos2(heavy_rule_thickness,0); pos3(heavy_rule_thickness,0);
+lft x1l=lft x1'l=hround(1.5u-.5min_breadth);
+lft x2l=lft x3l=hround(.5w-.5heavy_rule_thickness);
+top y1=h-1; y3=-d-eps; y2=.5[y1,y3]; y1-y1'=min_breadth-fine;
+filldraw z1r{3(x2r-x1r),y2-y1}...z2r---z3r
+ --z3l---z2l...{3(x1l-x2l),y1'-y2}z1'l--z1l--cycle; % stroke
+penlabels(1,2,3); endchar;
+
+cmchar "Extensible right curly brace---bottom";
+beginchar(oct"073",12u#,0,1.5dh#);
+adjust_fit(2u#,2u#); pickup fine.nib;
+numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
+pos7(min_breadth,0); pos7'(min_breadth,0);
+pos5(heavy_rule_thickness,0); pos6(heavy_rule_thickness,0);
+lft x7l=lft x7'l=hround(1.5u-.5min_breadth);
+lft x5l=lft x6l=hround(.5w-.5heavy_rule_thickness);
+y5=h+eps; bot y7=1-d; y6=.5[y5,y7]; y7'-y7=min_breadth-fine;
+filldraw z5r---z6r...{3(x7r-x6r),y7-y6}z7r
+ --z7l--z7'l{3(x6l-x7l),y6-y7'}...z6l---z5l--cycle; % stroke
+penlabels(5,6,7); endchar;
+
+cmchar "Extensible right curly brace---middle";
+beginchar(oct"075",12u#,0,3dh#);
+adjust_fit(2u#,2u#); pickup fine.nib;
+numeric min_breadth; min_breadth=hround(rule_thickness+.6dw);
+pos4(min_breadth,0); pos4'(min_breadth,0);
+forsuffixes $=2,3,5,6: pos$(heavy_rule_thickness,0); endfor
+rt x4r=rt x4'r=hround(w-1.5u+.5min_breadth);
+x2=x3=x5=x6; lft x2l=hround(.5w-.5heavy_rule_thickness);
+y2=h+eps; y6=-d-eps; .5[y4,y4']=.5[y2,y6]=.5[y3,y5];
+y3-y4=(y2-y6)/4; y4-y4'=min_breadth-fine;
+filldraw z2r---z3r...{3(x4r-x3r),y4-y3}z4r
+ --z4'r{3(x5r-x4r),y5-y4'}...z5r---z6r--z6l---z5l
+ ...{3(x4l-x5l),.5[y4,y4']-y5}.5[z4l,z4'l]{3(x3l-x4l),y3-.5[y4,y4']}
+ ...z3l---z2l--cycle; % stroke
+penlabels(2,3,4,5,6); endchar;
+
+cmchar "Horizontal curly brace tip---down and left";
+beginchar(oct"172",.75dh#,3rule_thickness#,0);
+adjust_fit(0,0); pickup fine.nib;
+numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
+pos1(min_breadth,90); pos1'(min_breadth,90);
+pos2(heavy_rule_thickness,90);
+bot y2l=0; bot y1l=bot y1'l=vround(y2-4.5u-.5min_breadth);
+.5[x1,x1']=-eps; x2=w+shrink_fit+eps; x1'-x1=min_breadth-fine;
+filldraw z1r{x2-x1,3(y2r-y1r)}...{right}z2r
+ --z2l{left}...{x1'-x2,3(y1-y2)}z1'l--z1l--cycle; % stroke
+penlabels(1,2); endchar;
+
+cmchar "Horizontal curly brace tip---down and right";
+beginchar(oct"173",.75dh#,3rule_thickness#,0);
+adjust_fit(0,0); pickup fine.nib;
+numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
+pos1(min_breadth,90); pos1'(min_breadth,90);
+pos2(heavy_rule_thickness,90);
+bot y2l=0; bot y1l=bot y1'l=vround(y2-4.5u-.5min_breadth);
+.5[x1,x1']=w+shrink_fit+eps; x2=-eps; x1-x1'=min_breadth-fine;
+filldraw z1r{x2-x1,3(y2r-y1r)}...{left}z2r
+ --z2l{right}...{x1'-x2,3(y1-y2)}z1'l--z1l--cycle; % stroke
+penlabels(1,2); endchar;
+
+cmchar "Horizontal curly brace tip---up and left";
+beginchar(oct"174",.75dh#,3rule_thickness#,0);
+adjust_fit(0,0); pickup fine.nib;
+numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
+pos1(min_breadth,90); pos1'(min_breadth,90);
+pos2(heavy_rule_thickness,90);
+bot y2l=0; top y1r=top y1'r=vround(y2+4.5u+.5min_breadth);
+.5[x1,x1']=-eps; x2=w+shrink_fit+eps; x1'-x1=min_breadth-fine;
+filldraw z1l{x2-x1,3(y2l-y1l)}...{right}z2l
+ --z2r{left}...{x1'-x2,3(y1-y2)}z1'r--z1r--cycle; % stroke
+penlabels(1,2); endchar;
+
+cmchar "Horizontal curly brace tip---up and right";
+beginchar(oct"175",.75dh#,3rule_thickness#,0);
+adjust_fit(0,0); pickup fine.nib;
+numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
+pos1(min_breadth,90); pos1'(min_breadth,90);
+pos2(heavy_rule_thickness,90);
+bot y2l=0; top y1r=top y1'r=vround(y2+4.5u+.5min_breadth);
+.5[x1,x1']=w+shrink_fit+eps; x2=-eps; x1-x1'=min_breadth-fine;
+filldraw z1l{x2-x1,3(y2l-y1l)}...{left}z2l
+ --z2r{right}...{x1'-x2,3(y1-y2)}z1'r--z1r--cycle; % stroke
+penlabels(1,2); endchar;
+
+cmchar "\big left angle bracket";
+beginchar(oct"012",7u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(.75u#,.75u#); left_angle(rule_thickness); endchar;
+
+cmchar "\Big left angle bracket";
+beginchar(oct"104",9u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(u#,u#); left_angle(.25[rule_thickness,stem]); endchar;
+
+cmchar "\bigg left angle bracket";
+beginchar(oct"034",11u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(1.25u#,1.25u#); left_angle(.5[rule_thickness,stem]); endchar;
+
+cmchar "\Bigg left angle bracket";
+beginchar(oct"052",11.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(1.5u#,1.5u#); left_angle(.75[rule_thickness,stem]); endchar;
+
+cmchar "\big right angle bracket";
+beginchar(oct"013",7u#,rule_thickness#,2dh#-rule_thickness#);
+adjust_fit(.75u#,.75u#); right_angle(rule_thickness); endchar;
+
+cmchar "\Big right angle bracket";
+beginchar(oct"105",9u#,rule_thickness#,3dh#-rule_thickness#);
+adjust_fit(u#,u#); right_angle(.25[rule_thickness,stem]); endchar;
+
+cmchar "\bigg right angle bracket";
+beginchar(oct"035",11u#,rule_thickness#,4dh#-rule_thickness#);
+adjust_fit(1.25u#,1.25u#); right_angle(.5[rule_thickness,stem]); endchar;
+
+cmchar "\Bigg right angle bracket";
+beginchar(oct"053",11.5u#,rule_thickness#,5dh#-rule_thickness#);
+adjust_fit(1.5u#,1.5u#); right_angle(.75[rule_thickness,stem]); endchar;
+
+cmchar "\big slash";
+beginchar(oct"016",10.4u#,rule_thickness#,2dh#-rule_thickness#);
+big_slash(rule_thickness+.2dw); endchar;
+
+cmchar "\Big slash";
+beginchar(oct"056",14.6u#,rule_thickness#,3dh#-rule_thickness#);
+big_slash(rule_thickness+.6dw); endchar;
+
+cmchar "\bigg slash";
+beginchar(oct"036",18.8u#,rule_thickness#,4dh#-rule_thickness#);
+big_slash(rule_thickness+dw); endchar;
+
+cmchar "\Bigg slash";
+beginchar(oct"054",23u#,rule_thickness#,5dh#-rule_thickness#);
+big_slash(rule_thickness+1.5dw); endchar;
+
+cmchar "\big backslash";
+beginchar(oct"017",10.4u#,rule_thickness#,2dh#-rule_thickness#);
+big_blash(rule_thickness+.2dw); endchar;
+
+cmchar "\Big backslash";
+beginchar(oct"057",14.6u#,rule_thickness#,3dh#-rule_thickness#);
+big_blash(rule_thickness+.6dw); endchar;
+
+cmchar "\bigg backslash";
+beginchar(oct"037",18.8u#,rule_thickness#,4dh#-rule_thickness#);
+big_blash(rule_thickness+dw); endchar;
+
+cmchar "\Bigg backslash";
+beginchar(oct"055",23u#,rule_thickness#,5dh#-rule_thickness#);
+big_blash(rule_thickness+1.5dw); endchar;
+
+cmchar "Extensible vertical line---extension module";
+beginchar(oct"014",6u#,0,dh#);
+adjust_fit(0,0); pickup pencircle scaled(rule_thickness+.2dw);
+x1=x2=good.x .5w; y1=eps; y2=-d-eps;
+draw z1--z2; % stem
+labels(1,2); endchar;
+
+cmchar "Extensible double vertical line---extension module";
+beginchar(oct"015",10u#,0,dh#);
+adjust_fit(0,0); pickup pencircle scaled(rule_thickness+.2dw);
+x1=x2=good.x .3w; x3=x4=w-x1; y1=y3=eps; y2=y4=-d-eps;
+draw z1--z2; draw z3--z4; % stems
+labels(1,2,3,4); endchar;
+
+cmchar "Extensible vertical arrow--top";
+beginchar(oct"170",12u#,0,dh#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric thickness,barr;
+thickness=hround(rule_thickness+.2dw); barr=Vround .6[bar,thickness];
+pos1(thickness,0); pos2(thickness,0); pos3(barr,90); pos4(barr,90);
+lft x1l=hround(.5w-.5thickness); y1=-d-eps;
+x0=x1=x2; top y0=h; x0-x3=x4-x0=4u+eps;
+y3=y4=y0-.29asc_height-eps;
+pos5(barr,angle(z4-z0)); z5l=z0;
+pos6(barr,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p;
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z1r--z1l--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Extensible vertical arrow--bottom";
+beginchar(oct"171",12u#,0,dh#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric thickness,barr;
+thickness=hround(rule_thickness+.2dw); barr=Vround .6[bar,thickness];
+pos1(thickness,0); pos2(thickness,0); pos3(barr,90); pos4(barr,90);
+lft x1l=hround(.5w-.5thickness); y1=h+eps;
+x0=x1=x2; bot y0=-d; x0-x3=x4-x0=4u+eps;
+y3=y4=y0+.29asc_height+eps;
+pos5(barr,angle(z4-z0)); z5l=z0;
+pos6(barr,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p;
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z1r--z1l--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Extensible vertical arrow--extension module";
+beginchar(oct"077",12u#,0,dh#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric thickness; thickness=hround(rule_thickness+.2dw);
+pos1(thickness,0); pos2(thickness,0);
+lft x1l=hround(.5w-.5thickness); x2=x1; y1=h+1+eps; y2=-d-1-eps;
+filldraw stroke z1e--z2e; % stem
+penlabels(1,2); endchar;
+
+cmchar "Extensible double vertical arrow--top";
+beginchar(oct"176",14u#,0,dh#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric thickness; thickness=Vround(rule_thickness+.2dw);
+pos1(thickness,0); pos2(thickness,0); pos7(thickness,0); pos8(thickness,0);
+y1=y2=-d-eps; y7=y8=h; top y0=h+eps; x1=x7; x2=x8;
+rt x1r=hround(.5w+2u+.5thickness); .5[x1,x2]=x0=good.x .5w;
+filldraw stroke z1e--z7e; filldraw stroke z2e--z8e; % bars
+pos3(thickness,90); pos4(thickness,90);
+x2-x3=x4-x1=4u+eps; y3=y4=y0-.48asc_height-eps;
+pos5(thickness,angle(z4-z0)); z5l=z0;
+pos6(thickness,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+erase filldraw z0..{z3-z9}z3--(x3,h)
+ --(x4,h)--z4{z9-z4}..z0 & cycle; % erase excess
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes((x0,-d)--(x0,h)));
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --subpath (t,0) of\\(z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle; % arrowhead
+penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "Extensible double vertical arrow--bottom";
+beginchar(oct"177",14u#,0,dh#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric thickness; thickness=Vround(rule_thickness+.2dw);
+pos1(thickness,0); pos2(thickness,0); pos7(thickness,0); pos8(thickness,0);
+y1=y2=h+eps; y7=y8=-d; bot y0=-d-eps; x1=x7; x2=x8;
+rt x1r=hround(.5w+2u+.5thickness); .5[x1,x2]=x0=good.x .5w;
+filldraw stroke z1e--z7e; filldraw stroke z2e--z8e; % bars
+pos3(thickness,90); pos4(thickness,90);
+x2-x3=x4-x1=4u+eps; y3=y4=y0+.48asc_height-eps;
+pos5(thickness,angle(z4-z0)); z5l=z0;
+pos6(thickness,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0];
+erase filldraw z0..{z3-z9}z3--(x3,-d)
+ --(x4,-d)--z4{z9-z4}..z0 & cycle; % erase excess
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((x0,-d)--(x0,h)));
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --subpath (t,0) of\\(z3r{z9-z3}..z5r)--z3l{z9-z3}..z0 & cycle; % arrowhead
+penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "Extensible double vertical arrow--extension module";
+beginchar(oct"167",14u#,0,dh#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric thickness; thickness=Vround(rule_thickness+.2dw);
+pos1(thickness,0); pos2(thickness,0); pos7(thickness,0); pos8(thickness,0);
+y1=y2=h+1+eps; y7=y8=-d-1-eps; x1=x7; x2=x8;
+rt x1r=hround(.5w+2u+.5thickness); .5[x1,x2]=good.x .5w;
+filldraw stroke z1e--z7e; filldraw stroke z2e--z8e; % bars
+penlabels(1,2,7,8); endchar;
+
+cmchar "\big radical sign";
+beginchar(oct"160",18u#,rule_thickness#,2dh#-rule_thickness#);
+big_sqrt; endchar;
+
+cmchar "\Big radical sign";
+beginchar(oct"161",18u#,rule_thickness#,3dh#-rule_thickness#);
+big_sqrt; endchar;
+
+cmchar "\bigg radical sign";
+beginchar(oct"162",18u#,rule_thickness#,4dh#-rule_thickness#);
+big_sqrt; endchar;
+
+cmchar "\Bigg radical sign";
+beginchar(oct"163",18u#,rule_thickness#,5dh#-rule_thickness#);
+big_sqrt; endchar;
+
+cmchar "Extensible radical sign---bottom";
+beginchar(oct"164",19u#,0,3dh#);
+adjust_fit(0,-letter_fit#); pickup rule.nib;
+x1=x2=good.x(w-6u); bot y1=1-d; y2=h+eps;
+draw z1--z2; % diagonal
+pickup crisp.nib; pos3(max(curve,rule_thickness),0);
+x3l=good.x 3u; y3=.9[y1,y2];
+pos4(rule_thickness,0); x4=x1; bot y4=-d;
+pos5(vair,-45); x5l=good.x(x3l-u); z5l=whatever[z3r,(x2,body_height)];
+z6=z5r+whatever*((x2,body_height)-z3r)=whatever[z3l,z4l];
+z7=whatever[z1,z2]=z3r+whatever*(z4l-z3l);
+filldraw z5r--z6--z4l--z4--z7--z3r--z5l--cycle; % left diagonal and serif
+penlabels(1,2,3,4,5,6,7); endchar;
+
+cmchar "Extensible radical sign---extension module";
+beginchar(oct"165",19u#,0,dh#);
+adjust_fit(0,-letter_fit#); pickup rule.nib;
+x1=x2=good.x(w-6u); y1=-d-eps; y2=h+eps;
+draw z1--z2; % stem
+labels(1,2); endchar;
+
+cmchar "Extensible radical sign---top";
+beginchar(oct"166",19u#,rule_thickness#,dh#-rule_thickness#);
+adjust_fit(0,-letter_fit#); pickup rule.nib;
+x1=x2=good.x(w-6u); x3=good.x(w+.5); y1=-d-eps; bot y2=bot y3=0;
+draw z1--z2--z3; % stem and link
+labels(1,2,3); endchar;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lbigop.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lbigop.mf
new file mode 100644
index 00000000000..e9289d68834
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lbigop.mf
@@ -0,0 +1,392 @@
+% THIS IS THE OFFICIAL COMPUTER MODERN SOURCE FILE bigop.mf BY D E KNUTH.
+% IT MUST NOT BE MODIFIED IN ANY WAY UNLESS THE FILE NAME IS CHANGED!
+% Changed to lbigop.mf and modified by Claudio Beccari C 2007
+
+% This file contains pairs of large operators for math extension fonts.
+
+% Each operator has a `{\tt\char`\\textstyle}' form, for math in text,
+% and a `{\tt\char`\\displaystyle}' form, for displayed formulas.
+
+% Character codes \0106--\0141 are generated.
+
+charlist oct"106": oct"107"; % square union signs
+charlist oct"110": oct"111"; % contour integral signs
+charlist oct"112": oct"113"; % circle-dot operators
+charlist oct"114": oct"115"; % circle-plus operators
+charlist oct"116": oct"117"; % circle-times operators
+charlist oct"120": oct"130"; % summation signs
+charlist oct"121": oct"131"; % product signs
+charlist oct"122": oct"132"; % integral signs
+charlist oct"123": oct"133"; % union signs
+charlist oct"124": oct"134"; % intersection signs
+charlist oct"125": oct"135"; % multiset union signs
+charlist oct"126": oct"136"; % lattice infimum signs
+charlist oct"127": oct"137"; % lattice supremum signs
+charlist oct"140": oct"141"; % coproduct signs
+
+cmchar "\textstyle square set union sign";
+beginchar(oct"106",15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u; x2=x1; x4=x5=w-x1;
+top y1=eps; bot y2=-d; y4=y2; y5=y1;
+draw z1---z2---z4---z5; % stems and bar
+labels(1,2,4,5); endchar;
+
+cmchar "\displaystyle square set union sign";
+beginchar(oct"107",20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u; x2=x1; x4=x5=w-x1;
+top y1=eps; bot y2=-d; y4=y2; y5=y1;
+draw z1---z2---z4---z5; % stems and bar
+labels(1,2,4,5); endchar;
+
+% These nex chars are commented out because they get redefined in lmathex.mf
+
+%cmchar "\textstyle circle-dot operator";
+%beginchar(oct"112",20u#,0,10/6dh#);
+%adjust_fit(0,0); pickup pencircle scaled stem;
+%lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+%circle_points; draw_circle; % circle
+%fill fullcircle scaled(bold+4dw+eps) shifted(.5[z4,z8]); % dot
+%labels(1,2,3,4,5,6,7,8); endchar;
+
+%cmchar "\displaystyle circle-dot operator";
+%beginchar(oct"113",27.2u#,0,14/6dh#); padded 1/6dh#;
+%adjust_fit(0,0); pickup pencircle scaled curve;
+%lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+%circle_points; draw_circle; % circle
+%fill fullcircle scaled(bold+6dw+eps) shifted(.5[z4,z8]); % dot
+%labels(1,2,3,4,5,6,7,8); endchar;
+
+%cmchar "\textstyle circle-plus operator";
+%beginchar(oct"114",20u#,0,10/6dh#);
+%adjust_fit(0,0); pickup pencircle scaled stem;
+%lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+%circle_points; draw_circle; % circle
+%draw z2--z6; draw z4--z8; % plus
+%labels(1,2,3,4,5,6,7,8); endchar;
+
+%cmchar "\displaystyle circle-plus operator";
+%beginchar(oct"115",27.2u#,0,14/6dh#); padded 1/6dh#;
+%adjust_fit(0,0); pickup pencircle scaled curve;
+%lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+%circle_points; draw_circle; % circle
+%draw z2--z6; draw z4--z8; % plus
+%labels(1,2,3,4,5,6,7,8); endchar;
+
+%cmchar "\textstyle circle-times operator";
+%beginchar(oct"116",20u#,0,10/6dh#);
+%adjust_fit(0,0); pickup pencircle scaled stem;
+%lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+%circle_points; draw_circle; % circle
+%draw z1--z5; draw z3--z7; % times
+%labels(1,2,3,4,5,6,7,8); endchar;
+
+%cmchar "\displaystyle circle-times operator";
+%beginchar(oct"117",27.2u#,0,14/6dh#); padded 1/6dh#;
+%adjust_fit(0,0); pickup pencircle scaled curve;
+%lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+%circle_points; draw_circle; % circle
+%draw z1--z5; draw z3--z7; % times
+%labels(1,2,3,4,5,6,7,8); endchar;
+
+%cmchar "\textstyle summation sign";
+%beginchar(oct"120",19u#,0,10/6dh#);
+%adjust_fit(0,0); pickup tiny.nib;
+%numeric top_arm_thickness, bot_arm_thickness;
+%top_arm_thickness=Vround rule_thickness;
+%bot_arm_thickness=Vround .9(.5[rule_thickness,curve]);
+%lft x1l=hround u; x1l=x2l=x4l; x3l-x1l=4/11(w-2u);
+%top y1=0; bot y2=-top_arm_thickness-eps; bot y4=-d; y3=-.5d;
+%numeric alpha[]; alpha1=((x3l-x1l)++(y2-y3))/(y2-y3);
+%penpos1(alpha1*(curve-tiny),0); penpos2(alpha1*(curve-tiny),0);
+%penpos3(alpha1*(curve-tiny),0);
+%alpha2=diag_ratio(1,rule_thickness-tiny,y3-y4,x3r-x4l);
+%penpos4(alpha2*(rule_thickness-tiny),0);
+%z0=whatever[z2l,z3l]=z4l+whatever*(z3r-z4r);
+%filldraw z1l--z2l--z0--z4l--z4r--z3r--z2r--z1r--cycle; % diagonals
+%pickup crisp.nib; pos5(top_arm_thickness,90); pos6(hair,0);
+%top y5r=0; x5=x1; rt x6r=hround(w-u); y6=good.y(y5l-beak)-eps;
+%arm(5,6,a,.45,17/11u); % upper arm and beak
+%pos7(bot_arm_thickness,-90); pos8(hair,0);
+%bot y7r=-d; z7l=whatever[z4,z3]; x7r:=x4; x8=x6; y8=good.y(y7l+beak)+eps;
+%arm(7,8,b,.45,17/11u); % lower arm and beak
+%penlabels(0,1,2,3,4,5,6,7,8); endchar;
+
+%cmchar "\displaystyle summation sign";
+%beginchar(oct"130",26u#,0,14/6dh#); padded 1/6dh#;
+%adjust_fit(0,0); pickup tiny.nib;
+%numeric top_arm_thickness, bot_arm_thickness, thick_stem, thin_stem;
+%thick_stem=bold+4dw; thin_stem=rule_thickness+dw;
+%top_arm_thickness=Vround .9thin_stem;
+%bot_arm_thickness=Vround .9(.5[thin_stem,thick_stem]);
+%lft x1l=hround u; x1l=x2l=x4l; x3l-x1l=4/11(w-2u);
+%top y1=0; bot y2=-top_arm_thickness-eps; bot y4=-d; y3=-.5d;
+%numeric alpha[]; alpha1=((x3l-x1l)++(y2-y3))/(y2-y3);
+%penpos1(alpha1*(thick_stem-tiny),0); penpos2(alpha1*(thick_stem-tiny),0);
+%penpos3(alpha1*(thick_stem-tiny),0);
+%alpha2=diag_ratio(1,thin_stem-tiny,y3-y4,x3r-x4l);
+%penpos4(alpha2*(thin_stem-tiny),0);
+%z0=whatever[z2l,z3l]=z4l+whatever*(z3r-z4r);
+%filldraw z1l--z2l--z0--z4l--z4r--z3r--z2r--z1r--cycle; % diagonals
+%pickup crisp.nib; pos5(top_arm_thickness,90); pos6(hair,0);
+%top y5r=0; x5=x1; rt x6r=hround(w-u); y6=good.y(y5l-1.2beak)-eps;
+%arm(5,6,a,.45,24/11u); % upper arm and beak
+%pos7(bot_arm_thickness,-90); pos8(hair,0);
+%bot y7r=-d; z7l=whatever[z4,z3]; x7r:=x4; x8=x6; y8=good.y(y7l+1.2beak)+eps;
+%arm(7,8,b,.45,24/11u); % lower arm and beak
+%penlabels(0,1,2,3,4,5,6,7,8); endchar;
+
+%cmchar "\textstyle product sign";
+%beginchar(oct"121",17u#,0,10/6dh#);
+%adjust_fit(0,0); pickup crisp.nib;
+%numeric heavy_stem,light_stem;
+%heavy_stem=hround(bold+dw); light_stem=rule_thickness;
+%pos1(heavy_stem,0);pos2(heavy_stem,0); pos1'(heavy_stem,0);pos2'(heavy_stem,0);
+%pos11(light_stem,90); pos12(light_stem,90); pos22(light_stem,90);
+%lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround cap_jut;
+%x1=x1'=x2=x2';
+%top y1=0; bot y2=-d; y11r=y1; y12l=y22l=y2;
+%y11l-y1'=y2'-y12r=1.2bracket;
+%filldraw z1r--z11r--serif_arc(11l,1'l)--reverse serif_arc(12r,2'l)
+% --z12l--z22l--serif_arc(22r,2'r)--cycle; % left stem and serifs
+%pos3(heavy_stem,0);pos4(heavy_stem,0); pos3'(heavy_stem,0);pos4'(heavy_stem,0);
+%pos13(light_stem,90); pos14(light_stem,90); pos24(light_stem,90);
+%x3=x3'=x4=x4'=w-x1; x13=x14=w-x11; x24=w-x22;
+%y3=y13r=y1; y3'=y1'; y4'=y2'; y4=y14l=y24l=y2;
+%filldraw z3l--z13r--serif_arc(13l,3'r)--reverse serif_arc(14r,4'r)
+% --z14l--z24l--serif_arc(24r,4'l)--cycle; % right stem and serifs
+%filldraw stroke z11e--z13e; % bar
+%penlabels(1,1',2,2',3,3',4,4',11,12,13,14,22,24); endchar;
+
+%cmchar "\displaystyle product sign";
+%beginchar(oct"131",23u#,0,14/6dh#); padded 1/6dh#;
+%adjust_fit(0,0); pickup crisp.nib;
+%numeric heavy_stem,light_stem;
+%heavy_stem=hround(bold+5dw); light_stem=Vround(rule_thickness+dw);
+%pos1(heavy_stem,0);pos2(heavy_stem,0); pos1'(heavy_stem,0);pos2'(heavy_stem,0);
+%pos11(light_stem,90); pos12(light_stem,90); pos22(light_stem,90);
+%lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround 1.6cap_jut;
+%x1=x1'=x2=x2';
+%top y1=0; bot y2=-d; y11r=y1; y12l=y22l=y2;
+%y11l-y1'=y2'-y12r=1.8bracket;
+%filldraw z1r--z11r--serif_arc(11l,1'l)--reverse serif_arc(12r,2'l)
+% --z12l--z22l--serif_arc(22r,2'r)--cycle; % left stem and serifs
+%pos3(heavy_stem,0);pos4(heavy_stem,0); pos3'(heavy_stem,0);pos4'(heavy_stem,0);
+%pos13(light_stem,90); pos14(light_stem,90); pos24(light_stem,90);
+%x3=x3'=x4=x4'=w-x1; x13=x14=w-x11; x24=w-x22;
+%y3=y13r=y1; y3'=y1'; y4'=y2'; y4=y14l=y24l=y2;
+%filldraw z3l--z13r--serif_arc(13l,3'r)--reverse serif_arc(14r,4'r)
+% --z14l--z24l--serif_arc(24r,4'l)--cycle; % right stem and serifs
+%filldraw stroke z11e--z13e; % bar
+%penlabels(1,1',2,2',3,3',4,4',11,12,13,14,22,24); endchar;
+
+cmchar "\textstyle coproduct sign";
+beginchar(oct"140",16u#,0,10/6dh#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric heavy_stem,light_stem;
+heavy_stem=hround(bold+dw); light_stem=rule_thickness;
+pos1(heavy_stem,0);pos2(heavy_stem,0); pos1'(heavy_stem,0);pos2'(heavy_stem,0);
+pos11(light_stem,-90); pos12(light_stem,-90); pos22(light_stem,-90);
+lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround cap_jut;
+x1=x1'=x2=x2';
+bot y1=-d; top y2=0; y11r=y1; y12l=y22l=y2;
+y1'-y11l=y12r-y2'=1.2bracket;
+filldraw z1r--z11r--serif_arc(11l,1'l)--reverse serif_arc(12r,2'l)
+ --z12l--z22l--serif_arc(22r,2'r)--cycle; % left stem and serifs
+pos3(heavy_stem,0);pos4(heavy_stem,0); pos3'(heavy_stem,0);pos4'(heavy_stem,0);
+pos13(light_stem,-90); pos14(light_stem,-90); pos24(light_stem,-90);
+x3=x3'=x4=x4'=w-x1; x13=x14=w-x11; x24=w-x22;
+y3=y13r=y1; y3'=y1'; y4'=y2'; y4=y14l=y24l=y2;
+filldraw z3l--z13r--serif_arc(13l,3'r)--reverse serif_arc(14r,4'r)
+ --z14l--z24l--serif_arc(24r,4'l)--cycle; % right stem and serifs
+filldraw stroke z11e--z13e; % bar
+penlabels(1,1',2,2',3,3',4,4',11,12,13,14,22,24); endchar;
+
+cmchar "\displaystyle coproduct sign";
+beginchar(oct"141",21u#,0,16/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup crisp.nib;
+numeric heavy_stem,light_stem;
+heavy_stem=hround(bold+5dw); light_stem=Vround(rule_thickness+dw);
+pos1(heavy_stem,0);pos2(heavy_stem,0); pos1'(heavy_stem,0);pos2'(heavy_stem,0);
+pos11(light_stem,-90); pos12(light_stem,-90); pos22(light_stem,-90);
+lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround 1.6cap_jut;
+x1=x1'=x2=x2';
+bot y1=-d; top y2=0; y11r=y1; y12l=y22l=y2;
+y1'-y11l=y12r-y2'=1.8bracket;
+filldraw z1r--z11r--serif_arc(11l,1'l)--reverse serif_arc(12r,2'l)
+ --z12l--z22l--serif_arc(22r,2'r)--cycle; % left stem and serifs
+pos3(heavy_stem,0);pos4(heavy_stem,0); pos3'(heavy_stem,0);pos4'(heavy_stem,0);
+pos13(light_stem,-90); pos14(light_stem,-90); pos24(light_stem,-90);
+x3=x3'=x4=x4'=w-x1; x13=x14=w-x11; x24=w-x22;
+y3=y13r=y1; y3'=y1'; y4'=y2'; y4=y14l=y24l=y2;
+filldraw z3l--z13r--serif_arc(13l,3'r)--reverse serif_arc(14r,4'r)
+ --z14l--z24l--serif_arc(24r,4'l)--cycle; % right stem and serifs
+filldraw stroke z11e--z13e; % bar
+penlabels(1,1',2,2',3,3',4,4',11,12,13,14,22,24); endchar;
+
+%cmchar "\textstyle integral sign";
+%beginchar(oct"122",12u#,0,100/52dh#);
+%italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+%adjust_fit(0,-ic#); pickup fine.nib;
+%pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+%pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+%pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+%rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+%x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+%top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+%y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+%bulb(3,2,1); bulb(7,8,9); % bulbs
+%filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+% ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+%filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+% ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+%penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+%cmchar "\displaystyle integral sign";
+%beginchar(oct"132",18u#,0,200/48dh#);
+%italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+%adjust_fit(0,-ic#); pickup fine.nib;
+%numeric bulb_size, max_size;
+%bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+%pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+%pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+%pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+%rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+%x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+%top y3r=0; bot y7r=-d;
+%y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+%y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+%bulb(3,2,1); bulb(7,8,9); % bulbs
+%filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+% ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+%filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+% ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+%penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+%cmchar "\textstyle contour integral sign";
+%beginchar(oct"110",12u#,0,100/52dh#);
+%italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+%adjust_fit(0,-ic#); pickup fine.nib;
+%pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+%pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+%pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+%rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+%x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+%top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+%y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+%bulb(3,2,1); bulb(7,8,9); % bulbs
+%filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+% ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+%filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+% ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+%pickup rule.nib; autorounded;
+%draw fullcircle scaled .5w shifted z5; % contour
+%penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+%cmchar "\displaystyle contour integral sign";
+%beginchar(oct"111",18u#,0,200/48dh#);
+%italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+%adjust_fit(0,-ic#); pickup fine.nib;
+%numeric bulb_size, max_size;
+%bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+%pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+%pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+%pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+%rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+%x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+%top y3r=0; bot y7r=-d;
+%y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+%y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+%bulb(3,2,1); bulb(7,8,9); % bulbs
+%filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+% ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+%filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+% ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+%pickup rule.nib; autorounded;
+%draw fullcircle scaled .5w shifted z5; % contour
+%penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle set union sign";
+beginchar(oct"123",15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+top y1=eps; bot y3=-d; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cup
+labels(1,2,3,4,5); endchar;
+
+cmchar "\displaystyle set union sign";
+beginchar(oct"133",20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+top y1=eps; bot y3=-d; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cup
+labels(1,2,3,4,5); endchar;
+
+cmchar "\textstyle set intersection sign";
+beginchar(oct"124",15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+top y3=0; bot y1=-d-eps; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cap
+labels(1,2,3,4,5); endchar;
+
+cmchar "\displaystyle set intersection sign";
+beginchar(oct"134",20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+top y3=0; bot y1=-d-eps; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cap
+labels(1,2,3,4,5); endchar;
+
+cmchar "\textstyle multiset union sign";
+beginchar(oct"125",15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+top y1=eps; bot y3=-d; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cup
+y8=y9=.47[y1,y3]; x8=w-x9=x1+2stem+eps; x6=x7=x3;
+.5[y6,y7]=y8; y7-y6=x9-x8; draw z8--z9; draw z6--z7; % enclosed `$+$'
+labels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\displaystyle multiset union sign";
+beginchar(oct"135",20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
+top y1=eps; bot y3=-d; y2=y4=2/3[y1,y3]; y5=y1;
+draw z1---z2...z3...z4---z5; % stems and cup
+y8=y9=.47[y1,y3]; x8=w-x9=x1+2curve+eps; x6=x7=x3;
+.5[y6,y7]=y8; y7-y6=x9-x8; draw z8--z9; draw z6--z7; % enclosed `$+$'
+labels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle lattice infimum sign";
+beginchar(oct"126",15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u-eps; x3=w-x3; x5=w-x1;
+top y3=0; bot y1=-d-eps; y5=y1;
+draw z1--z3--z5; % diagonals
+labels(1,3,5); endchar;
+
+cmchar "\displaystyle lattice infimum sign";
+beginchar(oct"136",20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u-eps; x3=w-x3; x5=w-x1;
+top y3=0; bot y1=-d-eps; y5=y1;
+draw z1--z3--z5; % diagonals
+labels(1,3,5); endchar;
+
+cmchar "\textstyle lattice supremum sign";
+beginchar(oct"127",15u#,0,10/6dh#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x1=hround u-eps; x3=w-x3; x5=w-x1;
+top y1=eps; bot y3=-d; y5=y1;
+draw z1--z3--z5; % diagonals
+labels(1,3,5); endchar;
+
+cmchar "\displaystyle lattice supremum sign";
+beginchar(oct"137",20u#,0,14/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x1=hround u-eps; x3=w-x3; x5=w-x1;
+top y1=eps; bot y3=-d; y5=y1;
+draw z1--z3--z5; % diagonals
+labels(1,3,5); endchar;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lbsymbols.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lbsymbols.mf
new file mode 100644
index 00000000000..cc6a3f5bf90
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lbsymbols.mf
@@ -0,0 +1,1622 @@
+%% File LBSYMBOLS copied and modified from AMSYB by American Mathematical Society
+%% in order to cope with the necessities of the slides fonts
+%%
+%% Claudio Beccari 2007
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% This file defines the symbols of AMS special MSB font.
+
+def char_negate(suffix c,t,b) = %c is center point; t is top point; b is bottom
+pickup rule.nib;
+w-x.t=x.b; y.t-y.c=y.c-y.b; draw z.t--z.b;
+penlabels(t,c,b); enddef;
+def char_center(suffix c) = % find center of type character
+x.c=w/2; y.c=.5[-d,h]; enddef;
+
+cmchar "Less than or not (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"000",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y1=h;
+x2=x9=x7; x1=x8=x6; y7=y6; y8=y9;
+y7-y9=spread'; top y3-bot y6=spread';
+draw z1--z2--z3; % diagonals
+draw z6--z7; draw z8--z9; % equal sign
+z.c=.5[z7,z8]; x.t=x.c; y.t=2/3[y6,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Greater than or not (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"001",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x7=x9; x1=x6=x8; y6=y7; y8=y9;
+y2=.5[y1,y3]; top y3-bot y6=spread'; top y1=h;
+y7-y9=spread';
+draw z1--z2--z3; % diagonals
+draw z6--z7; draw z8--z9;
+z.c=.5[z7,z8]; x.t=x.c; y.t=2/3[y6,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Not less than or equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"002",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h-3u;
+draw z1--z2--z3; % diagonals
+x8=x1; x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % bar
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3,8,9,99,100); endchar;
+
+cmchar "Not greater than or equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"003",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h-3u;
+draw z1--z2--z3; % diagonals
+x8=x1; x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % bar
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3,8,9,99,100); endchar;
+
+cmchar "Not less than sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"004",14u#,v_center(spread#+rule_thickness#+6u#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]=math_axis;
+draw z1--z2--z3; % diagonals
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3); endchar;
+
+cmchar "Not greater than sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"005",14u#,v_center(spread#+rule_thickness#+6u#));
+italcorr math_axis#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]=math_axis;
+draw z1--z2--z3; % diagonals
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3,99,100); endchar;
+
+cmchar "Not precedes sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"006",14u#,v_center(spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-epsilon; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h-3u;
+draw z1{-u,-spread}...{left}z2; % upper diagonal
+draw z3{-u,spread}...{left}z2; % lower diagonal
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3,99,100); endchar;
+
+cmchar "Not follows sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"007",14u#,v_center(spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-epsilon; x2=w-x1; x3=x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h-3u;
+draw z1{u,-spread}...{right}z2; % upper diagonal
+draw z3{u,spread}...{right}z2; % lower diagonal
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3,99,100); endchar;
+
+cmchar "Less than or slanted not (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"010",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y1=h;
+x2=x9=x7; x1=x8=x6; y7=y6; y8=y9;
+y7-y9=spread'; top y3-bot y6=spread';
+draw z1--z2--z3; % diagonals
+draw z6--z7; draw z8--z9; % equal sign
+z.c=.5[z7,z8]; x.t=2/3[x.c, x3]; y.t=2/3[y6,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Greater than or slanted not (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"011",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x7=x9; x1=x6=x8; y6=y7; y8=y9;
+y2=.5[y1,y3]; top y3-bot y6=spread'; top y1=h;
+y7-y9=spread';
+draw z1--z2--z3; % diagonals
+draw z6--z7; draw z8--z9;
+z.c=.5[z7,z8]; x.t=2/3[x.c, w-x3]; y.t=2/3[y6,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Not less than or (slanted) equal sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"012",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; y3-y8=y2-y9=spread'; top y1=h-3u;
+x2=x9; x1=x8;
+draw z1--z2--z3; % diagonals
+draw z8--z9; % equal sign
+char_center(c); x.t=w-3u; y.t=y1+3u;
+char_negate(c,t,b);
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Not greater than or (slanted) equal sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"13",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x9; x1=x8;
+y2=.5[y1,y3]; y3-y8=y2-y9=spread'; top y1=h-3u;
+draw z1--z2--z3; % diagonals
+draw z8--z9;
+char_center(c); x.t=w-3u; y.t=y1+3u;
+char_negate(c,t,b);
+penlabels(1,2,3,8,9); endchar;
+
+cmchar "Less than or not equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"014",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; lft
+x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread; y2=.5[y1,y3];
+top y1=h; draw z1--z2--z3; % diagonals
+x8=x1; x9=x2; y8=y9;
+y3-y9=spread'; draw z8--z9; % bar
+x100=w/2; y100=y8; % center point
+y101=.5[y8,y3]; x101-x100=y101-y100;
+char_negate(100,101,102);
+labels(1,2,3,8,9); endchar;
+
+cmchar "Greater than or not equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"015",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; lft
+x1=hround 1.5u-eps; x2=w-x1; x3=x1; y1-y3=spread;
+y2=.5[y1,y3]; top y1=h; draw z1--z2--z3; % diagonals
+x8=x1;
+x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % bar
+x100=w/2; y100=y8; % center point
+y101=.5[y8,y3]; x101-x100=y101-y100;
+char_negate(100,101,102);
+labels(1,2,3,8,9); endchar;
+
+cmchar "Not precedes or equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"016",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x2=hround
+1.5u-eps; x1=x3=w-x2; y1-y3=spread; y2=.5[y1,y3]; top y1=h-3u;
+draw z1{-u,-spread}...{left}z2; % upper diagonal
+draw z3{-u,spread}...{left}z2; % lower diagonal
+x8=x1; x9=x2;
+y8=y9; y3-y9=spread'; draw z8--z9; % bar
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3,8,9,99,100); endchar;
+
+cmchar "Not follows or equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"017",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x1=hround
+1.5u-eps; x2=w-x1; x3=x1; y1-y3=spread; y2=.5[y1,y3]; top
+y1=h-3u; draw z1{u,-spread}...{right}z2; % upper diagonal
+draw z3{u,spread}...{right}z2; % lower diagonal
+x8=x1; x9=x2;
+y8=y9; y3-y9=spread'; draw z8--z9; % bar
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3,8,9,99,100); endchar;
+
+cmchar "Precedes or not approximately equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54x_height#,.55x_height#);
+spread#'':=spread#; spread'':=spread;
+compute_spread(5/4 x_height#,3/2 x_height#);
+beginchar(oct"020",14u#,v_center(spread#'+spread#+spread#''));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1{-u,-spread}...{left}z2; %upper `diagonal'
+draw z3{-u,spread}...{left}z2; % lower diagonal
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread'';
+ y3-y14=spread';
+draw z11{up}...z12{right}..{right}z13...{up}z14;
+x.c=w/2; y.c=.5[y12,y13]; x.t=3/8[x.c,x14]; y.t=2/3[y12,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,11,12,13,14); endchar;
+
+cmchar "Follows or not equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % spread of similarity sign
+compute_spread(.54 x_height#,.66 x_height#);
+spread#'':=spread#; spread'':=spread; % spread between symbols
+compute_spread(5/4 x_height#,3/2 x_height#); % spread of follows sign
+beginchar(oct"021",14u#,v_center(spread#'+spread#+spread#''));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x1=x3; x2=w-x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1{u,-spread}...{right}z2; %upper `diagonal'
+draw z3{u,spread}...{right}z2; % lower diagonal
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread'';
+y3-y14=spread';
+draw z11{up}...z12{right}..{right}z13...{up}z14;
+x.c=w/2; y.c=.5[y12,y13]; x.t=3/8[x.c,x14]; y.t=2/3[y12,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,11,12,13,14); endchar;
+
+
+
+cmchar "Less than or not similar to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54x_height#,.55x_height#);
+spread#'':=spread#; spread'':=spread;
+compute_spread(5/4 x_height#,3/2 x_height#);
+beginchar(oct"022",14u#,v_center(spread#'+spread#+spread#''));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3;
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread'';
+ y3-y14=spread';
+draw z11{up}...z12{right}..{right}z13...{up}z14;
+x.c=w/2; y.c=.5[y12,y13]; x.t=3/8[x.c,x14]; y.t=2/3[y12,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+
+
+cmchar "Greater than or not similar to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54x_height#,.66x_height#);
+spread#'':=spread#; spread'':=spread;
+compute_spread(5/4 x_height#,3/2 x_height#);
+beginchar(oct"023",14u#,v_center(spread#'+spread#+spread#''));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x1=x3; x2=w-x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3;
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread'';
+ y3-y14=spread';
+draw z11{up}...z12{right}..{right}z13...{up}z14;
+z.c=.5[z12,z13]; x.t=3/8[x.c,x14]; y.t=2/3[y12,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+
+cmchar "Negated less than or (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"024",14u#,v_center(2spread#'+spread#+2rule_thickness#+6u#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y1=h-3u;
+x2=x9=x7; x1=x8=x6; y7=y6; y8=y9;
+y7-y9=spread'; top y3-bot y6=spread';
+draw z1--z2--z3; % diagonals
+draw z6--z7; draw z8--z9; % equal sign
+char_center(c); x.t=w-3u; y.t=y1+3u;
+char_negate(c,t,b);
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Negated greater than or (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"025",14u#,v_center(2spread#'+spread#+2rule_thickness#+6u#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x7=x9; x1=x6=x8; y6=y7; y8=y9;
+y2=.5[y1,y3]; top y3-bot y6=spread'; top y1=h-3u;
+y7-y9=spread';
+draw z1--z2--z3; % diagonals
+draw z6--z7; draw z8--z9;
+char_center(c); x.t=w-3u; y.t=y1+3u;
+char_negate(c,t,b);
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Precedes or slanted not (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"026",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread;
+y2=.5[y1,y3]; top y1=h;
+x2=x9=x7; x1=x8=x6; y7=y6; y8=y9;
+y7-y9=spread'; top y3-bot y6=spread';
+draw z1{-u,-spread}..{left}z2; % diagonals
+draw z3{-u, spread}..{left}z2;
+draw z6--z7; draw z8--z9; % equal sign
+z.c=.5[z7,z8]; x.t=2/3[x.c, x3]; y.t=2/3[y6,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Follows or slanted not (double) equals sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"027",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread;
+x2=x7=x9; x1=x6=x8; y6=y7; y8=y9;
+y2=.5[y1,y3]; top y3-bot y6=spread'; top y1=h;
+y7-y9=spread';
+draw z1{u,-spread}..{right}z2; % diagonals
+draw z3{u,spread}..{right}z2;
+draw z6--z7; draw z8--z9;
+z.c=.5[z7,z8]; x.t=2/3[x.c, w-x3]; y.t=2/3[y6,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,6,7,8,9); endchar;
+
+cmchar "Precedes with not approximate equality sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(.54 x_height#,.66 x_height#);
+spread#'':=spread#; spread'':=spread; % the spread of `$=$'
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"030",14u#,v_center(2spread#''+spread#+2rule_thickness#));
+adjust_fit(0,0);
+% now for precedes sign, using z9 (top), z10 (vertex), & z11 (bot)
+pickup rule.nib;
+lft x10= hround 1.5u-eps; x9=x11=w-x10;
+y9-y11=spread; y10=.5[y9,y11]; top y9=h;
+draw z9{-u,-spread}...{left}z10;
+draw z11{-u,spread}...{left}z10;
+pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+top y3=top y1=bot y11-spread''; top y2=top y4=bot y1+spread';
+z1-z5=z2-z6=z3-z7=z4-z8=(0,spread'');
+draw z1{up}...z2{right}..{right}z3...{up}z4; % upper stroke
+draw z5{up}...z6{right}..{right}z7...{up}z8; % lower stroke
+z.c=.5[z2,z7]; x.t=3/8[x.c,x4]; y.t=1/3[y2,y11];
+char_negate(c,t,b);
+labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
+
+
+cmchar "Follows with not approximate equality sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(.54 x_height#,.66 x_height#);
+spread#'':=spread#; spread'':=spread; % the spread of `$=$'
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"031",14u#,v_center(2spread#''+spread#+2rule_thickness#));
+adjust_fit(0,0);
+% now for follow sign, using z9 (top), z10 (vertex), & z11 (bot)
+pickup rule.nib;
+lft x9 = hround 1.5u-eps; x10=w-x9; x11=x9;
+y9-y11=spread; y10=.5[y9,y11]; top y9=h;
+draw z9{u,-spread}...{right}z10;
+draw z11{u,spread}...{right}z10;
+pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+top y3=top y1=bot y11-spread''; top y2=top y4=bot y1+spread';
+z1-z5=z2-z6=z3-z7=z4-z8=(0,spread'');
+draw z1{up}...z2{right}..{right}z3...{up}z4; % upper stroke
+draw z5{up}...z6{right}..{right}z7...{up}z8; % lower stroke
+z.c=.5[z2,z7]; x.t=3/8[x.c,x4]; y.t=1/3[y2,y11];
+char_negate(c,t,b);
+labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
+
+
+cmchar "Less than or not approximately equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54 x_height#,.66 x_height#);
+spread#'':=spread#; spread'':=spread; % the spread of `$=$'
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"032",14u#,v_center(2spread#''+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3;
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+top y13=top y11=bot y3-spread''; top y12=top y14=bot y11+spread';
+path p; p=z11{up}...z12{right}..{right}z13...{up}z14;
+draw p; draw p shifted (0,-spread'');
+x.c=w/2; y.c=.5[y12, y13-spread'']; x.t=3/8[x.c,x14]; y.t=2/3[y12,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+cmchar "Greater than or not approximately equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread;
+compute_spread(.54 x_height#,.66 x_height#);
+spread#'':=spread#; spread'':=spread; % the spread of `$=$'
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"033",14u#,v_center(2spread#''+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x1=x3; x2=w-x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3;
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi
+lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11;
+bot y11=bot y13; top y12=top y14;
+top y12-bot y11=spread';
+bot y3- spread''=top y11;
+path p; p=z11{up}...z12{right}..{right}z13...{up}z14;
+draw p; draw p shifted (0,-spread'');
+x.c=w/2; y.c=.5[y12,y13-spread'']; x.t=3/8[x.c,x14]; y.t=2/3[y12,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,4,11,12,13,14); endchar;
+
+cmchar "Thick not similar to sign";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"034",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup pencircle xscaled .8rule_thickness
+yscaled 1.87rule_thickness; if vair#>.8curve#: pickup
+rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+bot y1=bot y3=-d; top y2=top y4=h;
+draw z1{up}...z2{right}..{right}z3...{up}z4; % stroke
+char_center(100); x101=w-4u; y101=y1+5u;
+char_negate(100,101,102);
+labels(1,2,3,4,99,100); endchar;
+
+
+cmchar "Not approximately equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"035",14u#,v_center(3spread#+2rule_thickness#+8u#));
+adjust_fit(0,0);
+pickup pencircle xscaled .7rule_thickness yscaled
+1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi %
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+y1=y3; top y2=top y4=h-4u; top y2-bot y1=spread;
+draw z1{up}...z2{right}..{right}z3...{up}z4; % stroke
+pickup rule.nib;
+lft x5=lft x7=hround u-eps; x6=x8=w-x5;
+y5=y6=y1-spread; y7=y8=y5-spread;
+draw z5--z6; draw z7--z8; % double equal sign
+char_center(100); x101=w-3u; y101=y1+4u;
+char_negate(100,101,102);
+labels(1,2,3,4,5,6,7,8,99,100); endchar;
+
+cmchar "45 degree angle line";
+beginchar(oct"036",16u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup rule.nib;
+bot y1 =-d-eps; .5[y1,y2]=math_axis;
+lft x1 = 0+eps =x0; % rt x2=;
+z0-z1=(z2-z1) rotated 45;
+draw z1--z2;
+labels(0,1,2); endchar;
+
+cmchar "135 degree angle line";
+beginchar(oct"037",16u#,body_height#,asc_depth#);
+adjust_fit(0,0); pickup rule.nib;
+bot y1 =-d-eps; .5[y1,y2]=math_axis;
+lft x2 = 0+eps= x0; % rt x2=;
+z0-z2=(z1-z2) rotated -45;
+draw z1--z2;
+labels(0,1,2); endchar;
+
+cmchar "Negated subset or equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"040",14u#,v_center(spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1; lft x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x100=w/2; y100=.5[y3,y8]; x101=x3-2u; y101=y3+2u;
+char_negate(100,101,102);
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Negated superset or equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"041",14u#,v_center(spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1; rt x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x100=x3+2.5u; y100=.5[y8,y3]; x101=x100+2.5u; y101=y3+2u;
+y101-y100=y100-y102; x101-x100=x100-x102; draw z101--z102;
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Negated subset or (double) equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"042",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x2=hround
+1.5u-eps; x1=x3=w-x2; y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3; draw z1---z4...z2{down}...z5---z3;
+% arc and bars
+x8=x1; x9=x2;
+y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9';
+char_center(c); x.t=w-2.5u; y.t=h+u; char_negate(c,t,b);
+penlabels(1,2,3,4,5,8,9,8',9'); endchar;
+
+cmchar "Negated superset or (double) equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"043",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x1=hround
+1.5u-eps; x2=w-x1; x3=x1; y1-y3=spread; y2=.5[y1,y3]; top
+y1=h; x4=x5=.5w; y4=y1; y5=y3; draw
+z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1;
+x9=x2;
+y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9';
+char_center(c); x.t=w-2.5u; y.t=h+u; char_negate(c,t,b);
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Subset or not (double) equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"044",14u#,v_center(2.33spread#'+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x2=hround
+1.5u-eps; x1=x3=w-x2; y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3; draw z1---z4...z2{down}...z5---z3;
+% arc and bars
+x8=x1; x9=x2;
+y8=y9; y3-y9=1.33spread'; draw z8--z9; % lower bar
+x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9';
+x.c=w/2; y.c=.5[y9,y9']; x.t=1/2[x.c,w]; y.t=.5[y8,y3];
+char_negate(c,t,b);
+penlabels(1,2,3,4,5,8,9,8',9'); endchar;
+
+cmchar "Superset or not (double) equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"045",14u#,v_center(2.33spread#'+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x1=hround
+1.5u-eps; x2=w-x1; x3=x1; y1-y3=spread; y2=.5[y1,y3]; top
+y1=h; x4=x5=.5w; y4=y1; y5=y3; draw
+z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1;
+x9=x2;
+y8=y9; y3-y9=1.33spread'; draw z8--z9; % lower bar
+x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9';
+x.c=w/2; y.c=.5[y9,y9']; x.t=1/2[x.c,w]; y.t=.5[y8,y3];
+char_negate(c,t,b);
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Another not subset or (double) equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"046",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x2=hround
+1.5u-eps; x1=x3=w-x2; y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3; draw z1---z4...z2{down}...z5---z3;
+% arc and bars
+x8=x1; x9=x2;
+y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9';
+x.t=w-2.5u; y.t=y3+2u; x.b=.5[x2,x5]; y.b=y9'-2u; z.c=.5[z.b,z.t];
+draw z.b--z.t; labels(c,b,t);
+penlabels(1,2,3,4,5,8,9,8',9'); endchar;
+
+cmchar "Another superset or (double) equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"047",14u#,v_center(2spread#'+spread#+2rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded; lft x1=hround
+1.5u-eps; x2=w-x1; x3=x1; y1-y3=spread; y2=.5[y1,y3]; top
+y1=h; x4=x5=.5w; y4=y1; y5=y3; draw
+z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1;
+x9=x2;
+y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9';
+x.t=x5; y.t=y3+2u; x.b=2.5u; y.b=y9'-2u; z.c=.5[z.b,z.t];
+draw z.b--z.t; labels(c,b,t);
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Subset or not equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"050",14u#,v_center(spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1; lft x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+z100=.5[z8,z9]; y101=.5[y8,y3];x101-x100=y101-y100;
+char_negate(100,101,102);
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Superset or not equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"051",14u#,v_center(spread#'+spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+x4=x5=.5w; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1; rt x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+z100=.5[z8,z9]; y101=.5[y8,y3];x101-x100=y101-y100;
+char_negate(100,101,102);
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Not subset or equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"052",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h-3u;
+x4=x5=.5w; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1; lft x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+char_center(100); y101=y1+3u; x101=w-3u;
+char_negate(100,101,102);
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Not superset or equal to sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"053",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h-3u;
+x4=x5=.5w; y4=y1; y5=y3;
+draw z1---z4...z2{down}...z5---z3; % arc and bars
+x8=x1; rt x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % lower bar
+char_center(100); y101=y1+3u; x101=w-3u;
+char_negate(100,101,102);
+labels(1,2,3,4,5,8,9); endchar;
+
+cmchar "Negated double vertical line (norm or cardinality)";
+beginchar(oct"054",9u#,body_height#,paren_depth#);
+adjust_fit(0,0); pickup rule.nib;
+x1=x2; top y1=h; .5[y1,y2]=math_axis;
+x3=x4=w-x1; y3=y1; y4=y2;
+compute_spread(.45x_height#,.55x_height#); x3-x1=spread;
+draw z1--z2; draw z3--z4; % stems
+char_center(c); x.t=w; y.t=2/3h;
+char_negate(c,t,b);
+labels(1,2,3,4); endchar;
+
+cmchar "Negated vertical line";
+beginchar(oct"055",5u#,body_height#,paren_depth#);
+italcorr body_height#*slant+.5rule_thickness#-2u#;
+adjust_fit(0,0); pickup rule.nib;
+x1=x2=good.x .5w; top y1=h+eps; bot y2=-d-eps;
+draw z1--z2; % stem
+x.t=w; x.b=w-x.t; y.t=2/3h; y.b=1/3h;
+draw z.b--z.t;
+labels(1,2,b,t); endchar;
+
+cmchar "Negated cute vertical bar";
+beginchar(oct"056",4u#,6u#+math_axis#,6u#-math_axis#);
+italcorr math_axis#*slant - .5u#;
+adjust_fit(0,0); pickup rule.nib;
+x1=x2=hround(w/2); top y1=x_height; bot y2=-o;
+draw z1--z2;
+char_center(c); x.t=w; y.t=5/8h;
+char_negate(c,t,b);
+labels(1,2); endchar;
+
+cmchar "Negated pair of cute vertical bars";
+beginchar(oct"057",7u#,6u#+math_axis#,6u#-math_axis#);
+italcorr math_axis#*slant - .5u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x1=u; x2=x1; top y1=x_height; bot y2=-o;
+x3=w-x1; x4=x3; y3=y1; y4=y2;
+draw z1--z2; draw z3--z4;
+char_center(c); x.t=w; y.t=5/8h;
+char_negate(c,t,b);
+labels(1,2,3,4); endchar;
+
+cmchar "Negated left turnstile";
+beginchar(oct"060",11u#,asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+.5[y1,y2]=y3=y4; x1=x2=x3;
+lft x3=hround u; x4=w-x3; top y1=h; bot y2=0;
+draw z1--z2; % stem
+draw z3--z4; % bar
+top rt z.t=(w-u,h); bot lft z.b=(-u,0); draw z.t--z.b;
+labels(1,2,3,4,b,t); endchar;
+
+cmchar "Negated forces symbol";
+beginchar(oct"061",13u#,asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+top y1=h; bot y2=0; y3=y4=good.y .5h; y5=y1; y6=y2;
+lft x5=hround u; x4=w-x5;
+compute_spread(.45x_height#,.55x_height#);
+x1=x5+spread; x1=x2=x3; x6=x5;
+draw z6--z5; draw z2--z1; draw z3--z4;
+top rt z.t=(w-u,h); bot lft z.b=(-u,0); draw z.t--z.b;
+penlabels(1,2,3,4,5,6,b,t); endchar;
+
+cmchar "Negated satisfies symbol";
+beginchar(oct"062",11u#,asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+compute_spread(.45x_height#,.55x_height#);
+top y1=h; bot y2=0; y0=good.y .5[y1,y2];
+y3=vround y0+.5spread;
+y5=vround y0- .5spread; y4=y3; y6=y5;
+lft x1=hround u; x4=w-x1;
+x1=x2=x3=x5; x4=x6; x0=x1;
+draw z1--z2; % vertical line
+draw z3--z4; % draw top horizontal piece
+draw z5--z6; % draw bottom horizontal piece
+top rt z.t=(w-u,h); bot lft z.b=(-u,0); draw z.t--z.b;
+penlabels(0,1,2,3,4,5,6,b,t); endchar;
+
+cmchar "Negated forces symbol with extra bar";
+beginchar(oct"063",13u#,asc_height#,0);
+adjust_fit(0,0); pickup rule.nib;
+top y1=h; bot y2=0; y3=y4=good.y .5h; y5=y1; y6=y2;
+lft x5=hround u; x4=w-x5;
+compute_spread(.45x_height#,.55x_height#);
+x1=x5+spread; x1=x2=x3; x6=x5;
+x3'=x3; x4'=x4; y3:=y3+.5spread; y4:=y3;
+y3'=y4'=y3-spread;
+draw z6--z5; draw z2--z1; draw z3--z4;
+draw z3'--z4'; % extra bar
+top rt z.t=(w-u,h); bot lft z.b=(-u,0); draw z.t--z.b;
+penlabels(1,2,3,4,5,6,b,t); endchar;
+
+
+cmchar "Negated rightward isosceles triangle with lower bar";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"064",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; lft x2=hround(1.5u);
+x3=x2; x1=hround(w-x2);
+top y2=h-3u; y2-y3=spread; y1=.5[y2,y3];
+x4=x2; x5=x1; y3-y4=spread'; y5=y4;
+draw z1--z2--z3--cycle; draw z4--z5;
+char_center(c); x.t=1/2[x.c,w]; y.t=y2+3u;
+char_negate(c,t,b);
+penlabels(1,2,3,4,5); endchar;
+
+cmchar "Negated leftward isosceles triangle with lower bar";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"065",14u#,v_center(spread#'+spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; rt x2=hround(w-1.5u-eps);
+x3=x2; x1=hround(w-x2);
+top y2=h-3u; y2-y3=spread; y1=.5[y2,y3];
+x4=x2; x5=x1; y3-y4=spread'; y5=y4;
+draw z1--z2--z3--cycle; draw z4--z5;
+char_center(c); x.t=1/2[x.c,w]; y.t=y2+3u;
+char_negate(c,t,b);
+penlabels(1,2,3,4,5); endchar;
+
+cmchar "Negated leftward pointing isosceles triangle";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"066",14u#,v_center(spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; rt x2=hround(w-1.5u-eps);
+x3=x2; x1=hround(w-x2);
+top y2=h-3u; y2-y3=spread; y1=.5[y2,y3];
+draw z1--z2--z3--cycle;
+char_center(c); x.t=1/2[x.c,w]; y.t=y2+3u;
+char_negate(c,t,b);
+penlabels(1,2,3); endchar;
+
+cmchar "Negated rightward pointing isosceles triangle";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"067",14u#,v_center(spread#+rule_thickness#+6u#));
+adjust_fit(0,0); pickup rule.nib; lft x2=hround(1.5u);
+x3=x2; x1=hround(w-x2);
+top y2=h-3u; y2-y3=spread; y1=.5[y2,y3];
+draw z1--z2--z3--cycle;
+char_center(c); x.t=1/2[x.c,w]; y.t=y2+3u;
+char_negate(c,t,b);
+penlabels(1,2,3); endchar;
+
+cmchar "Negated leftward arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"070",18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft x0=hround u;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+char_center(100); top y101=top y3; x101=x100+2u;
+char_negate(100,101,102);
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Negated rightward arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"071",18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=hround u; rt x0=hround(w-u);
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle; % arrowhead and stem
+char_center(100); top y101=top y3; x101=x100+2u;
+char_negate(100,101,102);
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+cmchar "Negated left-and-right arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"075",18u#,
+ v_center(if monospace:.6asc_height#+fi spread#+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis if monospace:+vround.3asc_height fi; lft x0=hround u;
+if monospace: x1+.5rule_thickness=hround(w-u) else: x1=.5w fi;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % left arrowhead and stem
+pos11(rule_thickness,90); pos12(rule_thickness,90); pos13(bar,0); pos14(bar,0);
+y10=y11=y12=math_axis if monospace:-vround.3asc_height fi;
+rt x10=hround(w-u);
+if monospace: x11-.5rule_thickness=hround u else: x11=.5w fi;
+y13-y10=y10-y14=.24asc_height+eps; x13=x14=x10-3u-eps;
+pos15(bar,angle(z14-z10)); z15l=z10; pos16(bar,angle(z13-z10)); z16l=z10;
+z19=.381966[.5[z13,z14],z10];
+numeric t; path p; p=z14l{z19-z14}..z16r;
+t=xpart(p intersectiontimes((0,y12l)--(w,y12l))); x12=xpart point t of p;
+filldraw z10..{z14-z19}z14r--subpath (0,t) of\\(z14l{z19-z14}..z16r)
+ --z12l---z11l..z11r---z12r--subpath (t,0) of\\(z13l{z19-z13}..z15r)
+ --z13r{z19-z13}..z10 & cycle; % right arrowhead and stem
+char_center(100); top y101=top y3; x101=x100+2u;
+char_negate(100,101,102);
+penlabels(0,1,2,3,4,5,6,9,10,11,12,13,14,15,16,19); endchar;
+
+cmchar "Negated double leftward arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"072",18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+lft x7=hround u-eps; x8=x7; x1=x2=w-x7;
+y1=y7; y2=y8; y1-y2=spread; .5[y1,y2]=math_axis;
+draw z1--z7; draw z2--z8; % bars
+pickup crisp.nib; lft x0=hround u-eps; y0=good.y math_axis;
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y3-y1=y2-y4=.24asc_height+eps; x3=x4=x0+6u+eps;
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+erase filldraw z0..{z3-z9}z3--(0,y3)
+ --(0,y4)--z4{z9-z4}..z0 & cycle; % erase excess
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y0)--(w,y0)));
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --subpath (t,0) of\\(z3r{z9-z3}..z5r)--z3l{z9-z3}..z0 & cycle; % arrowhead
+pickup rule.nib; x100=.5[x9,x1]; y100=y9; x101=x100+2u; top y101=top y3;
+y101-y100=y100-y102; x101-x100=x100-x102; draw z101--z102;
+penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "Negated double rightward arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"073",18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround u-eps; x2=x1; x7=x8=w-x1;
+y1=y7; y2=y8; y1-y2=spread; .5[y1,y2]=math_axis;
+draw z1--z7; draw z2--z8; % bars
+pickup crisp.nib; rt x0=hround(w-u)+eps; y0=good.y math_axis;
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y3-y1=y2-y4=.24asc_height+eps; x3=x4=x0-6u-eps;
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+erase filldraw z0..{z3-z9}z3--(w,y3)
+ --(w,y4)--z4{z9-z4}..z0 & cycle; % erase excess
+numeric t; path p; p=z4l{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y0)--(w,y0)));
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --subpath (t,0) of\\(z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle; % arrowhead
+pickup rule.nib; x100=.5[x9,x1]; y100=y9; x101=x100+2u; top y101=top y3;
+y101-y100=y100-y102; x101-x100=x100-x102; draw z101--z102;
+penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "Negated double left-and-right arrow";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"074",18u#,v_center(spread#+rule_thickness#));
+adjust_fit(if monospace: -u#,-u# else: 0,0 fi); pickup rule.nib;
+lft x7=hround u-eps; x8=x7; x1=x2=w-x7;
+y1=y7; y2=y8; y1-y2=spread; .5[y1,y2]=math_axis;
+draw z1--z7; draw z2--z8; % bars
+pickup crisp.nib; lft x0=hround u-o; y0=good.y math_axis;
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y3-y1=y2-y4=.24asc_height+eps; x3=x4=x0+5u+eps;
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+erase filldraw z0..{z3-z9}z3--(0,y3)
+ --(0,y4)--z4{z9-z4}..z0 & cycle; % erase excess at left
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((0,y0)--(w,y0)));
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % left arrowhead
+rt x10=hround(w-u)+o; y10=good.y math_axis;
+pos13(rule_thickness,0); pos14(rule_thickness,0);
+y13=y3; y14=y4; x13=x14=x10-5u-eps;
+pos15(rule_thickness,angle(z14-z10)); z15l=z10;
+pos16(rule_thickness,angle(z13-z10)); z16l=z10;
+z19=.381966[.5[z13,z14],z10];
+erase filldraw z10..{z13-z19}z13--(w,y13)
+ --(w,y14)--z14{z19-z14}..z10 & cycle; % erase excess at right
+numeric t; path p; p=z14l{z19-z14}..z16r;
+t=xpart(p intersectiontimes((0,y10)--(w,y10)));
+filldraw z10..{z14-z19}z14r--subpath (0,t) of\\(z14l{z19-z14}..z16r)
+ --subpath (t,0) of\\(z13l{z19-z13}..z15r)
+ --z13r{z19-z13}..z10 & cycle; % right arrowhead
+char_center(100); top y101=top y13; x101=x100+1.5u; char_negate(100,101,102);
+penlabels(0,1,2,3,4,5,6,7,8,9,10,13,14,15,16,19); endchar;
+
+cmchar "Times-division symbol";
+beginarithchar(oct"076");
+pickup rule.nib;
+x11=good.x(1/sqrt2)[.5w,rt u]; y11=good.y(1/sqrt2)[math_axis,bot h];
+x12=x13=w-x11; x14=x11; .5[y11,y12]=.5[y13,y14]=math_axis; y12=y14;
+draw z11--z12; draw z13--z14; % diagonals
+x3-.5dot_size=hround(.5w-.5dot_size); %center_on(x3);
+y3+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height]+.5dot_size);
+lft x1=hround u-eps; x2=w-x1; y1=y2=math_axis;
+draw z1--z2; % bar
+pos3(dot_size,0); pos4(dot_size,90); z3=z4;
+pos5(dot_size,0); pos6(dot_size,90); z5=z6; x5=x3; .5[y3,y5]=math_axis;
+dot(3,4); dot(5,6); % dots
+penlabels(1,2,3,4,5,6,11,12,13,14); endchar;
+
+cmchar "Null set symbol";
+beginarithchar(oct"077");
+pickup rule.nib;
+z0=(w/2,h/2); % center of circle
+rt x1-lft x0=hround(h/2 + o); y1=y0;
+numeric theta; theta=45;
+for i=2 upto 8: z[i]-z0=(z1-z0) rotated ((i-1)*theta); endfor
+draw z8...z1 for i=2 upto 8: ...z[i] endfor;
+lft x9=u; x10=w-x9; bot y9=bot y7; top y10=top y3; draw z9--z10;
+labels(range 0 thru 10); endchar;
+
+cmchar "Negated existential quantifier";
+beginchar(oct"100",10u#,asc_height#,0);
+italcorr asc_height#*slant;
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround u-eps; x2=x3=x5=w-x1; x4=x6-.25u=x1;
+top y1=h; bot y4=0; y2=y1; y5=y6=.5[y1,y3]; y3=y4;
+draw z1--z2--z3--z4; % upper bar, stem, lower bar
+draw z5--z6; % middle bar
+char_center(100); x101=w-3u; y101=y1+3u;
+char_negate(100,101,102);
+labels(1,2,3,4,5,6); endchar;
+
+charlist oct"133": oct"134";
+charlist oct"135": oct"136";
+
+cmchar"Wider than widest circumflex (hat) accent";
+beginchar(oct"133",34u#,1.1body_height#,0);
+adjust_fit(0,0);
+pickup crisp.nib;
+pos2(.7[vair,curve],90); top y2r=h+o; x2=.5w;
+x1=w-x3=good.x-eps; y1=y3=.45[x_height,y2];
+pos1(1.2hair,angle(z2-z1)+90); pos3(1.2hair,angle(z3-z2)+90);
+filldraw stroke z1e--z2e--z3e;
+penlabels(1,2,3);
+%big_hat;
+endchar;
+
+cmchar"Very Widest circumflex (hat) accent";
+beginchar(oct"134",42u#,1.1body_height#,0);
+adjust_fit(0,0);
+pickup crisp.nib;
+pos2(.7[vair,curve],90); top y2r=h+o; x2=.5w;
+x1=w-x3=good.x-eps; y1=y3=.45[x_height,y2];
+pos1(1.2hair,angle(z2-z1)+90); pos3(1.2hair,angle(z3-z2)+90);
+filldraw stroke z1e--z2e--z3e;
+penlabels(1,2,3);
+%big_hat;
+endchar;
+
+cmchar"Even wider tilde (squiggle) accent";
+beginchar(oct"135",34u#,1.1body_height#,0);
+%big_tilde;
+adjust_fit(0,0); pickup crisp.nib;
+numeric theta; theta=angle(1/6(w-vair),1/4(h-x_height));
+numeric mid_width; mid_width=.4[vair,stem];
+pos1(1.5vair,theta+80); pos2(2vair,theta+80);
+pos3(2vair,theta+80); pos4(1.5vair,theta+80);
+z2-z1=z4-z3 = (mid_width-crisp)*dir theta;
+lft x1r=w-rt x4l=0; top y4r=h;
+bot y1l=vround(bot y1l+min(.6[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;
+penlabels(1,2,3,4);
+endchar;
+
+cmchar"Very widest tilde (squiggle) accent";
+beginchar(oct"136",42u#,1.2body_height#,0);
+%big_tilde;
+adjust_fit(0,0); pickup crisp.nib;
+numeric theta; theta=angle(1/6(w-vair),1/4(h-x_height));
+numeric mid_width; mid_width=.4[vair,stem];
+pos1(1.5vair,theta+80); pos2(2vair,theta+80);
+pos3(2vair,theta+80); pos4(1.5vair,theta+80);
+z2-z1=z4-z3 = (mid_width-crisp)*dir theta;
+lft x1r=w-rt x4l=0; top y4r=h;
+bot y1l=vround(bot y1l+min(.6[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;
+penlabels(1,2,3,4);
+endchar;
+
+cmchar "Reversed turned F";
+beginchar(oct"140",10u#,asc_height#,0);
+italcorr asc_height#*slant;
+adjust_fit(0,0); pickup rule.nib;
+lft x4=hround u-eps; x2=x3=x5=w-x4; x6=x4+.27w;
+top y2=h; bot y4=0; y5=y6=.5[y2,y3]; y3=y4;
+draw z2--z3--z4; % upper bar, stem, lower bar
+draw z5--z6; % middle bar
+labels(2,3,4,5,6); endchar;
+
+cmchar "The Reversed inverted letter G";
+beginchar(oct"141",12u#,cap_height#,0);
+ italcorr cap_height#*slant-.5u#; adjust_fit(0,0);
+ pickup rule.nib;
+ rt x1=hround(w-1.35u); x2=x4=.5w+u;
+ lft x3=hround max(u,2u-.5cap_curve); rt x5=hround(w-1.2u);
+ top y1=vround .93h+o; top y2=h+o; y3=.5h;
+ bot y4=-o; bot y5=vround .07h-o;
+ draw z1...{left}z2...{down}z3{down}...{right}z4...{up}z5;
+ z7=z5; x0=x7; top y0=1+vround .35[bar_height,x_height];
+ draw z0--z7; % stem
+ z0=z9; y8=y9; lft x8=hround x4;
+ draw z8--z9; % bar
+ math_fit(-.3cap_height#*slant-.5u#,.5ic#);
+picture rvchar;
+ rvchar=currentpicture reflectedabout((.5w,0),(.5w,h));
+currentpicture:= rvchar;
+penlabels(0,1,1',2,3,4,5,6,7,8,9); endchar;
+
+cmchar "Upsidedown, uppercase Greek Omega";
+beginchar(oct"146",13u#,cap_height#,0);
+italcorr .75cap_height#*slant-.5u#;
+adjust_fit(0,0);
+pickup rule.nib; pos1(vair,90); pos2(vair,180);
+pos3(vair,180); pos4(vair,0); pos5(vair,0);
+x1=.5w; top y1r=h+o; lft x2r=hround u; y2=y4=2/3h; x4=w-x2;
+rt x3l=hround(1/3(w+.5u)+.5hair); bot y3=bot y5=0; x5=w-x3;
+filldraw stroke z3e{up}...{up}z2e
+ & pulled_super_arc.e(2,1)(.5superpull)
+ & pulled_super_arc.e(1,4)(.5superpull)
+ & z4e{down}...{down}z5e; % bowl
+numeric arm_thickness; path p; p=z3{up}...{up}z2;
+arm_thickness=Vround(if hefty:slab+2stem_corr else:.75[slab,cap_vstem] fi);
+pickup crisp.nib;
+pos6(arm_thickness,-90);
+pos7(arm_thickness,-180);
+bot y6r=0; x6=x3; lft x7r=hround .8u; y7=good.y(y6l+.5beak)+eps;
+(x,y)=p intersectionpoint((0,y6l)--(w,y6l)); x6l:=x;
+arm(6,7,a,.5beak_darkness,-1.2beak_jut); % left arm and beak
+pos8(arm_thickness,-90); pos9(fudged.hair,0);
+y8=y6; y9=y7; x8+x6=x9+x7=w; x8l:=w-x6l;
+arm(8,9,b,.5beak_darkness,1.2beak_jut); % right arm and beak
+%math_fit(0,.5ic#);
+picture v; v:=currentpicture;
+numeric t; t=h-d;
+v:=v reflectedabout((0,0),(w,0));
+currentpicture:=v shifted(0,aspect_ratio*cap_height);
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "The letter Edh (Old English rune, like thorn)";
+% adapted from cm partial differential sign, vol E, p 233.
+beginchar(oct"147",10u#,1.2asc_height#,0);
+italcorr .7asc_height#*slant+.5curve#-1.5u#;
+adjust_fit(0,0);
+numeric top_thickness,bot_thickness,side_thickness,pull;
+top_thickness=max(tiny.breadth,vround(slab-2vair_corr));
+bot_thickness=max(tiny.breadth,vround(slab-vair_corr));
+side_thickness=max(tiny.breadth,hround (slab-vair_corr));
+pull=min(.25,1.5superpull);
+pickup fine.nib; pos2(top_thickness,90);
+pos3(side_thickness,0); pos4(bot_thickness,-90);
+pos5(side_thickness,-180); pos6(vair,-270);
+lft x5r=w-rt x3r=hround max(.75u,1.5u-.5side_thickness);
+x4=x6+.1u=x2+u=.5w;
+top y2r=h+o; y3=.5[y2,y4]; bot y4r=-o;
+y5=.5[y4,y6]; top y6=vround 5/8h+o;
+path p; p=pulled_super_arc.l(3,4)(pull);
+numeric t; t=xpart(p intersectiontimes((x3r,y5)--(x4,y5)));
+pos7(thin_join,0); z7l=point t of p;
+(x,y6r)=whatever[z7l,z6l]; x6r:=max(x,.5[x5r,x6]);
+x2:=x5; x2l:=x2r:=x2;
+filldraw stroke pulled_super_arc.e(2,3)(pull)
+ & {{interim superness:=more_super; pulled_super_arc.e(3,4)(pull)}}
+ & {{less_tense; pulled_super_arc.e(4,5)(pull) & pulled_super_arc.e(5,6)(pull)}}
+ & z6e{right}...{direction t of p}z7e; % arc and bowl
+%pos1(hair,180); pos0(flare,180); % commenting out the arc and bulb
+%lft x0r=min(lft x2-eps,hround 1.2u);
+%y0=vround min(.85h-.5flare,.8h+.5flare)+o;
+%{{less_tense; bulb(2,1,0)}}; % arc and bulb
+%math_fit(-.3x_height#*slant+.5curve#-u#,ic#-u#);
+pickup pencircle xscaled 1.4rule_thickness yscaled .5rule_thickness;
+x10=x11=x5; x12=x13=w-x10; y10=y13;
+y10-y11=y12-y13=cap_stem; .5[y11,y10]=.5[y6,y2];
+%draw z10--z11--z12--z13; % cross piece
+draw z11--z12; % linear cross piece
+penlabels(2,3,4,5,6,7,10,11,12,,13); endchar;
+
+cmchar "Equal or similar symbol";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"150",14u#,v_center(2spread#+rule_thickness#));
+adjust_fit(0,0);
+pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+bot y1=bot y3=-d; top y2=top y4=y1+spread;
+draw z1{up}...z2{right}..{right}z3...{up}z4; % stroke
+pickup rule.nib;
+lft x5=hround u-eps; x6=w-x5; top y5=top y6=h;
+draw z5--z6;
+labels(1,2,3,4,5,6); endchar;
+
+
+%% parameters for Hebrew letters Beth, Gimel, Dalet
+numeric theta; theta=45;
+cmchar "Hebrew letter Beth";
+beginchar(oct"151", 12u#, asc_height#, 0);
+%currenttransform:=identity rotated -45 shifted (.75h, 0);
+adjust_fit(0,0);
+pickup rule.nib;
+top y0=1.1h; lft x0=u;
+pos1(cap_curve,90); x1=2.5u; y1r=h;
+pos2(cap_curve,90); x2=w-x1; y2r=y1r;
+rt x3=w-u; y2l-y3=y0-y1r;
+x4=x3;
+% now for the base.
+pos12(cap_curve/cosd theta, theta); pos11(cap_curve/cosd theta, theta);
+y11r=y12r=y4; y11l=0;
+x12=u; x11=w-x12;
+filldraw z0{down}..tension.8..z1l{right}..{right}z2l..{down}z3&
+z3{up}..tension.8..z2r{left}..{left}z1r..z0..cycle; % top
+pickup rule.nib; draw z3..z4; % down stroke at right of letter
+filldraw stroke z11e{left}..{left}z12e;
+penlabels(0,1,2,3,4,11,12);
+endchar;
+
+cmchar "Hebrew letter Gimel";
+beginchar(oct"152", 8u#, asc_height#, 0);
+%currenttransform:=identity rotated -45 shifted (.75h, 0);
+adjust_fit(0,0);
+pickup rule.nib;
+top y0=1.1h; lft x0=u;
+pos1(cap_curve,90); x1=2.5u; y1r=h;
+pos2(cap_curve,90); x2=w-x1+.5u; y2r=y1r;
+filldraw z0{down}..tension.8..z1l{right}..{right}z2l..tension.8..{left}z2r
+ ..{left}z1r..z0..cycle; % top slab
+z3=z2l;x4=x3+.2stem; y4=-o; x5=x4+.3stem; y5=y3c;
+x3a=x3b=x3c=x3; y3a=.8h; y3b=.5h; y3c=cap_curve;
+y5:=.5y5; % reset y5
+path p, q; p=(z3---z3c..z4); q=(z4{1,1}..z5..{-.005,1}z3); % vertical
+filldraw p&q&cycle;
+% now for the base.
+pos12(cap_curve/cosd theta, theta); pos11(cap_curve/cosd theta, theta);
+pos13(cap_curve/cosd theta, theta); y13=y12; x13=w;
+ % z13 is a dummy point for getting intersection
+y11r=y12r; y11l=0;
+x12=u;
+z10=p intersectionpoint (z12r--z13r); z11r=z10;
+filldraw stroke z11e{left}..{left}z12e;
+penlabels(0,1,2,3,3c,4,5,11,12);
+endchar;
+
+cmchar "Hebrew letter Daleth";
+beginchar(oct"153", 12u#, asc_height#, 0);
+%currenttransform:=identity rotated -45 shifted (.75h, 0);
+adjust_fit(0,0);
+pickup rule.nib;
+top y0=1.1h; lft x0=u;
+pos1(cap_curve,90); x1=2.5u; y1r=h;
+pos2(cap_curve,90); x2=w-x1+.5u; y2r=y1r;
+filldraw z0{down}..tension.8..z1l{right}..{right}z2l..tension.8..{left}z2r
+ ..{left}z1r..z0..cycle; % top slab
+z3=z2l;x4=x3+.2stem; y4=-o; x5=x4+.3stem; y5=y3c;
+x3a=x3b=x3c=x3; y3a=.8h; y3b=.5h; y3c=cap_curve;
+y5:=.5y5; % reset y5
+path p, q; p=(z3---z3c..z4); q=(z4{1,1}..z5..{-.005,1}z3); % vertical
+filldraw p&q&cycle;
+penlabels(0,1,2,3,3c,4,5);
+endchar;
+
+cmchar "Dotted less than sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"154",14u#,v_center(spread#+rule_thickness#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]=math_axis;
+draw z1--z2--z3; % diagonals
+y4=y2; x4=.75[x2, x1]; z5=z4;
+pos4(dot_size,0); pos5(dot_size,90); dot(4,5);
+labels(1,2,3,4,5); endchar;
+
+cmchar "Dotted greater than sign";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"155",14u#,v_center(spread#+rule_thickness#));
+italcorr math_axis#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]=math_axis;
+draw z1--z2--z3; % diagonals
+y4=y2; x4=.75[x2, x1]; z5=z4;
+pos4(dot_size,0); pos5(dot_size,90); dot(4,5);
+labels(1,2,3,4,5); endchar;
+
+cmchar "Times operator with left vertical";
+beginarithchar(oct"156"); pickup rule.nib;
+x1=good.x(1/sqrt2)[.5w,rt u]; y1=good.y(1/sqrt2)[math_axis,bot h];
+x2=x3=w-x1; x4=x1; .5[y1,y2]=.5[y3,y4]=math_axis; y2=y4;
+draw z1--z2; draw z3--z4; % diagonals
+draw z1--z4;
+labels(1,2,3,4); endchar;
+
+cmchar "Times operator with right vertical";
+beginarithchar(oct"157"); pickup rule.nib;
+x1=good.x(1/sqrt2)[.5w,rt u]; y1=good.y(1/sqrt2)[math_axis,bot h];
+x2=x3=w-x1; x4=x1; .5[y1,y2]=.5[y3,y4]=math_axis; y2=y4;
+draw z1--z2; draw z3--z4; % diagonals
+draw z2--z3;
+labels(1,2,3,4); endchar;
+
+cmchar "Cute vertical bar";
+beginchar(oct"160",4u#,6u#+math_axis#,6u#-math_axis#);
+italcorr math_axis#*slant - .5u#;
+adjust_fit(0,0); pickup rule.nib;
+x1=x2=hround(w/2); top y1=x_height; bot y2=-o;
+draw z1--z2;
+labels(1,2); endchar;
+
+cmchar "Two cute vertical bars";
+beginchar(oct"161",7u#,6u#+math_axis#,6u#-math_axis#);
+italcorr math_axis#*slant - .5u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x1=u; x2=x1; top y1=x_height; bot y2=-o;
+x3=w-x1; x4=x3; y3=y1; y4=y2;
+draw z1--z2; draw z3--z4;
+labels(1,2,3,4); endchar;
+
+cmchar "Integer division (reverse quotient) symbol";
+beginarithchar(oct"162");
+adjust_fit(0,0); pickup rule.nib;
+bot y1 =-d-eps; .5[y1,y2]=math_axis;
+lft x2 = 0+eps= x0; % rt x2=;
+z0-z2=(z1-z2) rotated -45;
+draw z1--z2;
+labels(1,2,3,4); endchar;
+
+
+cmchar "Thick similarity sign";% taken from symbol.mf
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"163",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0);
+pickup pencircle xscaled .8rule_thickness yscaled 1.87rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+bot y1=bot y3=-d; top y2=top y4=h;
+draw z1{up}...z2{right}..{right}z3...{up}z4; % stroke
+labels(1,2,3,4); endchar;
+
+
+cmchar "Approximate equality sign"; % taken fron symbol.mf
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(.54x_height#,.66x_height#);
+beginchar(oct"164",14u#,v_center(spread#'+spread#+rule_thickness#));
+adjust_fit(0,0);
+pickup pencircle xscaled .8rule_thickness yscaled 1.87rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+y1=y3; top y2=top y4=h; top y2-bot y1=spread';
+draw z1{up}...z2{right}..{right}z3...{up}z4; % upper stroke
+z1-z5=z2-z6=z3-z7=z4-z8=(0,spread);
+draw z5{up}...z6{right}..{right}z7...{up}z8; % lower stroke
+labels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "Approximate equality plus lower bar sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(.54x_height#,.66x_height#);
+beginchar(oct"165",14u#,v_center(2spread#'+spread#+rule_thickness#));
+adjust_fit(0,0);
+pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+y1=y3; top y2=top y4=h; top y2-bot y1=spread';
+draw z1{up}...z2{right}..{right}z3...{up}z4; % upper stroke
+z1-z5=z2-z6=z3-z7=z4-z8=(0,spread);
+draw z5{up}...z6{right}..{right}z7...{up}z8; % lower stroke
+y9=y10; x9=x1; x10=x8; y5-y9=spread';
+pickup rule.nib; draw z9--z10;
+labels(1,2,3,4,5,6,7,8,9,10); endchar;
+
+
+cmchar "Follows with approximate equality sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(.54 x_height#,.66 x_height#);
+spread#'':=spread#; spread'':=spread; % the spread of `$=$'
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"166",14u#,v_center(2spread#''+spread#+2rule_thickness#));
+adjust_fit(0,0);
+% now for follow sign, using z9 (top), z10 (vertex), & z11 (bot)
+pickup rule.nib;
+lft x9 = hround 1.5u-eps; x10=w-x9; x11=x9;
+y9-y11=spread; top y9=h; y10=.5[y11, y9];
+draw z9{u,-spread}...{right}z10;
+draw z11{u,spread}...{right}z10;
+pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+top y1=top y3=bot y11-spread''; top y2=top y4=bot y1+spread';
+z1-z5=z2-z6=z3-z7=z4-z8=(0,spread'');
+draw z1{up}...z2{right}..{right}z3...{up}z4; % upper stroke
+draw z5{up}...z6{right}..{right}z7...{up}z8; % lower stroke
+labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
+
+cmchar "Precedes with approximate equality sign";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(.54x_height#,.66x_height#);
+spread#'':=spread#; spread'':=spread; % the spread of `$=$'
+compute_spread(1.111 x_height#,1.333 x_height#);
+beginchar(oct"167",14u#,v_center(spread#+2spread#''+2rule_thickness#));
+adjust_fit(0,0);
+% now for precedes sign, using z9 (top), z10 (vertex), & z11 (bot)
+pickup rule.nib;
+x9=x11=w-x10; lft x10=hround 1.5u-eps;
+y9-y11=spread; top y9=h; y10=.5[y11, y9];
+draw z9{-u,-spread}...{left}z10;
+draw z11{-u,spread}...{left}z10;
+pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
+if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
+lft x1=hround u; x2=4u; x3=w-x2; x4=w-x1;
+top y3=top y1=bot y11-spread''; top y2=top y4=bot y1+spread';
+z1-z5=z2-z6=z3-z7=z4-z8=(0,spread'');
+draw z1{up}...z2{right}..{right}z3...{up}z4; % upper stroke
+draw z5{up}...z6{right}..{right}z7...{up}z8; % lower stroke
+labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
+
+cmchar "Arch with left downward arrowhead";
+beginchar(oct"170",18u#,x_height#,0);
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,0); pos2(rule_thickness,0);
+pos3(bar,90); pos4(bar,90);
+lft x1l=hround(.5w-.5rule_thickness); y1+.5rule_thickness=h;
+x0=x1=x2; bot y0=-d; x0-x3=x4-x0=3u+eps;
+y3=y4=y0+.24asc_height+eps;
+pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p;
+for i=0 upto 6: x[i]:=x[i]-5.5u; x[i]l:=x[i]l-5.5u; x[i]r:=x[i]r-5.5u; endfor
+x9:=x9-5.5u;
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2r---z2l--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead
+% arch represented by z2, z11 (top) z12
+rt x12=w-1u; bot y12=y0; top y11=h+o; x11=.5[x2, x12];
+pickup rule.nib; draw z2{up}...{right}z11...{down}z12;
+penlabels(0,1,2,3,4,5,6,9,11,12); endchar;
+
+cmchar "Arch with right downward arrowhead";
+beginchar(oct"171",18u#,x_height#,0);
+adjust_fit(0,0); pickup crisp.nib;
+pos1(rule_thickness,0); pos2(rule_thickness,0);
+pos3(bar,90); pos4(bar,90);
+lft x1l=hround(.5w-.5rule_thickness); y1+.5rule_thickness=h;
+x0=x1=x2; bot y0=-d; x0-x3=x4-x0=3u+eps;
+y3=y4=y0+.24asc_height+eps;
+pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t; path p; p=z4r{z9-z4}..z6r;
+t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p;
+for i=0 upto 6: x[i]:=x[i]+5.5u; x[i]l:=x[i]l+5.5u; x[i]r:=x[i]r+5.5u; endfor
+x9:=x9+5.5u;
+filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2r---z2l--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead
+% arch represented by z2, z11 (top) z12 (right)
+lft x12=u; bot y12=y0; top y11=h+o; x11=.5[x2, x12];
+pickup rule.nib; draw z2{up}...{left}z11...{down}z12;
+penlabels(0,1,2,3,4,5,6,9,11,12); endchar;
+
+cmchar "Stylized F";
+beginarithchar(oct"172");
+pickup pencircle xscaled 2.5rule_thickness yscaled .5rule_thickness;
+bot y1=-d; top y2=top y3=h+o; y4=y5=.5[y1, y2]; lft x1=u; x3=w-x1;
+numeric t; t=4; % t=slope of thck stem
+y2-y1=t*(x2-x1);
+z4=whatever[z1, z2]; x5-x4=.6(x3-x2);
+draw z1--z2--z3; draw z4--z5;
+penlabels(1,2,3,4,5); endchar;
+
+transform tt; tt:=currenttransform;
+currenttransform:=tt slanted 1/4;
+cmchar "Lowercase variation of Greek kappa";
+% will use same dimensions as standard Greek lowercase kappa
+% see vol E, p 155.
+beginchar(oct"173", 12u#, x_height#, 0);
+italcorr 1/3x_height#*slant+.5hair#+.5u#;
+adjust_fit(0,0); pickup rule.nib;
+pos1(stem,0); pos2(stem,0);x1l=hround(2u-.5stem); x2r=w-x1l;
+top y2+.3stem=h+oo; bot y1-.3stem=-oo;
+filldraw z1l---z2l...z2r---z1r...cycle;
+pickup crisp.nib;
+pos3(hair,180); x3=lft x1l; y3=3/4h; pos4(stem,90);
+top y4r+.15stem=h+oo; x4-x3=.05[x1,x2];
+pos4'(hair,0); y4'=y3; x4'=1/4[x1,x2];
+pos5(hair,90); z5=z1;
+filldraw super_arc.r(3,4)&super_arc.r(4,4')...{z1-z2}z5&z5{z2-z1}
+...super_arc.l(4',4)&super_arc.l(4,3)---cycle; % left arm
+pos8(hair,-90); pos6(hair,0);
+z8=z2; pos7(stem, -90); bot y7r-.15stem=-oo; x6-x7=x4-x3;
+x6=w-x3;
+pos7'(hair,180); y7'=y6; x7'=w-x4';
+y6=h-y3;
+filldraw super_arc.r(6,7)&super_arc.r(7,7')...{z2-z1}z8&z8{z1-z2}
+...super_arc.l(7',7)&super_arc.l(7,6)---cycle; % right arm
+%filldraw z8{z1-z2}..z7l...{up}z6r---z6l{-u,-2u}...z7r..{z2-z1}z8---cycle; %right arm
+penlabels(range 1 thru 8,4'); endchar;
+
+cmchar "H-bar symbol, slanted bar";
+beginchar(oct"175",9u#,1.25asc_height#,0);
+italcorr 1/3x_height#*slant+.5hair#+.5u#;
+adjust_fit(0,0); pickup tiny.nib;
+pos1(stem,0); pos2(stem,0); x1=x2;
+lft x1l=hround(1.5u-.5stem); top y1=h; y2-.5stem=-oo;
+filldraw circ_stroke z2e--z1e; % left stem
+sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif
+pickup fine.nib; x4+.5stem=hround(w-2.5u+.5stem);
+x5=x4-.25u; ital_arch(2,3,4); % arch
+x7=w; hook_out(5,6,7)(skewed); % closing hook
+filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem
+pickup light_rule.nib;
+x8=x.a2; y8=.7h; x9=x4l; y9=7/8h;
+draw z8--z9;
+math_fit(0,ic#); penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "H-bar symbol, vertical bar";
+beginchar(oct"176",9u#,1.20asc_height#,0);
+italcorr 1/3x_height#*slant+.5hair#+.5u#;
+adjust_fit(0,0); pickup tiny.nib;
+pos1(stem,0); pos2(stem,0); x1=x2;
+lft x1l=hround(1.5u-.5stem); top y1=h; y2-.5stem=-oo;
+filldraw circ_stroke z2e--z1e; % left stem
+sloped_serif.l(1,2,a,1/3,jut,serif_drop); % serif
+pickup fine.nib; x4+.5stem=hround(w-2.5u+.5stem);
+x5=x4-.25u; ital_arch(2,3,4); % arch
+x7=w; hook_out(5,6,7)(skewed); % closing hook
+filldraw stroke z4e{down}..{-u,-x_height}z5e; % right stem
+pickup light_rule.nib;
+x8=x.a2; y8=y9=.81h; rt x9=x4l; draw z8--z9;
+math_fit(0,ic#); penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "Reversed, reflected, lowercase Greek epsilon";
+beginchar(oct"177",8u#,x_height#,0);
+italcorr x_height#*slant+.5hair#-2u#;
+adjust_fit(0,0); pickup fine.nib;
+pos0(bar,90); pos1(bar,90); pos2(curve,180);
+pos3(vair,270); pos4(hair,300); pos6(bar,90); pos7(bar,90);
+x1=.5w+.5u; x0=x1+u; lft x2r=hround(1.5u-.5curve); x3=.5[x0,x1];
+x4r=good.x(w-u); x5=w+.5u; x6=x0; z7=z2l;
+top y0r=top y1r=h; y2=y5=y6=bar_height; bot y3r=-oo;
+path p; p=z3r{right}...{up}z5;
+numeric t; t=ypart(((x4r,y3r)--(x4r,y5))intersectiontimes p);
+y4r=ypart point t of p;
+filldraw circ_stroke z0e..pulled_arc.e(1,2) & pulled_arc.e(2,3)
+ ...z4e{direction t of p}; % arc
+filldraw circ_stroke z6e--z7e; % bar
+math_fit(-.3x_height#*slant+.5curve#-u#,ic#);
+picture v;
+v:=currentpicture;
+v:=v reflectedabout((0,h*aspect_ratio/2),(w,h*aspect_ratio/2));
+v:=v reflectedabout((w/2,-d),(w/2,h));
+currentpicture:=v shifted (2u,0);
+penlabels(0,1,2,3,4,5,6,7); endchar;
+
+currenttransform:=tt; %restore currenttrnasform
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lcmbsy8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lcmbsy8.mf
new file mode 100644
index 00000000000..8dbf935fb1b
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lcmbsy8.mf
@@ -0,0 +1,98 @@
+% Computer Modern Bold Math Symbols 8 point for slides
+% derived from the original by Knuth by Claudio Beccari (1999)
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LCMBSY"; font_size 8pt#;
+
+u#:=22/36pt#; % unit width
+width_adj#:=3/36pt#; % width adjustment for certain characters
+serif_fit#:=-12pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-15/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=200/36pt#; % height of numerals
+x_height#:=155/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=90/36pt#; % height of crossbar in lowercase e
+comma_depth#:=35/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=42/36pt#; % lowercase hairline breadth
+stem#:=42/36pt#; % lowercase stem breadth
+curve#:=42/36pt#; % lowercase curve breadth
+ess#:=40/36pt#; % breadth in middle of lowercase s
+flare#:=36/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=41/36pt#; % diameter of dots
+cap_hair#:=42/36pt#; % uppercase hairline breadth
+cap_stem#:=46/36pt#; % uppercase stem breadth
+cap_curve#:=46/36pt#; % uppercase curve breadth
+cap_ess#:=46/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=26/36pt#; % thickness of lines in math symbols
+
+dish#:=0/36pt#; % amount erased at top or bottom of serifs
+bracket#:=00/36pt#; % vertical distance from serif base to tangent
+jut#:=0/36pt#; % protrusion of lowercase serifs
+cap_jut#:=0/36pt#; % protrusion of uppercase serifs
+beak_jut#:=0/36pt#; % horizontal protrusion of beak serifs
+beak#:=0/36pt#; % vertical protrusion of beak serifs
+vair#:=22/36pt#; % vertical diameter of hairlines
+notch_cut#:=48/36pt#; % maximum breadth above or below notches
+bar#:=22/36pt#; % lowercase bar thickness
+slab#:=24/36pt#; % serif and arm thickness
+cap_bar#:=23/36pt#; % uppercase bar thickness
+cap_band#:=30/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=42/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0/36pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=1/36pt#; % for small refinements of hairline height
+apex_corr#:=15/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.85; % factor applied to weights of heavy characters
+math_spread:=.5; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/9; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=true; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=true; % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=6/8; % subscripts to 10pt will normally be in 7pt type
+fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rule_thickness#+36/36pt#+subs*desc_depth#, % num1
+ math_axis#+1.51rule_thickness#+24/36pt#, % num2
+ math_axis#+1.51rule_thickness#+38/36pt#, % num3
+ -(math_axis#-3.51rule_thickness#-subs*fig_height#-98/36pt#), % denom1
+ -(math_axis#-1.51rule_thickness#-subs*fig_height#-24/36pt#), % denom2
+ 7.49pt#-subs*asc_height#, % sup1
+ 6.99pt#-subs*asc_height#, % sup2
+ 82/36pt#, % sup3
+ 36/36pt#, % sub1
+ 72/36pt#, % sub2
+ subs*asc_height#-36/36pt#, % sup\_drop
+ 18/36pt#, % sub\_drop
+ 11.9pt#, % delim1
+ 9.1pt#, % delim2
+ math_axis#; % axis\_height
+
+boolean boldlsymbol; %In order to adjust math_spread when bold
+
+generate lmathsy % switch to the driver file
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lcmex8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lcmex8.mf
new file mode 100644
index 00000000000..0abf052518a
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lcmex8.mf
@@ -0,0 +1,92 @@
+
+% Computer Modern Math Extension for slides fonts at 8 point
+% Modification of original cmex9.mf by Knuth
+% Claudio Beccari (1999)
+
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LCMEX"; font_size 8pt#;
+
+u#:=20/36pt#; % unit width
+width_adj#:=0pt#; % width adjustment for certain characters
+serif_fit#:=-10/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-14/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=190/36pt#; % height of numerals
+x_height#:=150/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=80/36pt#; % height of crossbar in lowercase e
+comma_depth#:=40/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=0pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=23/36pt#; % lowercase hairline breadth
+stem#:=23/36pt#; % lowercase stem breadth
+curve#:=23/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=21/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=28/36pt#; % diameter of dots
+cap_hair#:=23/36pt#; % uppercase hairline breadth
+cap_stem#:=27/36pt#; % uppercase stem breadth
+cap_curve#:=27/36pt#; % uppercase curve breadth
+cap_ess#:=27/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=20/36pt#; % thickness of lines in math symbols
+
+dish#:=0pt#; % amount erased at top or bottom of serifs
+bracket#:=0pt#; % vertical distance from serif base to tangent
+jut#:=0pt#; % protrusion of lowercase serifs
+cap_jut#:=0pt#; % protrusion of uppercase serifs
+beak_jut#:=0pt#; % horizontal protrusion of beak serifs
+beak#:=0pt#; % vertical protrusion of beak serifs
+vair#:=18/36pt#; % vertical diameter of hairlines
+notch_cut#:=23/36pt#; % maximum breadth above or below notches
+bar#:=18/36pt#; % lowercase bar thickness
+slab#:=19/36pt#; % serif and arm thickness
+cap_bar#:=19/36pt#; % uppercase bar thickness
+cap_band#:=19/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=23/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=.5/36pt#; % for small refinements of hairline height
+apex_corr#:=4/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=0; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.95; % factor applied to weights of heavy characters
+math_spread:=0; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/10; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % 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?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+fontdimen 8: % parameters $\xi_8$ through $\xi_{13}$ will now be listed
+ rule_thickness#, % default\_rule\_thickness
+ 36/36pt#, % big\_op\_spacing1
+ 54/36pt#, % big\_op\_spacing2
+ 64.8/36pt#, % big\_op\_spacing3
+ 196/36pt#, % big\_op\_spacing4
+ 36/36pt#; % big\_op\_spacing5
+
+generate lmathex; % switch to the driver file
+
+endinput;
+
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lcmmi8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lcmmi8.mf
new file mode 100644
index 00000000000..7808f7b4c1c
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lcmmi8.mf
@@ -0,0 +1,78 @@
+% Computer Modern Math Italic slides font at 8 point
+% Modification of original cmmi8.mf by Knuth
+% Claudio Beccari (1999)
+
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LCMMI"; font_size 8pt#;
+
+u#:=20/36pt#; % unit width
+width_adj#:=2/36pt#; % width adjustment for certain characters
+serif_fit#:=-10/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-14/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=190/36pt#; % height of numerals
+x_height#:=150/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=80/36pt#; % height of crossbar in lowercase e
+comma_depth#:=40/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=23/36pt#; % lowercase hairline breadth
+stem#:=23/36pt#; % lowercase stem breadth
+curve#:=23/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=21/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=28/36pt#; % diameter of dots
+cap_hair#:=23/36pt#; % uppercase hairline breadth
+cap_stem#:=27/36pt#; % uppercase stem breadth
+cap_curve#:=27/36pt#; % uppercase curve breadth
+cap_ess#:=27/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=20/36pt#; % thickness of lines in math symbols
+
+dish#:=0pt#; % amount erased at top or bottom of serifs
+bracket#:=0pt#; % vertical distance from serif base to tangent
+jut#:=0pt#; % protrusion of lowercase serifs
+cap_jut#:=0pt#; % protrusion of uppercase serifs
+beak_jut#:=0pt#; % horizontal protrusion of beak serifs
+beak#:=0pt#; % vertical protrusion of beak serifs
+vair#:=18/36pt#; % vertical diameter of hairlines
+notch_cut#:=23/36pt#; % maximum breadth above or below notches
+bar#:=18/36pt#; % lowercase bar thickness
+slab#:=19/36pt#; % serif and arm thickness
+cap_bar#:=19/36pt#; % uppercase bar thickness
+cap_band#:=19/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=23/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=.5/36pt#; % for small refinements of hairline height
+apex_corr#:=4/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.95; % factor applied to weights of heavy characters
+math_spread:=.4; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/10; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % 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:=true; % should math-mode spacing be used?
+
+generate lmathit % switch to the driver file
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lcmmib8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lcmmib8.mf
new file mode 100644
index 00000000000..4db5273c180
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lcmmib8.mf
@@ -0,0 +1,76 @@
+% Computer Modern Math Italic Bold 8 pt for slides
+% derived from the original by Knuth by Claudio Beccari (1999)
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LCMMIB"; font_size 8pt#;
+
+u#:=22/36pt#; % unit width
+width_adj#:=3/36pt#; % width adjustment for certain characters
+serif_fit#:=-12/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-15/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=200/36pt#; % height of numerals
+x_height#:=155/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=90/36pt#; % height of crossbar in lowercase e
+comma_depth#:=35/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=42/36pt#; % lowercase hairline breadth
+stem#:=42/36pt#; % lowercase stem breadth
+curve#:=42/36pt#; % lowercase curve breadth
+ess#:=40/36pt#; % breadth in middle of lowercase s
+flare#:=36/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=41/36pt#; % diameter of dots
+cap_hair#:=42/36pt#; % uppercase hairline breadth
+cap_stem#:=46/36pt#; % uppercase stem breadth
+cap_curve#:=46/36pt#; % uppercase curve breadth
+cap_ess#:=46/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=26/36pt#; % thickness of lines in math symbols
+
+dish#:=0/36pt#; % amount erased at top or bottom of serifs
+bracket#:=0/36pt#; % vertical distance from serif base to tangent
+jut#:=0/36pt#; % protrusion of lowercase serifs
+cap_jut#:=0/36pt#; % protrusion of uppercase serifs
+beak_jut#:=0/36pt#; % horizontal protrusion of beak serifs
+beak#:=0/36pt#; % vertical protrusion of beak serifs
+vair#:=22/36pt#; % vertical diameter of hairlines
+notch_cut#:=48/36pt#; % maximum breadth above or below notches
+bar#:=22/36pt#; % lowercase bar thickness
+slab#:=24/36pt#; % serif and arm thickness
+cap_bar#:=23/36pt#; % uppercase bar thickness
+cap_band#:=30/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=42/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0/36pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=1/36pt#; % for small refinements of hairline height
+apex_corr#:=15/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.85; % factor applied to weights of heavy characters
+math_spread:=.5; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/9; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=true; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=true; % should math-mode spacing be used?
+
+generate lmathit % switch to the driver file
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lcmsy8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lcmsy8.mf
new file mode 100644
index 00000000000..9033e5e904d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lcmsy8.mf
@@ -0,0 +1,103 @@
+
+% Computer Modern Math Symbols slide font at 8 pt
+% Modification of original cmsy8.mf by Knuth
+% Claudio Beccari (1999)
+
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LCMSY";
+font_size 8pt#;
+
+u#:=20/36pt#; % unit width
+width_adj#:=0pt#; % width adjustment for certain characters
+serif_fit#:=-10/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-14/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=190/36pt#; % height of numerals
+x_height#:=150/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=80/36pt#; % height of crossbar in lowercase e
+comma_depth#:=40/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=23/36pt#; % lowercase hairline breadth
+stem#:=23/36pt#; % lowercase stem breadth
+curve#:=23/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=21/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=28/36pt#; % diameter of dots
+cap_hair#:=23/36pt#; % uppercase hairline breadth
+cap_stem#:=27/36pt#; % uppercase stem breadth
+cap_curve#:=27/36pt#; % uppercase curve breadth
+cap_ess#:=27/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=20/36pt#; % thickness of lines in math symbols
+
+dish#:=0pt#; % amount erased at top or bottom of serifs
+bracket#:=0pt#; % vertical distance from serif base to tangent
+jut#:=0pt#; % protrusion of lowercase serifs
+cap_jut#:=0pt#; % protrusion of uppercase serifs
+beak_jut#:=0pt#; % horizontal protrusion of beak serifs
+beak#:=0pt#; % vertical protrusion of beak serifs
+vair#:=18/36pt#; % vertical diameter of hairlines
+notch_cut#:=23/36pt#; % maximum breadth above or below notches
+bar#:=18/36pt#; % lowercase bar thickness
+slab#:=19/36pt#; % serif and arm thickness
+cap_bar#:=19/36pt#; % uppercase bar thickness
+cap_band#:=19/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=23/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=.5/36pt#; % for small refinements of hairline height
+apex_corr#:=4/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.95; % factor applied to weights of heavy characters
+math_spread:=.4; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/10; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % 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:=true; % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=6/8; % subscripts to 8pt will normally be in 6pt type
+rth#:=.4pt#; % assume that rules will come from cmex10
+fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+36/36pt#+subs*desc_depth#, % num1
+ math_axis#+1.51rth#+24/36pt#, % num2
+ math_axis#+1.51rth#+38/36pt#, % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-98/36pt#), % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-24/36pt#), % denom2
+ 7.49pt#-subs*asc_height#, % sup1
+ 6.99pt#-subs*asc_height#, % sup2
+ 82/36pt#, % sup3
+ 36/36pt#, % sub1
+ 72/36pt#, % sub2
+ subs*asc_height#-36/36pt#, % sup\_drop
+ 18/36pt#, % sub\_drop
+ 11.9pt#, % delim1
+ 9.1pt#, % delim2
+ math_axis#; % axis\_height
+
+generate lmathsy; % switch to the driver file
+
+endinput;
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/leclb8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/leclb8.mf
new file mode 100644
index 00000000000..5d5f8d5b349
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/leclb8.mf
@@ -0,0 +1,90 @@
+% leclb8.mf
+%
+% The original file eclb8.mf is
+% (c) Copyright 1996, 1997 J"org Knappen
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Content:
+%
+% Parameters for
+%
+% LaTeX European Computer Modern Sans Serif Quotation Bold
+% (SliTeX font with special capital I and special l with hook)
+%
+if unknown exbase: input exbase fi
+
+font_identifier:="LECSSQB";
+font_size 8pt#;
+u#:=22/36pt#;
+width_adj#:=3/36pt#;
+serif_fit#:= -12/36pt#;
+cap_serif_fit#:= -15/36pt#;
+letter_fit#:=0pt#;
+body_height#:=220/36pt#;
+asc_height#:=200/36pt#;
+cap_height#:=197/36pt#;
+fig_height#:=200/36pt#;
+x_height#:=155/36pt#;
+math_axis#:=80/36pt#;
+bar_height#:=85/36pt#;
+comma_depth#:=40/36pt#;
+desc_depth#:=40/36pt#;
+acc_height#:=60/36pt#;
+dot_height#:=45.8/36pt#;
+udot_height#:=48.2/36pt#;
+crisp#:=18/36pt#;
+tiny#:=18/36pt#;
+fine#:=8/36pt#;
+thin_join#:=8/36pt#;
+hair#:=42/36pt#;
+stem#:=42/36pt#;
+curve#:=42/36pt#;
+ess#:=40/36pt#;
+flare#:=36/36pt#;
+dot_size#:=41/36pt#;
+cap_hair#:=42/36pt#;
+cap_stem#:=46/36pt#;
+cap_curve#:=46/36pt#;
+cap_ess#:=46/36pt#;
+rule_thickness#:=26/36pt#;
+dish#:=0pt#;
+bracket#:=0pt#;
+jut#:=0pt#;
+cap_jut#:=0pt#;
+beak_jut#:=0pt#;
+beak#:=0pt#;
+vair#:=22/36pt#;
+notch_cut#:=48/36pt#;
+bar#:=22/36pt#;
+slab#:=24/36pt#;
+cap_bar#:=23/36pt#;
+cap_band#:=30/36pt#;
+cap_notch_cut#:=42/36pt#;
+serif_drop#:=0pt#;
+stem_corr#:=.5/36pt#;
+vair_corr#:=1/36pt#;
+apex_corr#:=15/36pt#;
+o#:=6/36pt#;
+apex_o#:=2/36pt#;
+slant:=0;
+fudge:=.85;
+math_spread:=0;
+superness:=1/sqrt 2;
+superpull:=1/9;
+beak_darkness:=0;
+square_dots:=true;
+hefty:=true;
+serifs:=false;
+monospace:=false;
+variant_g:=true;
+low_asterisk:=false;
+math_fitting:=false;
+slitex:=true;
+generate lexroman;
+endinput;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lecli8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lecli8.mf
new file mode 100644
index 00000000000..20db266f8de
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lecli8.mf
@@ -0,0 +1,91 @@
+% lecli8.mf
+%
+% The original file ecli8.mf is
+% (c) Copyright 1995, 1996, 1997 J"org Knappen
+% (c) Copyright 1990, 1992 Norbert Schwarz
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Content:
+%
+% Parameters for
+%
+% LaTeX European Computer Modern Sans Serif Quotation Inclined
+% (SliTeX font with special capital I and special l with hook)
+%
+if unknown exbase: input exbase fi
+
+font_identifier:="LLECSSQI";
+font_size 8pt#;
+u#:=20/36pt#;
+width_adj#:=2/36pt#;
+serif_fit#:= -10/36pt#;
+cap_serif_fit#:= -14/36pt#;
+letter_fit#:=0pt#;
+body_height#:=220/36pt#;
+asc_height#:=200/36pt#;
+cap_height#:=197/36pt#;
+fig_height#:=190/36pt#;
+x_height#:=150/36pt#;
+math_axis#:=80/36pt#;
+bar_height#:=80/36pt#;
+comma_depth#:=40/36pt#;
+desc_depth#:=40/36pt#;
+acc_height#:=60/36pt#;
+dot_height#:=45.8/36pt#;
+udot_height#:=48.2/36pt#;
+crisp#:=18/36pt#;
+tiny#:=18/36pt#;
+fine#:=8/36pt#;
+thin_join#:=8/36pt#;
+hair#:=23/36pt#;
+stem#:=23/36pt#;
+curve#:=23/36pt#;
+ess#:=23/36pt#;
+flare#:=21/36pt#;
+dot_size#:=28/36pt#;
+cap_hair#:=23/36pt#;
+cap_stem#:=27/36pt#;
+cap_curve#:=27/36pt#;
+cap_ess#:=27/36pt#;
+rule_thickness#:=.55555pt#;
+dish#:=0pt#;
+bracket#:=0pt#;
+jut#:=0pt#;
+cap_jut#:=0pt#;
+beak_jut#:=0pt#;
+beak#:=0pt#;
+vair#:=18/36pt#;
+notch_cut#:=23/36pt#;
+bar#:=18/36pt#;
+slab#:=19/36pt#;
+cap_bar#:=19/36pt#;
+cap_band#:=19/36pt#;
+cap_notch_cut#:=23/36pt#;
+serif_drop#:=0pt#;
+stem_corr#:=.5/36pt#;
+vair_corr#:=.5/36pt#;
+apex_corr#:=4/36pt#;
+o#:=6/36pt#;
+apex_o#:=2/36pt#;
+slant:=sind 12/cosd 12;
+fudge:=.95;
+math_spread:=0;
+superness:=1/sqrt 2;
+superpull:=1/10;
+beak_darkness:=0;
+square_dots:=true;
+hefty:=true;
+serifs:=false;
+monospace:=false;
+variant_g:=true;
+low_asterisk:=false;
+math_fitting:=false;
+slitex:=true;
+generate lexroman;
+endinput;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/leclo8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/leclo8.mf
new file mode 100644
index 00000000000..af645acd26e
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/leclo8.mf
@@ -0,0 +1,90 @@
+% leclo8.mf
+%
+% The original file eclo8.mf is
+% (c) Copyright 1996, 1997 J"org Knappen
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Content:
+%
+% Parameters for
+%
+% LaTeX European Computer Modern Sans Serif Quotation Bold Oblique
+% (SliTeX font with special capital I and special l with hook)
+%
+if unknown exbase: input exbase fi
+
+font_identifier:="LLECSSQBO";
+font_size 8pt#;
+u#:=22/36pt#;
+width_adj#:=3/36pt#;
+serif_fit#:= -12/36pt#;
+cap_serif_fit#:= -15/36pt#;
+letter_fit#:=0pt#;
+body_height#:=220/36pt#;
+asc_height#:=200/36pt#;
+cap_height#:=197/36pt#;
+fig_height#:=200/36pt#;
+x_height#:=155/36pt#;
+math_axis#:=80/36pt#;
+bar_height#:=85/36pt#;
+comma_depth#:=40/36pt#;
+desc_depth#:=40/36pt#;
+acc_height#:=60/36pt#;
+dot_height#:=45.8/36pt#;
+udot_height#:=48.2/36pt#;
+crisp#:=18/36pt#;
+tiny#:=18/36pt#;
+fine#:=8/36pt#;
+thin_join#:=8/36pt#;
+hair#:=42/36pt#;
+stem#:=42/36pt#;
+curve#:=42/36pt#;
+ess#:=40/36pt#;
+flare#:=36/36pt#;
+dot_size#:=41/36pt#;
+cap_hair#:=42/36pt#;
+cap_stem#:=46/36pt#;
+cap_curve#:=46/36pt#;
+cap_ess#:=46/36pt#;
+rule_thickness#:=26/36pt#;
+dish#:=0pt#;
+bracket#:=0pt#;
+jut#:=0pt#;
+cap_jut#:=0pt#;
+beak_jut#:=0pt#;
+beak#:=0pt#;
+vair#:=22/36pt#;
+notch_cut#:=48/36pt#;
+bar#:=22/36pt#;
+slab#:=24/36pt#;
+cap_bar#:=23/36pt#;
+cap_band#:=30/36pt#;
+cap_notch_cut#:=42/36pt#;
+serif_drop#:=0pt#;
+stem_corr#:=.5/36pt#;
+vair_corr#:=1/36pt#;
+apex_corr#:=15/36pt#;
+o#:=6/36pt#;
+apex_o#:=2/36pt#;
+slant:=sind 12/cosd 12;
+fudge:=.85;
+math_spread:=0;
+superness:=1/sqrt 2;
+superpull:=1/9;
+beak_darkness:=0;
+square_dots:=true;
+hefty:=true;
+serifs:=false;
+monospace:=false;
+variant_g:=true;
+low_asterisk:=false;
+math_fitting:=false;
+slitex:=true;
+generate lexroman;
+endinput;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/leclq8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/leclq8.mf
new file mode 100644
index 00000000000..dc6616ec58d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/leclq8.mf
@@ -0,0 +1,91 @@
+% leclq8.mf
+%
+% The original file eclq8.mf is
+% (c) Copyright 1995, 1996, 1997 J"org Knappen
+% (c) Copyright 1990, 1992 Norbert Schwarz
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Contents:
+%
+% Parameters for
+%
+% LaTeX European Computer Modern Sans Serif Quotation
+% (SliTeX font with special capital I and special l with hook)
+%
+if unknown exbase: input exbase fi
+
+font_identifier:="LLECSSQ";
+font_size 8pt#;
+u#:=20/36pt#;
+width_adj#:=2/36pt#;
+serif_fit#:= -10/36pt#;
+cap_serif_fit#:= -14/36pt#;
+letter_fit#:=0pt#;
+body_height#:=220/36pt#;
+asc_height#:=200/36pt#;
+cap_height#:=197/36pt#;
+fig_height#:=190/36pt#;
+x_height#:=150/36pt#;
+math_axis#:=80/36pt#;
+bar_height#:=80/36pt#;
+comma_depth#:=40/36pt#;
+desc_depth#:=40/36pt#;
+acc_height#:=60/36pt#;
+dot_height#:=45.8/36pt#;
+udot_height#:=48.2/36pt#;
+crisp#:=18/36pt#;
+tiny#:=18/36pt#;
+fine#:=8/36pt#;
+thin_join#:=8/36pt#;
+hair#:=23/36pt#;
+stem#:=23/36pt#;
+curve#:=23/36pt#;
+ess#:=23/36pt#;
+flare#:=21/36pt#;
+dot_size#:=28/36pt#;
+cap_hair#:=23/36pt#;
+cap_stem#:=27/36pt#;
+cap_curve#:=27/36pt#;
+cap_ess#:=27/36pt#;
+rule_thickness#:=.55555pt#;
+dish#:=0pt#;
+bracket#:=0pt#;
+jut#:=0pt#;
+cap_jut#:=0pt#;
+beak_jut#:=0pt#;
+beak#:=0pt#;
+vair#:=18/36pt#;
+notch_cut#:=23/36pt#;
+bar#:=18/36pt#;
+slab#:=19/36pt#;
+cap_bar#:=19/36pt#;
+cap_band#:=19/36pt#;
+cap_notch_cut#:=23/36pt#;
+serif_drop#:=0pt#;
+stem_corr#:=.5/36pt#;
+vair_corr#:=.5/36pt#;
+apex_corr#:=4/36pt#;
+o#:=6/36pt#;
+apex_o#:=2/36pt#;
+slant:=0;
+fudge:=.95;
+math_spread:=0;
+superness:=1/sqrt 2;
+superpull:=1/10;
+beak_darkness:=0;
+square_dots:=true;
+hefty:=true;
+serifs:=false;
+monospace:=false;
+variant_g:=true;
+low_asterisk:=false;
+math_fitting:=false;
+slitex:=true;
+generate lexroman;
+endinput;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lexroman.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lexroman.mf
new file mode 100644
index 00000000000..b26244399d5
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lexroman.mf
@@ -0,0 +1,83 @@
+% lexroman.mf
+%
+% The original file exroman.mf is
+% (c) Copyright 1995, 1996, 1997 J"org Knappen
+% (c) Copyright 1990, 1992 Norbert Schwarz
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Content:
+%
+% driver file, called by parameter files with lslides style fonts
+% Lslides fonts contain a modified version of gluph l; all glyphs
+% containig l (l, fl, ffl, polish l, etc.) are redefined here and
+% overright the origninal glyphs.
+%
+% dx r l west
+% i u east
+% : : :
+% : : west '3xx / east '2xx
+% : uppercase/lowercase
+% roman / italic
+
+version_check(1,0); % |version_check| was introduced in dc1.3
+
+input exaccess; % accessories for polish special letters
+input expseudo; % pseudoparameters
+
+mode_setup; font_setup; pseudo_setup;
+
+input exruwest;
+input exrlwest;
+input exrueast;
+input exrleast;
+%
+input exbraces; % ^ ~ cwm ( ) < | > [ ] \ { } _ - (177) space (040)
+input expunct; % < << > >> ! ` ' * + , . / = ; : (spanish !)
+%
+input exaccent; %
+input exsign; % zero for mille, " # $ % @ pound sign
+%
+input exrlig; % dotless i,j; letter ligatures ff fi fl ffi ffl
+%
+input exromp; % (roman punctuation) & ? (spanish ?)
+%
+input exrulett; % upper case (majuscules)
+input exrllett; % lower case (minuscules)
+input exrdigit; % roman digits
+%
+input lexslides; % lslides modifications
+%
+% Fontparameter
+%
+font_coding_scheme:="Extended TeX Font Encoding - Latin";
+boundarychar:=oct"027";
+font_slant slant;
+font_x_height x_height#;
+font_cap_height cap_height#;
+font_asc_height asc_height#;
+font_acc_cap_height (cap_height#+acc_height#);
+font_desc_depth desc_depth#;
+font_max_height (max(asc_height#,body_height#,
+ cap_height#+acc_height#));
+font_max_depth (max(desc_depth#,paren_depth#,the_ogonek_depth#));
+% font_digit_width % set inside the digits file
+% font_cap_stem % set after the programme of the capital I
+font_baselineskip max(1.2*designsize,body_height#+paren_depth#);
+
+if monospace: font_normal_space 9u#; % no stretching or shrinking
+ font_quad 18u#;
+ font_extra_space 9u#;
+ input exmligtb; % do the ligature programs for monospaced fonts
+else: font_normal_space 6u#+2letter_fit#;
+ font_normal_stretch 3u#; font_normal_shrink 2u#;
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 2u#;
+ input exrligtb; % do the ligature programs, not for monospaced fonts
+fi
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lexslides.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lexslides.mf
new file mode 100644
index 00000000000..62e3fbedfcb
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lexslides.mf
@@ -0,0 +1,203 @@
+% lexslides
+%
+% (c) Copyright 2002/07/13 Claudio Beccari
+%
+% Contains the redefinition of all slides glyphs containing l
+% so as to modify it with a hook.
+% The overall definitions are copied and modified from several
+% ex* Metafont files with the ec fonts, copyright by Schwarz and Knappen
+% in compliance with their copyright notice.
+% This file is being invoked by lexroman.mf, a modied version of
+% Schwarz and Knappen exroman.mf, wich in turn is being called by the
+% driver files of the various modified slides fonts.
+%
+
+
+
+ecchar "The letter l with hook for slides";% jk,cb
+beginchar("l",5u#,asc_height#,0);
+italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
+adjust_fit(0,u#);
+numeric shaved_stem; shaved_stem=hround(stem if hefty:-\\2stem_corr fi);
+pickup fine.nib; pos2(shaved_stem,180);pos3(shaved_stem,180);
+lft x2r=lft x3r=hround(2u-.5shaved_stem);
+y3=max(.5bar_height,2vair);
+ pickup tiny.nib; pos1(hround(shaved_stem-stem_corr),0);
+ rt x1r=fine.rt x2l; top y1=h;
+ penpos2'(x1r-x1l,0); x2'=x1; y2'=y2=x_height;
+ filldraw stroke z1e--z2'e; % upper terminal
+ pickup fine.nib; interim superness:=more_super;
+ pos4(vair',-90); bot y4r=-oo; rt x5r=hround(w-u)+1.6u;
+ pos5(vair,-75); top y5l=vround .2[top y4l,bar_height];
+ x5l:=good.x x5l; x4l=1/3[x3l,x5l]; x4r:=1/3[x3r,x5r]; y3l:=y3l+.2vair;
+ filldraw stroke z2e..super_arc.e(3,4); % stem and hook
+ path p; p=stroke z4e{right}..tension .9 and atleast 1..z5e; % terminal
+ if (xpart(z5l-precontrol 1 of p)<0) or (xpart(z5r-postcontrol 2 of p)<0):
+ filldraw stroke z4e{right}...{up}z5e;
+ else: filldraw p; fi
+penlabels(1,2,3,4,5); endchar;
+
+
+ecchar "The letter l with hook for slides with acute"; % jk,cb
+beginchar_twice(oct"250",5u#,asc_height#,0);
+italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
+adjust_fit(0,u#);
+numeric shaved_stem; shaved_stem=hround(stem if hefty:-\\2stem_corr fi);
+pickup fine.nib; pos2(shaved_stem,180);pos3(shaved_stem,180);
+lft x2r=lft x3r=hround(2u-.5shaved_stem);
+y3=max(.5bar_height,2vair);
+ pickup tiny.nib; pos1(hround(shaved_stem-stem_corr),0);
+ rt x1r=fine.rt x2l; top y1=h;
+ penpos2'(x1r-x1l,0); x2'=x1; y2'=y2=x_height;
+ filldraw stroke z1e--z2'e; % upper terminal
+ pickup fine.nib; interim superness:=more_super;
+ pos4(vair',-90); bot y4r=-oo; rt x5r=hround(w-u)+1.6u;
+ pos5(vair,-75); top y5l=vround .2[top y4l,bar_height];
+ x5l:=good.x x5l; x4l=1/3[x3l,x5l]; x4r:=1/3[x3r,x5r]; y3l:=y3l+.2vair;
+ filldraw stroke z2e..super_arc.e(3,4); % stem and hook
+ path p; p=stroke z4e{right}..tension .9 and atleast 1..z5e; % terminal
+ if (xpart(z5l-precontrol 1 of p)<0) or (xpart(z5r-postcontrol 2 of p)<0):
+ filldraw stroke z4e{right}...{up}z5e;
+ else: filldraw p; fi
+put_accent;
+repeat_once;
+penlabels(1,2,3,4,5); endchar;
+
+ecchar "The letter l with hook for slides with hachek"; % from csotherl.mf (csfonts),cb
+beginchar(oct"251",5u#,lc_acute_height#,0); l_width#:=5u#+2serif_fit#;
+italcorr lc_acute_height#*slant-serif_fit#+.5stem#-2u#;
+adjust_fit(0,u#);
+numeric shaved_stem; shaved_stem=hround(stem if hefty:-\\2stem_corr fi);
+pickup fine.nib; pos2(shaved_stem,180);pos3(shaved_stem,180);
+lft x2r=lft x3r=hround(2u-.5shaved_stem);
+y3=max(.5bar_height,2vair);
+ pickup tiny.nib; pos1(hround(shaved_stem-stem_corr),0);
+ rt x1r=fine.rt x2l; top y1=h;
+ penpos2'(x1r-x1l,0); x2'=x1; y2'=y2=x_height;
+ filldraw stroke z1e--z2'e; % upper terminal
+ pickup fine.nib; interim superness:=more_super;
+ pos4(vair',-90); bot y4r=-oo; rt x5r=hround(w-u)+1.6u;
+ pos5(vair,-75); top y5l=vround .2[top y4l,bar_height];
+ x5l:=good.x x5l; x4l=1/3[x3l,x5l]; x4r:=1/3[x3r,x5r]; y3l:=y3l+.2vair;
+ filldraw stroke z2e..super_arc.e(3,4); % stem and hook
+ path p; p=stroke z4e{right}..tension .9 and atleast 1..z5e; % terminal
+ if (xpart(z5l-precontrol 1 of p)<0) or (xpart(z5r-postcontrol 2 of p)<0):
+ filldraw stroke z4e{right}...{up}z5e;
+ else: filldraw p; fi
+penlabels(1,2,3,4,5);
+dtl_hachek(x1r+u+.5pdot_diam)(y1);
+endchar;
+
+ecchar "The letter crossed l with hook for slides"; % from pl_ml (plfonts),cb
+beginchar_twice(oct"252",5u#,asc_height#,0);
+ italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
+ charwd_:=charwd;
+numeric shaved_stem; shaved_stem=hround(stem if hefty:-\\2stem_corr fi);
+pickup fine.nib; pos2(shaved_stem,180);pos3(shaved_stem,180);
+lft x2r=lft x3r=hround(2u-.5shaved_stem);
+y3=max(.5bar_height,2vair);
+ pickup tiny.nib; pos1(hround(shaved_stem-stem_corr),0);
+ rt x1r=fine.rt x2l; top y1=h;
+ penpos2'(x1r-x1l,0); x2'=x1; y2'=y2=x_height;
+ filldraw stroke z1e--z2'e; % upper terminal
+ pickup fine.nib; interim superness:=more_super;
+ pos4(vair',-90); bot y4r=-oo; rt x5r=hround(w-u)+1.6u;
+ pos5(vair,-75); top y5l=vround .2[top y4l,bar_height];
+ x5l:=good.x x5l; x4l=1/3[x3l,x5l]; x4r:=1/3[x3r,x5r]; y3l:=y3l+.2vair;
+ filldraw stroke z2e..super_arc.e(3,4); % stem and hook
+ path p; p=stroke z4e{right}..tension .9 and atleast 1..z5e; % terminal
+ if (xpart(z5l-precontrol 1 of p)<0) or (xpart(z5r-postcontrol 2 of p)<0):
+ filldraw stroke z4e{right}...{up}z5e;
+ else: filldraw p; fi
+ penlabels(1,2,3,4,5);
+ numeric unbalance;
+ unbalance=1.1;
+ numeric cross_fit#;
+ cross_fit#=serif_fit#+if is_bold: 1.5 else: 1.25 fi\\ u#;
+ charwd:=charwd_;
+ adjust_fit(cross_fit#,u#);
+ numeric l_jut;
+l_jut=.5stem+ 1.7u;
+put_cross(l_jut,unbalance*l_jut);
+repeat_once;
+endchar;
+
+
+ecchar "The ligature fl";
+beginchar(oct"035",10u#+2letter_fit#,asc_height#,0);
+italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
+adjust_fit(0,u#);
+% This is the "f"
+pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem');
+pickup fine.nib; numeric bulb_diam, inner_jut;
+ pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.3u;
+f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif
+pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround .5u-1;
+pos3(bar,90); pos4(bar,90);
+rt x4= hround 5.3u;
+pickup crisp.nib; filldraw stroke z3e--z4e; % bar
+% This is the "l" drawn to the right of the "f"
+numeric shaved_stem; shaved_stem=hround(stem if hefty:-\\2stem_corr fi);
+pickup fine.nib; pos12(shaved_stem,180);pos13(shaved_stem,180);
+lft x12r=lft x13r=hround(rt x4 + if is_bold: .5shaved_stem else: 1.3u fi);
+y13=max(.5bar_height,2vair);
+ pickup tiny.nib; pos11(hround(shaved_stem-stem_corr),0);
+ rt x11r=fine.rt x12l; top y11=h;
+ penpos12'(x11r-x11l,0); x12'=x11; y12'=y12=x_height;
+ filldraw stroke z11e--z12'e; % upper terminal
+ pickup fine.nib; interim superness:=more_super;
+ pos14(vair',-90); bot y14r=-oo; rt x15r=hround(w-u)+1.6u;
+ pos15(vair,-75); top y15l=vround .2[top y14l,bar_height];
+ x15l:=good.x x15l; x14l=1/3[x13l,x15l]; x14r:=1/3[x13r,x15r]; y13l:=y13l+.2vair;
+ filldraw stroke z12e..super_arc.e(13,14); % stem and hook
+ path p; p=stroke z14e{right}..tension .9 and atleast 1..z15e; % terminal
+ if (xpart(z15l-precontrol 1 of p)<0) or (xpart(z15r-postcontrol 2 of p)<0):
+ filldraw stroke z14e{right}...{up}z15e;
+ else: filldraw p; fi
+penlabels(1,2,3,4,11,12,13,14,15); endchar;
+
+ecchar "The ligature ffl";
+beginchar(oct"037",15u#+4letter_fit#,asc_height#,0);
+italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
+adjust_fit(0,u#);
+% These are the two "f"
+pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem');
+pos11(stem',0); lft x11l=hround(.5w-.5stem');
+pickup fine.nib; numeric bulb_diam, inner_jut;
+if serifs: bulb_diam=hround .8[stem,flare];
+ pos2(bulb_diam,0); x2r=x11r-stem_corr;
+ pos12(bulb_diam,0); x12r=x21r-stem_corr;
+ y2+.5bulb_diam=.85[x_height,h+oo]; y12+.5bulb_diam=.9[x_height,h+oo];
+ sloped_serif.l(21,22,g,1/3,eps,max(serif_drop,oo)); % erase excess at top
+ if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut;
+ else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi
+else: pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.75u;
+ pos12(5/7[vair,flare],90); y12=y2; rt x12=hround(.5w+2.8u); fi
+f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif
+f_stroke(11,12,d,e,f,inner_jut,inner_jut); % middle ditto
+pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround.5u-1;
+pos3(bar,90); pos4(bar,90);
+rt x4=hround(.5w+2.8u);
+if hefty: pos3'(bar,90); x3'-x1=x4-x11; y3'=y3;
+ pos4'(bar,90); x4'=x11; y4'=y4;
+ filldraw stroke z3e--z3'e; filldraw stroke z4'e--z4e; % bars
+else: filldraw stroke z3e--z4e; fi % bar
+% This is the "l" drawn to the right of the second "f"
+numeric shaved_stem; shaved_stem=hround(stem if hefty:-\\2stem_corr fi);
+pickup fine.nib; pos22(shaved_stem,180);pos23(shaved_stem,180);
+lft x22r=lft x23r=hround(rt x4 + if is_bold: .5shaved_stem else: 1.3u fi);
+y23=max(.5bar_height,2vair);
+ pickup tiny.nib; pos21(hround(shaved_stem-stem_corr),0);
+ rt x21r=fine.rt x22l; top y21=h;
+ penpos22'(x21r-x21l,0); x22'=x21; y22'=y22=x_height;
+ filldraw stroke z21e--z22'e; % upper terminal
+ pickup fine.nib; interim superness:=more_super;
+ pos24(vair',-90); bot y24r=-oo; rt x25r=hround(w-u)+1.6u;
+ pos25(vair,-75); top y25l=vround .2[top y24l,bar_height];
+ x25l:=good.x x25l; x24l=1/3[x23l,x25l]; x24r:=1/3[x23r,x25r]; y23l:=y23l+.2vair;
+ filldraw stroke z22e..super_arc.e(23,24); % stem and hook
+ path p; p=stroke z24e{right}..tension .9 and atleast 1..z25e; % terminal
+ if (xpart(z25l-precontrol 1 of p)<0) or (xpart(z25r-postcontrol 2 of p)<0):
+ filldraw stroke z24e{right}...{up}z25e;
+ else: filldraw p; fi
+penlabels(1,2,3,4,11,12,21,22,23,24,25); endchar;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/llasy.mf b/Master/texmf-dist/fonts/source/public/lxfonts/llasy.mf
new file mode 100644
index 00000000000..a5a90dd0524
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/llasy.mf
@@ -0,0 +1,375 @@
+font_identifier:="LASY";
+font_coding_scheme:="LaTeX symbols";
+
+% Here we steal a bit from mathsy
+
+mode_setup; font_setup;
+autorounding:=0;
+
+font_slant slant; font_x_height x_height#;
+font_quad 18u# if not monospace:+4letter_fit# fi;
+slant:=mono_charic#:=0; % the remaining characters will not be slanted
+currenttransform:=identity yscaled aspect_ratio scaled granularity;
+
+cmchar "Leftward arrowhead";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"050",6u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+pos3(bar,0); pos4(bar,0);
+y0=math_axis; lft x0=hround u;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t[]; path p[];
+(t1,t2)=(z4r{z9-z4}..z6r) intersectiontimes (z3r{z9-z3}..z5r);
+z10=(z4r{z9-z4}..z6r) intersectionpoint (z3r{z9-z3}..z5r);
+filldraw z0..{z4-z9}z4l--subpath (0,t1) of (z4r{z9-z4}..z6r)
+ --z10--subpath (t2,0) of (z3r{z9-z3}..z5r)--z3l{z9-z3}..z0 & cycle;
+ % arrowhead
+penlabels(0,3,4,5,6,9,10); endchar;
+
+% This character is an alteration of the leftward arrow
+% The tip of the arrowhead rests one unit from left edge, same as left arrow
+% Changes:
+% 1) deletion of the stem ... points z1,z2 etc
+% The rest of the numbers stay the same, for any referencing
+% 2) new intersectinpoint z10 is introduced and path slightly altered
+% 3) name, code number and width changed, otherwise essentially the same
+
+
+
+cmchar "Rightward arrowhead";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"051",6u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+pos3(bar,0); pos4(bar,0);
+y0=math_axis; rt x0=hround(w-u);
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t[]; path p[];
+(t1,t2)=(z4l{z9-z4}..z6r) intersectiontimes (z3l{z9-z3}..z5r);
+z10=(z4l{z9-z4}..z6r) intersectionpoint (z3l{z9-z3}..z5r);
+filldraw z0..{z4-z9}z4r--subpath (0,t1) of (z4l{z9-z4}..z6r)
+ --z10--subpath (t2,0) of (z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle;
+ % arrowhead
+penlabels(0,3,4,5,6,9,10); endchar;
+
+% This character is an alteration of the rightward arrow
+% The tip of the arrowhead rests one unit from right edge, same as right arrow
+% Changes:
+% 1) deletion of the stem ... points z1,z2 etc
+% The rest of the numbers stay the same, for any referencing
+% 2) new intersectinpoint z10 is introduced and path slightly altered
+% 3) name, code number and width changed, otherwise essentially the same
+
+
+
+cmchar "Upward arrowhead";
+beginchar(oct"052",9u#,asc_height#,asc_depth#);
+italcorr .76asc_height#*slant+.5crisp#-u#;
+adjust_fit(0,0); pickup crisp.nib;
+pos3(bar,90); pos4(bar,90);
+top z0=(.5w,0); x0-x3=x4-x0=3u+eps;
+y3=y4=y0-.24asc_height-eps;
+pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t[]; path p[];
+(t1,t2)=(z4l{z9-z4}..z6r) intersectiontimes (z3l{z9-z3}..z5r);
+z10=(z4l{z9-z4}..z6r) intersectionpoint (z3l{z9-z3}..z5r);
+filldraw z0..{z4-z9}z4r--subpath (0,t1) of (z4l{z9-z4}..z6r)
+ --z10--subpath (t2,0) of (z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle;
+ % arrowhead
+penlabels(0,3,4,5,6,9,10); endchar;
+
+% This character is an alteration of the upward arrow
+% The tip of the arrowhead rests on the baseline for reference
+% Changes:
+% 1) deletion of the stem ... points z1,z2 etc
+% The rest of the numbers stay the same, for any referencing
+% 2) point z0 is moved down from the ascender line; the tip touches
+% the baseline
+% 3) new intersectinpoint z10 is introduced and path slightly altered
+% 4) name and code number changed, otherwise essentially the same
+
+
+
+cmchar "Downward arrowhead";
+beginchar(oct"053",9u#,asc_height#,asc_depth#);
+adjust_fit(0,0); pickup crisp.nib;
+pos3(bar,90); pos4(bar,90);
+bot z0=(.5w,0); x0-x3=x4-x0=3u+eps;
+y3=y4=y0+.24asc_height+eps;
+pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0]; % z9 iintroduces curve to arrowhead
+numeric t[]; path p[]; % rather direction{z9-z4} does this
+(t1,t2)=(z4r{z9-z4}..z6r) intersectiontimes (z3r{z9-z3}..z5r);
+z10=(z4r{z9-z4}..z6r) intersectionpoint (z3r{z9-z3}..z5r);
+filldraw z0..{z4-z9}z4l--subpath (0,t1) of (z4r{z9-z4}..z6r)
+ --z10--subpath (t2,0) of (z3r{z9-z3}..z5r)--z3l{z9-z3}..z0 & cycle;
+ % arrowhead
+penlabels(0,3,4,5,6,9,10); endchar;
+
+% This character is an alteration of the downward arrow
+% The tip of the arrowhead rests on the baseline for reference
+% Changes:
+% 1) deletion of the stem ... points z1,z2 etc
+% The rest of the numbers stay the same, for any referencing
+% 2) point z0 is moved up from the descender line to rest on the baseline
+% 3) new intersectinpoint z10 is introduced and path slightly altered
+% 4) name and code number changed, otherwise essentially the same
+
+
+
+cmchar "Square subset sign";
+compute_spread(5/4x_height#,3/2x_height#); % the spread of `$=$'
+beginchar(oct"074",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround(1.5u+oo); x1=x4=hround(w-1.5u)+eps; x3=x2;
+y1-y4=spread; y2=y1; y3=y4; y1=math_axis+.5spread;
+draw z1--z2--z3--z4; % bars and stem
+labels(1,2,3,4); endchar;
+
+% This character is an alteration of the square subset or equal to sign
+% Changes:
+% 1) changed position of y1 to be .5 of the spread above the math_axis
+% 2) got rid of lower bar (points z8/z9,etc) and the extra spread#' amount
+% which was used in calculations for the lower bar
+% 3) name and code number and height changed, otherwise essentially the same
+
+
+
+cmchar "Square superset sign";
+compute_spread(5/4x_height#,3/2x_height#); % the spread of `$=$'
+beginchar(oct"075",14u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=x4=hround 1.5u-eps; rt x2=hround(w-1.5u-oo); x3=x2;
+y1-y4=spread; y2=y1; y3=y4; y1=math_axis+.5spread;
+draw z1--z2--z3--z4; % bars and stem
+labels(1,2,3,4); endchar;
+
+% This character is an alteration of the square superset or equal to sign
+% Changes:
+% 1) changed position of y1 to be .5 of the spread above the math_axis
+% 2) got rid of lower bar (points z8/z9,etc) and the extra spread#' amount
+% which was used in calculations for the lower bar
+% 3) name and code number and height changed, otherwise essentially the same
+
+
+
+cmchar "Diamond";
+beginchar(oct"063",2(.85asc_height#-math_axis#)+2u#,v_center(7u#));
+italcorr math_axis#*slant;
+adjust_fit(0,0); pickup rule.nib;
+numeric a; a=.85asc_height-math_axis;
+x4=x8=good.x .5w; w:=r:=2x4; rt x2=w-lft x6=good.x(x4+a);
+y2=y6=.5[y4,y8]=.5cap_height; top y8=good.y(y2+a);
+draw z2--z4--z6--z8--cycle;
+labels(2,4,6,8); endchar;
+
+% This character is an alteration of the diamond operator
+% The four tips are equidistant from the center point (.5w,math_axis),
+% this distance being half of the cap height
+% and related to that in the square character
+% slightly less though, since it looks too big if the actually have same
+% length
+% Changes:
+% 1) To the amount a, which gives the distance of the tips from the center
+% 2) The width is related to the asc_height, so it changes with it
+% 3) name and code number and width changed, otherwise essentially the same
+% The numbers stay the same, for any referencing
+
+
+
+cmchar "Square";
+beginchar(oct"062",2.1math_axis#+4u#,v_center(7u#));
+italcorr math_axis#*slant;
+adjust_fit(0,0); pickup rule.nib;
+numeric a; a=round(2.1math_axis);
+x1=x4=good.x 2u; x2=x3=x1+a;
+y3=y4=.5(cap_height-a); y1=y2=y3+a;
+draw z1--z2--z3--z4--cycle;
+labels(1,2,3,4); endchar;
+
+% The size of this character is related to the diamond character, it's
+% sightly larger.
+% It is NOT the diamond character which has been rotated
+% Vertical alignment raised to .5 cap height from math-axis height
+% 2 units of sidebearing space on each side, since vertical lines usually
+% need a little more space, actually it's 2 units-.5rule.nib
+
+
+
+cmchar "Bowtie operator";
+beginchar(oct"061",13u#,v_center(7u#));
+italcorr math_axis#*slant;
+adjust_fit(0,0); pickup rule.nib;
+numeric a; a=round(1.1*math_axis);
+x1=x4=good.x 1.5u; x2=x3=w-x1;
+y1=y2=good.y(.5(cap_height-2a)); y3=y4=y1+2a;
+draw z1--z3--z2--z4--cycle;
+labels(1,2,3,4); endchar;
+
+% Arbitrary width given
+% Length of the bars at the edges are 2.2*math_axis length
+% and it's vertically aligned on the high, i.e., .5 cap height as opposed
+% to being aligned on the math axis
+
+
+
+cmchar "Upside-down Uppercase Greek Omega";
+beginchar(oct"060",13u#,cap_height#,0);
+italcorr cap_height#*slant-.35u#; %italcorr .75cap_height#*slant-.5u#;
+adjust_fit(0,0);
+pickup tiny.nib; pos1(vair,-90); pos2(cap_curve,0);
+pos3(vair,0); pos4(cap_curve,180); pos5(vair,180);
+x1=.5w; bot y1r=0-o; lft x4r=hround u; y2=y4=1/3h; x2=w-x4;
+rt x5l=hround(1/3(w+.5u)+.5hair); top y3=top y5=h; x3=w-x5;
+filldraw stroke z3e{down}...{down}z2e
+ & pulled_super_arc.e(2,1)(.5superpull)
+ & pulled_super_arc.e(1,4)(.5superpull)
+ & z4e{up}...{up}z5e; % bowl
+numeric arm_thickness; path p; p=z3{down}...{down}z2;
+arm_thickness=Vround(if hefty:slab+2stem_corr else:.75[slab,cap_vstem] fi);
+pickup crisp.nib; pos6(arm_thickness,90); pos7(fudged.hair,0);
+top y6r=h; x6=x3; rt x7r=hround (w-.8u); y7=good.y(y6l-.5beak)+eps;
+%(x,y)=p intersectionpoint((0,y6l)--(w+h,y6l)); x6l:=x;
+arm(6,7,a,0,.5u); % right arm and beak
+pos8(arm_thickness,90); pos9(fudged.hair,180);
+y8=y6; y9=y7; x8+x6=x9+x7=w; x8l:=w-x6l;
+arm(8,9,b,0,-.5u); % left arm and beak
+math_fit(0,.5ic#); penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+% This character is taken from the Upper Case Omega of cmr
+% Directions and reference points are reversed and flipped
+% pos angles are flipped by 180 degrees
+% vertical values are reversed, up/down directions in the
+% filldraw stroke are reversed
+% left strokes same, but changes reference points
+% italic correction based on furthest pont of character , so made it
+% full cap_height minus amount for the beak, taken from the cap XI
+% I suppose a transformation of paths would have worked also, but this
+% way, limits are maintained better, i think
+% w+h instead of just w in intersection to make sure paths do intersect
+
+
+
+cmchar "Leads to character extension";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"072",12u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+numeric a; a=round(.45math_axis);
+y11=y13=y15=math_axis; y12-a=y14+a=good.y math_axis;
+x11=0; x15=w; x13=.5[x11,x15]; x12=.5[x11,x13]; x14=.5[x13,x15];
+path p; p=z12{right}...z13...z14{right};
+draw z11{dir(-angle direction 1 of p)}...z12{right}...z13...
+ z14{right}...z15{dir(-angle direction 1 of p)};
+penlabels(11,12,13,14,15); endchar;
+
+% This character is an extension to fit with the Leads to character with
+% arrowhead
+% This character goes from edge to edge and a series of these can be linked
+% as desired.
+% It has 2/3 the width of that character, and if this relation is kept, the
+% the curves should all match
+
+
+
+cmchar "Leads to character with arrowhead";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(oct"073",18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup crisp.nib;
+pos3(bar,0); pos4(bar,0);
+y0=math_axis; rt x0=hround(w-u);
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+numeric t[]; path p[];
+(t1,t2)=(z4l{z9-z4}..z6r) intersectiontimes (z3l{z9-z3}..z5r);
+z10=(z4l{z9-z4}..z6r) intersectionpoint (z3l{z9-z3}..z5r);
+filldraw z0..{z4-z9}z4r--subpath (0,t1) of (z4l{z9-z4}..z6r)
+ --z10--subpath (t2,0) of (z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle;
+ % arrowhead
+pickup rule.nib;
+numeric a; a=round(.45math_axis);
+y11=y13=y15=y16=y0; y12-a=y14+a=good.y math_axis;
+x11=0; x15=2/3w; z17=lft z10;
+x13=.5[x11,x15]; x12=.5[x11,x13]; x14=.5[x13,x15]; x16=.3[x15,x0];
+path p; p=z12{right}...z13...z14{right};
+draw z11{dir(-angle direction 1 of p)}...
+ z12{right}...z13...z14{right}...z16{right}...z17;
+penlabels(0,3,4,5,6,9,10,11,12,13,14,15,16); endchar;
+
+% This character uses the rightward arrow arrowhead
+% The width is the same as that of the regular arrow
+% An extension character can be added for longer squiggles
+
+
+cmchar "LASY \lhd triangle";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"001",14u#,v_center(spread#+rule_thickness#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]=math_axis;
+draw z1--z2--z3--cycle; % triangle
+labels(1,2,3); endchar;
+
+% taken directly from CMR "less than" character
+% the path was closed to make a triangle
+
+
+
+cmchar "LASY \unlhd triangle";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"002",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x2=hround 1.5u-eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3--cycle; % triangle
+x8=x1; x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % bar
+labels(1,2,3,8,9); endchar;
+
+% taken directly from CMR "less than or equal to sign"
+% the "less than" path was closed to make a triangle
+
+
+
+cmchar "LASY \rhd triangle";
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"003",14u#,v_center(spread#+rule_thickness#));
+italcorr math_axis#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+rt x2=hround(w-1.5u)+eps; x1=x3=w-x2;
+y1-y3=spread; y2=.5[y1,y3]=math_axis;
+draw z1--z2--z3--cycle; % triangle
+labels(1,2,3); endchar;
+
+% taken directly from CMR "greater than" character
+% the path was closed to make a triangle
+
+
+
+cmchar "LASY \unrhd triangle";
+compute_spread(.45x_height#,.55x_height#);
+spread#':=spread#; spread':=spread; % the spread of `$=$'
+compute_spread(5/4x_height#,3/2x_height#);
+beginchar(oct"004",14u#,v_center(spread#'+spread#+rule_thickness#));
+italcorr h#*slant-u#;
+adjust_fit(0,0); pickup rule.nib;
+lft x1=hround 1.5u-eps; x2=w-x1; x3=x1;
+y1-y3=spread; y2=.5[y1,y3]; top y1=h;
+draw z1--z2--z3--cycle; % triangle
+x8=x1; x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % bar
+labels(1,2,3,8,9); endchar;
+
+% taken directly from CMR "greater than or equal to sign"
+% the "greater than" path was closed to make a triangle
+
+
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/llasy8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/llasy8.mf
new file mode 100644
index 00000000000..23f91e918f1
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/llasy8.mf
@@ -0,0 +1,9 @@
+% Use parameter settings from lcmsy8
+% Modification of original lasy8.mf by Lamport (?)
+% Claudio Beccari (1999)
+if unknown cmbase: input cmbase fi
+def generate suffix t= enddef;
+input lcmsy8;
+let _bye=bye;
+def bye = font_identifier:="LLASY"; _bye enddef;
+input llasy;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/llasyb8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/llasyb8.mf
new file mode 100644
index 00000000000..9aa45946bf6
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/llasyb8.mf
@@ -0,0 +1,10 @@
+% Use parameter settings from lcmbsy8
+% Imitation of original lasy8.mf by Lamport (?)
+% Claudio Beccari (1999)
+if unknown cmbase: input cmbase fi
+def generate suffix t= enddef;
+input lcmbsy8;
+let _bye=bye;
+def bye = font_identifier:="LLASBY"; _bye enddef;
+input llasy;
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/llcmss8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/llcmss8.mf
new file mode 100644
index 00000000000..3e2c238b48c
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/llcmss8.mf
@@ -0,0 +1,79 @@
+% Slides Sans Serif 8 pt font, derived from the one that
+% Pierre A. MacKay, (19 August, 1986) derived from
+% Computer Modern Sans Serif Quotation Style
+%
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LLCMSS"; font_size 8pt#;
+
+u#:=20/36pt#; % unit width
+width_adj#:=2/36pt#; % width adjustment for certain characters
+serif_fit#:=-10/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-14/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=190/36pt#; % height of numerals
+x_height#:=150/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=80/36pt#; % height of crossbar in lowercase e
+comma_depth#:=40/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=23/36pt#; % lowercase hairline breadth
+stem#:=23/36pt#; % lowercase stem breadth
+curve#:=23/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=21/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=28/36pt#; % diameter of dots
+cap_hair#:=23/36pt#; % uppercase hairline breadth
+cap_stem#:=27/36pt#; % uppercase stem breadth
+cap_curve#:=27/36pt#; % uppercase curve breadth
+cap_ess#:=27/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=20/36pt#; % thickness of lines in math symbols
+
+dish#:=0pt#; % amount erased at top or bottom of serifs
+bracket#:=0pt#; % vertical distance from serif base to tangent
+jut#:=0pt#; % protrusion of lowercase serifs
+cap_jut#:=0pt#; % protrusion of uppercase serifs
+beak_jut#:=0pt#; % horizontal protrusion of beak serifs
+beak#:=0pt#; % vertical protrusion of beak serifs
+vair#:=18/36pt#; % vertical diameter of hairlines
+notch_cut#:=23/36pt#; % maximum breadth above or below notches
+bar#:=18/36pt#; % lowercase bar thickness
+slab#:=19/36pt#; % serif and arm thickness
+cap_bar#:=19/36pt#; % uppercase bar thickness
+cap_band#:=19/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=23/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=.5/36pt#; % for small refinements of hairline height
+apex_corr#:=4/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=0; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.95; % factor applied to weights of heavy characters
+math_spread:=0; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/10; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=true; % 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?
+
+generate lroman % switch to the driver file for slides
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/llcmssb8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/llcmssb8.mf
new file mode 100644
index 00000000000..fa1c4122571
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/llcmssb8.mf
@@ -0,0 +1,79 @@
+% Slides Sans-Serif bold 8 pt font, derived from the one
+% Pierre A. MacKay, 19 August, 1986 derived from
+% Computer Modern Sans Serif Quotation Style
+% and modified by Claudio Beccari (1999)
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LLCMSSB"; font_size 8pt#;
+
+u#:=22/36pt#; % unit width
+width_adj#:=3/36pt#; % width adjustment for certain characters
+serif_fit#:=-12/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-15/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=200/36pt#; % height of numerals
+x_height#:=155/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=90/36pt#; % height of crossbar in lowercase e
+comma_depth#:=35/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=42/36pt#; % lowercase hairline breadth
+stem#:=42/36pt#; % lowercase stem breadth
+curve#:=42/36pt#; % lowercase curve breadth
+ess#:=40/36pt#; % breadth in middle of lowercase s
+flare#:=36/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=41/36pt#; % diameter of dots
+cap_hair#:=42/36pt#; % uppercase hairline breadth
+cap_stem#:=46/36pt#; % uppercase stem breadth
+cap_curve#:=46/36pt#; % uppercase curve breadth
+cap_ess#:=46/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=26/36pt#; % thickness of lines in math symbols
+
+dish#:=0pt#; % amount erased at top or bottom of serifs
+bracket#:=0pt#; % vertical distance from serif base to tangent
+jut#:=0pt#; % protrusion of lowercase serifs
+cap_jut#:=0pt#; % protrusion of uppercase serifs
+beak_jut#:=0pt#; % horizontal protrusion of beak serifs
+beak#:=0pt#; % vertical protrusion of beak serifs
+vair#:=22/36pt#; % vertical diameter of hairlines
+notch_cut#:=48/36pt#; % maximum breadth above or below notches
+bar#:=22/36pt#; % lowercase bar thickness
+slab#:=24/36pt#; % serif and arm thickness
+cap_bar#:=23/36pt#; % uppercase bar thickness
+cap_band#:=30/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=42/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=1/36pt#; % for small refinements of hairline height
+apex_corr#:=15/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=0; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.85; % factor applied to weights of heavy characters
+math_spread:=0.5; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/9; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=true; % 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?
+
+generate lroman % switch to the driver file for SliTeX
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/llcmssi8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/llcmssi8.mf
new file mode 100644
index 00000000000..a14cf5ec291
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/llcmssi8.mf
@@ -0,0 +1,79 @@
+% Slides Sans-Serif Slanted 8 pt, derived from the one that
+% Pierre A. MacKay, 19 August, 1986 derived from
+% Computer Modern Sans Serif Quotation Style Slanted
+% and modified by Claudio Beccari (1999)
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LLCMSSI"; font_size 8pt#;
+
+u#:=20/36pt#; % unit width
+width_adj#:=2/36pt#; % width adjustment for certain characters
+serif_fit#:=-10/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-14/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=190/36pt#; % height of numerals
+x_height#:=150/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=80/36pt#; % height of crossbar in lowercase e
+comma_depth#:=40/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=23/36pt#; % lowercase hairline breadth
+stem#:=23/36pt#; % lowercase stem breadth
+curve#:=23/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=21/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=28/36pt#; % diameter of dots
+cap_hair#:=23/36pt#; % uppercase hairline breadth
+cap_stem#:=27/36pt#; % uppercase stem breadth
+cap_curve#:=27/36pt#; % uppercase curve breadth
+cap_ess#:=27/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=20/36pt#; % thickness of lines in math symbols
+
+dish#:=0pt#; % amount erased at top or bottom of serifs
+bracket#:=0pt#; % vertical distance from serif base to tangent
+jut#:=0pt#; % protrusion of lowercase serifs
+cap_jut#:=0pt#; % protrusion of uppercase serifs
+beak_jut#:=0pt#; % horizontal protrusion of beak serifs
+beak#:=0pt#; % vertical protrusion of beak serifs
+vair#:=18/36pt#; % vertical diameter of hairlines
+notch_cut#:=23/36pt#; % maximum breadth above or below notches
+bar#:=18/36pt#; % lowercase bar thickness
+slab#:=19/36pt#; % serif and arm thickness
+cap_bar#:=19/36pt#; % uppercase bar thickness
+cap_band#:=19/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=23/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=.5/36pt#; % for small refinements of hairline height
+apex_corr#:=4/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=sind 12/cosd 12; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.95; % factor applied to weights of heavy characters
+math_spread:=0; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/10; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=true; % 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?
+
+generate lroman % switch to the SliTeX driver file.
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/llcmsso8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/llcmsso8.mf
new file mode 100644
index 00000000000..6c2f0afdfef
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/llcmsso8.mf
@@ -0,0 +1,79 @@
+% Slides Sans-Serif bold 8 pt font, derived from the one
+% Pierre A. MacKay, 19 August, 1986 derived from
+% Computer Modern Sans Serif Quotation Style
+% and modified by Claudio Beccari (1999)
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LLCMSSB"; font_size 8pt#;
+
+u#:=22/36pt#; % unit width
+width_adj#:=3/36pt#; % width adjustment for certain characters
+serif_fit#:=-12/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-15/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=200/36pt#; % height of numerals
+x_height#:=155/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=90/36pt#; % height of crossbar in lowercase e
+comma_depth#:=35/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=42/36pt#; % lowercase hairline breadth
+stem#:=42/36pt#; % lowercase stem breadth
+curve#:=42/36pt#; % lowercase curve breadth
+ess#:=40/36pt#; % breadth in middle of lowercase s
+flare#:=36/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=41/36pt#; % diameter of dots
+cap_hair#:=42/36pt#; % uppercase hairline breadth
+cap_stem#:=46/36pt#; % uppercase stem breadth
+cap_curve#:=46/36pt#; % uppercase curve breadth
+cap_ess#:=46/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=26/36pt#; % thickness of lines in math symbols
+
+dish#:=0pt#; % amount erased at top or bottom of serifs
+bracket#:=0pt#; % vertical distance from serif base to tangent
+jut#:=0pt#; % protrusion of lowercase serifs
+cap_jut#:=0pt#; % protrusion of uppercase serifs
+beak_jut#:=0pt#; % horizontal protrusion of beak serifs
+beak#:=0pt#; % vertical protrusion of beak serifs
+vair#:=22/36pt#; % vertical diameter of hairlines
+notch_cut#:=48/36pt#; % maximum breadth above or below notches
+bar#:=22/36pt#; % lowercase bar thickness
+slab#:=24/36pt#; % serif and arm thickness
+cap_bar#:=23/36pt#; % uppercase bar thickness
+cap_band#:=30/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=42/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=1/36pt#; % for small refinements of hairline height
+apex_corr#:=15/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=sind 12/cosd 12; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.85; % factor applied to weights of heavy characters
+math_spread:=0.5; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/9; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=true; % 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?
+
+generate lroman % switch to the driver file for SliTeX
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lmathex.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lmathex.mf
new file mode 100644
index 00000000000..a3641feac45
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lmathex.mf
@@ -0,0 +1,315 @@
+
+% The Computer Modern Math-Extension family (by D. E. Knuth, 1979--1985)
+% Modification of original mathex.mf
+% by Claudio Beccari (1999)
+
+font_coding_scheme:="TeX math extension";
+mode_setup; font_setup;
+
+%correction to heavy_rule_thickness, otherwise the curly braces turn out too thick
+%heavy_rule_thickness:=ceiling(3rule_thickness#*hppp); %cmbase definition
+heavy_rule_thickness:=rule_thickness+dw;
+heavy_rule_thickness#:=heavy_rule_thickness/hppp;
+
+
+% Input modified files for large delimiters, operators and accents
+
+input lbigdel; % large delimiters
+input lbigop; % large operators
+input lbigacc; % large accents
+
+
+% Corrections for characters 74 to 79 that otherwise would turn out oval
+
+cmchar "\textstyle circle-dot operator";
+beginchar(oct"112",20u#,0,18u#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+circle_points; draw_circle; % circle
+%fill fullcircle scaled(bold+4dw+eps) shifted(.5[z4,z8]); % dot
+fill fullcircle scaled(2stem) shifted(.5[z4,z8]); % dot
+labels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "\displaystyle circle-dot operator";
+beginchar(oct"113",27.2u#,0,25.2u#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+circle_points; draw_circle; % circle
+%fill fullcircle scaled(bold+6dw+eps) shifted(.5[z4,z8]); % dot
+fill fullcircle scaled(2curve) shifted(.5[z4,z8]); % dot
+labels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "\textstyle circle-plus operator";
+beginchar(oct"114",20u#,0,18u#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+circle_points; draw_circle; % circle
+draw z2--z6; draw z4--z8; % plus
+labels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "\displaystyle circle-plus operator";
+beginchar(oct"115",27.2u#,0,25.2u#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+circle_points; draw_circle; % circle
+draw z2--z6; draw z4--z8; % plus
+labels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "\textstyle circle-times operator";
+beginchar(oct"116",20u#,0,18u#);
+adjust_fit(0,0); pickup pencircle scaled stem;
+lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+circle_points; draw_circle; % circle
+draw z1--z5; draw z3--z7; % times
+labels(1,2,3,4,5,6,7,8); endchar;
+
+cmchar "\displaystyle circle-times operator";
+beginchar(oct"117",27.2u#,0,25.2u#); padded 1/6dh#;
+adjust_fit(0,0); pickup pencircle scaled curve;
+lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
+circle_points; draw_circle; % circle
+draw z1--z5; draw z3--z7; % times
+labels(1,2,3,4,5,6,7,8); endchar;
+
+% Corrections for \prod sign that without serifs turned out
+% as an inverted open box
+
+cmchar "\textstyle product sign";
+beginchar(oct"121",17u#,0,10/6dh#);
+adjust_fit(0,0); pickup crisp.nib;
+numeric heavy_stem,light_stem;
+heavy_stem=hround(bold+dw); light_stem=rule_thickness;
+pos1(heavy_stem,0);pos2(heavy_stem,0); pos1'(heavy_stem,0);pos2'(heavy_stem,0);
+pos11(light_stem,90); pos12(light_stem,90); pos22(light_stem,90);
+lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround 2u;
+x1=x1'=x2=x2';
+top y1=0; bot y2=-d; y11r=y1; y12l=y22l=y2;
+y11l-y1'=y2'-y12r=1.2bracket;
+filldraw z1r--z11r--serif_arc(11l,1'l)--reverse serif_arc(12r,2'l)
+ --z12l--z22l--serif_arc(22r,2'r)--cycle; % left stem and serifs
+pos3(heavy_stem,0);pos4(heavy_stem,0); pos3'(heavy_stem,0);pos4'(heavy_stem,0);
+pos13(light_stem,90); pos14(light_stem,90); pos24(light_stem,90);
+x3=x3'=x4=x4'=w-x1; x13=x14=w-x11; x24=w-x22;
+y3=y13r=y1; y3'=y1'; y4'=y2'; y4=y14l=y24l=y2;
+filldraw z3l--z13r--serif_arc(13l,3'r)--reverse serif_arc(14r,4'r)
+ --z14l--z24l--serif_arc(24r,4'l)--cycle; % right stem and serifs
+filldraw stroke z11e--z13e; % bar
+penlabels(1,1',2,2',3,3',4,4',11,12,13,14,22,24); endchar;
+
+cmchar "\displaystyle product sign";
+beginchar(oct"131",23u#,0,16/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup crisp.nib;
+numeric heavy_stem,light_stem;
+heavy_stem=hround(bold+5dw); light_stem=Vround(rule_thickness+dw);
+pos1(heavy_stem,0);pos2(heavy_stem,0); pos1'(heavy_stem,0);pos2'(heavy_stem,0);
+pos11(light_stem,90); pos12(light_stem,90); pos22(light_stem,90);
+lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround 2.5u;
+x1=x1'=x2=x2';
+top y1=0; bot y2=-d; y11r=y1; y12l=y22l=y2;
+y11l-y1'=y2'-y12r=1.8bracket;
+filldraw z1r--z11r--serif_arc(11l,1'l)--reverse serif_arc(12r,2'l)
+ --z12l--z22l--serif_arc(22r,2'r)--cycle; % left stem and serifs
+pos3(heavy_stem,0);pos4(heavy_stem,0); pos3'(heavy_stem,0);pos4'(heavy_stem,0);
+pos13(light_stem,90); pos14(light_stem,90); pos24(light_stem,90);
+x3=x3'=x4=x4'=w-x1; x13=x14=w-x11; x24=w-x22;
+y3=y13r=y1; y3'=y1'; y4'=y2'; y4=y14l=y24l=y2;
+filldraw z3l--z13r--serif_arc(13l,3'r)--reverse serif_arc(14r,4'r)
+ --z14l--z24l--serif_arc(24r,4'l)--cycle; % right stem and serifs
+filldraw stroke z11e--z13e; % bar
+penlabels(1,1',2,2',3,3',4,4',11,12,13,14,22,24); endchar;
+
+% About the same correction for the summation signs
+
+cmchar "\textstyle summation sign";
+beginchar(oct"120",17u#,0,10/6dh#);
+adjust_fit(0,0); pickup tiny.nib;
+numeric top_arm_thickness, bot_arm_thickness;
+top_arm_thickness=Vround rule_thickness;
+bot_arm_thickness=Vround .9(.5[rule_thickness,curve]);
+lft x1l=hround u; x1l=x2l=x4l; x3l-x1l=4/11(w-2u);
+top y1=0; bot y2=-top_arm_thickness-eps; bot y4=-d; y3=-.5d;
+numeric alpha[]; alpha1=((x3l-x1l)++(y2-y3))/(y2-y3);
+penpos1(alpha1*(curve-tiny),0); penpos2(alpha1*(curve-tiny),0);
+penpos3(alpha1*(curve-tiny),0);
+alpha2=diag_ratio(1,rule_thickness-tiny,y3-y4,x3r-x4l);
+penpos4(alpha2*(rule_thickness-tiny),0);
+z0=whatever[z2l,z3l]=z4l+whatever*(z3r-z4r);
+filldraw z1l--z2l--z0--z4l--z4r--z3r--z2r--z1r--cycle; % diagonals
+pickup crisp.nib; pos5(top_arm_thickness,90); pos6(hair,0);
+top y5r=0; x5=x1; rt x6r=hround(w-u); y6=good.y(y5l-2.5u)-eps;
+arm(5,6,a,.45,17/11u); % upper arm and beak
+pos7(bot_arm_thickness,-90); pos8(hair,0);
+bot y7r=-d; z7l=whatever[z4,z3]; x7r:=x4; x8=x6; y8=good.y(y7l+2.5u)+eps;
+arm(7,8,b,.45,17/11u); % lower arm and beak
+penlabels(0,1,2,3,4,5,6,7,8); endchar;
+
+cmchar "\displaystyle summation sign";
+beginchar(oct"130",21u#,0,18/6dh#); padded 1/6dh#;
+adjust_fit(0,0); pickup tiny.nib;
+numeric top_arm_thickness, bot_arm_thickness, thick_stem, thin_stem;
+thick_stem=bold+4dw; thin_stem=rule_thickness+dw;
+top_arm_thickness=Vround .9thin_stem;
+bot_arm_thickness=Vround .9(.5[thin_stem,thick_stem]);
+lft x1l=hround u; x1l=x2l=x4l; x3l-x1l=4/11(w-2u);
+top y1=0; bot y2=-top_arm_thickness-eps; bot y4=-d; y3=-.5d;
+numeric alpha[]; alpha1=((x3l-x1l)++(y2-y3))/(y2-y3);
+penpos1(alpha1*(thick_stem-tiny),0); penpos2(alpha1*(thick_stem-tiny),0);
+penpos3(alpha1*(thick_stem-tiny),0);
+alpha2=diag_ratio(1,thin_stem-tiny,y3-y4,x3r-x4l);
+penpos4(alpha2*(thin_stem-tiny),0);
+z0=whatever[z2l,z3l]=z4l+whatever*(z3r-z4r);
+filldraw z1l--z2l--z0--z4l--z4r--z3r--z2r--z1r--cycle; % diagonals
+pickup crisp.nib; pos5(top_arm_thickness,90); pos6(hair,0);
+top y5r=0; x5=x1; rt x6r=hround(w-u); y6=good.y(y5l-3u)-eps;
+arm(5,6,a,.45,24/11u); % upper arm and beak
+pos7(bot_arm_thickness,-90); pos8(hair,0);
+bot y7r=-d; z7l=whatever[z4,z3]; x7r:=x4; x8=x6; y8=good.y(y7l+3u)+eps;
+arm(7,8,b,.45,24/11u); % lower arm and beak
+penlabels(0,1,2,3,4,5,6,7,8); endchar;
+
+
+cmchar "\textstyle integral sign";
+beginchar(oct"122",12u#,0,100/52dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\displaystyle integral sign";
+beginchar(oct"132",18u#,0,220/48dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle contour integral sign";
+beginchar(oct"110",12u#,0,100/52dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw fullcircle scaled .5w shifted z5; % contour
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\displaystyle contour integral sign";
+beginchar(oct"111",18u#,0,220/48dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw fullcircle scaled .5w shifted z5; % contour
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+
+
+
+
+
+% Changed height of folllowing chars so as to be coherent with the rest
+
+
+
+cmchar "Horizontal curly brace tip---down and left";
+beginchar(oct"172",.75dh#,heavy_rule_thickness#,0);
+adjust_fit(0,0); pickup fine.nib;
+numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
+pos1(min_breadth,90); pos1'(min_breadth,90);
+pos2(1.2h,90);
+bot y2l=0; bot y1l=bot y1'l=vround(y2-4.5u-.5min_breadth);
+.5[x1,x1']=-eps; x2=w+shrink_fit+eps; x1'-x1=min_breadth-fine;
+filldraw z1r{x2-x1,3(y2r-y1r)}...{right}z2r
+ --z2l{left}...{x1'-x2,3(y1-y2)}z1'l--z1l--cycle; % stroke
+penlabels(1,2); endchar;
+
+cmchar "Horizontal curly brace tip---down and right";
+beginchar(oct"173",.75dh#,heavy_rule_thickness#,0);
+adjust_fit(0,0); pickup fine.nib;
+numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
+pos1(min_breadth,90); pos1'(min_breadth,90);
+pos2(1.2h,90);
+bot y2l=0; bot y1l=bot y1'l=vround(y2-4.5u-.5min_breadth);
+.5[x1,x1']=w+shrink_fit+eps; x2=-eps; x1-x1'=min_breadth-fine;
+filldraw z1r{x2-x1,3(y2r-y1r)}...{left}z2r
+ --z2l{right}...{x1'-x2,3(y1-y2)}z1'l--z1l--cycle; % stroke
+penlabels(1,2); endchar;
+
+cmchar "Horizontal curly brace tip---up and left";
+beginchar(oct"174",.75dh#,heavy_rule_thickness#,0);
+adjust_fit(0,0); pickup fine.nib;
+numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
+pos1(min_breadth,90); pos1'(min_breadth,90);
+pos2(1.2h,90);
+bot y2l=0; top y1r=top y1'r=vround(y2+4.5u+.5min_breadth);
+.5[x1,x1']=-eps; x2=w+shrink_fit+eps; x1'-x1=min_breadth-fine;
+filldraw z1l{x2-x1,3(y2l-y1l)}...{right}z2l
+ --z2r{left}...{x1'-x2,3(y1-y2)}z1'r--z1r--cycle; % stroke
+penlabels(1,2); endchar;
+
+cmchar "Horizontal curly brace tip---up and right";
+beginchar(oct"175",.75dh#,heavy_rule_thickness#,0);
+adjust_fit(0,0); pickup fine.nib;
+numeric min_breadth; min_breadth=vround(rule_thickness+.6dw);
+pos1(min_breadth,90); pos1'(min_breadth,90);
+pos2(1.2h,90);
+bot y2l=0; top y1r=top y1'r=vround(y2+4.5u+.5min_breadth);
+.5[x1,x1']=w+shrink_fit+eps; x2=-eps; x1-x1'=min_breadth-fine;
+filldraw z1l{x2-x1,3(y2l-y1l)}...{left}z2l
+ --z2r{right}...{x1'-x2,3(y1-y2)}z1'r--z1r--cycle; % stroke
+penlabels(1,2); endchar;
+
+
+
+font_x_height x_height#;
+font_quad 18u#+4letter_fit#;
+% (The calling file should give the other math extension font parameters.)
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lmathit.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lmathit.mf
new file mode 100644
index 00000000000..111cd786151
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lmathit.mf
@@ -0,0 +1,66 @@
+
+
+% The Computer Modern Math Italic slides family
+% Modification of original by D. E. Knuth (1979--1985) for taking care
+% of special form of I in slides fonts (Claudio Beccari 1999)
+
+font_coding_scheme:="TeX math italic";
+mode_setup; font_setup;
+
+input sromanu; % upper case (slides majuscules)
+input itall; % lower case (minuscules)
+input greeku; % upper case greek letters
+input greekl; % lower case Greek letters
+input italms; % special symbols for math italic
+font_slant slant; font_x_height x_height#;
+font_quad 18u#+4letter_fit#;
+
+slant:=mono_charic#:=0; % the remaining characters will not be slanted
+currenttransform:=identity yscaled aspect_ratio scaled granularity;
+input olddig; % oldstyle numerals
+input romms; % roman math specials
+
+skewchar=oct"177"; skew#=.5u#;
+save comma;
+period=oct"72"; comma=oct"73"; slash=oct"75"; % non-ASCII positions
+ligtable "h": skewchar kern -skew#;
+ligtable oct"027":oct"034": comma kern -u#, period kern -u#, % $\nu:\tau:$
+ "L":"g":"u":"v":"x": oct"013": oct"026": % $L:g:u:v:x:\alpha:\mu:$
+ oct"035":oct"173": skewchar kern skew#; % $\upsilon:\imath:$
+ligtable "U": comma kern-2u#, period kern-2u#, % $U:$
+ slash kern-u#, skewchar kern skew#;
+ligtable "K":oct"011": slash kern-u#, % $K:\it\Psi:$
+ oct"016":"r": comma kern-u#, period kern-u#, % $\delta:r:$
+ "D":"c":"e":"o":"s":"y":"z":oct"017": % $D:c:e:o:s:y:z:\epsilon:$
+ oct"021":oct"023":oct"037": skewchar kern 2skew#; % $\eta:\iota:\chi:$
+ligtable oct"007": slash kern-u#, % $\it\Upsilon:$
+ comma kern-2u#, period kern-2u#, skewchar kern 2skew#;
+ligtable oct"005":"H": slash kern-u#, % $\it\Pi:H:$
+ comma kern-u#, period kern-u#, skewchar kern 2skew#;
+ligtable "N":"X": slash kern -1.5u#, % $N:X:$
+ "C":"T": slash kern -.5u#, comma kern -u#, period kern -u#, % $C:T:$
+ "B":"E":"G":"O":"Q":"R":oct"174": % $B:E:G:O:Q:R:\jmath:$
+ "l":"p":"q":"t":"w":oct"002":oct"004": % $l:p:q:t:w:\it\Theta:\Xi:$
+ oct"006":oct"010":oct"012":oct"014": % $\it\Sigma:\Phi:\Omega:\beta:$
+ oct"020":oct"022":oct"032":oct"036": % $\zeta:\theta:\rho:\phi:$
+ oct"042":oct"043":oct"045": % $\varepsilon:\vartheta:\varrho:$
+ oct"046":oct"047":oct"100": % $\varsigma:\varphi:\partial:$
+ skewchar kern 3skew#;
+ligtable "M":"S":"Z": slash kern-u#, % $M:S:Z:$
+ comma kern-u#, period kern-u#, skewchar kern 3skew#;
+ligtable oct"000":"F":"P": slash kern -u#, % $\it\Gamma:F:P:$
+ comma kern-2u#, period kern-2u#, skewchar kern 3skew#;
+ligtable "I":oct"030":oct"040":oct"140":oct"175": % $I:\xi:\psi:\ell:\wp:$
+ skewchar kern 4skew#;
+ligtable "A": skewchar kern 5skew#; % $A:$
+ligtable "d": "Y" kern u#, "Z" kern-u#, "j" kern-2u#, "f" kern-3u#, % $d:$
+ oct"001":oct"003": skewchar kern 6skew#; % $\it\Delta:\Lambda:$
+ligtable "f": comma kern-u#, period kern-u#, skewchar kern 6skew#; % $f:$
+ligtable "J": slash kern-u#, % $J:$
+ comma kern-2u#, period kern-2u#, skewchar kern 6skew#;
+ligtable "j":oct"033": comma kern -u#, period kern -u#; % $j:\sigma:$
+ligtable "V":"W":"Y":comma kern-3u#, period kern-3u#, % $V:W:Y:$
+ slash kern-2u#;
+ligtable slash: oct"001" kern -u#, "A" kern -u#, "M" kern -u#, % $/:$
+ "N" kern -u#, "Y" kern +u#, "Z" kern -u#;
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lmathsy.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lmathsy.mf
new file mode 100644
index 00000000000..6486b76ba76
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lmathsy.mf
@@ -0,0 +1,47 @@
+
+% The Computer Modern Symbols family (by D. E. Knuth, 1979--1985)
+% Modification of original mathsy.mf by Knuth
+% Claudio Beccari (1999)
+
+font_coding_scheme:="TeX math symbols";
+mode_setup; font_setup;
+
+if not (boolean boldlsymbol): math_spread:=0; fi
+autorounding:=hair;
+input calu; % upper case calligraphic alphabet
+autorounding:=0;
+
+
+
+font_slant slant; font_x_height x_height#;
+font_quad 18u# if not monospace:+4letter_fit# fi;
+% (The spacing is zero so that \TeX\ will always add the italic correction.)
+% (The calling file should give the other math symbol font parameters.)
+
+slant:=mono_charic#:=0; % the remaining characters will not be slanted
+currenttransform:=identity yscaled aspect_ratio scaled granularity;
+input symbol; % the symbols
+
+% Correction for the empty big circle that otherwise turns out oval
+
+cmchar "Circle for copyright, etc.";
+beginchar(oct"015",18u#,math_axis#+8u#,8u#-math_axis#); autorounded;
+adjust_fit(0,0); pickup rule.nib;
+lft x6=hround u; x2=w-x6;
+top y8 - bot y4 = rt x2 - lft x6; y2=math_axis;
+circle_points; draw_circle; % circle
+labels(1,2,3,4,5,6,7,8); endchar;
+
+
+
+if not monospace:
+ skewchar=oct"060"; skew#=.5u#;
+ ligtable "I": "T": "V": skewchar kern skew#;
+ ligtable "K": skewchar kern 2skew#;
+ ligtable "D": "N": "P": "R": "U": "W": "Y": skewchar kern 3skew#;
+ ligtable "E": "F": "G": "H": "O": "Q": skewchar kern 4skew#;
+ ligtable "B": "C": "L": "M": "S": "X": "Z": skewchar kern 5skew#;
+ ligtable "J": skewchar kern 6skew#;
+ ligtable "A": skewchar kern 7skew#;
+fi;
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lmsam8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lmsam8.mf
new file mode 100644
index 00000000000..72665f0cf77
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lmsam8.mf
@@ -0,0 +1,138 @@
+%% This is file LMSMA8 copied and modified from MSAM10 by American Mathematical
+%% Society, so as to change all the parameters and see what happens with the slides-font
+%% parameters; hopefully a new font is obtained that better matches the slides fonts
+% with their characteristic large x-height and small ascender height; with math symbols
+% this should not be so important, but ...
+%%
+%% Claudio Beccari 2007
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LMSAM"; font_size 8pt#;
+
+u#:=20/36pt#; % unit width
+width_adj#:=0/36pt#; % width adjustment for certain characters
+serif_fit#:=-10/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-14/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=190/36pt#; % height of numerals
+x_height#:=150/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=80/36pt#; % height of crossbar in lowercase e
+comma_depth#:=40/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=23/36pt#; % lowercase hairline breadth
+stem#:=23/36pt#; % lowercase stem breadth
+curve#:=23/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=21/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=28/36pt#; % diameter of dots
+cap_hair#:=23/36pt#; % uppercase hairline breadth
+cap_stem#:=27/36pt#; % uppercase stem breadth
+cap_curve#:=27/36pt#; % uppercase curve breadth
+cap_ess#:=27/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=20/36pt#; % thickness of lines in math symbols
+
+dish#:=0/36pt#; % amount erased at top or bottom of serifs
+bracket#:=00/36pt#; % vertical distance from serif base to tangent
+jut#:=0/36pt#; % protrusion of lowercase serifs
+cap_jut#:=00/36pt#; % protrusion of uppercase serifs
+beak_jut#:=0/36pt#; % horizontal protrusion of beak serifs
+beak#:=0/36pt#; % vertical protrusion of beak serifs
+vair#:=18/36pt#; % vertical diameter of hairlines
+notch_cut#:=23/36pt#; % maximum breadth above or below notches
+bar#:=18/36pt#; % lowercase bar thickness
+slab#:=19/36pt#; % serif and arm thickness
+cap_bar#:=19/36pt#; % uppercase bar thickness
+cap_band#:=19/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=23/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0/36pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=.5/36pt#; % for small refinements of hairline height
+apex_corr#:=4/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.95; % factor applied to weights of heavy characters
+math_spread:=.4; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/10; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % 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:=true; % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=6/8; % subscripts to 10pt will normally be in 7pt type
+rth#:=.4pt#; % assume that rules will come from cmex10
+fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+36/36pt#+subs*desc_depth#, % num1
+ math_axis#+1.51rth#+24/36pt#, % num2
+ math_axis#+1.51rth#+38/36pt#, % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-98/36pt#), % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-24/36pt#), % denom2
+ 7.99pt#-subs*asc_height#, % sup1
+ 6.99pt#-subs*asc_height#, % sup2
+ 82/36pt#, % sup3
+ 36/36pt#, % sub1
+ 72/36pt#, % sub2
+ subs*asc_height#-36/36pt#, % sup\_drop
+ 18/36pt#, % sub\_drop
+ 11.9pt#, % delim1
+ 9.1pt#, % delim2
+ math_axis#; % axis\_height
+
+%% include these parameters to shrink R and S so they
+%% fit inside a circle
+%
+lower.u#:=22/36pt#; % unit width
+lower.width_adj#:=3/36pt#; % width adjustment for certain characters
+lower.cap_serif_fit#:=-12/36pt#; % extra sidebar near uppercase serifs
+lower.letter_fit#:=0pt#; % extra space added to all sidebars
+
+lower.body_height#:=180/36pt#; % height of tallest characters
+lower.cap_height#:=160/36pt#; % height of caps
+lower.x_height#:=120/36pt#; % height of lowercase without ascenders
+lower.bar_height#:=72/36pt#; % height of crossbar in lowercase e
+lower.comma_depth#:=35/36pt#; % depth of comma below baseline
+
+lower.flare#:=15/36pt#; % diameter of bulbs or breadth of terminals
+lower.cap_hair#:=21/36pt#; % uppercase hairline breadth
+lower.stem#:=21/36pt#; % lowercase stem breadth
+lower.cap_stem#:=23/36pt#; % uppercase stem breadth
+lower.cap_curve#:=23/36pt#; % uppercase curve breadth
+lower.cap_ess#:=23/36pt#; % breadth in middle of uppercase s
+
+lower.cap_jut#:=0/36pt#; % protrusion of uppercase serifs
+lower.beak_jut#:=7/36pt#; % horizontal protrusion of beak serifs
+lower.beak#:=0/36pt#; % vertical protrusion of beak serifs
+lower.slab#:=12/36pt#; % serif and arm thickness
+lower.cap_bar#:=12/36pt#; % uppercase bar thickness
+lower.cap_band#:=15/36pt#; % uppercase thickness above/below lobes
+lower.cap_notch_cut#:=21/36pt#; % max breadth above/below uppercase notches
+
+lower.o#:=6/36pt#; % amount of overshoot for curves
+lower.apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+lower.fudge:=.85; % factor applied to weights of heavy characters
+
+
+generate lamsya % switch to the driver file
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lmsbm8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lmsbm8.mf
new file mode 100644
index 00000000000..fd56dc71550
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lmsbm8.mf
@@ -0,0 +1,105 @@
+%% This is file LMSMB8 copied and modified from MSAM10 by American Mathematical
+%% Society, so as to change all the parameters and see what happens with the slides-font
+%% parameters; hopefully a new font is obtained that better matches the slides fonts
+% with their characteristic large x-height and small ascender height; with math symbols
+% this should not be so important, but ...
+%%
+%% Claudio Beccari 2007
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+if unknown cmbase: input cmbase fi
+
+font_identifier:="LMSBM"; font_size 8pt#;
+
+u#:=20/36pt#; % unit width
+width_adj#:=0/36pt#; % width adjustment for certain characters
+serif_fit#:=-10/36pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=-14/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=220/36pt#; % height of tallest characters
+asc_height#:=200/36pt#; % height of lowercase ascenders
+cap_height#:=197/36pt#; % height of caps
+fig_height#:=190/36pt#; % height of numerals
+x_height#:=150/36pt#; % height of lowercase without ascenders
+math_axis#:=80/36pt#; % axis of symmetry for math symbols
+bar_height#:=80/36pt#; % height of crossbar in lowercase e
+comma_depth#:=40/36pt#; % depth of comma below baseline
+desc_depth#:=40/36pt#; % depth of lowercase descenders
+
+crisp#:=18/36pt#; % diameter of serif corners
+tiny#:=18/36pt#; % diameter of rounded corners
+fine#:=8/36pt#; % diameter of sharply rounded corners
+thin_join#:=8/36pt#; % width of extrafine details
+hair#:=23/36pt#; % lowercase hairline breadth
+stem#:=23/36pt#; % lowercase stem breadth
+curve#:=23/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=21/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=28/36pt#; % diameter of dots
+cap_hair#:=23/36pt#; % uppercase hairline breadth
+cap_stem#:=27/36pt#; % uppercase stem breadth
+cap_curve#:=27/36pt#; % uppercase curve breadth
+cap_ess#:=27/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=20/36pt#; % thickness of lines in math symbols
+
+dish#:=0/36pt#; % amount erased at top or bottom of serifs
+bracket#:=00/36pt#; % vertical distance from serif base to tangent
+jut#:=0/36pt#; % protrusion of lowercase serifs
+cap_jut#:=0/36pt#; % protrusion of uppercase serifs
+beak_jut#:=0/36pt#; % horizontal protrusion of beak serifs
+beak#:=00/36pt#; % vertical protrusion of beak serifs
+vair#:=18/36pt#; % vertical diameter of hairlines
+notch_cut#:=23/36pt#; % maximum breadth above or below notches
+bar#:=18/36pt#; % lowercase bar thickness
+slab#:=19/36pt#; % serif and arm thickness
+cap_bar#:=19/36pt#; % uppercase bar thickness
+cap_band#:=19/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=23/36pt#; % max breadth above/below uppercase notches
+serif_drop#:=0/36pt#; % vertical drop of sloped serifs
+stem_corr#:=.5/36pt#; % for small refinements of stem breadth
+vair_corr#:=.5/36pt#; % for small refinements of hairline height
+apex_corr#:=4/36pt#; % extra width at diagonal junctions
+
+o#:=6/36pt#; % amount of overshoot for curves
+apex_o#:=2/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=.95; % factor applied to weights of heavy characters
+math_spread:=.4; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/10; % extra openness inside bowls
+beak_darkness:=0; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=true; % should dots be square?
+hefty:=true; % should we try hard not to be overweight?
+serifs:=false; % 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:=true; % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=6/8; % subscripts to 10pt will normally be in 7pt type
+rth#:=.4pt#; % assume that rules will come from cmex10
+fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+36/36pt#+subs*desc_depth#, % num1
+ math_axis#+1.51rth#+24/36pt#, % num2
+ math_axis#+1.51rth#+38/36pt#, % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-98/36pt#), % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-24/36pt#), % denom2
+ 7.99pt#-subs*asc_height#, % sup1
+ 6.99pt#-subs*asc_height#, % sup2
+ 82/36pt#, % sup3
+ 36/36pt#, % sub1
+ 72/36pt#, % sub2
+ subs*asc_height#-36/36pt#, % sup\_drop
+ 18/36pt#, % sub\_drop
+ 11.9pt#, % delim1
+ 9.1pt#, % delim2
+ math_axis#; % axis\_height
+
+def diagonal (suffix ne, sw)= draw z.ne--z.sw enddef;
+
+generate lamsyb % switch to the driver file
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lroman.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lroman.mf
new file mode 100644
index 00000000000..e45809ba84d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lroman.mf
@@ -0,0 +1,247 @@
+% This is the driver file lroman.mf based on roman.mf in the
+% Computer Modern Roman family of fonts (by D. E. Knuth, 1979--1985)
+% It differs from roman.mf only in that it has been
+% adjusted to change capital I with a special uppercase I
+% for the Slides fonts: llcmss8, llcmssb8, llcmssi8 and llcmsso8.
+% Also the lower case l has been modified in order to avoid confusions
+% with other glyphs.
+% Written by Pierre A. MacKay, 16 Sept. 1986
+% and modified by Claudio Beccari, 1999
+
+if ligs>1: font_coding_scheme:="TeX text";
+ spanish_shriek=oct"074"; spanish_query=oct"076";
+else: font_coding_scheme:=if ligs=0: "TeX typewriter text"
+ else: "TeX text without f-ligatures" fi;
+ spanish_shriek=oct"016"; spanish_query=oct"017"; fi
+
+mode_setup; font_setup;
+
+ input romanu; % upper case (majuscules)
+ input romanl; % lower case (minuscules)
+ input greeku; % upper case Greek letters
+ input romand; % numerals
+ input romanp; % ampersand, question marks, currency sign
+ input romspl; % lowercase specials (dotless \i, ligature \ae, etc.)
+ input romspu; % uppercase specials (\AE, \OE, \O)
+ input punct; % punctuation symbols common to roman and italic text
+ input accent; % accents common to roman and italic text
+
+
+
+if ligs>1: input romlig; fi % letter ligatures
+if ligs>0: input comlig; fi % ligatures common with italic text
+if ligs<=1: input romsub; fi % substitutes for ligatures
+
+% Redrawing capital I
+
+cmchar "The modified letter I";
+beginchar("I",max(6u#,4u#+cap_stem#),cap_height#,0);
+italcorr cap_height#*slant-.25u#;
+adjust_fit(cap_serif_fit#,cap_serif_fit#);
+pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
+lft x1l=lft x2l=hround(.5w-.5cap_stem); top y1=h; bot y2=0;
+filldraw stroke z1e--z2e; % stem
+pickup crisp.nib; % arms
+pos5(hair,90); pos6(hair,90); % top arm
+lft x5= hround(u);rt x6=hround(w-u); top y5r=top y6r= top y1;
+filldraw stroke z5e--z6e;
+pos7(hair,-90); pos8(hair,-90); % bottom arm
+x7=x5; x6=x8;
+bot y7r= bot y8r= bot y2;
+filldraw stroke z7e--z8e;
+math_fit(0,.5ic#); penlabels(1,2,5,6,7,8); endchar;
+
+% Redrawing lower case l
+
+cmchar "The modified letter l";
+beginchar("l",6u#+max(u#,.5stem#),
+ min(asc_height#,if hefty:9/7 else:10/7 fi\\ x_height#),0);
+italcorr x_height#*slant -.4u#;
+adjust_fit(-(u#-stem#/5.5), -.5u#);
+numeric shaved_stem; shaved_stem=hround(stem if hefty:-\\2stem_corr fi);
+pickup fine.nib;
+pos1(shaved_stem,180);
+pos2(shaved_stem,180);
+pos3(shaved_stem,180);
+lft x2r=lft x3r=hround(2.5u-.5shaved_stem);
+y2=x_height;
+y3=max(.5bar_height,2vair);
+top y1=h; x1=x2;
+interim superness:=more_super;
+pos4(vair',-90); bot y4r=-oo; rt x5r=hround(w-u);
+ pos5(vair,-75); top y5l=vround .2[top y4l,bar_height];
+ x5l:=good.x x5l; x4l=1/3[x3l,x5l]; x4r:=1/3[x3r,x5r]; y3l:=y3l+.2vair;
+ filldraw stroke z1e--z2e..super_arc.e(3,4); % stem and hook
+ path p; p=stroke z4e{right}..tension .9 and atleast 1..z5e; % terminal
+ if (xpart(z5l-precontrol 1 of p)<0) or (xpart(z5r-postcontrol 2 of p)<0):
+ filldraw stroke z4e{right}...{up}z5e;
+ else: filldraw p; fi;
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+% Redrawing ligature fl
+
+cmchar "The modified ligature fl";
+beginchar(oct"015",12u#+2letter_fit#,asc_height#,0);
+italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
+adjust_fit(0,serif_fit#);
+pickup tiny.nib;
+pos1(stem',0);
+lft x1l=hround(2.5u-.5stem');
+pickup fine.nib; numeric bulb_diam, inner_jut; % letter f
+pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.3u;
+f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal
+pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround .5u-1;
+pos3(bar,90); pos4(bar,90);
+rt x4= hround 5.3u;
+pickup crisp.nib; filldraw stroke z3e--z4e; % bar
+%
+pos11(stem',180);pos12(stem',180);pos13(stem',180); %letter l
+lft x12r=lft x13r=hround(x2+1.5u);y12=x_height;
+y13=max(.5bar_height,2vair);top y11=h; x11=x12;
+interim superness:=more_super;
+pos14(vair',-90); bot y14r=-oo; rt x15r=hround(w-u);
+ pos15(vair,-75); top y15l=vround .2[top y14l,bar_height];
+ x15l:=good.x x15l; x14l=1/3[x13l,x15l]; x14r:=1/3[x13r,x15r]; y13l:=y13l+.2vair;
+ filldraw stroke z11e--z12e..super_arc.e(13,14); % stem and hook
+ path p; p=stroke z14e{right}..tension .9 and atleast 1..z15e; % terminal
+ if (xpart(z15l-precontrol 1 of p)<0) or (xpart(z15r-postcontrol 2 of p)<0):
+ filldraw stroke z14e{right}...{up}z15e;
+ else: filldraw p; fi;
+penlabels(1,2,3,4,11,12,13,14,15); endchar;
+
+% Redrawing ligature ffl
+
+cmchar "The modified ligature ffl";
+beginchar(oct"017",15u#+4letter_fit#,asc_height#,0);
+italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
+adjust_fit(0,2u#+serif_fit#);
+pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem'); % the double f
+pos11(stem',0); lft x11l=hround(.5w-.5stem');
+pickup fine.nib; numeric bulb_diam, inner_jut;
+ pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.75u;
+ pos12(5/7[vair,flare],90); y12=y2; rt x12=hround(.5w+2.8u);
+f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal
+f_stroke(11,12,d,e,f,inner_jut,inner_jut); % middle ditto
+pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround.5u-1;
+pos3(bar,90); pos4(bar,90);
+rt x4=hround(.5w+2.8u);
+pos3'(bar,90); x3'-x1=x4-x11; y3'=y3;
+ pos4'(bar,90); x4'=x11; y4'=y4;
+ filldraw stroke z3e--z3'e; filldraw stroke z4'e--z4e; % bars
+%
+pos21(stem',180);pos22(stem',180);pos23(stem',180); %letter l
+lft x22r=lft x23r=hround(x12+1.5u);y22=x_height;
+y23=max(.5bar_height,2vair);top y21=h; x21=x22;
+interim superness:=more_super;
+pos24(vair',-90); bot y24r=-oo; rt x25r=hround(x23r+4u);
+ pos25(vair,-75); top y25l=vround .2[top y24l,bar_height];
+ x25l:=good.x x25l; x24l=1/3[x23l,x25l]; x24r:=1/3[x23r,x25r]; y23l:=y23l+.2vair;
+ filldraw stroke z21e--z22e..super_arc.e(23,24); % stem and hook
+ path p; p=stroke z24e{right}..tension .9 and atleast 1..z25e; % terminal
+ if (xpart(z25l-precontrol 1 of p)<0) or (xpart(z25r-postcontrol 2 of p)<0):
+ filldraw stroke z24e{right}...{up}z25e;
+ else: filldraw p; fi;
+penlabels(1,2,3,4,11,12,21,22,23,24,25); endchar;
+
+%% Modified accents
+
+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);
+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);
+top y1=top y3=max(h,top y2l+.8vair); lft x1r=w-rt x3r=hround(2u-.5vair);
+filldraw stroke z1e{down}...z2e{right}...{up}z3e; % stroke
+penlabels(1,2,3); endchar;
+
+
+cmchar "Scandinavian circle accent";
+beginchar(oct"027",13u#+4/3(asc_height#-x_height#)*slant,asc_height#,0);
+adjust_fit(cap_serif_fit#,cap_serif_fit#);
+numeric circ_hair,circ_vair;
+circ_hair=hround min(hair,u+.5); %circ_vair=vround min(vair,(h-x_height)/6+.5);
+circ_vair=circ_hair;
+penpos1(circ_vair,90); penpos3(circ_vair,-90);
+penpos2(circ_hair,180); penpos4(circ_hair,0);
+x2r=hround(.5w-u-.5circ_hair);
+x4r=w-x2r; x1=x3=.5w;
+y2=y4=.5[y1,y3];
+y3r=vround(1/3[x_height,h]+apex_o); y1r-y3r=x4r-x2r;
+penstroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
+ & pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle; % bowl
+penlabels(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; z1=z2;
+y2l= vround(.5[x_height,h]+apex_o);
+dot(1,2); % dot
+penlabels(1,2); endchar;
+
+cmchar "Umlaut (double dot) accent";
+numeric dot_diam#,dot_diam;
+dot_diam#=max(dot_size#,cap_curve#);
+beginchar(oct"177",9u#,min(asc_height#,10/7x_height#+.5dot_diam#),0);
+dot_diam=max(tiny.breadth,hround(max(dot_size,cap_curve)-2stem_corr));
+italcorr h#*slant+.5dot_diam#-2.25u#;
+adjust_fit(0,0);
+pickup tiny.nib; pos1(dot_diam,0); pos2(dot_diam,90);
+x1=x2=2.75u; z1=z2;
+y2l= vround(.5[x_height,h]+apex_o);
+dot(1,2); % left dot
+pos3(dot_diam,0); penpos4(y2r-y2l,90); y3=y4=y1; x3=x4=w-x1;
+dot(3,4); % right dot
+penlabels(1,2,3,4); endchar;
+
+
+ligtable "!": "`" =: spanish_shriek;
+ligtable "?": "`" =: spanish_query;
+font_slant slant; font_x_height x_height#;
+if monospace: font_normal_space 9u#; % no stretching or shrinking
+ font_quad 18u#;
+ font_extra_space 9u#;
+else: font_normal_space 6u#+2letter_fit#;
+ font_normal_stretch 3u#; font_normal_shrink 2u#;
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 2u#;
+ k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning
+ ligtable "k": if serifs: "v": "a" kern -u#, fi\\"w": "e" kern k#,
+ "a" kern k#, "o" kern k#, "c" kern k#;
+ ligtable "P": "A" kern kk#,
+ "y": "o" kern k#, "e" kern k#, "a" kern k#, "." kern kk#, "," kern kk#;
+ ligtable "F": "V": "W": if serifs: "o" kern kk#, "e" kern kk#, "u" kern kk#,
+ "r" kern kk#, "a" kern kk#, "A" kern kkk#,
+ else: "o" kern k#, "e" kern k#, "u" kern k#,
+ "r" kern k#, "a" kern k#, "A" kern kk#, fi
+ "K": "X": "O" kern k#, "C" kern k#, "G" kern k#, "Q" kern k#;
+ ligtable "T": "y" kern if serifs: k# else: kk# fi,
+ "Y": "e" kern kk#, "o" kern kk#,
+ "r" kern kk#, "a" kern kk#, "A" kern kk#, "u" kern kk#;
+ ligtable "O": "D": "X" kern k#, "W" kern k#, "A" kern k#,
+ "V" kern k#, "Y" kern k#;
+ if serifs: ligtable "h": "m": "n":
+ "t" kern k#, "u" kern k#, "b" kern k#, "y" kern k#, "v" kern k#, "w" kern k#;
+ ligtable "c": "h" kern k#, "k" kern k#; fi
+ ligtable "o": "b": "p": "e" kern -k#, "o" kern -k#, "x" kern k#,
+ "d" kern -k#, "c" kern -k#, "q" kern -k#,
+ "a": if serifs: "v" kern k#, "j" kern u#, else: "r" kern k#, fi
+ "t": "y" kern k#,
+ "u": "w" kern k#;
+ ligtable "A": if serifs: "R": fi\\ "t" kern k#,
+ "C" kern k#, "O" kern k#, "G" kern k#, "U" kern k#, "Q" kern k#,
+ "L": "T" kern kk#, "Y" kern kk#, "V" kern kkk#, "W" kern kkk#;
+ ligtable "g": "j" kern -k#; % logjam
+ ligtable "I": "I" kern -k#; fi % Richard III
+ ligtable "l": "e" kern k#, "o" kern k#;
+ % there are ligature/kern programs for |"f"| in the {\tt romlig} file
+ % and for |"-"|, |"`"|, and |"'"| in the {\tt comlig} file
+bye.
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/ltclb8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/ltclb8.mf
new file mode 100644
index 00000000000..942e85c5beb
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/ltclb8.mf
@@ -0,0 +1,87 @@
+% ltclb8.mf
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Content:
+%
+% Parameters for
+%
+% LaTeX European Computer Modern Sans Serif Quotation Bold
+% text companion font for slides
+%
+if unknown exbase: input exbase fi
+
+font_identifier:="LTCSSQB";
+font_size 8pt#;
+u#:=22/36pt#;
+width_adj#:=3/36pt#;
+serif_fit#:= -12/36pt#;
+cap_serif_fit#:= -15/36pt#;
+letter_fit#:=0pt#;
+body_height#:=220/36pt#;
+asc_height#:=200/36pt#;
+cap_height#:=197/36pt#;
+fig_height#:=200/36pt#;
+x_height#:=155/36pt#;
+math_axis#:=80/36pt#;
+bar_height#:=85/36pt#;
+comma_depth#:=40/36pt#;
+desc_depth#:=40/36pt#;
+acc_height#:=60/36pt#;
+dot_height#:=45.8/36pt#;
+udot_height#:=48.2/36pt#;
+crisp#:=18/36pt#;
+tiny#:=18/36pt#;
+fine#:=8/36pt#;
+thin_join#:=8/36pt#;
+hair#:=42/36pt#;
+stem#:=42/36pt#;
+curve#:=42/36pt#;
+ess#:=40/36pt#;
+flare#:=36/36pt#;
+dot_size#:=41/36pt#;
+cap_hair#:=42/36pt#;
+cap_stem#:=46/36pt#;
+cap_curve#:=46/36pt#;
+cap_ess#:=46/36pt#;
+rule_thickness#:=26/36pt#;
+dish#:=0pt#;
+bracket#:=0pt#;
+jut#:=0pt#;
+cap_jut#:=0pt#;
+beak_jut#:=0pt#;
+beak#:=0pt#;
+vair#:=22/36pt#;
+notch_cut#:=48/36pt#;
+bar#:=22/36pt#;
+slab#:=24/36pt#;
+cap_bar#:=23/36pt#;
+cap_band#:=30/36pt#;
+cap_notch_cut#:=42/36pt#;
+serif_drop#:=0pt#;
+stem_corr#:=.5/36pt#;
+vair_corr#:=1/36pt#;
+apex_corr#:=15/36pt#;
+o#:=6/36pt#;
+apex_o#:=2/36pt#;
+slant:=0;
+fudge:=.85;
+math_spread:=0;
+superness:=1/sqrt 2;
+superpull:=1/9;
+beak_darkness:=0;
+square_dots:=true;
+hefty:=true;
+serifs:=false;
+monospace:=false;
+variant_g:=true;
+low_asterisk:=false;
+math_fitting:=false;
+slitex:=true;
+generate ltxsymb;
+endinput;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/ltcli8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/ltcli8.mf
new file mode 100644
index 00000000000..ab8e6e53eec
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/ltcli8.mf
@@ -0,0 +1,87 @@
+% ltcli8.mf
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Content:
+%
+% Parameters for
+%
+% LaTeX European Computer Modern Sans Serif Quotation Inclined
+% text companion font for slides
+%
+if unknown exbase: input exbase fi
+
+font_identifier:="LLTCSSQI";
+font_size 8pt#;
+u#:=20/36pt#;
+width_adj#:=2/36pt#;
+serif_fit#:= -10/36pt#;
+cap_serif_fit#:= -14/36pt#;
+letter_fit#:=0pt#;
+body_height#:=220/36pt#;
+asc_height#:=200/36pt#;
+cap_height#:=197/36pt#;
+fig_height#:=190/36pt#;
+x_height#:=150/36pt#;
+math_axis#:=80/36pt#;
+bar_height#:=80/36pt#;
+comma_depth#:=40/36pt#;
+desc_depth#:=40/36pt#;
+acc_height#:=60/36pt#;
+dot_height#:=45.8/36pt#;
+udot_height#:=48.2/36pt#;
+crisp#:=18/36pt#;
+tiny#:=18/36pt#;
+fine#:=8/36pt#;
+thin_join#:=8/36pt#;
+hair#:=23/36pt#;
+stem#:=23/36pt#;
+curve#:=23/36pt#;
+ess#:=23/36pt#;
+flare#:=21/36pt#;
+dot_size#:=28/36pt#;
+cap_hair#:=23/36pt#;
+cap_stem#:=27/36pt#;
+cap_curve#:=27/36pt#;
+cap_ess#:=27/36pt#;
+rule_thickness#:=.55555pt#;
+dish#:=0pt#;
+bracket#:=0pt#;
+jut#:=0pt#;
+cap_jut#:=0pt#;
+beak_jut#:=0pt#;
+beak#:=0pt#;
+vair#:=18/36pt#;
+notch_cut#:=23/36pt#;
+bar#:=18/36pt#;
+slab#:=19/36pt#;
+cap_bar#:=19/36pt#;
+cap_band#:=19/36pt#;
+cap_notch_cut#:=23/36pt#;
+serif_drop#:=0pt#;
+stem_corr#:=.5/36pt#;
+vair_corr#:=.5/36pt#;
+apex_corr#:=4/36pt#;
+o#:=6/36pt#;
+apex_o#:=2/36pt#;
+slant:=sind 12/cosd 12;
+fudge:=.95;
+math_spread:=0;
+superness:=1/sqrt 2;
+superpull:=1/10;
+beak_darkness:=0;
+square_dots:=true;
+hefty:=true;
+serifs:=false;
+monospace:=false;
+variant_g:=true;
+low_asterisk:=false;
+math_fitting:=false;
+slitex:=true;
+generate ltxsymb;
+endinput;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/ltclo8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/ltclo8.mf
new file mode 100644
index 00000000000..29e26853dd1
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/ltclo8.mf
@@ -0,0 +1,87 @@
+% ltclo8.mf
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Content:
+%
+% Parameters for
+%
+% LaTeX European Computer Modern Sans Serif Quotation Bold Oblique
+% text companion fonts for slides
+%
+if unknown exbase: input exbase fi
+
+font_identifier:="LLTCSSQBO";
+font_size 8pt#;
+u#:=22/36pt#;
+width_adj#:=3/36pt#;
+serif_fit#:= -12/36pt#;
+cap_serif_fit#:= -15/36pt#;
+letter_fit#:=0pt#;
+body_height#:=220/36pt#;
+asc_height#:=200/36pt#;
+cap_height#:=197/36pt#;
+fig_height#:=200/36pt#;
+x_height#:=155/36pt#;
+math_axis#:=80/36pt#;
+bar_height#:=85/36pt#;
+comma_depth#:=40/36pt#;
+desc_depth#:=40/36pt#;
+acc_height#:=60/36pt#;
+dot_height#:=45.8/36pt#;
+udot_height#:=48.2/36pt#;
+crisp#:=18/36pt#;
+tiny#:=18/36pt#;
+fine#:=8/36pt#;
+thin_join#:=8/36pt#;
+hair#:=42/36pt#;
+stem#:=42/36pt#;
+curve#:=42/36pt#;
+ess#:=40/36pt#;
+flare#:=36/36pt#;
+dot_size#:=41/36pt#;
+cap_hair#:=42/36pt#;
+cap_stem#:=46/36pt#;
+cap_curve#:=46/36pt#;
+cap_ess#:=46/36pt#;
+rule_thickness#:=26/36pt#;
+dish#:=0pt#;
+bracket#:=0pt#;
+jut#:=0pt#;
+cap_jut#:=0pt#;
+beak_jut#:=0pt#;
+beak#:=0pt#;
+vair#:=22/36pt#;
+notch_cut#:=48/36pt#;
+bar#:=22/36pt#;
+slab#:=24/36pt#;
+cap_bar#:=23/36pt#;
+cap_band#:=30/36pt#;
+cap_notch_cut#:=42/36pt#;
+serif_drop#:=0pt#;
+stem_corr#:=.5/36pt#;
+vair_corr#:=1/36pt#;
+apex_corr#:=15/36pt#;
+o#:=6/36pt#;
+apex_o#:=2/36pt#;
+slant:=sind 12/cosd 12;
+fudge:=.85;
+math_spread:=0;
+superness:=1/sqrt 2;
+superpull:=1/9;
+beak_darkness:=0;
+square_dots:=true;
+hefty:=true;
+serifs:=false;
+monospace:=false;
+variant_g:=true;
+low_asterisk:=false;
+math_fitting:=false;
+slitex:=true;
+generate ltxsymb;
+endinput;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/ltclq8.mf b/Master/texmf-dist/fonts/source/public/lxfonts/ltclq8.mf
new file mode 100644
index 00000000000..4e072f0e625
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/ltclq8.mf
@@ -0,0 +1,87 @@
+% ltclq8.mf
+%
+% This file is
+% (c) Copyright 2002 Claudio Beccari
+%
+% This file is part of of the lslides package
+% Read the lslides package documetation
+%
+%
+% Contents:
+%
+% Parameters for
+%
+% LaTeX European Computer Modern Sans Serif Quotation
+% text companion fonts for slides
+%
+if unknown exbase: input exbase fi
+
+font_identifier:="LLTCSSQ";
+font_size 8pt#;
+u#:=20/36pt#;
+width_adj#:=2/36pt#;
+serif_fit#:= -10/36pt#;
+cap_serif_fit#:= -14/36pt#;
+letter_fit#:=0pt#;
+body_height#:=220/36pt#;
+asc_height#:=200/36pt#;
+cap_height#:=197/36pt#;
+fig_height#:=190/36pt#;
+x_height#:=150/36pt#;
+math_axis#:=80/36pt#;
+bar_height#:=80/36pt#;
+comma_depth#:=40/36pt#;
+desc_depth#:=40/36pt#;
+acc_height#:=60/36pt#;
+dot_height#:=45.8/36pt#;
+udot_height#:=48.2/36pt#;
+crisp#:=18/36pt#;
+tiny#:=18/36pt#;
+fine#:=8/36pt#;
+thin_join#:=8/36pt#;
+hair#:=23/36pt#;
+stem#:=23/36pt#;
+curve#:=23/36pt#;
+ess#:=23/36pt#;
+flare#:=21/36pt#;
+dot_size#:=28/36pt#;
+cap_hair#:=23/36pt#;
+cap_stem#:=27/36pt#;
+cap_curve#:=27/36pt#;
+cap_ess#:=27/36pt#;
+rule_thickness#:=.55555pt#;
+dish#:=0pt#;
+bracket#:=0pt#;
+jut#:=0pt#;
+cap_jut#:=0pt#;
+beak_jut#:=0pt#;
+beak#:=0pt#;
+vair#:=18/36pt#;
+notch_cut#:=23/36pt#;
+bar#:=18/36pt#;
+slab#:=19/36pt#;
+cap_bar#:=19/36pt#;
+cap_band#:=19/36pt#;
+cap_notch_cut#:=23/36pt#;
+serif_drop#:=0pt#;
+stem_corr#:=.5/36pt#;
+vair_corr#:=.5/36pt#;
+apex_corr#:=4/36pt#;
+o#:=6/36pt#;
+apex_o#:=2/36pt#;
+slant:=0;
+fudge:=.95;
+math_spread:=0;
+superness:=1/sqrt 2;
+superpull:=1/10;
+beak_darkness:=0;
+square_dots:=true;
+hefty:=true;
+serifs:=false;
+monospace:=false;
+variant_g:=true;
+low_asterisk:=false;
+math_fitting:=false;
+slitex:=true;
+generate ltxsymb;
+endinput;
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/ltxsymb.mf b/Master/texmf-dist/fonts/source/public/lxfonts/ltxsymb.mf
new file mode 100644
index 00000000000..e9b48e358fc
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/ltxsymb.mf
@@ -0,0 +1,94 @@
+% txsymb.mf
+%
+% (c) Copyright 1995, 1996, 1997 J"org Knappen
+%
+% This file is part of ecfonts version 1.0
+%
+% Please read the files 00readme.txt, 00inst.txt, 00error.txt, and
+% copyrite.txt for further information
+%
+% You find some documentation in ecdoc.tex (needs LaTeX2e)
+%
+% EC Version 1.0
+% 19-JAN-1997
+%
+% Driver file for the tc fonts
+% Modified and name changed to ltxsymb.mf by Claudio Beccari 2007
+
+version_check(1,0); % |version_check| was introduced in dc1.3
+
+input exaccess; % accent accessories
+input txpseudo; % pseudoparameters
+
+mode_setup; font_setup; pseudo_setup;
+
+input txaccent; % flat accents for capital letters
+input txgen; % genealogical symbols (by DEK)
+input txsymbol; % misc. symbols
+if variant_g: % italics?
+ input txitlod; % old style digits (by GJL)
+ input txisuper; % superscript 1,2,3
+ input txifract; % fractions 1/4, 1/2, 3/4
+else: % roman
+ input txromod; % old style digits (by DEK)
+ input txrsuper; % superscript 1,2,3
+ input txrfract; % fractions 1/4, 1/2, 3/4
+fi;
+
+
+
+ecchar "Euro currency sign"; % jk
+beginchar(oct"277",14u#,1.1cap_height#,0);% cap_height= 197/36pt#
+italcorr cap_height#*slant-beak_jut#-.5u#;
+adjust_fit(0,0);
+pickup fine.nib;% fine=8/36pt#
+numeric larg; larg:=slab;% slab=19/36pt# --> larg= 19/36pt#
+pos2(larg,90); pos1(larg,0);
+top y2r=h; x2=hround 8.5u; rt x1r=hround(w-u); y1=good.y(y2l-1.5u)-eps;
+pos3(larg,180); pos4(larg,270); pos5(larg,0);
+bot y4r=0; x4=x2; rt x5r=hround(w-u); y5=good.y(y4l+1.6u)+eps;
+lft x3r =hround 2.5u; y3=.52h;
+filldraw stroke z1e..z2e{left}..z3e{down}..z4e{right}..z5e;% arc
+pos6(larg,-90); pos7(larg,-90); pos8(larg,90); pos9(larg,90);
+bot y6r=top y8r+if hefty: 1.333 else: 2 fi vair
+ =vround(y3+if hefty: .667 fi vair+eps);
+y7l=good.y(y6l)+eps; y9l=good.y(y8l)-eps;
+x6=x8=hround u; x7=x9=hround 10u;
+filldraw stroke z6e--z7e; filldraw stroke z8e--z9e; % strokes
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+
+
+% Ligtable
+
+if not monospace:
+ ligtable "-": oct"177" =: oct"177"; % <hyphen><hyphenchar> => <hyphenchar>
+fi
+
+% Fontparameter
+%
+font_coding_scheme:="TeX text companion symbols 1---TS1";
+boundarychar:=oct"027";
+font_slant slant;
+font_x_height x_height#;
+font_cap_height cap_height#;
+font_asc_height asc_height#;
+font_acc_cap_height (cap_height#+acc_height#);
+font_desc_depth desc_depth#;
+font_max_height(max(asc_height#,body_height#,
+ cap_height#+acc_height#));
+font_max_depth(max(desc_depth#,paren_depth#,the_ogonek_depth#));
+% font_digit_width % set inside the digits file
+font_cap_stem cap_stem#; % No letter capital I in the symbols
+font_baselineskip max(1.2*designsize,body_height#+paren_depth#);
+
+if monospace: font_normal_space 9u#; % no stretching or shrinking
+ font_quad 18u#;
+ font_extra_space 9u#;
+else: font_normal_space 6u#+2letter_fit#;
+ font_normal_stretch 3u#; font_normal_shrink 2u#;
+ font_quad 18u#+4letter_fit#;
+ font_extra_space 2u#;
+fi
+
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lxbbase.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lxbbase.mf
new file mode 100644
index 00000000000..afbef3ab663
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lxbbase.mf
@@ -0,0 +1,204 @@
+%% File LXBBASE copied and modified from AMSYB by American Mathematical Society
+%% in order to cope with the necessities of the slides fonts
+%%
+%% Claudio Beccari 2007
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Changes made for version 2.1:
+% Fixed Problems with smode in draw_outlines and showpoints
+% Stefan Lindner, 21-March-1991
+% Fixed Problems with serifs at small point sizes
+% Stefan Lindner and Lutz Birkhahn, 14-April-91
+
+vardef curve@#(expr a,one,b,two)=
+ save x,y;
+ z0=if(str@#="br")or(str@#="tl"):(xpart b,ypart a)
+ else:(xpart a,ypart b) fi;
+ z1=one[a,z0]; z2=two[b,z0];
+ a ..controls z1 and z2.. b
+ enddef;
+
+vardef reversecurve@#(expr a,one,b,two)=reverse curve@#(a,one,b,two) enddef;
+
+
+vardef beak(expr injoin,intip,outtip,indent,outjoin,tense)=
+ save x,y,t,toward,onright,ref; pair toward; boolean onright; path ref;
+ onright=(xpart intip>xpart injoin);
+ toward=if onright: right else: left fi;
+ z1=intip if onright:-else:+ fi (inbeak,0);
+ z2=outtip if onright:-else:+ fi (outbeak,0);
+ ref=outjoin{toward}...(z1 if onright:+else:- fi (2*abs(outjoin-injoin),0));
+ y4=.5[ypart outjoin,ypart indent];
+ z3=ref intersectionpoint ((0,y4)--(w,y4));
+ (t3,t4)=ref intersectiontimes ((0,y4)--(w,y4));
+
+ injoin{toward}..tension tense..z1--intip--outtip--z2...indent{-toward}...
+ {-(direction t3 of ref)}z3--subpath(t3,0) of ref
+ enddef;
+
+
+
+
+boolean its_a_leftserif;
+
+vardef full_serif_points@#
+(expr A,B,Bl,Br,leftlength,rightlength,midbracket_pull)=
+%%%% min_limit(join_radius)(.5serif_thickness); % -sl 14.04.91
+ (z1-B)=whatever*(A@#-B@#);
+ (z1l-Bl)=whatever*(A@#-B@#);
+ (z1r-Br)=whatever*(A@#-B@#);
+
+ y2=y2l=y2r=ypart A;
+ y1=y1l=y1r=y3=y4=ypart A if ypart A>ypart B:-else:+fi serif_thickness;
+
+ x5=x2=.5[x1l,x1r];
+ y5=entasis[y2l,y1l];
+
+ if its_a_leftserif:x3=x2l=x1l-round(leftlength+serif_constant_amt);
+ else:x4=x2r=x1r+round(rightlength+serif_constant_amt); fi
+enddef;
+
+vardef leftserif@#(expr A,B,Bl,Br,alength,midbracket_pull)=
+ its_a_leftserif:=true;
+ save x,y,p; path p[];
+ min_limit(join_radius)(.5serif_thickness); % -sl 14.04.91
+ full_serif_points@#(A,B,Bl,Br,alength,0,midbracket_pull);
+ p0:=Bl{z1l-Bl}...{z3-z1l}z3;
+ if midbracket_pull<>0:
+ z3'l=z1l; pos3'(alength+5pt,.5[angle(B-A),if ypart A>ypart B:-fi 180]);
+ z8'=p0 intersectionpoint (z3'l--z3'r);
+ z8=(midbracket_pull-eps)[z8',z1l];fi
+ if ypart A>ypart B:reverse fi
+ ((if midbracket_pull=0:p0 else:Bl{z1l-Bl}...z8...{z3-z1l}z3 fi
+ if softpath:)softjoin(z3--z2l)softjoin(else:--fi z2l..z5{right}))
+enddef;
+
+vardef rightserif@#(expr A,B,Bl,Br,alength,midbracket_pull)=
+ its_a_leftserif:=false;
+ save x,y,p; path p[];
+ min_limit(join_radius)(.5serif_thickness); % -sl 14.04.91
+ full_serif_points@#(A,B,Bl,Br,0,alength,midbracket_pull);
+ p4:=z4{z1r-z4}...{Br-z1r}Br;
+ if midbracket_pull<>0:
+ z4'l=z1r; pos4'(alength+5pt,.5[angle(B-A),0]);
+ z9'=p4 intersectionpoint (z4'l--z4'r);
+ z9=(midbracket_pull-eps)[z9',z1r];fi
+ if ypart A>ypart B:reverse fi
+ ((z5{right}..z2r if softpath:)softjoin(z2r--z4)softjoin(else:--fi
+ if midbracket_pull=0:p4 else:z4{z1r-z4}...z9...{Br-z1r}Br fi))
+enddef;
+
+vardef fullserif@#(expr A,B,Bl,Br,leftlength,rightlength,midbracket_pull)=
+ save x,y,p; path p[];
+ p1=rightserif(A,B,Bl,Br,rightlength,midbracket_pull);
+ p2=leftserif(A,B,Bl,Br,leftlength,midbracket_pull);
+ if ypart A>ypart B:(p1--p2)else:(p2--p1)fi
+enddef;
+
+
+vardef straightarm@#(expr join,tip,heel,thickness,pull)=
+ save x,y,toward,p; pair toward; path p;
+ toward=if (str@#="br")or(str@#="tr"):right else:left fi;
+ z1=tip if (str@#="br")or(str@#="tr"):- else:+ fi (thickness,0);
+ z2=point .5 of (join{toward}...{tip-heel}z1);
+ z1-z3=whatever*(tip-heel); y3=ypart join;
+ p=z1{z3-z1}...{join-z3}join;
+ z4=pull[z3,point .5 of p];
+ if (str@#="br")or(str@#="tl"):reverse fi
+ (join{toward}...z4...{tip-heel}z1--tip--heel)
+ enddef;
+
+
+vardef constant_angle(expr top_pt,bot_pt,stem)suffix $=
+ save theta;
+ theta=if str$="lr":-else:+fi (angle(length(top_pt-bot_pt) +-+ stem,stem));
+ angle(top_pt-bot_pt)+theta-90
+enddef;
+
+
+vardef pos@#(expr b,d) =
+ (x@#r-x@#l,y@#r-y@#l)=(b,0)rotated d;x@#=.5(x@#l+x@#r);y@#=.5(y@#l+y@#r)enddef;
+
+vardef mpos(text t)(expr b,d)=forsuffixes $=t:pos$(b,d); endfor enddef;
+
+
+def draw_outlines= pickup pencircle scaled 1.5linethickness;
+ for n=1 upto 3:if known p[n]:draw p[n];fi
+ if known p[n]':draw p[n]';fi
+ if known p[n]'':draw p[n]'';fi endfor
+ if numeric mode: % -sl 21.03.1991
+ if mode=proof: drawgrid; fi
+ fi % -sl 21.03.1991
+ enddef;
+
+def drawgrid=
+ pickup pencircle scaled 1;
+ for y:=h,xheight,0,-descender: draw (0,y)--(w,y); endfor
+ for y:=unit step unit until (cap+.5unit): draw (0,y)--(w,y); endfor
+ for y:=unit step -unit until (-d-.5unit): draw (0,y)--(w,y); endfor
+ for x:=0 step unit until (w+.5unit): draw (x,-d)--(x,h); endfor
+enddef;
+
+
+vardef onaline(suffix a,b)(text t)=forsuffixes $=t:z$=whatever[z.a,z.b]; endfor
+ enddef;
+
+
+def showpoints(text t)=
+ if numeric mode: % -sl 21.03.1991
+ if mode=proof:pickup pencircle scaled 3;
+ forsuffixes $:=t:forsuffixes s:=l,,r:if known z$.s:draw z$s;fi endfor endfor
+ pickup pencircle scaled 1; penlabels(t); fi
+ fi % -sl 21.03.1991
+enddef;
+
+
+vardef inlimit(text amt)(expr lowerlimit,upperlimit)=save this;
+ this:=max(amt,lowerlimit); this:=min(this,upperlimit);this
+enddef;
+
+
+let semi_ = ;; let colon_ = :; let endchar_ = endchar;
+def iff expr b = if b:let next_=use_it else:let next_=lose_it fi; next_ enddef;
+def use_it = let : = restore_colon; enddef;
+def restore_colon = let : = colon_; enddef;
+def lose_it = let endchar=fi; let ;=restore_endchar semi_ if false enddef;
+def restore_endchar=let ;=semi_; let endchar=endchar_; enddef;
+def always_iff expr b = use_it enddef;
+boolean wanted[];
+
+ % for x:="I":
+ % wanted[byte x]:=true; endfor
+ % this allows specifying only those characters which are to be shown
+ % the chars can be specified inside of quotes("c") or as a number(23)
+def OK expr x=known wanted[byte x] enddef;
+ % let iff=always_iff; % allows testing of all chars in the file
+
+
+def min_limit(text this)(expr limit)=if this>limit:save this;this=limit;fi
+enddef;
+
+
+% def define_adj_whole_pixels(text t)=
+% forsuffixes $:=t: $:=hround(max(eps,$.#-linethickness#)*hppp); endfor enddef;
+
+def define_min_adj_whole_pixels(text t)=
+ forsuffixes $:=t: $:=max(lowres_min,hround(max(eps,$.#-linethickness#)*hppp));
+ endfor enddef;
+
+def bool(text t)=boolean t; t enddef;
+
+def vpix(text t)(text tt)= t:=tt; t:=vround(tt.#*hppp); enddef; % whole v pix
+def wpix(text tt)(text t)=
+ forsuffixes $:=t: $:=hround(tt.#*hppp); endfor enddef; % whole pixels
+def adjpix(text tt)(text t)= % adjusted pixels
+ forsuffixes $:=t: $:=hround(max(eps,tt.#*hppp-linethickness)); endfor enddef;
+
+def minadjpix(text ttt)(text tt)(text t)= % adjusted pixels with a minimum
+ forsuffixes $:=t: $:=max(ttt,hround(tt.#*hppp-linethickness));
+ endfor enddef;
+
+
+def highres_lowres(text t)(expr a,b)=t:=if lowres:b else:a fi enddef;
+
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lxbbold.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lxbbold.mf
new file mode 100644
index 00000000000..8f9b6ab8aa2
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lxbbold.mf
@@ -0,0 +1,162 @@
+%% File LXBBOLD copied and modified from AMSYB by American Mathematical Society
+%% in order to cope with the necessities of the slides fonts
+%%
+%% Claudio Beccari 2007
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Changes of minimal parameters in outlined characters for version 2.1
+% done by Stefan Lindner, 18-April-1991
+
+input lxbbase;
+%%mode_setup; %called by amsyb.mf; two calls confuse Metafont. NGB 15-OCT-1991
+
+width#:= designsize; % was 8pt#;
+unit#:= width#/18;
+u#:= width#/54;
+smallu#:= width#/162;
+ascender#:= 37/3*unit#;
+cap#:= 37/3*unit#;
+number#:= 36/3*unit#;
+xheight#:= 25/3*unit#;
+descender#:= 12/4*unit#;
+define_whole_vertical_pixels
+ (width,unit,u,smallu,ascender,cap,number,xheight,descender);
+wpix(1.90u) (linethickness);
+wpix(0.65u) (Sover_bot);
+wpix(1.00u) (Aapex,Napex,Vapex,Wapex,Cover,Gover,Oover,Sover_top,Uover);
+wpix(9.00u) (Uthin_bracket);
+wpix(8.00u) (Kthin_diag_bracket,Xthin_diag_bracket,Ythin_diag_bracket);
+wpix(7.00u) (k_thin_diag);
+wpix(6.00u) (c_thin_stem_bracket);
+wpix(5.00u) (c_thick_stem_bracket,c_inner_bracket,lc_thick_stem_bracket);
+wpix(4.00u) (c_round_bracket);
+adjpix(1.35u) (serif_thickness);
+adjpix(1.30u) (Emid_tip,inbeak);
+adjpix(1.50u) (Atip,Btopthin,Bmidthin,Ebot_tip,Ltip,Mapex,
+ Ntip,Ttip,Vtip,Wtip,Ztip,outbeak);
+adjpix(1.65u) (Bbotthin,Gbotthin,Stopthin);
+adjpix(1.75u) (Dtopthin,Ebotarm,Lthin,Tthin);
+adjpix(1.80u) (Abar,Ctopthin,Dbotthin,Gtopthin,Jbotthin,Pmidarm,Sbotthin);
+adjpix(1.90u) (Emidarm,Etoparm,Othin,Pthin,Rthin,Ydiag,Zthin);
+adjpix(2.00u) (kthin,Mthin_diag,Wleftthin);
+adjpix(2.10u) (Ctip);
+adjpix(2.25u) (Athin,Kthin,Mthin_vert,Nthin,Uthin,Vthin,Wrightthin,Xthin);
+adjpix(2.50u) (Hbar);
+adjpix(2.60u) (Cbotthin);
+
+
+%%%% Begin of changes for version 2.1
+if pixels_per_inch < 1500/designsize:
+ if pixels_per_inch < 1000/designsize:
+ if pixels_per_inch < 800/designsize:
+ if pixels_per_inch < 700/designsize:
+ minadjpix(0)(8.80u) (stem);
+ minadjpix(0)(6.80u) (kdiag);
+ minadjpix(0)(7.40u) (kstem);
+ minadjpix(0)(7.80u) (Jbulb,Mdiag);
+ minadjpix(0)(8.20u) (Kdiag);
+ minadjpix(0)(8.30u) (Gstem,Mstem);
+ minadjpix(0)(8.60u) (Lstem,Ustem,Ythick_diag);
+ minadjpix(0)(8.50u) (Bstem,Estem,Fstem,Ndiag,Rdiag,Xdiag,Zdiag);
+ minadjpix(0)(8.90u) (Btopcurve);
+ minadjpix(1)(9.30u) (Bbotcurve,Pcurve,Rcurve);
+ minadjpix(1)(9.50u) (Ccurve,Dcurve,Gcurve,Ocurve);
+ else:
+ minadjpix(1)(8.80u) (stem);
+ minadjpix(1)(6.80u) (kdiag);
+ minadjpix(1)(7.40u) (kstem);
+ minadjpix(1)(7.80u) (Jbulb,Mdiag);
+ minadjpix(1)(8.20u) (Kdiag);
+ minadjpix(1)(8.30u) (Gstem,Mstem);
+ minadjpix(1)(8.60u) (Lstem,Ustem,Ythick_diag);
+ minadjpix(1)(8.50u) (Bstem,Estem,Fstem,Ndiag,Rdiag,Xdiag,Zdiag);
+ minadjpix(1)(8.90u) (Btopcurve);
+ minadjpix(2)(9.30u) (Bbotcurve,Pcurve,Rcurve);
+ minadjpix(2)(9.50u) (Ccurve,Dcurve,Gcurve,Ocurve);
+ fi
+ else:
+ adjpix(3.0u) (Mapex);
+ minadjpix(1)(8.80u) (stem);
+ minadjpix(2)(6.80u) (kdiag);
+ minadjpix(2)(7.40u) (kstem);
+ minadjpix(2)(7.80u) (Jbulb);
+ minadjpix(1)(6.00u) (Mdiag);
+ minadjpix(2)(8.20u) (Kdiag);
+ minadjpix(2)(8.30u) (Gstem)
+ minadjpix(2)(8.30u) (Mstem);
+ minadjpix(2)(8.60u) (Lstem,Ustem,Ythick_diag);
+ minadjpix(2)(8.50u) (Bstem,Ndiag,Rdiag,Xdiag,Zdiag);
+ minadjpix(1)(8.50u) (Estem, Fstem);
+ minadjpix(2)(8.90u) (Btopcurve);
+ minadjpix(3)(9.30u) (Bbotcurve,Pcurve,Rcurve);
+ minadjpix(3)(9.50u) (Ccurve,Dcurve,Gcurve,Ocurve);
+ fi
+ else:
+ adjpix(3.0u) (Mapex);
+ minadjpix(2)(8.80u) (stem);
+ minadjpix(3)(6.80u) (kdiag);
+ minadjpix(3)(7.40u) (kstem);
+ minadjpix(3)(7.80u) (Jbulb);
+ minadjpix(1)(5.00u) (Mdiag);
+ minadjpix(3)(8.20u) (Kdiag);
+ minadjpix(3)(8.30u) (Gstem);
+ minadjpix(2)(8.30u) (Mstem);
+ minadjpix(3)(8.60u) (Lstem,Ustem,Ythick_diag);
+ minadjpix(3)(8.50u) (Estem,Fstem,Ndiag,Rdiag,Xdiag,Zdiag);
+ minadjpix(2)(8.50u) (Bstem);
+ minadjpix(3)(8.90u) (Btopcurve);
+ minadjpix(3)(9.30u) (Bbotcurve,Pcurve,Rcurve);
+ minadjpix(3)(9.50u) (Ccurve,Dcurve,Gcurve,Ocurve)
+ fi
+else:
+ minadjpix(4)(8.80u) (stem);
+ minadjpix(4)(6.80u) (kdiag);
+ minadjpix(4)(7.40u) (kstem);
+ minadjpix(4)(7.80u) (Jbulb,Mdiag);
+ minadjpix(4)(8.20u) (Kdiag);
+ minadjpix(4)(8.30u) (Gstem,Mstem);
+ minadjpix(4)(8.60u) (Lstem,Ustem,Ythick_diag);
+ minadjpix(4)(8.50u) (Bstem,Estem,Fstem,Ndiag,Rdiag,Xdiag,Zdiag);
+ minadjpix(4)(8.90u) (Btopcurve);
+ minadjpix(5)(9.30u) (Bbotcurve,Pcurve,Rcurve);
+ minadjpix(5)(9.50u) (Ccurve,Dcurve,Gcurve,Ocurve)
+fi;
+%%%% end of changes for version 2.1
+
+boolean lowres; lowres:=width<50;
+highres_lowres(pullin) (.85)(1); % Emidarm
+highres_lowres(pulleven) (1)(1.3); % Etoparm,Tarms,Zarms
+highres_lowres(pullout) (1.1)(1); % Ebotarm,Lbotarm
+highres_lowres(bracket0) (.0)(0); % Ntopleft
+highres_lowres(bracket3) (.3)(0); % Nthinstems
+highres_lowres(bracket01) (.0)(.1); % Uthin
+highres_lowres(bracket32) (.3)(.2); % Vstems
+highres_lowres(bracket4) (.4)(0); % P-all,R-all,I-all,F-all
+highres_lowres(bracket42) (.4)(.2); % Xdiag
+
+bool(ctrls):=false;
+entasis:=inlimit(0)(0,1);
+serif_constant_amt:=0pt;
+join_radius:=1;
+bool(softpath):=true;
+
+c_thick_stem_bracket:=min(.5cap-eps,c_thick_stem_bracket);
+rulepen:=pensquare scaled 1;
+extra_beginchar:=extra_beginchar&"save t,p,ref; path p[],p[]',p[]'',ref[];";
+extra_beginchar:=extra_beginchar&"pickup pencircle scaled linethickness;";
+
+for x:="R":
+ wanted[byte x]:=true; endfor % test these characters
+ let iff=always_iff; % tests all chars in the file
+
+font_normal_space .3width#; % TeX fontdimen 2 normal word space
+font_normal_stretch .15width#; % TeX fontdimen 3 interword stretch
+font_normal_shrink .1width#; % TeX fontdimen 4 interword shrink
+font_x_height xheight#; % Tex fontdinem 5 for accents
+font_quad width#; % TeX fontdimen 6 quad width
+font_extra_space .1width#; % TeX fontdimen 7 extra space(period)
+
+
+input lxbcaps
+bye % changed from "end" 26 Aug 93; bnb
diff --git a/Master/texmf-dist/fonts/source/public/lxfonts/lxbcaps.mf b/Master/texmf-dist/fonts/source/public/lxfonts/lxbcaps.mf
new file mode 100644
index 00000000000..ebe2cbb6025
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/lxfonts/lxbcaps.mf
@@ -0,0 +1,805 @@
+%% File LXBCAPS copied and modified from AMSYB by American Mathematical Society
+%% in order to cope with the necessities of the slides fonts
+%%
+%% Claudio Beccari 2007
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+% Changes made by Stefan Lindner for version 2.1 to fix some
+% rounding problems at low resolutions 03-Mar-1991
+% ru defined and substituted for u in drawings of characters.
+
+def ru(expr A)=
+ begingroup
+ save rounded_u; rounded_u#:=A*u#;
+ define_whole_vertical_pixels(rounded_u);
+ rounded_u
+ endgroup
+enddef;
+
+iff OK "A": "The letter A"; beginchar("A",13unit#,cap#,0);
+
+ top z20=(.48w,h+Aapex); pos20(Atip,0);
+ bot y3=0; z3l=whatever[z20l,(1.5unit,0)];
+ bot y6=0; z6r=whatever[z20r,(w-round(unit+u),0)];
+ z20l=z1l; z20r=z4r;
+ mpos(1,3)(Athin,constant_angle(z20l,(1.5unit,0),0));
+ mpos(4,6)(stem,constant_angle(z20r,(w-round(unit+u),0),0));
+ onaline(1l,3l)(2l); y2l=c_round_bracket;
+ onaline(1r,3r)(2r); y2r=c_inner_bracket;
+ onaline(4l,6l)(5l); y5l=c_inner_bracket;
+ onaline(4r,6r)(5r); y5r=c_thick_stem_bracket;
+ z40=whatever[.8[z1l,z1r],z2r]; z40=whatever[.8[z4r,z4l],z5l];
+ y41=round(.4[serif_thickness,y40]-Abar); % bar bottom
+ y42=y41+Abar;
+ ref1=rightserif(z3,z1,z2l,z40,ru(7),bracket0)--z40;
+ ref2=z40--leftserif(z6,z4,z40,z5r,ru(7),bracket32);
+ ref3=(0,y41)--(w,y41);
+ ref4=(0,y42)--(w,y42);
+ x11=xpart (ref1 intersectionpoint ref3);
+ x12=xpart (ref2 intersectionpoint ref3);
+ x13=xpart (ref2 intersectionpoint ref4);
+ x14=xpart (ref1 intersectionpoint ref4);
+ y11=y12=y41; y13=y14=y42;
+
+ p1=z20l--leftserif(z3,z1,z2l,z1r,ru(3),bracket0)--ref1--ref2--
+ rightserif(z6,z4,z5l,z5r,ru(2.5),bracket0)--z20r--cycle;
+ p2=z11--z12--z13--z14--cycle;
+
+ showpoints(1,2,3,4,5,6,11,12,13,14,20,40,41,42);
+ draw_outlines;
+ endchar;
+
+
+iff OK "B": "The letter B"; beginchar("B",12unit#,cap#,0);
+
+ top lft z1l=(round(ru(5)+2smallu),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z2r=(x1r,h-c_round_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ z3r=(x1r,c_round_bracket);
+ bot z4l=(x1l,0);
+ mpos(1,4)(Bstem,0);
+ z5l=(rt x1r+ru(4),y1);
+ z5r=(rt x1r+ru(3),y1-Btopthin);
+ onaline(1r,4r)(8l);
+ bot y8l=.5h-smallu; pos8(Bmidthin,90);
+ rt z6l=(w-round(1.5unit),.5[y5l,y8l]); pos6(Btopcurve,180);
+ rt z9l=(w-round(ru(2.5)),.5[y10l,y8r]); pos9(Bbotcurve,180);
+ z10l=(rt x1r+ru(4),y4);
+ z10r=(rt x1r+ru(3),y4+Bbotthin);
+ z7l=(rt x1r+ru(3),y8l);
+ rt z7=(lft x9r-ru(3),.5[top y8l,y8r]);
+
+ p1=leftserif(z1,z4,z2l,z2r,ru(5.2),bracket4)--
+ leftserif(z4,z1,z3l,z3r,ru(5.2),bracket4)--
+ curve.br(z10l,.5,z9l,.7)--curve.tr(z9l,.7,z7,.5)--
+ curve.br(z7,.5,z6l,.5)--curve.tr(z6l,.8,z5l,.6)--cycle;
+ p1'=z8l--z8r;
+ p1''=curve.br(z8r,.6,z6r,.85)--curve.tr(z6r,.7,z5r,.5)...
+ {left}z5r...{down}z2r--cycle;
+ p2''=z8l--z3r{down}...{right}z10r--
+ curve.br(z10r,.6,z9r,.7)--curve.tr(z9r,.8,z7l,.6)--cycle;
+
+ showpoints(1,2,3,4,5,6,7,8,9,10);
+ draw_outlines;
+ endchar;
+
+
+iff OK "C": "The letter C"; beginchar("C",(1+12)*unit#,cap#,0);
+
+ bot z2l=(max(7unit,.5w),-Cover);
+ y2r=y2l+Cbotthin;
+ x2r=x2l+(min(Cbotthin,abs(y2r-y2l)));
+ bot rt z1l=(w-ru(2),2unit);
+ ref1=z2l{right}...z1l;
+ pos1(Ctip,angle(z1l-precontrol 1 of ref1)+ 90);
+ lft z3l=(round ru(2),.5h); pos3(Ccurve,0);
+ top z4l=(x2l,h+Cover);
+ y4r=y4l-Ctopthin;
+ x4r=x4l+(min(ru(.5),abs(y4r-y4l)));
+ bot rt z5=(w-round(unit+ru(.5)),h-3unit-ru(2.5));
+ z6=(x5,y4l);
+ z7=z6-(ru(2.5),ru(2.5));
+ p1=curve.tl(z4l,.5,z3l,.7)--curve.bl(z3l,.7,z2l,.5)...z1l--
+ z1r...reversecurve.bl(z3r,.7,z2r,.6)--reversecurve.tl(z4r,.6,z3r,.6)--
+ beak(z4r,z5,z6,z7,z4l,1.2)--cycle;
+
+ showpoints(1,2,3,4,5,6,7);
+ draw_outlines;
+ endchar;
+
+
+iff OK "D": "The letter D"; beginchar("D",13unit#,cap#,0);
+
+ top lft z1l=(round(ru(5)+smallu),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z2r=(x1r,h-c_round_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ z3r=(x1r,c_round_bracket);
+ bot z4l=(x1l,0);
+ mpos(1,4)(stem,0);
+ z5l=(rt x1r+ru(4),y4);
+ z5r=(rt x1r+ru(3),y5l+Dbotthin);
+ rt z6l=(w-u-2smallu,.52h); pos6(Dcurve,180);
+ z7l=(rt x1r+ru(4),y1);
+ z7r=(rt x1r+ru(3.5),y7l-Dtopthin);
+
+ p1=leftserif(z1,z4,z2l,z2r,ru(4.5),bracket4)--
+ leftserif(z4,z1,z3l,z3r,ru(4.5),bracket4)--
+ curve.br(z5l,.5,z6l,.7)--curve.tr(z6l,.7,z7l,.5)--cycle;
+ p1''=curve.br(z5r,.5,z6r,.8)--curve.tr(z6r,.7,z7r,.5)...
+ {down}z2r...z3r{down}...{right}z5r--cycle;
+
+ showpoints(1,2,3,4,5,6,7);
+ draw_outlines;
+ endchar;
+
+
+iff OK "E": "The letter E"; beginchar("E",(1+11)*unit#,cap#,0);
+
+ top lft z1l=(round(ru(5.5)),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z2r=(x1r,h-c_inner_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ z3r=(x1r,c_inner_bracket);
+ bot z4l=(x1l,0);
+ mpos(1,4)(Estem,0);
+ bot rt z11=(w-unit,0);
+ top rt z12=(w-.5unit,3unit+ru(2));
+ z13=(.5w+.5unit,y4+Ebotarm);
+ z14=(min(x13,rt x4r+.5unit),y13);
+ rt z21=(w-ru(4),y1);
+ bot z22=(x21,top y1-3.5unit);
+ z23=(ru(19),y1-Etoparm);
+ z24=(rt x1r+.5unit,y23);
+ onaline(1r,4r)(31,35);
+ bot y31=.5h-smallu;
+ y35=y31+Emidarm;
+ rt z33=(w-(3.8unit),.5[y31,y35]);
+ x32=x34=x33;
+ bot y32=bot y31-2.5unit;
+ top y34=bot y32+6unit;
+
+ p1=leftserif(z4,z1,z3l,z3r,ru(4.75),.4)--
+ straightarm.br(z13,z12,z11,Ebot_tip,pullout)--z14{left}...{up}z3r--
+ z2r{up}...{right}z24--straightarm.tr(z23,z22,z21,Emid_tip,pulleven)--
+ leftserif(z1,z4,z2l,z2r,ru(4.75),.4)--cycle;
+ p1'=straightarm.br(z31,z32,z33,Emid_tip,pullin)--
+ straightarm.tr(z35,z34,z33,Emid_tip,pullin);
+
+ showpoints(1,2,3,4,11,12,13,14,21,22,23,24,31,32,33,34,35);
+ draw_outlines;
+ endchar;
+
+
+iff OK "F": "The letter F"; beginchar("F",(1+10)*unit#,cap#,0);
+
+ top lft z1l=(round(ru(5.5)),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z2r=(x1r,h-c_inner_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ z3r=(x1r,c_inner_bracket);
+ bot z4l=(x1l,0);
+ mpos(1,4)(Fstem,0);
+ rt z21=(w-.5unit,y1);
+ bot z22=(x21,top y1-3.5unit);
+ z23=(ru(19),y1-Etoparm);
+ z24=(rt x1r+.5unit,y23);
+ onaline(1r,4r)(31,35);
+ bot y31=.5h-smallu;
+ y35=y31+Emidarm;
+ rt z33=(w-3unit,.5[y31,y35]);
+ x32=x34=x33;
+ bot y32=bot y31-2.5unit;
+ top y34=bot y32+6unit;
+
+ p1=fullserif(z4,z1,z3l,z3r,ru(4.75),ru(6),bracket4)--z2r{up}...{right}z24--
+ straightarm.tr(z23,z22,z21,Emid_tip,pulleven)--
+ leftserif(z1,z4,z2l,z2r,ru(4.75),bracket4)--cycle;
+ p1'=straightarm.br(z31,z32,z33,Emid_tip,pullin)--
+ straightarm.tr(z35,z34,z33,Emid_tip,pullin);
+
+ showpoints(1,2,3,4,21,22,23,24,31,32,33,34,35);
+ draw_outlines;
+ endchar;
+
+
+iff OK "G": "The letter G"; beginchar("G",(1+13)*unit#,cap#,0);
+
+ bot z2l=(max(7unit,.5w),-Gover);
+ y2r=y2l+Gbotthin;
+ x2r=x2l+(min(Gbotthin,abs(y2r-y2l)));
+ lft z3l=(round ru(2),.5h); pos3(Gcurve,0);
+ top z4l=(x2l,h+Gover);
+ y4r=y4l-Gtopthin;
+ x4r=x4l+(min(.5u,abs(y4r-y4l)));
+ bot rt z5=(w-round(2unit+.5u),h-3unit-ru(2.5));
+ z6=(x5,y4l);
+ z7=z6-(ru(2.5),ru(2.5));
+ top rt z11r=(rt x5+.5u,5unit+.5u);
+ bot z13r=(x11r,unit-2smallu);
+ mpos(11,13)(Gstem,0);
+ onaline(11r,13r)(12r); y12r=max(y11r-c_thick_stem_bracket,y13r);
+ onaline(11l,13l)(12l); y12l=max(y11l-c_thick_stem_bracket,y13r+unit);
+
+ p1=curve.tl(z4l,.5,z3l,.7)--curve.bl(z3l,.7,z2l,.5)--z2l{right}...z13r--
+ fullserif(z11,z13,z12l,z12r,ru(5.5),ru(4.5),bracket0)...{down}z13l...{left}z2r--
+ reversecurve.bl(z3r,.7,z2r,.6)--reversecurve.tl(z4r,.6,z3r,.6)--
+ beak(z4r,z5,z6,z7,z4l,1.2)--cycle;
+
+ showpoints(2,3,4,5,6,7,11,12,13);
+ draw_outlines;
+ endchar;
+
+
+iff OK "H": "The letter H"; beginchar("H",(1+13)*unit#,cap#,0);
+
+ numeric H_inner_serif_amt;
+ top lft z1l=(round(3.75unit/2),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ bot z4l=(x1l,0);
+ top rt z11r=(w-round(3.75unit/2),h);
+ z12r=(x11r,h-c_thick_stem_bracket);
+ z13r=(x11r,c_thick_stem_bracket);
+ bot z14r=(x11r,0);
+ mpos(1,2,3,4,11,12,13,14)(stem,0);
+ onaline(1r,4r)(5l,5r); bot y5l=bot y15l=.5cap-u;
+ onaline(11l,14l)(15l,15r); y5r=y15r=y5l+Hbar;
+ H_inner_serif_amt=ru(4.75);
+ if (x1r+H_inner_serif_amt+.5linethickness)>.5w: % keeps inner serifs
+ H_inner_serif_amt:=.5w-x1r-.5linethickness-1; % from merging
+ fi
+
+ p1=fullserif(z1,z4,z2l,z2r,ru(4.75),H_inner_serif_amt,bracket4)--
+ fullserif(z4,z1,z3l,z3r,ru(4.75),H_inner_serif_amt,bracket4)--cycle;
+ p2=fullserif(z11,z14,z12l,z12r,H_inner_serif_amt,ru(4.75),bracket4)--
+ fullserif(z14,z11,z13l,z13r,H_inner_serif_amt,ru(4.75),bracket4)--cycle;
+ p1'=z5r--z15r--z15l--z5l;
+
+ showpoints(1,2,3,4,5,11,12,13,14,15);
+ draw_outlines;
+ endchar;
+
+
+iff OK "I": "The letter I"; beginchar("I",(1+6)*unit#,cap#,0);
+
+ top lft z1l=(round((w-stem-linethickness)/2),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ bot z4l=(x1l,0);
+ mpos(1,2,3,4)(stem,0);
+
+ p1=fullserif(z1,z4,z2l,z2r,ru(5),ru(5),bracket4)--
+ fullserif(z4,z1,z3l,z3r,ru(5),ru(5),bracket4)--cycle;
+
+ showpoints(1,2,3,4);
+ draw_outlines;
+ endchar;
+
+
+iff OK "J": "The letter J"; beginchar("J",(2+7)*unit#,cap#,descender#);
+
+ top rt z1r=(round(w-2unit),h);
+ z2r=(x1r,h-c_thick_stem_bracket);
+ z3r=(x1r,2unit);
+ z3l=(x1l,u);
+ mpos(1,2)(stem,0);
+ bot z10r=(w/3,-.45d);
+ z10l=z10r+(-smallu,Jbotthin);
+ lft z12l=(smallu,ru(2)); pos12(Jbulb,0);
+ top z13=(x12,2unit-smallu);
+ ref1=z12r...z12l...cycle;
+ z14= point 1.75 of ref1; z15=direction 1.75 of ref1;
+ z11=(x12r-.5unit,.5[y10l,y14]);
+
+ p1=fullserif(z1,z2,z2l,z2r,ru(5.5),ru(4.75),bracket4)--z3l{down}...z10l{left}...
+ z11{up}...z14{z15}...z12r{up}...z13{left}...z12l{down}... % bulb
+ curve.br(z10r,.65,z3r,.65)--cycle;
+
+ showpoints(1,2,3,10,11,12,13,14,15);
+ draw_outlines;
+ endchar;
+
+
+iff OK "K": "The letter K"; beginchar("K",(1+13)*unit#,cap#,0);
+
+ numeric K_inner_serif_amt;
+ top lft z11l=(2unit,h);
+ z12l=(x11l,h-c_thick_stem_bracket);
+ z13l=(x11l,c_thick_stem_bracket);
+ bot z14l=(x11l,0);
+ mpos(11,12,13,14)(stem,0);
+ onaline(11r,14r)(3r,4);
+ bot y3r=.4cap;
+ top rt z1r=(w-2unit,cap);
+ mpos(1,3)(Kthin,angle(z1r-z3r)-90);
+ y2l=y2r=cap-Kthin_diag_bracket;
+ onaline(1l,3l)(2l,4);
+ onaline(1r,3r)(2r,21l);
+ onaline(1,3)(0); top y0=cap;
+ bot y21l=y3r+.5unit;
+ bot rt z23r=(w-ru(2),0);
+ mpos(21,23)(Kdiag,angle(z1r-z3r));
+ y22l=y22r=c_thick_stem_bracket;
+ onaline(21l,23l)(22l);
+ onaline(21r,23r)(22r);
+ onaline(21,23)(20); bot y20=0;
+
+ K_inner_serif_amt=ru(4.75);
+ if (x11r+K_inner_serif_amt+.5linethickness)>.5w:
+ K_inner_serif_amt:=.5w-x11r-.5linethickness-1;
+ fi
+
+ p1=fullserif(z11,z14,z12l,z12r,ru(4.75),K_inner_serif_amt,bracket4)--
+ fullserif(z14,z11,z13l,z13r,ru(4.75),K_inner_serif_amt,bracket4)--cycle;
+ p2=z3r--fullserif(z0,z3,z2l,z2r,ru(9),ru(3.5),bracket01)--z4--cycle;
+ p3=z21l--fullserif(z20,z21,z22l,z22r,ru(4),.5unit,bracket32)--z21r--cycle;
+
+ showpoints(0,1,2,3,4,11,12,13,14,20,21,22,23);
+ draw_outlines;
+ endchar;
+
+
+iff OK "L": "The letter L"; beginchar("L",(1+11)*unit#,cap#,0);
+
+ top lft z1l=(round(ru(5.5)),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ z3r=(x1r,c_inner_bracket);
+ bot z4l=(x1l,0);
+ mpos(1,2,4)(Lstem,0);
+ bot rt z11=(w-unit,0);
+ top rt z12=(w-.5unit,4unit);
+ z13=(.5w+.5unit,y4+Lthin);
+ z14=(min(x13,rt x4r+.5unit),y13);
+
+ p1=fullserif(z1,z4,z2l,z2r,ru(4.75),ru(4.5),bracket4)--
+ leftserif(z4,z1,z3l,z3r,ru(4.75),bracket4)--
+ straightarm.br(z13,z12,z11,Ltip,pullout)--z14{left}...{up}z3r--cycle;
+
+ showpoints(1,2,3,4,11,12,13,14);
+ draw_outlines;
+ endchar;
+
+
+iff OK "M": "The letter M"; beginchar("M",(1+16)*unit#,cap#,0);
+
+ lft x4l=ru(5.6); bot y4=0;
+ rt x14r=w-2unit; bot y14=0;
+ top z1l=(x4l,h);
+ top z11r=(x14r,h);
+ mpos(1,3,4)(Mthin_vert,0);
+ mpos(11,12,13,14)(Mstem,0);
+ onaline(1,4)(3); y12l=h-c_thick_stem_bracket;
+ onaline(11,14)(12,13); y3l=y13l=c_thick_stem_bracket;
+ bot z22=(x1r+.5(x11l-x1r-Mapex),0); pos22(Mapex,0);
+ top z24=(x11l-u,h);
+ top z26=(rt x1r+Mdiag,h);
+ top z25=(.5[x24,x26],3unit+ru(2)); pos25(u,0);
+ bot y23=h-ru(4);
+ (z23-z22r)=whatever*(z24-z25r);
+ bot y21=h-ru(5);
+ (z21-z22l)=whatever*(z26-z25l);
+ onaline(26,25l)(30r,31r); onaline(21,22l)(30l,31l);
+ y30=y30l=y30r=h-.5linethickness; x30=.5[x30l,x30r];
+ y31=y31l=y31r=0; x31=.5[x31l,x31r];
+ ref1=leftserif(z30,z31,z21,z25r,ru(5.5),bracket0)--z22l;
+ z2l=ref1 intersectionpoint ((x3l,0)--(x3l,h));
+ z2r=ref1 intersectionpoint ((x3r,0)--(x3r,h));
+
+ p1=fullserif(z4,z3,z3l,z3r,ru(4.7),ru(5),bracket0)--z2r--z2l--cycle;
+ p2=z22r--z23--(x11l,y24)--z24--z25r--z25l--z26--ref1--cycle;
+ p3=fullserif(z14,z13,z13l,z13r,ru(4.7),ru(5),bracket0)--
+ rightserif(z11,z12,z12l,z12r,ru(4.7),bracket0)--(x11l,y24)--cycle;
+
+ showpoints(1,2,3,4,11,12,13,14,21,22,23,24,25,26,30,31);
+ draw_outlines;
+ endchar;
+
+
+iff OK "N": "The letter N"; beginchar("N",13unit#,cap#,0);
+
+ bot lft z1l=(round 2unit,0); mpos(1,2,11,12)(Nthin,0);
+ z2=(x1,c_thin_stem_bracket);
+ z3=(x1l,h-ru(4));
+ top rt z11r=(round (w-ru(5.3)),h);
+ z12=(x11,h-c_thin_stem_bracket);
+ bot z22=(x11r,-Napex);
+ z23l=z22-(Ntip,0); mpos(4,23)(Ndiag,angle(z3-z23l)-90);
+% onaline(1r,2r)(4l); bot z4l=whatever[z3,z23l];
+ onaline(1r,2r)(4l); z4l=whatever[z3,z23l];
+ onaline(11l,12l)(14); onaline(4r,23r)(13,14);
+ top y21=h; z21=whatever[z14,1.05[z4l,z4r]];
+ onaline(4,23)(20); y20=y21;
+ onaline(11r,12r)(13);
+
+ p1=leftserif(z20,z4,z4l,z4r,ru(2.5),bracket0)--z23l--z22--z13--z21--cycle;
+ p1'=z3--fullserif(z1,z2,z2l,z2r,ru(4.7),ru(5),bracket3)--z4l;
+ p2'=z13--fullserif(z11,z12,z12l,z12r,ru(5),ru(4.2),bracket3)--z14;
+
+ showpoints(1,2,3,4,11,12,13,14,20,21,22,23);
+ draw_outlines;
+ endchar;
+
+
+iff OK "O": "The letter O"; beginchar("O",(1+13)*unit#,cap#,descender#);
+
+ top z1l=(.5w,h+Oover); pos1(Othin,-90);
+ lft z2l=(round(ru(1.8)),.5h); pos2(Ocurve,0);
+ bot z3l=(.5w,-Oover); pos3(Othin,90);
+ rt z4l=(round(w-ru(1.8)),.5h); pos4(Ocurve,180);
+
+ p1=curve.tl(z1l,.5,z2l,.7)--curve.bl(z2l,.7,z3l,.5)--
+ curve.br(z3l,.5,z4l,.7)--curve.tr(z4l,.7,z1l,.5)--cycle;
+ p1''=curve.tl(z1r,.6,z2r,.7)--curve.bl(z2r,.7,z3r,.6)--
+ curve.br(z3r,.6,z4r,.7)--curve.tr(z4r,.7,z1r,.6)--cycle;
+
+ showpoints(1,2,3,4);
+ draw_outlines;
+ endchar;
+
+
+iff OK "P": "The letter P"; beginchar("P",(1+10)*unit#,cap#,0);
+
+ top lft z1l=(round(ru(5)+smallu),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z2r=(x1r,h-c_round_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ z3r=(x1r,c_inner_bracket);
+ bot z4l=(x1l,0);
+ mpos(1,4)(stem,0);
+ z5l=(rt x1r+ru(4),y1);
+ z5r=(rt x1r+ru(3),y1-Pthin);
+ rt z6l=(w-2smallu,.5[y5l,y7l]); pos6(Pcurve,180);
+ onaline(1r,4r)(8l,8r); bot y8l=5.5unit; y8r=y8l+Pmidarm;
+ z7l=(rt x1r+ru(4),y8l-round(.2smallu));
+ z7r=(rt x1r+ru(3),y8l+Pthin);
+
+ p1=leftserif(z1,z4,z2l,z2r,ru(4.5),bracket4)--
+ fullserif(z4,z1,z3l,z3r,ru(4.5),ru(4.8),bracket4)--z8l{right}...
+ curve.br(z7l,.5,z6l,.7)--curve.tr(z6l,.7,z5l,.6)--cycle;
+ p1'=z8l--z8r;
+ p1''=z8r--curve.br(z7r,.6,z6r,.8)--curve.tr(z6r,.8,z5r,.7)...
+ {down}z2r--cycle;
+
+ showpoints(1,2,3,4,5,6,7,8);
+ draw_outlines;
+ endchar;
+
+
+iff OK "Q": "The letter Q"; beginchar("Q",(1+13)*unit#,cap#,descender#);
+
+ top z1l=(.5w,h+Oover); pos1(Othin,-90);
+ lft z2l=(round(ru(1.8)),.5h); pos2(Ocurve,0);
+ bot z3l=(.5w,-Oover); pos3(Othin,90);
+ rt z4l=(round(w-ru(1.8)),.5h); pos4(Ocurve,180);
+ ref1=curve.bl(z2l,.7,z3l,.5)--curve.br(z3l,.5,z4l,.7);
+ ref2=(.35w,-d)--(.35w,h);
+ ref3=(.35w+stem+2linethickness,-d)--(.35w+stem+2linethickness,h);
+ lft z11=ref1 intersectionpoint ref2;
+ bot rt z13r=(round(w-ru(2.5)),-d+4smallu);
+ bot z12=(.6[x11,x13r],-d-round(2smallu));
+ ref4=z12{right}...z13r;
+ pos13(serif_thickness,angle(z13r-precontrol 1 of ref4)-90);
+ z14=z13l-(ru(3.5),.5u);
+ rt z15=ref1 intersectionpoint ref3;
+
+ p1=curve.tl(z1l,.5,z2l,.7)--ref1--curve.tr(z4l,.7,z1l,.5)--cycle;
+ p1'=z11...z12{right}...z13r--z13l...z14{left}...z15;
+ p1''=curve.tl(z1r,.6,z2r,.7)--curve.bl(z2r,.7,z3r,.6)--
+ curve.br(z3r,.6,z4r,.7)--curve.tr(z4r,.7,z1r,.6)--cycle;
+
+ showpoints(1,2,3,4,11,12,13,14,15);
+ draw_outlines;
+ endchar;
+
+
+iff OK "R": "The letter R"; beginchar("R",(1+12)*unit#,cap#,0);
+
+ top lft z1l=(round(ru(5)+2smallu),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z2r=(x1r,h-c_round_bracket);
+ z3l=(x1l,c_thick_stem_bracket);
+ z3r=(x1r,c_inner_bracket);
+ bot z4l=(x1l,0);
+ mpos(1,4)(stem,0);
+ z5l=(rt x1r+ru(5),y1);
+ z5r=(rt x1r+ru(3),y1-Rthin);
+ rt z6r=(w-(ru(5.0)),.5[y5l,y8l]); pos6(Rcurve,0);
+ onaline(1r,4r)(8l,8r); bot y8l=5.6unit; y8r=y8l+Rthin;
+ ref1=curve.br(z8l,.5,z6r,.9);
+ ref2=(rt x4r+.5unit,0)--(rt x4r+.5unit,h);
+ ref3=(x4r+stem+2linethickness,0)--(x4r+stem+2linethickness,h);
+ lft z11l=ref1 intersectionpoint ref2;
+ rt z13l=(w-u,y4); pos13(serif_thickness,90);
+ lft z12l=(w-4unit,y13l);
+ z14=z13r-(ru(3),0);
+ top rt z15=ref1 intersectionpoint ref3;
+
+ p1=leftserif(z1,z4,z2l,z2r,ru(4.8),bracket4)--
+ fullserif(z4,z1,z3l,z3r,ru(4.8),ru(4.8),bracket4)--
+ curve.br(z8l,.6,z6r,.9)--curve.tr(z6r,.7,z5l,.5)--cycle;
+ p1'=z8l--z8r;
+ p2'=z11l--z12l--z13l--z13r{left}
+ if lowres:..tension 10.. else:... fi{z15-z14}z15;
+ p1''=z8r--curve.br(z8r,.8,z6l,.9)--curve.tr(z6l,.9,z5r,.5)...
+ {down}z2r--cycle;
+
+ showpoints(1,2,3,4,5,6,8,11,12,13,14,15);
+ draw_outlines;
+ endchar;
+
+
+iff OK "S": "The letter S"; beginchar("S",10unit#,cap#,0);
+
+ top z1r=(.5w-u,h+Sover_top); pos1(Stopthin,90);
+ rt z3=(w-ru(4),y1r);
+ x4=.3[x3,x1r]; y4=y3-ru(1.5);
+ bot z2=top z3-(0,4unit-smallu);
+ bot z11l=(.5w-u,-Sover_bot); pos11(Sbotthin,90);
+ lft z13=(ru(2),y11l);
+ x14=.3[x13,x11l]; y14=y13+ru(1.5);
+ top z12=bot z13+(0,4.5unit);
+ z21l=(ru(2.5),.73h);
+ y21r=.35[y21l,y1r]; rt x21r=.48[x21l,x1r];
+ z22=(.5w,.52h); pos22(stem,37);
+ z23r=(w-ru(2)-smallu,.28h);
+ y23l=.7[y11l,y23r]; lft x23l=.53[x11l,x23r];
+
+ p1=beak(z1l,z2,z3,z4,z1r,1.2)--curve.tl(z1r,.65,z21l,.65)...
+ z22l...
+ reversecurve.br(z11r,.7,z23l,.7)--
+ beak(z11r,z12,z13,z14,z11l,1.2)--
+ curve.br(z11l,.6,z23r,.6)...1.1[z22l,z22r]...
+ reversecurve.tl(z1l,.6,z21r,.6)--cycle;
+
+ showpoints(1,2,3,4,11,12,13,14,21,22,23);
+ draw_outlines;
+ endchar;
+
+
+iff OK "T": "The letter T"; beginchar("T",(1+11)*unit#,cap#,0);
+
+ mpos(1,2,3)(stem,0);
+ bot lft z1l=(round((w-stem-linethickness)/2),0);
+ z2l=(x1l,c_thick_stem_bracket);
+ top z4=(x1,h);
+ bot y5l=top y4-(3unit+ru(2)); onaline(1,4)(5);
+ mpos(4,5)(round(w-ru(3.5)-linethickness),0);
+ z3l=(x1l,y4-Tthin);
+
+ p1=straightarm.br(z3r,z5r,z4r,Ttip,pulleven)--
+ straightarm.bl(z3l,z5l,z4l,Ttip,pulleven)--cycle;
+ p1'=z3l--fullserif(z1,z4,z2l,z2r,ru(5.25),ru(5.25),bracket4)--z3r;
+
+ showpoints(1,2,3,4,5);
+ draw_outlines;
+ endchar;
+
+
+iff OK "U": "The letter U"; beginchar("U",13unit#,cap#,0);
+
+ top lft z1l=(round(ru(5)+smallu),h);
+ z2l=(x1l,h-c_thick_stem_bracket);
+ z3l=(x1l,4unit);
+ top rt z11r=(w-round(ru(5.5)),h);
+ z12r=(x11r,h-Uthin_bracket);
+ z13r=(x11r,4.5unit);
+ mpos(1,2,3)(Ustem,0);
+ mpos(11,12,13)(Uthin,0);
+ bot z10r=(.5w,-Uover);
+ z10l=z10r+(.5unit,Uthin);
+
+ p1=fullserif(z1,z2,z2l,z2r,ru(4.5),ru(5),bracket4)--
+ curve.bl(z3l,.65,z10r,.65)--curve.br(z10r,.65,z13r,.65)--
+ fullserif(z11,z12,z12l,z12r,ru(4.75),ru(4.75),bracket01)--z13l{down}--
+ reversecurve.br(z10l,.65,z13l,.65)--
+ reversecurve.bl(z3r,.7,z10l,.7)--cycle;
+
+ showpoints(1,2,3,10,11,12,13);
+ draw_outlines;
+ endchar;
+
+
+iff OK "V": "The letter V"; beginchar("V",13unit#,cap#,0);
+
+ bot z20=(.51w,-Vapex); pos20(Vtip,0);
+ top y3=h; z3r=whatever[z20r,(w-round(unit+2smallu),h)];
+ top y6=h; z6l=whatever[z20l,(unit,h)];
+ z20r=z1r; z20l=z4l;
+ mpos(1,3)(Vthin,constant_angle((w-round(unit+2smallu),h),z20r,0));
+ mpos(4,6)(stem,constant_angle((unit,h),z20l,0));
+ onaline(1r,3r)(2r); y2r=h-c_round_bracket;
+ onaline(1l,3l)(2l); y2l=h-c_inner_bracket;
+ onaline(4r,6r)(5r); y5r=h-c_inner_bracket;
+ onaline(4l,6l)(5l); y5l=h-c_thick_stem_bracket;
+ z40=whatever[.8[z1r,z1l],z2l]; z40=whatever[.8[z4l,z4r],z5r];
+
+ p1=z20l--z20r--rightserif(z3,z1,z2l,z2r,ru(3),bracket0)--
+ leftserif(z3,z1,z40,z2r,ru(7),bracket0)--z40--
+ rightserif(z6,z4,z5l,z40,ru(7),bracket32)--
+ leftserif(z6,z4,z5l,z5r,ru(2.5),bracket0)--z20l--cycle;
+
+ showpoints(1,2,3,4,5,6,20,40);
+ draw_outlines;
+ endchar;
+
+
+iff OK "W": "The letter W"; beginchar("W",(1+17)*unit#,cap#,0);
+
+ bot z20=(.3w,-Wapex); pos20(Wtip,0);
+ top y3=h; z3r=whatever[z20r,(.6w,h)];
+ top y6=h; z6l=whatever[z20l,(unit,h)];
+ z20r=z1r; z20l=z4l;
+ mpos(1,3)(Wleftthin,constant_angle((.6w,h),z20r,0));
+ mpos(4,6)(stem,constant_angle((unit,h),z20l,0));
+ onaline(1r,3r)(2r); y2r=h-c_round_bracket;
+ onaline(1l,3l)(2l); y2l=h-c_inner_bracket;
+ onaline(4r,6r)(5r); y5r=h-c_inner_bracket;
+ onaline(4l,6l)(5l); y5l=h-c_thick_stem_bracket;
+ z40=whatever[.8[z1r,z1l],z2l]; z40=whatever[.8[z4l,z4r],z5r];
+
+ bot z21=(.7w,-Wapex); pos21(Wtip,0);
+ top y13=h; z13r=whatever[z21r,(w-unit,h)];
+ top y16=h; z16l=whatever[z21l,(.44w,h)];
+ z21r=z11r; z21l=z14l;
+ mpos(11,13)(Wrightthin,constant_angle((w-unit,h),z21r,0));
+ mpos(14,16)(stem,constant_angle((.44w,h),z21l,0));
+ onaline(11r,13r)(12r); y12r=h-c_round_bracket;
+ onaline(11l,13l)(12l); y12l=h-c_inner_bracket;
+ onaline(14r,16r)(15r); y15r=h-c_inner_bracket;
+ onaline(14l,16l)(15l); y15l=h-c_thick_stem_bracket;
+ z41=whatever[.8[z11r,z11l],z12l]; z41=whatever[.8[z14l,z14r],z15r];
+
+ ref1=leftserif(z16,z14,z15l,z15r,ru(2.5),bracket0)--z21l;
+ z30=ref1 intersectionpoint (z20r--z3r);
+ z31=ref1 intersectionpoint (z40--z3l);
+
+ p1=z21l--z21r--rightserif(z13,z11,z12l,z12r,ru(2),bracket0)--
+ leftserif(z13,z11,z41,z12r,ru(7),bracket0)--z41--
+ rightserif(z16,z14,z15l,z41,ru(6),bracket32)--
+ ref1--cycle;
+ p2=z20l--z20r--z30--z31--z40--
+ rightserif(z6,z4,z5l,z40,ru(5),bracket32)--
+ leftserif(z6,z4,z5l,z5r,ru(2),bracket0)--z20l--cycle;
+
+ showpoints(1,2,3,4,5,6,11,12,13,14,15,16,20,21,30,31,40,41);
+ draw_outlines;
+ endchar;
+
+
+iff OK "X": "The letter X"; beginchar("X",13unit#,cap#,0);
+
+ numeric botjoin,topjoin,joinwidths;
+ botjoin=.42h; topjoin=.62h;
+
+ top z1=(.2w,h);
+ bot z3=(.8w,0);
+ z2r=.5[z1r,z3r];
+ mpos(1,3)(Xdiag,constant_angle(z1,z3,0));
+ pos2(.9Xdiag,constant_angle(z1,z3,0));
+ ref1=leftserif(z1,z3,z2l,z2r,ru(2.5),bracket4)...
+ leftserif(z3,z1,z2l,z2r,ru(7),bracket42);
+ ref2=rightserif(z3,z1,z2l,z2r,ru(2),bracket42)--
+ rightserif(z1,z3,z2l,z2r,ru(6),bracket4);
+ bot z4=ref1 intersectionpoint ((0,botjoin)--(w,botjoin));
+ top z9=ref2 intersectionpoint ((0,topjoin)--(w,topjoin));
+ bot z6=(.12w,0); top z7=(.8w,h);
+ mpos(4,6)(Xthin,constant_angle(z4,z6,0));
+ mpos(7,9)(Xthin,constant_angle(z7,z9,0));
+ onaline(4l,6l)(5l); y5l=y5r=Xthin_diag_bracket;
+ onaline(4r,6r)(5r);
+ onaline(7r,9r)(8r); y8r=y8l=h-Xthin_diag_bracket;
+ onaline(7l,9l)(8l);
+ ref3=fullserif(z6,z4,z5l,z5r,ru(2.5),ru(8),bracket01);
+ ref4=z5l--2[z5l,z4l];
+ ref5=fullserif(z7,z9,z8l,z8r,ru(7),ru(5),bracket01);
+ ref6=z8r--2[z8r,z9r];
+ z21=ref1 intersectionpoint (ref3--z4r);
+ z22=ref1 intersectionpoint ref4;
+ z23=ref2 intersectionpoint (ref5--z9l);
+ z24=ref2 intersectionpoint ref6;
+
+ p1=ref1--ref2--cycle;
+ p2=z22--ref3--z21--cycle;
+ p3=z24--ref5--z23--cycle;
+
+ showpoints(1,2,3,4,5,6,7,8,9,21,22,23,24);
+ draw_outlines;
+ endchar;
+
+
+iff OK "Y": "The letter Y"; beginchar("Y",13unit#,cap#,0);
+
+ bot lft z3l=(5unit,0);
+ z2l=z3l+(0,c_thick_stem_bracket);
+ mpos(2,3)(stem,0);
+ onaline(2l,3l)(1l); y1l=.39h;
+ onaline(2r,3r)(1r); y1r=.45h;
+ top lft z4l=(unit,h);
+ z6l=z1l;
+ mpos(4,6)(Ythick_diag, constant_angle(z4l,z6l,0));
+ onaline(4l,6l)(5l); y5l=y5r=h-c_thick_stem_bracket;
+ onaline(4r,6r)(5r);
+ onaline(4,6)(20); top y20=h;
+ top rt z7r=(w-unit,h);
+ z9r=z1r;
+
+ mpos(7,9)(Ydiag, constant_angle(z7r,z9r,0));
+ onaline(7l,9l)(8l); y8l=y8r=h-Ythin_diag_bracket;
+ onaline(7r,9r)(8r);
+ onaline(7,9)(21); top y21=h;
+
+ ref1=z5r--1.5[z5r,z6r];
+ ref2=z8l--1.5[z8l,z9l];
+ z22=ref1 intersectionpoint ref2;
+
+ p1=fullserif(z20,z6,z5l,z5r,ru(2),ru(4),bracket4)--z1l--
+ fullserif(z3,z2,z2l,z2r,ru(5),ru(5),bracket4)--z1r--
+ fullserif(z21,z9,z8l,z8r,ru(8),ru(2),bracket01)--z22--cycle;
+
+ showpoints(1,2,3,4,5,6,7,8,9,20,21,22);
+ draw_outlines;
+ endchar;
+
+
+iff OK "Z": "The letter Z"; beginchar("Z",(1+11)*unit#,cap#,0);
+
+ top lft z1=(ru(4)+smallu,h);
+ bot lft z2=(ru(3)+smallu,top y1-3.5unit);
+ z3=(.5w,y1-Zthin);
+ bot lft z5l=(.5unit,0);
+ rt z15r=(w-ru(3)-smallu,y1);
+ mpos(5,15)(Zdiag,constant_angle(z15r,z5l,Zdiag));
+ rt z11=(w-ru(3.2),y5l);
+ top rt z12=(w-ru(1.7),4unit+u);
+ z13=(.55w,y11+Zthin);
+ onaline(5l,15l)(4); y4=y3;
+ onaline(5r,15r)(14); y14=y13;
+
+ p1=straightarm.tl(z3,z2,z1,Ztip,pulleven)--z4--z5l--
+ straightarm.br(z13,z12,z11,Ztip,pulleven)--z14--z15r--cycle;
+
+ showpoints(1,2,3,4,5,11,12,13,14,15);
+ draw_outlines;
+ endchar;
+
+
+
+% ----- Phase 3 -----
+
+
+iff OK "k": "The letter k"; beginchar(oct"174",(1+9)*unit#,ascender#,0);
+
+ top lft z11l=(unit+.5u,h);
+ bot z14l=(x11l,0);
+ mpos(11,14)(kstem,0);
+ onaline(11r,14r)(3r,4,12r,13r);
+ bot y3r=.4xheight; y12l=h-lc_thick_stem_bracket; top y12r=h;
+ onaline(11l,14l)(12l,13l);
+ y13l=y13r=lc_thick_stem_bracket;
+ top rt z1r=(w-1.5unit,xheight);
+ mpos(1,3)(kthin,angle(z1r-z3r)-90);
+ y2l=y2r=xheight-k_thin_diag;
+ onaline(1l,3l)(2l,4);
+ onaline(1r,3r)(2r,21l);
+ onaline(1,3)(0); top y0=xheight;
+ y21l=y3r+.5unit;
+ bot rt z23r=(w-ru(2),0);
+ mpos(21,23)(kdiag,angle(z1r-z3r));
+ y22l=y22r=lc_thick_stem_bracket;
+ onaline(21l,23l)(22l);
+ onaline(21r,23r)(22r);
+ onaline(21,23)(20); bot y20=0;
+
+ p1=fullserif(z14,z11,z13l,z13r,ru(2.5),ru(2.5),bracket0)--z12r--
+ leftserif(z11,z14,z12l,z12r,ru(2.5),bracket0)--cycle;
+ p2=z3r--fullserif(z0,z3,z2l,z2r,ru(7),ru(2.5),bracket01)--z4--cycle;
+ p3=z21l--fullserif(z20,z21,z22l,z22r,ru(4),u,bracket32)--z21r--cycle;
+
+ showpoints(0,1,2,3,4,11,12,13,14,20,21,22,23);
+ draw_outlines;
+ endchar;
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmbsy8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmbsy8.tfm
new file mode 100644
index 00000000000..429ec470a84
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmbsy8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmex8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmex8.tfm
new file mode 100644
index 00000000000..e0f4a1b3fa1
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmex8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmmi8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmmi8.tfm
new file mode 100644
index 00000000000..49a631427af
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmmi8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmmib8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmmib8.tfm
new file mode 100644
index 00000000000..16ef08d3ebb
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmmib8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmsy8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmsy8.tfm
new file mode 100644
index 00000000000..7b757f9acd3
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/lcmsy8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/leclb8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/leclb8.tfm
new file mode 100644
index 00000000000..094e2c20ee4
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/leclb8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/lecli8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/lecli8.tfm
new file mode 100644
index 00000000000..9b1018e8c2e
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/lecli8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/leclo8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/leclo8.tfm
new file mode 100644
index 00000000000..417639023af
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/leclo8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/leclq8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/leclq8.tfm
new file mode 100644
index 00000000000..6d2c0e6c59a
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/leclq8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/llasy8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/llasy8.tfm
new file mode 100644
index 00000000000..2909acfd8ce
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/llasy8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/llasyb8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/llasyb8.tfm
new file mode 100644
index 00000000000..b32e24cb97a
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/llasyb8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmss8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmss8.tfm
new file mode 100644
index 00000000000..3864e19e140
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmss8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmssb8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmssb8.tfm
new file mode 100644
index 00000000000..cfa103cab31
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmssb8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmssi8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmssi8.tfm
new file mode 100644
index 00000000000..5d205d6d9da
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmssi8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmsso8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmsso8.tfm
new file mode 100644
index 00000000000..02278efafda
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/llcmsso8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/lmsam8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/lmsam8.tfm
new file mode 100644
index 00000000000..3f889cb9fb7
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/lmsam8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/lmsbm8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/lmsbm8.tfm
new file mode 100644
index 00000000000..4dc7f659719
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/lmsbm8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclb8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclb8.tfm
new file mode 100644
index 00000000000..70e1c6684cc
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclb8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/ltcli8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/ltcli8.tfm
new file mode 100644
index 00000000000..ba69d4f99f3
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/ltcli8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclo8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclo8.tfm
new file mode 100644
index 00000000000..0fe9a054fd3
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclo8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclq8.tfm b/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclq8.tfm
new file mode 100644
index 00000000000..235b63dc52f
--- /dev/null
+++ b/Master/texmf-dist/fonts/tfm/public/lxfonts/ltclq8.tfm
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/lcmbsy8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmbsy8.pfb
new file mode 100644
index 00000000000..fd882f48e0a
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmbsy8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/lcmex8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmex8.pfb
new file mode 100644
index 00000000000..5b4dc79b7f7
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmex8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/lcmmi8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmmi8.pfb
new file mode 100644
index 00000000000..c0be6dba52a
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmmi8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/lcmmib8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmmib8.pfb
new file mode 100644
index 00000000000..07a22bc4a7f
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmmib8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/lcmsy8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmsy8.pfb
new file mode 100644
index 00000000000..b128c1006af
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/lcmsy8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/leclb8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/leclb8.pfb
new file mode 100644
index 00000000000..1ea3c55e827
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/leclb8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/lecli8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/lecli8.pfb
new file mode 100644
index 00000000000..110863fb72e
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/lecli8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/leclo8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/leclo8.pfb
new file mode 100644
index 00000000000..4e1ee2284da
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/leclo8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/leclq8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/leclq8.pfb
new file mode 100644
index 00000000000..1835ce694e1
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/leclq8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/llasy8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/llasy8.pfb
new file mode 100644
index 00000000000..84a597d06e6
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/llasy8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/llasyb8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/llasyb8.pfb
new file mode 100644
index 00000000000..39ba5c48249
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/llasyb8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/llcmss8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/llcmss8.pfb
new file mode 100644
index 00000000000..1e2f108521a
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/llcmss8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/llcmssb8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/llcmssb8.pfb
new file mode 100644
index 00000000000..a9435c8f674
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/llcmssb8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/llcmssi8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/llcmssi8.pfb
new file mode 100644
index 00000000000..2cac232dd9c
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/llcmssi8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/llcmsso8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/llcmsso8.pfb
new file mode 100644
index 00000000000..10e4b8a6b9f
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/llcmsso8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/lmsam8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/lmsam8.pfb
new file mode 100644
index 00000000000..e31c56733f3
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/lmsam8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/lmsbm8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/lmsbm8.pfb
new file mode 100644
index 00000000000..7d66c1fe49b
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/lmsbm8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/ltclb8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/ltclb8.pfb
new file mode 100644
index 00000000000..42ab3da19f5
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/ltclb8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/ltcli8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/ltcli8.pfb
new file mode 100644
index 00000000000..14d0bcd31c3
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/ltcli8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/ltclo8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/ltclo8.pfb
new file mode 100644
index 00000000000..1037076b70d
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/ltclo8.pfb
Binary files differ
diff --git a/Master/texmf-dist/fonts/type1/public/lxfonts/ltclq8.pfb b/Master/texmf-dist/fonts/type1/public/lxfonts/ltclq8.pfb
new file mode 100644
index 00000000000..9bcc1a95178
--- /dev/null
+++ b/Master/texmf-dist/fonts/type1/public/lxfonts/ltclq8.pfb
Binary files differ