summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/public/frcursive
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-09 23:38:21 +0000
committerKarl Berry <karl@freefriends.org>2006-01-09 23:38:21 +0000
commit215012a8d684889983ec2c0629e1c704e6853d9c (patch)
treeebf1271bd71869069824935ae8a5678745bf8bce /Master/texmf-dist/fonts/source/public/frcursive
parent1af3d19d6dbcbf309667d9cb4aa3cdda914914a9 (diff)
trunk/Master/texmf-dist/fonts/source
git-svn-id: svn://tug.org/texlive/trunk@101 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/frcursive')
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frca10.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcbx10.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcbx11.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcbx12.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcbx14.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcbx17.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcbx7.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcbx8.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcbx9.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcc10.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcc11.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcc12.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcc14.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcf10.mf36
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcf11.mf36
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcf12.mf36
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcf14.mf36
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcr10.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcr11.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcr12.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcr14.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcr17.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcr7.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcr8.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcr9.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcsl10.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcsl11.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcsl12.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcsl14.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcsl17.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcsl7.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcsl8.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcsl9.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcslbx10.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcslbx11.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcslbx12.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcslbx14.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcslbx17.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcslbx7.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcslbx8.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcslbx9.mf29
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcursive.mf2498
-rw-r--r--Master/texmf-dist/fonts/source/public/frcursive/frcw10.mf29
43 files changed, 3744 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frca10.mf b/Master/texmf-dist/fonts/source/public/frcursive/frca10.mf
new file mode 100644
index 00000000000..c80c3716798
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frca10.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the regular "academic" variant
+
+font_identifier := "FCA";
+font_size 10 pt#;
+
+mode_setup;
+
+ex# := 155.0/36 pt#;
+med# := 0.4 pt#;
+thin# := 0.2 pt#;
+thick# := 0.6 pt#;
+dot_size# := 0.8 pt#;
+
+base_width := .800;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 3;
+uc_ascend := 3;
+straight_descend := 1;
+loop_descend := 2;
+dot_height := 1.8;
+accent_bot := 1.6;
+accent_top := 2;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcbx10.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcbx10.mf
new file mode 100644
index 00000000000..2bfe39f6de9
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcbx10.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the bold extended variant
+
+font_identifier := "FRCBX";
+font_size 10 pt#;
+
+mode_setup;
+
+ex# := 155.0/36 pt#;
+med# := .550 pt#;
+thin# := .200 pt#;
+thick# := .800 pt#;
+dot_size# := 1.250 pt#;
+
+base_width := .900;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcbx11.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcbx11.mf
new file mode 100644
index 00000000000..c9782baaa06
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcbx11.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the bold extended variant
+
+font_identifier := "FRCBX";
+font_size 10.95 pt#;
+
+mode_setup;
+
+ex# := 169.725/36 pt#;
+med# := .602 pt#;
+thin# := .219 pt#;
+thick# := .876 pt#;
+dot_size# := 1.368 pt#;
+
+base_width := .886;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcbx12.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcbx12.mf
new file mode 100644
index 00000000000..6fbc0bf2f0d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcbx12.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the bold extended variant
+
+font_identifier := "FRCBX";
+font_size 12 pt#;
+
+mode_setup;
+
+ex# := 186.0/36 pt#;
+med# := .660 pt#;
+thin# := .240 pt#;
+thick# := .960 pt#;
+dot_size# := 1.500 pt#;
+
+base_width := .873;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcbx14.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcbx14.mf
new file mode 100644
index 00000000000..a834dcf76b4
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcbx14.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the bold extended variant
+
+font_identifier := "FRCBX";
+font_size 14.4 pt#;
+
+mode_setup;
+
+ex# := 223.20/36 pt#;
+med# := .792 pt#;
+thin# := .288 pt#;
+thick# := 1.152 pt#;
+dot_size# := 1.800 pt#;
+
+base_width := .848;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcbx17.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcbx17.mf
new file mode 100644
index 00000000000..6eb839a8006
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcbx17.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the bold extended variant
+
+font_identifier := "FRCBX";
+font_size 17.28 pt#;
+
+mode_setup;
+
+ex# := 267.840/36 pt#;
+med# := .950 pt#;
+thin# := .345 pt#;
+thick# := 1.382 pt#;
+dot_size# := 2.160 pt#;
+
+base_width := .821;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcbx7.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcbx7.mf
new file mode 100644
index 00000000000..0aeca1a64a8
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcbx7.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the bold extended variant
+
+font_identifier := "FRCBX";
+font_size 7 pt#;
+
+mode_setup;
+
+ex# := 108.5/36 pt#;
+med# := .385 pt#;
+thin# := .140 pt#;
+thick# := .560 pt#;
+dot_size# := .875 pt#;
+
+base_width := .955;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcbx8.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcbx8.mf
new file mode 100644
index 00000000000..083bda741e2
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcbx8.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the bold extended variant
+
+font_identifier := "FRCBX";
+font_size 8 pt#;
+
+mode_setup;
+
+ex# := 124.0/36 pt#;
+med# := .440 pt#;
+thin# := .160 pt#;
+thick# := .640 pt#;
+dot_size# := 1.000 pt#;
+
+base_width := .934;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcbx9.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcbx9.mf
new file mode 100644
index 00000000000..43395b75b7b
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcbx9.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the bold extended variant
+
+font_identifier := "FRCBX";
+font_size 9 pt#;
+
+mode_setup;
+
+ex# := 139.5/36 pt#;
+med# := .495 pt#;
+thin# := .180 pt#;
+thick# := .720 pt#;
+dot_size# := 1.125 pt#;
+
+base_width := .915;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcc10.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcc10.mf
new file mode 100644
index 00000000000..938d0789924
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcc10.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the calligraphic variant
+
+font_identifier := "FRCC";
+font_size 10 pt#;
+
+mode_setup;
+
+ex# := 155.0/36 pt#;
+med# := .300 pt#;
+thin# := .200 pt#;
+thick# := .800 pt#;
+dot_size# := .800 pt#;
+
+base_width := .800;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcc11.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcc11.mf
new file mode 100644
index 00000000000..4b938130358
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcc11.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the calligraphic variant
+
+font_identifier := "FRCC";
+font_size 10.95 pt#;
+
+mode_setup;
+
+ex# := 169.725/36 pt#;
+med# := .328 pt#;
+thin# := .219 pt#;
+thick# := .876 pt#;
+dot_size# := .876 pt#;
+
+base_width := .788;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcc12.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcc12.mf
new file mode 100644
index 00000000000..f83a3509f5c
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcc12.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the calligraphic variant
+
+font_identifier := "FRCC";
+font_size 12 pt#;
+
+mode_setup;
+
+ex# := 186.0/36 pt#;
+med# := .360 pt#;
+thin# := .240 pt#;
+thick# := .960 pt#;
+dot_size# := .960 pt#;
+
+base_width := .776;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcc14.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcc14.mf
new file mode 100644
index 00000000000..3334a61d0aa
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcc14.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the calligraphic variant
+
+font_identifier := "FRCC";
+font_size 14.4 pt#;
+
+mode_setup;
+
+ex# := 223.20/36 pt#;
+med# := .432 pt#;
+thin# := .288 pt#;
+thick# := 1.152 pt#;
+dot_size# := 1.152 pt#;
+
+base_width := .754;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcf10.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcf10.mf
new file mode 100644
index 00000000000..592b3275295
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcf10.mf
@@ -0,0 +1,36 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the fixed-thickness variant
+
+font_identifier := "FRCF";
+font_size 10 pt#;
+
+mode_setup;
+
+ex# := 155.0/36 pt#;
+med# := .400 pt#;
+thin# := .400 pt#;
+thick# := .400 pt#;
+dot_size# := .800 pt#;
+
+base_width := .800;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+def penstroke text t =
+ begingroup
+ save e; def e = enddef;
+ draw t withpen pencircle scaled med;
+ endgroup
+enddef;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcf11.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcf11.mf
new file mode 100644
index 00000000000..9eb36c80d22
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcf11.mf
@@ -0,0 +1,36 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the fixed-thickness variant
+
+font_identifier := "FRCF";
+font_size 10.95 pt#;
+
+mode_setup;
+
+ex# := 169.725/36 pt#;
+med# := .438 pt#;
+thin# := .438 pt#;
+thick# := .438 pt#;
+dot_size# := .876 pt#;
+
+base_width := .788;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+def penstroke text t =
+ begingroup
+ save e; def e = enddef;
+ draw t withpen pencircle scaled med;
+ endgroup
+enddef;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcf12.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcf12.mf
new file mode 100644
index 00000000000..aca99f89a5b
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcf12.mf
@@ -0,0 +1,36 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the fixed-thickness variant
+
+font_identifier := "FRCF";
+font_size 12 pt#;
+
+mode_setup;
+
+ex# := 186.0/36 pt#;
+med# := .480 pt#;
+thin# := .480 pt#;
+thick# := .480 pt#;
+dot_size# := .960 pt#;
+
+base_width := .776;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+def penstroke text t =
+ begingroup
+ save e; def e = enddef;
+ draw t withpen pencircle scaled med;
+ endgroup
+enddef;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcf14.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcf14.mf
new file mode 100644
index 00000000000..aebb69a256d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcf14.mf
@@ -0,0 +1,36 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the fixed-thickness variant
+
+font_identifier := "FRCF";
+font_size 14.4 pt#;
+
+mode_setup;
+
+ex# := 223.20/36 pt#;
+med# := .576 pt#;
+thin# := .576 pt#;
+thick# := .576 pt#;
+dot_size# := 1.152 pt#;
+
+base_width := .754;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+def penstroke text t =
+ begingroup
+ save e; def e = enddef;
+ draw t withpen pencircle scaled med;
+ endgroup
+enddef;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcr10.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcr10.mf
new file mode 100644
index 00000000000..2639c6e6a54
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcr10.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the regular variant
+
+font_identifier := "FRCR";
+font_size 10 pt#;
+
+mode_setup;
+
+ex# := 155.0/36 pt#;
+med# := .400 pt#;
+thin# := .200 pt#;
+thick# := .600 pt#;
+dot_size# := .800 pt#;
+
+base_width := .800;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcr11.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcr11.mf
new file mode 100644
index 00000000000..4c51063ecde
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcr11.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the regular variant
+
+font_identifier := "FRCR";
+font_size 10.95 pt#;
+
+mode_setup;
+
+ex# := 169.725/36 pt#;
+med# := .438 pt#;
+thin# := .219 pt#;
+thick# := .657 pt#;
+dot_size# := .876 pt#;
+
+base_width := .788;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcr12.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcr12.mf
new file mode 100644
index 00000000000..6d7513db266
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcr12.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the regular variant
+
+font_identifier := "FRCR";
+font_size 12 pt#;
+
+mode_setup;
+
+ex# := 186.0/36 pt#;
+med# := .480 pt#;
+thin# := .240 pt#;
+thick# := .720 pt#;
+dot_size# := .960 pt#;
+
+base_width := .776;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcr14.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcr14.mf
new file mode 100644
index 00000000000..beb9ff64c31
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcr14.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the regular variant
+
+font_identifier := "FRCR";
+font_size 14.4 pt#;
+
+mode_setup;
+
+ex# := 223.20/36 pt#;
+med# := .576 pt#;
+thin# := .288 pt#;
+thick# := .864 pt#;
+dot_size# := 1.152 pt#;
+
+base_width := .754;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcr17.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcr17.mf
new file mode 100644
index 00000000000..41527ce7352
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcr17.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the regular variant
+
+font_identifier := "FRCR";
+font_size 17.28 pt#;
+
+mode_setup;
+
+ex# := 267.840/36 pt#;
+med# := .691 pt#;
+thin# := .345 pt#;
+thick# := 1.036 pt#;
+dot_size# := 1.382 pt#;
+
+base_width := .730;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcr7.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcr7.mf
new file mode 100644
index 00000000000..c75eed11dd6
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcr7.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the regular variant
+
+font_identifier := "FRCR";
+font_size 7 pt#;
+
+mode_setup;
+
+ex# := 108.5/36 pt#;
+med# := .280 pt#;
+thin# := .140 pt#;
+thick# := .420 pt#;
+dot_size# := .560 pt#;
+
+base_width := .849;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcr8.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcr8.mf
new file mode 100644
index 00000000000..784d1a1baa7
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcr8.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the regular variant
+
+font_identifier := "FRCR";
+font_size 8 pt#;
+
+mode_setup;
+
+ex# := 124.0/36 pt#;
+med# := .320 pt#;
+thin# := .160 pt#;
+thick# := .480 pt#;
+dot_size# := .640 pt#;
+
+base_width := .830;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcr9.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcr9.mf
new file mode 100644
index 00000000000..1cb681b6274
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcr9.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the regular variant
+
+font_identifier := "FRCR";
+font_size 9 pt#;
+
+mode_setup;
+
+ex# := 139.5/36 pt#;
+med# := .360 pt#;
+thin# := .180 pt#;
+thick# := .540 pt#;
+dot_size# := .720 pt#;
+
+base_width := .813;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcsl10.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcsl10.mf
new file mode 100644
index 00000000000..e8297b01288
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcsl10.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the slanted variant
+
+font_identifier := "FRCSL";
+font_size 10 pt#;
+
+mode_setup;
+
+ex# := 155.0/36 pt#;
+med# := .400 pt#;
+thin# := .200 pt#;
+thick# := .600 pt#;
+dot_size# := .800 pt#;
+
+base_width := .800;
+slant := 0.3;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcsl11.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcsl11.mf
new file mode 100644
index 00000000000..26df67a41ce
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcsl11.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the slanted variant
+
+font_identifier := "FRCSL";
+font_size 10.95 pt#;
+
+mode_setup;
+
+ex# := 169.725/36 pt#;
+med# := .438 pt#;
+thin# := .219 pt#;
+thick# := .657 pt#;
+dot_size# := .876 pt#;
+
+base_width := .788;
+slant := 0.3;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcsl12.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcsl12.mf
new file mode 100644
index 00000000000..b4264aeec7e
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcsl12.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the slanted variant
+
+font_identifier := "FRCSL";
+font_size 12 pt#;
+
+mode_setup;
+
+ex# := 186.0/36 pt#;
+med# := .480 pt#;
+thin# := .240 pt#;
+thick# := .720 pt#;
+dot_size# := .960 pt#;
+
+base_width := .776;
+slant := 0.3;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcsl14.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcsl14.mf
new file mode 100644
index 00000000000..c1baa5c614e
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcsl14.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the slanted variant
+
+font_identifier := "FRCSL";
+font_size 14.4 pt#;
+
+mode_setup;
+
+ex# := 223.20/36 pt#;
+med# := .576 pt#;
+thin# := .288 pt#;
+thick# := .864 pt#;
+dot_size# := 1.152 pt#;
+
+base_width := .754;
+slant := 0.3;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcsl17.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcsl17.mf
new file mode 100644
index 00000000000..3b821255628
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcsl17.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the slanted variant
+
+font_identifier := "FRCSL";
+font_size 17.28 pt#;
+
+mode_setup;
+
+ex# := 267.840/36 pt#;
+med# := .691 pt#;
+thin# := .345 pt#;
+thick# := 1.036 pt#;
+dot_size# := 1.382 pt#;
+
+base_width := .730;
+slant := 0.3;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcsl7.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcsl7.mf
new file mode 100644
index 00000000000..c813750d649
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcsl7.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the slanted variant
+
+font_identifier := "FRCSL";
+font_size 7 pt#;
+
+mode_setup;
+
+ex# := 108.5/36 pt#;
+med# := .280 pt#;
+thin# := .140 pt#;
+thick# := .420 pt#;
+dot_size# := .560 pt#;
+
+base_width := .849;
+slant := 0.3;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcsl8.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcsl8.mf
new file mode 100644
index 00000000000..b8048d2938c
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcsl8.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the slanted variant
+
+font_identifier := "FRCSL";
+font_size 8 pt#;
+
+mode_setup;
+
+ex# := 124.0/36 pt#;
+med# := .320 pt#;
+thin# := .160 pt#;
+thick# := .480 pt#;
+dot_size# := .640 pt#;
+
+base_width := .830;
+slant := 0.3;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcsl9.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcsl9.mf
new file mode 100644
index 00000000000..df0985639c2
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcsl9.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the slanted variant
+
+font_identifier := "FRCSL";
+font_size 9 pt#;
+
+mode_setup;
+
+ex# := 139.5/36 pt#;
+med# := .360 pt#;
+thin# := .180 pt#;
+thick# := .540 pt#;
+dot_size# := .720 pt#;
+
+base_width := .813;
+slant := 0.3;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcslbx10.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcslbx10.mf
new file mode 100644
index 00000000000..346e50d2f30
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcslbx10.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the slanted bold extended variant
+
+font_identifier := "FRCSLBX";
+font_size 10 pt#;
+
+mode_setup;
+
+ex# := 155.0/36 pt#;
+med# := .550 pt#;
+thin# := .200 pt#;
+thick# := .800 pt#;
+dot_size# := 1.250 pt#;
+
+base_width := .900;
+slant := 0.3;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcslbx11.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcslbx11.mf
new file mode 100644
index 00000000000..84405e482e3
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcslbx11.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the slanted bold extended variant
+
+font_identifier := "FRCSLBX";
+font_size 10.95 pt#;
+
+mode_setup;
+
+ex# := 169.725/36 pt#;
+med# := .602 pt#;
+thin# := .219 pt#;
+thick# := .876 pt#;
+dot_size# := 1.368 pt#;
+
+base_width := .886;
+slant := 0.3;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcslbx12.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcslbx12.mf
new file mode 100644
index 00000000000..29dad3732ae
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcslbx12.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the slanted bold extended variant
+
+font_identifier := "FRCSLBX";
+font_size 12 pt#;
+
+mode_setup;
+
+ex# := 186.0/36 pt#;
+med# := .660 pt#;
+thin# := .240 pt#;
+thick# := .960 pt#;
+dot_size# := 1.500 pt#;
+
+base_width := .873;
+slant := 0.3;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcslbx14.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcslbx14.mf
new file mode 100644
index 00000000000..6be48b62e37
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcslbx14.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the slanted bold extended variant
+
+font_identifier := "FRCSLBX";
+font_size 14.4 pt#;
+
+mode_setup;
+
+ex# := 223.20/36 pt#;
+med# := .792 pt#;
+thin# := .288 pt#;
+thick# := 1.152 pt#;
+dot_size# := 1.800 pt#;
+
+base_width := .848;
+slant := 0.3;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcslbx17.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcslbx17.mf
new file mode 100644
index 00000000000..061fa88d15d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcslbx17.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the slanted bold extended variant
+
+font_identifier := "FRCSLBX";
+font_size 17.28 pt#;
+
+mode_setup;
+
+ex# := 267.840/36 pt#;
+med# := .950 pt#;
+thin# := .345 pt#;
+thick# := 1.382 pt#;
+dot_size# := 2.160 pt#;
+
+base_width := .821;
+slant := 0.3;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcslbx7.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcslbx7.mf
new file mode 100644
index 00000000000..cb34a5f0e4c
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcslbx7.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the slanted bold extended variant
+
+font_identifier := "FRCSLBX";
+font_size 7 pt#;
+
+mode_setup;
+
+ex# := 108.5/36 pt#;
+med# := .385 pt#;
+thin# := .140 pt#;
+thick# := .560 pt#;
+dot_size# := .875 pt#;
+
+base_width := .955;
+slant := 0.3;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcslbx8.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcslbx8.mf
new file mode 100644
index 00000000000..f1f7e50dca6
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcslbx8.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the slanted bold extended variant
+
+font_identifier := "FRCSLBX";
+font_size 8 pt#;
+
+mode_setup;
+
+ex# := 124.0/36 pt#;
+med# := .440 pt#;
+thin# := .160 pt#;
+thick# := .640 pt#;
+dot_size# := 1.000 pt#;
+
+base_width := .934;
+slant := 0.3;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcslbx9.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcslbx9.mf
new file mode 100644
index 00000000000..07c79e6ee2f
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcslbx9.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the slanted bold extended variant
+
+font_identifier := "FRCSLBX";
+font_size 9 pt#;
+
+mode_setup;
+
+ex# := 139.5/36 pt#;
+med# := .495 pt#;
+thin# := .180 pt#;
+thick# := .720 pt#;
+dot_size# := 1.125 pt#;
+
+base_width := .915;
+slant := 0.3;
+accent_wd := 0.7;
+link_width := 0.13;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcursive.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcursive.mf
new file mode 100644
index 00000000000..fa580ca0b1b
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcursive.mf
@@ -0,0 +1,2498 @@
+%%%% This is the main source for the French Cursive font.
+%%%% © Emanuel Beffara, 2001--2004. This work is covered by the GPL licence.
+%%%%
+%%%% You can get a pretty-printed document with the commented source code (and
+%%%% especially the first page with an explanation of the parameters) by first
+%%%% running "mft frcursive" to get the TeX source and then compiling the
+%%%% driver file "fcsource.tex" (normally shipped with this source file). This
+%%%% compilation needs the standard 10-pt version (driver "frcr10.mf") to be
+%%%% available. The document is 44 pages long.
+%%%%
+%%\title French Cursive,
+%% a cursive handwriting font in \MF \cr
+%% \fc so you can write like this.
+%%{\parindent=2em \parskip=1ex
+%%
+%% The main difficulty in the design of a good cursive font lies in the fact
+%% that words must appear to be written in a single pen stroke. So words will
+%% actually consist in a succession of letter glyphs and link glyphs, and the
+%% shapes of the links will have to be adapted to the surrounding letters.
+%% Here we fully exploit \MF's ligatures system by letting it insert the link
+%% glyphs automatically between letters.
+%%
+%% In the following definitions, the letter glyphs correspond to the
+%% invariable parts of a letter's shape. For instance, in the glyph of a
+%% letter with a high loop like {\def\fs#1{{\fc\smash#1}} \fs b, \fs f, \fs h,
+%% \fs k, or \fs l}, the stroke starts at the top of the loop because the
+%% initial part depends on the height the previous letter starts at. The link
+%% glyphs are located in the range 128--159, which is thankfully unallocated
+%% in the Latin-1 encoding.
+%%
+%% This file won't generate a font by itself. It is supposed to be read by a
+%% driver file after setting several parameters to control the actual shape of
+%% the font. The required parameters are the following:
+%% \item absolute dimensions: \deflist{%
+%% \\{ex}\SH & the base height (height of small letters like {\fc a})\cr
+%% \\{thin}\SH & the thickness of line ends\cr
+%% \\{med}\SH & the thickness of hairlines\cr
+%% \\{thick}\SH & the thickness of stems\cr
+%% \\{dot\_size}\SH & the diameter of dots\cr}
+%% \item ratios: \deflist{%
+%% \\{base\_width} & base width of the font with respect to \\{ex}\SH{}
+%% (this is the width of an unlinked {\fc a})\cr
+%% \\{slant} & the slant ratio to be applied\cr}
+%% \item widths, relative to \\{base\_width}: \deflist{%
+%% \\{accent\_wd} & base width of accents
+%% (width of acute and grave accents)\cr
+%% \\{link\_width} & half the width of inter-letter links\cr}
+%% \item heights, relative to \\{ex}\SH: \deflist{%
+%% \\{straight\_ascend} & height of ascending bars like {\fc t}\cr
+%% \\{loop\_ascend} & height of ascending loops like {\fc\smash l}\cr
+%% \\{uc\_ascend} & height of uppercase letters\cr
+%% \\{straight\_descend} & depth of descending bars like {\fc\smash p}\cr
+%% \\{loop\_descend} & depth of descending loops like {\fc\smash j}\cr
+%% \\{dot\_height} & height of the dot of {\fc i} and {\fc\smash j}
+%% above the base line\cr
+%% \\{accent\_bot} & height of the bottom of accents\cr
+%% \\{accent\_top} & height of the top of accents\cr
+%% \\{cedilla\_dp} & depth of the {\it top} of the cedilla's loop\cr}
+%%}
+%%%% These are MFT formatting definitions:
+%%% length penpos save_accent make_accented
+%%% length label penlabels range save_letter
+%%% and thru
+%%% end bye
+%%%% We don't want one-line comments to be right-aligned:
+%%\def\9{$\quad{\eightrm\%}}
+%%%% vim: set foldmethod=marker :
+
+%%\sec Global definitions. %{{{1
+
+%% Once all parameters are defined, we can compute the non-sharp values of the
+%% absolute dimensions according to the current mode.
+
+define_pixels(ex);
+define_whole_blacker_pixels(med, thin, thick, dot_size);
+
+%% The \cs\fontdimen\ registers are also computed here. The ones for spacing
+%% are kind of arbitrary, but these values look right.
+
+font_slant slant;
+font_normal_space 3/2 * base_width * ex#;
+font_normal_shrink 1/2 * base_width * ex#;
+font_normal_stretch 1/2 * base_width * ex#;
+font_x_height ex#;
+font_quad 2 * base_width * ex#;
+
+%% The following three constants describe the possible types of links. Low
+%% links are horizontal on the base line. High links are horizontal at height
+%% \\{hl\_y} with respect to \\{ex}\SH:
+
+hl_y := 1/2; % the height of high links
+
+%% Medium links are lower and directed upwards.
+
+ml_y := 1/6; % the height of medium links
+ml_a := 30; % the angle of medium links
+
+%% We take care of slanted shapes by simply applying a global transformation.
+
+currenttransform := currenttransform slanted slant;
+
+%% Some letter shapes have to be saved:
+%% \item a, c, e, n, o, u, y and uppercase letters are normal, they are used
+%% for making accented variants
+%% \item i is dotless, it is kept for making accented versions
+%% \item j is dotless, its shape appears in y, G, J and Y
+%% \item q and s are unlinked on the right (like at the end of words), they
+%% are kept to make linked versions
+%% \item exclamation and interrogation marks are used for the spanish
+%% reversed version
+
+forsuffixes ltr = a,c,e,i,j,n,o,q,s,u,y,A,C,E,I,N,O,U,Y,exclam,interg :
+ picture letter.ltr;
+endfor;
+
+%% The \\{save\_letter} macro saves the picture of a given glyph so that it
+%% can be reused (as explained above). The first argument is a suffix that
+%% represents the letter, the second one is the $x$ coordinate where accents
+%% should be placed (i.e. roughly the middle of the letter).
+
+def save_letter (text ltr) (expr pos) =
+ begingroup save ltr; % c'est nécessaire à cause de `u'
+ letter.ltr := currentpicture;
+ accpos.ltr := pos;
+ width.ltr := w;
+ height.ltr := h;
+ if proofing > 1: proofrule((pos,-d), (pos,h)); fi
+ width#.ltr := charwd; % for the accented version's width
+ height#.ltr := charht; % for the height of accented uppercase letters
+ depth#.ltr := chardp
+ endgroup
+enddef;
+
+%% Most characters have absolute widths of the same form:
+
+def ltr_wd(expr fb, fl) = (fb * base_width + fl * link_width) * ex# enddef;
+def ltr_w(expr fact) = ltr_wd(fact, 1) enddef;
+
+%% And some constants are useful:
+
+lnk := link_width / base_width;
+
+height_with_dot := dot_height * ex# + dot_size# / 2;
+
+ml_d := ml_a - 90; % the stroke angle for medium links
+pair ml_dir; ml_dir := dir ml_a; % and the line's direction
+
+%% And these multiplicative factors are simply everywhere:
+
+def u = scaled ex xscaled base_width enddef;
+def uu = xscaled (base_width * ex)
+ yscaled (uc_ascend * ex) enddef;
+def ua = xscaled (base_width * accent_wd * ex)
+ yscaled ((accent_top - accent_bot) * ex)
+ shifted (0, accent_bot * ex) enddef;
+v := base_width * ex;
+
+%% For proof-mode, we define the following macro to mark all useful
+%% information.
+
+def label(expr n) =
+ if proofing > 1:
+ penlabels(range 1 thru n);
+ if h > ex: proofrule((0, ex), (w, ex)); fi
+ fi
+enddef;
+
+%% Hinting...
+
+def goodx expr e =
+ begingroup save x, y; (x,y) = e; (good.x x, y) endgroup enddef;
+
+def goodxy expr e =
+ begingroup save x, y; (x,y) = e; (good.x x, good.y y) endgroup enddef;
+
+pickup pencircle scaled thick; thickpen := savepen;
+pickup pencircle scaled med; medpen := savepen;
+pickup pencircle scaled thin; thinpen := savepen;
+
+
+
+%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %%
+
+%%\sec Lowercase letters. %{{{1
+
+a_left := 1/3; % the height of the left end of small loops
+
+"The letter a";
+beginchar("a", ltr_w(7/6), ex#, 0);
+ penpos1(med, 0); x1r = hround (base_width * ex); y1 = 2/3 ex;
+ penpos2(med, 90); z2r = (3/5, 1) u;
+ penpos3(thick, 180); z3r = (0, a_left) u;
+ penpos4(med, 270); z4r = (1/2, 0) u;
+ penpos5(med, 0); x5 = x1; y5 = 1/3 ex;
+
+ penstroke z1e .. z2e .. tension 1.2 .. z3e .. z4e{right} .. z5e ;
+
+ penpos6(thick, 195); z6 = z1 + (1/10, 2/9) u;
+ penpos7(thick, 180); z7r = z1l;
+ penpos8(thick, 180); z8r = z5l;
+ penpos9(med, 270); z9r = (7/6 + lnk, 0) u;
+
+ penstroke z6e .. z7e .. tension 2 .. z8e .. {right}z9e ;
+
+ label(9);
+
+ save_letter(a)(x2);
+endchar;
+
+"The letter b";
+beginchar("b", ltr_w(1), loop_ascend * ex#, 0);
+ penpos2(med, 330); z2 = goodx (3/4, 2/3 * loop_ascend) u ;
+ penpos3(med, 100); z3r = (4/10, loop_ascend) u ;
+ penpos4(thick, 180); z4r = goodx (0, 3/5 * loop_ascend) u ;
+ penpos5(thick, 180); x5 = x4; y5 = ex ;
+ penpos6(med, 260); z6r = (1/2, 0) u ;
+ penpos7(med, 0); z7 = (v, y10l);
+ penpos8(thin, 135); z8 = z7l + (-1, 1) * ex / 6 ;
+ penpos9(med, 270); z9l = z7l ;
+ penpos10(med, 270); z10 = (1 + lnk, hl_y) u;
+
+ penstroke z2e{up} .. tension 1.2 .. z3e
+ .. controls (x4e,y3e) and (x4e,2/3[y3e,y4e]) .. z4e
+ .. z5e{down} .. z6e .. {up}z7e .. z8e .. {right}z9e .. {right}z10e
+ ;
+
+ label(10);
+endchar ;
+
+"The letter c";
+beginchar("c", ltr_w(1), ex#, 0);
+ penpos1(med, 30); z1r = (1, 3/4) u;
+ penpos2(med, 90); z2r = (3/5, 1) u;
+ penpos3(thick, 180); z3r = (0, a_left) u;
+ penpos4(med, 270); z4r = (1/2, 0) u;
+ penpos5(med, ml_d); z5 = (1 + lnk, ml_y) u;
+
+ penstroke z1e .. z2e .. tension 1.2 .. z3e .. z4e{right} .. {ml_dir}z5e ;
+
+ label(5);
+
+ save_letter(c)(3/5 v);
+endchar ;
+
+"The letter d";
+beginchar("d", ltr_w(7/6), straight_ascend * ex#, 0);
+ penpos1(med, 0); x1r = hround (base_width * ex); y1 = 2/3 ex;
+ penpos2(med, 90); z2r = (3/5, 1) u;
+ penpos3(thick, 180); z3r = (0, a_left) u;
+ penpos4(med, 270); z4r = (1/2, 0) u;
+ penpos5(med, 0); z5r = (1, 1/3) u;
+
+ penstroke z1e .. z2e .. tension 1.2 .. z3e .. z4e{right} .. z5e ;
+
+ penpos6(thick, 170); x6r = x1l; y6 = straight_ascend * ex;
+ penpos7(thick, 180); x7r = x1l; y7 = 2/3 * straight_ascend * ex;
+ penpos8(thick, 180); x8r = x7r; y8 = y5;
+ penpos9(med, 270); z9r = (7/6 + lnk, 0) u;
+
+ penstroke z6e .. {down}z7e .. {down}z8e .. {right}z9e ;
+
+ label(9);
+endchar;
+
+"The letter e";
+beginchar("e", ltr_w(1), ex#, 0);
+ penpos1(med, 270); z1 = (thin, 1/2 * ex) ;
+ penpos2(med, 270); z2 = (1/2, 1/2) u;
+ penpos3(med, 0); z3r = (1, 3/4) u;
+ penpos4(med, 90); z4r = (3/5, 1) u;
+ penpos5(thick, 180); z5r = (0, a_left) u;
+ penpos6(med, 270); z6r = (1/2, 0) u;
+ penpos7(med, ml_d); z7 = (1 + lnk, ml_y) u;
+
+ penstroke z1e .. z2e{right} .. tension 1.2 .. {up}z3e
+ .. z4e .. tension 1.2 .. z5e .. z6e{right} .. {ml_dir}z7e ;
+
+ label(7);
+
+ save_letter(e)(3/5 v);
+endchar ;
+
+"The letter f";
+beginchar("f", ltr_w(5/6), loop_ascend * ex#, loop_descend * ex#);
+ penpos2(med, 330); z2 = goodx (3/4, 2/3 * loop_ascend) u ;
+ penpos3(med, 100); z3r = (4/10, loop_ascend) u ;
+ penpos4(thick, 180); z4r = (0, 3/5 * loop_ascend) u ;
+ penpos5(thick, 180); z5r = (0, -1/3 * loop_descend) u ;
+ penpos6(med, 270); z6r = (4/10, - loop_descend) u ;
+ penpos7(med, 0); z7r = goodx (8/9, -2/5 * loop_descend) u ;
+ penpos8(med, 25); z8 = (2/3, 1/6) u ;
+ penpos9(thin, 135); z9 = z8 + (-2, 1) * ex / 9 ;
+ penpos10(med, 270); z10r = (2/3, 0) u ;
+ penpos11(med, ml_d); z11 = (5/6 + lnk, ml_y) u;
+
+ penstroke z2e{up} .. tension 1.2 .. z3e
+ .. controls (x4e,y3e) and (x4e,2/3[y3e,y4e]) .. z4e .. z5e
+ .. controls (x5e,2/3[y6e,y5e]) and (x5e,y6e) .. z6e .. tension 1.2
+ .. z7e {up} .. z8e {z9-z7} .. tension 1.1
+ .. {dir 225} z9e .. tension 1.1
+ .. {right}z10e .. {ml_dir}z11e ;
+
+ label(11);
+endchar ;
+
+"The letter g";
+beginchar("g", ltr_w(9/8), ex#, loop_descend * ex#);
+ penpos1(med, 0); x1r = hround (base_width * ex); y1 = 2/3 ex;
+ penpos2(med, 90); z2r = (3/5, 1) u;
+ penpos3(thick, 180); z3r = (0, a_left) u;
+ penpos4(med, 270); z4r = goodx (1/2, 0) u;
+ penpos5(med, 0); x5r = x1r; y5 = 1/3 ex;
+
+ penstroke z1e .. z2e .. tension 1.2 .. z3e .. z4e .. z5e ;
+
+ penpos6(thick, 190); z6 = z1 + (1/10, 2/9) u;
+ penpos7(thick, 180); z7r = z1l;
+ penpos8(thick, 180); x8r = x5l; y8 = -1/3 * loop_descend * ex;
+ penpos9(med, 90); x9 = x4; y9l = vround (-loop_descend * ex);
+ penpos10(med, 315); z10l = (1/4, -1/3 * loop_descend) u;
+ penpos11(med, ml_d); z11 = (9/8 + lnk, ml_y) u;
+
+ penstroke z6e .. z7e{down} .. {down}z8e .. tension 1.1
+ .. z9e .. z10e .. {ml_dir}z11e ;
+
+ label(11);
+endchar;
+
+"The letter h";
+beginchar("h", ltr_w(1), loop_ascend * ex#, 0);
+ penpos2(med, 330); z2 = goodx (3/4, 2/3 * loop_ascend) u ;
+ penpos3(med, 100); z3r = (4/10, loop_ascend) u ;
+ penpos4(thick, 180); z4r = goodx (0, 3/5 * loop_ascend) u ;
+ penpos5(thick, 180); z5r = (0, 0) u ;
+
+ penstroke z2e{up} .. tension 1.2 .. z3e
+ .. controls (x4e,y3e) and (x4e,2/3[y3e,y4e]) .. z4e .. z5e ;
+
+ penpos6(thick, 0); z6l = (0, 1/3) u;
+ penpos7(med, 270); z7l = (0.55, 1) u;
+ penpos8(thick, 180); x8l = hround (base_width * ex); y8 = 1/2 ex;
+ penpos9(med, 270); z9r = (1 + lnk, 0) u;
+
+ penstroke z6e{up} .. tension 1.4 .. z7e %.. tension 1.1
+ .. {down}z8e .. {right}z9e;
+
+ label(9);
+endchar;
+
+"The letter i";
+beginchar("i", ltr_w(1/2), height_with_dot, 0);
+ penpos1(thick, 180); x1r = hround (base_width * ex / 6); y1 = ex;
+ penpos2(thick, 180); x2r = x1r; y2r = 2/3 ex;
+ penpos3(med, 270); z3r = (1/2 + lnk, 0) u;
+
+ penstroke z1e -- z2e{down} .. {right}z3e;
+
+ save_letter(i)(x1);
+ height.i := ex; height#.i := ex#; % the letter is saved without the dot
+
+ pickup pencircle scaled thick;
+ x4 = x1; y4 = dot_height * ex;
+ pickup pencircle scaled dot_size;
+ drawdot z4;
+
+ label(4);
+endchar;
+
+"The letter j";
+beginchar("j", ltr_w(7/8), ex#, loop_descend * ex#);
+ penpos1(thick, 180); z1 = good.lft ((3/4, 1) u);
+ penpos2(thick, 180); x2 = x1; y2 = -1/3 loop_descend * ex;
+ penpos3(med, 90); x3 = x1/3; y3l = vround (-loop_descend * ex);
+ penpos4(med, 315); z4 = (0, -1/3 * loop_descend) u;
+ penpos5(med, ml_d); z5 = (7/8 + lnk, ml_y) u;
+
+ penstroke z1e{down} .. {down}z2e .. tension 1.1 .. z3e .. z4e .. {ml_dir}z5e;
+
+ save_letter(j)(x1);
+
+ pickup pencircle scaled thick;
+ x6 = x1; y6 = dot_height * ex;
+ pickup pencircle scaled dot_size;
+ drawdot z6;
+
+ label(6);
+endchar;
+
+"The letter k";
+beginchar("k", ltr_w(5/6), loop_ascend * ex#, 0);
+ penpos2(med, 330); z2 = goodx (3/4, 2/3 * loop_ascend) u ;
+ penpos3(med, 100); z3r = (4/10, loop_ascend) u ;
+ penpos4(thick, 180); z4r = (0, 3/5 * loop_ascend) u ;
+ penpos5(thick, 180); z5r = (0, 0) u ;
+
+ penstroke z2e{up} .. tension 1.2 .. z3e
+ .. controls (x4e,y3e) and (x4e,2/3[y3e,y4e]) .. z4e .. z5e ;
+
+ penpos6(med, 270); z6 = (thick, 13/16 * ex);
+ penpos7(med, 180); z7l = goodx (8/9, 9/16) u;
+ penpos8(med, 90); z8 = (1/8, 2/5) u;
+
+ penstroke z6e{dir 60} .. {down}z7e .. tension 1.3 .. {dir 140}z8e;
+
+ penpos9 (med, 270); z9 = z8;
+ penpos10(med, 270); z10r = (5/6 + lnk, 0) u;
+
+ penstroke z9e{dir 10} .. tension 0.8 ..{right}z10e;
+
+ label(11);
+endchar;
+
+"The letter l";
+beginchar("l", ltr_w(2/3), loop_ascend * ex#, 0);
+ penpos2(med, 330); z2 = goodx (3/4, 2/3 * loop_ascend) u;
+ penpos3(med, 100); z3r = (4/10, loop_ascend) u;
+ penpos4(thick, 180); z4r = (0, 3/5 * loop_ascend) u;
+ penpos5(thick, 180); z5r = (0, 1) u;
+ penpos6(med, 260); z6r = (1/2, 0) u;
+ penpos7(med, ml_d); z7 = (2/3 + lnk, ml_y) u;
+
+ penstroke z2e{up} .. tension 1.2 .. z3e
+ .. controls (x4e,y3e) and (x4e,2/3[y3e,y4e]) .. z4e -- z5e
+ .. controls (x5e,1/2[y5e,y6e]) and (x5e,y6e) .. z6e .. {ml_dir}z7e ;
+
+ label(7);
+endchar ;
+
+"The letter m";
+beginchar("m", ltr_w(13/6), ex#, 0);
+ pickup thickpen;
+ penpos1(med, 270); z1l = (1/3, 1) u;
+ penpos2(thick, 180); z2 = good.lft ((2/3, 1/3) u);
+ penpos3(thick, 180); x3 = x2; y3 = 0;
+
+ penstroke z1e{right} .. {down}z2e -- z3e;
+
+ penpos4(thick, 0); z4 = z2;
+ penpos5(med, 270); z5l = (1, 1) u;
+ penpos6(thick, 180); z6 = good.lft ((4/3, 1/3) u);
+ penpos7(thick, 180); x7 = x6; y7 = 0;
+
+ penstroke z4e{up} .. {right}z5e .. {down}z6e -- z7e;
+
+ penpos8 (thick, 0); z8 = z6;
+ penpos9 (med, 270); z9l = (5/3, 1) u;
+ penpos10(thick, 180); x10 - x6 = x6 - x2; y10 = 2/5 ex;
+ penpos11(med, 270); z11r = (13/6 + lnk, 0) u;
+
+ penstroke z8e{up} .. {right}z9e .. {down}z10e .. {right}z11e;
+
+ label(11);
+endchar;
+
+"The letter n";
+beginchar("n", ltr_w(3/2), ex#, 0);
+ pickup thickpen;
+ penpos1(med, 270); z1l = (1/3, 1) u;
+ penpos2(thick, 180); z2 = good.lft ((2/3, 1/3) u);
+ penpos3(thick, 180); z3 = (2/3, 0) u;
+
+ penstroke z1e{right} .. {down}z2e -- z3e;
+
+ penpos4(thick, 0); z4 = z2;
+ penpos5(med, 270); z5l = (1, 1) u;
+ penpos6(thick, 180); z6 = good.lft ((4/3, 2/5) u);
+ penpos7(med, 270); z7r = (3/2 + lnk, 0) u;
+
+ penstroke z4e{up} .. {right}z5e .. {down}z6e .. {right} z7e;
+
+ label(7);
+
+ save_letter(n)(x2);
+endchar;
+
+"The letter o";
+beginchar("o", ltr_w(9/8), ex#, 0);
+ penpos1(med, 330); z1r = (1, 7/10) u;
+ penpos2(med, 90); z2r = (1/2, 1) u;
+ penpos3(thick, 180); z3r = (0, a_left) u;
+ penpos4(med, 270); z4r = (3/5, 0) u;
+ penpos5(med, 0); z5r = (9/8, 1/2) u;
+ penpos6(med, 60); z6 = (7/8, 8/10) u;
+ penpos7(med, 220); z7 = (5/8, 3/5) u;
+ penpos8(med, 270); z8 = (9/8 + lnk, hl_y) u;
+
+ penstroke z1e .. z2e .. tension 1.1 .. z3e .. z4e
+ .. {up}z5e .. {dir 150}z6e .. {dir 310}z7e .. {right}z8e;
+
+ label(8);
+
+ save_letter(o)(1/2[x3r,x5r]);
+endchar ;
+
+"The letter p";
+beginchar("p", ltr_w(7/4), ex#, straight_descend * ex#);
+ pickup thickpen;
+ penpos1(thick, 180); z1 = good.lft ((3/4, 1) u);
+ penpos2(thick, 180); x2 = x1; y2 = vround (-straight_descend * ex);
+
+ penstroke z1e -- z2e;
+
+ penpos3(med, 0); z3r = (x1l, 0);
+ penpos4(med, 270); z4l = (5/4, 1) u;
+ penpos5(thick, 180);
+ penpos6(med, 270); z6r = (7/4 + lnk, 0) u;
+ z5 = good.lft ((1/2[x4,x6], 1/2 * ex));
+
+ penstroke z3e{up} .. tension 1.2 .. {right}z4e .. z5e .. {right}z6e;
+
+ label(6);
+endchar;
+
+"The letter q with no link";
+beginchar(150, ltr_w(1), ex#, straight_descend * ex#);
+ penpos1(med, 0); x1r = hround (base_width * ex); y1 = 2/3 ex;
+ penpos2(med, 90); z2r = (3/5, 1) u;
+ penpos3(thick, 180); z3r = (0, a_left) u;
+ penpos4(med, 270); z4r = (1/2, 0) u;
+ penpos5(med, 0); x5 = x1; y5 = 1/3 ex;
+
+ penstroke z1e .. z2e .. tension 1.2 .. z3e .. z4e{right} .. z5e ;
+
+ penpos6(thick, 195); z6 = z1 + (1/10, 2/9) u;
+ penpos7(thick, 180); z7r = z1l;
+ penpos8(thick, 180); x8r = x5l; y8 = vround (-straight_descend * ex);
+
+ penstroke z6e .. z7e --- z8e;
+
+ letter.q := currentpicture; % We keep the glyph for the linked version.
+
+ label(8);
+endchar;
+
+"The letter q with a right link";
+beginchar("q", ltr_w(7/6), ex#, straight_descend * ex#)
+ addto currentpicture also letter.q;
+ penpos0(med, 0); x0r = hround (base_width * ex); y0 = 1/3 ex;
+ penpos1(thick, 180); z1r = z0l;
+ penpos2(med, 270); z2r = (7/6 + lnk, 0) u;
+ penstroke z1e{down} .. {right}z2e;
+ label(2);
+endchar;
+
+
+"The letter r";
+beginchar("r", ltr_w(5/4), 6/5 ex#, 0);
+ penpos1(med, 0); z1l = (1/6, 1) u;
+ penpos2(med, 90); z2r = z1l + (-1/3,1)/5 u;
+ penpos3(med, 270); z3l = z1l;
+ penpos4(med, 220); %z4l = (1, 1) u;
+ %z4l = (x5l,y3l);
+ z4r = (x5r,y3r);
+ penpos5(thick, 180); z5l = (9/8, 2/5) u;
+ penpos6(med, 270); z6r = (5/4 + lnk, 0) u;
+
+ penstroke z1e{up} .. z2e .. z3e .. tension 1.4 .. z4e
+ .. tension 1.3 .. {down}z5e .. {right}z6e;
+
+ label(6);
+endchar;
+
+"The letter s with no link";
+beginchar(154, ltr_w(13/12), 7/6 ex#, 0);
+ penpos0(thick, 0); z0r = (3/4, 1) u;
+ penpos1(med, 0); z1l = z0l;
+ penpos2(med, 90); z2r = z1l + (0, 1/6) u;
+ penpos3(med, 210); z3l = z1l;
+ penpos4(thick, 180); z4l = (5/4, 1/3) u;
+ penpos5(med, 90); z5l = (5/8, 0) u;
+ penpos6(med, 300); z6 = (1/2, 2/5) u;
+
+ penstroke z1e{dir 60} .. z2e .. z3e{dir 315} .. tension 1.2 .. z4e
+ .. {left}z5e .. {dir 30}z6e;
+
+ letter.s := currentpicture; % Same trick as for the q.
+
+ label(6);
+endchar;
+
+"The letter s with a right link";
+beginchar("s", ltr_w(5/4), 7/6 ex#, 0);
+ addto currentpicture also letter.s;
+ penpos1(med, 180); z1l = (5/4, 1/3) u;
+ penpos2(med, 270); z2r = (5/4 + lnk, 0) u;
+ penstroke z1e .. {right}z2e;
+ label(2);
+endchar;
+
+"The letter t";
+beginchar("t", ltr_w(7/8), straight_ascend * ex#, 0);
+ penpos1(thick, 180); z1r = goodx (1/6, straight_ascend) u;
+ penpos2(thick, 180); z2r = goodx (1/6, 2/3) u;
+ penpos3(med, 270); z3r = (2/3, 0) u;
+ penpos4(med, ml_d); z4 = (7/8 + lnk, ml_y) u;
+
+ penstroke z1e -- z2e{down} .. {right}z3e .. {ml_dir}z4e;
+
+ penpos5(med, 270); z5l = goodxy (1/6 * v + med, 2/3 * straight_ascend * ex);
+ penpos6(med, 270); z6l = goodxy (1, 2/3 * straight_ascend) u;
+
+ penstroke z5e -- z6e;
+
+ label(6);
+endchar;
+
+"The letter u";
+beginchar("u", ltr_w(4/3), ex#, 0);
+ penpos1(thick, 180); z1r = goodx (1/6, 1) u;
+ penpos2(thick, 180); x2 = x1 ; y2 = 1/2 ex;
+ penpos3(med, 270); x3 = 1/2[x2,x4]; y3r = 0;
+ pickup thickpen;
+ penpos4(thick, 0); z4 = good.lft ((7/6, 1/2) u);
+ penpos5(thick, 0); x5 = x4 ; y5 = ex ;
+
+ penstroke z1e -- z2e{down} .. {right}z3e .. {up}z4e -- z5e;
+
+ penpos6(thick, 180); z6 = z4;
+ penpos7(med, 270); z7r = (4/3 + lnk, 0) u;
+
+ penstroke z6e{down}.. {right}z7e;
+
+ label(7);
+
+ save_letter(u)(1/2[x1,x5]);
+endchar;
+
+"The letter v";
+beginchar("v", ltr_w(10/6), ex#, 0);
+ pickup thickpen;
+ penpos1(med, 270); z1l = (1/3, 1) u;
+ penpos2(thick, 180); z2 = good.lft ((1/2, 1/2) u);
+ penpos3(med, 270); z3r = (1, 0) u;
+ penpos4(med, 0); z4 = goodx (3/2, 5/8) u;
+ penpos5(med, 150); z5r = (7/6, 15/16) u;
+ penpos6(med, 270); z6 = (10/6 + lnk, hl_y) u;
+
+ penstroke z1e{right} .. tension 1.2
+ .. {down} z2e .. {right}z3e .. {up}z4e
+ .. tension 0.8 .. {dir 240}z5e .. {right}z6e;
+
+ label(6);
+endchar;
+
+"The letter w";
+beginchar("w", ltr_w(13/6), ex#, 0);
+ pickup thickpen;
+ penpos1(med, 270); z1l = (1/3, 1) u;
+ penpos2(thick, 180); z2 = good.lft ((1/2, 1/2) u);
+ penpos3(med, 270); z3r = (7/8, 0) u;
+ penpos5(thick, 180); z5 = good.lft ((9/8, 7/8) u);
+ penpos4(med, 0); z4l = z5r;
+
+ penstroke z1e{right} .. tension 1.2 .. {down}z2e
+ .. {right}z3e .. tension 1.3 .. {up}z4e;
+
+ penpos6(med, 270); z6r = (13/8, 0) u;
+ penpos7(med, 0); z7 = goodx (2, 5/8) u;
+ penpos8(med, 150); z8r = (5/3, 15/16) u;
+ penpos9(med, 270); z9 = (13/6 + lnk, hl_y) u;
+
+ penstroke z5e{down} .. tension 1.3 .. {right}z6e
+ .. {up}z7e .. tension 0.8 .. {dir 240}z8e .. {right}z9e;
+
+ label(9);
+endchar;
+
+"The letter x";
+beginchar("x", ltr_w(8/5), ex#, 0);
+ penpos0(med, 300); z0 = (-1/5, 5/6) u;
+ penpos1(med, 270); z1l = (1/3, 1) u;
+ penpos2(thick, 180); z2 = (4/5, 1/2) u;
+ penpos3(med, 90); z3l = (1/3, 0) u;
+ penpos4(med, 45); z4 = (0, 1/8) u;
+
+ penstroke z1e{right} .. {dir 270}z2e .. {left}z3e .. {dir 135}z4e;
+
+ penpos5(med, 45); z2 = 1/2 [z4, z5];
+ penpos6(med, 270); z2 = 1/2 [z1, z6];
+ penpos7(med, ml_d); z7 = (8/5 + lnk, ml_y) u;
+
+ penstroke z5e{dir 135} .. {dir 270}z2e .. {right}z6e .. {ml_dir}z7e;
+
+ label(7);
+endchar;
+
+"The letter y";
+beginchar("y", width#.j + (3v/2 - accpos.j + lnk) / ex * ex#,
+ ex#, loop_descend * ex#);
+ pickup thickpen;
+ penpos1(med, 270); z1l = (1/3, 1) u;
+ penpos2(thick, 180); z2 = good.lft ((1/2, 1/2) u);
+ penpos3(med, 270); z3r = (1/2[x2,x4], 0);
+ penpos4(med, 0); z4l = z5r;
+ penpos5(thick, 180); z5 = (3/2, 1) u;
+ penstroke z1e{right} .. {down}z2e .. {right}z3e .. {up}z4e;
+
+ addto currentpicture also letter.j shifted (x5 - accpos.j, 0);
+
+ label(4);
+
+ save_letter(y)(x3);
+endchar;
+
+"The letter z";
+beginchar("z", ltr_w(11/6), 6/5 * ex#, loop_descend * ex#);
+ penpos1(med, 0); z1l = (1/6, 1) u;
+ penpos2(med, 90); z2r = z1l + (-1/3,1)/5 u;
+ penpos3(med, 270); z3l = z1l;
+ penpos4(thick, 210); z4l = (9/8, 1) u;
+ penpos5(med, 135); z5 = (2/3, 0) u;
+
+ penstroke z1e{up} .. z2e .. z3e .. z4e .. {dir 225}z5e;
+
+ penpos6(med, 315); z6 = z5;
+ penpos7(thick, 220); z7 = (5/4, 1/5) u;
+ penpos8(thick, 155); z8 = (7/4, -4/9 * loop_descend) u;
+ penpos9(med, 90); z9l = (1, -loop_descend) u;
+ penpos10(med, 315); z10 = (7/8, -1/3 * loop_descend) u;
+ penpos11(med, ml_d); z11 = (11/6 + lnk, ml_y) u;
+
+ penstroke z6e{dir 45} .. z7e .. z8e .. tension 1.3
+ .. z9e .. z10e .. tension 1.4 .. {ml_dir}z11e;
+
+ label(8);
+endchar;
+
+
+%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %%
+
+%%\sec Uppercase letters. %{{{1
+
+hgt := uc_ascend * ex#;
+
+%% The small loop at the beginning of H, I, J and K is the same.
+
+picture small_loop;
+
+
+"The letter A";
+beginchar("A", ltr_wd(3,0), hgt, 0);
+
+%% The left bar:
+
+ penpos1(thin, 0); z1 = (3/5, 2/9) uu;
+ penpos2(med, 90); z2l = (2/5, 1/3) uu;
+ penpos3(med, 180); z3r = (0, 1/6) uu;
+ penpos4(med, 280); z4r = (2/5, 0) uu;
+ penpos5(med, 0); z5 = (7/6, 1/2) uu;
+ penpos6(med, 320); z6 = (3/2, 1) uu;
+
+ penstroke z1e .. {left}z2e .. z3e
+ .. z4e .. {up}z5e .. z6e;
+
+%% The right bar:
+
+ penpos7(med, 145); z7 = z6;
+ penpos8(thick, 180); z8l = (3/2, 5/12) uu;
+ penpos9(med, 270); z9r = (6/3, 0) uu;
+ penpos10(med, 0); z10r = (3, 1/3) uu;
+ penpos11(med, 90); z11 = (5/2, 2/3) uu;
+ penpos12(thin, 240); z12 = (17/8, 1/3) uu;
+
+ penstroke z7e .. z8e{down} .. z9e .. z10e
+ .. tension 1.2 .. {left}z11e .. {dir 290}z12e;
+
+%% The horizontal bar:
+
+ penpos13(thin, 330); z13 = (7/8, 6/12) uu;
+ penpos14(med, 270); z14 = (13/8, 1/2) uu;
+ penpos15(thin, 0); z15 = (11/6, 4/6) uu;
+
+ penstroke z13e{dir 105} .. {right}z14e .. {dir 110}z15e;
+
+ label(15);
+
+ save_letter(A)(x6l);
+endchar;
+
+
+"The letter B";
+beginchar("B", ltr_wd(5/2,0), hgt, 0);
+
+%% The vertical bar:
+
+ penpos1(med, 135); z1 = (1, 1) uu;
+ penpos2(thick, 180); z2 = (1, 2/5) uu;
+ penpos3(med, 90); z3l = (3/5, 0) uu;
+ penpos4(med, 330); z4l = (1/5, 1/6) uu;
+
+ penstroke z1e{dir 255} .. z2e .. {left}z3e .. z4e;
+
+%% The two loops:
+
+ penpos5(thin, 180); z5 = (3/5, 3/5) uu;
+ penpos6(med, 90); z6 = (3/10, 1/3) uu;
+ penpos7(med, 0); z7l = (0, 3/5) uu;
+ penpos8(med, 270); z8l = (1, 1) uu;
+ penpos9(thick, 180); z9 = (2, 7/9) uu;
+ penpos10(med, 345); z10 = (9/8, 3/5) uu;
+ penpos11(thick, 180); z11l = (5/2, 2/9) uu;
+ penpos12(med, 90); z12l = (7/4, 0) uu;
+ penpos13(med, 0); z13 = (5/4, 1/6) uu;
+ penpos14(thin, 340); z14 = (3/2, 3/10) uu;
+
+ penstroke z5e{down} .. tension 1.2 .. z6e .. tension 1.3 .. {up}z7e
+ .. {right}z8e .. {down}z9e .. tension 1.4 .. {up}z10e .. tension 1.5
+ .. {down}z11e .. {left}z12e .. tension 1.0 .. z13e .. z14e;
+
+ label(14);
+endchar;
+
+
+"The letter C";
+beginchar("C", ltr_wd(2,0), hgt, 0);
+ penpos1(thin, 180); z1 = (2/5, 1) uu;
+ penpos2(med, 180); z2r = (0, 2/3) uu;
+ penpos3(med, 270); z3 = (1, 1/2) uu;
+ penpos4(med, 0); z4r = (2, 5/6) uu;
+ penpos5(med, 90); z5r = (8/5, 1) uu;
+ penpos6(thick, 180); z6r = (2/5, 2/5) uu;
+ penpos7(med, 270); z7r = (4/3, 0) uu;
+ penpos8(med, 0); z8 = (9/5, 1/4) u;
+ penpos9(thin, 130); z9 = (7/5, 1/3) uu;
+
+ penstroke z1e .. {down}z2e .. z3e .. z4e .. z5e
+ .. {down}z6e .. z7e .. z8e .. z9e;
+
+ label(9);
+
+ save_letter(C)(x7);
+endchar;
+
+
+"The letter D";
+beginchar("D", ltr_wd(13/6,0), hgt, 0);
+ penpos1(thin, 180); z1 = (4/3, 1) uu;
+ penpos2(thick, 180); z2 = (1, 1/2) uu;
+ penpos3(med, 90); z3l = (1/3, 0) uu;
+ penpos4(med, 0); z4l = (0, 1/6) uu;
+ penpos5(med, 270); z5 = (4/5, 1/6) uu;
+ penpos6(med, 270); z6r = (3/2, 0) uu;
+ penpos7(thick, 0); z7r = (13/6, 1/3) uu;
+ penpos8(med, 90); z8r = (6/7, 1) uu;
+ penpos9(med, 180); z9r = (0, 3/4) uu;
+ penpos10(thin, 240); z10 = (2/5, 1/2) uu;
+ penpos11(thin, 0); z11 = (2/3, 2/3) uu;
+
+ penstroke z1e .. z2e .. z3e .. z4e{up} .. z5e
+ .. z6e .. z7e .. z8e .. z9e .. z10e .. {up}z11e;
+
+ label(11);
+endchar;
+
+
+"The letter E";
+beginchar("E", ltr_wd(2,0), hgt, 0);
+ penpos1(thin, 180); z1 = (1/3, 1) uu;
+ penpos2(med, 270); z2 = (1/5, 3/4) uu;
+ penpos3(med, 0); z3 = (8/5, 7/8) uu;
+ penpos4(med, 90); z4r = (4/3, 1) uu;
+ penpos5(thick, 180); z5 = (2/3, 7/10) uu;
+ penpos6(thin, 270); z6l = (4/3, 12/20) uu;
+
+ penstroke z1e .. z2e .. tension 1.3 .. z3e .. z4e .. z5e .. {right}z6e;
+
+ penpos7(med, 90); z7r = z6l;
+ penpos8(thick, 180); z8r = (1/6, 1/6) uu;
+ penpos9(med, 270); z9r = (1, 0) uu;
+ penpos10(med, 0); z10r = (2, 1/4) uu;
+ penpos11(thin, 130); z11 = (7/6, 1/4) uu;
+
+ penstroke z7e{left} .. z8e .. z9e .. z10e{up} .. z11e;
+
+ label(11);
+
+ save_letter(E)(1/2[x3,x5]);
+endchar;
+
+
+"The letter F";
+beginchar("F", ltr_wd(9/4,0), hgt, 0);
+
+%% The vertical bar:
+
+ penpos1(thin, 135); z1 = (6/4, 1) uu;
+ penpos2(thick, 180); z2 = (5/4, 1/2) uu;
+ penpos3(med, 90); z3l = (2/3, 0) uu;
+ penpos4(thin, 330); z4 = (1/3, 1/6) uu;
+
+ penstroke z1e .. {down}z2e .. z3e .. z4e;
+
+%% The upper horizontal bar:
+
+ penpos5(thin, 180); z5 = (3/4, 2/3) uu;
+ penpos6(med, 90); z6 = (1/2, 1/3) uu;
+ penpos7(med, 0); z7l = (0, 1/2) uu;
+ penpos8(med, 270); z8l = (4/5, 1) uu;
+ penpos9(med, 270); z9 = (2, 5/6) uu;
+ penpos10(thin, 90); z10r = (2, 1) uu;
+
+ penstroke z5e .. tension 1.2 .. z6e .. z7e
+ .. tension 1.2 .. z8e{right} .. {right}z9e .. z10e;
+
+%% The middle bar:
+
+ penpos11(med, 270); z11 = z2r - (1/10, 0) uu;
+ penpos12(med, 270); z12 = z2r + (2/3, 0) uu;
+ penpos13(med, 110); z13 = z2r + (2/3, 1/12) uu;
+ penpos14(thin, 180); z14 = z2r + (1/2, -1/6) uu;
+
+ penstroke z11e .. z12e{right} .. z13e .. {down}z14e;
+
+ label(14);
+endchar;
+
+
+"The letter G";
+beginchar("G", ltr_wd(2,1), hgt, loop_descend * ex#);
+ penpos1(thin, 180); z1 = (1/2, 1) uu;
+ penpos2(med, 200); z2r = (0, 2/3) uu;
+ penpos3(med, 0); z3r = (2, 5/6) uu;
+ penpos4(med, 90); z4r = (5/3, 1) uu;
+ penpos5(thick, 180); z5r = (1/3, 1/3) uu;
+ penpos6(med, 270); z6r = (1, 0) uu;
+ penpos7(thick, 0); z7r = (15/8, 1) u;
+
+ penstroke z1e .. {down}z2e .. tension 1.2 .. z3e .. z4e
+ .. tension 1.2 .. z5e .. z6e .. {up}z7e;
+
+ addto currentpicture also letter.j shifted (9/8 * v, 0);
+
+ label(7);
+endchar;
+
+
+"The letter H";
+beginchar("H", ltr_wd(5/2,0), hgt, 0);
+
+%% The loop before the vertical bar:
+
+ penpos1(thin, 270); z1l = (0, 7/12) uu;
+ penpos2(med, 20); z2 = (1/6, 1) uu;
+ penpos3(med, 250); z3l = (1/10, 29/30) uu;
+ penpos4(thick, 0); z4 = (1, 1) uu;
+
+ penstroke z1e .. {dir 110}z2e .. {dir 340}z3e .. z4e;
+
+ small_loop := currentpicture;
+
+%% The letter's shape:
+
+ penpos5(thick, 180); z5 = z4;
+ penpos6(thick, 180); z6 = (1, 1/3) uu;
+ penpos7(med, 90); z7l = (1/2, 0) uu;
+ penpos8(med, 0); z8l = (0, 1/6) uu;
+ penpos9(med, 315); z9 = (5/4, 1/2) uu;
+ penpos10(med, 0); z9 = 1/2[z8, z10];
+ penpos11(med, 90); z9 = 1/2[z7, z11];
+ penpos12(thick, 180); z9 = 1/2[z6, z12];
+ penpos13(thick, 180); z13 = (3/2, 1/3) uu;
+ penpos14(med, 270); z14r = (2, 0) uu;
+ penpos15(thin, 90); z15 = (2, 1/3) uu;
+
+ penstroke z5e .. z6e .. z7e .. z8e .. z9e .. z10e .. z11e .. z12e .. z13e
+ .. z14e .. {dir 190}z15e;
+
+%% The small vertical bar in the middle:
+
+ penpos16(thin, 180); z16 = z9 + (0, 1/8) uu;
+ penpos17(thin, 180); z9 = 1/2[z16, z17];
+
+ penstroke z16e .. z17e;
+
+ label(18);
+endchar;
+
+
+"The letter I";
+beginchar("I", ltr_wd(1,0) + thick#/2, hgt, 0);
+
+ addto currentpicture also small_loop;
+
+ penpos1(thick, 180); z1 = (1, 1) uu;
+ penpos2(thick, 180); z2 = (1, 1/3) uu;
+ penpos3(med, 90); z3l = (3/5, 0) uu;
+ penpos4(med, 0); z4l = (0, 1/6) uu;
+ penpos5(thin, 270); z5 = (1/3, 1/3) uu;
+
+ penstroke z1e .. {down}z2e .. z3e .. z4e .. {right}z5e;
+
+ label(5);
+
+ save_letter(I)(x3);
+endchar;
+
+
+"The letter J";
+beginchar("J", ltr_wd(9/8,1) + thick#/2, hgt, loop_descend * ex#);
+ addto currentpicture also small_loop;
+ addto currentpicture also letter.j shifted (1/4 v + thick/2, 0);
+
+ penpos1(thick, 180); z1 = (1, 1) uu;
+ penpos2(thick, 180); z2 = (1, 0) uu;
+
+ penstroke z1e .. z2e;
+
+ label(2);
+endchar;
+
+
+"The letter K";
+beginchar("K", ltr_wd(7/3,0), hgt, 0);
+
+%% We get back the I's vertical bar:
+
+ addto currentpicture also letter.I;
+
+%% And we add the oblique bars:
+
+ penpos1(thin, 0); z1r = (7/3, 9/10) uu;
+ penpos2(med, 90); z2r = (2, 1) uu;
+ penpos3(thick, 180); z3 = 1/2[z2, z4];
+ penpos4(med, 90); z4 = (7/6, 5/12) uu;
+ penpos5(med, 0); z5 = (5/6, 11/24) uu;
+ penpos6(med, 270); z6 = (7/6, 1/2) uu;
+ penpos7(thick, 180); z7 = 1/2[z6, z8];
+ penpos8(med, 290); z8r = (2, 0) uu;
+ penpos9(med, 0); z9r = (7/3, 1/6) uu;
+ penpos10(thin, 90); z10 = (2, 1/3) uu;
+
+ penstroke z1e .. z2e .. z3e .. z4e .. z5e .. z6e .. z7e .. z8e
+ .. z9e .. z10e;
+
+ label(10);
+endchar;
+
+
+"The letter L";
+beginchar("L", ltr_wd(7/3,0), hgt, 0);
+ penpos1(thin, 180); z1r = (0, 1) uu;
+ penpos2(med, 270); z2 = (7/6, 1/2) uu;
+ penpos3(med, 0); z3r = (7/3, 5/6) uu;
+ penpos4(med, 110); z4r = (2, 1) uu;
+ penpos5(thick, 150); z5 = (7/6, 1/2) uu;
+ penpos6(med, 110); z6l = (1/2, 0) uu;
+ penpos7(med, 0); z7l = (0, 1/6) uu;
+ penpos8(med, 240); z8 = (2/3, 1/4) uu;
+ penpos9(med, 270); z9r = (5/3, 0) uu;
+ penpos10(med, 0); z10r = (7/3, 1/6) uu;
+ penpos11(thin, 180); z11 = (7/4, 1/4) uu;
+
+ penstroke z1e{down} .. z2e .. z3e .. z4e .. z5e .. z6e
+ .. z7e .. {dir -50}z8e .. {right}z9e .. z10e .. {down}z11e;
+
+ label(11);
+endchar;
+
+
+"The letter M";
+beginchar("M", ltr_wd(10/3,0), hgt, 0);
+
+%% The left bar:
+
+ penpos1(thin, 0); z1 = (1/2, 1/4) uu;
+ penpos2(med, 180); z2r = (0, 1/5) uu;
+ penpos3(med, 300); z3r = (1/2, 0) uu;
+ penpos4(med, 0); z4l = (1, 1) uu;
+
+ penstroke z1e{up} .. {down}z2e .. z3e .. tension 1.6 .. {up}z4e;
+
+%% The first middle bar:
+
+ penpos5(thick, 180); z5r = z4l;
+ penpos6(thick, 180); z6 = (4/3, 0) uu;
+
+ penstroke z5e .. z6e;
+
+%% The second middle bar:
+
+ penpos7(med, 0); z7r = z6l;
+ penpos8(med, 0); z8l = (2, 1) uu;
+
+ penstroke z7e .. {dir 70}z8e;
+
+%% The right bar:
+
+ penpos9(thick, 180); z9r = z8l;
+ penpos10(med, 270); z10r = (5/2, 0) uu;
+ penpos11(med, 0); z11r = (10/3, 1/3) uu;
+ penpos12(med, 90); z12 = (8/3, 2/3) uu;
+ penpos13(thin, 180); z13 = (7/3, 1/3) uu;
+
+ penstroke z9e{dir 250} .. tension 1.5 .. {right}z10e .. z11e
+ .. z12e .. {down}z13e;
+
+ label(13);
+endchar;
+
+
+"The letter N";
+beginchar("N", ltr_wd(3,0), hgt, 0);
+
+%% The left bar:
+
+ penpos1(thin, 0); z1 = (1/2, 1/4) uu;
+ penpos2(med, 180); z2r = (0, 1/5) uu;
+ penpos3(med, 300); z3r = (1/2, 0) uu;
+ penpos4(med, 0); z4l = (1, 1) uu;
+
+ penstroke z1e{up} .. {down}z2e .. z3e .. tension 1.6 .. {up}z4e;
+
+%% The middle bar:
+
+ penpos5(med, 180); z5r = z4l;
+ penpos6(thick, 180); z6 = (3/2, 0) uu;
+
+ penstroke z5e .. z6e;
+
+%% The right bar:
+
+ penpos7(med, 0); z7r = z6l;
+ penpos8(med, 290); z8l = (7/3, 1) uu;
+ penpos9(med, 180); z9l = (3, 2/3) uu;
+ penpos10(med, 90); z10 = (5/2, 1/3) uu;
+ penpos11(thin, 0); z11 = (2, 2/3) uu;
+
+ penstroke z7e{up} .. tension 1.2 .. z8e .. {down}z9e .. z10e
+ .. {dir 70}z11e;
+
+ label(11);
+
+ save_letter(N)(x6);
+endchar;
+
+
+"The letter O";
+beginchar("O", ltr_wd(2,0), hgt, 0);
+ penpos1(thin, 90); z1r = (9/8, 1) uu;
+ penpos2(thick, 180); z2r = (0, 1/2) uu;
+ penpos3(med, 270); z3r = (1, 0) uu;
+ penpos4(thick, 0); z4r = (2, 1/2) uu;
+ penpos5(med, 90); z5r = (6/5, 19/20) uu;
+ penpos6(thin, 180); z6 = (1/2, 1/3) uu;
+
+ penstroke z1e{left} .. z2e .. z3e .. z4e .. z5e .. {dir 300}z6e;
+
+ label(6);
+
+ save_letter(O)(x1);
+endchar;
+
+
+"The letter P";
+beginchar("P", ltr_wd(5/2,0), hgt, 0);
+ penpos1(thin, 180); z1r = (3/2, 1) uu;
+ penpos2(thick, 180); z2 = (3/2, 1/2) uu;
+ penpos3(med, 90); z3l = (1, 0) uu;
+ penpos4(thin, 0); z4 = (1/2, 1/4) uu;
+
+ penstroke z1e .. z2e .. z3e .. z4e;
+
+ penpos5(thin, 180); z5 = (1, 2/3) uu;
+ penpos6(med, 90); z6 = (1/2, 1/3) uu;
+ penpos7(med, 0); z7l = (0, 1/2) uu;
+ penpos8(med, 270); z8l = (4/3, 1) uu;
+ penpos9(thick, 180); z9l = (5/2, 3/4) uu;
+ penpos10(thin, 0); z10 = (5/3, 3/4) uu;
+
+ penstroke z5e .. z6e .. z7e{up} .. z8e .. z9e{down} .. z10e;
+
+ label(10);
+endchar;
+
+
+"The letter Q";
+beginchar("Q", ltr_wd(5/2,0), hgt, thick#/2);
+ addto currentpicture also letter.O;
+
+ penpos1(thin, 270); z1 = (4/5, 1/6) uu;
+ penpos2(thick, 270); z2 = (2, 0) uu;
+ penpos3(med, 0); z3r = (5/2, 1/8) uu;
+ penpos4(thin, 90); z4 = (13/6, 1/4) uu;
+
+ penstroke z1e{dir 20} .. z2e .. z3e .. z4e;
+
+ label(4);
+endchar;
+
+
+"The letter R";
+beginchar("R", ltr_wd(13/4,0), hgt, 0);
+ penpos1(thin, 180); z1r = (3/2, 1) uu;
+ penpos2(thick, 180); z2 = (3/2, 1/2) uu;
+ penpos3(med, 90); z3l = (1, 0) uu;
+ penpos4(thin, 0); z4 = (1/2, 1/4) uu;
+
+ penstroke z1e .. z2e .. z3e .. z4e;
+
+ penpos5(thin, 180); z5 = (1, 2/3) uu;
+ penpos6(med, 90); z6 = (1/2, 1/3) uu;
+ penpos7(med, 0); z7l = (0, 1/2) uu;
+ penpos8(med, 270); z8l = (4/3, 1) uu;
+ penpos9(thick, 180); z9 = (5/2, 3/4) uu;
+ penpos10(med, 345); z10 = (5/3, 3/5) uu;
+ penpos11(thick, 180); z11 = (7/3, 1/3) uu;
+ penpos12(med, 270); z12r = (11/4, 0) uu;
+ penpos13(med, 0); z13r = (13/4, 1/6) uu;
+ penpos14(thin, 90); z14 = (11/4, 1/3) uu;
+
+ penstroke z5e .. z6e .. z7e{up} .. z8e .. z9e .. tension 1.2 .. z10e{up}
+ .. tension 1.4 .. z11e .. z12e .. z13e .. z14e;
+
+ label(14);
+endchar;
+
+
+"The letter S";
+beginchar("S", ltr_wd(2,0), hgt, 0);
+ penpos1(thin, 180); z1 = (2/5, 1) uu;
+ penpos2(med, 180); z2r = (0, 2/3) uu;
+ penpos3(med, 270); z3 = (1, 1/2) uu;
+ penpos4(med, 0); z4r = (2, 5/6) uu;
+ penpos5(med, 90); z5r = (8/5, 1) uu;
+ penpos6(thick, 210); z6r = (1, 1/3) uu;
+ penpos7(med, 90); z7l = (1, 0) uu;
+ penpos8(med, 70); z8 = (2/5, 1/4) u;
+ penpos9(thin, 180); z9r = (0, 0) uu;
+
+ penstroke z1e .. {down}z2e .. z3e .. z4e .. z5e
+ .. z6e .. z7e .. z8e .. {dir 250}z9e;
+
+ label(9);
+endchar;
+
+
+"The letter T";
+beginchar("T", ltr_wd(11/4,0), hgt, 0);
+ penpos1(thin, 180); z1 = (1, 2/3) uu;
+ penpos2(med, 0); z2l = (0, 7/10) uu;
+ penpos3(med, 270); z3l = (2/3, 1) uu;
+ penpos4(thick, 200); z4 = (13/8, 2/3) uu;
+ penpos5(med, 0); z5r = (11/4, 3/4) uu;
+ penpos6(med, 90); z6r = (17/8, 1) uu;
+ penpos7(thick, 180); z7 = (9/8, 2/5) uu;
+ penpos8(med, 270); z8r = (2, 0) uu;
+ penpos9(med, 0); z9r = (5/2, 1/6) uu;
+ penpos10(thin, 180); z10 = (7/4, 1/4) uu;
+
+ penstroke z1e{down} .. {up}z2e .. z3e .. {dir 300}z4e .. z5e
+ .. {left}z6e .. tension 1.2 .. z7e .. {right}z8e .. z9e .. z10e;
+
+ label(10);
+endchar;
+
+
+"The letter U";
+beginchar("U", ltr_wd(3,0), hgt, 0);
+ penpos1(thin, 180); z1 = (3/4, 3/5) uu;
+ penpos2(med, 0); z2l = (0, 2/3) uu;
+ penpos3(med, 250); z3l = (3/5, 1) uu;
+ penpos4(thick, 180); z4 = (1, 1/4) uu;
+ penpos5(med, 270); z5r = (3/2, 0) uu;
+ penpos6(med, 0); z6 = (2, 1/6) uu;
+
+ penstroke z1e{down} .. z2e{up} .. z3e .. tension 1.1 .. z4e .. z5e .. z6e;
+
+ penpos7(med, 180); z7 = (2, 1) uu;
+ penpos8(thick, 180); z8 = z6;
+ penpos9(med, 270); z9r = (5/2, 0) uu;
+ penpos10(med, 0); z10r = (3, 1/6) uu;
+ penpos11(thin, 90); z11 = (12/5, 1/3) uu;
+
+ penstroke z7e{down} .. z8e{dir 280} .. z9e .. z10e .. z11e;
+
+ label(11);
+
+ save_letter(U)(1/2[x4,x7]);
+endchar;
+
+
+"The letter V";
+beginchar("V", ltr_wd(8/3,0), hgt, 0);
+ penpos1(thin, 180); z1 = (3/4, 3/5) uu;
+ penpos2(med, 0); z2l = (0, 2/3) uu;
+ penpos3(med, 250); z3l = (3/5, 1) uu;
+ penpos4(thick, 180); z4 = (1, 1/4) uu;
+ penpos5(med, 270); z5r = (3/2, 0) uu;
+ penpos6(med, 0); z6 = (9/4, 1/2) uu;
+ penpos7(med, 90); z7r = (11/6, 1) uu;
+ penpos8(med, 270); z8 = (2, 2/3) uu;
+ penpos9(thin, 0); z9r = (8/3, 1) uu;
+
+ penstroke z1e{down} .. z2e{up} .. z3e .. tension 1.1 .. z4e .. z5e
+ .. {up}z6e .. tension 1.3 .. z7e{left} .. {right}z8e .. {up}z9e;
+
+ label(9);
+endchar;
+
+
+"The letter W";
+beginchar("W", ltr_wd(11/3,0), hgt, 0);
+ penpos1(thin, 180); z1 = (3/4, 3/5) uu;
+ penpos2(med, 0); z2l = (0, 2/3) uu;
+ penpos3(med, 250); z3l = (3/5, 1) uu;
+ penpos4(thick, 180); z4 = (1, 1/4) uu;
+ penpos5(med, 270); z5r = (3/2, 0) uu;
+ penpos6(med, 0); z6 = (2, 1/6) uu;
+
+ penstroke z1e{down} .. z2e{up} .. z3e .. tension 1.1 .. z4e .. z5e .. z6e;
+
+ penpos7(med, 180); z7 = (15/8, 7/8) uu;
+ penpos8(thick, 180); z8 = z6;
+ penpos9(med, 270); z9r = (5/2, 0) uu;
+ penpos10(med, 0); z10 = (13/4, 1/2) uu;
+ penpos11(med, 90); z11r = (17/6, 1) uu;
+ penpos12(med, 270); z12 = (3, 2/3) uu;
+ penpos13(thin, 0); z13r = (11/3, 1) uu;
+
+ penstroke z7e{down} .. z8e{dir 280} .. z9e .. {up}z10e .. tension 1.3
+ .. z11e{left} .. {right}z12e .. {up}z13e;
+
+ label(13);
+endchar;
+
+
+"The letter X";
+beginchar("X", ltr_wd(8/3,0), hgt, 0);
+ penpos1(thin, 90); z1 = (2/3, 2/3) uu;
+ penpos2(med, 0); z2l = (0, 5/6) uu;
+ penpos3(med, 270); z3l = (2/3, 1) uu;
+ penpos4(thick, 180); z4 = (4/3, 1/2) uu;
+ penpos5(med, 90); z5l = (1/2, 0) uu;
+ penpos6(med, 0); z6l = (0, 1/6) uu;
+ penpos7(thin, 270); z7 = (1/3, 1/3) uu;
+
+ penstroke z1e .. z2e .. z3e .. z4e .. z5e .. z6e .. z7e;
+
+ penpos8(thin, 270); z8 = (2, 1/3) uu;
+ penpos9(med, 180); z9l = (8/3, 1/6) uu;
+ penpos10(med, 90); z10l = (2, 0) uu;
+ penpos11(thick, 0); z11 = (4/3, 1/2) uu;
+ penpos12(med, 270); z12l = (13/6, 1) uu;
+ penpos13(med, 180); z13l = (8/3, 5/6) uu;
+ penpos14(thin, 90); z14 = (7/3, 2/3) uu;
+
+ penstroke z8e .. z9e .. z10e .. z11e .. z12e .. z13e .. z14e;
+
+ label(14);
+endchar;
+
+
+"The letter Y";
+beginchar("Y", ltr_wd(19/8,1), hgt, loop_descend * ex#);
+ penpos1(thin, 180); z1 = (3/4, 3/5) uu;
+ penpos2(med, 0); z2l = (0, 2/3) uu;
+ penpos3(med, 250); z3l = (3/5, 1) uu;
+ penpos4(thick, 180); z4 = (1, 3/8) uu;
+ penpos5(med, 270); z5r = (3/2, 1/8) uu;
+ penpos6(med, 0); z6l = z8r;
+
+ penpos7(thick, 180); z7l = (9/4, 1) uu;
+ penpos8(thick, 180); z8l = (9/4, 1) u;
+
+ penstroke z1e{down} .. z2e{up} .. z3e .. tension 1.1 .. z4e
+ .. z5e .. {up}z6e;
+ penstroke z7e .. z8e;
+
+ addto currentpicture also letter.j shifted (3/2 * v, 0);
+
+ label(8);
+
+ save_letter(Y)(1/2[x4,x7]);
+endchar;
+
+
+"The letter Z";
+beginchar("Z", ltr_wd(3,0), hgt, 0);
+ penpos1(thin, 180); z1 = (3/4, 5/6) uu;
+ penpos2(med, 0); z2l = (0, 3/4) uu;
+ penpos3(med, 270); z3l = (1/2, 1) uu;
+ penpos4(med, 270); z4 = (5/2, 3/4) uu;
+ penpos5(med, 0); z5r = (3, 7/8) uu;
+ penpos6(med, 90); z6r = (8/3, 1) uu;
+ penpos7(thick, 135); z7 = (6/4, 1/2) uu;
+ penpos8(med, 90); z7 = 1/2[z6, z8];
+ penpos9(med, 0); z7 = 1/2[z5, z9];
+ penpos10(med, 270); z7 = 1/2[z4, z10];
+ penpos11(med, 270); z7 = 1/2[z3, z11];
+ penpos12(med, 0); z7 = 1/2[z2, z12];
+ penpos13(thin, 180); z7 = 1/2[z1, z13];
+
+ penstroke z1e .. z2e{up} .. z3e{right} .. z4e .. z5e{up} .. z6e{left}
+ .. z7e .. {left}z8e .. z9e .. z10e .. {right}z11e .. z12e{up} .. z13e;
+
+ penpos14(thin, 270); z14 = z7 - (1/2, 0) uu;
+ penpos15(med, 270); z15 = z7;
+ penpos16(thin, 270); z16 = z7 + (1/2, 0) uu;
+
+ penstroke z14e{dir 30} .. z15e .. {dir 30}z16e;
+
+ label(16);
+endchar;
+
+
+%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %%
+
+%%\sec Inter-letter links. %{{{1
+
+%% There is a special trick we use in all links: the initial $x$ coordinante
+%% is not 0 as would be expected but $-1$. This makes links begin one pixel to
+%% the left of their box, ensuring that they actually join with the letter
+%% before them.
+
+%%\subsec For small letters (a, c, d, e, g, o, q). %{{{2
+
+lw := link_width * ex#;
+
+"Low link for small letters";
+beginchar(128, lw, 0, 0);
+ penpos1(med, 270); z1r = (-1, 0);
+ penpos2(med, 0); z2l = (lnk, 1/3) u;
+ penstroke z1e{right} .. {up}z2e;
+ label(2);
+endchar ;
+
+"Medium link for small letters";
+beginchar(129, lw, 0, 0);
+ penpos1(med, ml_d); z1 = (-1, ml_y * ex);
+ penpos2(med, 0); z2l = (lnk, 1/3) u;
+ penstroke z1e{ml_dir} .. tension 3 .. {up}z2e;
+ label(2);
+endchar ;
+
+"High link for small letters";
+beginchar(130, lw, 0, 0);
+ penpos1(med, 270); z1 = (-1, hl_y * ex);
+ penpos2(thin, 270); z2l = (3/5 + lnk, 1) u;
+ penstroke z1e{right} .. {right}z2e ;
+ label(2);
+endchar ;
+
+%%\subsec For loops (b, f, h, l). %{{{2
+
+"Low link for large loops";
+beginchar(132, lw, loop_ascend*ex#, 0);
+ if proofing > 1: proofrule ((lnk,0) u, (lnk,loop_ascend)u); fi
+ penpos1(med, 270); z1r = (-1, 0);
+ penpos2(med, 330); z2 = (3/4 + lnk, 2/3 * loop_ascend) u + (0,0);
+ penstroke z1e{right} .. tension 2 .. {up}z2e ;
+ label(2);
+endchar;
+
+"Medium link for large loops";
+beginchar(133, lw, loop_ascend*ex#, 0);
+ if proofing > 1: proofrule ((lnk,0) u, (lnk,loop_ascend)u); fi
+ penpos1(med, ml_d); z1 = (-1, ml_y * ex);
+ penpos2(med, 330); z2 = (3/4 + lnk, 2/3 * loop_ascend) u + (0,0);
+ penstroke z1e{ml_dir} .. tension 1.2 .. {up}z2e ;
+ label(2);
+endchar;
+
+"High link for large loops";
+beginchar(134, lw, loop_ascend*ex#, 0);
+ if proofing > 1: proofrule ((lnk,0) u, (lnk,loop_ascend)u); fi
+ penpos1(med, 270); z1 = (-1, hl_y * ex);
+ penpos2(med, 330); z2 = (3/4 + lnk, 2/3 * loop_ascend) u + (0,0);
+ penstroke z1e{right} .. tension 1.4 .. {up}z2e ;
+ label(2);
+endchar;
+
+"Low to medium transition";
+beginchar(135, ltr_w(1/6), 0, 0);
+ penpos1(med, 270); z1r = (-1, 0);
+ penpos2(med, ml_d); z2 = (1/6 + lnk, ml_y) u;
+ penstroke z1e{right} .. {ml_dir}z2e ;
+ label(2);
+endchar;
+
+%%\subsec For those vertical on the left (i, u). %{{{2
+
+"Low link for verticals";
+beginchar(136, lw, 0, 0);
+ penpos1(med, 270); z1r = (-1, 0);
+ penpos2(med, 0); z2l = (1/6 + lnk, 2/3) u;
+ penpos3(med, 0); z3l = (1/6 + lnk, 1) u;
+ penstroke z1e{right} .. {up}z2e -- z3e;
+ label(3);
+endchar;
+
+"Medium link for verticals";
+beginchar(137, lw, 0, 0);
+ penpos1(med, ml_d); z1 = (-1, ml_y * ex);
+ penpos2(med, 0); z2l = (1/6 + lnk, 1) u;
+ penstroke z1e{ml_dir} .. tension 1.2 .. {up}z2e;
+ label(2);
+endchar;
+
+"High link for verticals";
+beginchar(138, lw, 0, 0);
+ penpos1(med, 270); z1 = (-1, hl_y * ex);
+ penpos2(med, 0); z2l = (1/6 + lnk, 1) u;
+ penstroke z1e{right} .. {up}z2e;
+ label(2);
+endchar;
+
+%%\subsec For the far verticals (j, p). %{{{2
+
+"Low link for far verticals";
+beginchar(140, ltr_w(1/4), 0, 0);
+ penpos1(med, 270); z1r = (-1, 0);
+ penpos2(med, 0); z2l = z3l;
+ pickup thickpen;
+ penpos3(thick, 0); z3 = good.rt ((1 + lnk, 1) u);
+ penstroke z1e{right} .. tension 1.2 .. {dir 60}z2e;
+ label(2);
+endchar;
+
+"Medium link for far verticals";
+beginchar(141, lw, 0, 0);
+ penpos1(med, ml_d); z1 = (-1, ml_y * ex);
+ penpos2(med, 0); z2l = z3l;
+ penpos3(thick, 0); z3r = (3/4 + lnk, 1) u;
+ penstroke z1e{ml_dir} .. tension 1.3 .. {dir 60}z2e;
+ label(2);
+endchar;
+
+"Long medium link for far verticals";
+beginchar(142, ltr_w(1/4), 0, 0);
+ penpos1(med, ml_d); z1 = (-1, ml_y * ex);
+ penpos2(med, 0); z2r = (1 + lnk, 1) u;
+ penstroke z1e{ml_dir} .. tension 1.3 .. {dir 70}z2e;
+ label(2);
+endchar;
+
+"High link for far verticals";
+beginchar(143, lw, 0, 0);
+ penpos1(med, 270); z1 = (-1, hl_y * ex);
+ penpos2(med, 0); z2l = z3l;
+ penpos3(thick, 0); z3r = (3/4 + lnk, 1) u;
+ penstroke z1e{right} .. {dir 50}z2e;
+ label(2);
+endchar;
+
+%%\subsec For high loops (h, k). %{{{2
+
+"Low link for high loops";
+beginchar(144, ltr_w(1/6), 0, 0)
+ penpos1(med, 270); z1r = (-1, 0);
+ penpos2(med, 0); z2l = (1/6 + lnk, 6/8) u;
+
+ penstroke z1e{right} .. {up}z2e;
+
+ penpos3(med, 270); z3l = z2l;
+ penpos4(med, 330); z4 = (11/12 + lnk, 2/3 * loop_ascend) u + (0,0);
+
+ penstroke z3e .. tension 1.2 .. {up}z4e;
+
+ label(4);
+endchar;
+
+"Medium link for high loops";
+beginchar(145, lw, 0, 0)
+ penpos1(med, ml_d); z1 = (-1, ml_y * ex);
+ penpos2(med, 0); z2l = (lnk, 6/8) u;
+
+ penstroke z1e{ml_dir} .. {up}z2e;
+
+ penpos3(med, 270); z3l = z2l;
+ penpos4(med, 330); z4 = (3/4 + lnk, 2/3 * loop_ascend) u + (0,0);
+
+ penstroke z3e .. tension 1.2 .. {up}z4e;
+
+ label(4);
+endchar;
+
+%%\subsec For m, n, v, and w. %{{{2
+
+"Low link for m and n";
+beginchar(146, ltr_w(1/6), 0, 0)
+ penpos1(med, 270); z1r = (-1, 0);
+ penpos2(med, 0); z2l = (1/12 + lnk, 1/2) u;
+ penpos3(med, 270); z3l = (1/2 + lnk, 1) u + (1,0);
+ penstroke z1e{right} .. tension 1.4 .. {up}z2e .. {right}z3e;
+ label(3);
+endchar;
+
+"Medium link for m and n";
+beginchar(147, ltr_w(1/12), 0, 0)
+ penpos1(med, ml_d); z1 = (-1, ml_y * ex);
+ penpos2(med, 0); z2l = ((1/24 + lnk) * v, 1/2 [y1, y3]);
+ penpos3(med, 270); z3l = (5/12 + lnk, 1) u + (1,0);
+ penstroke z1e{ml_dir} .. {up}z2e .. tension 1.1 .. {right}z3e;
+ label(3);
+endchar;
+
+"High link for m and n";
+beginchar(148, ltr_w(1/6), 0, 0)
+ penpos1(med, 270); z1 = (-1, hl_y * ex);
+ penpos2(med, 330); z2 = 1/2 [z1, z3];
+ penpos3(med, 270); z3l = (1/2 + lnk, 1) u + (1,0);
+ penstroke z1e{right} .. z2e .. {right}z3e;
+ label(3);
+endchar;
+
+"Beginning for m and n";
+beginchar(149, 0, 0, 0)
+ penpos1(med, 320); z1 = (-1, 2/5 * ex);
+ penpos2(med, 270); z2l = (1/3, 1) u + (1,0);
+ penstroke z1e{up} .. {right} z2e;
+ label(3);
+endchar;
+
+%%\subsec For the x. %{{{2
+
+"Low link for x";
+beginchar(155, ltr_w(1/2), 0, 0)
+ penpos1(med, 270); z1r = (-1, 0);
+ penpos2(med, 0); z2 = 1/2[z1,z3];
+ penpos3(med, 270); z3l = (5/6 + lnk, 1) u + (1,0);
+ penstroke z1e{right} .. {dir 80}z2e .. {right}z3e;
+ label(3);
+endchar;
+
+"Medium link for x";
+beginchar(156, ltr_w(1/4), 0, 0)
+ penpos1(med, ml_d); z1 = (-1, ml_y * ex);
+ penpos2(med, 0); z2 = 1/2[z1,z3];
+ penpos3(med, 270); z3l = (7/12 + lnk, 1) u + (1,0);
+ penstroke z1e{ml_dir} .. {dir 80}z2e .. {right}z3e;
+ label(3);
+endchar;
+
+%%\subsec Special links. %{{{2
+
+%% \chardef\HL=131
+%% This link has to be inserted by hand between the letters {\fc o} and
+%% {\fc e}, in order to produce ``{\fc o\HL e}'', which is different
+%% from the (fake) ligature ``{\fc oe}'' that is produced by typing
+%% ``{\tt oe}''.
+
+"High horizontal link";
+beginchar(131, lw, 0, 0);
+ penpos1(med, 270); z1 = (-1, hl_y * ex);
+ penpos2(med, 270); z2 = (lnk, 1/2) u + (1,0);
+ penstroke z1e{right} .. {right}z2e ;
+ label(2);
+endchar ;
+
+%% This one is the equivalent but at the level of the baseline. It is
+%% introduced for coherence.
+%% \par\nobreak
+
+"Low horizontal link";
+beginchar(139, lw, 0, 0);
+ penpos1(med, 270); z1r = (-1, 0);
+ penpos2(med, 270); z2r = (lnk * v + 1, 0);
+ penstroke z1e{right} .. {right}z2e ;
+ label(2);
+endchar ;
+
+
+
+%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %%
+
+%%\sec Accents and accented letters. %{{{1
+
+%% These constants are reference dimensions for all accents:
+
+a_wd := accent_wd * base_width * ex#;
+a_ht := accent_top * ex#;
+
+%% We use the following macro to save an accent's picture and dimensions in
+%% order to use it later when building accented characters:
+
+def save_accent (text acc) =
+ picture accent.acc;
+ accent.acc := currentpicture;
+ acc_wd.acc := w;
+ acc_ht#.acc := charht
+enddef;
+
+%%\subsec The glyphs for the accents. %{{{2
+
+"Grave accent";
+beginchar(0, a_wd, a_ht, 0);
+ penpos1(med, 225); z1 = (0, 1) ua;
+ penpos2(med, 270); z2 = (1, 0) ua;
+ penstroke z1e .. tension 1.4 .. {right}z2e;
+ label(2);
+ save_accent(grave);
+endchar;
+
+"Acute accent";
+beginchar(1, a_wd, a_ht, 0);
+ penpos1(med, 135); z1 = (1, 1) ua;
+ penpos2(med, 90); z2 = (0, 0) ua;
+ penstroke z1e .. tension 1.4 .. {left}z2e;
+ label(2);
+ save_accent(acute);
+endchar;
+
+"Circumflex";
+beginchar(2, 3/2 * a_wd, a_ht, 0);
+ penpos1(med, 270); z1 = (0, 0) ua;
+ penpos2(med, 0); z2 = (3/4, 1) ua;
+ penstroke z1e{right} .. z2e;
+ penpos3(med, 180); z3 = z2;
+ penpos4(med, 270); z4 = (3/2, 0) ua;
+ penstroke z3e .. {right}z4e;
+ label(4);
+ save_accent(circum);
+endchar;
+
+"Tilde";
+beginchar(3, 3/2 * a_wd, (2 accent_top + accent_bot)/3 * ex#, 0);
+ penpos1(med, 310); z1 = (0, 1/3) ua;
+ penpos2(med, 210); z2l = (3/4, 1/2) ua;
+ penpos4(med, 310); (x4, y4l) = (3/2, 2/3) ua;
+ penstroke z1e .. z2e{dir 315} .. z4e;
+ label(4);
+ save_accent(tilde);
+endchar;
+
+"Umlaut";
+beginchar(4, a_wd, height_with_dot, 0);
+ pickup pencircle scaled dot_size;
+ lft z1 = (0, dot_height) u;
+ rt z2 = (accent_wd, dot_height) u;
+ drawdot z1; drawdot z2;
+ label(2);
+ save_accent(umlaut);
+endchar;
+
+"Ring";
+beginchar(6, 3/4 a_wd, a_ht, 0);
+ penpos1(med, 90); z1r = (3/8, 1) ua;
+ penpos2(med, 180); z2r = (0, 1/2) ua;
+ penpos3(med, 270); z3r = (3/8, 0) ua;
+ penpos4(med, 0); z4r = (3/4, 1/2) ua;
+ penstroke z1e .. z2e .. z3e .. z4e .. cycle;
+ label(4);
+ save_accent(ring);
+endchar;
+
+"Cedilla";
+beginchar(11, ltr_wd(3/4,0), 0, (cedilla_dp + 1/3) * ex#);
+ penpos1(thick, 180); z1 = (3/8, 0) u;
+ penpos2(thick, 180); z2 = (3/8, -cedilla_dp) u;
+ penstroke z1e .. z2e;
+ penpos3(med, 270); z3r = z2l;
+ penpos4(thick, 180); x4l = 3/4 base_width * ex; y4 = 1/2[y3,y5];
+ penpos5(med, 90); z5l = (3/8, -cedilla_dp - 1/3) u;
+ penpos6(thin, 0); x6l = 0; y6 = y4;
+ penstroke z3e .. z4e .. z5e{left} .. z6e;
+ label(6);
+ save_accent(cedilla);
+endchar;
+
+
+%%\subsec The accented characters. %{{{2
+
+%% The definition of `make\_accented' produces characters with the same height
+%% as their unaccented version, so that the accented uppercase are not too
+%% high (otherwise it would force to space out successive lines too much).
+%% Is this a good choice ?
+
+def make_accented(expr name, chr)(text base, acc) =
+ begingroup save base;
+ name;
+ beginchar(chr, width#.base, height#.base, depth#.base)
+ addto currentpicture also letter.base;
+ addto currentpicture also accent.acc
+ shifted ((accpos.base - acc_wd.acc/2, height.base - ex) slanted slant);
+ endchar
+ endgroup
+enddef;
+
+make_accented("The letter a with gravis", "à")(a)(grave);
+make_accented("The letter a with acute", "á")(a)(acute);
+make_accented("The letter a with circumflex", "â")(a)(circum);
+make_accented("The letter a with tilde", "ã")(a)(tilde);
+make_accented("The letter a with umlaut", "ä")(a)(umlaut);
+make_accented("The letter a with ring", "å")(a)(ring);
+
+make_accented("The letter e with gravis", "è")(e)(grave);
+make_accented("The letter e with acute", "é")(e)(acute);
+make_accented("The letter e with circumflex", "ê")(e)(circum);
+make_accented("The letter e with umlaut", "ë")(e)(umlaut);
+
+make_accented("The letter i with gravis", "ì")(i)(grave);
+make_accented("The letter i with acute", "í")(i)(acute);
+make_accented("The letter i with circumflex", "î")(i)(circum);
+make_accented("The letter i with umlaut", "ï")(i)(umlaut);
+
+make_accented("The letter o with gravis", "ò")(o)(grave);
+make_accented("The letter o with acute", "ó")(o)(acute);
+make_accented("The letter o with circumflex", "ô")(o)(circum);
+make_accented("The letter o with tilde", "õ")(o)(tilde);
+make_accented("The letter o with umlaut", "ö")(o)(umlaut);
+
+make_accented("The letter u with gravis", "ù")(u)(grave);
+make_accented("The letter u with acute", "ú")(u)(acute);
+make_accented("The letter u with circumflex", "û")(u)(circum);
+make_accented("The letter u with umlaut", "ü")(u)(umlaut);
+
+make_accented("The letter y with acute", "ý")(y)(acute);
+make_accented("The letter y with umlaut", "ÿ")(y)(umlaut);
+make_accented("The letter n with tilde", "ñ")(n)(tilde);
+
+"The letter c with cedilla";
+beginchar("ç", width#.c, ex#, (cedilla_dp + 1/3) * ex#);
+ addto currentpicture also letter.c;
+ addto currentpicture also accent.cedilla
+ shifted (accpos.c - acc_wd.cedilla/2, 0);
+ endchar;
+
+make_accented("The letter A with gravis", "À")(A)(grave);
+make_accented("The letter A with acute", "Á")(A)(acute);
+make_accented("The letter A with circumflex", "Â")(A)(circum);
+make_accented("The letter A with tilde", "Ã")(A)(tilde);
+make_accented("The letter A with umlaut", "Ä")(A)(umlaut);
+make_accented("The letter A with ring", "Å")(A)(ring);
+
+make_accented("The letter E with gravis", "È")(E)(grave);
+make_accented("The letter E with acute", "É")(E)(acute);
+make_accented("The letter E with circumflex", "Ê")(E)(circum);
+make_accented("The letter E with umlaut", "Ë")(E)(umlaut);
+
+make_accented("The letter I with gravis", "Ì")(I)(grave);
+make_accented("The letter I with acute", "Í")(I)(acute);
+make_accented("The letter I with circumflex", "Î")(I)(circum);
+make_accented("The letter I with umlaut", "Ï")(I)(umlaut);
+
+make_accented("The letter O with gravis", "Ò")(O)(grave);
+make_accented("The letter O with acute", "Ó")(O)(acute);
+make_accented("The letter O with circumflex", "Ô")(O)(circum);
+make_accented("The letter O with tilde", "Õ")(O)(tilde);
+make_accented("The letter O with umlaut", "Ö")(O)(umlaut);
+
+make_accented("The letter U with gravis", "Ù")(U)(grave);
+make_accented("The letter U with acute", "Ú")(U)(acute);
+make_accented("The letter U with circumflex", "Û")(U)(circum);
+make_accented("The letter U with umlaut", "Ü")(U)(umlaut);
+
+make_accented("The letter Y with acute", "Ý")(Y)(acute);
+make_accented("The letter N with tilde", "Ñ")(N)(tilde);
+
+"The letter C with cedilla";
+beginchar("Ç", width#.C, height#.C, (cedilla_dp + 1/3) * ex#);
+ addto currentpicture also letter.C;
+ addto currentpicture also accent.cedilla
+ shifted (accpos.C - acc_wd.cedilla/2, 0);
+endchar;
+
+"The letter i with no dot";
+beginchar(25, width#.i, ex#, 0);
+ addto currentpicture also letter.i;
+endchar;
+
+"The letter j with no dot";
+beginchar(26, width#.j, ex#, loop_descend * ex#);
+ addto currentpicture also letter.j;
+endchar;
+
+
+
+%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %%
+
+%%\sec Digits. %{{{1
+
+%% All digits have the same height, fixed to $\frac3/2\,\\{base\_witdh}$, and
+%% they contain an extra spacing of $\frac1/6\,\\{base\_width}$ on each side.
+
+num_wd := 11/6 * base_width * ex#;
+num_ht := straight_ascend * ex#;
+
+def nu = shifted (1/6,0) u yscaled straight_ascend enddef;
+
+"The numeral 0";
+beginchar("0", num_wd, num_ht, 0);
+ penpos1(thin, 90); z1r = (9/10, 1) nu;
+ penpos2(thick, 180); z2r = (0, 1/2) nu;
+ penpos3(med, 270); z3r = (3/4, 0) nu;
+ penpos4(med, 0); z4r = (3/2, 1/2) nu;
+ penpos5(thin, 90); z5 = (7/10, 14/15) nu;
+
+ penstroke z1e{left} .. z2e{down} .. z3e .. {up}z4e .. {dir 210}z5e;
+
+ label(6);
+endchar;
+
+"The numeral 1";
+beginchar("1", num_wd, num_ht, 0);
+ penpos1(med, 270); z1 = (0, 1/2) nu;
+ penpos2(med, 0); z2l = z3r;
+
+ penpos3(thick, 180); z3 = (1, 1) nu;
+ penpos4(thick, 180); z4 = (1, 0) nu;
+
+ penstroke z1e .. {up}z2e;
+ penstroke z3e .. z4e;
+
+ penpos5(med, 270); z4 = 1/2[z5r, z6r];
+ penpos6(med, 270); z6r = (3/2, 0) nu;
+
+ penstroke z5e .. z6e;
+
+ label(6);
+endchar;
+
+"The numeral 2";
+beginchar("2", num_wd, num_ht, 0);
+ penpos1(thin, 90); z1 = (1/2, 1/2) nu;
+ penpos2(med, 0); z2l = (1/5, 2/3) nu;
+ penpos3(med, 270); x3 = 1/2[x2,x4]; y3l = straight_ascend * ex;
+ penpos4(thick, 180); z4 = (5/4, 2/3) nu;
+ penpos5(med, 90); z5l = (1/3, 0) nu;
+ penpos6(med, 0); z6l = (0, 1/8) nu;
+ penpos7(med, 240); z7 = (3/5, 1/8) nu;
+ penpos8(med, 270); z8r = (1, 0) nu;
+ penpos9(thin, 0); z9r = (3/2, 1/4) nu;
+
+ penstroke z1e .. z2e .. z3e .. z4e .. tension 1.6
+ .. z5e{left} .. z6e{up} .. z7e .. z8e{right} .. {up}z9e;
+
+ label(9);
+endchar;
+
+"The numeral 3";
+beginchar("3", num_wd, num_ht, 0);
+ penpos1(thin, 0); z1 = (1/4, 3/4) nu;
+ penpos2(med, 270); z2l = (3/4, 1) nu;
+ penpos3(thick, 180); z3 = (13/10, 3/4) nu;
+ penpos4(med, 90); z4 = (5/8, 1/2) nu;
+
+ penstroke z1e .. z2e{right} .. z3e .. {left}z4e;
+
+ penpos5(med, 270); z5 = z4;
+ penpos6(thick, 180); z6l = (3/2, 1/4) nu;
+ penpos7(med, 90); z7l = (3/4, 0) nu;
+ penpos8(thin, 0); z8l = (0, 3/10) nu;
+
+ penstroke z5e{right} .. z6e .. z7e .. z8e;
+
+ label(8);
+endchar;
+
+"The numeral 4";
+beginchar("4", num_wd, num_ht, 0);
+ penpos1(thick, 180); z1 = (3/4, 1) nu;
+ penpos2(med, 90); z2 = (0, 1/4) nu;
+
+ penstroke z1e{down} .. z2e;
+
+ penpos3(med, 270); z3 = z2;
+ penpos4(med, 270); z4 = (3/2, 1/4) nu;
+
+ penstroke z3e .. z4e;
+
+ penpos5(thick, 180); z5 = (1, 1/2) nu;
+ penpos6(thick, 180); z6 = (1, 0) nu;
+
+ penstroke z5e .. z6e;
+
+ label(6);
+endchar;
+
+"The numeral 5";
+beginchar("5", num_wd, num_ht, 0);
+ penpos1(med, 270); z1l = (1/6, 1) nu;
+ penpos2(med, 270); z2l = (4/3, 1) nu;
+
+ penstroke z1e{dir 340} .. z2e;
+
+ penpos3(thick, 180); z3r = z1;
+ penpos4(thick, 180); z4r = (1/6, 1/2) nu;
+
+ penstroke z3e .. z4e;
+
+ penpos5(med, 270); z5r = z4l;
+ penpos6(thick, 180); z6l = (3/2, 1/4) nu;
+ penpos7(med, 90); z7l = (3/4, 0) nu;
+ penpos8(thin, 0); z8l = (0, 1/4) nu;
+
+ penstroke z5e .. z6e .. z7e .. z8e;
+
+ label(8);
+endchar;
+
+"The numeral 6";
+beginchar("6", num_wd, num_ht, 0);
+ penpos1(thin, 90); z1r = (5/4, 1) nu;
+ penpos2(thick, 180); z2r = (0, 1/3) nu;
+ penpos3(med, 270); z3r = (3/4, 0) nu;
+ penpos4(med, 0); z4r = (3/2, 1/4) nu;
+ penpos5(med, 180); z5l = z2l;
+
+ penstroke z1e .. z2e{down} .. z3e .. z4e .. z5e;
+
+ label(5);
+endchar;
+
+"The numeral 7";
+beginchar("7", num_wd, num_ht, 0);
+ penpos1(med, 270); z1l = (0, 1) nu;
+ penpos2(med, 270); z2l = (3/2, 1) nu;
+
+ penstroke z1e{dir 340} .. z2e;
+
+ penpos3(thick, 180); z3l = z2r;
+ penpos4(thick, 180); z4r = (1/2, 0) nu;
+
+ penstroke z3e .. {down}z4e;
+
+ penpos5(med, 270);
+ penpos6(med, 270);
+ 1/2[z5, z6] = (z3 .. {down}z4)
+ intersectionpoint ((0,1/2) nu .. (3/2,1/2) nu);
+ z6 - z5 = (z2 - z1) / 2;
+
+ penstroke z5e .. z6e;
+
+ label(6);
+endchar;
+
+"The numeral 8";
+beginchar("8", num_wd, num_ht, 0);
+ penpos1(thin, 90); z1r = (9/10, 1) nu;
+ penpos2(thick, 180); z2 = (1/6, 3/4) nu;
+ penpos3(thick, 210); z3 = 1/2[z2, z4];
+ penpos4(thick, 180); z4l = (3/2, 1/4) nu;
+ penpos5(med, 90); z5l = (3/4, 0)nu;
+ penpos6(med, 0); z6l = (0, 1/4) nu;
+ penpos7(med, 330); z7 = 1/2[z6, z8];
+ penpos8(med, 0); z8 = (4/3, 3/4) nu;
+ penpos9(thin, 90); z9r = (6/10, 19/20) nu;
+
+ penstroke z1e{left} .. z2e .. z3e .. z4e .. z5e .. z6e .. z7e .. z8e .. z9e;
+
+ label(9);
+endchar;
+
+"The numeral 9";
+beginchar("9", num_wd, num_ht, 0);
+ penpos1(med, 90); z1r = (3/2, 9/10) nu;
+ penpos2(med, 90); z2r = (7/8, 1) nu;
+ penpos3(thick, 180); z3r = (1/6, 3/4) nu;
+ penpos4(med, 0); z4r = (3/2, 2/3) nu;
+
+ penstroke z1e .. z2e .. z3e .. z4e;
+
+ penpos5(thick, 180); z5l = (3/2, 19/20) nu;
+ penpos6(thick, 180); z6l = (3/2, 1/3) nu;
+ penpos7(med, 90); z7l = (3/4, 0) nu;
+ penpos8(thin, 0); z8l = (0, 1/4) nu;
+
+ penstroke z5e .. z6e{down} .. z7e{left} .. z8e;
+
+ label(8);
+endchar;
+
+
+%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %%
+
+%%\sec Punctuation marks. %{{{1
+
+%% In order to put inter-letter links at the right positions, we had to remove
+%% any spacing onthe right of letters. For this reason, we add a spacing,
+%% proportional to the links' widths, at the left of all punctuatin marks.
+
+"Exclamation mark";
+beginchar("!", ltr_wd(1/2,2), loop_ascend * ex#, 0);
+ penpos1(thick, 180);
+ z1 = ((base_width + 2 link_width) / 2, loop_ascend) * ex;
+ penpos2(med, 180); z2 = (x1, 3/5 ex);
+ penstroke z1e .. z2e;
+ pickup pencircle scaled dot_size;
+ bot z3 = (x1, 0);
+ drawdot z3;
+ label(3);
+ save_letter(exclam)(x1)
+endchar;
+
+"Spanish opening exclamation";
+beginchar(189, ltr_wd(1/2,2), (loop_ascend - straight_descend) * ex#,
+straight_descend * ex#);
+ addto currentpicture also letter.exclam scaled -1
+ shifted ((1/2 base_width + 2 link_width,
+ loop_ascend - straight_descend) * ex)
+endchar;
+
+"Apostrophe";
+beginchar("'", ltr_wd(1/3,2), straight_ascend * ex#, 0);
+ penpos1(thick, 180);
+ z1 = ((base_width + 3 link_width) / 3, straight_ascend) * ex;
+ penpos2(thin, 90);
+ z2 = ((base_width - 3 link_width) / 3, straight_ascend - 1/2) * ex;
+ penstroke z1e{down} .. z2e;
+ label(2);
+endchar;
+
+"High apostrophe";
+beginchar(152, ltr_wd(1/3,2), loop_ascend * ex#, 0);
+ penpos1(thick, 180);
+ z1 = ((base_width + 3 link_width) / 3, loop_ascend) * ex;
+ penpos2(thin, 90);
+ z2 = ((base_width - 3 link_width) / 3, loop_ascend - 1/2) * ex;
+ penstroke z1e{down} .. z2e;
+ label(2);
+endchar;
+
+"Reverse apostrophe";
+beginchar("`", ltr_wd(1/3,2), straight_ascend * ex#, 0);
+ penpos1(thick, 180);
+ z1 = ((base_width - 3 link_width) / 3, straight_ascend) * ex;
+ penpos2(thin, 270);
+ z2 = ((base_width + 3 link_width) / 3, straight_ascend - 1/2) * ex;
+ penstroke z1e{down} .. z2e;
+ label(2);
+endchar;
+
+"Comma";
+beginchar(",", ltr_wd(1/3,2), ex#, 1/3 ex#);
+ penpos1(thick, 180); z1 = ((base_width + 3 link_width) / 3, 1/4) * ex;
+ penpos2(thin, 90); z2l = ((base_width - 3 link_width) / 3, -1/3) * ex;
+ penstroke z1e{down} .. z2e;
+ label(2);
+endchar;
+
+"Hyphen";
+beginchar("-", ltr_wd(5/6,0), ex#, 0);
+ penpos1(thick, 260); z1 = (1/6, 1/2) u;
+ penpos2(thick, 260); z2 = (4/6, 1/2) u;
+ penstroke z1e .. z2e;
+ label(2);
+endchar;
+
+"En dash";
+beginchar(21, ltr_wd(1,0), ex#, 0);
+ penpos1(med, 270); z1 = (0, 1/2) u;
+ penpos2(med, 270); z2 = (1, 1/2) u;
+ penstroke z1e .. z2e;
+ label(2);
+endchar;
+
+"Em dash";
+beginchar(22, ltr_wd(2,0), ex#, 0);
+ penpos1(med, 270); z1 = (0, 1/2) u;
+ penpos2(med, 270); z2 = (2, 1/2) u;
+ penstroke z1e .. z2e;
+ label(2);
+endchar;
+
+"Period";
+beginchar(".", ltr_wd(1/2,2), ex#, 0);
+ pickup pencircle scaled dot_size;
+ bot z1 = ((base_width + 2 link_width) / 2 * ex, 0);
+ drawdot z1;
+ label(1)
+endchar;
+
+"Colon";
+beginchar(":", ltr_wd(1/2,2), ex#, 0);
+ pickup pencircle scaled dot_size;
+ bot z1 = ((base_width + 2 link_width) / 2 * ex, 0);
+ drawdot z1;
+ top z2 = ((base_width + 2 link_width) / 2 * ex, ex);
+ drawdot z2;
+ label(2)
+endchar;
+
+"Semicolon";
+beginchar(";", ltr_wd(1/3,2), ex#, 1/3 ex#);
+ penpos1(thick, 180); z1 = ((base_width + 3 link_width) / 3, 1/4) * ex;
+ penpos2(thin, 90); z2l = ((base_width - 3 link_width) / 3, -1/3) * ex;
+ penstroke z1e{down} .. z2e;
+ pickup pencircle scaled dot_size;
+ top z3 = ((base_width + 3 link_width) / 3 * ex, ex);
+ drawdot z3;
+ label(3);
+endchar;
+
+"Question mark";
+beginchar("?", ltr_wd(3/2,2), loop_ascend * ex#, 0);
+ penpos1(med, 90); z1 = z2 - (2/4, 4/5) u;
+ penpos2(med, 270); x2 = x4; y2l = loop_ascend * ex;
+ penpos3(thick, 180); z3l = z1 + (5/4, 1/5) u;
+ penpos4(med, 180); z4 = (3/5 base_width + 3 link_width, 5/6) * ex;
+ penpos5(thin, 180); z5 = z4 - (0, 1/3) u;
+ penstroke z1e .. z2e{right} .. z3e .. z4e .. z5e;
+
+ pickup pencircle scaled dot_size;
+ bot z6 = (x4, 0);
+ drawdot z6;
+ label(6);
+
+ save_letter(interg)(x2)
+endchar;
+
+"Spanish opening interrogation";
+beginchar(190, ltr_wd(3/2,2), (loop_ascend - straight_descend) * ex#,
+straight_descend * ex#);
+ addto currentpicture also letter.interg scaled -1
+ shifted ((3/2 base_width + 2 link_width,
+ loop_ascend - straight_descend) * ex);
+endchar;
+
+"Left parenthesis";
+beginchar("(", ltr_wd(1,0), loop_ascend * ex#, 1/2 loop_descend * ex#);
+ penpos1(med, 180); z1l = (5/6, loop_ascend) u;
+ penpos2(thick, 180); x2r = 1/6 v; y2 = 1/2[y1,y3];
+ penpos3(med, 180); z3l = (5/6, -1/2 loop_descend) u;
+ penstroke z1e .. z2e .. z3e;
+ label(3);
+endchar;
+
+"Right parenthesis";
+beginchar(")", ltr_wd(1,0), loop_ascend * ex#, 1/2 loop_descend * ex#);
+ penpos1(med, 180); z1r = (1/6, loop_ascend) u;
+ penpos2(thick, 180); x2l = 5/6 v; y2 = 1/2[y1,y3];
+ penpos3(med, 180); z3r = (1/6, -1/2 loop_descend) u;
+ penstroke z1e .. z2e .. z3e;
+ label(3);
+endchar;
+
+"Left bracket";
+beginchar("[", ltr_wd(1,0), loop_ascend * ex#, 1/2 loop_descend * ex#);
+ penpos1(med, 270); z1r = (5/6, loop_ascend) u;
+ penpos2(med, 270); z2r = (1/6, loop_ascend) u;
+
+ penstroke z1e .. z2e;
+
+ penpos3(thick, 180); z3r = (1/6, loop_ascend) u;
+ penpos4(thick, 180); z4r = (1/6, -1/2 loop_descend) u;
+
+ penstroke z3e .. z4e;
+
+ penpos5(med, 90); z5l = (1/6, -1/2 loop_descend) u;
+ penpos6(med, 90); z6l = (5/6, -1/2 loop_descend) u;
+
+ penstroke z5e .. z6e;
+
+ label(6);
+endchar;
+
+"Right bracket";
+beginchar("]", ltr_wd(1,0), loop_ascend * ex#, 1/2 loop_descend * ex#);
+ penpos1(med, 270); z1r = (5/6, loop_ascend) u;
+ penpos2(med, 270); z2r = (1/6, loop_ascend) u;
+
+ penstroke z1e .. z2e;
+
+ penpos3(thick, 180); z3l = (5/6, loop_ascend) u;
+ penpos4(thick, 180); z4l = (5/6, -1/2 loop_descend) u;
+
+ penstroke z3e .. z4e;
+
+ penpos5(med, 90); z5l = (1/6, -1/2 loop_descend) u;
+ penpos6(med, 90); z6l = (5/6, -1/2 loop_descend) u;
+
+ penstroke z5e .. z6e;
+
+ label(6);
+endchar;
+
+"Slash";
+beginchar("/", ltr_wd(3/2,0), loop_ascend * ex#, 1/2 loop_descend * ex#);
+ penpos1(thick, 180); z1l = (8/6, loop_ascend) u;
+ penpos2(thick, 180); z2r = (1/6, -1/2 loop_descend) u;
+ penstroke z1e .. z2e;
+ label(2);
+endchar;
+
+"Ampersand";
+beginchar("&", ltr_wd(3,0), uc_ascend * ex#, 0);
+ penpos1(thick, 180); z1 = (9/4, 1/2) uu;
+ penpos2(med, 90); z2l = (11/16, 0) uu;
+ penpos3(med, 0); z3l = (0, 1/6) uu;
+ penpos5(med, 0); z5 = (8/5, 13/16) uu;
+ penpos4(med, angle(z5-z3)-90); z4 = 1/2[z3,z5];
+ penpos6(med, 90); z6r = (9/8, 1) uu;
+ penpos7(thick, 180); z7 = (3/4, 1/2) uu;
+ penpos8(med, 270); z8r = (2, 0) uu;
+ penpos9(med, 0); z9r = (3, 1/5) uu;
+ penstroke z1e .. z2e .. z3e{up} .. z4e .. {up}z5e
+ .. z6e .. z7e .. z8e .. z9e;
+ label(9);
+endchar;
+
+"French opening quote";
+beginchar("«", ltr_wd(1,2), ex#, 0);
+ penpos1(med, 180); z1l = (1/2, 9/10) u;
+ penpos2(thick, 180); z2r = (0, 1/2) u;
+ penpos3(med, 180); z3l = (1/2, 1/10) u;
+ penstroke z1e{down} .. tension 1.3 .. z2e;
+ penstroke z2e .. tension 1.3 .. {down}z3e;
+ label(3);
+ addto currentpicture also currentpicture shifted (3/8 v, 0);
+endchar;
+
+"French closing quote";
+beginchar("»", ltr_wd(1,2), ex#, 0);
+ penpos1(med, 180); z1r = (2 link_width + 1/2, 9/10) u;
+ penpos2(thick, 180); z2l = (2 link_width + 1, 1/2) u;
+ penpos3(med, 180); z3r = (2 link_width + 1/2, 1/10) u;
+ penstroke z1e{down} .. tension 2 .. z2e;
+ penstroke z2e .. tension 2 .. {down}z3e;
+ label(3);
+ addto currentpicture also currentpicture shifted (-3/8 v, 0);
+endchar;
+
+
+
+%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %%
+
+%%\sec The ligature table. %{{{1
+
+%% Here comes a crucial part of the French Cursive typeface: the ligature and
+%% kerning table. It has to play two major roles: first of all, it is
+%% responsible of the insertion of inter-letter links, a task for which the
+%% lig/kern system in \TeX\ and \MF\ is thankfully powerful enough. Secondly,
+%% this table is responsible for kerning, which is necessary for some
+%% successions of an uppercase and a lowercase, but also in some cases for
+%% punctuation.
+
+k# := base_width * ex#;
+
+"Right boundary pseudo-character";
+beginchar(23, 0, 0, 0) endchar;
+
+boundarychar := 23;
+
+def word_ends =
+ ".", ",", ";", ":", "'", ")", "]", "/", "»", "-", 21, 22 enddef;
+
+%% The following macros enumerate all variants of each vowel.
+
+def var_a = "a","à","á","â","ã","ä","å" enddef;
+def var_c = "c","ç" enddef;
+def var_e = "e","è","é","ê","ë" enddef;
+def var_i = "i","ì","í","î","ï" enddef;
+def var_o = "ò","ó","ô","õ","ö" enddef;
+% We don't include ``o'' because of the special kerning with the ``e''.
+def var_u = "u","ù","ú","û","ü" enddef;
+
+def lig_small (expr lig) =
+ for lt = var_a, var_c, var_e, "o", var_o: lt |=:| lig, endfor
+ "d" |=:| lig,
+ "g" |=:| lig,
+ "q" |=:| lig
+enddef;
+
+def lig_loop (expr lig) =
+ "b" |=:| lig,
+ "f" |=:| lig,
+ "h" |=:| lig,
+ "k" |=:| lig,
+ "l" |=:| lig
+enddef;
+
+def lig_vert (expr lig) =
+ for lt = var_i, var_u: lt |=:| lig, endfor
+ "r" |=:| lig,
+ "t" |=:| lig,
+ "u" |=:| lig,
+ "z" |=:| lig
+enddef;
+
+def lig_far (expr lig) =
+ "j" |=:| lig,
+ "p" |=:| lig,
+ "s" |=:| lig
+enddef;
+
+def lig_mn (expr lig) =
+ "m" |=:| lig,
+ "n" |=:| lig, "ñ" |=:| lig,
+ "v" |=:| lig,
+ "w" |=:| lig,
+ "x" |=:| lig,
+ "y" |=:| lig, "ý" |=:| lig, "ÿ" |=:| lig
+enddef;
+
+
+%%\subsec Ligatures between lowercase and punctuations. %{{{2
+
+ligtable "-": "-" =: 21, skipto 0;
+ligtable 21: "-" =: 22;
+
+ligtable "!": "`" =: 189;
+ligtable "?": "`" =: 190;
+
+ligtable "`": "`" kern -2 link_width * k#, skipto 0;
+ligtable "'": "'" kern -2 link_width * k#, skipto 0;
+ligtable 152: "'" =:| "'", skipto 0;
+
+%% % ligtable "<": "<" =: "«";
+%% % ligtable ">": ">" =: "»";
+
+ligtable ||: "(": "[": "/": 189: 190:
+0::
+ lig_far(140), lig_mn(149),
+ skipto 2;
+
+
+%%\subsec Ligatures between lowercase letters. %{{{2
+
+%% Special cases: the q and the s have a different shape at the end of words,
+%% they have no right link, contrary to the other letters.
+
+ligtable "q":
+ for c = boundarychar, word_ends: c =:| 150, endfor
+ skipto 2;
+ligtable "s":
+ for c = boundarychar, word_ends: c =:| 154, endfor
+ skipto 2;
+
+ligtable "h": "k": "'" |=: 152, skipto 1;
+ligtable for lt = var_a, var_i, var_u: lt: endfor
+1::
+ "d": "m": "n": "ñ": "p": "r":
+ for lt = boundarychar, word_ends: lt |=:| 135, endfor
+ skipto 2;
+ligtable 139:
+2::
+ "h" |=:| 144, "k" |=:| 144, "x" |=:| 155,
+ lig_small(128), lig_loop(132), lig_vert(136), lig_far(140), lig_mn(146);
+ligtable "f": "g": "j": "y": "ý": "ÿ": "z":
+ "j" |=:| 142, skipto 3;
+ligtable "l": "'" |=: 152, skipto 3;
+ligtable for lt = var_c, var_e: lt: endfor "t": "x":
+3::
+ "h" |=:| 145, "k" |=:| 145, "x" |=:| 156,
+ lig_small(129), lig_loop(133), lig_vert(137), lig_far(141), lig_mn(147);
+ligtable "o":
+ "e" kern -link_width*k# - med#, skipto 5;
+ligtable 131:
+ "e" kern -thin#, skipto 5;
+ligtable "b": "'" |=: 152, skipto 4;
+ligtable for lt = var_o: lt: endfor "v": "w":
+4::
+ "e" |=:| 131,
+5::
+ lig_small(130), lig_loop(134), lig_vert(138), lig_far(143), lig_mn(148);
+
+%%\subsec Ligatures and spacings after uppercase letters. %{{{2
+
+ligtable "G": "J": "Y": "Ý":
+ "h" |=:| 145, "j" |=:| 142, "k" |=:| 145, "x" |=:| 156,
+ lig_small(129), lig_loop(133), lig_vert(137), lig_far(141), lig_mn(147);
+
+ligtable "F": "S":
+ 128 kern -1/2 k#, % small letters are closer
+ 142 kern -1/5 k#, % j, p, s too
+ lig_small(128),
+ skipto 6;
+
+ligtable "I": "Ì": "Í": "Î": "Ï":
+ for l = 134, 136, 149: l kern 1/8ex#, endfor
+ skipto 6;
+
+ligtable "N": "Ñ":
+ 128 kern -1/3 k#,
+ 142 kern -1/5 k#,
+ skipto 6;
+
+ligtable "P":
+ 128 kern -5/8 k#,
+ 142 kern -1/3 k#,
+ 136 kern -5/12 k#,
+ skipto 6;
+
+ligtable "Q":
+ 149 kern 1/5 k#,
+ lig_small(128),
+ skipto 6;
+
+ligtable "H": "K": "L":
+ 128 kern 1/8 k#,
+ 149 kern 1/6 k#,
+ skipto 6;
+
+ligtable "B": "C": "D": "M": "R": "T": "V": "W": "X": "Z":
+ "A": "À": "Á": "Â": "Ã": "Ä":
+ "E": "È": "É": "Ê": "Ë":
+ "O": "Ò": "Ó": "Ô": "Õ": "Ö":
+ "U": "Ù": "Ú": "Û": "Ü":
+ 149 kern 1/6 k#,
+6::
+ lig_small(128),
+ "h" |=:| 145, "k" |=:| 145,
+ lig_loop(132),
+ lig_vert(136),
+ lig_far(142),
+ lig_mn(149);
+
+bye.
diff --git a/Master/texmf-dist/fonts/source/public/frcursive/frcw10.mf b/Master/texmf-dist/fonts/source/public/frcursive/frcw10.mf
new file mode 100644
index 00000000000..0df51cdf09f
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/frcursive/frcw10.mf
@@ -0,0 +1,29 @@
+%%% This file is part of the French Cursive font definition.
+%%% This is a parameter file for the wide-links variant
+
+font_identifier := "FCW";
+font_size 10 pt#;
+
+mode_setup;
+
+ex# := 155.0/36 pt#;
+med# := 0.4 pt#;
+thin# := 0.2 pt#;
+thick# := 0.6 pt#;
+dot_size# := 0.8 pt#;
+
+base_width := .800;
+slant := 0;
+accent_wd := 0.7;
+link_width := 0.4;
+straight_ascend := 2;
+loop_ascend := 2.5;
+uc_ascend := 2.5;
+straight_descend := 1.2;
+loop_descend := 1.5;
+dot_height := 1.4;
+accent_bot := 1.2;
+accent_top := 1.6;
+cedilla_dp = 0.2;
+
+input frcursive