diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-09 23:38:21 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-09 23:38:21 +0000 |
commit | 215012a8d684889983ec2c0629e1c704e6853d9c (patch) | |
tree | ebf1271bd71869069824935ae8a5678745bf8bce /Master/texmf-dist/fonts/source/public/frcursive | |
parent | 1af3d19d6dbcbf309667d9cb4aa3cdda914914a9 (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')
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 |