summaryrefslogtreecommitdiff
path: root/fonts/twcal
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/twcal
Initial commit
Diffstat (limited to 'fonts/twcal')
-rw-r--r--fonts/twcal/twcal14.mf121
-rw-r--r--fonts/twcal/twcal14.sty29
-rw-r--r--fonts/twcal/twcon.mf106
-rw-r--r--fonts/twcal/twdig.mf152
-rw-r--r--fonts/twcal/twlig1.mf483
-rw-r--r--fonts/twcal/twlig2.mf551
-rw-r--r--fonts/twcal/twlig3.mf559
-rw-r--r--fonts/twcal/twlig4.mf716
-rw-r--r--fonts/twcal/twlig5.mf566
-rw-r--r--fonts/twcal/twlig6.mf664
-rw-r--r--fonts/twcal/twlig7.mf508
-rw-r--r--fonts/twcal/twligtb1.mf319
-rw-r--r--fonts/twcal/twligtb2.mf800
-rw-r--r--fonts/twcal/twligtb3.mf782
-rw-r--r--fonts/twcal/twligtb4.mf769
-rw-r--r--fonts/twcal/twligtb5.mf826
-rw-r--r--fonts/twcal/twligtb6.mf413
-rw-r--r--fonts/twcal/twligtb7.mf263
-rw-r--r--fonts/twcal/twlow.mf555
-rw-r--r--fonts/twcal/twreadme.pdfbin0 -> 112206 bytes
-rw-r--r--fonts/twcal/twreadme.tex185
-rw-r--r--fonts/twcal/twsign.mf293
-rw-r--r--fonts/twcal/twspec.mf390
-rw-r--r--fonts/twcal/twup.mf463
24 files changed, 10513 insertions, 0 deletions
diff --git a/fonts/twcal/twcal14.mf b/fonts/twcal/twcal14.mf
new file mode 100644
index 0000000000..0709a9d5f4
--- /dev/null
+++ b/fonts/twcal/twcal14.mf
@@ -0,0 +1,121 @@
+% TW -- kalligraphische Schreibschrift (C)6/1991 Thomas Weinmann
+% ------------------------------------------------------------------
+% - auf der Basis der VA--Schrift
+% - Das Copyright bezieht sich nur auf die Veraenderungen von TWCAL14
+% gegenueber VA.
+% - Nicht gewerbliche Nutzung steht jedem frei.
+% - TWCAL14 darf nur als Gesamtpaket weitegegeben werden.
+% - mit MetaFont (ab Version 2.0 und plain base)
+% sowie TeX (ab Version 3.0) verwenden.
+% - Vorsicht bei Trennvorgaben und sonstigen Dingen die Einfluss
+% auf die Verwendung von Ligaturen haben koennen! Es gibt bei
+% Textstellen, die TWCAL14 benoetigen, kaum Buchstabenpaare,
+% die nicht ueber die Ligaturprogrammierung beeinflusst werden.
+% - zur (sicheren) Verwendung der Umlaute und des scharfen s zeigen
+% TWREADME.TEX und TWCAL14.STY die einzige mir z.Z. bekannte
+% Moeglichkeit.
+% (Verbesserungsvorschlaege bitte an untenstehende Adresse/E-Mail)
+%
+% Thomas Weinmann
+% Hausaeckerstrasse 4
+% D-7024 Filderstadt 1
+% e-mail: weinmann@azu.informatik.uni-stuttgart.de
+% (die e-mail-Adresse bleibt hoffentlich noch einige Zeit)
+
+
+message "TW -- Schreibschrift V1.1 (C)6/1991 Thomas Weinmann";
+
+
+font_identifier "TWCAL"; font_size 14pt#;
+font_coding_scheme:="TW text";
+
+
+mode_setup;
+
+
+pair auf,ab,an;
+auf=(1,7);
+ab=(-1,-7);
+an=(1,0.8);
+
+
+ut#:=0.3;
+ut=ut#*hppp;
+
+
+pen va_pen;
+va_pen := pencircle yscaled 3.7ut xscaled 0.6ut rotated 60;
+
+pen va_pen_small;
+va_pen_small := pencircle yscaled 2.5ut xscaled 1.3ut rotated 60;
+
+pen va_pen_big;
+va_pen_big := pencircle yscaled 4.5ut xscaled 1.5ut rotated 60;
+
+
+% fuer 320*200 CGA (mit Option /gc bei emTex)
+% &plain
+% mag=0.2;
+% input twcal14
+screenstrokes;
+% imagerules;
+showit;
+if mode <> smoke:
+if mode <> proof:
+openwindow currentwindow from (0,0) to (screen_rows,screen_cols) at (-20ut,60ut);
+fi
+fi
+if mode = proof:
+openwindow currentwindow from (0,0) to (screen_rows,screen_cols) at (-15ut,20ut);
+fi
+if mode=smoke:
+openwindow currentwindow from (0,0) to (screen_rows,screen_cols) at (-15ut,20ut);
+fi
+
+
+message "digits ";
+input twdig;
+message "signs ";
+input twsign;
+message "specials ";
+input twspec;
+message "conductors ";
+input twcon;
+message "lowercase ";
+input twlow;
+message "uppercase ";
+input twup;
+message "ligaturen ";
+input twlig1;
+input twlig2;
+input twlig3;
+input twlig4;
+input twlig5;
+input twlig6;
+input twlig7;
+
+
+font_quad 33pt#;
+font_normal_space 8.7pt#;
+font_normal_stretch 3.0pt#;
+font_normal_shrink 1.7pt#;
+font_x_height 19ut#;
+font_quad 28.5ut#;
+font_extra_space 2.7pt#;
+
+
+%
+% kerning, ligaturen und Buchstabenverbindungen
+%
+k#:=-2.25pt#;
+kk#:=-1.5pt#;
+boundarychar:=oct"133"; % oct"133" ist somit kein freier Platz mehr
+
+input twligtb1;
+input twligtb2;
+input twligtb3;
+input twligtb4;
+input twligtb5;
+input twligtb6;
+input twligtb7;
+bye.
diff --git a/fonts/twcal/twcal14.sty b/fonts/twcal/twcal14.sty
new file mode 100644
index 0000000000..4b8e481e3f
--- /dev/null
+++ b/fonts/twcal/twcal14.sty
@@ -0,0 +1,29 @@
+
+% Stiloption zur Verwendung des TWCAL14 - Zeichensatzes
+% (C)1991 Thomas Weinmann
+
+
+% german.sty laden
+\input german.sty
+
+% Schriftstil
+\newfont{\twcal}{twcal14 scaled 1000}
+
+% TWCAL14 Logo
+\def\twcallogo{{${
+ \lower-0.3ex\hbox{T}\kern-0.22em
+ \lower0.3ex\hbox{W}\kern-0em
+ \lower-0.3ex\hbox{C}\kern-0.24em
+ \lower0.3ex\hbox{A}\kern-0.14em
+ \lower-0.3ex\hbox{L}}\kern-0.19em
+ \lower0.1ex\hbox{1}\kern-0.14em
+ \lower-0.1ex\hbox{4}$}}
+
+% Definition der Umlaute
+\def\a{\char26}
+\def\o{\char27}
+\def\u{\char28}
+\def\A{\char29}
+\def\O{\char30}
+\def\U{\char31}
+\def\s{\char25}
diff --git a/fonts/twcal/twcon.mf b/fonts/twcal/twcon.mf
new file mode 100644
index 0000000000..7afb327833
--- /dev/null
+++ b/fonts/twcal/twcon.mf
@@ -0,0 +1,106 @@
+
+% TW -- conductors (C)1991 Thomas Weinmann
+
+% e-
+beginchar(oct"020",17.7 ut#,19 ut#, 0ut#);
+pickup va_pen;
+%
+z1=(0ut,(18-17.7*8/9)*ut);
+z2=(17.7ut,18ut);
+%
+draw z1..z2;
+%
+%
+labels(range 1 thru 2);
+endchar;
+
+% i-
+beginchar(oct"021",15.7 ut#,19 ut#, 0ut#);
+pickup va_pen;
+%
+z1=(0ut,2.3ut);
+z2=(15.7ut,18ut);
+%
+draw z1..z2;
+%
+%
+labels(range 1 thru 2);
+endchar;
+
+% a- d- h- x-
+beginchar(oct"022",13.7 ut#,19 ut#, 0ut#);
+pickup va_pen;
+%
+z1=(0ut,((18-13.7*8/7)-0.3)*ut);
+z2=(13.7ut,18ut);
+%
+draw z1..z2;
+%
+%
+labels(range 1 thru 2);
+endchar;
+
+% u-
+beginchar(oct"023",14.7 ut#,19 ut#, 0ut#);
+pickup va_pen;
+%
+z1=(0ut,(18-14.7*16/15)*ut);
+z2=(14.7ut,18ut);
+%
+draw z1..z2;
+%
+%
+labels(range 1 thru 2);
+endchar;
+
+% k-
+beginchar(oct"024",12.7 ut#,19 ut#, 0ut#);
+pickup va_pen;
+%
+z1=(0ut,(18-12.7*16/13)*ut);
+z2=(12.7ut,18ut);
+%
+draw z1..z2;
+%
+%
+labels(range 1 thru 2);
+endchar;
+
+% n-
+beginchar(oct"025",15.7 ut#,19 ut#, 0ut#);
+pickup va_pen;
+%
+z1=(0ut,(18-15.7*17/16)*ut);
+z2=(15.7ut,18ut);
+%
+draw z1..z2;
+%
+%
+labels(range 1 thru 2);
+endchar;
+
+% p-
+beginchar(oct"026",14.7 ut#,19 ut#, 0ut#);
+pickup va_pen;
+%
+z1=(0ut,(18-14.7*17/15)*ut);
+z2=(14.7ut,18ut);
+%
+draw z1..z2;
+%
+%
+labels(range 1 thru 2);
+endchar;
+
+% Start fuer verschiedene Kleinbuchstaben
+beginchar(oct"027",13.7 ut#,19 ut#, 0ut#);
+pickup va_pen;
+%
+z1=(((8-(18-15.7*17/16))*16/17)*ut,8ut)-(2ut,0ut);
+z2=(15.7ut,18ut)-(2ut,0ut);
+%
+draw z1..z2;
+%
+%
+labels(range 1 thru 2);
+endchar;
diff --git a/fonts/twcal/twdig.mf b/fonts/twcal/twdig.mf
new file mode 100644
index 0000000000..ac573f76a6
--- /dev/null
+++ b/fonts/twcal/twdig.mf
@@ -0,0 +1,152 @@
+
+% TW -- digits
+
+beginchar("0",38ut#,47ut#,0);
+pickup va_pen;
+x5=40ut*.8; y5=41ut*.8;
+x6=51ut*.8; y6=50ut*.8;
+x17=24ut*.8; y17=10ut*.8;
+x20=33ut*.8; y20=41ut*.8;
+x24=22ut*.8; y24=50ut*.8;
+x46=30ut*.8; y46=22ut*.8;
+x56=-5ut*.8; y56=15ut*.8;
+x57=10ut*.8; y57=0 ut*.8;
+x58=35ut*.8; y58=50ut*.8;
+draw z20..z24{left}..z56{down}..z57{right}..z17..z46..cycle;
+penlabels(5,6,17,20,24,46,56,57,58);
+endchar;
+
+beginchar("1",24ut#,47ut#,0);
+pickup va_pen;
+x12=9 ut*.8; y12=35ut*.8;
+x18=0 ut; y18=33ut*.8;
+x24=22ut*.8; y24=50ut*.8;
+x28=3 ut; y28=0 ut;
+draw z18..z12..z24{auf}
+ & z24{ab}--z28;
+penlabels(12,18,24,28);
+endchar;
+
+
+beginchar("2",38ut#,47ut#,0);
+pickup va_pen;
+x22=13ut*.8; y22=0*.8;
+x23=25ut*.8; y23=7 ut*.8;
+x24=22ut*.8; y24=50ut*.8;
+x28=6ut*.8; y28=7ut*.8;
+x29=30ut*.8; y29=46ut*.8;
+x34=6 ut*.8; y34=40ut*.8;
+x38=22ut*.8; y38=22ut*.8;
+x281=-5ut*.8; y281=3ut*.8;
+draw z34..z24{right}..z29..z38..z28{dir 225}..
+ z281{up}..z28..z22{dir 330}..{an}z23;
+penlabels(22,23,24,28,29,34,38,281);
+endchar;
+
+beginchar("3",38ut#,47ut#,0);
+pickup va_pen;
+x1=0ut*.8; y1=4ut*.8;
+x17=24ut*.8; y17=10ut*.8;
+x19=12ut*.8; y19=27ut*.8;
+x22=13ut*.8; y22=0 ut*.8;
+x24=22ut*.8; y24=50ut*.8;
+x34=6 ut*.8; y34=40ut*.8;
+x38=22ut*.8; y38=22ut*.8;
+draw z34..z24{right}..z19{left}
+ & z19{right}..z38..z17..z22{left}..z1;
+penlabels(1,17,19,22,24,34,38);
+endchar;
+
+
+beginchar("4",38ut#,47ut#,0);
+pickup va_pen;
+x4=27ut*.8; y4=21ut*.8;
+x22=13ut*.8; y22=0 ut*.8;
+x24=22ut*.8; y24=50ut*.8;
+x30=19ut*.8; y30=27ut*.8;
+x32=16ut*.8; y32=-22ut*.8;
+x56=-3ut*.8; y56=16ut*.8;
+draw z24{ab}--z56
+ & z56{dir 10}--z4;
+draw z30--z22;
+penlabels(4,22,24,30,32,56);
+endchar;
+
+beginchar("5",38ut#,47ut#,0);
+pickup va_pen;
+x2=6ut*.8; y2=0ut*.8;
+x31=0 ut*.8; y31=9 ut*.8;
+x35=12ut*.8; y35=50ut*.8;
+x38=28ut*.8; y38=22ut*.8;
+x58=35ut*.8; y58=50ut*.8;
+x66=2 ut*.8; y66=25ut*.8;
+draw z35{dir 335}..z58;
+draw z35--z66
+ & z66{dir 20}..z38{down}..z2{left}..z31;
+penlabels(2,31,35,38,58,66);
+endchar;
+
+beginchar("6",38ut#,47ut#,0);
+pickup va_pen;
+x23=25ut*.8; y23=8ut*.8;
+x24=22ut*.8; y24=50ut*.8;
+x29=30ut*.8; y29=46ut*.8;
+x30=19ut*.8; y30=27ut*.8;
+x33=11ut*.8; y33=-18ut*.8;
+x45=24ut*.8; y45=27ut*.8;
+x56=-5ut*.8; y56=15ut*.8;
+x57=10ut*.8; y57=0 ut*.8;
+x66=2 ut*.8; y66=25ut*.8;
+draw z56..z30..z23..z57{left}..z56{up}..z24{right}..z29;
+penlabels(23,24,29,30,33,45,56,57,66);
+endchar;
+
+beginchar("7",41ut#,47ut#,0);
+pickup va_pen;
+x3=23ut*.8; y3=10ut*.8;
+x19=15ut*.8; y19=27ut*.8;
+x28=6 ut*.8; y28=0 ut*.8;
+x36=25ut*.8; y36=45ut*.8;
+x37=32ut*.8; y37=50ut*.8;
+x60=3 ut*.8; y60=43ut*.8;
+x61=11 ut*.8; y61=50ut*.8;
+z1=(-2ut,18ut);
+z2=(23ut,21ut);
+draw z60..z61{right}..z36{right}..z37{auf}
+ & z37{ab}..z19..z28;
+draw z1{(1,0)}..z2;
+penlabels(1,2,3,19,28,36,37,60,61);
+endchar;
+
+beginchar("8",38ut#,47ut#,0);
+pickup va_pen;
+x19=12ut*.8; y19=27ut*.8;
+x23=25ut*.8; y23=8ut*.8;
+x31=0 ut*.8; y31=9 ut*.8;
+x33=11ut*.8; y33=-18ut*.8;
+x34=6 ut*.8; y34=40ut*.8;
+x38=22ut*.8; y38=22ut*.8;
+x57=10ut*.8; y57=0 ut*.8;
+x67=27ut*.8; y67=42ut*.8;
+x68=18ut*.8; y68=50ut*.8;
+draw z31{up}..z19..z67{up}..z68{left}..z34{down}..z38..z23..z57{left}..z31{up};
+penlabels(19,23,31,33,34,38,57,67,68);
+endchar;
+
+
+beginchar("9",38ut#,47ut#,0);
+pickup va_pen;
+x1=0*.8; y1=4ut*.8;
+x3=20ut*.8; y3=10ut*.8;
+x11=32ut*.8; y11=50ut*.8;
+x34=6 ut*.8; y34=40ut*.8;
+x37=29ut*.8; y37=40ut*.8;
+x38=25ut*.8; y38=29ut*.8;
+x57=10ut*.8; y57=0 ut*.8;
+x68=18ut*.8; y68=50ut*.8;
+x69=15ut*.8; y69=22ut*.8;
+x70=26ut*.8; y70=40ut*.8;
+draw z68{left}..z34..z69{right}..z70..z68{left};
+draw z38{dir 255}..z57{left}..z1;
+penlabels(1,3,11,34,37,38,57,68,69,70);
+endchar;
diff --git a/fonts/twcal/twlig1.mf b/fonts/twcal/twlig1.mf
new file mode 100644
index 0000000000..2bad979cfa
--- /dev/null
+++ b/fonts/twcal/twlig1.mf
@@ -0,0 +1,483 @@
+
+% TW -- ligatures 1. generation (C)1991 Thomas Weinmann
+
+
+% ff
+beginchar(oct"200",34 ut#,39 ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(11ut,37ut);
+z3=(9ut,39ut);
+z4=(3ut,31ut);
+z5=(-7ut,-19ut);
+z6=(-9ut,5ut);
+z7=(7ut,6ut)+1.1*z9;
+z8=(18ut,18ut)+z9;
+z9=(16ut, 0ut);
+z10=z1+z9-(0ut,3ut);
+z11=z2+z9;
+z12=z3+z9;
+z13=z4+z9;
+z14=z5+z9;
+%
+draw z1{an}..z2{up}..z3{left}...z4{z5-z4}--z5
+ ..z10{an}..z11{up}..z12{left}...z13{z14-z13}--z14;
+draw z6..z7---z8{an};
+%
+%
+labels(range 1 thru 14);
+endchar;
+
+%ie
+beginchar(oct"201",21 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-4ut,4ut);
+z3=(-1ut,0ut);
+z4=(3ut,2ut);
+z5=(3.3ut,2.3ut);
+z6=(2.5ut,28ut);
+z7=(11.7ut,0ut);
+z8=(4ut,19ut)+z7;
+z9=(-2ut,7ut)+z7;
+z10=(3ut,0ut)+z7;
+z11=(9.3ut,(9.3*8/9-6)*ut)+z7;
+z12=(-1ut,13ut)+z7;
+z13=(8ut,13ut)+z7;
+z14=(9ut,2ut)+z7;
+%
+draw z1--z2..z3{right}..z13{z12-z9}..z8{left}..z12{z9-z12}
+ ..z10{right}..z14--z11;
+%
+%pickup va_pen_big;
+pickup pencircle scaled 4ut;
+drawdot z6;
+%
+%
+labels(range 1 thru 14);
+endchar;
+
+% le
+beginchar(oct"202",23.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,36ut);
+z3=(11ut,39ut);
+z4=(1ut,0ut);
+z5=(21ut,18ut);
+z6=(6ut,2ut);
+z7=(14ut,0);
+z8=(4ut,19ut)+z7;
+z9=(-2ut,7ut)+z7;
+z10=(3ut,0ut)+z7;
+z11=(9.3ut,(9.3*8/9-6)*ut)+z7;
+z12=(-1ut,13ut)+z7;
+z13=(8ut,13ut)+z7;
+z14=(9ut,2ut)+z7;
+%
+draw z1{an}..z2{up}..z3{left}..z1{z4-z3}..z4{right}
+ ..z13{z12-z9}..z8{left}..z12{z9-z12}
+ ..z10{right}..z14--z11;
+;
+%
+%
+labels(range 1 thru 14);
+endchar;
+
+% ll
+beginchar(oct"203",36 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(12.7ut,36ut);
+z3=(11ut,39ut);
+z4=(1ut,0ut);
+z5=(16ut,18ut);
+z6=(6ut,2ut);
+z7=(6.1ut,(6.1*16/15+(2-64/15))*ut);
+z8=(17ut,0);
+z9=z8+z1;
+z10=z2+z8;
+z11=z3+z8;
+z12=z4+z8;
+z13=z5+z8+(2ut,0);
+z14=z6+z8;
+z15=z8+z1+(6.5ut,0);
+%
+draw z1{an}..z2{up}..z3{left}..z1{z4-z3}..z4{right}..z6
+ ..z10{up}..z11{left}..z9{z12-z11}..z12{right}..z14--z13;
+%
+%
+labels(range 1 thru 6);
+endchar;
+
+% lle
+beginchar(oct"204",42.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(12.7ut,36ut);
+z3=(11ut,39ut);
+z4=(1ut,0ut);
+z5=(16ut,18ut);
+z6=(6ut,2ut);
+z7=(6.1ut,(6.1*16/15+(2-64/15))*ut);
+z8=(17ut,0);
+z9=z8+z1;
+z10=z2+z8;
+z11=z3+z8;
+z12=z4+z8+(4ut,0ut); % damit es nicht ganz so eckig aussieht
+z13=z5+z8+(1ut,0);
+z14=z6+z8;
+z15=z8+z1+(6.5ut,0);
+z16=(33ut,0ut);
+z17=(4ut,19ut)+z16;
+z18=(-2ut,7ut)+z16;
+z19=(3ut,0ut)+z16;
+z20=(9.3ut,(9.3*8/9-6)*ut)+z16;
+z21=(-1ut,13ut)+z16;
+z22=(8ut,13ut)+z16;
+z23=(9ut,2ut)+z16;
+%
+draw z1{an}..z2{up}..z3{left}..z1{z4-z3}..z4{right}
+ ..z6..z10{up}..z11{left}..z9{z12-z11}..z12{right}
+ ..z22{z21-z18}..z17{left}..z21{z18-z21}
+ ..z19{right}..z23--z20;
+%
+%
+labels(range 1 thru 23);
+endchar;
+
+% se 1. Fall
+beginchar(oct"205",27.4 ut#,19ut#,0ut#); % s mit Anstrich und Endung
+pickup va_pen;
+%
+z1=(-10ut,8ut);
+z2=(0ut,19ut);
+z3=(5ut,5ut);
+z4=(0ut,0ut);
+z5=(-3ut,4ut);
+z6=(18ut,18ut);
+z7=(18ut,0ut);
+z8=(4ut,19ut)+z7;
+z9=(-2ut,7ut)+z7;
+z10=(3ut,0ut)+z7;
+z11=(9.3ut,(9.3*8/9-6)*ut)+z7;
+z12=(-1ut,13ut)+z7;
+z13=(8ut,13ut)+z7;
+z14=(9ut,2ut)+z7;
+z15=z9+(1ut,0ut);
+%
+%
+draw z1--z2
+ & z2{z3-z2}..z3{down}..z4{left}..z5{dir 70}..z15{z9-z12};
+draw z12{z9-z12}..z13{z12-z9}..z8{left}..z12{z9-z12}
+ ..z10{right}..z14--z11;
+%
+labels(range 1 thru 15);
+endchar;
+
+% se 2. Fall
+beginchar(oct"206",27.4 ut#,19ut#,0ut#); % s mit Endung
+pickup va_pen;
+%
+z1=(-10ut,8ut);
+z2=(0ut,19ut);
+z3=(5ut,5ut);
+z4=(0ut,0ut);
+z5=(-3ut,4ut);
+z6=(18ut,18ut);
+z7=(18ut,0ut);
+z8=(4ut,19ut)+z7;
+z9=(-2ut,7ut)+z7;
+z10=(3ut,0ut)+z7;
+z11=(9.3ut,(9.3*8/9-6)*ut)+z7;
+z12=(-1ut,13ut)+z7;
+z13=(8ut,13ut)+z7;
+z14=(9ut,2ut)+z7;
+z15=z9+(1ut,0ut);
+%
+%
+draw z2{z3-z2}..z3{down}..z4{left}..z5{dir 70}..z15{z9-z12};
+draw z12{z9-z12}..z13{z12-z9}..z8{left}..z12{z9-z12}
+ ..z10{right}..z14--z11;
+%
+labels(range 1 thru 15);
+endchar;
+
+% st
+beginchar(oct"207",37ut#,39ut#,0ut#); % s mit Anstrich und Endung
+pickup va_pen;
+%
+z1=(-10ut,8ut);
+z2=(0ut,19ut);
+z3=(5ut,5ut);
+z4=(0ut,0ut);
+z5=(-3ut,4ut);
+z7=(9ut,0ut);
+z8=(5ut,18ut)+z7;
+z9=(14ut,39ut)+z7;
+z10=(7ut,0ut)+z7;
+z11=(-1ut,8ut)+z7;
+z12=(28ut,18ut)+z7;
+%
+draw z8{an}..z9
+ & z9-- z10;
+draw z11{dir 340}..z12{dir 60};
+%
+draw z1--z2
+ & z2{z3-z2}..z3{down}..z4{left}..z5{dir 60}...z8{an}..z9 & z9-- z10;
+draw z11{dir 340}..z12{dir 60};
+
+%
+labels(range 1 thru 12);
+endchar;
+
+% st
+beginchar(oct"210",37ut#,39ut#,0ut#); % s mit Endung
+pickup va_pen;
+%
+z1=(-10ut,8ut);
+z2=(0ut,19ut);
+z3=(5ut,5ut);
+z4=(0ut,0ut);
+z5=(-3ut,4ut);
+z7=(9ut,0ut);
+z8=(5ut,18ut)+z7;
+z9=(14ut,39ut)+z7;
+z10=(7ut,0ut)+z7;
+z11=(-1ut,8ut)+z7;
+z12=(28ut,18ut)+z7;
+%
+draw z8{an}..z9
+ & z9-- z10;
+draw z11{dir 340}..z12{dir 60};
+%
+draw z2{z3-z2}..z3{down}..z4{left}..z5{dir 60}...z8{an}..z9 & z9-- z10;
+draw z11{dir 340}..z12{dir 60};
+
+%
+labels(range 1 thru 12);
+endchar;
+
+% tt
+beginchar(oct"211",38 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,39ut);
+z3=(7ut,0ut);
+z4=(-2ut,11ut);
+z5=(38ut,18ut);
+z6=(24ut,39ut);
+z7=(17ut,0ut);
+%
+draw z1{an}..z2
+ & z2-- z3;
+draw z6--z7;
+draw z4{dir 340}..z5{dir 60};
+%
+%
+labels(range 1 thru 7);
+endchar;
+
+% de
+beginchar(oct"212",33.4 ut#,40 ut#,0);
+pickup va_pen;
+%
+z1=(5ut,19ut);
+z2=(-4ut,6ut);
+z3=(1ut,0ut);
+z4=(11ut,13ut);
+z5=(17ut,40ut);
+z6=(10ut,5ut);
+z7=(12ut,0ut);
+z8=(16.3ut,(16.3*8/7+(2-16*8/7))*ut);
+z9=(16ut,2ut);
+z10=(24ut,0ut);
+z11=(4ut,19ut)+z10;
+z12=(-2ut,7ut)+z10;
+z13=(3ut,0ut)+z10;
+z14=(9.3ut,(9.3*8/9-6)*ut)+z10;
+z15=(-1ut,13ut)+z10;
+z16=(8ut,13ut)+z10;
+z17=(9ut,2ut)+z10;
+%
+%
+draw z1{left}..z2{down}..z3{right}..z4{up}..cycle;
+draw z5--z6{z6-z5}..z7{right}
+ ..z16..z11{left}..z15{z12-z15} % z16{z15-z12}
+ ..z13{right}..z17--z14;
+%
+labels(range 1 thru 17);
+endchar;
+
+% ge
+beginchar(oct"213",33.4 ut#,19 ut#,19ut#);
+pickup va_pen;
+%
+z1=(11ut,13ut);
+z2=(1ut,0ut);
+z3=(-5ut,7ut);
+z4=(5ut,19ut);
+z10=(12ut,19ut);
+z11=(7ut,-10ut);
+z12=(0ut,-19ut);
+z13=(-4ut,-15ut);
+z14=(0ut,-9ut);
+z15=(29ut,18ut);
+z16=(24ut,0ut);
+z17=(4ut,19ut)+z16;
+z18=(-2ut,7ut)+z16;
+z19=(3ut,0ut)+z16;
+z20=(9.3ut,(9.3*8/9-6)*ut)+z16;
+z21=(-1ut,13ut)+z16;
+z22=(8ut,13ut)+z16;
+z23=(9ut,2ut)+z16;
+%
+%
+draw z1{down}..z2{left}..z3{up}..z4{right}..cycle;
+draw z10--z11{z11-z10}..z12{left}..z13{up}..z14
+ ..z22{z21-z18}..z17{left}..z21{z18-z21}
+ ..z19{right}..z23--z20;
+%
+%
+labels(range 1 thru 23);
+endchar;
+
+% gee
+beginchar(oct"214",52.4 ut#,19 ut#,19ut#);
+pickup va_pen;
+%
+z1=(11ut,13ut);
+z2=(1ut,0ut);
+z3=(-5ut,7ut);
+z4=(5ut,19ut);
+z10=(12ut,19ut);
+z11=(7ut,-10ut);
+z12=(0ut,-19ut);
+z13=(-4ut,-15ut);
+z14=(0ut,-9ut);
+z15=(29ut,18ut);
+z16=(24ut,0ut);
+z17=(4ut,19ut)+z16;
+z18=(-2ut,7ut)+z16;
+z19=(3ut,0ut)+z16;
+z20=(9.3ut,(9.3*8/9-6)*ut)+z16;
+z21=(-1ut,13ut)+z16;
+z22=(8ut,13ut)+z16;
+z23=(9ut,2ut)+z16;
+z24=(43ut,0ut);
+z25=(4ut,19ut)+z24;
+z26=(-2ut,7ut)+z24;
+z27=(3ut,0ut)+z24;
+z28=(9.3ut,(9.3*8/9-6)*ut)+z24;
+z29=(-1ut,13ut)+z24;
+z30=(8ut,13ut)+z24;
+z31=(9ut,2ut)+z24;
+%
+%
+%
+draw z1{down}..z2{left}..z3{up}..z4{right}..cycle;
+draw z10--z11{z11-z10}..z12{left}..z13{up}..z14
+ ..z22{z21-z18}..z17{left}..z21{z18-z21}
+ ..z19{right}
+ ..z30..z25{left}..z29{z26-z29}
+ ..z27{right}..z31--z28;
+%
+%
+labels(range 1 thru 31);
+endchar;
+
+% dt
+beginchar(oct"215",50 ut#,40 ut#,0);
+pickup va_pen;
+%
+z1=(5ut,19ut);
+z2=(-4ut,6ut);
+z3=(1ut,0ut);
+z4=(11ut,13ut);
+z5=(17ut,40ut);
+z6=(10ut,5ut);
+z7=(12ut,0ut);
+z8=(16.3ut,(16.3*8/7+(2-16*8/7))*ut);
+z9=(16ut,2ut);
+z10=(22ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,39ut)+z10;
+z13=(7ut,0ut)+z10;
+z14=(-4ut,14ut)+z10;
+z15=(28ut,18ut)+z10;
+%
+%
+draw z1{left}..z2{down}..z3{right}..z4{up}..cycle;
+draw z5--z6{z6-z5}..z7{right}
+ ..z12{up}
+ & z12-- z13;
+draw z14{dir 340}..z15{dir 60};
+%
+labels(range 1 thru 15);
+endchar;
+
+% te
+beginchar(oct"216",32.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,39ut);
+z3=(7ut,0ut);
+z4=(-4ut,11ut);
+z5=(28ut,18ut);
+z6=(23ut,0ut);
+z7=(4ut,19ut)+z6;
+z8=(-2ut,7ut)+z6;
+z9=(3ut,0ut)+z6;
+z10=(9.3ut,(9.3*8/9-6)*ut)+z6;
+z11=(-1ut,13ut)+z6;
+z12=(8ut,13ut)+z6;
+z13=(9ut,2ut)+z6;
+%
+%
+draw z1{an}..z2
+ & z2-- z3;
+draw z4{dir 340}
+ ..z12{z11-z8}..z7{left}..z11{z8-z11}
+ ..z9{right}..z13--z10;
+%
+%
+labels(range 1 thru 13);
+endchar;
+
+% ne
+beginchar(oct"217",36.4 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-4ut,0ut);
+z3=(10ut,19ut);
+z4=(15ut,15ut);
+z5=(12ut,3ut);
+z6=(15ut,0ut);
+z7=(18ut,1ut);
+z8=(18.3ut,(18.3*17/16+(1-9*17/8))*ut);
+z9=(27ut,0ut);
+z10=(4ut,19ut)+z9;
+z11=(-2ut,7ut)+z9;
+z12=(3ut,0ut)+z9;
+z13=(9.3ut,(9.3*8/9-6)*ut)+z9;
+z14=(-1ut,13ut)+z9;
+z15=(8ut,13ut)+z9;
+z16=(9ut,2ut)+z9;
+%
+%
+draw z1--z2
+ & z2{z1-z2}..z3{right}..z4{down}--z5..z6{right}..z7
+ ..z15{z14-z11}..z10{left}..z14{z11-z14}
+ ..z12{right}..z16--z13;
+%
+%
+labels(range 1 thru 16);
+endchar;
diff --git a/fonts/twcal/twlig2.mf b/fonts/twcal/twlig2.mf
new file mode 100644
index 0000000000..1e12c2054e
--- /dev/null
+++ b/fonts/twcal/twlig2.mf
@@ -0,0 +1,551 @@
+
+% TW -- ligatures 2. generation (C)1991 Thomas Weinmann
+
+
+% fe
+beginchar(oct"220",25.4 ut#,39 ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(12ut,37ut);
+z3=(9ut,39ut);
+z4=(3ut,31ut);
+z5=(-7ut,-19ut);
+z6=(-10ut,10ut);
+z7=(7ut,6ut);
+z8=(18ut,18ut);
+z9=(16ut,0ut);
+z10=(4ut,19ut)+z9;
+z11=(-2ut,7ut)+z9;
+z12=(3ut,0ut)+z9;
+z13=(9.3ut,(9.3*8/9-6)*ut)+z9;
+z14=(-1ut,13ut)+z9;
+z15=(8ut,13ut)+z9;
+z16=(9ut,2ut)+z9;
+%
+%
+draw z1{an}..z2{up}..z3{left}...z4{z5-z4}--z5;
+draw z6..z15{z14-z11}..z10{left}..z14{z11-z14}
+ ..z12{right}..z16--z13;
+%
+%
+labels(range 1 thru 13);
+endchar;
+
+% he
+beginchar(oct"221",34.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(10ut,36ut);
+z3=(7ut,39ut);
+z4=(3ut,34ut);
+z5=(-4ut,0ut);
+z6=(11ut,19ut);
+z7=(13ut,15ut);
+z8=(11ut,3ut);
+z9=(17ut,2ut);
+z10=(17.3ut,((17.3*8/7+(2-17.3*8/7))+0.3)*ut);
+z11=(25ut,0ut);
+z12=(4ut,19ut)+z11;
+z13=(-2ut,7ut)+z11;
+z14=(3ut,0ut)+z11;
+z15=(9.3ut,(9.3*8/9-6)*ut)+z11;
+z16=(-1ut,13ut)+z11;
+z17=(8ut,13ut)+z11;
+z18=(9ut,2ut)+z11;
+%
+%
+draw z1{an}..z2{up}..z3{left}..z4..z1--z5
+ & z5{z1-z5}..z6{right}..z7{down}..z8{down}..z9
+ ..z17{z16-z13}..z12{left}..z16{z13-z16}
+ ..z14{right}..z18--z15;
+%
+%
+labels(range 1 thru 18);
+endchar;
+
+% ht
+beginchar(oct"222",48 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(10ut,36ut);
+z3=(7ut,39ut);
+z4=(3ut,34ut);
+z5=(-4ut,0ut);
+z6=(11ut,19ut);
+z7=(13ut,15ut);
+z8=(11ut,3ut);
+z9=(17ut,2ut);
+z10=(17.3ut,((17.3*8/7+(2-17.3*8/7))+0.3)*ut);
+z11=(20ut,0ut);
+z12=(0ut,18ut)+z11;
+z13=(14ut,39ut)+z11;
+z14=(7ut,0ut)+z11;
+z15=(-3ut,19ut)+z11;
+z16=(28ut,18ut)+z11;
+%
+%
+draw z1{an}..z2{up}..z3{left}..z4..z1--z5
+ & z5{z1-z5}..z6{right}..z7{down}..z8{down}..z9
+ ..z13{(0,1)}
+ & z13-- z14;
+draw z15{dir 340}..z16{dir 60};
+%
+%
+labels(range 1 thru 16);
+endchar;
+
+% me
+beginchar(oct"223",47.4 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-5ut,0ut);
+z3=(10ut,19ut);
+z4=(14ut,16ut);
+z5=(10ut,0ut);
+z6=(24ut,19ut);
+z7=(27ut,16ut);
+z8=(24ut,3ut);
+z9=(26ut,0ut);
+z10=(30.3ut,(30.3*16/15+(-30))*ut);
+z11=(30ut,2ut);
+z12=(38ut,0ut);
+z13=(4ut,19ut)+z12;
+z14=(-2ut,7ut)+z12;
+z15=(3ut,0ut)+z12;
+z16=(9.3ut,(9.3*8/9-6)*ut)+z12;
+z17=(-1ut,13ut)+z12;
+z18=(8ut,13ut)+z12;
+z19=(9ut,2ut)+z12;
+%
+%
+draw z1--z2
+ & z2{z1-z2}..z3{right}..z4--z5
+ & z5{z4-z5}..z6{right}..z7--z8..z9{right}
+ ..z18{z17-z14}..z13{left}..z17{z14-z17}
+ ..z15{right}..z19--z16;
+%
+%
+labels(range 1 thru 19);
+endchar;
+
+% ke
+beginchar(oct"224", 31.4 ut#, 39ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(11ut,36ut);
+z3=(8ut,39ut);
+z4=(1ut,28ut);
+z5=(-4ut,0ut);
+z6=(10ut,19ut);
+z7=(11ut,17ut);
+z8=(3ut,9ut);
+z9=(11ut,0ut);
+z10=(16.3ut,(16.3*16/13+(2-16*16/13))*ut);
+z11=(16ut,2ut);
+z12=(22ut,0ut);
+z13=(4ut,19ut)+z12;
+z14=(-2ut,7ut)+z12;
+z15=(3ut,0ut)+z12;
+z16=(9.3ut,(9.3*8/9-6)*ut)+z12;
+z17=(-1ut,13ut)+z12;
+z18=(8ut,13ut)+z12;
+z19=(9ut,2ut)+z12;
+%
+%
+draw z1{an}..z2{up}..z3{left}...z4{z5-z4}--z5
+ & z5{z1-z5}..z6{dir -20}..z7{down}..z8
+ & z8..z9{right}..z11
+ ..z18{z17-z14}..z13{left}..z17{z14-z17}
+ ..z15{right}..z19--z16;
+%
+%
+labels(range 1 thru 19);
+endchar;
+
+% je
+beginchar(oct"225",21.4 ut#,19 ut#,19ut#);
+pickup va_pen;
+%
+z1=(2.5ut,28ut);
+z2=(0ut,19ut);
+z3=(-5ut,-3ut);
+z4=(-13ut,-19ut);
+z5=(17ut,18ut);
+z6=(12ut,0ut);
+z7=(4ut,19ut)+z6;
+z8=(-2ut,7ut)+z6;
+z9=(3ut,0ut)+z6;
+z10=(9.3ut,(9.3*8/9-6)*ut)+z6;
+z11=(-1ut,13ut)+z6;
+z12=(8ut,13ut)+z6;
+z13=(9ut,2ut)+z6;
+%
+%
+draw z2--z3{z3-z2}...z4{left}..z3{z5-z3}
+ ..z12{(z11-z8)}..z7{left}..z11{z8-z11}
+ ..z9{right}..z13--z10;
+pickup pencircle scaled 4ut;
+drawdot z1;
+%
+%
+labels(range 1 thru 13);
+endchar;
+
+% ze
+beginchar(oct"226",32.4 ut#,19 ut#,0ut#);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(11ut,0ut);
+z3=(-5ut,0ut);
+z4=(13ut,19ut);
+z5=((18*7/8)*ut,(18-13.7*8/7)*ut);
+z6=(23ut,0ut);
+z7=(4ut,19ut)+z6;
+z8=(-2ut,7ut)+z6;
+z9=(3ut,0ut)+z6;
+z10=(9.3ut,(9.3*8/9-6)*ut)+z6;
+z11=(-1ut,13ut)+z6;
+z12=(8ut,13ut)+z6;
+z13=(9ut,2ut)+z6;
+%
+draw z1--z4--z3{(1,0)}..z2
+ ..z12{z11-z8}..z7{left}..z11{z8-z11}
+ ..z9{right}..z13--z10;
+
+%
+%
+labels(range 1 thru 13);
+endchar;
+
+% ffe
+beginchar(oct"227",41.4 ut#,39 ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(11ut,37ut);
+z3=(9ut,39ut);
+z4=(3ut,31ut);
+z5=(-7ut,-19ut);
+z6=(-9ut,8ut);
+z7=(7ut,3ut)+1.1*z9;
+z8=(18ut,18ut)+z9;
+z9=(16ut, 0ut);
+z10=z1+z9-(0ut,3ut);
+z11=z2+z9;
+z12=z3+z9;
+z13=z4+z9;
+z14=z5+z9;
+z15=(32ut,0ut);
+z16=(4ut,19ut)+z15;
+z17=(-2ut,7ut)+z15;
+z18=(3ut,0ut)+z15;
+z19=(9.3ut,(9.3*8/9-6)*ut)+z15;
+z20=(-1ut,13ut)+z15;
+z21=(8ut,13ut)+z15;
+z22=(9ut,2ut)+z15;
+%
+%
+draw z1{an}..z2{up}..z3{left}...z4{z5-z4}--z5
+ ..z10{an}..z11{up}..z12{left}...z13{z14-z13}--z14;
+draw z6..z7
+ ..z21{z20-z17}..z16{left}..z20{z17-z20}
+ ..z18{right}..z22--z19;
+%
+%
+labels(range 1 thru 22);
+endchar;
+
+% ue
+beginchar(oct"230",38.4 ut#,19 ut#,0); %u-Umlaut
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,3ut);
+z3=(2ut,0ut);
+z4=(15ut,19ut);
+z5=(12ut,3ut);
+z6=(14ut,0ut);
+z7=(29ut,0ut);
+z8=(18ut,2ut);
+z9=(4ut,26ut);
+z10=(12ut,26ut);
+z11=(4ut,19ut)+z7;
+z12=(-2ut,7ut)+z7;
+z13=(3ut,0ut)+z7;
+z14=(9.3ut,(9.3*8/9-6)*ut)+z7;
+z15=(-1ut,13ut)+z7;
+z16=(8ut,13ut)+z7;
+z17=(9ut,2ut)+z7;
+%
+%
+draw z1--z2{z2-z1}..z3{right}..z4{z4-z5}
+ & z4--z5{(1,-0.7)}
+ ..z16{z15-z12}..z11{left}..z15{z12-z15}
+ ..z13{right}..z17--z14;
+%
+%
+labels(range 1 thru 17);
+endchar;
+
+% tte
+beginchar(oct"231",42.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,39ut);
+z3=(7ut,0ut);
+z4=(-2ut,11ut);
+z5=(38ut,18ut);
+z6=(24ut,39ut);
+z7=(17ut,0ut);
+z8=(33ut,0ut);
+z9=(4ut,19ut)+z8;
+z10=(-2ut,7ut)+z8;
+z11=(3ut,0ut)+z8;
+z12=(9.3ut,(9.3*8/9-6)*ut)+z8;
+z13=(-1ut,13ut)+z8;
+z14=(8ut,13ut)+z8;
+z15=(9ut,2ut)+z8;
+%
+%
+draw z1{an}..z2
+ & z2-- z3;
+draw z6--z7;
+draw z4{dir 340}
+ ..z14{z13-z10}..z9{left}..z13{z10-z13}
+ ..z11{right}..z15--z12;
+%
+%
+labels(range 1 thru 15);
+endchar;
+
+% ste
+beginchar(oct"232",42.4 ut#,39ut#,0ut#); % s mit Anstrich und Endung
+pickup va_pen;
+%
+z1=(-10ut,8ut);
+z2=(0ut,19ut);
+z3=(5ut,5ut);
+z4=(0ut,0ut);
+z5=(-3ut,4ut);
+z7=(9ut,0ut);
+z8=(5ut,18ut)+z7;
+z9=(14ut,39ut)+z7;
+z10=(7ut,0ut)+z7;
+z11=(-2ut,8ut)+z7;
+z12=(28ut,18ut)+z7;
+z13=(33ut,0ut);
+z14=(4ut,19ut)+z13;
+z15=(-2ut,7ut)+z13;
+z16=(3ut,0ut)+z13;
+z17=(9.3ut,(9.3*8/9-6)*ut)+z13;
+z18=(-1ut,13ut)+z13;
+z19=(8ut,13ut)+z13;
+z20=(9ut,2ut)+z13;
+%
+%
+draw z11{dir 340}
+ ..z19{z18-z15}..z14{left}..z18{z15-z18}
+ ..z16{right}..z20--z17;
+%
+draw z1--z2
+ & z2{z3-z2}..z3{down}..z4{left}..z5{dir 60}...z8{an}..z9 & z9-- z10;
+%
+labels(range 1 thru 20);
+endchar;
+
+% ste
+beginchar(oct"233",42.4 ut#,39ut#,0ut#); % s mit Endung
+pickup va_pen;
+%
+z1=(-10ut,8ut);
+z2=(0ut,19ut);
+z3=(5ut,5ut);
+z4=(0ut,0ut);
+z5=(-3ut,4ut);
+z7=(9ut,0ut);
+z8=(5ut,18ut)+z7;
+z9=(14ut,39ut)+z7;
+z10=(7ut,0ut)+z7;
+z11=(-2ut,8ut)+z7;
+z12=(28ut,18ut)+z7;
+z13=(33ut,0ut);
+z14=(4ut,19ut)+z13;
+z15=(-2ut,7ut)+z13;
+z16=(3ut,0ut)+z13;
+z17=(9.3ut,(9.3*8/9-6)*ut)+z13;
+z18=(-1ut,13ut)+z13;
+z19=(8ut,13ut)+z13;
+z20=(9ut,2ut)+z13;
+%
+%
+draw z2{z3-z2}..z3{down}..z4{left}..z5{dir 60}...z8{an}..z9 & z9-- z10;
+draw z11{dir 340}
+ ..z19{z18-z15}..z14{left}..z18{z15-z18}
+ ..z16{right}..z20--z17;
+%
+labels(range 1 thru 20);
+endchar;
+
+% llt
+beginchar(oct"234",59 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(12.7ut,36ut);
+z3=(11ut,39ut);
+z4=(1ut,0ut);
+z5=(16ut,18ut);
+z6=(6ut,2ut);
+z7=(6.1ut,(6.1*16/15+(2-64/15))*ut);
+z8=(15ut,0);
+z9=z8+z1;
+z10=z2+z8;
+z11=z3+z8;
+z12=z4+z8;
+z13=z5+z8+(2ut,0);
+z14=z6+z8;
+z15=z8+z1+(6.5ut,0);
+z16=(31ut,0ut);
+z17=(0ut,18ut)+z16;
+z18=(14ut,39ut)+z16;
+z19=(7ut,0ut)+z16;
+z20=(-2ut,15ut)+z16;
+z21=(28ut,18ut)+z16;
+%
+%
+draw z1{an}..z2{up}..z3{left}..z1{z4-z3}..z4{right}..z6
+ ..z10{up}..z11{left}..z9{z12-z11}..z12{right}..z14
+ ..z18{up}
+ & z18-- z19;
+draw z20{dir 340}..z21{dir 60};
+%
+%
+labels(range 1 thru 21);
+endchar;
+
+% llte
+beginchar(oct"235",62.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(12.7ut,36ut);
+z3=(11ut,39ut);
+z4=(1ut,0ut);
+z5=(16ut,18ut);
+z6=(6ut,2ut);
+z7=(6.1ut,(6.1*16/15+(2-64/15))*ut);
+z8=(15ut,0);
+z9=z8+z1;
+z10=z2+z8;
+z11=z3+z8;
+z12=z4+z8;
+z13=z5+z8+(2ut,0);
+z14=z6+z8;
+z15=z8+z1+(6.5ut,0);
+z16=(31ut,0ut);
+z17=(0ut,18ut)+z16;
+z18=(14ut,39ut)+z16;
+z19=(7ut,0ut)+z16;
+z20=(-2ut,19ut)+z16;
+z21=(28ut,18ut)+z16;
+z22=(53ut,0ut);
+z23=(4ut,19ut)+z22;
+z24=(-2ut,7ut)+z22;
+z25=(3ut,0ut)+z22;
+z26=(9.3ut,(9.3*8/9-6)*ut)+z22;
+z27=(-1ut,13ut)+z22;
+z28=(8ut,13ut)+z22;
+z29=(9ut,2ut)+z22;
+%
+%
+%
+draw z1{an}..z2{up}..z3{left}..z1{z4-z3}..z4{right}..z6
+ ..z10{up}..z11{left}..z9{z12-z11}..z12{right}..z14
+ ..z18{up}
+ & z18-- z19;
+draw z20{dir 340}
+ ..z28{z27-z24}..z23{left}..z27{z24-z27}
+ ..z25{right}..z29--z26;
+%
+%
+labels(range 1 thru 29);
+endchar;
+
+% hte
+beginchar(oct"236",51.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(10ut,36ut);
+z3=(7ut,39ut);
+z4=(3ut,34ut);
+z5=(-4ut,0ut);
+z6=(11ut,19ut);
+z7=(13ut,15ut);
+z8=(11ut,3ut);
+z9=(17ut,2ut);
+z10=(17.3ut,((17.3*8/7+(2-17.3*8/7))+0.3)*ut);
+z11=(19ut,0ut);
+z12=(0ut,18ut)+z11;
+z13=(14ut,39ut)+z11;
+z14=(7ut,0ut)+z11;
+z15=(-2ut,15ut)+z11;
+z16=(28ut,18ut)+z11;
+z17=(41ut,0ut);
+z18=(4ut,19ut)+z17;
+z19=(-2ut,7ut)+z17;
+z20=(3ut,0ut)+z17;
+z21=(9.3ut,(9.3*8/9-6)*ut)+z17;
+z22=(-1ut,13ut)+z17;
+z23=(8ut,13ut)+z17;
+z24=(9ut,2ut)+z17;
+%
+%
+%
+draw z1{an}..z2{up}..z3{left}..z4..z1--z5
+ & z5{z1-z5}..z6{right}..z7{down}..z8{down}..z9
+ ..z13{(0,1)}
+ & z13-- z14;
+draw z15{dir 340}
+ ..z23{z22-z19}..z18{left}..z22{z19-z22}
+ ..z20{right}..z24--z21;
+%
+%
+labels(range 1 thru 24);
+endchar;
+
+% re
+beginchar(oct"237", 28.4 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=2/3*((-3ut,-2ut)+z1);
+z3=(7ut,19ut);
+z4=(19ut,18ut);
+z5=(-5ut,0ut);
+z6=(19ut,0ut);
+z7=(4ut,19ut)+z6;
+z8=(-2ut,7ut)+z6;
+z9=(3ut,0ut)+z6;
+z10=(9.3ut,(9.3*8/9-6)*ut)+z6;
+z11=(-1ut,13ut)+z6;
+z12=(8ut,13ut)+z6;
+z13=(9ut,2ut)+z6;
+%
+%
+draw z1--z5;
+draw z2..z3
+ & z3{dir 320}..z12{z11-z8};
+draw z11{z8-z11}..z12{z11-z8}..z7{left}..z11{z8-z11}
+ ..z9{right}..z13--z10;
+%
+%
+labels(range 1 thru 13);
+endchar;
diff --git a/fonts/twcal/twlig3.mf b/fonts/twcal/twlig3.mf
new file mode 100644
index 0000000000..98f4bf26fa
--- /dev/null
+++ b/fonts/twcal/twlig3.mf
@@ -0,0 +1,559 @@
+
+% TW -- ligatures 3. generation (C)1991 Thomas Weinmann
+
+
+% sze
+beginchar(oct"240",39.4 ut#,39ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(2ut,13ut);
+z3=(-4ut,-19ut);
+z4=(17ut,39ut);
+z5=(22ut,35ut);
+z6=(8ut,19ut);
+z7=(19ut,8ut);
+z8=(13ut,0ut);
+z9=(10ut,3ut);
+z10=(30ut,0ut);
+z11=(4ut,19ut)+z10;
+z12=(-2ut,7ut)+z10;
+z13=(3ut,0ut)+z10;
+z14=(9.3ut,(9.3*8/9-6)*ut)+z10;
+z15=(-1ut,13ut)+z10;
+z16=(8ut,13ut)+z10;
+z17=(9ut,2ut)+z10;
+%
+%
+draw z1..z2{z3-z2}--z3
+ & z3--z2{z2-z3}..z4{right}..z5{down}..z6{left}
+ & z6{right}..z7{down}..z8{left}..z9{up}
+ ..z16{z15-z12}..z11{left}..z15{z12-z15}
+ ..z13{right}..z17--z14;
+%
+labels(range 1 thru 17);
+endchar;
+
+% be
+beginchar(oct"241",36.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,36ut);
+z3=(11ut,39ut);
+z4=(5ut,0ut);
+z5=(15ut,19ut);
+z6=(28ut,18ut);
+z7=(27ut,0ut);
+z8=(4ut,19ut)+z7;
+z9=(-2ut,7ut)+z7;
+z10=(3ut,0ut)+z7;
+z11=(9.3ut,(9.3*8/9-6)*ut)+z7;
+z12=(-1ut,13ut)+z7;
+z13=(8ut,13ut)+z7;
+z14=(9ut,2ut)+z7;
+%
+%
+draw z1{an}..z2{up}..z3{left}..z1..z4{right}..z5{dir 110}
+ & z5{dir 290}
+ ..z13{z12-z9}..z8{left}..z12{z9-z12}
+ ..z10{right}..z14--z11;
+%
+%
+labels(range 1 thru 14);
+endchar;
+
+% pe
+beginchar(oct"242",33.4 ut#,19 ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-8ut,-19ut);
+z3=(-3ut,6ut);
+z4=(11ut,19ut);
+z5=(14ut,17ut);
+z6=(11ut,4ut);
+z7=(13ut,0ut);
+z8=(16ut,1ut);
+z9=(16.3ut,(16.3*17/15+(1-16*17/15))*ut);
+z10=(24ut,0ut);
+z11=(4ut,19ut)+z10;
+z12=(-2ut,7ut)+z10;
+z13=(3ut,0ut)+z10;
+z14=(9.3ut,(9.3*8/9-6)*ut)+z10;
+z15=(-1ut,13ut)+z10;
+z16=(8ut,13ut)+z10;
+z17=(9ut,2ut)+z10;
+%
+%
+draw z1--z2;
+draw z3{z1-z2}..z4{right}..z5{z6-z5}--z6{z6-z5}..z7{right}..z8
+ ..z16{z15-z12}..z11{left}..z15{z12-z15}
+ ..z13{right}..z17--z14;
+%
+%
+labels(range 1 thru 17);
+endchar;
+
+% ve
+beginchar(oct"243",35.4 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-4ut,5ut);
+z3=(2ut,0ut);
+z4=(14ut,19ut);
+z5=(27ut,18ut);
+z6=(26ut,0ut);
+z7=(4ut,19ut)+z6;
+z8=(-2ut,7ut)+z6;
+z9=(3ut,0ut)+z6;
+z10=(9.3ut,(9.3*8/9-6)*ut)+z6;
+z11=(-1ut,13ut)+z6;
+z12=(8ut,13ut)+z6;
+z13=(9ut,2ut)+z6;
+%
+%
+draw z1..z2{z2-z1}..z3{right}..z4{z1-z2}
+ & z4{dir 300}
+ ..z12{z11-z8}..z7{left}..z11{z8-z11}
+ ..z9{right}..z13--z10;
+%
+%
+labels(range 1 thru 13);
+endchar;
+
+% we
+beginchar(oct"244",44.4 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,5ut);
+z3=(0ut,0ut);
+z4=(9ut,8ut);
+z5=(11ut,19ut);
+z6=(13ut,0ut);
+z7=(22ut,19ut);
+z8=(35ut,18ut);
+z9=(35ut,0ut);
+z10=(4ut,19ut)+z9;
+z11=(-2ut,7ut)+z9;
+z12=(3ut,0ut)+z9;
+z13=(9.3ut,(9.3*8/9-6)*ut)+z9;
+z14=(-1ut,13ut)+z9;
+z15=(8ut,13ut)+z9;
+z16=(9ut,2ut)+z9;
+%
+%
+draw z1--z2..z3{right}..z4--z5
+ & z5--z4..z6{right}..z7{z5-z4}
+ & z7{dir 300}
+ ..z15{z14-z11}..z10{left}..z14{z11-z14}
+ ..z12{right}..z16--z13;
+%
+%
+labels(range 1 thru 16);
+endchar;
+
+% t
+beginchar(oct"245",52 ut#,39 ut#,0); %u-Umlaut
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,3ut);
+z3=(2ut,0ut);
+z4=(15ut,19ut);
+z5=(12ut,3ut);
+z6=(14ut,0ut);
+z7=(33ut,18ut);
+z8=(18ut,2ut);
+z9=(4ut,26ut);
+z10=(12ut,26ut);
+z11=(24ut,0ut);
+z12=(0ut,18ut)+z11;
+z13=(14ut,39ut)+z11;
+z14=(7ut,0ut)+z11;
+z15=(-6ut,14ut)+z11;
+z16=(28ut,18ut)+z11;
+%
+%
+draw z1--z2{z2-z1}..z3{right}..z4{z4-z5}
+ & z4--z5..z6{right}
+ ..z13{(0,1)}
+ & z13-- z14;
+draw z15{dir 340}..z16{dir 60};
+%
+pickup pencircle scaled 4ut;
+drawdot z9; drawdot z10;
+%
+labels(range 1 thru 16);
+endchar;
+
+% ut
+beginchar(oct"246",52 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,3ut);
+z3=(2ut,0ut);
+z4=(15ut,19ut);
+z5=(12ut,3ut);
+z6=(14ut,0ut);
+z7=(33ut,18ut);
+z8=(18ut,2ut);
+z9=(4ut,26ut);
+z10=(12ut,26ut);
+z11=(24ut,0ut);
+z12=(0ut,18ut)+z11;
+z13=(14ut,39ut)+z11;
+z14=(7ut,0ut)+z11;
+z15=(-5ut,11ut)+z11;
+z16=(28ut,18ut)+z11;
+%
+%
+draw z1--z2{z2-z1}..z3{right}..z4{z4-z5}
+ & z4--z5..z6{right}
+ ..z13{(0,1)}
+ & z13-- z14;
+draw z15{dir 340}..z16{dir 60};
+%
+labels(range 1 thru 16);
+endchar;
+
+% tt
+beginchar(oct"247",61 ut#,39 ut#,0); %u-Umlaut
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,3ut);
+z3=(2ut,0ut);
+z4=(15ut,19ut);
+z5=(12ut,3ut);
+z6=(14ut,0ut);
+z7=(33ut,18ut);
+z8=(18ut,2ut);
+z9=(4ut,26ut);
+z10=(12ut,26ut);
+z11=(23ut,0ut);
+z12=(0ut,18ut)+z11;
+z13=(14ut,39ut)+z11;
+z14=(7ut,0ut)+z11;
+z15=(-4ut,18ut)+z11;
+z16=(38ut,18ut)+z11;
+z17=(24ut,39ut)+z11;
+z18=(17ut,0ut)+z11;
+%
+%
+draw z1--z2{z2-z1}..z3{right}..z4{z4-z5}
+ & z4--z5..z6{right}
+ ..z13{(0,1)}
+ & z13-- z14;
+draw z17--z18;
+draw z15{dir 340}..z16{dir 60};
+%
+pickup pencircle scaled 4ut;
+drawdot z9; drawdot z10;
+%
+labels(range 1 thru 18);
+endchar;
+
+% utt
+beginchar(oct"250",61 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,3ut);
+z3=(2ut,0ut);
+z4=(15ut,19ut);
+z5=(12ut,3ut);
+z6=(14ut,0ut);
+z7=(33ut,18ut);
+z8=(18ut,2ut);
+z9=(4ut,26ut);
+z10=(12ut,26ut);
+z11=(23ut,0ut);
+z12=(0ut,18ut)+z11;
+z13=(14ut,39ut)+z11;
+z14=(7ut,0ut)+z11;
+z15=(-3ut,18ut)+z11;
+z16=(38ut,18ut)+z11;
+z17=(24ut,39ut)+z11;
+z18=(17ut,0ut)+z11;
+%
+%
+draw z1--z2{z2-z1}..z3{right}..z4{z4-z5}
+ & z4--z5..z6{right}
+ ..z13{(0,1)}
+ & z13-- z14;
+draw z17--z18;
+draw z15{dir 340}..z16{dir 60};
+%
+labels(range 1 thru 18);
+endchar;
+
+% te
+beginchar(oct"251",56.3 ut#,39 ut#,0); %u-Umlaut
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,3ut);
+z3=(2ut,0ut);
+z4=(15ut,19ut);
+z5=(12ut,3ut);
+z6=(14ut,0ut);
+z7=(33ut,18ut);
+z8=(18ut,2ut);
+z9=(4ut,26ut);
+z10=(12ut,26ut);
+z11=(23ut,0ut);
+z12=(0ut,18ut)+z11;
+z13=(14ut,39ut)+z11;
+z14=(7ut,0ut)+z11;
+z15=(-4ut,11ut)+z11;
+z16=(28ut,18ut)+z11;
+z17=(0ut,0ut)+z11;
+z18=(4ut,19ut)+z17+z11;
+z19=(-2ut,7ut)+z17+z11;
+z20=(3ut,0ut)+z17+z11;
+z21=(9.3ut,(9.3*8/9-6)*ut)+z17+z11;
+z22=(-1ut,13ut)+z17+z11;
+z23=(8ut,13ut)+z17+z11;
+z24=(9ut,2ut)+z17+z11;
+%
+%
+%
+draw z1--z2{z2-z1}..z3{right}..z4{z4-z5}
+ & z4--z5..z6{right}
+ ..z13{(0,1)}
+ & z13-- z14;
+draw z15{dir 340}
+ ..z23{z22-z19}..z18{left}..z22{z19-z22}
+ ..z20{right}..z24--z21;
+%
+pickup pencircle scaled 4ut;
+drawdot z9; drawdot z10;
+%
+labels(range 1 thru 24);
+endchar;
+
+% ute
+beginchar(oct"252",56.3 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,3ut);
+z3=(2ut,0ut);
+z4=(15ut,19ut);
+z5=(12ut,3ut);
+z6=(14ut,0ut);
+z7=(33ut,18ut);
+z8=(18ut,2ut);
+z9=(4ut,26ut);
+z10=(12ut,26ut);
+z11=(23ut,0ut);
+z12=(0ut,18ut)+z11;
+z13=(14ut,39ut)+z11;
+z14=(7ut,0ut)+z11;
+z15=(-4ut,11ut)+z11;
+z16=(28ut,18ut)+z11;
+z17=(0ut,0ut)+z11;
+z18=(4ut,19ut)+z17+z11;
+z19=(-2ut,7ut)+z17+z11;
+z20=(3ut,0ut)+z17+z11;
+z21=(9.3ut,(9.3*8/9-6)*ut)+z17+z11;
+z22=(-1ut,13ut)+z17+z11;
+z23=(8ut,13ut)+z17+z11;
+z24=(9ut,2ut)+z17+z11;
+%
+%
+%
+draw z1--z2{z2-z1}..z3{right}..z4{z4-z5}
+ & z4--z5..z6{right}
+ ..z13{(0,1)}
+ & z13-- z14;
+draw z15{dir 340}
+ ..z23{z22-z19}..z18{left}..z22{z19-z22}
+ ..z20{right}..z24--z21;
+%
+labels(range 1 thru 24);
+endchar;
+
+% tte
+beginchar(oct"253",64.3 ut#,39 ut#,0); %u-Umlaut
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,3ut);
+z3=(2ut,0ut);
+z4=(15ut,19ut);
+z5=(12ut,3ut);
+z6=(14ut,0ut);
+z7=(33ut,18ut);
+z8=(18ut,2ut);
+z9=(4ut,26ut);
+z10=(12ut,26ut);
+z11=(23ut,0ut);
+z12=(0ut,18ut)+z11;
+z13=(14ut,39ut)+z11;
+z14=(7ut,0ut)+z11;
+z15=(-4ut,12ut)+z11;
+z16=(38ut,18ut)+z11;
+z17=(24ut,39ut)+z11;
+z18=(17ut,0ut)+z11;
+z19=(8ut,0ut)+z11;
+z20=(4ut,19ut)+z19+z11;
+z21=(-2ut,7ut)+z19+z11;
+z22=(3ut,0ut)+z19+z11;
+z23=(9.3ut,(9.3*8/9-6)*ut)+z19+z11;
+z24=(-1ut,13ut)+z19+z11;
+z25=(8ut,13ut)+z19+z11;
+z26=(9ut,2ut)+z19+z11;
+%
+%
+%
+draw z1--z2{z2-z1}..z3{right}..z4{z4-z5}
+ & z4--z5..z6{right}
+ ..z13{(0,1)}
+ & z13-- z14;
+draw z17--z18;
+draw z15{dir 340}
+ ..z25{z24-z21}..z20{left}..z24{z21-z24}
+ ..z22{right}..z26--z23;
+%
+pickup pencircle scaled 4ut;
+drawdot z9; drawdot z10;
+%
+labels(range 1 thru 26);
+endchar;
+
+% utte
+beginchar(oct"254",64.3 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,3ut);
+z3=(2ut,0ut);
+z4=(15ut,19ut);
+z5=(12ut,3ut);
+z6=(14ut,0ut);
+z7=(33ut,18ut);
+z8=(18ut,2ut);
+z9=(4ut,26ut);
+z10=(12ut,26ut);
+z11=(23ut,0ut);
+z12=(0ut,18ut)+z11;
+z13=(14ut,39ut)+z11;
+z14=(7ut,0ut)+z11;
+z15=(-3ut,15ut)+z11;
+z16=(38ut,18ut)+z11;
+z17=(24ut,39ut)+z11;
+z18=(17ut,0ut)+z11;
+z19=(8ut,0ut)+z11;
+z20=(4ut,19ut)+z19+z11;
+z21=(-2ut,7ut)+z19+z11;
+z22=(3ut,0ut)+z19+z11;
+z23=(9.3ut,(9.3*8/9-6)*ut)+z19+z11;
+z24=(-1ut,13ut)+z19+z11;
+z25=(8ut,13ut)+z19+z11;
+z26=(9ut,2ut)+z19+z11;
+%
+%
+%
+draw z1--z2{z2-z1}..z3{right}..z4{z4-z5}
+ & z4--z5..z6{right}
+ ..z13{(0,1)}
+ & z13-- z14;
+draw z17--z18;
+draw z15{dir 340}
+ ..z25{z24-z21}..z20{left}..z24{z21-z24}
+ ..z22{right}..z26--z23;
+%
+%
+labels(range 1 thru 26);
+endchar;
+
+% Ge
+beginchar(oct"255",47.3 ut#,39ut#,19ut#);
+pickup va_pen;
+z1=(28ut,36ut);
+z2=(21ut,39ut);
+z3=(0ut,8ut);
+z4=(5ut,0ut);
+z5=(25ut,19ut);
+z6=(22ut,0ut);
+z7=(12ut,-19ut);
+z8=(8ut,-15ut);
+z9=(13ut,-7ut);
+z10=(39ut,18ut);
+z11=(38ut,0ut);
+z12=(4ut,19ut)+z11;
+z13=(-2ut,7ut)+z11;
+z14=(3ut,0ut)+z11;
+z15=(9.3ut,(9.3*8/9-6)*ut)+z11;
+z16=(-1ut,13ut)+z11;
+z17=(8ut,13ut)+z11;
+z18=(9ut,2ut)+z11;
+%
+%
+draw z1..z2{left}..z3{down}..z4{right}..z5{z5-z6}
+ & z5--z6{z6-z5}..z7{left}..z8{up}..z9{z10-z9}
+ ..z17{z16-z13}..z12{left}..z16{z13-z16}
+ ..z14{right}..z18--z15;
+labels(range 1 thru 18);
+endchar;
+
+% Je
+beginchar(oct"256",35.3 ut#,39ut#,19ut#);
+pickup va_pen;
+z1=(0ut,39ut);
+z2=(15ut,39ut);
+z3=(9ut,4ut);
+z4=(-2ut,-19ut);
+z5=(-7ut,-14ut);
+z6=(-4ut,-5ut);
+z7=(21ut,18ut);
+z8=(26ut,0ut);
+z9=(4ut,19ut)+z8;
+z10=(-2ut,7ut)+z8;
+z11=(3ut,0ut)+z8;
+z12=(9.3ut,(9.3*8/9-6)*ut)+z8;
+z13=(-1ut,13ut)+z8;
+z14=(8ut,13ut)+z8;
+z15=(9ut,2ut)+z8;
+z16=(-6ut,-16ut);
+%
+%
+draw z1--z2
+ & z2--z3{z3-z2}...z4{left};
+draw z4{left}..z6..z14{z13-z10};
+draw z14{z13-z10}..z9{left}..z13{z10-z13}
+ ..z11{right}..z15--z12;
+labels(range 1 thru 16);
+endchar;
+
+% Ze
+beginchar(oct"257",42.3 ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(7ut,39ut);
+z2=(32ut,39ut);
+z3=(0ut,0ut);
+z4=(22ut,0ut);
+z5=(27ut,0ut);
+z6=(41ut,18ut);
+z7=(33ut,0ut);
+z8=(4ut,19ut)+z7;
+z9=(-2ut,7ut)+z7;
+z10=(3ut,0ut)+z7;
+z11=(9.3ut,(9.3*8/9-6)*ut)+z7;
+z12=(-1ut,13ut)+z7;
+z13=(8ut,13ut)+z7;
+z14=(9ut,2ut)+z7;
+%
+%
+draw z1--z2
+ & z2--z3
+ & z3{dir 20}..z4{right}--z5;
+draw z5{(1,0)}..z13{z12-z9}..z8{left}..z12{z9-z12}
+ ..z10{right}..z14--z11;
+labels(range 1 thru 14);
+endchar;
diff --git a/fonts/twcal/twlig4.mf b/fonts/twcal/twlig4.mf
new file mode 100644
index 0000000000..8ac662498e
--- /dev/null
+++ b/fonts/twcal/twlig4.mf
@@ -0,0 +1,716 @@
+
+% TW -- ligatures 4. generation (C)1991 Thomas Weinmann
+
+
+% zt
+beginchar(oct"260",48 ut#,39 ut#,0ut#);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(11ut,0ut);
+z3=(-5ut,0ut);
+z4=(13ut,19ut);
+z5=((18*7/8)*ut,(18-13.7*8/7)*ut);
+z6=(20ut,0ut);
+z7=(0ut,18ut)+z6;
+z8=(14ut,39ut)+z6;
+z9=(7ut,0ut)+z6;
+z10=(-6ut,11ut)+z6;
+z11=(28ut,18ut)+z6;
+%
+%
+draw z1--z4--z3--z2
+ ..z8{(0,1)}
+ & z8-- z9;
+draw z10{dir 340}..z11{dir 60};
+%
+%
+labels(range 1 thru 11);
+endchar;
+
+% zte
+beginchar(oct"261",54.4 ut#,39 ut#,0ut#);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(11ut,0ut);
+z3=(-5ut,0ut);
+z4=(13ut,19ut);
+z5=((18*7/8)*ut,(18-13.7*8/7)*ut);
+z6=(19ut,0ut);
+z7=(0ut,18ut)+z6;
+z8=(14ut,39ut)+z6;
+z9=(7ut,0ut)+z6;
+z10=(-5ut,11ut)+z6;
+z11=(28ut,18ut)+z6;
+z12=(26ut,0ut)+z6;
+z13=(4ut,19ut)+z12;
+z14=(-2ut,7ut)+z12;
+z15=(3ut,0ut)+z12;
+z16=(9.3ut,(9.3*8/9-6)*ut)+z12;
+z17=(-1ut,13ut)+z12;
+z18=(8ut,13ut)+z12;
+z19=(9ut,2ut)+z12;
+%
+%
+draw z1--z4--z3--z2
+ ..z8{(0,1)}
+ & z8-- z9;
+draw z10{dir 340}
+ ..z18{z17-z14}..z13{left}..z17{z14-z17}
+ ..z15{right}..z19--z16;
+%
+%
+labels(range 1 thru 19);
+endchar;
+
+% tet
+beginchar(oct"262",90 ut#,39 ut#,0); %u-Umlaut
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,3ut);
+z3=(2ut,0ut);
+z4=(15ut,19ut);
+z5=(12ut,3ut);
+z6=(14ut,0ut);
+z7=(33ut,18ut);
+z8=(18ut,2ut);
+z9=(4ut,26ut);
+z10=(12ut,26ut);
+z11=(23ut,0ut);
+z12=(0ut,18ut)+z11;
+z13=(14ut,39ut)+z11;
+z14=(7ut,0ut)+z11;
+z15=(-4ut,11ut)+z11;
+z16=(28ut,18ut)+z11;
+z17=(1ut,0ut)+z11;
+z18=(4ut,19ut)+z17+z11;
+z19=(-2ut,7ut)+z17+z11;
+z20=(3ut,0ut)+z17+z11;
+z21=(9.3ut,(9.3*8/9-6)*ut)+z17+z11;
+z22=(-1ut,13ut)+z17+z11;
+z23=(8ut,13ut)+z17+z11;
+z24=(9ut,2ut)+z17+z11;
+z25=(15ut,0ut)+z17+z11;
+z26=(0ut,18ut)+z25;
+z27=(14ut,39ut)+z25;
+z28=(7ut,0ut)+z25;
+z29=(-3ut,15ut)+z25;
+z30=(28ut,18ut)+z25;
+%
+%
+draw z1--z2{z2-z1}..z3{right}..z4{z4-z5}
+ & z4--z5..z6{right}
+ ..z13{(0,1)}
+ & z13-- z14;
+draw z15{dir 340}
+ ..z23{z22-z19}..z18{left}..z22{z19-z22}
+ ..z20{right}..z24
+ ..z27{(0,1)}
+ & z27-- z28;
+draw z29{dir 340}..z30{dir 60};
+%
+pickup pencircle scaled 4ut;
+drawdot z9; drawdot z10;
+%
+labels(range 1 thru 30);
+endchar;
+
+% utet
+beginchar(oct"263",90 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,3ut);
+z3=(2ut,0ut);
+z4=(15ut,19ut);
+z5=(12ut,3ut);
+z6=(14ut,0ut);
+z7=(33ut,18ut);
+z8=(18ut,2ut);
+z9=(4ut,26ut);
+z10=(12ut,26ut);
+z11=(23ut,0ut);
+z12=(0ut,18ut)+z11;
+z13=(14ut,39ut)+z11;
+z14=(7ut,0ut)+z11;
+z15=(-4ut,11ut)+z11;
+z16=(28ut,18ut)+z11;
+z17=(1ut,0ut)+z11;
+z18=(4ut,19ut)+z17+z11;
+z19=(-2ut,7ut)+z17+z11;
+z20=(3ut,0ut)+z17+z11;
+z21=(9.3ut,(9.3*8/9-6)*ut)+z17+z11;
+z22=(-1ut,13ut)+z17+z11;
+z23=(8ut,13ut)+z17+z11;
+z24=(9ut,2ut)+z17+z11;
+z25=(15ut,0ut)+z17+z11;
+z26=(0ut,18ut)+z25;
+z27=(14ut,39ut)+z25;
+z28=(7ut,0ut)+z25;
+z29=(-3ut,15ut)+z25;
+z30=(28ut,18ut)+z25;
+%
+%
+draw z1--z2{z2-z1}..z3{right}..z4{z4-z5}
+ & z4--z5..z6{right}
+ ..z13{(0,1)}
+ & z13-- z14;
+draw z15{dir 340}
+ ..z23{z22-z19}..z18{left}..z22{z19-z22}
+ ..z20{right}..z24
+ ..z27{(0,1)}
+ & z27-- z28;
+draw z29{dir 340}..z30{dir 60};
+%
+pickup pencircle scaled 4ut;
+%
+labels(range 1 thru 30);
+endchar;
+
+% tete
+beginchar(oct"264",93 ut#,39 ut#,0); %u-Umlaut
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,3ut);
+z3=(2ut,0ut);
+z4=(15ut,19ut);
+z5=(12ut,3ut);
+z6=(14ut,0ut);
+z7=(33ut,18ut);
+z8=(18ut,2ut);
+z9=(4ut,26ut);
+z10=(12ut,26ut);
+z11=(23ut,0ut);
+z12=(0ut,18ut)+z11;
+z13=(14ut,39ut)+z11;
+z14=(7ut,0ut)+z11;
+z15=(-4ut,11ut)+z11;
+z16=(28ut,18ut)+z11;
+z17=(0ut,0ut)+z11;
+z18=(4ut,19ut)+z17+z11;
+z19=(-2ut,7ut)+z17+z11;
+z20=(3ut,0ut)+z17+z11;
+z21=(9.3ut,(9.3*8/9-6)*ut)+z17+z11;
+z22=(-1ut,13ut)+z17+z11;
+z23=(8ut,13ut)+z17+z11;
+z24=(9ut,2ut)+z17+z11;
+z25=(15ut,0ut)+z17+z11;
+z26=(0ut,18ut)+z25;
+z27=(14ut,39ut)+z25;
+z28=(7ut,0ut)+z25;
+z29=(-3ut,12ut)+z25;
+z30=(28ut,18ut)+z25;
+z31=(23ut,0ut)+z25;
+z32=(4ut,19ut)+z31;
+z33=(-2ut,7ut)+z31;
+z34=(3ut,0ut)+z31;
+z35=(9.3ut,(9.3*8/9-6)*ut)+z31;
+z36=(-1ut,13ut)+z31;
+z37=(8ut,13ut)+z31;
+z38=(9ut,2ut)+z31;
+%
+%
+%
+draw z1--z2{z2-z1}..z3{right}..z4{z4-z5}
+ & z4--z5..z6{right}
+ ..z13{(0,1)}
+ & z13-- z14;
+draw z15{dir 340}
+ ..z23{z22-z19}..z18{left}..z22{z19-z22}
+ ..z20{right}..z24
+ ..z27{(0,1)}
+ & z27-- z28;
+draw z29{dir 340}
+ ..z37{z36-z33}..z32{left}..z36{z33-z36}
+ ..z34{right}..z38--z35;
+%
+pickup pencircle scaled 4ut;
+drawdot z9; drawdot z10;
+%
+labels(range 1 thru 38);
+endchar;
+
+% utete
+beginchar(oct"265",93 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,3ut);
+z3=(2ut,0ut);
+z4=(15ut,19ut);
+z5=(12ut,3ut);
+z6=(14ut,0ut);
+z7=(33ut,18ut);
+z8=(18ut,2ut);
+z9=(4ut,26ut);
+z10=(12ut,26ut);
+z11=(23ut,0ut);
+z12=(0ut,18ut)+z11;
+z13=(14ut,39ut)+z11;
+z14=(7ut,0ut)+z11;
+z15=(-4ut,11ut)+z11;
+z16=(28ut,18ut)+z11;
+z17=(0ut,0ut)+z11;
+z18=(4ut,19ut)+z17+z11;
+z19=(-2ut,7ut)+z17+z11;
+z20=(3ut,0ut)+z17+z11;
+z21=(9.3ut,(9.3*8/9-6)*ut)+z17+z11;
+z22=(-1ut,13ut)+z17+z11;
+z23=(8ut,13ut)+z17+z11;
+z24=(9ut,2ut)+z17+z11;
+z25=(15ut,0ut)+z17+z11;
+z26=(0ut,18ut)+z25;
+z27=(14ut,39ut)+z25;
+z28=(7ut,0ut)+z25;
+z29=(-3ut,12ut)+z25;
+z30=(28ut,18ut)+z25;
+z31=(23ut,0ut)+z25;
+z32=(4ut,19ut)+z31;
+z33=(-2ut,7ut)+z31;
+z34=(3ut,0ut)+z31;
+z35=(9.3ut,(9.3*8/9-6)*ut)+z31;
+z36=(-1ut,13ut)+z31;
+z37=(8ut,13ut)+z31;
+z38=(9ut,2ut)+z31;
+%
+%
+%
+draw z1--z2{z2-z1}..z3{right}..z4{z4-z5}
+ & z4--z5..z6{right}
+ ..z13{(0,1)}
+ & z13-- z14;
+draw z15{dir 340}
+ ..z23{z22-z19}..z18{left}..z22{z19-z22}
+ ..z20{right}..z24
+ ..z27{(0,1)}
+ & z27-- z28;
+draw z29{dir 340}
+ ..z37{z36-z33}..z32{left}..z36{z33-z36}
+ ..z34{right}..z38--z35;
+%
+pickup pencircle scaled 4ut;
+%
+labels(range 1 thru 38);
+endchar;
+
+% get
+beginchar(oct"266",68 ut#,19 ut#,19ut#);
+pickup va_pen;
+%
+z1=(11ut,13ut);
+z2=(1ut,0ut);
+z3=(-5ut,7ut);
+z4=(5ut,19ut);
+z10=(12ut,19ut);
+z11=(7ut,-10ut);
+z12=(0ut,-19ut);
+z13=(-4ut,-15ut);
+z14=(0ut,-9ut);
+z15=(29ut,18ut);
+z16=(24ut,0ut);
+z17=(4ut,19ut)+z16;
+z18=(-2ut,7ut)+z16;
+z19=(3ut,0ut)+z16;
+z20=(9.3ut,(9.3*8/9-6)*ut)+z16;
+z21=(-1ut,13ut)+z16;
+z22=(8ut,13ut)+z16;
+z23=(9ut,2ut)+z16;
+z24=(16ut,0ut)+z16;
+z25=(0ut,18ut)+z24;
+z26=(14ut,39ut)+z24;
+z27=(7ut,0ut)+z24;
+z28=(-2ut,16ut)+z24;
+z29=(28ut,18ut)+z24;
+%
+%
+draw z1{down}..z2{left}..z3{up}..z4{right}..cycle;
+draw z10--z11{z11-z10}..z12{left}..z13{up}..z14
+ ..z22{z21-z18}..z17{left}..z21{z18-z21}
+ ..z19{right}..z23
+ ..z26{(0,1)}
+ & z26-- z27;
+draw z28{dir 340}..z29{dir 60};
+%
+%
+labels(range 1 thru 29);
+endchar;
+
+% gete
+beginchar(oct"267",73.3 ut#,19 ut#,19ut#);
+pickup va_pen;
+%
+z1=(11ut,13ut);
+z2=(1ut,0ut);
+z3=(-5ut,7ut);
+z4=(5ut,19ut);
+z10=(12ut,19ut);
+z11=(7ut,-10ut);
+z12=(0ut,-19ut);
+z13=(-4ut,-15ut);
+z14=(0ut,-9ut);
+z15=(29ut,18ut);
+z16=(24ut,0ut);
+z17=(4ut,19ut)+z16;
+z18=(-2ut,7ut)+z16;
+z19=(3ut,0ut)+z16;
+z20=(9.3ut,(9.3*8/9-6)*ut)+z16;
+z21=(-1ut,13ut)+z16;
+z22=(8ut,13ut)+z16;
+z23=(9ut,2ut)+z16;
+z24=(17ut,0ut)+z16;
+z25=(0ut,18ut)+z24;
+z26=(14ut,39ut)+z24;
+z27=(7ut,0ut)+z24;
+z28=(-3ut,15ut)+z24;
+z29=(28ut,18ut)+z24;
+z30=(23ut,0ut)+z24;
+z31=(4ut,19ut)+z30;
+z32=(-2ut,7ut)+z30;
+z33=(3ut,0ut)+z30;
+z34=(9.3ut,(9.3*8/9-6)*ut)+z30;
+z35=(-1ut,13ut)+z30;
+z36=(8ut,13ut)+z30;
+z37=(9ut,2ut)+z30;
+%
+%
+%
+%
+draw z1{down}..z2{left}..z3{up}..z4{right}..cycle;
+draw z10--z11{z11-z10}..z12{left}..z13{up}..z14
+ ..z22{z21-z18}..z17{left}..z21{z18-z21}
+ ..z19{right}..z23--z20
+ ..z26{(0,1)}
+ & z26-- z27;
+draw z28{dir 340}
+ ..z36{z35-z32}..z31{left}..z35{z32-z35}
+ ..z33{right}..z37--z34;
+%
+%
+labels(range 1 thru 37);
+endchar;
+
+% „t
+beginchar(oct"270",53 ut#,39ut#,0); %a-Umlaut
+pickup va_pen;
+z1=(5ut,19ut);
+z2=(-4ut,6ut);
+z3=(1ut,0ut);
+z4=(11ut,13ut);
+z5=(13ut,19ut);
+z6=(10ut,5ut);
+z7=(12ut,0ut);
+z8=(30ut,18ut);
+z9=(16ut,2ut);
+z10=(3ut,26ut);
+z11=(10ut,26ut);
+z12=(25ut,0ut);
+z13=(0ut,18ut)+z12;
+z14=(14ut,39ut)+z12;
+z15=(7ut,0ut)+z12;
+z16=(-3ut,13ut)+z12;
+z17=(28ut,18ut)+z12;
+%
+%
+draw z1{left}..z2{down}..z3{right}..z4{up}..cycle;
+draw z5--z6{z6-z5}..z7{right}
+ ..z14{(0,1)}
+ & z14-- z15;
+draw z16{dir 340}..z17{dir 60};
+%
+pickup pencircle scaled 4ut;
+drawdot z10; drawdot z11;
+%
+labels(range 1 thru 17);
+endchar;
+
+% at
+beginchar(oct"271",53 ut#,39ut#,0);
+pickup va_pen;
+z1=(5ut,19ut);
+z2=(-4ut,6ut);
+z3=(1ut,0ut);
+z4=(11ut,13ut);
+z5=(13ut,19ut);
+z6=(10ut,5ut);
+z7=(12ut,0ut);
+z8=(30ut,18ut);
+z9=(16ut,2ut);
+z10=(3ut,26ut);
+z11=(10ut,26ut);
+z12=(25ut,0ut);
+z13=(0ut,18ut)+z12;
+z14=(14ut,39ut)+z12;
+z15=(7ut,0ut)+z12;
+z16=(-4ut,16ut)+z12;
+z17=(28ut,18ut)+z12;
+%
+%
+draw z1{left}..z2{down}..z3{right}..z4{up}..cycle;
+draw z5--z6{z6-z5}..z7{right}
+ ..z14{(0,1)}
+ & z14-- z15;
+draw z16{dir 340}..z17{dir 60};
+%
+pickup pencircle scaled 4ut;
+%
+labels(range 1 thru 17);
+endchar;
+
+% „tt
+beginchar(oct"272",55 ut#, 39 ut#,0); %a-Umlaut
+pickup va_pen;
+z1=(5ut,19ut);
+z2=(-4ut,6ut);
+z3=(1ut,0ut);
+z4=(11ut,13ut);
+z5=(13ut,19ut);
+z6=(10ut,5ut);
+z7=(12ut,0ut);
+z8=(30ut,18ut);
+z9=(16ut,2ut);
+z10=(3ut,26ut);
+z11=(10ut,26ut);
+z12=(17ut,0ut);
+z13=(0ut,18ut)+z12;
+z14=(14ut,39ut)+z12;
+z15=(7ut,0ut)+z12;
+z16=(-2ut,11ut)+z12;
+z17=(38ut,18ut)+z12;
+z18=(24ut,39ut)+z12;
+z19=(17ut,0ut)+z12;
+%
+%
+draw z1{left}..z2{down}..z3{right}..z4{up}..cycle;
+draw z5--z6{z6-z5}..z7{right}
+ ..z14{(0,1)}
+ & z14-- z15;
+draw z18--z19;
+draw z16{dir 340}..z17{dir 60};
+%
+pickup pencircle scaled 4ut;
+drawdot z10; drawdot z11;
+%
+labels(range 1 thru 19);
+endchar;
+
+% att
+beginchar(oct"273",55 ut#, 39 ut#,0);
+pickup va_pen;
+z1=(5ut,19ut);
+z2=(-4ut,6ut);
+z3=(1ut,0ut);
+z4=(11ut,13ut);
+z5=(13ut,19ut);
+z6=(10ut,5ut);
+z7=(12ut,0ut);
+z8=(30ut,18ut);
+z9=(16ut,2ut);
+z10=(3ut,26ut);
+z11=(10ut,26ut);
+z12=(17ut,0ut);
+z13=(0ut,18ut)+z12;
+z14=(14ut,39ut)+z12;
+z15=(7ut,0ut)+z12;
+z16=(-2ut,11ut)+z12;
+z17=(38ut,18ut)+z12;
+z18=(24ut,39ut)+z12;
+z19=(17ut,0ut)+z12;
+%
+%
+draw z1{left}..z2{down}..z3{right}..z4{up}..cycle;
+draw z5--z6{z6-z5}..z7{right}
+ ..z14{(0,1)}
+ & z14-- z15;
+draw z18--z19;
+draw z16{dir 340}..z17{dir 60};
+%
+pickup pencircle scaled 4ut;
+%
+labels(range 1 thru 19);
+endchar;
+
+% „te
+beginchar(oct"274",58.3 ut#,39ut#,0); %a-Umlaut
+pickup va_pen;
+z1=(5ut,19ut);
+z2=(-4ut,6ut);
+z3=(1ut,0ut);
+z4=(11ut,13ut);
+z5=(13ut,19ut);
+z6=(10ut,5ut);
+z7=(12ut,0ut);
+z8=(30ut,18ut);
+z9=(16ut,2ut);
+z10=(3ut,26ut);
+z11=(10ut,26ut);
+z12=(23ut,0ut);
+z13=(0ut,18ut)+z12;
+z14=(14ut,39ut)+z12;
+z15=(7ut,0ut)+z12;
+z16=(-6ut,14ut)+z12;
+z17=(28ut,18ut)+z12;
+z18=(26ut,0ut)+z12;
+z19=(4ut,19ut)+z18;
+z20=(-2ut,7ut)+z18;
+z21=(3ut,0ut)+z18;
+z22=(9.3ut,(9.3*8/9-6)*ut)+z18;
+z23=(-1ut,13ut)+z18;
+z24=(8ut,13ut)+z18;
+z25=(9ut,2ut)+z18;
+%
+%
+%
+draw z1{left}..z2{down}..z3{right}..z4{up}..cycle;
+draw z5--z6{z6-z5}..z7{right}
+ ..z14{(0,1)}
+ & z14-- z15;
+draw z16{dir 340}
+ ..z24{z23-z20}..z19{left}..z23{z20-z23}
+ ..z21{right}..z25--z22;
+%
+pickup pencircle scaled 4ut;
+drawdot z10; drawdot z11;
+%
+labels(range 1 thru 25);
+endchar;
+
+% ate
+beginchar(oct"275",58.3 ut#,39ut#,0);
+pickup va_pen;
+z1=(5ut,19ut);
+z2=(-4ut,6ut);
+z3=(1ut,0ut);
+z4=(11ut,13ut);
+z5=(13ut,19ut);
+z6=(10ut,5ut);
+z7=(12ut,0ut);
+z8=(30ut,18ut);
+z9=(16ut,2ut);
+z10=(3ut,26ut);
+z11=(10ut,26ut);
+z12=(23ut,0ut);
+z13=(0ut,18ut)+z12;
+z14=(14ut,39ut)+z12;
+z15=(7ut,0ut)+z12;
+z16=(-6ut,13ut)+z12;
+z17=(28ut,18ut)+z12;
+z18=(26ut,0ut)+z12;
+z19=(4ut,19ut)+z18;
+z20=(-2ut,7ut)+z18;
+z21=(3ut,0ut)+z18;
+z22=(9.3ut,(9.3*8/9-6)*ut)+z18;
+z23=(-1ut,13ut)+z18;
+z24=(8ut,13ut)+z18;
+z25=(9ut,2ut)+z18;
+%
+%
+draw z1{left}..z2{down}..z3{right}..z4{up}..cycle;
+draw z5--z6{z6-z5}..z7{right}
+ ..z14{(0,1)}
+ & z14-- z15;
+draw z16{dir 340}
+ ..z24{z23-z20}..z19{left}..z23{z20-z23}
+ ..z21{right}..z25--z22;
+%
+pickup pencircle scaled 4ut;
+%
+labels(range 1 thru 25);
+endchar;
+
+% „tte
+beginchar(oct"276",60.3 ut#, 39 ut#,0); %a-Umlaut
+pickup va_pen;
+z1=(5ut,19ut);
+z2=(-4ut,6ut);
+z3=(1ut,0ut);
+z4=(11ut,13ut);
+z5=(13ut,19ut);
+z6=(10ut,5ut);
+z7=(12ut,0ut);
+z8=(30ut,18ut);
+z9=(16ut,2ut);
+z10=(3ut,26ut);
+z11=(10ut,26ut);
+z12=(17ut,0ut);
+z13=(0ut,18ut)+z12;
+z14=(14ut,39ut)+z12;
+z15=(7ut,0ut)+z12;
+z16=(-2ut,11ut)+z12;
+z17=(38ut,18ut)+z12;
+z18=(24ut,39ut)+z12;
+z19=(17ut,0ut)+z12;
+z20=(34ut,0ut)+z12;
+z21=(4ut,19ut)+z20;
+z22=(-2ut,7ut)+z20;
+z23=(3ut,0ut)+z20;
+z24=(9.3ut,(9.3*8/9-6)*ut)+z20;
+z25=(-1ut,13ut)+z20;
+z26=(8ut,13ut)+z20;
+z27=(9ut,2ut)+z20;
+%
+%
+%
+draw z1{left}..z2{down}..z3{right}..z4{up}..cycle;
+draw z5--z6{z6-z5}..z7{right}
+ ..z14{(0,1)}
+ & z14-- z15;
+draw z18--z19;
+draw z16{dir 340}
+ ..z26{z25-z22}..z21{left}..z25{z22-z25}
+ ..z23{right}..z27--z24;
+%
+pickup pencircle scaled 4ut;
+drawdot z10; drawdot z11;
+%
+labels(range 1 thru 27);
+endchar;
+
+% atte
+beginchar(oct"277",60.3 ut#, 39 ut#,0);
+pickup va_pen;
+z1=(5ut,19ut);
+z2=(-4ut,6ut);
+z3=(1ut,0ut);
+z4=(11ut,13ut);
+z5=(13ut,19ut);
+z6=(10ut,5ut);
+z7=(12ut,0ut);
+z8=(30ut,18ut);
+z9=(16ut,2ut);
+z10=(3ut,26ut);
+z11=(10ut,26ut);
+z12=(17ut,0ut);
+z13=(0ut,18ut)+z12;
+z14=(14ut,39ut)+z12;
+z15=(7ut,0ut)+z12;
+z16=(-2ut,11ut)+z12;
+z17=(38ut,18ut)+z12;
+z18=(24ut,39ut)+z12;
+z19=(17ut,0ut)+z12;
+z20=(34ut,0ut)+z12;
+z21=(4ut,19ut)+z20;
+z22=(-2ut,7ut)+z20;
+z23=(3ut,0ut)+z20;
+z24=(9.3ut,(9.3*8/9-6)*ut)+z20;
+z25=(-1ut,13ut)+z20;
+z26=(8ut,13ut)+z20;
+z27=(9ut,2ut)+z20;
+%
+%
+%
+draw z1{left}..z2{down}..z3{right}..z4{up}..cycle;
+draw z5--z6{z6-z5}..z7{right}
+ ..z14{(0,1)}
+ & z14-- z15;
+draw z18--z19;
+draw z16{dir 340}
+ ..z26{z25-z22}..z21{left}..z25{z22-z25}
+ ..z23{right}..z27--z24;
+%
+pickup pencircle scaled 4ut;
+%
+labels(range 1 thru 27);
+endchar;
diff --git a/fonts/twcal/twlig5.mf b/fonts/twcal/twlig5.mf
new file mode 100644
index 0000000000..f7296170b6
--- /dev/null
+++ b/fonts/twcal/twlig5.mf
@@ -0,0 +1,566 @@
+
+% TW -- ligatures 5. generation (C)1991 Thomas Weinmann
+
+
+% h”
+beginchar(oct"300",55 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(10ut,36ut);
+z3=(7ut,39ut);
+z4=(3ut,34ut);
+z5=(-4ut,0ut);
+z6=(11ut,19ut);
+z7=(13ut,15ut);
+z8=(11ut,3ut);
+z9=(17ut,2ut);
+z10=(17.3ut,((17.3*8/7+(2-17.3*8/7))+0.3)*ut);
+z11=(30ut,0ut);
+z12=(11ut,16ut)+z11;
+z13=(2ut,0ut)+z11;
+z14=(-4ut,5ut)+z11;
+z15=(5ut,19ut)+z11;
+z16=(13ut,19ut)+z11;
+z17=(25ut,18ut)+z11;
+z18=(5ut,26ut)+z11;
+z19=(11ut,26ut)+z11;
+z20=(-1ut,16ut)+z11;
+%
+%
+draw z1{an}..z2{up}..z3{left}..z4..z1--z5
+ & z5{z1-z5}..z6{right}..z7{down}..z8{down}..z9..z20;
+draw z16..z12{dir -75}..z13{left}..z14{up}
+ ..z15{right}..z12{dir -75}...z17{dir 60};
+%
+pickup pencircle scaled 4ut;
+drawdot z18;drawdot z19;
+%
+%
+labels(range 1 thru 20);
+endchar;
+
+% nt
+beginchar(oct"301",54 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-4ut,0ut);
+z3=(10ut,19ut);
+z4=(15ut,15ut);
+z5=(12ut,3ut);
+z6=(15ut,0ut);
+z7=(18ut,1ut);
+z8=(18.3ut,(18.3*17/16+(1-9*17/8))*ut);
+z9=(0ut,0ut);
+z10=(26ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,39ut)+z10;
+z13=(7ut,0ut)+z10;
+z14=(-5ut,13ut)+z10;
+z15=(28ut,18ut)+z10;
+%
+%
+draw z1--z2
+ & z2{z1-z2}..z3{right}..z4{down}--z5..z6{right}..z7
+ ..z12{(0,1)}
+ & z12-- z13;
+draw z14{dir 340}..z15{dir 60};
+%
+%
+labels(range 1 thru 15);
+endchar;
+
+% nte
+beginchar(oct"302",61.3 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-4ut,0ut);
+z3=(10ut,19ut);
+z4=(15ut,15ut);
+z5=(12ut,3ut);
+z6=(15ut,0ut);
+z7=(18ut,1ut);
+z8=(18.3ut,(18.3*17/16+(1-9*17/8))*ut);
+z9=(0ut,0ut);
+z10=(26ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,39ut)+z10;
+z13=(7ut,0ut)+z10;
+z14=(-5ut,18ut)+z10;
+z15=(28ut,18ut)+z10;
+z16=(0ut,0ut);
+z17=z16;
+z18=z17;
+z19=z18;
+z20=(26ut,0ut)+z10;
+z21=(4ut,19ut)+z20;
+z22=(-2ut,7ut)+z20;
+z23=(3ut,0ut)+z20;
+z24=(9.3ut,(9.3*8/9-6)*ut)+z20;
+z25=(-1ut,13ut)+z20;
+z26=(8ut,13ut)+z20;
+z27=(9ut,2ut)+z20;
+%
+%
+%
+draw z1--z2
+ & z2{z1-z2}..z3{right}..z4{down}--z5..z6{right}..z7
+ ..z12{(0,1)}
+ & z12-- z13;
+draw z14{dir 340}
+ ..z26{z25-z22}..z21{left}..z25{z22-z25}
+ ..z23{right}..z27--z24;
+%
+%
+labels(range 1 thru 27);
+endchar;
+
+% Ke
+beginchar(oct"303",40.3 ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(8ut,39ut);
+z2=(0ut,0ut);
+z3=(31ut,39ut);
+z4=(4ut,20ut);
+z5=(17ut,2ut);
+z6=(21ut,0ut);
+z7=(41ut,18ut);
+z8=(26ut,3ut);
+z9=(0ut,0ut);
+z10=(31ut,0ut);
+z11=(4ut,19ut)+z10;
+z12=(-2ut,7ut)+z10;
+z13=(3ut,0ut)+z10;
+z14=(9.3ut,(9.3*8/9-6)*ut)+z10;
+z15=(-1ut,13ut)+z10;
+z16=(8ut,13ut)+z10;
+z17=(9ut,2ut)+z10;
+%
+%
+draw z1--z2;
+draw z3..z4
+ & z4--z5..z6{(1,0)}
+ ..z16{z15-z12}..z11{left}..z15{z12-z15}
+ ..z13{right}..z17--z14;
+labels(range 1 thru 17);
+endchar;
+
+% it
+beginchar(oct"304",36 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-4ut,4ut);
+z3=(-1ut,0ut);
+z4=(3ut,2ut);
+z5=(3.3ut,2.3ut);
+z6=(2.5ut,28ut);
+z7=(8ut,0ut);
+z8=(0ut,18ut)+z7;
+z9=(14ut,39ut)+z7;
+z10=(7ut,0ut)+z7;
+z11=(-3ut,12ut)+z7;
+z12=(28ut,18ut)+z7;
+%
+%
+draw z1--z2..z3{right}
+ ..z9{(0,1)}
+ & z9-- z10;
+draw z11{dir 340}..z12{dir 60};
+%pickup va_pen_big;
+pickup pencircle scaled 4ut;
+drawdot z6;
+%
+%
+labels(range 1 thru 12);
+endchar;
+
+% ite
+beginchar(oct"305",42.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-4ut,4ut);
+z3=(-1ut,0ut);
+z4=(3ut,2ut);
+z5=(3.3ut,2.3ut);
+z6=(2.5ut,28ut);
+z7=(7ut,0ut);
+z8=(0ut,18ut)+z7;
+z9=(14ut,39ut)+z7;
+z10=(7ut,0ut)+z7;
+z11=(-2ut,13ut)+z7;
+z12=(28ut,18ut)+z7;
+z13=(33ut,0ut);
+z14=(4ut,19ut)+z13;
+z15=(-2ut,7ut)+z13;
+z16=(3ut,0ut)+z13;
+z17=(9.3ut,(9.3*8/9-6)*ut)+z13;
+z18=(-1ut,13ut)+z13;
+z19=(8ut,13ut)+z13;
+z20=(9ut,2ut)+z13;
+%
+%
+%
+draw z1--z2..z3{right}
+ ..z9{(0,1)}
+ & z9-- z10;
+draw z11{dir 340}
+ ..z19{z18-z15}..z14{left}..z18{z15-z18}
+ ..z16{right}..z20--z17;
+%pickup va_pen_big;
+pickup pencircle scaled 4ut;
+drawdot z6;
+%
+%
+labels(range 1 thru 20);
+endchar;
+
+% itt
+beginchar(oct"306",48 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-4ut,4ut);
+z3=(-1ut,0ut);
+z4=(3ut,2ut);
+z5=(3.3ut,2.3ut);
+z6=(2.5ut,28ut);
+z7=(10ut,0ut);
+z8=(0ut,18ut)+z7;
+z9=(14ut,39ut)+z7;
+z10=(7ut,0ut)+z7;
+z11=(-4ut,13ut)+z7;
+z12=(38ut,18ut)+z7;
+z13=(24ut,39ut)+z7;
+z14=(17ut,0ut)+z7;
+%
+%
+draw z1--z2..z3{right}..z4
+ ..z9{(0,1)}
+ & z9-- z10;
+draw z13--z14;
+draw z11{dir 340}..z12{dir 60};
+%pickup va_pen_big;
+pickup pencircle scaled 4ut;
+drawdot z6;
+%
+%
+labels(range 1 thru 14);
+endchar;
+
+% itte
+beginchar(oct"307",54.3 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-4ut,4ut);
+z3=(-1ut,0ut);
+z4=(3ut,2ut);
+z5=(3.3ut,2.3ut);
+z6=(2.5ut,28ut);
+z7=(11ut,0ut);
+z8=(0ut,18ut)+z7;
+z9=(14ut,39ut)+z7;
+z10=(7ut,0ut)+z7;
+z11=(-4ut,17ut)+z7;
+z12=(38ut,18ut)+z7;
+z13=(24ut,39ut)+z7;
+z14=(17ut,0ut)+z7;
+z15=(44ut,0ut);
+z16=(4ut,19ut)+z15;
+z17=(-2ut,7ut)+z15;
+z18=(3ut,0ut)+z15;
+z19=(9.3ut,(9.3*8/9-6)*ut)+z15;
+z20=(-1ut,13ut)+z15;
+z21=(8ut,13ut)+z15;
+z22=(9ut,2ut)+z15;
+%
+%
+%
+draw z1--z2..z3{right}..z4
+ ..z9{(0,1)}
+ & z9-- z10;
+draw z13--z14;
+draw z11{dir 340}
+ ..z21{z20-z17}..z16{left}..z20{z17-z20}
+ ..z18{right}..z22--z19;
+%pickup va_pen_big;
+pickup pencircle scaled 4ut;
+drawdot z6;
+%
+%
+labels(range 1 thru 22);
+endchar;
+
+% kt
+beginchar(oct"310", 48 ut#, 39ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(11ut,36ut);
+z3=(8ut,39ut);
+z4=(1ut,28ut);
+z5=(-4ut,0ut);
+z6=(10ut,19ut);
+z7=(11ut,17ut);
+z8=(3ut,9ut);
+z9=(11ut,0ut);
+z10=(16.3ut,(16.3*16/13+(2-16*16/13))*ut);
+z11=(16ut,2ut);
+z12=(20ut,0ut);
+z13=(0ut,18ut)+z12;
+z14=(14ut,39ut)+z12;
+z15=(7ut,0ut)+z12;
+z16=(-2ut,15ut)+z12;
+z17=(28ut,18ut)+z12;
+%
+%
+draw z1{an}..z2{up}..z3{left}...z4{z5-z4}--z5
+ & z5{z1-z5}..z6{dir -20}..z7{down}..z8
+ & z8..z9{right}..z11
+ ..z14{(0,1)}
+ & z14-- z15;
+draw z16{dir 340}..z17{dir 60};
+%
+%
+labels(range 1 thru 17);
+endchar;
+
+% kte
+beginchar(oct"311", 55.3 ut#, 39ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(11ut,36ut);
+z3=(8ut,39ut);
+z4=(1ut,28ut);
+z5=(-4ut,0ut);
+z6=(10ut,19ut);
+z7=(11ut,17ut);
+z8=(3ut,9ut);
+z9=(11ut,0ut);
+z10=(16.3ut,(16.3*16/13+(2-16*16/13))*ut);
+z11=(16ut,2ut);
+z12=(20ut,0ut);
+z13=(0ut,18ut)+z12;
+z14=(14ut,39ut)+z12;
+z15=(7ut,0ut)+z12;
+z16=(-2ut,17ut)+z12;
+z17=(28ut,18ut)+z12;
+z18=(26ut,0ut)+z12;
+z19=(4ut,19ut)+z18;
+z20=(-2ut,7ut)+z18;
+z21=(3ut,0ut)+z18;
+z22=(9.3ut,(9.3*8/9-6)*ut)+z18;
+z23=(-1ut,13ut)+z18;
+z24=(8ut,13ut)+z18;
+z25=(9ut,2ut)+z18;
+%
+%
+%
+draw z1{an}..z2{up}..z3{left}...z4{z5-z4}--z5
+ & z5{z1-z5}..z6{dir -20}..z7{down}..z8
+ & z8..z9{right}..z11
+ ..z14{(0,1)}
+ & z14-- z15;
+draw z16{dir 340}
+ ..z24{z23-z20}..z19{left}..z23{z20-z23}
+ ..z21{right}..z25--z22;
+%
+%
+labels(range 1 thru 25);
+endchar;
+
+% n
+beginchar(oct"312",60 ut#,29 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-4ut,0ut);
+z3=(10ut,19ut);
+z4=(15ut,15ut);
+z5=(12ut,3ut);
+z6=(15ut,0ut);
+z7=(18ut,1ut);
+z8=(18.3ut,(18.3*17/16+(1-9*17/8))*ut);
+z9=(0ut,0ut);
+z10=(29ut,0ut);
+z11=(0ut,19ut)+z10;
+z12=(-3ut,3ut)+z10;
+z13=(2ut,0ut)+z10;
+z14=(15ut,19ut)+z10;
+z15=(12ut,3ut)+z10;
+z16=(14ut,0ut)+z10;
+z17=(33ut,18ut)+z10;
+z18=(18ut,2ut)+z10;
+z19=(4ut,26ut)+z10;
+z20=(12ut,26ut)+z10;
+%
+%
+draw z1--z2
+ & z2{z1-z2}..z3{right}..z4{down}--z5..z6{right}..z11{(0,1)};
+draw z11--z12{z12-z11}..z13{right}..z14{z14-z15}
+ & z14--z15..z16{right}..z18--z17;
+%
+pickup pencircle scaled 4ut;
+drawdot z19; drawdot z20;
+%
+%
+labels(range 1 thru 20);
+endchar;
+
+% Le
+beginchar(oct"313",40.3 ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(14ut,39ut);
+z2=(8ut,32ut);
+z3=(4ut,8ut);
+z4=(0ut,0ut);
+z5=(17ut,0ut);
+z6=(38ut,18ut);
+z7=(22ut,2ut);
+z8=(31ut,0ut);
+z9=(4ut,19ut)+z8;
+z10=(-2ut,7ut)+z8;
+z11=(3ut,0ut)+z8;
+z12=(9.3ut,(9.3*8/9-6)*ut)+z8;
+z13=(-1ut,13ut)+z8;
+z14=(8ut,13ut)+z8;
+z15=(9ut,2ut)+z8;
+%
+%
+draw z1..z2..z3..z4
+ & z4{dir 40}..z5{right}
+ ..z14{z13-z10}..z9{left}..z13{z10-z13}
+ ..z11{right}..z15--z12;
+labels(range 1 thru 15);
+endchar;
+
+% Me
+beginchar(oct"314",76.3 ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(0ut,0ut);
+z2=(8ut,4ut);
+z3=(33ut,39ut);
+z4=(25ut,0ut);
+z5=(53ut,39ut);
+z6=(47ut,4ut);
+z7=(51ut,0ut);
+z8=(70ut,18ut);
+z9=(55ut,2ut);
+z10=(67ut,0ut);
+z11=(4ut,19ut)+z10;
+z12=(-2ut,7ut)+z10;
+z13=(3ut,0ut)+z10;
+z14=(9.3ut,(9.3*8/9-6)*ut)+z10;
+z15=(-1ut,13ut)+z10;
+z16=(8ut,13ut)+z10;
+z17=(9ut,2ut)+z10;
+%
+%
+draw z1{right}..z2--z3
+ & z3--z4
+ & z4--z5
+ &z5--z6{z6-z5}..z7{right}
+ ..z16{z15-z12}..z11{left}..z15{z12-z15}
+ ..z13{right}..z17--z14;
+labels(range 1 thru 17);
+endchar;
+
+% Re
+beginchar(oct"315",45.3 ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(5ut,39ut);
+z2=(14ut,39ut);
+z3=(21ut,30ut);
+z4=(3ut,19ut);
+z5=(7ut,39ut);
+z6=(0ut,0ut);
+z7=(17ut,3ut);
+z8=(21ut,0ut);
+z9=(25ut,3ut);
+z10=(36ut,0ut);
+z11=(4ut,19ut)+z10;
+z12=(-2ut,7ut)+z10;
+z13=(3ut,0ut)+z10;
+z14=(9.3ut,(9.3*8/9-6)*ut)+z10;
+z15=(-1ut,13ut)+z10;
+z16=(8ut,13ut)+z10;
+z17=(9ut,2ut)+z10;
+%
+%
+draw z1--z2..z3{down}..z4
+ & z4--z7{z7-z4}..z8{(1,0)}
+ ..z16{z15-z12}..z11{left}..z15{z12-z15}
+ ..z13{right}..z17--z14;
+draw z5--z6;
+labels(range 1 thru 17);
+endchar;
+
+% lt
+beginchar(oct"316",46 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,36ut);
+z3=(11ut,39ut);
+z4=(1ut,0ut);
+z5=(21ut,18ut);
+z6=(6ut,2ut);
+z7=(18ut,0ut);
+z8=(0ut,18ut)+z7;
+z9=(14ut,39ut)+z7;
+z10=(7ut,0ut)+z7;
+z11=(-5ut,17ut)+z7;
+z12=(28ut,18ut)+z7;
+%
+%
+draw z1{an}..z2{up}..z3{left}..z1{z4-z3}..z4{right}..z6
+ ..z9{(0,1)}
+ & z9-- z10;
+draw z11{dir 340}..z12{dir 60};
+%
+%
+labels(range 1 thru 12);
+endchar;
+
+% lte
+beginchar(oct"317",51.3 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,36ut);
+z3=(11ut,39ut);
+z4=(1ut,0ut);
+z5=(21ut,18ut);
+z6=(6ut,2ut);
+z7=(18ut,0ut);
+z8=(0ut,18ut)+z7;
+z9=(14ut,39ut)+z7;
+z10=(7ut,0ut)+z7;
+z11=(-7ut,15ut)+z7;
+z12=(28ut,18ut)+z7;
+z13=(24ut,0ut)+z7;
+z14=(4ut,19ut)+z13;
+z15=(-2ut,7ut)+z13;
+z16=(3ut,0ut)+z13;
+z17=(9.3ut,(9.3*8/9-6)*ut)+z13;
+z18=(-1ut,13ut)+z13;
+z19=(8ut,13ut)+z13;
+z20=(9ut,2ut)+z13;
+%
+%
+%
+draw z1{an}..z2{up}..z3{left}..z1{z4-z3}..z4{right}..z6
+ ..z9{(0,1)}
+ & z9-- z10;
+draw z11{dir 340}
+ ..z19{z18-z15}..z14{left}..z18{z15-z18}
+ ..z16{right}..z20--z17;
+%
+%
+labels(range 1 thru 20);
+endchar;
diff --git a/fonts/twcal/twlig6.mf b/fonts/twcal/twlig6.mf
new file mode 100644
index 0000000000..410cae7273
--- /dev/null
+++ b/fonts/twcal/twlig6.mf
@@ -0,0 +1,664 @@
+
+% TW -- ligatures 6. generation (C)1991 Thomas Weinmann
+
+
+% bee
+beginchar(oct"320",54.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,36ut);
+z3=(11ut,39ut);
+z4=(5ut,0ut);
+z5=(15ut,19ut);
+z6=(28ut,18ut);
+z7=(27ut,0ut);
+z8=(4ut,19ut)+z7;
+z9=(-2ut,7ut)+z7;
+z10=(3ut,0ut)+z7;
+z11=(9.3ut,(9.3*8/9-6)*ut)+z7;
+z12=(-1ut,13ut)+z7;
+z13=(8ut,13ut)+z7;
+z14=(9ut,2ut)+z7;
+z15=(18ut,0ut)+z7;
+z16=(4ut,19ut)+z15;
+z17=(-2ut,7ut)+z15;
+z18=(3ut,0ut)+z15;
+z19=(9.3ut,(9.3*8/9-6)*ut)+z15;
+z20=(-1ut,13ut)+z15;
+z21=(8ut,13ut)+z15;
+z22=(9ut,2ut)+z15;
+%
+%
+%
+draw z1{an}..z2{up}..z3{left}..z1..z4{right}..z5{dir 110}
+ & z5{dir 290}
+ ..z13{z12-z9}..z8{left}..z12{z9-z12}
+ ..z10{right}
+ ..z21{z20-z17}..z16{left}..z20{z17-z20}
+ ..z18{right}..z22--z19;
+%
+%
+labels(range 1 thru 22);
+endchar;
+
+% lee
+beginchar(oct"321",45.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,36ut);
+z3=(11ut,39ut);
+z4=(4ut,0ut);
+z5=(21ut,18ut);
+z6=(6ut,2ut);
+z7=(18ut,0ut);
+z8=(4ut,19ut)+z7;
+z9=(-2ut,7ut)+z7;
+z10=(3ut,0ut)+z7;
+z11=(9.3ut,(9.3*8/9-6)*ut)+z7;
+z12=(-1ut,13ut)+z7;
+z13=(8ut,13ut)+z7;
+z14=(9ut,2ut)+z7;
+z15=(18ut,0ut)+z7;
+z16=(4ut,19ut)+z15;
+z17=(-2ut,7ut)+z15;
+z18=(3ut,0ut)+z15;
+z19=(9.3ut,(9.3*8/9-6)*ut)+z15;
+z20=(-1ut,13ut)+z15;
+z21=(8ut,13ut)+z15;
+z22=(9ut,2ut)+z15;
+%
+%
+%
+draw z1{an}..z2{up}..z3{left}..z1{z4-z3}..z4{right} % ..z6--z5;
+ ..z13{z12-z9}..z8{left}..z12{z9-z12}
+ ..z10{right}
+ ..z21{z20-z17}..z16{left}..z20{z17-z20}
+ ..z18{right}..z22--z19;
+%
+%
+labels(range 1 thru 6);
+endchar;
+
+% ft
+beginchar(oct"322",44 ut#,39 ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(12ut,37ut);
+z3=(9ut,39ut);
+z4=(3ut,31ut);
+z5=(-7ut,-19ut);
+z6=(-9ut,5ut);
+z7=(7ut,6ut);
+z8=(18ut,18ut);
+z9=(0ut,0ut);
+z10=(16ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,39ut)+z10;
+z13=(7ut,0ut)+z10;
+z14=(-7ut,16ut)+z10;
+z15=(28ut,18ut)+z10;
+%
+%
+draw z1{an}..z2{up}..z3{left}...z4{z5-z4}--z5;
+draw z6 % ..z7
+ ..z12{(0,1)}
+ & z12-- z13;
+draw z14{dir 340}..z15{dir 60};
+%
+%
+labels(range 1 thru 15);
+endchar;
+
+% fte
+beginchar(oct"323",51.4 ut#,39 ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(12ut,37ut);
+z3=(9ut,39ut);
+z4=(3ut,31ut);
+z5=(-7ut,-19ut);
+z6=(-9ut,5ut);
+z7=(7ut,6ut);
+z8=(18ut,18ut);
+z9=(0ut,0ut);
+z10=(16ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,39ut)+z10;
+z13=(7ut,0ut)+z10;
+z14=(-8ut,14ut)+z10;
+z15=(28ut,18ut)+z10;
+z16=z17=z18=z19=(0ut,0ut);
+z20=(42ut,0ut);
+z21=(4ut,19ut)+z20;
+z22=(-2ut,7ut)+z20;
+z23=(3ut,0ut)+z20;
+z24=(9.3ut,(9.3*8/9-6)*ut)+z20;
+z25=(-1ut,13ut)+z20;
+z26=(8ut,13ut)+z20;
+z27=(9ut,2ut)+z20;
+%
+%
+%
+draw z1{an}..z2{up}..z3{left}...z4{z5-z4}--z5;
+draw z6 % ..z7
+ ..z12{(0,1)}
+ & z12-- z13;
+draw z14{dir 340}
+ ..z26{z25-z22}..z21{left}..z25{z22-z25}
+ ..z23{right}..z27--z24;
+%
+%
+labels(range 1 thru 27);
+endchar;
+
+% et am Anfang ohne Startuebergabe
+beginchar(oct"324",48 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(4ut,19ut)+(6ut,0ut);
+z2=(-2ut,7ut)+(6ut,0ut);
+z3=(3ut,0ut)+(6ut,0ut);
+z4=(9.3ut,(9.3*8/9-6)*ut)+(6ut,0ut);
+z5=(-1ut,13ut)+(6ut,0ut);
+z6=(8ut,13ut)+(6ut,0ut);
+z7=(9ut,2ut)+(6ut,0ut);
+z8=(-3ut,2ut);
+z9=(0ut,0ut);
+z10=(20ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,39ut)+z10;
+z13=(7ut,0ut)+z10;
+z14=(-2ut,8ut)+z10;
+z15=(28ut,18ut)+z10;
+%
+%
+draw z8..z6{z5-z2}..z1{left}..z5{z2-z5}
+ ..z3{right} % ..z7
+ ..z12{(0,1)}
+ & z12-- z13;
+draw z14{dir 340}..z15{dir 60};
+%
+%
+labels(range 1 thru 15);
+endchar;
+
+% ete am Anfang ohne Startuebergabe
+beginchar(oct"325",52.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(4ut,19ut)+(6ut,0ut);
+z2=(-2ut,7ut)+(6ut,0ut);
+z3=(3ut,0ut)+(6ut,0ut);
+z4=(9.3ut,(9.3*8/9-6)*ut)+(6ut,0ut);
+z5=(-1ut,13ut)+(6ut,0ut);
+z6=(8ut,13ut)+(6ut,0ut);
+z7=(9ut,2ut)+(6ut,0ut);
+z8=(-3ut,2ut);
+z9=(0ut,0ut);
+z10=(20ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,39ut)+z10;
+z13=(7ut,0ut)+z10;
+z14=(-4ut,11ut)+z10;
+z15=(28ut,18ut)+z10;
+z16=(23ut,0ut);
+z17=(4ut,19ut)+z16+z10;
+z18=(-2ut,7ut)+z16+z10;
+z19=(3ut,0ut)+z16+z10;
+z20=(9.3ut,(9.3*8/9-6)*ut)+z16+z10;
+z21=(-1ut,13ut)+z16+z10;
+z22=(8ut,13ut)+z16+z10;
+z23=(9ut,2ut)+z16+z10;
+%
+%
+%
+draw z8..z6{z5-z2}..z1{left}..z5{z2-z5}
+ ..z3{right}
+ ..z12{(0,1)}
+ & z12-- z13;
+draw z14{dir 340}
+ ..z22{z21-z18}..z17{left}..z21{z18-z21}
+ ..z19{right}..z23--z20;
+%
+%
+labels(range 1 thru 23);
+endchar;
+
+% jet
+beginchar(oct"326",53 ut#,39 ut#,19ut#);
+pickup va_pen;
+%
+z1=(2.5ut,28ut);
+z2=(0ut,19ut);
+z3=(-5ut,-3ut);
+z4=(-13ut,-19ut);
+z5=(17ut,18ut);
+z6=(12ut,0ut);
+z7=(4ut,19ut)+z6;
+z8=(-2ut,7ut)+z6;
+z9=(3ut,0ut)+z6;
+z10=(9.3ut,(9.3*8/9-6)*ut)+z6;
+z11=(-1ut,13ut)+z6;
+z12=(8ut,13ut)+z6;
+z13=(9ut,2ut)+z6;
+z14=(13ut,0ut)+z6;
+z15=(0ut,18ut)+z14;
+z16=(14ut,39ut)+z14;
+z17=(7ut,0ut)+z14;
+z18=(-2ut,8ut)+z14;
+z19=(28ut,18ut)+z14;
+%
+%
+%
+draw z2--z3{z3-z2}...z4{left}..z3{z5-z3}
+ ..z12{(z11-z8)}..z7{left}..z11{z8-z11}
+ ..z9{right} % ..z13
+ ..z16{(0,1)}
+ & z16-- z17;
+draw z18{dir 340}..z19{dir 60};
+pickup pencircle scaled 4ut;
+drawdot z1;
+%
+%
+labels(range 1 thru 19);
+endchar;
+
+% jete
+beginchar(oct"327",59.4 ut#,39 ut#,19ut#);
+pickup va_pen;
+%
+z1=(2.5ut,28ut);
+z2=(0ut,19ut);
+z3=(-5ut,-3ut);
+z4=(-13ut,-19ut);
+z5=(17ut,18ut);
+z6=(12ut,0ut);
+z7=(4ut,19ut)+z6;
+z8=(-2ut,7ut)+z6;
+z9=(3ut,0ut)+z6;
+z10=(9.3ut,(9.3*8/9-6)*ut)+z6;
+z11=(-1ut,13ut)+z6;
+z12=(8ut,13ut)+z6;
+z13=(9ut,2ut)+z6;
+z14=(13ut,0ut)+z6;
+z15=(0ut,18ut)+z14;
+z16=(14ut,39ut)+z14;
+z17=(7ut,0ut)+z14;
+z18=(-1ut,13ut)+z14;
+z19=(28ut,18ut)+z14;
+z20=(25ut,0ut)+z14;
+z21=(4ut,19ut)+z20;
+z22=(-2ut,7ut)+z20;
+z23=(3ut,0ut)+z20;
+z24=(9.3ut,(9.3*8/9-6)*ut)+z20;
+z25=(-1ut,13ut)+z20;
+z26=(8ut,13ut)+z20;
+z27=(9ut,2ut)+z20;
+%
+%
+%
+%
+draw z2--z3{z3-z2}...z4{left}..z3{z5-z3}
+ ..z12{(z11-z8)}..z7{left}..z11{z8-z11}
+ ..z9{right} % ..z13
+ ..z16{(0,1)}
+ & z16..z17;
+draw z18{dir 340}
+ ..z26{z25-z22}..z21{left}..z25{z22-z25}
+ ..z23{right}..z27--z24;
+pickup pencircle scaled 4ut;
+drawdot z1;
+%
+%
+labels(range 1 thru 27);
+endchar;
+
+% jett
+beginchar(oct"330",63 ut#,39 ut#,19ut#);
+pickup va_pen;
+%
+z1=(2.5ut,28ut);
+z2=(0ut,19ut);
+z3=(-5ut,-3ut);
+z4=(-13ut,-19ut);
+z5=(17ut,18ut);
+z6=(12ut,0ut);
+z7=(4ut,19ut)+z6;
+z8=(-2ut,7ut)+z6;
+z9=(3ut,0ut)+z6;
+z10=(9.3ut,(9.3*8/9-6)*ut)+z6;
+z11=(-1ut,13ut)+z6;
+z12=(8ut,13ut)+z6;
+z13=(9ut,2ut)+z6;
+z14=(13ut,0ut)+z6;
+z15=(0ut,18ut)+z14;
+z16=(14ut,39ut)+z14;
+z17=(7ut,0ut)+z14;
+z18=(-1ut,11ut)+z14;
+z19=(38ut,18ut)+z14;
+z20=(24ut,39ut)+z14;
+z21=(17ut,0ut)+z14;
+%
+%
+%
+draw z2--z3{z3-z2}...z4{left}..z3{z5-z3}
+ ..z12{(z11-z8)}..z7{left}..z11{z8-z11}
+ ..z9{right} % ..z13
+ ..z16{(0,1)}
+ & z16-- z17;
+draw z20--z21;
+draw z18{dir 340}..z19{dir 60};
+pickup pencircle scaled 4ut;
+drawdot z1;
+%
+%
+labels(range 1 thru 21);
+endchar;
+
+% jette
+beginchar(oct"331",67.4 ut#,39 ut#,19ut#);
+pickup va_pen;
+%
+z1=(2.5ut,28ut);
+z2=(0ut,19ut);
+z3=(-5ut,-3ut);
+z4=(-13ut,-19ut);
+z5=(17ut,18ut);
+z6=(12ut,0ut);
+z7=(4ut,19ut)+z6;
+z8=(-2ut,7ut)+z6;
+z9=(3ut,0ut)+z6;
+z10=(9.3ut,(9.3*8/9-6)*ut)+z6;
+z11=(-1ut,13ut)+z6;
+z12=(8ut,13ut)+z6;
+z13=(9ut,2ut)+z6;
+z14=(13ut,0ut)+z6;
+z15=(0ut,18ut)+z14;
+z16=(14ut,39ut)+z14;
+z17=(7ut,0ut)+z14;
+z18=(-1ut,11ut)+z14;
+z19=(38ut,18ut)+z14;
+z20=(24ut,39ut)+z14;
+z21=(17ut,0ut)+z14;
+z22=(33ut,0ut)+z14;
+z23=(4ut,19ut)+z22;
+z24=(-2ut,7ut)+z22;
+z25=(3ut,0ut)+z22;
+z26=(9.3ut,(9.3*8/9-6)*ut)+z22;
+z27=(-1ut,13ut)+z22;
+z28=(8ut,13ut)+z22;
+z29=(9ut,2ut)+z22;
+%
+%
+draw z2--z3{z3-z2}...z4{left}..z3{z5-z3}
+ ..z12{(z11-z8)}..z7{left}..z11{z8-z11}
+ ..z9{right}
+ ..z16{(0,1)}
+ & z16-- z17;
+draw z20--z21;
+draw z18{dir 340}
+ ..z28{z27-z24}..z23{left}..z27{z24-z27}
+ ..z25{right}..z29--z26;
+pickup pencircle scaled 4ut;
+drawdot z1;
+%
+%
+labels(range 1 thru 29);
+endchar;
+
+% let
+beginchar(oct"332",55 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,36ut);
+z3=(11ut,39ut);
+z4=(1ut,0ut);
+z5=(21ut,18ut);
+z6=(6ut,2ut);
+z7=(14ut,0);
+z8=(4ut,19ut)+z7;
+z9=(-2ut,7ut)+z7;
+z10=(3ut,0ut)+z7;
+z11=(9.3ut,(9.3*8/9-6)*ut)+z7;
+z12=(-1ut,13ut)+z7;
+z13=(8ut,13ut)+z7;
+z14=(9ut,2ut)+z7;
+z15=(13ut,0ut)+z7;
+z16=(0ut,18ut)+z15;
+z17=(14ut,39ut)+z15;
+z18=(7ut,0ut)+z15;
+z19=(-1ut,8ut)+z15;
+z20=(28ut,18ut)+z15;
+%
+%
+draw z1{an}..z2{up}..z3{left}..z1{z4-z3}..z4{right}
+ ..z13{z12-z9}..z8{left}..z12{z9-z12}
+ ..z10{right}
+ ..z17{(0,1)}
+ & z17-- z18;
+draw z19{dir 340}..z20{dir 60};
+%
+%
+labels(range 1 thru 20);
+endchar;
+
+% lete
+beginchar(oct"333",59.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,36ut);
+z3=(11ut,39ut);
+z4=(1ut,0ut);
+z5=(21ut,18ut);
+z6=(6ut,2ut);
+z7=(14ut,0);
+z8=(4ut,19ut)+z7;
+z9=(-2ut,7ut)+z7;
+z10=(3ut,0ut)+z7;
+z11=(9.3ut,(9.3*8/9-6)*ut)+z7;
+z12=(-1ut,13ut)+z7;
+z13=(8ut,13ut)+z7;
+z14=(9ut,2ut)+z7;
+z15=(13ut,0ut)+z7;
+z16=(0ut,18ut)+z15;
+z17=(14ut,39ut)+z15;
+z18=(7ut,0ut)+z15;
+z19=(-1ut,11ut)+z15;
+z20=(28ut,18ut)+z15;
+z21=(23ut,0ut)+z15;
+z22=(4ut,19ut)+z21;
+z23=(-2ut,7ut)+z21;
+z24=(3ut,0ut)+z21;
+z25=(9.3ut,(9.3*8/9-6)*ut)+z21;
+z26=(-1ut,13ut)+z21;
+z27=(8ut,13ut)+z21;
+z28=(9ut,2ut)+z21;
+%
+%
+%
+draw z1{an}..z2{up}..z3{left}..z1{z4-z3}..z4{right}
+ ..z13{z12-z9}..z8{left}..z12{z9-z12}
+ ..z10{right}
+ ..z17{(0,1)}
+ & z17-- z18;
+draw z19{dir 340}
+ ..z27{z26-z23}..z22{left}..z26{z23-z26}
+ ..z24{right}..z28--z25;
+;
+%
+%
+labels(range 1 thru 28);
+endchar;
+
+% lett
+beginchar(oct"334",65 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,36ut);
+z3=(11ut,39ut);
+z4=(1ut,0ut);
+z5=(21ut,18ut);
+z6=(6ut,2ut);
+z7=(14ut,0);
+z8=(4ut,19ut)+z7;
+z9=(-2ut,7ut)+z7;
+z10=(3ut,0ut)+z7;
+z11=(9.3ut,(9.3*8/9-6)*ut)+z7;
+z12=(-1ut,13ut)+z7;
+z13=(8ut,13ut)+z7;
+z14=(9ut,2ut)+z7;
+z15=(13ut,0ut)+z7;
+z16=(0ut,18ut)+z15;
+z17=(14ut,39ut)+z15;
+z18=(7ut,0ut)+z15;
+z19=(-2ut,11ut)+z15;
+z20=(38ut,18ut)+z15;
+z21=(24ut,39ut)+z15;
+z22=(17ut,0ut)+z15;
+%
+%
+draw z1{an}..z2{up}..z3{left}..z1{z4-z3}..z4{right}
+ ..z13{z12-z9}..z8{left}..z12{z9-z12}
+ ..z10{right}
+ ..z17{(0,1)}
+ & z17-- z18;
+draw z21--z22;
+draw z19{dir 340}..z20{dir 60};
+%
+%
+labels(range 1 thru 22);
+endchar;
+
+% lette
+beginchar(oct"335",69.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,36ut);
+z3=(11ut,39ut);
+z4=(1ut,0ut);
+z5=(21ut,18ut);
+z6=(6ut,2ut);
+z7=(14ut,0);
+z8=(4ut,19ut)+z7;
+z9=(-2ut,7ut)+z7;
+z10=(3ut,0ut)+z7;
+z11=(9.3ut,(9.3*8/9-6)*ut)+z7;
+z12=(-1ut,13ut)+z7;
+z13=(8ut,13ut)+z7;
+z14=(9ut,2ut)+z7;
+z15=(13ut,0ut)+z7;
+z16=(0ut,18ut)+z15;
+z17=(14ut,39ut)+z15;
+z18=(7ut,0ut)+z15;
+z19=(-2ut,11ut)+z15;
+z20=(38ut,18ut)+z15;
+z21=(24ut,39ut)+z15;
+z22=(17ut,0ut)+z15;
+z23=(33ut,0ut)+z15;
+z24=(4ut,19ut)+z23;
+z25=(-2ut,7ut)+z23;
+z26=(3ut,0ut)+z23;
+z27=(9.3ut,(9.3*8/9-6)*ut)+z23;
+z28=(-1ut,13ut)+z23;
+z29=(8ut,13ut)+z23;
+z30=(9ut,2ut)+z23;
+%
+%
+%
+draw z1{an}..z2{up}..z3{left}..z1{z4-z3}..z4{right}
+ ..z13{z12-z9}..z8{left}..z12{z9-z12}
+ ..z10{right}
+ ..z17{(0,1)}
+ & z17-- z18;
+draw z21--z22;
+draw z19{dir 340}
+ ..z29{z28-z25}..z24{left}..z28{z25-z28}
+ ..z26{right}..z30--z27;
+%
+%
+labels(range 1 thru 30);
+endchar;
+
+% beginchar("e",9.4 ut#,19 ut#,0);
+% depth angepasst, um die Satzabstaende zu homogenisieren vgl. i, s
+beginchar(oct"336",41 ut#,39 ut#, 19 ut#);
+pickup va_pen;
+%
+z1=(4ut,19ut);
+z2=(-2ut,7ut);
+z3=(3ut,0ut);
+z4=(9.3ut,(9.3*8/9-6)*ut);
+z5=(-1ut,13ut);
+z6=(8ut,13ut);
+z7=(9ut,2ut);
+z8=(13ut,0ut);
+z9=(0ut,0ut);
+z10=(13ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,39ut)+z10;
+z13=(7ut,0ut)+z10;
+z14=(-2ut,8ut)+z10;
+z15=(28ut,18ut)+z10;
+%
+%
+draw z5{z2-z5}..z6{z5-z2}..z1{left}..z5{z2-z5}
+ ..z3{right}
+ ..z12{(0,1)}
+ & z12-- z13;
+draw z14{dir 340}..z15{dir 60};
+
+%
+%
+labels(range 1 thru 15);
+endchar;
+
+% beginchar("e",9.4 ut#,19 ut#,0);
+% depth angepasst, um die Satzabstaende zu homogenisieren vgl. i, s
+beginchar(oct"337",45.4 ut#,39 ut#, 19 ut#);
+pickup va_pen;
+%
+z1=(4ut,19ut);
+z2=(-2ut,7ut);
+z3=(3ut,0ut);
+z4=(9.3ut,(9.3*8/9-6)*ut);
+z5=(-1ut,13ut);
+z6=(8ut,13ut);
+z7=(9ut,2ut);
+z8=(13ut,0ut);
+z9=(0ut,0ut);
+z10=(13ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,39ut)+z10;
+z13=(7ut,0ut)+z10;
+z14=(-4ut,11ut)+z10;
+z15=(28ut,18ut)+z10;
+z16=(23ut,0ut)+z10;
+z17=(4ut,19ut)+z16;
+z18=(-2ut,7ut)+z16;
+z19=(3ut,0ut)+z16;
+z20=(9.3ut,(9.3*8/9-6)*ut)+z16;
+z21=(-1ut,13ut)+z16;
+z22=(8ut,13ut)+z16;
+z23=(9ut,2ut)+z16;
+%
+%
+%
+draw z5{z2-z5}..z6{z5-z2}..z1{left}..z5{z2-z5}
+ ..z3{right}
+ ..z12{(0,1)}
+ & z12-- z13;
+draw z14{dir 340}
+ ..z22{z21-z18}..z17{left}..z21{z18-z21}
+ ..z19{right}..z23--z20;
+%
+%
+labels(range 1 thru 23);
+endchar;
diff --git a/fonts/twcal/twlig7.mf b/fonts/twcal/twlig7.mf
new file mode 100644
index 0000000000..34e44a72a7
--- /dev/null
+++ b/fonts/twcal/twlig7.mf
@@ -0,0 +1,508 @@
+
+% TW -- ligatures 7. generation (C)1991 Thomas Weinmann
+
+
+% ett
+% beginchar("e",9.4 ut#,19 ut#,0);
+% depth angepasst, um die Satzabstaende zu homogenisieren vgl. i, s
+beginchar(oct"340",51 ut#,39 ut#, 19 ut#);
+pickup va_pen;
+%
+z1=(4ut,19ut);
+z2=(-2ut,7ut);
+z3=(3ut,0ut);
+z4=(9.3ut,(9.3*8/9-6)*ut);
+z5=(-1ut,13ut);
+z6=(8ut,13ut);
+z7=(9ut,2ut);
+z8=(13ut,0ut);
+z9=(0ut,0ut);
+z10=(13ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,39ut)+z10;
+z13=(7ut,0ut)+z10;
+z14=(-2ut,11ut)+z10;
+z15=(38ut,18ut)+z10;
+z16=(24ut,39ut)+z10;
+z17=(17ut,0ut)+z10;
+%
+%
+draw z5{z2-z5}..z6{z5-z2}..z1{left}..z5{z2-z5}
+ ..z3{right}
+ ..z12{(0,1)}
+ & z12-- z13;
+draw z16--z17;
+draw z14{dir 340}..z15{dir 60};
+%
+%
+labels(range 1 thru 17);
+endchar;
+
+% ette
+% beginchar("e",9.4 ut#,19 ut#,0);
+% depth angepasst, um die Satzabstaende zu homogenisieren vgl. i, s
+beginchar(oct"341",55.4 ut#,39 ut#, 19 ut#);
+pickup va_pen;
+%
+z1=(4ut,19ut);
+z2=(-2ut,7ut);
+z3=(3ut,0ut);
+z4=(9.3ut,(9.3*8/9-6)*ut);
+z5=(-1ut,13ut);
+z6=(8ut,13ut);
+z7=(9ut,2ut);
+z8=(13ut,0ut);
+z9=(0ut,0ut);
+z10=(13ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,39ut)+z10;
+z13=(7ut,0ut)+z10;
+z14=(-2ut,11ut)+z10;
+z15=(38ut,18ut)+z10;
+z16=(24ut,39ut)+z10;
+z17=(17ut,0ut)+z10;
+z18=(33ut,0ut)+z10;
+z19=(4ut,19ut)+z18;
+z20=(-2ut,7ut)+z18;
+z21=(3ut,0ut)+z18;
+z22=(9.3ut,(9.3*8/9-6)*ut)+z18;
+z23=(-1ut,13ut)+z18;
+z24=(8ut,13ut)+z18;
+z25=(9ut,2ut)+z18;
+%
+%
+%
+draw z5{z2-z5}..z6{z5-z2}..z1{left}..z5{z2-z5}
+ ..z3{right}
+ ..z12{(0,1)}
+ & z12-- z13;
+draw z16--z17;
+draw z14{dir 340}
+ ..z24{z23-z20}..z19{left}..z23{z20-z23}
+ ..z21{right}..z25--z22;
+%
+%
+labels(range 1 thru 25);
+endchar;
+
+% m”
+beginchar(oct"342",68 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-5ut,0ut);
+z3=(10ut,19ut);
+z4=(14ut,16ut);
+z5=(10ut,0ut);
+z6=(24ut,19ut);
+z7=(27ut,16ut);
+z8=(24ut,3ut);
+z9=(26ut,0ut);
+z10=(30.3ut,(30.3*16/15+(-30))*ut);
+z11=(30ut,2ut);
+z12=(43ut,0ut);
+z13=(11ut,16ut)+z12;
+z14=(2ut,0ut)+z12;
+z15=(-4ut,5ut)+z12;
+z16=(5ut,19ut)+z12;
+z17=(13ut,19ut)+z12;
+z18=(25ut,18ut)+z12;
+z19=(5ut,26ut)+z12;
+z20=(11ut,26ut)+z12;
+z21=(-2ut,14ut)+z12;
+%
+%
+draw z1--z2
+ & z2{z1-z2}..z3{right}..z4--z5
+ & z5{z4-z5}..z6{right}..z7--z8..z9{right}..z21{an};
+draw z17..z13{dir -75}..z14{left}
+ ..z15{up}..z16{right}
+ ..z13{dir -75}...z18{dir 60};
+%
+pickup pencircle scaled 4ut;
+drawdot z19;drawdot z20;
+labels(range 1 thru 20);
+endchar;
+
+% n”
+beginchar(oct"343",57 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-4ut,0ut);
+z3=(10ut,19ut);
+z4=(15ut,15ut);
+z5=(12ut,3ut);
+z6=(15ut,0ut);
+z7=(18ut,1ut);
+z8=(18.3ut,(18.3*17/16+(1-9*17/8))*ut);
+z9=(32ut,0ut);
+z10=(0ut,0ut);
+z11=(11ut,16ut)+z9;
+z12=(2ut,0ut)+z9;
+z13=(-4ut,5ut)+z9;
+z14=(5ut,19ut)+z9;
+z15=(13ut,19ut)+z9;
+z16=(25ut,18ut)+z9;
+z17=(5ut,26ut)+z9;
+z18=(11ut,26ut)+z9;
+z19=(-2ut,14ut)+z9;
+%
+%
+draw z1--z2
+ & z2{z1-z2}..z3{right}..z4{down}--z5..z6{right}..z19{an};
+draw z15..z11{dir -75}
+ ..z12{left}..z13{up}
+ ..z14{right}..z11{dir -75}
+ ..z16{dir 60};
+%
+pickup pencircle scaled 4ut;
+drawdot z17;drawdot z18;
+%
+%
+labels(range 1 thru 19);
+endchar;
+
+% pt
+beginchar(oct"344",49 ut#,39 ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-8ut,-19ut);
+z3=(-3ut,6ut);
+z4=(11ut,19ut);
+z5=(14ut,17ut);
+z6=(11ut,4ut);
+z7=(13ut,0ut);
+z8=(16ut,1ut);
+z9=(16.3ut,(16.3*17/15+(1-16*17/15))*ut);
+z10=(21ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,39ut)+z10;
+z13=(7ut,0ut)+z10;
+z14=(-2ut,13ut)+z10;
+z15=(28ut,18ut)+z10;
+%
+%
+draw z1--z2;
+draw z3{z1-z2}..z4{right}..z5{z6-z5}--z6{z6-z5}..z7{right}
+ ..z12{(0,1)}
+ & z12-- z13;
+draw z14{dir 340}..z15{dir 60};
+%
+%
+labels(range 1 thru 15);
+endchar;
+
+% pte
+beginchar(oct"345",52.4 ut#,39 ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-8ut,-19ut);
+z3=(-3ut,6ut);
+z4=(11ut,19ut);
+z5=(14ut,17ut);
+z6=(11ut,4ut);
+z7=(13ut,0ut);
+z8=(16ut,1ut);
+z9=(16.3ut,(16.3*17/15+(1-16*17/15))*ut);
+z10=(21ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,39ut)+z10;
+z13=(7ut,0ut)+z10;
+z14=(-4ut,11ut)+z10;
+z15=(28ut,18ut)+z10;
+z16=(22ut,0ut)+z10;
+z17=(4ut,19ut)+z16;
+z18=(-2ut,7ut)+z16;
+z19=(3ut,0ut)+z16;
+z20=(9.3ut,(9.3*8/9-6)*ut)+z16;
+z21=(-1ut,13ut)+z16;
+z22=(8ut,13ut)+z16;
+z23=(9ut,2ut)+z16;
+%
+%
+%
+draw z1--z2;
+draw z3{z1-z2}..z4{right}..z5{z6-z5}--z6{z6-z5}..z7{right}
+ ..z12{(0,1)}
+ & z12-- z13;
+draw z14{dir 340}
+ ..z22{z21-z18}..z17{left}..z21{z18-z21}
+ ..z19{right}..z23--z20;
+%
+%
+labels(range 1 thru 23);
+endchar;
+
+% mt
+beginchar(oct"346",66 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-5ut,0ut);
+z3=(10ut,19ut);
+z4=(14ut,16ut);
+z5=(10ut,0ut);
+z6=(24ut,19ut);
+z7=(27ut,16ut);
+z8=(24ut,3ut);
+z9=(26ut,0ut);
+z10=(30.3ut,(30.3*16/15+(-30))*ut);
+z11=(30ut,2ut);
+z12=(38ut,0ut);
+z13=(0ut,18ut)+z12;
+z14=(14ut,39ut)+z12;
+z15=(7ut,0ut)+z12;
+z16=(-3ut,13ut)+z12;
+z17=(28ut,18ut)+z12;
+%
+%
+draw z1--z2
+ & z2{z1-z2}..z3{right}..z4--z5
+ & z5{z4-z5}..z6{right}..z7--z8..z9{right}
+ ..z14{(0,1)}
+ & z14-- z15;
+draw z16{dir 340}..z17{dir 60};
+%
+%
+labels(range 1 thru 17);
+endchar;
+
+% mte
+beginchar(oct"347",70.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-5ut,0ut);
+z3=(10ut,19ut);
+z4=(14ut,16ut);
+z5=(10ut,0ut);
+z6=(24ut,19ut);
+z7=(27ut,16ut);
+z8=(24ut,3ut);
+z9=(26ut,0ut);
+z10=(30.3ut,(30.3*16/15+(-30))*ut);
+z11=(30ut,2ut);
+z12=(38ut,0ut);
+z13=(0ut,18ut)+z12;
+z14=(14ut,39ut)+z12;
+z15=(7ut,0ut)+z12;
+z16=(-4ut,11ut)+z12;
+z17=(28ut,18ut)+z12;
+z18=(23ut,0ut)+z12;
+z19=(4ut,19ut)+z18;
+z20=(-2ut,7ut)+z18;
+z21=(3ut,0ut)+z18;
+z22=(9.3ut,(9.3*8/9-6)*ut)+z18;
+z23=(-1ut,13ut)+z18;
+z24=(8ut,13ut)+z18;
+z25=(9ut,2ut)+z18;
+%
+%
+%
+draw z1--z2
+ & z2{z1-z2}..z3{right}..z4--z5
+ & z5{z4-z5}..z6{right}..z7--z8..z9{right}
+ ..z14{(0,1)}
+ & z14-- z15;
+draw z16{dir 340}
+ ..z24{z23-z20}..z19{left}..z23{z20-z23}
+ ..z21{right}..z25--z22;
+%
+%
+labels(range 1 thru 25);
+endchar;
+
+% hl
+beginchar(oct"350",49 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(10ut,36ut);
+z3=(7ut,39ut);
+z4=(3ut,34ut);
+z5=(-4ut,0ut);
+z6=(11ut,19ut);
+z7=(13ut,15ut);
+z8=(11ut,3ut);
+z9=(17ut,2ut);
+z10=(28ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,36ut)+z10;
+z13=(11ut,39ut)+z10;
+z14=(2ut,0ut)+z10;
+z15=(21ut,18ut)+z10;
+z16=(6ut,2ut)+z10;
+%
+%
+draw z1{an}..z2{up}..z3{left}..z4..z1--z5
+ & z5{z1-z5}..z6{right}..z7{down}..z8{down}..z9
+ ..z12{up}..z13{left}..z11{z14-z13}..z14{right}..z16--z15;
+%
+%
+labels(range 1 thru 16);
+endchar;
+
+% hl am Ende eines Wortes
+beginchar(oct"351",45 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(10ut,36ut);
+z3=(7ut,39ut);
+z4=(3ut,34ut);
+z5=(-4ut,0ut);
+z6=(11ut,19ut);
+z7=(13ut,15ut);
+z8=(11ut,3ut);
+z9=(17ut,2ut);
+z10=(28ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,36ut)+z10;
+z13=(11ut,39ut)+z10;
+z14=(2ut,0ut)+z10;
+z15=(10ut,4ut)+z10;
+z16=(6ut,2ut)+z10;
+%
+%
+draw z1{an}..z2{up}..z3{left}..z4..z1--z5
+ & z5{z1-z5}..z6{right}..z7{down}..z8{down}..z9
+ ..z12{up}..z13{left}..z11{z14-z13}..z14{right}..z15;
+%
+%
+labels(range 1 thru 16);
+endchar;
+
+% hle
+beginchar(oct"352",54.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(10ut,36ut);
+z3=(7ut,39ut);
+z4=(3ut,34ut);
+z5=(-4ut,0ut);
+z6=(11ut,19ut);
+z7=(13ut,15ut);
+z8=(11ut,3ut);
+z9=(17ut,2ut);
+z10=(28ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,36ut)+z10;
+z13=(11ut,39ut)+z10;
+z14=(2ut,0ut)+z10;
+z15=(21ut,18ut)+z10;
+z16=(6ut,2ut)+z10;
+z17=(17ut,0)+z10;
+z18=(4ut,19ut)+z17;
+z19=(-2ut,7ut)+z17;
+z20=(3ut,0ut)+z17;
+z21=(9.3ut,(9.3*8/9-6)*ut)+z17;
+z22=(-1ut,13ut)+z17;
+z23=(8ut,13ut)+z17;
+z24=(9ut,2ut)+z17;
+%
+%
+draw z1{an}..z2{up}..z3{left}..z4..z1--z5
+ & z5{z1-z5}..z6{right}..z7{down}..z8{down}..z9
+ ..z12{up}..z13{left}..z11{z14-z13}..z14{right}
+ ..z23{z22-z19}..z18{left}..z22{z19-z22}
+ ..z20{right}..z24--z21;
+
+%
+%
+labels(range 1 thru 24);
+endchar;
+
+% hlt
+beginchar(oct"353",75 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(10ut,36ut);
+z3=(7ut,39ut);
+z4=(3ut,34ut);
+z5=(-4ut,0ut);
+z6=(11ut,19ut);
+z7=(13ut,15ut);
+z8=(11ut,3ut);
+z9=(17ut,2ut);
+z10=(28ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,36ut)+z10;
+z13=(11ut,39ut)+z10;
+z14=(2ut,0ut)+z10;
+z15=(21ut,18ut)+z10;
+z16=(6ut,2ut)+z10;
+z17=(19ut,0ut)+z10;
+z18=(0ut,18ut)+z17;
+z19=(14ut,39ut)+z17;
+z20=(7ut,0ut)+z17;
+z21=(-6ut,13ut)+z17;
+z22=(28ut,18ut)+z17;
+%
+%
+%
+draw z1{an}..z2{up}..z3{left}..z4..z1--z5
+ & z5{z1-z5}..z6{right}..z7{down}..z8{down}..z9
+ ..z12{up}..z13{left}..z11{z14-z13}..z14{right}
+ ..z19{(0,1)}
+ & z19-- z20;
+draw z21{dir 340}..z22{dir 60};
+%
+%
+labels(range 1 thru 22);
+endchar;
+
+% hlte
+beginchar(oct"354",79.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(10ut,36ut);
+z3=(7ut,39ut);
+z4=(3ut,34ut);
+z5=(-4ut,0ut);
+z6=(11ut,19ut);
+z7=(13ut,15ut);
+z8=(11ut,3ut);
+z9=(17ut,2ut);
+z10=(28ut,0ut);
+z11=(0ut,18ut)+z10;
+z12=(14ut,36ut)+z10;
+z13=(11ut,39ut)+z10;
+z14=(2ut,0ut)+z10;
+z15=(21ut,18ut)+z10;
+z16=(6ut,2ut)+z10;
+z17=(19ut,0ut)+z10;
+z18=(0ut,18ut)+z17;
+z19=(14ut,39ut)+z17;
+z20=(7ut,0ut)+z17;
+z21=(-6ut,11ut)+z17;
+z22=(28ut,18ut)+z17;
+z23=(23ut,0ut)+z17;
+z24=(4ut,19ut)+z23;
+z25=(-2ut,7ut)+z23;
+z26=(3ut,0ut)+z23;
+z27=(9.3ut,(9.3*8/9-6)*ut)+z23;
+z28=(-1ut,13ut)+z23;
+z29=(8ut,13ut)+z23;
+z30=(9ut,2ut)+z23;
+%
+%
+%
+%
+draw z1{an}..z2{up}..z3{left}..z4..z1--z5
+ & z5{z1-z5}..z6{right}..z7{down}..z8{down}..z9
+ ..z12{up}..z13{left}..z11{z14-z13}..z14{right}
+ ..z19{(0,1)}
+ & z19-- z20;
+draw z21{dir 340}
+ ..z29{z28-z25}..z24{left}..z28{z25-z28}
+ ..z26{right}..z30--z27;
+%
+%
+labels(range 1 thru 16);
+endchar;
diff --git a/fonts/twcal/twligtb1.mf b/fonts/twcal/twligtb1.mf
new file mode 100644
index 0000000000..967e74f38c
--- /dev/null
+++ b/fonts/twcal/twligtb1.mf
@@ -0,0 +1,319 @@
+ligtable ||:
+ oct"034"|=:|oct"024",
+ "b"|=:|oct"027",
+ "e"|=:oct"030",
+ "f"|=:|oct"027",
+ "h"|=:|oct"027",
+ "i"|=:|oct"024",
+ "j"|=:|oct"025",
+ "k"|=:|oct"027",
+ "l"|=:|oct"027",
+ "s" kern 2ut,
+ "t"|=:oct"017",
+ "u"|=:|oct"024";
+
+ligtable oct"001":
+ oct"002"|=:oct"003",
+ "s"|=:oct"003";
+
+ligtable oct"002":
+ oct"002"|=:oct"003",
+ "e"=:oct"205",
+ "s"|=:oct"003",
+ "t"=:oct"207";
+
+ligtable oct"003":
+ oct"000"=:|oct"004",
+ oct"001"=:|oct"004",
+ oct"003"=:|oct"004",
+ oct"211"=:|oct"004",
+ oct"200"=:|oct"004",
+ oct"203"=:|oct"004",
+ oct"031"=:|oct"004",
+ oct"032"=:|oct"004",
+ oct"033"=:|oct"004",
+ oct"034"=:|oct"004",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"=:|oct"004",
+ "b"=:|oct"004",
+ "c"=:|oct"004",
+ "d"=:|oct"004",
+ "e"=:oct"206",
+ "f"=:|oct"004",
+ "g"=:|oct"004",
+ "h"=:|oct"004",
+ "i"=:|oct"004",
+ "j"=:|oct"004",
+ "k"=:|oct"004",
+ "l"=:|oct"004",
+ "m"=:|oct"004",
+ "n"=:|oct"004",
+ "o"=:|oct"004",
+ "p"=:|oct"004",
+ "q"=:|oct"004",
+ "r"=:|oct"004",
+ "s"=:|oct"004",
+ "t"=:oct"210",
+ "u"=:|oct"004",
+ "v"=:|oct"004",
+ "w"=:|oct"004",
+ "x"=:|oct"004",
+ "y"=:|oct"004",
+ "z"=:|oct"004";
+
+ligtable oct"004":
+ "e"=:oct"206",
+ "s"|=:oct"003",
+ "t"=:oct"210";
+
+ligtable oct"017":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"216",
+ "s"|=:oct"003",
+ "t"=:oct"211";
+
+ligtable oct"020":
+ oct"002"|=:oct"003",
+ "s"|=:oct"003";
+
+ligtable oct"021":
+ oct"002"|=:oct"003",
+ "s"|=:oct"003";
+
+ligtable oct"022":
+ oct"002"|=:oct"003",
+ "s"|=:oct"003";
+
+ligtable oct"023":
+ oct"002"|=:oct"003",
+ "s"|=:oct"003";
+
+ligtable oct"024":
+ oct"002"|=:oct"003",
+ "s"|=:oct"003";
+
+ligtable oct"025":
+ oct"002"|=:oct"003",
+ "s"|=:oct"003";
+
+ligtable oct"026":
+ oct"002"|=:oct"003",
+ "s"|=:oct"003";
+
+ligtable oct"030":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"=:oct"324",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"031":
+ oct"000"=:|oct"000",
+ oct"001"=:|oct"000",
+ oct"003"=:|oct"000",
+ oct"004"=:|oct"000",
+ oct"211"=:|oct"000",
+ oct"200"=:|oct"000",
+ oct"203"=:|oct"000",
+ oct"031"=:|oct"000",
+ oct"032"=:|oct"000",
+ oct"033"=:|oct"000",
+ oct"034"=:|oct"000",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"=:|oct"000",
+ "b"=:|oct"000",
+ "c"=:|oct"000",
+ "d"=:|oct"000",
+ "e"=:oct"240",
+ "f"=:|oct"000",
+ "g"=:|oct"000",
+ "h"=:|oct"000",
+ "i"=:|oct"000",
+ "j"=:|oct"000",
+ "k"=:|oct"000",
+ "l"=:|oct"000",
+ "m"=:|oct"000",
+ "n"=:|oct"000",
+ "o"=:|oct"000",
+ "p"=:|oct"000",
+ "q"=:|oct"000",
+ "r"=:|oct"000",
+ "s"=:|oct"000",
+ "t"=:|oct"000",
+ "u"=:|oct"000",
+ "v"=:|oct"000",
+ "w"=:|oct"000",
+ "x"=:|oct"000",
+ "y"=:|oct"000",
+ "z"=:|oct"000";
+
+ligtable oct"032":
+ "t"=:oct"270",
+ "s"|=:oct"003";
+
+ligtable oct"033":
+ "s"|=:oct"003";
+
+ligtable oct"034":
+ "s"|=:oct"003",
+ "t"=:oct"245";
+
+ligtable "-":
+ "-"=:oct"173";
+
+ligtable "0":
+ "." kern k#;
+
+ligtable "1":
+ "." kern k#;
+
+ligtable "2":
+ "." kern k#;
+
+ligtable "3":
+ "." kern k#;
+
+ligtable "4":
+ "." kern k#;
+
+ligtable "5":
+ "." kern k#;
+
+ligtable "6":
+ "." kern k#;
+
+ligtable "7":
+ "." kern k#;
+
+ligtable "8":
+ "." kern k#;
+
+ligtable "9":
+ "." kern k#;
+
+ligtable "A":
+ "s"|=:oct"003";
+
+ligtable "C":
+ "s"|=:oct"003";
+
+ligtable "E":
+ "s"|=:oct"003";
+
+ligtable "G":
+ "e"=:oct"255",
+ "s"|=:oct"003";
+
+ligtable "H":
+ "s"|=:oct"003";
+
+ligtable "I":
+ "h"|=:|oct"026",
+ "n"|=:|oct"026",
+ "m"|=:|oct"026",
+ "t"|=:oct"017";
+
+ligtable "J":
+ "e"=:oct"256";
+
+ligtable "K":
+ "e"=:oct"303",
+ "s"|=:oct"003";
+
+ligtable "L":
+ "e"=:oct"313",
+ "s"|=:oct"003";
+
+ligtable "M":
+ "e"=:oct"314",
+ "s"|=:oct"003";
+
+ligtable "N":
+ "e"|=:oct"030";
+
+ligtable "O":
+ "t"|=:oct"017";
+
+ligtable "P":
+ "t"|=:oct"017";
+
+ligtable "Q":
+ "s"|=:oct"003";
+
+ligtable "R":
+ "e"=:oct"315",
+ "s"|=:oct"003";
+
+ligtable "S":
+ "e"|=:oct"030";
+
+ligtable "T":
+ "a" kern k#,
+ "o" kern k#,
+ "e" kern k#,
+ "u" kern kk#,
+ "r" kern kk#;
+
+ligtable "U":
+ "s"|=:oct"003";
+
+ligtable "V":
+ "a" kern k#,
+ "o" kern k#,
+ "e" kern k#,
+ "u" kern kk#,
+ "r" kern kk#;
+
+ligtable "W":
+ "a" kern k#,
+ "o" kern k#,
+ "e" kern k#,
+ "u" kern kk#,
+ "r" kern kk#;
+
+ligtable "X":
+ "s"|=:oct"003";
+
+ligtable "Y":
+ "s"|=:oct"003";
+
+ligtable "Z":
+ "e"=:oct"257",
+ "s"|=:oct"003";
diff --git a/fonts/twcal/twligtb2.mf b/fonts/twcal/twligtb2.mf
new file mode 100644
index 0000000000..9632dc8ff9
--- /dev/null
+++ b/fonts/twcal/twligtb2.mf
@@ -0,0 +1,800 @@
+ligtable "a":
+ oct"000"|=:|oct"022",
+ oct"001"|=:|oct"022",
+ oct"003"|=:|oct"022",
+ oct"004"|=:|oct"022",
+ oct"211"|=:|oct"022",
+ oct"200"|=:|oct"022",
+ oct"203"|=:|oct"022",
+ oct"031"|=:|oct"022",
+ oct"032"|=:|oct"022",
+ oct"033"|=:|oct"022",
+ oct"034"|=:|oct"022",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"022",
+ "b"|=:|oct"022",
+ "c"|=:|oct"022",
+ "d"|=:|oct"022",
+ "e"|=:|oct"022",
+ "f"|=:|oct"022",
+ "g"|=:|oct"022",
+ "h"|=:|oct"022",
+ "i"|=:|oct"022",
+ "j"|=:|oct"022",
+ "k"|=:|oct"022",
+ "l"|=:|oct"022",
+ "m"|=:|oct"022",
+ "n"|=:|oct"022",
+ "o"|=:|oct"022",
+ "p"|=:|oct"022",
+ "q"|=:|oct"022",
+ "r"|=:|oct"022",
+ "s"|=:|oct"022",
+ "t"=:oct"271",
+ "u"|=:|oct"022",
+ "v"|=:|oct"022",
+ "w"|=:|oct"022",
+ "x"|=:|oct"022",
+ "y"|=:|oct"022",
+ "z"|=:|oct"022";
+
+ligtable "b":
+ oct"002"|=:oct"004",
+ "e"=:oct"241",
+ "s"|=:oct"003";
+
+ligtable "c":
+ oct"133"=:|oct"006",
+ oct"005"=:|oct"006",
+ "!"=:|oct"006",
+ oct"042"=:|oct"006",
+ "("=:|oct"006",
+ ")"=:|oct"006",
+ "*"=:|oct"006",
+ "+"=:|oct"006",
+ ","=:|oct"006",
+ oct"055"=:|oct"006",
+ oct"173"=:|oct"006",
+ oct"174"=:|oct"006",
+ "."=:|oct"006",
+ "/"=:|oct"006",
+ ":"=:|oct"006",
+ ";"=:|oct"006",
+ oct"074"=:|oct"006",
+ oct"075"=:|oct"006",
+ oct"076"=:|oct"006",
+ "?"=:|oct"006",
+ oct"134"=:|oct"006",
+ oct"140"=:|oct"006",
+ oct"175"=:|oct"006",
+ oct"002"|=:oct"004",
+ "s"|=:oct"003";
+
+ligtable "d":
+ oct"000"|=:|oct"022",
+ oct"001"|=:|oct"022",
+ oct"003"|=:|oct"022",
+ oct"004"|=:|oct"022",
+ oct"211"|=:|oct"022",
+ oct"200"|=:|oct"022",
+ oct"203"|=:|oct"022",
+ oct"031"|=:|oct"022",
+ oct"032"|=:|oct"022",
+ oct"033"|=:|oct"022",
+ oct"034"|=:|oct"022",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"022",
+ "b"|=:|oct"022",
+ "c"|=:|oct"022",
+ "d"|=:|oct"022",
+ "e"=:oct"212",
+ "f"|=:|oct"022",
+ "g"|=:|oct"022",
+ "h"|=:|oct"022",
+ "i"|=:|oct"022",
+ "j"|=:|oct"022",
+ "k"|=:|oct"022",
+ "l"|=:|oct"022",
+ "m"|=:|oct"022",
+ "n"|=:|oct"022",
+ "o"|=:|oct"022",
+ "p"|=:|oct"022",
+ "q"|=:|oct"022",
+ "r"|=:|oct"022",
+ "s"|=:|oct"022",
+ "t"=:oct"215",
+ "u"|=:|oct"022",
+ "v"|=:|oct"022",
+ "w"|=:|oct"022",
+ "x"|=:|oct"022",
+ "y"|=:|oct"022",
+ "z"|=:|oct"022";
+
+ligtable "e":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"=:oct"336",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable "f":
+ oct"133"=:|oct"007",
+ oct"005"=:|oct"007",
+ "!"=:|oct"007",
+ oct"042"=:|oct"007",
+ "("=:|oct"007",
+ ")"=:|oct"007",
+ "*"=:|oct"007",
+ "+"=:|oct"007",
+ ","=:|oct"007",
+ oct"055"=:|oct"007",
+ oct"173"=:|oct"007",
+ oct"174"=:|oct"007",
+ "."=:|oct"007",
+ "/"=:|oct"007",
+ ":"=:|oct"007",
+ ";"=:|oct"007",
+ oct"074"=:|oct"007",
+ oct"075"=:|oct"007",
+ oct"076"=:|oct"007",
+ "?"=:|oct"007",
+ oct"134"=:|oct"007",
+ oct"140"=:|oct"007",
+ oct"175"=:|oct"007",
+ "e"=:oct"220",
+ "f"=:oct"200",
+ oct"002"|=:oct"003",
+ "s"|=:oct"003",
+ "t"=:oct"322";
+
+ligtable "g":
+ oct"133"=:|oct"010",
+ oct"005"=:|oct"010",
+ "!"=:|oct"010",
+ oct"042"=:|oct"010",
+ "("=:|oct"010",
+ ")"=:|oct"010",
+ "*"=:|oct"010",
+ "+"=:|oct"010",
+ ","=:|oct"010",
+ oct"055"=:|oct"010",
+ oct"173"=:|oct"010",
+ oct"174"=:|oct"010",
+ "."=:|oct"010",
+ "/"=:|oct"010",
+ ":"=:|oct"010",
+ ";"=:|oct"010",
+ oct"074"=:|oct"010",
+ oct"075"=:|oct"010",
+ oct"076"=:|oct"010",
+ "?"=:|oct"010",
+ oct"134"=:|oct"010",
+ oct"140"=:|oct"010",
+ oct"175"=:|oct"010",
+ oct"002"|=:oct"003",
+ "e" =: oct"213",
+ "s"|=:oct"003";
+
+ligtable "h":
+ oct"000"|=:|oct"022",
+ oct"001"|=:|oct"022",
+ oct"003"|=:|oct"022",
+ oct"004"|=:|oct"022",
+ oct"211"|=:|oct"022",
+ oct"200"|=:|oct"022",
+ oct"203"|=:|oct"022",
+ oct"031"|=:|oct"022",
+ oct"032"|=:|oct"022",
+ oct"033"=:oct"300",
+ oct"034"|=:|oct"022",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"022",
+ "b"|=:|oct"022",
+ "c"|=:|oct"022",
+ "d"|=:|oct"022",
+ "e"=:oct"221",
+ "f"|=:|oct"022",
+ "g"|=:|oct"022",
+ "h"|=:|oct"022",
+ "i"|=:|oct"022",
+ "j"|=:|oct"022",
+ "k"|=:|oct"022",
+ "l"=:oct"350",
+ "m"|=:|oct"022",
+ "n"|=:|oct"022",
+ "o"|=:|oct"022",
+ "p"|=:|oct"022",
+ "q"|=:|oct"022",
+ "r"|=:|oct"022",
+ "s"|=:|oct"022",
+ "t"=:oct"222",
+ "u"|=:|oct"022",
+ "v"|=:|oct"022",
+ "w"|=:|oct"022",
+ "x"|=:|oct"022",
+ "y"|=:|oct"022",
+ "z"|=:|oct"022";
+
+ligtable "i":
+ oct"000"|=:|oct"021",
+ oct"001"|=:|oct"021",
+ oct"003"|=:|oct"021",
+ oct"004"|=:|oct"021",
+ oct"211"|=:|oct"021",
+ oct"200"|=:|oct"021",
+ oct"203"|=:|oct"021",
+ oct"031"|=:|oct"021",
+ oct"032"|=:|oct"021",
+ oct"033"|=:|oct"021",
+ oct"034"|=:|oct"021",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"021",
+ "b"|=:|oct"021",
+ "c"|=:|oct"021",
+ "d"|=:|oct"021",
+ "e"=:oct"201",
+ "f"|=:|oct"021",
+ "g"|=:|oct"021",
+ "h"|=:|oct"021",
+ "i"|=:|oct"021",
+ "j"|=:|oct"021",
+ "k"|=:|oct"021",
+ "l"|=:|oct"021",
+ "m"|=:|oct"021",
+ "n"|=:|oct"021",
+ "o"|=:|oct"021",
+ "p"|=:|oct"021",
+ "q"|=:|oct"021",
+ "r"|=:|oct"021",
+ "s"|=:|oct"021",
+ "t"=:oct"304",
+ "u"|=:|oct"021",
+ "v"|=:|oct"021",
+ "w"|=:|oct"021",
+ "x"|=:|oct"021",
+ "y"|=:|oct"021",
+ "z"|=:|oct"021";
+
+ligtable "j":
+ oct"133"=:|oct"011",
+ oct"005"=:|oct"011",
+ "!"=:|oct"011",
+ oct"042"=:|oct"011",
+ "("=:|oct"011",
+ ")"=:|oct"011",
+ "*"=:|oct"011",
+ "+"=:|oct"011",
+ ","=:|oct"011",
+ oct"055"=:|oct"011",
+ oct"173"=:|oct"011",
+ oct"174"=:|oct"011",
+ "."=:|oct"011",
+ "/"=:|oct"011",
+ ":"=:|oct"011",
+ ";"=:|oct"011",
+ oct"074"=:|oct"011",
+ oct"075"=:|oct"011",
+ oct"076"=:|oct"011",
+ "?"=:|oct"011",
+ oct"134"=:|oct"011",
+ oct"140"=:|oct"011",
+ oct"175"=:|oct"011",
+ oct"002"|=:oct"004",
+ "e"=:oct"225",
+ "s"|=:oct"003";
+
+ligtable "k":
+ oct"000"|=:|oct"024",
+ oct"001"|=:|oct"024",
+ oct"003"|=:|oct"024",
+ oct"004"|=:|oct"024",
+ oct"211"|=:|oct"024",
+ oct"200"|=:|oct"024",
+ oct"203"|=:|oct"024",
+ oct"031"|=:|oct"024",
+ oct"032"|=:|oct"024",
+ oct"033"|=:|oct"024",
+ oct"034"|=:|oct"024",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"024",
+ "b"|=:|oct"024",
+ "c"|=:|oct"024",
+ "d"|=:|oct"024",
+ "e"=:oct"224",
+ "f"|=:|oct"024",
+ "g"|=:|oct"024",
+ "h"|=:|oct"024",
+ "i"|=:|oct"024",
+ "j"|=:|oct"024",
+ "k"|=:|oct"024",
+ "l"|=:|oct"024",
+ "m"|=:|oct"024",
+ "n"|=:|oct"024",
+ "o"|=:|oct"024",
+ "p"|=:|oct"024",
+ "q"|=:|oct"024",
+ "r"|=:|oct"024",
+ "s"|=:|oct"024",
+ "t"=:oct"310",
+ "u"|=:|oct"024",
+ "v"|=:|oct"024",
+ "w"|=:|oct"024",
+ "x"|=:|oct"024",
+ "y"|=:|oct"024",
+ "z"|=:|oct"024";
+
+ligtable "l":
+ oct"133"=:|oct"012",
+ oct"005"=:|oct"012",
+ "!"=:|oct"012",
+ oct"042"=:|oct"012",
+ "("=:|oct"012",
+ ")"=:|oct"012",
+ "*"=:|oct"012",
+ "+"=:|oct"012",
+ ","=:|oct"012",
+ oct"055"=:|oct"012",
+ oct"173"=:|oct"012",
+ oct"174"=:|oct"012",
+ "."=:|oct"012",
+ "/"=:|oct"012",
+ ":"=:|oct"012",
+ ";"=:|oct"012",
+ oct"074"=:|oct"012",
+ oct"075"=:|oct"012",
+ oct"076"=:|oct"012",
+ "?"=:|oct"012",
+ oct"134"=:|oct"012",
+ oct"140"=:|oct"012",
+ oct"175"=:|oct"012",
+ oct"002"|=:oct"004",
+ "e"=:oct"202",
+ "l"=:oct"203",
+ "s"|=:oct"003",
+ "t"=:oct"316";
+
+ligtable "m":
+ oct"000"|=:|oct"023",
+ oct"001"|=:|oct"023",
+ oct"003"|=:|oct"023",
+ oct"004"|=:|oct"023",
+ oct"211"|=:|oct"023",
+ oct"200"|=:|oct"023",
+ oct"203"|=:|oct"023",
+ oct"031"|=:|oct"023",
+ oct"032"|=:|oct"023",
+ oct"033"=:oct"342",
+ oct"034"|=:|oct"023",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"023",
+ "b"|=:|oct"023",
+ "c"|=:|oct"023",
+ "d"|=:|oct"023",
+ "e"=:oct"223",
+ "f"|=:|oct"023",
+ "g"|=:|oct"023",
+ "h"|=:|oct"023",
+ "i"|=:|oct"023",
+ "j"|=:|oct"023",
+ "k"|=:|oct"023",
+ "l"|=:|oct"023",
+ "m"|=:|oct"023",
+ "n"|=:|oct"023",
+ "o"|=:|oct"023",
+ "p"|=:|oct"023",
+ "q"|=:|oct"023",
+ "r"|=:|oct"023",
+ "s"|=:|oct"023",
+ "t"=:oct"346",
+ "u"|=:|oct"023",
+ "v"|=:|oct"023",
+ "w"|=:|oct"023",
+ "x"|=:|oct"023",
+ "y"|=:|oct"023",
+ "z"|=:|oct"023";
+
+ligtable "n":
+ oct"000"|=:|oct"025",
+ oct"001"|=:|oct"025",
+ oct"003"|=:|oct"025",
+ oct"004"|=:|oct"025",
+ oct"211"|=:|oct"025",
+ oct"212"|=:|oct"025",
+ oct"200"|=:|oct"025",
+ oct"203"|=:|oct"025",
+ oct"031"|=:|oct"025",
+ oct"032"|=:|oct"025",
+ oct"033"=:oct"343",
+ oct"034"=:oct"312",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"025",
+ "b"|=:|oct"025",
+ "c"|=:|oct"025",
+ "d"|=:|oct"025",
+ "e"=:oct"217",
+ "f"|=:|oct"025",
+ "g"|=:|oct"025",
+ "h"|=:|oct"025",
+ "i"|=:|oct"025",
+ "j"|=:|oct"025",
+ "k"|=:|oct"025",
+ "l"|=:|oct"025",
+ "m"|=:|oct"025",
+ "n"|=:|oct"025",
+ "o"|=:|oct"025",
+ "p"|=:|oct"025",
+ "q"|=:|oct"025",
+ "r"|=:|oct"025",
+ "s"|=:|oct"025",
+ "t"=:oct"301",
+ "u"|=:|oct"025",
+ "v"|=:|oct"025",
+ "w"|=:|oct"025",
+ "x"|=:|oct"025",
+ "y"|=:|oct"025",
+ "z"|=:|oct"025";
+
+ligtable "o":
+ oct"002"|=:oct"003",
+ "s"|=:oct"003";
+
+ligtable "p":
+ oct"000"|=:|oct"026",
+ oct"001"|=:|oct"026",
+ oct"003"|=:|oct"026",
+ oct"004"|=:|oct"026",
+ oct"211"|=:|oct"026",
+ oct"200"|=:|oct"026",
+ oct"203"|=:|oct"026",
+ oct"031"|=:|oct"026",
+ oct"032"|=:|oct"026",
+ oct"033"|=:|oct"026",
+ oct"034"|=:|oct"026",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"026",
+ "b"|=:|oct"026",
+ "c"|=:|oct"026",
+ "d"|=:|oct"026",
+ "e"=:oct"242",
+ "f"|=:|oct"026",
+ "g"|=:|oct"026",
+ "h"|=:|oct"026",
+ "i"|=:|oct"026",
+ "j"|=:|oct"026",
+ "k"|=:|oct"026",
+ "l"|=:|oct"026",
+ "m"|=:|oct"026",
+ "n"|=:|oct"026",
+ "o"|=:|oct"026",
+ "p"|=:|oct"026",
+ "q"|=:|oct"026",
+ "r"|=:|oct"026",
+ "s"|=:|oct"026",
+ "t"=:oct"344",
+ "u"|=:|oct"026",
+ "v"|=:|oct"026",
+ "w"|=:|oct"026",
+ "x"|=:|oct"026",
+ "y"|=:|oct"026",
+ "z"|=:|oct"026";
+
+ligtable "q":
+ oct"133"=:|oct"013",
+ oct"005"=:|oct"013",
+ "!"=:|oct"013",
+ oct"042"=:|oct"013",
+ "("=:|oct"013",
+ ")"=:|oct"013",
+ "*"=:|oct"013",
+ "+"=:|oct"013",
+ ","=:|oct"013",
+ oct"055"=:|oct"013",
+ oct"173"=:|oct"013",
+ oct"174"=:|oct"013",
+ "."=:|oct"013",
+ "/"=:|oct"013",
+ ":"=:|oct"013",
+ ";"=:|oct"013",
+ oct"074"=:|oct"013",
+ oct"075"=:|oct"013",
+ oct"076"=:|oct"013",
+ "?"=:|oct"013",
+ oct"134"=:|oct"013",
+ oct"140"=:|oct"013",
+ oct"175"=:|oct"013",
+ oct"002"|=:oct"003",
+ "s"|=:oct"003";
+
+ligtable "r":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct "237",
+ "s"|=:oct"003";
+
+ligtable "s":
+ oct"000"=:|oct"002",
+ oct"001"=:|oct"002",
+ oct"003"=:|oct"002",
+ oct"211"=:|oct"002",
+ oct"200"=:|oct"002",
+ oct"203"=:|oct"002",
+ oct"031"=:|oct"002",
+ oct"032"=:|oct"002",
+ oct"033"=:|oct"002",
+ oct"034"=:|oct"002",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"=:|oct"002",
+ "b"=:|oct"002",
+ "c"=:|oct"002",
+ "d"=:|oct"002",
+ "e"=:oct"205",
+ "f"=:|oct"002",
+ "g"=:|oct"002",
+ "h"=:|oct"002",
+ "i"=:|oct"002",
+ "j"=:|oct"002",
+ "k"=:|oct"002",
+ "l"=:|oct"002",
+ "m"=:|oct"002",
+ "n"=:|oct"002",
+ "o"=:|oct"002",
+ "p"=:|oct"002",
+ "q"=:|oct"002",
+ "r"=:|oct"002",
+ "s"=:|oct"002",
+ "t"=:oct"207",
+ "u"=:|oct"002",
+ "v"=:|oct"002",
+ "w"=:|oct"002",
+ "x"=:|oct"002",
+ "y"=:|oct"002",
+ "z"=:|oct"002";
+
+ligtable "t":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"216",
+ "s"|=:oct"003",
+ "t"=:oct"211";
+
+ligtable "u":
+ oct"000"|=:|oct"023",
+ oct"001"|=:|oct"023",
+ oct"003"|=:|oct"023",
+ oct"004"|=:|oct"023",
+ oct"211"|=:|oct"023",
+ oct"200"|=:|oct"023",
+ oct"203"|=:|oct"023",
+ oct"031"|=:|oct"023",
+ oct"032"|=:|oct"023",
+ oct"033"|=:|oct"023",
+ oct"034"|=:|oct"023",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"023",
+ "b"|=:|oct"023",
+ "c"|=:|oct"023",
+ "d"|=:|oct"023",
+ "e"=:oct"230",
+ "f"|=:|oct"023",
+ "g"|=:|oct"023",
+ "h"|=:|oct"023",
+ "i"|=:|oct"023",
+ "j"|=:|oct"023",
+ "k"|=:|oct"023",
+ "l"|=:|oct"023",
+ "m"|=:|oct"023",
+ "n"|=:|oct"023",
+ "o"|=:|oct"023",
+ "p"|=:|oct"023",
+ "q"|=:|oct"023",
+ "r"|=:|oct"023",
+ "s"|=:|oct"023",
+ "t"=:oct"246",
+ "u"|=:|oct"023",
+ "v"|=:|oct"023",
+ "w"|=:|oct"023",
+ "x"|=:|oct"023",
+ "y"|=:|oct"023",
+ "z"|=:|oct"023";
+
+ligtable "v":
+ oct"133"=:|oct"135",
+ oct"005"=:|oct"135",
+ "!"=:|oct"135",
+ oct"042"=:|oct"135",
+ "("=:|oct"135",
+ ")"=:|oct"135",
+ "*"=:|oct"135",
+ "+"=:|oct"135",
+ ","=:|oct"135",
+ oct"055"=:|oct"135",
+ oct"173"=:|oct"135",
+ oct"174"=:|oct"135",
+ "."=:|oct"135",
+ "/"=:|oct"135",
+ ":"=:|oct"135",
+ ";"=:|oct"135",
+ oct"074"=:|oct"135",
+ oct"075"=:|oct"135",
+ oct"076"=:|oct"135",
+ "?"=:|oct"135",
+ oct"134"=:|oct"135",
+ oct"140"=:|oct"135",
+ oct"175"=:|oct"135",
+ oct"002"|=:oct"004",
+ "," kern k#,
+ "e"=:oct"243",
+ "s"|=:oct"003";
+
+ligtable "w":
+ oct"133"=:|oct"136",
+ oct"005"=:|oct"136",
+ "!"=:|oct"136",
+ oct"042"=:|oct"136",
+ "("=:|oct"136",
+ ")"=:|oct"136",
+ "*"=:|oct"136",
+ "+"=:|oct"136",
+ ","=:|oct"136",
+ oct"055"=:|oct"136",
+ oct"173"=:|oct"136",
+ oct"174"=:|oct"136",
+ "."=:|oct"136",
+ "/"=:|oct"136",
+ ":"=:|oct"136",
+ ";"=:|oct"136",
+ oct"074"=:|oct"136",
+ oct"075"=:|oct"136",
+ oct"076"=:|oct"136",
+ "?"=:|oct"136",
+ oct"134"=:|oct"136",
+ oct"140"=:|oct"136",
+ oct"175"=:|oct"136",
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"244",
+ "s"|=:oct"003";
+
+ligtable "x":
+ oct"133"=:|oct"137",
+ oct"005"=:|oct"137",
+ "!"=:|oct"137",
+ oct"042"=:|oct"137",
+ "("=:|oct"137",
+ ")"=:|oct"137",
+ "*"=:|oct"137",
+ "+"=:|oct"137",
+ ","=:|oct"137",
+ oct"055"=:|oct"137",
+ oct"173"=:|oct"137",
+ oct"174"=:|oct"137",
+ "."=:|oct"137",
+ "/"=:|oct"137",
+ ":"=:|oct"137",
+ ";"=:|oct"137",
+ oct"074"=:|oct"137",
+ oct"075"=:|oct"137",
+ oct"076"=:|oct"137",
+ "?"=:|oct"137",
+ oct"134"=:|oct"137",
+ oct"140"=:|oct"137",
+ oct"175"=:|oct"137",
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "s"|=:oct"003";
+
+ligtable "y":
+ oct"133"=:|oct"014",
+ oct"005"=:|oct"014",
+ "!"=:|oct"014",
+ oct"042"=:|oct"014",
+ "("=:|oct"014",
+ ")"=:|oct"014",
+ "*"=:|oct"014",
+ "+"=:|oct"014",
+ ","=:|oct"014",
+ oct"055"=:|oct"014",
+ oct"173"=:|oct"014",
+ oct"174"=:|oct"014",
+ "."=:|oct"014",
+ "/"=:|oct"014",
+ ":"=:|oct"014",
+ ";"=:|oct"014",
+ oct"074"=:|oct"014",
+ oct"075"=:|oct"014",
+ oct"076"=:|oct"014",
+ "?"=:|oct"014",
+ oct"134"=:|oct"014",
+ oct"140"=:|oct"014",
+ oct"175"=:|oct"014",
+ oct"002"|=:oct"003",
+ "s"|=:oct"003";
+
+ligtable "z":
+ oct"000"|=:|oct"022",
+ oct"001"|=:|oct"022",
+ oct"003"|=:|oct"022",
+ oct"004"|=:|oct"022",
+ oct"211"|=:|oct"022",
+ oct"200"|=:|oct"022",
+ oct"203"|=:|oct"022",
+ oct"031"|=:|oct"022",
+ oct"032"|=:|oct"022",
+ oct"033"|=:|oct"022",
+ oct"034"|=:|oct"022",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"022",
+ "b"|=:|oct"022",
+ "c"|=:|oct"022",
+ "d"|=:|oct"022",
+ "e"=:oct"226",
+ "f"|=:|oct"022",
+ "g"|=:|oct"022",
+ "h"|=:|oct"022",
+ "i"|=:|oct"022",
+ "j"|=:|oct"022",
+ "k"|=:|oct"022",
+ "l"|=:|oct"022",
+ "m"|=:|oct"022",
+ "n"|=:|oct"022",
+ "o"|=:|oct"022",
+ "p"|=:|oct"022",
+ "q"|=:|oct"022",
+ "r"|=:|oct"022",
+ "s"|=:|oct"022",
+ "t"=:oct"260",
+ "u"|=:|oct"022",
+ "v"|=:|oct"022",
+ "w"|=:|oct"022",
+ "x"|=:|oct"022",
+ "y"|=:|oct"022",
+ "z"|=:|oct"022";
+
+
+ligtable oct"173":
+ "-"=:oct"174";
diff --git a/fonts/twcal/twligtb3.mf b/fonts/twcal/twligtb3.mf
new file mode 100644
index 0000000000..5ecfc9e2fa
--- /dev/null
+++ b/fonts/twcal/twligtb3.mf
@@ -0,0 +1,782 @@
+ligtable oct"200":
+ oct"133"=:|oct"015",
+ oct"005"=:|oct"015",
+ "!"=:|oct"015",
+ oct"042"=:|oct"015",
+ "("=:|oct"015",
+ ")"=:|oct"015",
+ "*"=:|oct"015",
+ "+"=:|oct"015",
+ ","=:|oct"015",
+ oct"055"=:|oct"015",
+ oct"173"=:|oct"015",
+ oct"174"=:|oct"015",
+ "."=:|oct"015",
+ "/"=:|oct"015",
+ ":"=:|oct"015",
+ ";"=:|oct"015",
+ oct"074"=:|oct"015",
+ oct"075"=:|oct"015",
+ oct"076"=:|oct"015",
+ "?"=:|oct"015",
+ oct"134"=:|oct"015",
+ oct"140"=:|oct"015",
+ oct"175"=:|oct"015",
+ oct"002"=:oct"003",
+ "e"=:oct"227",
+ "s"|=:oct"003";
+
+ligtable oct"201":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"202":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"=:oct"321",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"=:oct"332",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"203":
+ oct"133"=:|oct"016",
+ oct"005"=:|oct"016",
+ "!"=:|oct"016",
+ oct"042"=:|oct"016",
+ "("=:|oct"016",
+ ")"=:|oct"016",
+ "*"=:|oct"016",
+ "+"=:|oct"016",
+ ","=:|oct"016",
+ oct"055"=:|oct"016",
+ oct"173"=:|oct"016",
+ oct"174"=:|oct"016",
+ "."=:|oct"016",
+ "/"=:|oct"016",
+ ":"=:|oct"016",
+ ";"=:|oct"016",
+ oct"074"=:|oct"016",
+ oct"075"=:|oct"016",
+ oct"076"=:|oct"016",
+ "?"=:|oct"016",
+ oct"134"=:|oct"016",
+ oct"140"=:|oct"016",
+ oct"175"=:|oct"016",
+ oct"002"=:oct"003",
+ "e"=:oct"204",
+ "s"|=:oct"003",
+ "t"=:oct"234";
+
+ligtable oct"204":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"205":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"206":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"207":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"232",
+ "s"|=:oct"003";
+
+ligtable oct"210":
+ oct"002"|=:oct"003",
+ "e"=:oct"233",
+ "," kern k#,
+ "s"|=:oct"003";
+
+ligtable oct"211":
+ oct"002"=:oct"003",
+ "," kern k#,
+ "e"=:oct"231",
+ "s"|=:oct"003";
+
+ligtable oct"212":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"213":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"=:oct"214",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"=:oct"266",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"214":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"215":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "s"|=:oct"003";
+
+ligtable oct"216":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"217":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"220":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"221":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"222":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"236",
+ "s"|=:oct"003";
+
+ligtable oct"223":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"224":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"225":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"=:oct"326",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"226":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"227":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
diff --git a/fonts/twcal/twligtb4.mf b/fonts/twcal/twligtb4.mf
new file mode 100644
index 0000000000..9a375c6454
--- /dev/null
+++ b/fonts/twcal/twligtb4.mf
@@ -0,0 +1,769 @@
+ligtable oct"230":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"231":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"232":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"233":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"234":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"235",
+ "s"|=:oct"003";
+
+ligtable oct"235":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"236":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"237":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"240":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"241":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"=:oct"320",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"242":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"243":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"244":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"245":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"251",
+ "s"|=:oct"003",
+ "t"=:oct"247";
+
+ligtable oct"246":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"252",
+ "s"|=:oct"003",
+ "t"=:oct"250";
+
+ligtable oct"247":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"253",
+ "s"|=:oct"003";
+
+ligtable oct"250":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"254",
+ "s"|=:oct"003";
+
+ligtable oct"251":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"=:oct"262",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"252":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"=:oct"263",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"253":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"254":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"255":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"256":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
diff --git a/fonts/twcal/twligtb5.mf b/fonts/twcal/twligtb5.mf
new file mode 100644
index 0000000000..910a4b26b4
--- /dev/null
+++ b/fonts/twcal/twligtb5.mf
@@ -0,0 +1,826 @@
+ligtable oct"257":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"260":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"261",
+ "s"|=:oct"003";
+
+ligtable oct"261":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"262":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"264",
+ "s"|=:oct"003";
+
+ligtable oct"263":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"265",
+ "s"|=:oct"003";
+
+ligtable oct"264":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"265":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"266":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"267",
+ "s"|=:oct"003";
+
+ligtable oct"267":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"270":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"274",
+ "t"=:oct"272",
+ "s"|=:oct"003";
+
+ligtable oct"271":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"275",
+ "t"=:oct"273",
+ "s"|=:oct"003";
+
+ligtable oct"272":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"276",
+ "s"|=:oct"003";
+
+ligtable oct"273":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"277",
+ "s"|=:oct"003";
+
+ligtable oct"274":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"275":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"276":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"277":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"300":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "s"|=:oct"003";
+
+ligtable oct"301":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"302",
+ "s"|=:oct"003";
+
+ligtable oct"302":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"303":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"304":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"305",
+ "t"=:oct"306",
+ "s"|=:oct"003";
+
+ligtable oct"305":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"306":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"307",
+ "s"|=:oct"003";
+
+ligtable oct"307":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"310":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"311",
+ "s"|=:oct"003";
+
+ligtable oct"311":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"312":
+ "s"|=:oct"003";
+
+ligtable oct"313":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"314":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"315":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"316":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"317",
+ "s"|=:oct"003";
+
+ligtable oct"317":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
diff --git a/fonts/twcal/twligtb6.mf b/fonts/twcal/twligtb6.mf
new file mode 100644
index 0000000000..ece9cef6bd
--- /dev/null
+++ b/fonts/twcal/twligtb6.mf
@@ -0,0 +1,413 @@
+ligtable oct"320":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"321":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"322":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"323",
+ "s"|=:oct"003";
+
+ligtable oct"323":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"324":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"325",
+ "s"|=:oct"003";
+
+ligtable oct"325":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"326":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"327",
+ "s"|=:oct"003",
+ "t"=:oct"330";
+
+ligtable oct"327":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"330":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"331",
+ "s"|=:oct"003";
+
+ligtable oct"331":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"332":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"333",
+ "s"|=:oct"003",
+ "t"=:oct"334";
+
+ligtable oct"333":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"334":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"335",
+ "s"|=:oct"003";
+
+ligtable oct"335":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"336":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"337",
+ "s"|=:oct"003",
+ "t"=:oct"340";
+
+ligtable oct"337":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
diff --git a/fonts/twcal/twligtb7.mf b/fonts/twcal/twligtb7.mf
new file mode 100644
index 0000000000..62c86ce539
--- /dev/null
+++ b/fonts/twcal/twligtb7.mf
@@ -0,0 +1,263 @@
+ligtable oct"340":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"341",
+ "s"|=:oct"003";
+
+ligtable oct"341":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"342":
+ "s"|=:oct"003";
+
+ligtable oct"343":
+ "s"|=:oct"003";
+
+ligtable oct"344":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"345",
+ "s"|=:oct"003";
+
+ligtable oct"345":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"346":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"347",
+ "s"|=:oct"003";
+
+ligtable oct"347":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"350":
+ oct"133"=:|oct"351",
+ oct"005"=:|oct"351",
+ "!"=:|oct"351",
+ oct"042"=:|oct"351",
+ "("=:|oct"351",
+ ")"=:|oct"351",
+ "*"=:|oct"351",
+ "+"=:|oct"351",
+ ","=:|oct"351",
+ oct"055"=:|oct"351",
+ oct"173"=:|oct"351",
+ oct"174"=:|oct"351",
+ "."=:|oct"351",
+ "/"=:|oct"351",
+ ":"=:|oct"351",
+ ";"=:|oct"351",
+ oct"074"=:|oct"351",
+ oct"075"=:|oct"351",
+ oct"076"=:|oct"351",
+ "?"=:|oct"351",
+ oct"134"=:|oct"351",
+ oct"140"=:|oct"351",
+ oct"175"=:|oct"351",
+ oct"002"|=:oct"004",
+ "e"=:oct"352",
+ "t"=:oct"353",
+ "s"|=:oct"003";
+
+ligtable oct"352":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
+
+ligtable oct"353":
+ oct"002"|=:oct"003",
+ "," kern k#,
+ "e"=:oct"354",
+ "s"|=:oct"003";
+
+ligtable oct"354":
+ oct"000"|=:|oct"020",
+ oct"001"|=:|oct"020",
+ oct"003"|=:|oct"020",
+ oct"004"|=:|oct"020",
+ oct"211"|=:|oct"020",
+ oct"200"|=:|oct"020",
+ oct"203"|=:|oct"020",
+ oct"031"|=:|oct"020",
+ oct"032"|=:|oct"020",
+ oct"033"|=:|oct"020",
+ oct"034"|=:|oct"020",
+ "." kern 2.3pt#,
+ "!" kern 2.3pt#,
+ "a"|=:|oct"020",
+ "b"|=:|oct"020",
+ "c"|=:|oct"020",
+ "d"|=:|oct"020",
+ "e"|=:|oct"020",
+ "f"|=:|oct"020",
+ "g"|=:|oct"020",
+ "h"|=:|oct"020",
+ "i"|=:|oct"020",
+ "j"|=:|oct"020",
+ "k"|=:|oct"020",
+ "l"|=:|oct"020",
+ "m"|=:|oct"020",
+ "n"|=:|oct"020",
+ "o"|=:|oct"020",
+ "p"|=:|oct"020",
+ "q"|=:|oct"020",
+ "r"|=:|oct"020",
+ "s"|=:|oct"020",
+ "t"|=:|oct"020",
+ "u"|=:|oct"020",
+ "v"|=:|oct"020",
+ "w"|=:|oct"020",
+ "x"|=:|oct"020",
+ "y"|=:|oct"020",
+ "z"|=:|oct"020";
diff --git a/fonts/twcal/twlow.mf b/fonts/twcal/twlow.mf
new file mode 100644
index 0000000000..6988061255
--- /dev/null
+++ b/fonts/twcal/twlow.mf
@@ -0,0 +1,555 @@
+
+% TW -- lowercase letters (C)1991 Thomas Weinmann fuer die Modifikationen
+
+
+beginchar("a",16.4ut#,19ut#,0); %a
+pickup va_pen;
+z1=(5ut,19ut);
+z2=(-4ut,6ut);
+z3=(1ut,0ut);
+z4=(11ut,13ut);
+z5=(13ut,19ut);
+z6=(10ut,5ut);
+z7=(12ut,0ut);
+z8=(16.3ut,(16.3*8/7+(2-16*8/7))*ut);
+z9=(16ut,2ut);
+%
+draw z1{left}..z2{down}..z3{right}..z4{up}..cycle;
+draw z5--z6{z6-z5}..z7{right}..z9--z8;
+%
+%
+labels(range 1 thru 9);
+endchar;
+
+beginchar(oct"032",30ut#,19ut#,0); %a-Umlaut
+pickup va_pen;
+z1=(5ut,19ut);
+z2=(-4ut,6ut);
+z3=(1ut,0ut);
+z4=(11ut,13ut);
+z5=(13ut,19ut);
+z6=(10ut,5ut);
+z7=(12ut,0ut);
+z8=(30ut,18ut);
+z9=(16ut,2ut);
+z10=(3ut,26ut);
+z11=(10ut,26ut);
+%
+draw z1{left}..z2{down}..z3{right}..z4{up}..cycle;
+draw z5--z6{z6-z5}..z7{right}..z9--z8;
+%
+pickup pencircle scaled 4ut;
+drawdot z10; drawdot z11;
+%
+labels(range 1 thru 11);
+endchar;
+
+
+beginchar("b",28 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,36ut);
+z3=(11ut,39ut);
+z4=(5ut,0ut);
+z5=(15ut,19ut);
+z6=(28ut,18ut);
+%
+draw z1{an}..z2{up}..z3{left}..z1..z4{right}..z5{dir 110}
+ & z5{dir 290}..z6;
+%
+%
+labels(range 1 thru 6);
+endchar;
+
+beginchar("c",22 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(10ut,18ut);
+z2=(5ut,19ut);
+z3=(-4ut,6ut);
+z4=(1ut,0ut);
+z5=(7ut,3ut);
+z6=(22ut,18ut);
+%
+draw z1..z2{left}..z3{down}..z4{right}..z5--z6;
+%
+%
+labels(range 1 thru 6);
+endchar;
+
+beginchar("d",16.4 ut#,40 ut#,0);
+pickup va_pen;
+%
+z1=(5ut,19ut);
+z2=(-4ut,6ut);
+z3=(1ut,0ut);
+z4=(11ut,13ut);
+z5=(17ut,40ut);
+z6=(10ut,5ut);
+z7=(12ut,0ut);
+z8=(16.3ut,(16.3*8/7+(2-16*8/7))*ut);
+z9=(16ut,2ut);
+%
+draw z1{left}..z2{down}..z3{right}..z4{up}..cycle;
+draw z5--z6{z6-z5}..z7{right}..z9--z8;
+%
+labels(range 1 thru 9);
+endchar;
+
+% beginchar("e",9.4 ut#,19 ut#,0);
+% depth angepasst, um die Satzabstaende zu homogenisieren vgl. i, s
+beginchar("e",9.4 ut#,19 ut#, 19 ut#);
+pickup va_pen;
+%
+z1=(4ut,19ut);
+z2=(-2ut,7ut);
+z3=(3ut,0ut);
+z4=(9.3ut,(9.3*8/9-6)*ut);
+z5=(-1ut,13ut);
+z6=(8ut,13ut);
+z7=(9ut,2ut);
+%
+draw z5{z2-z5}..z6{z5-z2}..z1{left}..z5{z2-z5}
+ ..z3{right}..z7--z4;
+%
+%
+labels(range 1 thru 7);
+endchar;
+
+beginchar("f",18 ut#,39 ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(12ut,37ut);
+z3=(9ut,39ut);
+z4=(3ut,31ut);
+z5=(-7ut,-19ut);
+z6=(-7ut,5ut);
+z7=(7ut,6ut);
+z8=(18ut,18ut);
+%
+draw z1{an}..z2{up}..z3{left}...z4{z5-z4}--z5;
+draw z6..z7---z8{an};
+%
+%
+labels(range 1 thru 8);
+endchar;
+
+beginchar("g",29 ut#,19 ut#,19ut#);
+pickup va_pen;
+%
+z1=(11ut,13ut);
+z2=(1ut,0ut);
+z3=(-5ut,7ut);
+z4=(5ut,19ut);
+z10=(12ut,19ut);
+z11=(7ut,-10ut);
+z12=(0ut,-19ut);
+z13=(-4ut,-15ut);
+z14=(0ut,-9ut);
+z15=(29ut,18ut);
+%
+draw z1{down}..z2{left}..z3{up}..z4{right}..cycle;
+draw z10--z11{z11-z10}..z12{left}..z13{up}..z14...z15{an};
+%
+%
+labels(range 1 thru 15);
+endchar;
+
+beginchar("h",17.4 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(10ut,36ut);
+z3=(7ut,39ut);
+z4=(3ut,34ut);
+z5=(-4ut,0ut);
+z6=(11ut,19ut);
+z7=(13ut,15ut);
+z8=(11ut,3ut);
+z9=(17ut,2ut);
+z10=(17.3ut,((17.3*8/7+(2-17.3*8/7))+0.3)*ut);
+%
+draw z1{an}..z2{up}..z3{left}..z4..z1--z5
+ & z5{z1-z5}..z6{right}..z7{down}..z8{down}..z9--z10;
+%
+%
+labels(range 1 thru 10);
+endchar;
+
+% beginchar("i",3.4 ut#,19 ut#,0);
+% wie e um die Satzabstaende anzugleichen, vgl. e, s
+beginchar("i",3.4 ut#, 19 ut#, 19 ut#);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-4ut,4ut);
+z3=(-1ut,0ut);
+z4=(3ut,2ut);
+z5=(3.3ut,2.3ut);
+z6=(2.5ut,28ut);
+%
+draw z1--z2..z3{right}..z4--z5;
+%pickup va_pen_big;
+pickup pencircle scaled 4ut;
+drawdot z6;
+%
+%
+labels(range 1 thru 6);
+endchar;
+
+beginchar("j",17 ut#,19 ut#,19ut#);
+pickup va_pen;
+%
+z1=(2.5ut,28ut);
+z2=(0ut,19ut);
+z3=(-5ut,-3ut);
+z4=(-13ut,-19ut);
+z5=(17ut,18ut);
+%
+draw z2--z3{z3-z2}...z4{left}..z3{z5-z3}---z5{an};
+pickup pencircle scaled 4ut;
+drawdot z1;
+%
+%
+labels(range 1 thru 5);
+endchar;
+
+beginchar("k", 16.4ut#, 39ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(11ut,36ut);
+z3=(8ut,39ut);
+z4=(1ut,28ut);
+z5=(-4ut,0ut);
+z6=(10ut,19ut);
+z7=(11ut,17ut);
+z8=(3ut,9ut);
+z9=(11ut,0ut);
+z10=(16.3ut,(16.3*16/13+(2-16*16/13))*ut);
+z11=(16ut,2ut);
+%
+draw z1{an}..z2{up}..z3{left}...z4{z5-z4}--z5
+ & z5{z1-z5}..z6{dir -20}..z7{down}..z8
+ & z8..z9{right}..z11--z10;
+%
+%
+labels(range 1 thru 11);
+endchar;
+
+beginchar("l",21 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,36ut);
+z3=(11ut,39ut);
+z4=(1ut,0ut);
+z5=(21ut,18ut);
+z6=(6ut,2ut);
+%
+draw z1{an}..z2{up}..z3{left}..z1{z4-z3}..z4{right}..z6--z5;
+%
+%
+labels(range 1 thru 6);
+endchar;
+
+beginchar("m",30.4 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-5ut,0ut);
+z3=(10ut,19ut);
+z4=(14ut,16ut);
+z5=(10ut,0ut);
+z6=(24ut,19ut);
+z7=(27ut,16ut);
+z8=(24ut,3ut);
+z9=(26ut,0ut);
+z10=(30.3ut,(30.3*16/15+(-30))*ut);
+z11=(30ut,2ut);
+%
+draw z1--z2
+ & z2{z1-z2}..z3{right}..z4--z5
+ & z5{z4-z5}..z6{right}..z7--z8..z9{right}..z11--z10;
+%
+%
+labels(range 1 thru 11);
+endchar;
+
+beginchar("n",18.4 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-4ut,0ut);
+z3=(10ut,19ut);
+z4=(15ut,15ut);
+z5=(12ut,3ut);
+z6=(15ut,0ut);
+z7=(18ut,1ut);
+z8=(18.3ut,(18.3*17/16+(1-9*17/8))*ut);
+%
+draw z1--z2
+ & z2{z1-z2}..z3{right}..z4{down}--z5..z6{right}..z7--z8;
+%
+%
+labels(range 1 thru 8);
+endchar;
+
+beginchar("o",25 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(11ut,16ut);
+z2=(2ut,0ut);
+z3=(-4ut,5ut);
+z4=(5ut,19ut);
+z5=(13ut,19ut);
+z6=(25ut,18ut);
+%
+draw z5..z1{dir -75}..z2{left}..z3{up}..z4{right}..z1{dir -75}...z6{dir 60};
+%
+%
+labels(range 1 thru 6);
+endchar;
+
+beginchar(oct"033",25 ut#,19 ut#,0); %o-Umlaut
+pickup va_pen;
+%
+z1=(11ut,16ut);
+z2=(2ut,0ut);
+z3=(-4ut,5ut);
+z4=(5ut,19ut);
+z5=(13ut,19ut);
+z6=(25ut,18ut);
+z7=(5ut,26ut);
+z8=(11ut,26ut);
+%
+draw z5..z1{dir -75}..z2{left}..z3{up}..z4{right}..z1{dir -75}...z6{dir 60};
+%
+pickup pencircle scaled 4ut;
+drawdot z7;drawdot z8;
+%
+labels(range 1 thru 8);
+endchar;
+
+beginchar("p",16.4 ut#,19 ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-8ut,-19ut);
+z3=(-3ut,6ut);
+z4=(11ut,19ut);
+z5=(14ut,17ut);
+z6=(11ut,4ut);
+z7=(13ut,0ut);
+z8=(16ut,1ut);
+z9=(16.3ut,(16.3*17/15+(1-16*17/15))*ut);
+%
+draw z1--z2;
+draw z3{z1-z2}..z4{right}..z5{z6-z5}--z6{z6-z5}..z7{right}..z8--z9;
+%
+%
+labels(range 1 thru 9);
+endchar;
+
+beginchar("q",25 ut#,19 ut#,19ut#);
+pickup va_pen;
+%
+z1=(9ut,13ut);
+z2=(0ut,0ut);
+z3=(-6ut,5ut);
+z4=(4ut,19ut);
+z5=(11ut,19ut);
+z6=(4ut,-19ut);
+z7=(8ut,0ut);
+z8=(25ut,18ut);
+%
+draw z1{down}..z2{left}..z3{up}..z4{right}..cycle;
+draw z5--z6;
+draw z7...z8{an};
+%
+%
+labels(range 1 thru 8);
+endchar;
+
+beginchar("r", 19ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=2/3*((-3ut,-2ut)+z1);
+z3=(7ut,19ut);
+z4=(19ut,18ut);
+z5=(-5ut,0ut);
+%
+draw z1--z5;
+draw z2..z3
+ & z3{dir 320}..z4{dir 30};
+%
+%
+labels(range 1 thru 4);
+endchar;
+
+% beginchar("s",6ut#,19ut#,0ut#);
+% um die Satzabstaende anzupassen. Vgl. e, i
+beginchar("s", 6 ut#, 19 ut#, 19 ut#);
+pickup va_pen;
+%
+z1=(-10ut,10ut);
+z2=(0ut,19ut);
+z3=(5ut,5ut);
+z4=(0ut,0ut);
+z5=(-5ut,4ut);
+%
+draw z1--z2
+ & z2{z3-z2}..z3{down}..z4{left}..z5;
+%
+labels(range 1 thru 5);
+endchar;
+
+beginchar("t",28 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,39ut);
+z3=(7ut,0ut);
+z4=(-2ut,8ut);
+z5=(28ut,18ut);
+%
+draw z1{an}..z2
+ & z2-- z3;
+draw z4{dir 340}..z5{dir 60};
+%
+%
+labels(range 1 thru 5);
+endchar;
+
+beginchar("u",18.4 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,3ut);
+z3=(2ut,0ut);
+z4=(15ut,19ut);
+z5=(12ut,3ut);
+z6=(14ut,0ut);
+z7=(18.3ut,(18.3*16/15+(2-18*16/15))*ut);
+z8=(18ut,2ut);
+%
+draw z1--z2{z2-z1}..z3{right}..z4{z4-z5}
+ & z4--z5..z6{right}..z8--z7;
+%
+%
+labels(range 1 thru 8);
+endchar;
+
+beginchar(oct"034",33 ut#,19 ut#,0); %u-Umlaut
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,3ut);
+z3=(2ut,0ut);
+z4=(15ut,19ut);
+z5=(12ut,3ut);
+z6=(14ut,0ut);
+z7=(33ut,18ut);
+z8=(18ut,2ut);
+z9=(4ut,26ut);
+z10=(12ut,26ut);
+%
+draw z1--z2{z2-z1}..z3{right}..z4{z4-z5}
+ & z4--z5..z6{right}..z8--z7;
+%
+pickup pencircle scaled 4ut;
+drawdot z9; drawdot z10;
+%
+labels(range 1 thru 10);
+endchar;
+
+beginchar("v",27 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-4ut,5ut);
+z3=(2ut,0ut);
+z4=(14ut,19ut);
+z5=(27ut,18ut);
+%
+draw z1..z2{z2-z1}..z3{right}..z4{z1-z2}
+ & z4{dir 300}..z5;
+%
+%
+labels(range 1 thru 5);
+endchar;
+
+beginchar("w",35 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,5ut);
+z3=(0ut,0ut);
+z4=(9ut,8ut);
+z5=(11ut,19ut);
+z6=(13ut,0ut);
+z7=(22ut,19ut);
+z8=(35ut,18ut);
+%
+draw z1--z2..z3{right}..z4--z5
+ & z5--z4..z6{right}..z7{z5-z4}
+ & z7{dir 300}..z8;
+%
+%
+labels(range 1 thru 8);
+endchar;
+
+beginchar("x",30 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(11ut,0ut);
+z3=(-5ut,0ut);
+z4=(13ut,19ut);
+z5=(30ut,18ut);
+%
+draw z1--z2;
+draw z3--z4
+ & z4{dir 300}..z5;
+%
+%
+labels(range 1 thru 5);
+endchar;
+
+beginchar("y",31 ut#,19 ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-2ut,4ut);
+z3=(1ut,0ut);
+z4=(14ut,19ut);
+z5=(9ut,-13ut);
+z6=(3ut,-19ut);
+z7=(0ut,-16ut);
+z8=(4ut,-9ut);
+z9=(31ut,18ut);
+%
+draw z1--z2..z3{right}..z4{z4-z5}
+ & z4--z5..z6{left}..z7{up}..z8{z9-z8}--z9;
+%
+%
+labels(range 1 thru 9);
+endchar;
+
+beginchar("z",(18*7/8)* ut#,19 ut#,0ut#);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(11ut,0ut);
+z3=(-5ut,0ut);
+z4=(13ut,19ut);
+z5=((18*7/8)*ut,(18-13.7*8/7)*ut);
+%
+draw z1--z4--z3--z2--z5;
+%
+%
+labels(range 1 thru 6);
+endchar;
diff --git a/fonts/twcal/twreadme.pdf b/fonts/twcal/twreadme.pdf
new file mode 100644
index 0000000000..b028ef34f6
--- /dev/null
+++ b/fonts/twcal/twreadme.pdf
Binary files differ
diff --git a/fonts/twcal/twreadme.tex b/fonts/twcal/twreadme.tex
new file mode 100644
index 0000000000..63d67ca6f8
--- /dev/null
+++ b/fonts/twcal/twreadme.tex
@@ -0,0 +1,185 @@
+\documentstyle[12pt, twcal14]{article}
+
+% README - File zur TWCAL14 - Schrift Version 1.1
+
+\newfont{\lgo}{logo10 scaled 1200}
+\def\MF{{\lgo META}\-{\lgo FONT}}
+
+\title{Die \twcallogo-Schrift}
+\author{Thomas Weinmann
+ \\Haus"ackerstra"se 4
+ \\D-7024 Filderstadt 1
+ \\weinmann@azu.informatik.uni-stuttgart.de}
+\date{20. August 1991}
+
+\begin{document}
+\maketitle
+\section*{Vorbemerkung}
+Das \MF -System wurde augenscheinlich f"ur die Erzeugung von Zeichens"atzen
+konzipiert, wie sie im klassischen Buchdruck verwendet werden. Im Dezember
+1990 erhielt ich den VA-Zeichensatz von Herrn Ludewig aus
+Siegen\footnote{Der VA-Zeichensatz ist auf diversen \TeX -Servern verf"ugbar.}.
+Dadurch kam ich auf die Idee, zu versuchen eine Art von Schreibschrift mittels
+\MF {} zu realisieren. \twcallogo {} ist das Ergebnis dieses Versuchs.
+
+\twcallogo {} kann von jedermann f"ur private Zwecke frei verwendet werden.
+Bei nicht privater Verwendung von \twcallogo {} gen"ugt es, mir ein
+Belegexemplar (\TeX -File oder Ausdruck) zuzusenden, damit ich weitere
+Verbesserungen an \twcallogo {} vornehmen kann. Ansonsten steht es jedem
+frei mir eine Postkarte zu schicken, quasi als Ansporn f"ur weitere
+Arbeit in der Richtung.
+
+Urspr"unglich war \twcallogo {} nicht als Zeichensatz zur allgemeinen Verwendung
+gedacht, sondern nur als Aufgabe f"ur mich, mit dem Haupteffekt mir Kenntnisse
+"uber \MF {} anzueignen. Dementsprechend sind viele Dinge bei \twcallogo {} etwas
+umst"andlich realisiert.
+Verbesserungsvorschl"agen gegen"uber bin ich aus diesem Grund besonders
+zug"anglich.
+\section*{Beschreibung}
+\twcallogo {} verwendet verschiedene Prinzipien um Effekte, wie sie bei
+handschriftlichen Textdokumenten auftauchen nachzubilden. Einige dieser
+Techniken werden hier kurz dargestellt.
+\begin{itemize}
+\item Tauchen bestimmte Kleinbuchstaben am Anfang eines Wortes auf, so
+ werden diese Buchstaben durch besondere Synonyme ersetzt.
+ Einige andere Kleinbuchstaben erhalten einen zus"atzlichen Strich
+ an ihrem Anfang.
+\item Mehrere benachbarte Buchstaben werden durch Ligaturen\footnote{Es sind
+ bisher Ligaturen f"ur bis zu 5 Buchstaben realisiert.}. Die
+ Kleinbuchstaben a, d, e, g, h, i, k, m, n, p, u, y, z werden mit
+ nachfolgenden Kleinbuchstaben zum Teil durch Verbindungsst"ucke
+ verbunden.
+\item Einige Kleinbuchstaben erhalten, falls sie am Ende eines Wortes
+ auftauchen, ein zus"atzliches Abschlu"sst"uck.
+\end{itemize}
+
+\twcallogo {} basiert auf dem VA-Zeichensatz von Herrn Ludewig aus Siegen. Folgende
+Ver"anderungen sind in \twcallogo {} gegen"uber VA realisiert:
+\begin{itemize}
+\item Der Kleinbuchstabe z wurde gegen ein eigenes Zeichen ausgetauscht.
+\item Der Zeichenplatz mit der oktalen Nummer 133 repr"asentiert den
+ {\sl right boundarychar}. Dieser Platz sollte somit nicht f"ur eigene
+ Erweiterungen verwendet werden.
+\item Einige Zeichen wurden im Design leicht ver"andert.
+\item Die Kleinbuchstaben a, c, d, e, g, i, j, k, l, m, n, p, u, v, w, x, y, z
+ wurden ver"andert. Die Verbindungsst"ucke zu
+ nachfolgenden Buchstaben wurden abgetrennt. Zum einen
+ Teil werden diese Verbindungen als eigenst"andige
+ Zeichen durch die Ligaturprogrammierung wieder
+ eingepasst, zum anderen Teil sind solche Verbindungen
+ als echte Ligaturen realisiert.
+\item Bei diversen Zeichen wurden synonyme Zeichen f"ur den Wortanfang bzw. das
+ Wortende realisiert.
+\item Es wurden diverse echte Ligaturen eingef"uhrt\footnote{Zur Zeit sind es
+ 111 echte Ligaturen.}.
+\item Um einen konstanten Zeilenabstand zu gew"ahrleisten wurde bei einigen
+ Zeichen eine virtuelle\footnote{Relevant sind vor allem die virtuellen
+ Unterl"angen bei e, dem Punkt und dem Komma.} Unterl"ange eingesetzt.
+\end{itemize}
+
+\section*{Benutzung und Probleme}
+\twcallogo {} kann mit Einschr"ankungen wie jeder normale Zeichensatz verwendet
+werden. Einschr"ankungen sind:
+\begin{enumerate}
+\item \twcallogo {} ben"otigt \TeX {} ab Version $3.0$ und \MF {} ab Version $2.0$.
+ Die Einbindung des Files \twcallogo .sty ist empefehlenswert. Man kann
+ \twcallogo {} dann durch den Befehl {\tt $\backslash$twcal} in der
+ Standardgr"o"se zuschalten. Zudem sind die Umlaute und das scharfe s
+ dann einfacher verf"ugbar.
+\item Trennvorgaben und "ahnliche Dinge die Einflu"s auf die Verwendung von
+ Ligaturen nehmen sind mit Vorsicht zu verwenden. In einem Textst"uck,
+ welches die \twcallogo -Schrift verwendet, existieren kaum zwei nebeneinander
+ liegende Zeichen (vor allem bei Kleinbuchstaben), die nicht durch die
+ Ligaturprogrammierung angetastet werden.
+\item Bei \twcallogo {} werden die Umlaute und das scharfe s nicht in der bei
+ \TeX\footnote{einschlie"slich der Verwendung von german.sty} "ublichen
+ Art gesetzt. Es existieren f"ur die Umlaute eigene Zeichen.
+ Ich verwende diese Zeichen bei \twcallogo {} in der folgenden Art.
+ Das Wort \
+ {\em Gr"o"se} \
+ schreibe ich im Quelltext, falls \twcallogo .sty eingebunden ist, als \
+ {\tt {\sl Gr}$\backslash${\sl o}$\backslash${\sl s}$\sqcup${\sl e}} \
+ und ohne Einbindung von \twcallogo .STY als \
+ {\tt {\sl Gr}$\backslash$char27$\backslash$char25$\sqcup${\sl e}} \
+ Zu beachten ist, da"s es sich dabei immer um Befehlsworte handelt.
+ Leerzeichen am Ende eines solchen Befehlswortes tauchen also nicht
+ zwangsl"aufig auch im Textdokument auf. Der Text \ {\em gro"s sein} \
+ wird demzufolge als {\tt \
+ {\sl gro}$\backslash$char25$\sqcup$\{\}$\sqcup${\sl sein}} \
+ programmiert. Die Tabelle am Ende dieses Abschnitts zeigt die Codes
+ weiterer
+ Sonderzeichen. Am Ende dieses Dokumentes befindet sich ein Beispiel.
+
+ Ich habe
+ einige Anstrengungen unternommen die umst"andliche Verwendung dieser
+ Zeichen etwas zu vereinfachen, allerdings ohne viel Erfolg. Wer
+ eine elegante L"osungsm"oglichkeit kennt sollte mir dies bitte mitteilen.
+\item Wer versucht Textstellen der \twcallogo -Schrift mit underline zu
+ Unterstreichen wird bemerken, da"s der Strich zu tief unter dem Text
+ plaziert wird. Das Problem ergibt sich logisch durch die Verwendung von
+ Unterl"angen in den \MF -Files. Bisher bestand noch kein Bedarf
+ Textstellen zu unterstreichen. Ich werde das Problem aber wohl doch
+ in einer neueren Version beseitigen.
+\item Bei Ausdrucken mit dem \TeX -File {\sl testfont} ist zu beachten, da"s
+ bei der Option {\sl table} einzelne Buchstaben durch die
+ Ligaturprogrammierung gegen andere ausgetauscht werden. Der Ausdruck
+ ist somit nur bedingt aussagekr"aftig. Abhilfe kann geschaffen werden
+ indem f"ur diesen Zweck ein Zeichensatz verwendet wird, bei dem
+ die Ligaturprogrammierung bereits bei der Erstellung des Zeichensatzes
+ ausgeblendet wurde.
+\item Die \twcallogo -Schrift ist noch nicht mit gr"o"seren Textdokumenten
+ getestet. Deshalb sind einige Zeichenabst"ande, vor allem bei Verwendung
+ von Anf"uhrungszeichen und derartigen Zeichen, noch nicht so exakt
+ eingepasst, da"s sie als "asthetisch empfunden werden. Wer in eigenen
+ Texten solche Unfeinheiten entdeckt m"oge mir die Textstellen bezeichnen.
+ Ich versuche dann Abhilfe zu schaffen.
+\end{enumerate}
+
+\vfill
+
+\begin{center}
+\begin{tabular}{| c | c | c |}
+\hline
+Zeichen & Befehlscode &
+ in \twcallogo {} def. Befehlscode \\\hline\hline
+"s & $\backslash$char25 & $\backslash$s\\\hline
+"a & $\backslash$char26 & $\backslash$a\\\hline
+"o & $\backslash$char27 & $\backslash$o\\\hline
+"u & $\backslash$char28 & $\backslash$u\\\hline
+"A & $\backslash$char29 & $\backslash$A\\\hline
+"O & $\backslash$char30 & $\backslash$O\\\hline
+"U & $\backslash$char31 & $\backslash$U\\\hline
+\end{tabular}
+
+\vspace{0.3cm}
+
+Codes diverser Zeichen
+\end{center}
+
+\vspace{0.7cm}
+
+\newpage
+\section*{Beispiel zur Verwendung von \twcallogo }
+
+\vspace{1.2cm}
+
+\twcal
+Ein namhafter Wissenschaftler (man sagt, es sei Bertrand Russell gewesen) hielt
+einen \o ffentlichen Vortrag \u ber Astronomie. Er schilderte, wie die
+Erde um die Sonne und die Sonne ihrerseits wieder
+um den Mittelpunkt einer riesigen
+Ansammlung von Sternen kreist, die wir unsere Galaxis nennen. Als der Vortrag
+beendet war, stand hinten im Saal eine kleine alte Dame auf und erkl\a rte:
+\glqq Ich mu\s {} Ihnen sagen, was Sie uns da erz\a hlt haben, stimmt alles
+nicht. In Wirklichkeit ist die Welt eine flache Scheibe, die von einer
+Riesenschildkr\o te auf dem R\u cken getragen wird.\grqq {} Mit einem
+\u berlegenen L\a cheln hielt der Wissenschaftler ihr entgegen: \glqq Und
+worauf steht die Schildkr\o te?\grqq {} -- \glqq Sehr schlau, junger
+Mann\grqq , parierte die alte Dame. \glqq Ich werde es Ihnen sagen: Da
+stehen lauter Schildkr\o ten aufeinander.\grqq
+
+\vspace{1cm}
+
+{\rm\hfill aus: \ {\sc Stephen W. Hawking
+ {\sl\flqq Eine kurze Geschichte der Zeit\frqq}}}
+\end{document}
diff --git a/fonts/twcal/twsign.mf b/fonts/twcal/twsign.mf
new file mode 100644
index 0000000000..1a63d7ce33
--- /dev/null
+++ b/fonts/twcal/twsign.mf
@@ -0,0 +1,293 @@
+
+% TW -- signs
+
+
+beginchar("+",30ut#,20ut#, 0ut#);
+pickup va_pen;
+z1=(10ut,15ut);
+z2=(25ut,15ut);
+z3=(17ut,7ut);
+z4=(18ut,23ut);
+draw z1..z2; draw z3..z4;
+labels(range 1 thru 4);
+endchar;
+
+beginchar("-",30ut#,20ut#, 0ut#);
+pickup va_pen;
+z1=(10ut,15ut);
+z2=(25ut,15ut);
+draw z1..z2;
+labels(range 1 thru 2);
+endchar;
+
+beginchar(oct"173",35ut#,20 ut#, 0ut#);
+pickup va_pen_small;
+z1=(10ut,15ut);
+z2=(30ut,15ut);
+draw z1..z2;
+labels(range 1 thru 2);
+endchar;
+
+beginchar(oct"174",45ut#,20 ut#, 0ut#);
+pickup va_pen_small;
+z1=(10ut,15ut);
+z2=(40ut,15ut);
+draw z1..z2;
+labels(range 1 thru 2);
+endchar;
+
+beginchar("*",30 ut#,20 ut#, 0ut#);
+pickup va_pen;
+z9=(15ut,15ut);
+z1=z9+(0ut,-10ut);
+z2=z9+(10ut,0ut);
+z3=z9+(0ut,10ut);
+z4=z9+(-10ut,0ut);
+z5=z9+(-6ut,-6ut);
+z6=z9+(6ut,-6ut);
+z7=z9+(6ut,6ut);
+z8=z9+(-6ut,6ut);
+%
+draw z1..z3; draw z2..z4; draw z5..z7; draw z6..z8;
+labels(range 1 thru 9);
+endchar;
+
+beginchar(":",15 ut#,20 ut#, 0ut#);
+pickup pencircle scaled 5ut;
+%
+z1=(10ut,19ut);
+z2=(9ut,9ut);
+%
+drawdot z1; drawdot z2;
+%
+labels(range 1 thru 2);
+endchar;
+
+beginchar("<",30 ut#,20 ut#,0 ut#);
+pickup va_pen;
+%
+z1=(30ut,25ut);
+z2=(10ut,15ut);
+z3=(28ut,5ut);
+%
+draw z1..z2 & z2..z3;
+%
+labels(range 1 thru 3);
+endchar;
+
+beginchar(">", 30ut#, 20ut#, 0ut#);
+pickup va_pen;
+%
+z1=(11ut,25ut);
+z2=(30ut,15ut);
+z3=(10ut,5ut);
+%
+draw z1..z2 & z2..z3;
+%
+labels(range 1 thru 3);
+endchar;
+
+beginchar("=", 30ut#,20 ut#, 0ut#);
+pickup va_pen;
+%
+z1=(10ut,15ut);
+z2=(25ut,15ut);
+z3=(x1,y1-8ut);
+z4=(x2,y2-8ut);
+%
+draw z1..z2 ; draw z3..z4;
+%
+labels(range 1 thru 4);
+endchar;
+
+beginchar("(", 20ut#, 40ut#, 0ut#);
+pickup va_pen;
+%
+z1=(10ut,40ut);
+z2=(0ut,-5ut);
+%
+draw z1{dir -115}..z2{dir -80};
+%
+labels(range 1 thru 2);
+endchar;
+
+beginchar(")",27 ut#,40 ut#, 0ut#); % 27 statt 20
+pickup va_pen;
+%
+% z1=(10ut,40ut);
+% z2=(0ut,-5ut);
+z1=(17ut,40ut);
+z2=(7ut,-5ut);
+%
+draw z1{dir -80}..z2{dir -115};
+%
+labels(range 1 thru 2);
+endchar;
+
+beginchar("/",20 ut#,40 ut#, 0ut#);
+pickup va_pen;
+%
+z1=(12ut,40ut);
+z2=(0ut,-5ut);
+%
+draw z1..z2;
+%
+labels(range 1 thru 2);
+endchar;
+
+beginchar(oct"5",20 ut#,20 ut#, 0ut#); %Anfuehrungsstr. unten
+pickup va_pen;
+%
+z1=(5ut,10ut);
+z2=(3ut,0ut);
+z3=(x1+10ut,y1);
+z4=(x2+10ut,y2);
+%
+draw z1{dir -90}..z2;
+draw z3{dir -90}..z4;
+%
+labels(range 1 thru 4);
+endchar;
+
+beginchar(oct"175", 20ut#, 40ut#, ut#); % Anfueyrungsstr. oben
+pickup va_pen;
+%
+z1=(5ut,40ut);
+z2=(3ut,30ut);
+z3=(x1+10ut,y1);
+z4=(x2+10ut,y2);
+%
+draw z1{dir -90}..z2; draw z3{dir -90}..z4;
+%
+labels(range 1 thru 4);
+endchar;
+
+beginchar(oct"42", 20ut#, 40ut#, ut#); % Anfuehrungsstr. oben rechts
+pickup va_pen;
+%
+z1=(5ut,40ut);
+z2=(3ut,30ut);
+z3=(x1+10ut,y1);
+z4=(x2+10ut,y2);
+%
+draw z1{dir -90}..z2; draw z3{dir -90}..z4;
+%
+labels(range 1 thru 4);
+endchar;
+
+beginchar(oct"134", 20ut#, 40ut#, 0ut#); % Anfuehrungsstr. oben links
+pickup va_pen;
+%
+z1=(5ut,40ut);
+z2=(7ut,30ut);
+z3=(x1+10ut,y1);
+z4=(x2+10ut,y2);
+%
+draw z1{dir -90}..z2; draw z3{dir -90}..z4;
+%
+labels(range 1 thru 4);
+endchar;
+
+beginchar(oct"140", 7ut#, 40ut#, 0ut#); % einf. Strich oben links
+pickup va_pen;
+%
+z1=(5ut,40ut);
+z2=(7ut,30ut);
+z3=(x1+10ut,y1);
+z4=(x2+10ut,y2);
+%
+draw z1{dir -90}..z2;
+%
+labels(range 1 thru 4);
+endchar;
+
+beginchar(oct"177",18ut#,15ut#,0ut#); % Tuedelchen
+pickup va_pen_big;
+z1=(-3ut,22ut);
+z2=z1+(9ut,0ut);
+z3=z1+(-1ut,-1ut);
+z4=z2+(-1ut,-1ut);
+draw z1..z3; draw z2..z4;
+labels(range 1 thru 4);
+endchar;
+
+beginchar("?", 40ut#,39 ut#,0 ut#);
+pickup va_pen;
+%
+z0=(5ut,0ut);
+z1=(4ut,32ut)+z0;
+z2=(15ut,40ut)+z0;
+z3=(26ut,32ut)+z0;
+z4=(11ut,15ut)+z0;
+z5=(10ut,5ut)+z0;
+%
+draw z1{dir 80}..z2{right}..z3{dir -100}..z4{dir -100};
+pickup pencircle scaled 5ut;
+drawdot z5;
+%
+labels(range 0 thru 5);
+endchar;
+
+beginchar("!",25 ut#,39 ut#, 0ut#);
+pickup va_pen;
+%
+z0=(5ut,0ut);
+z1=(10ut,39ut)+z0;
+z2=(5ut,11ut)+z0;
+z3=(4ut,3ut)+z0;
+%
+draw z1..z2;
+pickup pencircle scaled 5ut;
+drawdot z3;
+%
+labels(range 0 thru 3);
+endchar;
+
+beginchar(";",11 ut#,20 ut#,19 ut#);
+pickup va_pen;
+%
+z1=(11ut,14ut);
+z2=(10ut,5ut);
+z3=(5ut,-8ut);
+draw z2{dir -90}..z3{dir -110};
+%
+pickup pencircle scaled 5ut;
+drawdot z1;
+%
+labels(range 1 thru 3);
+endchar;
+
+beginchar(".",10 ut#,10 ut#,0 ut#);
+%pickup va_pen_big;
+pickup pencircle scaled 5ut;
+%
+z1=(4ut,0ut);
+%
+drawdot z1;
+%
+labels(range 1 thru 2);
+endchar;
+
+beginchar(",", 20ut#, 10ut#,6 ut#);
+pickup va_pen;
+%
+z1=(14ut,9ut);
+z2=(8ut,-6ut);
+%
+drawdot z1;
+draw z1+(1ut,0ut){dir -80}..z2{dir -125};
+%
+labels(range 1 thru 2);
+endchar;
+
+beginchar(oct"47", 10ut#, 40ut#,0 ut#); % Komma oben
+pickup va_pen;
+%
+z1=(4ut,35ut);
+z2=(0ut,25ut);
+%
+drawdot z1;
+draw z1+(1ut,0ut){dir -80}..z2{dir -125};
+%
+labels(range 1 thru 8);
+endchar;
diff --git a/fonts/twcal/twspec.mf b/fonts/twcal/twspec.mf
new file mode 100644
index 0000000000..2a4b3c2255
--- /dev/null
+++ b/fonts/twcal/twspec.mf
@@ -0,0 +1,390 @@
+
+% TW -- special characters (C)1991 Thomas Weinmann
+
+
+beginchar(oct"000",30ut#,39ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(2ut,13ut);
+z3=(-4ut,-19ut);
+z4=(17ut,39ut);
+z5=(22ut,35ut);
+z6=(8ut,19ut);
+z7=(19ut,8ut);
+z8=(13ut,0ut);
+z9=(10ut,3ut);
+z10=(30ut,18ut);
+%
+draw z1..z2{z3-z2}--z3
+ & z3--z2{z2-z3}..z4{right}..z5{down}..z6{left}
+ & z6{right}..z7{down}..z8{left}..z9{up}...z10{an};
+%
+labels(range 1 thru 10);
+endchar;
+
+beginchar(oct"001",25 ut#,19 ut#,0ut#);
+pickup va_pen;
+%
+z1=(0ut,17ut);
+z2=(3ut,19ut);
+z3=(7ut,14ut);
+z4=(-1ut,4ut);
+z5=(5ut,-4ut);
+z6=(-5ut,-19ut);
+z7=(-9ut,-16ut);
+z8=(-6ut,-10ut);
+z9=(25ut,18ut);
+%
+draw z1..z2{right}..z3{down}..z4
+ & z4..z5{down}..z6{left}..z7{up}..z8---z9;
+%
+%
+labels(range 1 thru 9);
+endchar;
+
+beginchar(oct"002",18ut#,19ut#,0ut#); % s mit Anstrich und Endung
+pickup va_pen;
+%
+z1=(-10ut,8ut);
+z2=(0ut,19ut);
+z3=(5ut,5ut);
+z4=(0ut,0ut);
+z5=(-3ut,4ut);
+z6=(18ut,18ut);
+%
+draw z1--z2
+ & z2{z3-z2}..z3{down}..z4{left}..z5{dir 70}...z6{an};
+%
+labels(range 1 thru 6);
+endchar;
+
+beginchar(oct"003",6ut#,19ut#,0ut#);
+pickup va_pen;
+%
+z1=(-10ut,10ut); z2=(0ut,19ut); z3=(5ut,5ut); z4=(0ut,0ut); z5=(-5ut,4ut);
+%
+draw z2{z3-z2}..z3{down}..z4{left}..z5;
+%
+labels(range 1 thru 6);
+endchar;
+
+beginchar(oct"004",20 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(-12ut,7ut);
+z2=(0ut,19ut);
+z3=(5ut,4ut);
+z4=(1ut,0ut);
+z5=(-3ut,3ut);
+z6=(20ut,18ut);
+%
+draw %z1--z2
+ z2..z3{down}..z4{left}..z5{dir 70}...z6{an};
+%
+%
+labels(range 1 thru 6);
+endchar;
+
+% e am Anfang eines Wortes
+beginchar(oct"030",15.4 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(4ut,19ut)+(6ut,0ut);
+z2=(-2ut,7ut)+(6ut,0ut);
+z3=(3ut,0ut)+(6ut,0ut);
+z4=(9.3ut,(9.3*8/9-6)*ut)+(6ut,0ut);
+z5=(-1ut,13ut)+(6ut,0ut);
+z6=(8ut,13ut)+(6ut,0ut);
+z7=(9ut,2ut)+(6ut,0ut);
+z8=(-3ut,2ut);
+%
+draw z8..z6{z5-z2}..z1{left}..z5{z2-z5}
+ ..z3{right}..z7--z4;
+%
+%
+labels(range 1 thru 7);
+endchar;
+
+% sz -
+beginchar(oct"031",22ut#,39ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,19ut); z2=(2ut,13ut); z3=(-4ut,-19ut); z4=(17ut,39ut);
+z5=(22ut,35ut); z6=(8ut,19ut); z7=(19ut,8ut); z8=(11ut,0ut); z9=(6ut,4ut);
+%
+draw z1..z2{z3-z2}--z3
+ & z3--z2{z2-z3}..z4{right}..z5{down}..z6{left}
+ & z6{right}..z7{down}..z8{left}..z9;
+%
+labels(range 1 thru 9);
+endchar;
+
+
+% diese Buchstaben(-kombinationen) werden am Ende eines Wortes verwendet.
+% Die Zeichen haben 4ut white space am Ende der Box.
+
+% c
+beginchar(oct"006",14 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(10ut,18ut);
+z2=(5ut,19ut);
+z3=(-4ut,6ut);
+z4=(1ut,0ut);
+z5=(9ut,4ut);
+z6=(22ut,18ut);
+%
+draw z1..z2{left}..z3{down}..z4{right}..z5; % --z6;
+%
+%
+labels(range 1 thru 6);
+endchar;
+
+% f
+beginchar(oct"007",16 ut#,39 ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(12ut,37ut);
+z3=(9ut,39ut);
+z4=(3ut,31ut);
+z5=(-7ut,-19ut);
+z6=(-7ut,5ut);
+z7=(7ut,6ut);
+z8=(18ut,18ut);
+%
+draw z1{an}..z2{up}..z3{left}...z4{z5-z4}--z5;
+draw z6..z7; % ---z8{an};
+%
+%
+labels(range 1 thru 8);
+endchar;
+
+% g
+beginchar(oct"010",17 ut#,19 ut#,19ut#);
+pickup va_pen;
+%
+z1=(11ut,13ut);
+z2=(1ut,0ut);
+z3=(-5ut,7ut);
+z4=(5ut,19ut);
+z10=(12ut,19ut);
+z11=(7ut,-10ut);
+z12=(0ut,-19ut);
+z13=(-4ut,-15ut);
+z14=(0ut,-9ut);
+z15=(13ut,2ut);
+%
+draw z1{down}..z2{left}..z3{up}..z4{right}..cycle;
+draw z10--z11{z11-z10}..z12{left}..z13{up}..z14...z15{an};
+%
+%
+labels(range 1 thru 15);
+endchar;
+
+% j
+beginchar(oct"011",7 ut#,19 ut#,19ut#);
+pickup va_pen;
+%
+z1=(2.5ut,28ut);
+z2=(0ut,19ut);
+z3=(-5ut,-3ut);
+z4=(-13ut,-19ut);
+z5=(3ut,3ut);
+%
+draw z2--z3{z3-z2}...z4{left}..z3{z5-z3}---z5{an};
+pickup pencircle scaled 4ut;
+drawdot z1;
+%
+%
+labels(range 1 thru 5);
+endchar;
+
+% l
+beginchar(oct"012",18 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(14ut,36ut);
+z3=(11ut,39ut);
+z4=(1ut,0ut);
+z5=(21ut,18ut);
+z6=(6ut,2ut);
+%
+draw z1{an}..z2{up}..z3{left}..z1{z4-z3}..z4{right}..z6; % --z5;
+%
+%
+labels(range 1 thru 6);
+endchar;
+
+% q
+beginchar(oct"013",15 ut#,19 ut#,19ut#);
+pickup va_pen;
+%
+z1=(9ut,13ut);
+z2=(0ut,0ut);
+z3=(-6ut,5ut);
+z4=(4ut,19ut);
+z5=(11ut,19ut);
+z6=(4ut,-19ut);
+z7=(8ut,0ut);
+z8=(25ut,18ut);
+%
+draw z1{down}..z2{left}..z3{up}..z4{right}..cycle;
+draw z5--z6;
+% draw z7...z8{an};
+%
+%
+labels(range 1 thru 8);
+endchar;
+
+% y
+beginchar(oct"014",20 ut#,19 ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-2ut,4ut);
+z3=(1ut,0ut);
+z4=(14ut,19ut);
+z5=(9ut,-13ut);
+z6=(3ut,-19ut);
+z7=(0ut,-16ut);
+z8=(4ut,-9ut);
+z9=(16ut,3ut);
+%
+draw z1--z2..z3{right}..z4{z4-z5}
+ & z4--z5..z6{left}..z7{up}..z8{z9-z8}--z9;
+%
+%
+labels(range 1 thru 9);
+endchar;
+
+% ff
+beginchar(oct"015",31 ut#,39 ut#,19ut#);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(11ut,37ut);
+z3=(9ut,39ut);
+z4=(3ut,31ut);
+z5=(-7ut,-19ut);
+z6=(-9ut,5ut);
+z7=(7ut,6ut)+1.1*z9;
+z8=(18ut,18ut)+z9;
+z9=(16ut, 0ut);
+z10=z1+z9-(0ut,3ut);
+z11=z2+z9;
+z12=z3+z9;
+z13=z4+z9;
+z14=z5+z9;
+%
+draw z1{an}..z2{up}..z3{left}...z4{z5-z4}--z5
+ ..z10{an}..z11{up}..z12{left}...z13{z14-z13}--z14;
+draw z6..z7; % --z8{an};
+%
+%
+labels(range 1 thru 14);
+endchar;
+
+% ll
+beginchar(oct"016",33.7 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,18ut);
+z2=(12.7ut,36ut);
+z3=(11ut,39ut);
+z4=(1ut,0ut);
+z5=(16ut,18ut);
+z6=(6ut,2ut);
+z7=(6.1ut,(6.1*16/15+(2-64/15))*ut);
+z8=(17ut,0);
+z9=z8+z1;
+z10=z2+z8;
+z11=z3+z8;
+z12=z4+z8;
+z13=z5+z8+(2ut,0);
+z14=z6+z8;
+z15=z8+z1+(6.5ut,0);
+%
+draw z1{an}..z2{up}..z3{left}..z1{z4-z3}..z4{right}..z6
+ ..z10{up}..z11{left}..z9{z12-z11}..z12{right}..z14; % --z13;
+%
+%
+labels(range 1 thru 6);
+endchar;
+
+% t am Anfang eines Wortes ohne folgende Ligaturen und
+% nach speziellen Grossbuchstaben
+beginchar(oct"017",28 ut#,39 ut#,0);
+pickup va_pen;
+%
+z1=(-3ut,7ut);
+z2=(14ut,39ut);
+z3=(7ut,0ut);
+z4=(-2ut,8ut);
+z5=(28ut,18ut);
+%
+draw z1{an}..z2{(0,1)}
+ & z2-- z3;
+draw z4{dir 340}..z5{dir 60};
+%
+%
+labels(range 1 thru 5);
+endchar;
+
+% v
+beginchar(oct"135",18 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-4ut,5ut);
+z3=(2ut,0ut);
+z4=(14ut,19ut);
+z5=(27ut,18ut);
+%
+draw z1..z2{z2-z1}..z3{right}..z4{z1-z2};
+% & z4{dir 300}..z5;
+%
+%
+labels(range 1 thru 5);
+endchar;
+
+% w
+beginchar(oct"136",26 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(-3ut,5ut);
+z3=(0ut,0ut);
+z4=(9ut,8ut);
+z5=(11ut,19ut);
+z6=(13ut,0ut);
+z7=(22ut,19ut);
+z8=(35ut,18ut);
+%
+draw z1--z2..z3{right}..z4--z5
+ & z5--z4..z6{right}..z7{z5-z4};
+% & z7{dir 300}..z8;
+%
+%
+labels(range 1 thru 8);
+endchar;
+
+% x
+beginchar(oct"137",17 ut#,19 ut#,0);
+pickup va_pen;
+%
+z1=(0ut,19ut);
+z2=(11ut,0ut);
+z3=(-5ut,0ut);
+z4=(13ut,19ut);
+z5=(30ut,18ut);
+%
+draw z1--z2;
+draw z3--z4;
+% & z4{dir 300}..z5;
+%
+%
+labels(range 1 thru 5);
+endchar;
diff --git a/fonts/twcal/twup.mf b/fonts/twcal/twup.mf
new file mode 100644
index 0000000000..ac45fa5793
--- /dev/null
+++ b/fonts/twcal/twup.mf
@@ -0,0 +1,463 @@
+
+% TW -- uppercase letters
+
+
+beginchar("A",46ut#,39ut#,0);
+pickup va_pen;
+z1=(0ut,0ut)+z7;
+z2=(12ut,6ut)+z7;
+z3=(36ut,39ut)+z7;
+z4=(30ut,0ut)+z7;
+z5=(12ut,14ut)+z7;
+z6=(46ut,18ut)+z7;
+z7=(0ut,0ut);
+%
+draw z1{right}..z2--z3
+ & z3--z4;
+draw z5{dir 345}..z6{an};
+%
+labels(range 1 thru 7);
+endchar;
+
+beginchar(oct"035",46ut#,47ut#,0); % A-Umlaut
+pickup va_pen;
+z1=(0ut,0ut);
+z2=(12ut,6ut);
+z3=(36ut,39ut);
+z4=(30ut,0ut);
+z5=(12ut,14ut);
+z6=(46ut,18ut);
+z7=(32ut,46ut);
+z8=(41ut,46ut);
+%
+draw z1{right}..z2--z3
+ & z3--z4;
+ draw z5{dir 345}..z6{an};
+%
+pickup pencircle scaled 4ut;
+drawdot z7;drawdot z8;
+%
+labels(range 1 thru 8);
+endchar;
+
+
+beginchar("B",36ut#,39ut#,0);
+pickup va_pen;
+z1=(6ut,39ut);
+z2=(21ut,39ut);
+z3=(27ut,31ut);
+z4=(10ut,19ut);
+z5=(28ut,9ut);
+z6=(0ut,0ut);
+z7=(12ut,39ut);
+z8=(6ut,0ut);
+%
+draw z1--z2..z3{down}...z4{left}
+ & z4{right}..z5{down}...z8{left}--z6;
+ draw z7--z8;
+labels(range 1 thru 8);
+endchar;
+
+beginchar("C",32ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(27ut,36ut);
+z2=(18ut,39ut);
+z3=(0ut,10ut);
+z4=(8ut,0ut);
+z5=(32ut,18ut);
+z6=(14ut,2ut);
+%
+draw z1..z2{left}..z3{down}..z4{right}..z6--z5;
+
+labels(range 1 thru 6);
+endchar;
+
+beginchar("D",42ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(3ut,39ut);
+z2=(17ut,39ut);
+z3=(34ut,24ut);
+z4=(0ut,0ut);
+z5=(11ut,39ut);
+z6=(3ut,0ut);
+%
+draw z1--z2..z3{down}..z6{left}--z4;
+draw z5--z6;
+labels(range 1 thru 6);
+endchar;
+
+beginchar("E",32ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(24ut,37ut);
+z2=(6ut,29ut);
+z3=(15ut,19ut);
+z4=(0ut,8ut);
+z5=(10ut,0ut);
+z6=(32ut,18ut);
+z7=(15ut,2ut);
+%
+draw z1..z2{down}..z3
+ & z3..z4..z5{right}..z7--z6{an};
+labels(range 1 thru 6);
+endchar;
+
+beginchar("F",30ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(8ut,39ut);
+z2=(0ut,0ut);
+z3=(0ut,39ut);
+z4=(26ut,39ut);
+z5=(-2ut,18ut);
+z6=(23ut,18ut);
+%
+draw z3--z4;
+draw z1--z2;
+draw z5{dir 340}..z6{dir 8};
+labels(range 1 thru 6);
+endchar;
+
+beginchar("G",39ut#,39ut#,19ut#);
+pickup va_pen;
+z1=(28ut,36ut);
+z2=(21ut,39ut);
+z3=(0ut,8ut);
+z4=(5ut,0ut);
+z5=(25ut,19ut);
+z6=(22ut,0ut);
+z7=(12ut,-19ut);
+z8=(8ut,-15ut);
+z9=(13ut,-7ut);
+z10=(39ut,18ut);
+%
+draw z1..z2{left}..z3{down}..z4{right}..z5{z5-z6}
+ & z5--z6{z6-z5}..z7{left}..z8{up}..z9{z10-z9}---z10;
+labels(range 1 thru 10);
+endchar;
+
+beginchar("H",35ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(6ut,39ut);
+z2=(0ut,0ut);
+z3=(27ut,39ut);
+z4=(21ut,0ut);
+z5=(-4ut,14ut);
+z6=(35ut,18ut);
+%
+draw z1--z2;
+draw z3--z4;
+draw z5{dir 340}..z6{dir 30};
+labels(range 1 thru 6);
+endchar;
+
+beginchar("I",29ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(9ut,39ut);
+z2=(25ut,39ut);
+z3=(20ut,10ut);
+z4=(10ut,0ut);
+z5=(0ut,5ut);
+%
+draw z1--z2
+ & z2--z3..z4{left}..z5;
+labels(range 1 thru 5);
+endchar;
+
+beginchar("J",21ut#,39ut#,19ut#);
+pickup va_pen;
+z1=(0ut,39ut);
+z2=(15ut,39ut);
+z3=(9ut,4ut);
+z4=(-2ut,-19ut);
+z5=(-7ut,-14ut);
+z6=(-4ut,-5ut);
+z7=(21ut,18ut);
+%
+draw z1--z2
+ & z2--z3{z3-z2}...z4{left}..z5{up}..z6--z7;
+labels(range 1 thru 7);
+endchar;
+
+beginchar("K",41ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(8ut,39ut);
+z2=(0ut,0ut);
+z3=(31ut,39ut);
+z4=(4ut,20ut);
+z5=(17ut,2ut);
+z6=(21ut,0ut);
+z7=(41ut,18ut);
+z8=(26ut,3ut);
+%
+draw z1--z2;
+draw z3..z4
+ & z4--z5..z6{right}..z8--z7;
+labels(range 1 thru 8);
+endchar;
+
+beginchar("L",38ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(14ut,39ut);
+z2=(8ut,32ut);
+z3=(4ut,8ut);
+z4=(0ut,0ut);
+z5=(17ut,0ut);
+z6=(38ut,18ut);
+z7=(22ut,2ut);
+%
+draw z1..z2..z3..z4
+ & z4{dir 40}..z5{right}..z7--z6;
+labels(range 1 thru 7);
+endchar;
+
+beginchar("M",70ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(0ut,0ut);
+z2=(8ut,4ut);
+z3=(33ut,39ut);
+z4=(25ut,0ut);
+z5=(53ut,39ut);
+z6=(47ut,4ut);
+z7=(51ut,0ut);
+z8=(70ut,18ut);
+z9=(55ut,2ut);
+%
+draw z1{right}..z2--z3
+ & z3--z4
+ & z4--z5
+ &z5--z6{z6-z5}..z7{right}..z9--z8;
+labels(range 1 thru 9 );
+endchar;
+
+beginchar("N",42ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(0ut,0ut);
+z2=(5ut,5ut);
+z3=(11ut,39ut);
+z4=(29ut,0ut);
+z5=(35ut,30ut);
+z6=(40ut,39ut);
+%
+draw z1{right}..z2{z3-z2}--z3
+ & z3--z4
+ & z4--z5{z5-z4}...z6;
+labels(range 1 thru 6);
+endchar;
+
+beginchar("O",36ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(28ut,25ut);
+z2=(10ut,0ut);
+z3=(0ut,16ut);
+z4=(17ut,39ut);
+%
+draw z1{down}..z2{left}..z3{up}..z4{right}..cycle;
+labels(range 1 thru 4);
+endchar;
+
+beginchar(oct"036",36ut#,47ut#,0ut#); % O-Umlaut
+pickup va_pen;
+z1=(28ut,25ut);
+z2=(10ut,0ut);
+z3=(0ut,16ut);
+z4=(17ut,39ut);
+z5=(14ut,46ut);
+z6=(22ut,46ut);
+%
+draw z1{down}..z2{left}..z3{up}..z4{right}..cycle;
+%
+pickup pencircle scaled 4ut;
+drawdot z5; drawdot z6;
+labels(range 1 thru 6);
+endchar;
+
+
+beginchar("P",28ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(0ut,39ut);
+z2=(17ut,39ut);
+z3=(26ut,31ut);
+z4=(4ut,19ut);
+z5=(7ut,39ut);
+z6=(0ut,0ut);
+%
+draw z1--z2..z3{down}...z4{left};
+draw z5--z6;
+labels(range 1 thru 6);
+endchar;
+
+beginchar("Q",44ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(28ut,25ut);
+z2=(10ut,0ut);
+z3=(0ut,16ut);
+z4=(17ut,39ut);
+z5=(13ut,12ut);
+z6=(18ut,5ut);
+z7=(24ut,0ut);
+z8=(30ut,3ut);
+z9=(44ut,18ut);
+%
+draw z1{down}..z2{left}..z3{up}..z4{right}..cycle;
+draw z5--z6..z7..z8--z9;
+labels(range 1 thru 9);
+endchar;
+
+beginchar("R",39ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(5ut,39ut);
+z2=(14ut,39ut);
+z3=(21ut,30ut);
+z4=(3ut,19ut);
+z5=(7ut,39ut);
+z6=(0ut,0ut);
+z7=(17ut,3ut);
+z8=(21ut,0ut);
+z9=(25ut,3ut);
+z10=(39ut,18ut);
+%
+draw z1--z2..z3{down}..z4
+ & z4--z7{z7-z4}..z8..z9---z10;
+draw z5--z6;
+labels(range 1 thru 10);
+endchar;
+
+beginchar("S",32ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(0ut,3ut);
+z2=(10ut,0ut);
+z3=(22ut,9ut);
+z4=(8ut,30ut);
+z5=(17ut,39ut);
+z6=(25ut,36ut);
+%
+draw z1..z2{right}..z3{up}..z4{up}..z5{right}..z6;
+labels(range 1 thru 6);
+endchar;
+
+beginchar("T",31ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(15ut,39ut);
+z2=(8ut,0ut);
+z3=(0ut,39ut);
+z4=(29ut,39ut);
+%
+draw z1--z2;
+draw z3--z4;
+labels(range 1 thru 4);
+endchar;
+
+beginchar("U",45ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(6ut,39ut);
+z2=(0ut,8ut);
+z3=(6ut,0ut);
+z4=(25ut,20ut);
+z5=(29ut,39ut);
+z6=(22ut,5ut);
+z7=(25ut,0ut);
+z8=(45ut,18ut);
+z9=(29ut,2ut);
+%
+draw z1--z2..z3{right}..z4..z5
+ & z5--z6{z6-z5}..z7..{z8-z9}z9--z8;
+labels(range 1 thru 9);
+endchar;
+
+beginchar(oct"037",45ut#,47ut#,0ut#); % U-Umlaut
+pickup va_pen;
+z1=(6ut,39ut);
+z2=(0ut,8ut);
+z3=(6ut,0ut);
+z4=(25ut,20ut);
+z5=(29ut,39ut);
+z6=(22ut,5ut);
+z7=(25ut,0ut);
+z8=(45ut,18ut);
+z9=(29ut,2ut);
+z10=(13ut,46ut);
+z11=(22ut,46ut);
+%
+draw z1--z2..z3{right}..z4..z5
+ & z5--z6{z6-z5}..z7..{z8-z9}z9--z8;
+%
+pickup pencircle scaled 4ut;
+drawdot z10; drawdot z11;
+%
+labels(range 1 thru 9);
+endchar;
+
+
+beginchar("V",41ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(7ut,39ut);
+z2=(0ut,0ut);
+z3=(34ut,34ut);
+z4=(41ut,39ut);
+%
+draw z1--z2
+ & z2--z3{z4-z3}...z4;
+labels(range 1 thru 4);
+endchar;
+
+beginchar("W",58ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(8ut,39ut);
+z2=(3ut,0ut);
+z3=(30ut,39ut);
+z4=(26ut,0ut);
+z5=(53ut,35ut);
+z6=(58ut,39ut);
+%
+draw z1--z2
+ & z2--z3
+ & z3--z4
+ & z4--z5{z5-z4}...z6;
+labels(range 1 thru 6);
+endchar;
+
+beginchar("X",48ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(8ut,39ut);
+z2=(22ut,5ut);
+z3=(28ut,0ut);
+z4=(33ut,3ut);
+z5=(48ut,18ut);
+z6=(33ut,39ut);
+z7=(0ut,0ut);
+%
+draw z1--z2..z3..z4{z5-z4}---z5;
+draw z6--z7;
+labels(range 1 thru 7);
+endchar;
+
+beginchar("Y",43ut#,39ut#,19ut#);
+pickup va_pen;
+z1=(6ut,39ut);
+z2=(0ut,5ut);
+z3=(9ut,0ut);
+z4=(30ut,39ut);
+z5=(22ut,-5ut);
+z6=(14ut,-19ut);
+z7=(10ut,-15ut);
+z8=(15ut,-7ut);
+z9=(43ut,18ut);
+%
+draw z1--z2{z2-z1}..z3{right}...z4{z4-z5}
+ & z4--z5{z5-z4}..z6{left}..z7..z8{z9-z8}---z9;
+labels(range 1 thru 9);
+endchar;
+
+beginchar("Z",41ut#,39ut#,0ut#);
+pickup va_pen;
+z1=(7ut,39ut);
+z2=(32ut,39ut);
+z3=(0ut,0ut);
+z4=(22ut,0ut);
+z5=(27ut,3ut);
+z6=(41ut,18ut);
+%
+draw z1--z2
+ & z2--z3
+ & z3{dir 20}..z4{right}..z5{z6-z5}---z6;
+labels(range 1 thru 6);
+endchar;