[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

more misc patches




Although I originally planned to prepare a reshuffeld version of MXP
until the weekend, I somehow didn't make.  However, I have done some
more work to tie up the loose ends in other areas:

1. I've done a little more work on the Euler version:

   - added an Eulerized inverted iota to yea.mf, yeab.mf
   - fixed a few bugs in mtx files of the Euler MC-font

     (This patch for mceextra.mtx superseeds my earlier patch.
     Unfortunately I diff'ed it against the original version
     rather than last one, so beware.)

2. I've merged in some improvements to the upright CM greek set:

   - replaced digamma and italic varkappa by revised versions
     (AMS versions aren't robuts enough for Concrete parameters)

   - added upright varkappa       (from greek/kelly)
   - replaced upright nu          (from greek/kelly)
   - modified upright epsilon, pi (better balancing)
   - modified upright lambda, chi (reduced overhang)

Cheers, Ulrik.


P.S. Remaining MF task: adjust the weight of CMSY "aleph"
and MSBM "beth", "gimel", "daleth"

Possible options:

   - make CMSY aleph  heavier (pickup fine.nib -> rule.nib)
   - make MSBM glyphs lighter (pickup rule.nib -> fine.nib)

   - rework all glyphs for uniform stroke thickness in 
     Concrete version (does this make sense for Hebrew?)
   

diff -u mtx/ORIG/mcebar.mtx mtx/mcebar.mtx
--- mtx/ORIG/mcebar.mtx	Sun Dec  7 12:30:22 1997
+++ mtx/mcebar.mtx	Fri Jan 23 01:47:57 1998
@@ -9,10 +9,15 @@
   \glyph{bar}{1000}
   \glyph{bar}{1000}
 \endsetglyph
+
 % These have to be here, so that they are declared missing *before* the
-% AMS fonts define them.
+% AMS fonts (or the yma<nnnn> base fonts) define them.
+
+\missingglyph{hbar}
+\missingglyph{hslash}
 \missingglyph{kappa1}
-\missingglyph{digamma}
+\missingglyph{kappa1upright}
 \missingglyph{rho1upright}
 \missingglyph{sigma1upright}
+\missingglyph{digamma}
 \endmetrics
diff -u mtx/ORIG/mceextra.mtx mtx/mceextra.mtx
--- mtx/ORIG/mceextra.mtx	Sun Dec  7 12:30:25 1997
+++ mtx/mceextra.mtx	Fri Jan 23 01:50:12 1998
@@ -1,11 +1,13 @@
 \relax
 \metrics
+
 \unsetglyph{between}
 \setglyph{between}
   \glyph{parenleft}{1000}
   \movert{-300}
   \glyph{parenright}{1000}
 \endsetglyph
+
 \unsetglyph{emptysetstress}
 \setglyph{emptysetstress}
   \push
@@ -14,6 +16,10 @@
   \pop
   \glyph{zeroupright}{1000}
 \endsetglyph
+
+\unsetglyph{hbar}
+\unsetglyph{hslash}
+
 \setglyph{hbar}
   \push
     \movert{80}
@@ -28,7 +34,14 @@
   \pop
   \glyph{h}{1000}
 \endsetglyph
-\missingglyph{lambdabar}
+
+\setglyph{lambdabar}
+  \push
+    \movert{120}
+    \glyph{barforh}{1000}
+  \pop
+  \glyph{lambdaupright}{1000}
+\endsetglyph
 \setglyph{lambdaslash}
   \push
     \movert{120}
@@ -36,6 +49,24 @@
   \pop
   \glyph{lambdaupright}{1000}
 \endsetglyph
+
+%% should these glyphs be taken from Concrete (ccr<nn>)?
+
+%\missingglyph{at}
+%\missingglyph{numbersign}
+%\missingglyph{percent}
+
+%% these glyphs were temporarily declare missing in mcebar.mtx
+
+\unsetglyph{kappa1}
+\unsetglyph{kappa1upright}
+\unsetglyph{rho1upright}
+\unsetglyph{sigma1upright}
+
+\replaceglyph{kappa1upright}{kappaupright}
+\replaceglyph{rho1upright}  {rhoupright}
+\replaceglyph{sigma1upright}{sigmaupright}
+
 \replaceglyph{Aupright}{A}
 \replaceglyph{Bupright}{B}
 \replaceglyph{Eupright}{E}
@@ -48,89 +79,71 @@
 \replaceglyph{Xupright}{X}
 \replaceglyph{Pupright}{P}
 \replaceglyph{Tupright}{T}
-\replaceglyph{Vupright}{V}
 \replaceglyph{Yupright}{Y}
 \replaceglyph{Zupright}{Z}
 \replaceglyph{oupright}{o}
-\replaceglyph{yupright}{y}
-\missingglyph{Aitalic}
-\missingglyph{Bitalic}
-\missingglyph{Eitalic}
-\missingglyph{Hitalic}
-\missingglyph{Iitalic}
-\missingglyph{Kitalic}
-\missingglyph{Mitalic}
-\missingglyph{Nitalic}
-\missingglyph{Oitalic}
-\missingglyph{Xitalic}
-\missingglyph{Pitalic}
-\missingglyph{Titalic}
-\missingglyph{Zitalic}
-\missingglyph{oitalic}
-\missingglyph{Vitalic}
-\missingglyph{Alpha}
-\missingglyph{Beta}
-\missingglyph{Gamma}
-\missingglyph{Delta}
-\missingglyph{Epsilon}
-\missingglyph{Zeta}
-\missingglyph{Eta}
-\missingglyph{Theta}
-\missingglyph{Iota}
-\missingglyph{Kappa}
-\missingglyph{Lambda}
-\missingglyph{Mu}
-\missingglyph{Nu}
-\missingglyph{Xi}
-\missingglyph{Omikron}
-\missingglyph{Pi}
-\missingglyph{Rho}
-\missingglyph{Sigma}
-\missingglyph{Tau}
-\missingglyph{Upsilon}
-\missingglyph{Phi}
-\missingglyph{Chi}
-\missingglyph{Psi}
-\missingglyph{Omega}
-\missingglyph{alpha}
-\missingglyph{beta}
-\missingglyph{gamma}
-\missingglyph{delta}
-\missingglyph{epsilon}
-\missingglyph{zeta}
-\missingglyph{eta}
-\missingglyph{theta}
-\missingglyph{iota}
-\missingglyph{kappa}
-\missingglyph{lambda}
-\missingglyph{mu}
-\missingglyph{nu}
-\missingglyph{xi}
-\missingglyph{omikron}
-\missingglyph{pi}
-\missingglyph{rho}
-\missingglyph{sigma}
-\missingglyph{tau}
-\missingglyph{upsilon}
-\missingglyph{phi}
-\missingglyph{chi}
-\missingglyph{psi}
-\missingglyph{omega}
-%\missingglyph{beta1}
-\missingglyph{epsilon1}
-\missingglyph{theta1}
-\missingglyph{kappa1}
-\missingglyph{pi1}
-\missingglyph{rho1}
-\missingglyph{sigma1}
-\missingglyph{phi1}
-\missingglyph{Upsilon1}
-\missingglyph{Chi1}
-\missingglyph{thornupright}
-\missingglyph{partialdiff}
-\missingglyph{at}
-\missingglyph{numbersign}
-\missingglyph{percent}
-\missingglyph{slurbelow}
-\missingglyph{slurabove}
-\endmetrics
+
+%% in the Euler version only: replace italic set by upright set
+
+\replaceglyph{partialdiff}{partialdiffupright}
+
+\replaceglyph{Alpha}	{Aupright}
+\replaceglyph{Beta}	{Bupright}
+\replaceglyph{Gamma}	{Gammaupright}
+\replaceglyph{Delta}	{Deltaupright}
+\replaceglyph{Epsilon}	{Eupright}
+\replaceglyph{Zeta}	{Zupright}
+\replaceglyph{Eta}	{Hupright}
+\replaceglyph{Theta}	{Thetaupright}
+\replaceglyph{Iota}	{Iupright}
+\replaceglyph{Kappa}	{Kupright}
+\replaceglyph{Lambda}	{Lambdaupright}
+\replaceglyph{Mu}	{Mupright}
+\replaceglyph{Nu}	{Nupright}
+\replaceglyph{Omikron}	{Oupright}
+\replaceglyph{Xi}	{Xiupright}
+\replaceglyph{Pi}	{Piupright}
+\replaceglyph{Rho}	{Pupright}
+\replaceglyph{Sigma}	{Sigmaupright}
+\replaceglyph{Tau}	{Tupright}
+\replaceglyph{Upsilon}	{Upsilonupright}
+\replaceglyph{Phi}	{Phiupright}
+\replaceglyph{Chi}	{Xupright}
+\replaceglyph{Psi}	{Psiupright}
+\replaceglyph{Omega}	{Omegaupright}
+\replaceglyph{Upsilon1}	{Yupright}
+
+\replaceglyph{alpha}	{alphaupright}
+\replaceglyph{beta}	{betaupright}
+\replaceglyph{gamma}	{gammaupright}
+\replaceglyph{delta}	{deltaupright}
+\replaceglyph{epsilon}	{epsilonupright}
+\replaceglyph{zeta}	{zetaupright}
+\replaceglyph{eta}	{etaupright}
+\replaceglyph{theta}	{thetaupright}
+\replaceglyph{iota}	{iotaupright}
+\replaceglyph{kappa}	{kappaupright}
+\replaceglyph{lambda}	{lambdaupright}
+\replaceglyph{mu}	{muupright}
+\replaceglyph{nu}	{nuupright}
+\replaceglyph{omikron}	{oupright}
+\replaceglyph{xi}	{xiupright}
+\replaceglyph{pi}	{piupright}
+\replaceglyph{rho}	{rhoupright}
+\replaceglyph{sigma}	{sigmaupright}
+\replaceglyph{tau}	{tauupright}
+\replaceglyph{upsilon}	{upsilonupright}
+\replaceglyph{phi}	{phiupright}
+\replaceglyph{chi}	{chiupright}
+\replaceglyph{psi}	{psiupright}
+\replaceglyph{omega}	{omegaupright}
+
+\replaceglyph{epsilon1}	{epsilon1upright}
+\replaceglyph{theta1}	{theta1upright}
+\replaceglyph{kappa1}	{kappa1upright}
+\replaceglyph{pi1}	{pi1upright}
+\replaceglyph{rho1}	{rho1upright}
+\replaceglyph{sigma1}	{sigma1upright}
+\replaceglyph{phi1}	{phi1upright}
+
+\endmetrics
\ No newline at end of file
diff -u yma/ORIG/yea.mf yma/yea.mf
--- yma/ORIG/yea.mf	Sun Dec  7 03:24:16 1997
+++ yma/yea.mf	Fri Jan 23 02:00:39 1998
@@ -352,4 +352,38 @@
 
 endchar(0);
 
+"inviota";
+extra_endchar:="currentpicture:=currentpicture reflectedabout((0,.5lcbody*v),(1000,.5lcbody*v)) reflectedabout((.5*1040h,0),(.5*1040h,1000));";
+charbegin( slot_iotainv, 1040h#, lcbody*v#, baseline );
+n := 7;
+t1 := 0;
+t2 := 2;
+t3 := 4;
+t4 := 6;
+t5 := 8;
+t6 := 11;
+t7 := 13;
+
+adj_fill.A(1)                         % fixed x points
+     (2, 4, 7)                    % fixed y points
+     ()                         % tied points
+     ((3,5))                         % verticals
+     ((1,6))                         % horizontals
+     ((1177,351){-210,-264}...          % 0
+      (887,68){-554,-384}...               % *1
+      (623,-33){-1,0}...               % 2
+      (412,87){-299,409}...               % *3
+      (324,376){0,1}...{0,1284}          % 4
+      (324,1660)--                    % 5
+      (625,1753){40,-36}...{40,-36}          % 6
+      (665,1717){-127,-756}...          % 7
+      (602,721){0,-1}...               % 8
+      (628,434){100,-452}...               % *9
+      (702,269){1,-1}...               % 10
+      (819,236){1,0}...               % 11
+      (959,284){296,183}...{283,313}          % *12
+      (1115,419)--cycle);               % 13
+
+%endchar(0);
+endchar(-50h#); % DEK
 bye.
diff -u yma/ORIG/yeab.mf yma/yeab.mf
--- yma/ORIG/yeab.mf	Sun Dec  7 03:24:26 1997
+++ yma/yeab.mf	Fri Jan 23 02:04:03 1998
@@ -376,4 +376,35 @@
 
 endchar(0);
 
+"inviota";
+extra_endchar:="currentpicture:=currentpicture reflectedabout((0,.5lcbody*v),(1000,.5lcbody*v)) reflectedabout((.5*990h,0),(.5*990h,1000));";
+charbegin( slot_iotainv, 990h#, lcbody*v#, baseline );
+
+n := 5;
+t1 := 3;
+t2 := 5;
+t3 := 7;
+t4 := 9;
+t5 := 12;
+
+adj_fill.A(5)                         % fixed x points
+     (2)                         % fixed y points
+     ()                         % tied points
+     ((1,3))                         % verticals
+     ((1,4))                         % horizontals
+     ((1016,398){-46,-56}...               % 0
+      (785,251){-1,0}...               % 1
+      (706,285){-1,1}...               % 2
+      (650,612){0,1}...{9,211}          % 3
+      (672,1705){-11.25,8.44}...{-11.25,8.44}% 4
+      (629,1737)--                    % 5
+      (285,1619){9,-216}...               % 6
+      (309,515){0,-1}...               % 7
+      (332,200){23.79,-127.6}...          % *8
+      (399,32){1,-1}...               % 9
+      (554,-41){1,0}...               % 10
+      (924,145){1,1}...{65,98}          % 11
+      (1071,339)--cycle);               % 12
+
+endchar(0);
 bye
diff -u yma/ORIG/ymaams.mf yma/ymaams.mf
--- yma/ORIG/ymaams.mf	Sun Dec  7 03:29:55 1997
+++ yma/ymaams.mf	Fri Jan 23 04:50:30 1998
@@ -1,6 +1,5 @@
 % these glyphs are pieces or variants of glyphs from msam and msbm
 
-cmchar "Simple slur below (smile)"; 
 cmchar "Reverse prime symbol (superscript only)"; 
 beginchar(slot_primereverse,3u#+max(1.75u#,curve#+2(curve#-stem#)), 
  .8asc_height#,0); adjust_fit(0,0); pickup fine.nib; numeric 
@@ -129,44 +128,55 @@
 draw z10--z11--z12--z13; % cross piece
 penlabels(2,3,4,5,6,7,10,11,12,,13); endchar;
 
-cmchar "Stylized F";
-beginarithchar(slot_digamma);
-pickup pencircle xscaled 2.5rule_thickness yscaled .5rule_thickness;
-bot y1=-d; top y2=top y3=h+o; y4=y5=.5[y1, y2]; lft x1=u; x3=w-x1;
-numeric t; t=4; % t=slope of thck stem
-y2-y1=t*(x2-x1); 
-z4=whatever[z1, z2]; x5-x4=.6(x3-x2);
-draw z1--z2--z3; draw z4--z5;
-penlabels(1,2,3,4,5); endchar;
+% Revised UV 1998/01/23 for better rendering with Concrete parameters.
+% The use of |beginarithchar| seems dubious, so try something better.
+% The use of a slope parameter seems unnecessary in an italic font.
 
 transform tt; tt:=currenttransform;
 currenttransform:=tt slanted 1/4;
 
+cmchar "Stylized F";
+beginchar(slot_digamma,10u#,asc_height#,0);
+italcorr asc_height#*slant+.75u#;
+adjust_fit(0,0);
+pickup fine.nib;
+pos1(stem,0); pos2(stem,0); pos3(bar,0);
+pos2'(bar,90); pos3'(bar,90); pos4(bar,90); pos5(bar,90);
+bot y1=-d; top y2=top y3=h+o; y4=y5=.5[y1, y2];
+lft x1l=lft x2l=u; x3=w-x1;
+z2'r=z2; z3'r=z3;
+z4=whatever[z1, z2]; x5-x4=.6(x3-x2);
+filldraw circ_stroke z1.e--z2.e;
+filldraw circ_stroke z3'.e--z2'.e;
+filldraw circ_stroke z5.e--z4.e;
+penlabels(1,2,3,4,5,2',3'); endchar;
+
+% Revised UV 1998/01/23 for better rendering with Concrete parameters.
+% Originally developed and tested 1997/10/03.
+
 cmchar "Lowercase variation of Greek kappa";
 % will use same dimensions as standard Greek lowercase kappa
 % see vol E, p 155.
 beginchar(slot_kappa1, 12u#, x_height#, 0);
 italcorr 1/3x_height#*slant+.5hair#+.5u#;
-adjust_fit(0,0); pickup rule.nib;
-pos1(stem,0); pos2(stem,0);x1l=hround(2u-.5stem); x2r=w-x1l;
-top y2+.3stem=h+oo; bot y1-.3stem=-oo;
+adjust_fit(0,0); pickup fine.nib;
+pos1(stem,-60); pos2(stem,-60); x1l=hround(2u-.5stem); x2r=w-x1l;
+top y2l+.2stem=h+oo; bot y1r-.2stem=-oo;
 filldraw z1l---z2l...z2r---z1r...cycle;
 pickup crisp.nib;
-pos3(hair,180); x3=lft x1l; y3=3/4h; pos4(stem,90); 
-top y4r+.15stem=h+oo; x4-x3=.05[x1,x2]; 
-pos4'(hair,0); y4'=y3; x4'=1/4[x1,x2];
-pos5(hair,90); z5=z1; 
-filldraw super_arc.r(3,4)&super_arc.r(4,4')...{z1-z2}z5&z5{z2-z1}
+pos3(hair,180); lft x3r=1u; y3=3/4h;
+pos4(stem,90); top y4r+.15stem=h+oo; x4=3.5u;
+pos4'(hair,0); y4'=y3; x4'l-x3r=2.5u;
+pos5(hair,-60); z5=z1; 
+filldraw super_arc.r(3,4)&super_arc.r(4,4')...{z1-z2}z5r--z5l{z2-z1}
 ...super_arc.l(4',4)&super_arc.l(4,3)---cycle; % left arm
-pos8(hair,-90); pos6(hair,0);                     
-z8=z2; pos7(stem, -90); bot y7r-.15stem=-oo; x6-x7=x4-x3;
-x6=w-x3; 
-pos7'(hair,180); y7'=y6; x7'=w-x4';
-y6=h-y3;
-filldraw super_arc.r(6,7)&super_arc.r(7,7')...{z2-z1}z8&z8{z1-z2}
+pos6(hair,0); x6=w-x3; y6=h-y3;
+pos7(stem,-90); bot y7r-.15stem=-oo; x6-x7=x4-x3;
+pos7'(hair,-180); y7'=y6; x7'=w-x4';
+pos8(hair,-240); z8=z2;
+filldraw super_arc.r(6,7)&super_arc.r(7,7')...{z2-z1}z8r--z8l{z1-z2}
 ...super_arc.l(7',7)&super_arc.l(7,6)---cycle; % right arm
-%filldraw z8{z1-z2}..z7l...{up}z6r---z6l{-u,-2u}...z7r..{z2-z1}z8---cycle; %right arm
-penlabels(range 1 thru 8,4'); endchar;
+penlabels(range 1 thru 8,4',7'); endchar;
 
 cmchar "Reversed, reflected, lowercase Greek epsilon";
 beginchar(slot_epsiloninv,8u#,x_height#,0);
diff -u yma/ORIG/ymagrl.mf yma/ymagrl.mf
--- yma/ORIG/ymagrl.mf	Wed Nov 26 00:47:21 1997
+++ yma/ymagrl.mf	Fri Jan 23 04:43:16 1998
@@ -76,15 +76,19 @@
 math_fit(-.3x_height#*slant+.5curve#-u#,.7x_height#*slant-.5u#);
 penlabels(0,1,2,3,4,5,6,7,8); endchar;
 
+% Revised UV 1998/01/23 to get a more balanced look in upright version.
+% Originally developed and tested 1997/10/03.
+
 cmchar "Lowercase Greek epsilon";
 beginchar(slot_epsilonupright,8u#,x_height#,0);
 italcorr x_height#*slant+.5hair#-2u#;
 adjust_fit(0,0); pickup fine.nib;
-pos0(bar,90); pos1(bar,90); pos2(curve,180);
+pos0(bar,60); pos1(bar,90); pos2(curve,180);
 pos3(vair,270); pos4(hair,300); pos6(bar,90); pos7(bar,90);
-x1=.5w+.5u; x0=x1+u; lft x2r=hround(1.5u-.5curve); x3=.5[x0,x1];
-x4r=good.x(w-u); x5=w+.5u; x6=x0; z7=z2l;
-top y0r=top y1r=h; y2=y5=y6=bar_height; bot y3r=-oo;
+x1=.5w+.5u; x0=x1+2u; lft x2r=hround(1.5u-.5curve); x3=.5w+u;
+x4r=good.x(w-u); x5=w+.5u; x6=x1+u; z7=z2l;
+top y1r=h; y2=y5=y6=bar_height; bot y3r=-oo;
+y0=.2[y1,bar_height];
 path p; p=z3r{right}...{up}z5;
 numeric t; t=ypart(((x4r,y3r)--(x4r,y5))intersectiontimes p);
 y4r=ypart point t of p;
@@ -171,11 +175,14 @@
  ...z8e{right}...{up}z9e;  % lower diagonal
 math_fit(0,ic#); penlabels(1,2,3,4,5,7,8,9); endchar;
 
+% Revised UV 1998/01/23 to reduce left overhang in upright version.
+% Originally developed and tested 1997/10/03.
+
 cmchar "Lowercase Greek lambda";
 beginchar(slot_lambdaupright,10.5u#,asc_height#,0);
 adjust_fit(0,0); pickup fine.nib;
-pos1(vair,90); lft x1=hround .1u; top y1r=h;
-x2=x1+2u; y2=.7[x_height,h]; x3=w-2u; bot y4=-oo; y3=max(.07h,y4+eps);
+pos1(vair,90); lft x1=hround .9u; top y1r=h;
+x2=x1+1.5u; y2=.7[x_height,h]; x3=w-2u; bot y4=-oo; y3=max(.07h,y4+eps);
 z4-(.25u,0)=whatever[z2,z3]; numeric theta; theta=angle(z2-z3)-90;
 pos2(stem,theta); pos3(stem,theta); pos4(stem,0);
 filldraw circ_stroke z1e{right}...z2e---z3e
@@ -201,6 +208,9 @@
 math_fit(desc_depth#*slant+.5stem#-u#,ic#);
 penlabels(1,2,3,4,5,6,7,8,9); endchar;
 
+% from CTAN:greek/kelly/grktxt.mf
+
+% Changed BHK 880923 to make left stem curved and reduce overhang on left
 cmchar "Lowercase Greek nu";
 beginchar(slot_nuupright,8.5u#,x_height#,0);
 italcorr x_height#*slant+.5stem#-u#;
@@ -208,12 +218,16 @@
 pos3(vair,-90); pos4(stem,0); bot y3r=0; y4+.5stem=h+oo;
 x3-.5stem=hround(1.5u-.5stem); x4+.5stem=hround(w-1.5u+.5stem);
 filldraw circ_stroke z4e{down}...{-36u,-h}z3e;  % diagonal
-pickup tiny.nib; pos1(stem,0); pos2(stem,0);
-top y1=h+min(oo,serif_drop); bot y2=0; x1=x2=x3;
+pickup tiny.nib; 
+pos1(stem,10); pos2(stem,10);
+top y1=h+min(oo,serif_drop); bot y2=0; x2=x3;
 z=((z4{down}...{-36u,-h}z3)intersectionpoint((x2r,0)--(x2r,h)));
-filldraw z1l--z2l--z--z1r--cycle;  % stem
-sloped_serif.l(1,2,a,1/3,jut,serif_drop); % upper left serif
-math_fit(0,ic#-1/3x_height#*slant-.5u#); penlabels(1,2,3,4); endchar;
+x1-.5stem=hround(2.5u-.5stem);
+x5-x1=.6u; y5=.5[y1,y2]; pos5(stem,0);
+z1'=.2[z1,z5];
+filldraw stroke z1e...z5e...z2e;
+if serifs: sloped_serif.l(1,1',a,1/3,jut,serif_drop); fi % upper left serif
+math_fit(0,ic#-1/3x_height#*slant-.5u#); penlabels(1,2,3,4,5,1'); endchar;
 
 cmchar "Lowercase Greek xi";
 beginchar(slot_xiupright,9u#,asc_height#,desc_depth#);
@@ -241,12 +255,15 @@
 math_fit(-.2asc_height#*slant-.5u#,0);
 penlabels(0,1,2,3,4,5,6,7,8,10,11,12,13); endchar;
 
+% Revised UV 1998/01/23 to get a more balanced look in upright version.
+% Originally developed and tested 1997/10/03.
+
 cmchar "Lowercase Greek pi";
 beginchar(slot_piupright,10u#,x_height#,0);
 italcorr x_height#*slant+.5stem#-u#;
 adjust_fit(0,0); pi_stroke; % hook and bar
 pos4(hair,0); pos6(hair,0); x4=3.5u; x6=w-4u; y4=y6=y2;
-x5=3u; x7=w-2.5u; y5=y7=.5stem-oo;
+x5=2.5u; x7=w-2.5u; y5=y7=.5stem-oo;
 pair v[]; v1=(z4-z5) xscaled 3.14159; v2=(z6-z7) xscaled 3.14159;
 pos5(stem,angle v1-90); pos7(stem,angle v2-90);
 filldraw circ_stroke z5e{v1}...{up}z4e;  % left stem
@@ -321,8 +338,11 @@
 math_fit(-.3x_height#*slant+.5curve#-u#,ic#);
 penlabels(1,2,3,4,5,6); endchar;
 
+% Revised UV 1998/01/23 to reduce left and right overhang in upright version.
+% Originally developed and tested 1997/10/03.
+
 cmchar "Lowercase Greek chi";
-beginchar(slot_chiupright,11u#,x_height#,desc_depth#);
+beginchar(slot_chiupright,9u#,x_height#,desc_depth#);
 italcorr x_height#*slant+.5hair#-1.5u#;
 adjust_fit(0,0); pickup fine.nib;
 pos1(hair,180); pos2(vair,80); pos5(vair,80); pos6(hair,180);
@@ -334,7 +354,7 @@
 y3r=y2r-h/8; y4l=y5l+h/8; z3l=whatever[z2',z0]; z4r=whatever[z0,z5'];
 filldraw stroke z1e{up}...z2e{right}...z3e{z4r-z3l}
  ..z4e{z4r-z3l}...{right}z5e...{up}z6e;  % major diagonal and hooks
-x8=w-x7=2u; y7+.5hair=h; y8-.5hair=-d;
+x8=w-x7=u; y7+.5hair=h; y8-.5hair=-d;
 numeric theta; theta=angle(z7-z8)-90;
 pos7(hair,theta); pos8(hair,theta);
 filldraw z7l---z8l..z8r---z7r..cycle;  % minor diagonal
@@ -482,3 +502,22 @@
 filldraw circ_stroke z7e---z6e...{right}z5e...{down}z4e...{left}z3e
  ...{up}z2e...{3(x1-x2),y1-y2}z1e;  % bowl and stem
 math_fit(-.3x_height#*slant,ic#); penlabels(1,2,3,4,5,6,7); endchar;
+
+% from CTAN:fonts/greek/kelly/grktxt.mf
+
+% Designed BHK 880926 (based on \varkappa from msym10 [MF in SAIL])
+cmchar "Lowercase Greek kappa (variant)";
+beginchar(slot_kappa1upright,10u#,x_height#,0);
+adjust_fit(0,0); pickup fine.nib;
+italcorr 1/3x_height#*slant+.5hair#-.5u#;
+pos1(hair,-45); pos2(stem,-90); pos3(vair,180); pos4(stem,90);
+pos14(stem,90); pos13(vair,180); pos12(stem,-90); pos11(hair,45);
+x1l=u; x11=w-x1; y1=good.y(.4[bar_height,h]); y11=h-y1;
+x2=.25[x1,w/2]=w-x12; y2l=h+oo; y12r=0;
+x3-x2=x2-x1; x13=w-x3; y3=y13=h/2;
+x4r=x1l; y4l=0; x14=w-x4; y14r=h+oo;
+filldraw circ_stroke z1e{up}..z2e{right}..z3e{-.2,-1}..z4e{-1,-1}; % left
+filldraw circ_stroke z11e{down}..z12e{left}..z13e{.2,1}..z14e{1,1}; % right
+filldraw z4l--z14l--z14r--z4r--cycle; % diagonal
+penlabels(1,2,3,4,11,12,13,14);
+endchar;