summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/public/cmcyr/cyrlc.mf
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/cmcyr/cyrlc.mf')
-rw-r--r--Master/texmf-dist/fonts/source/public/cmcyr/cyrlc.mf1179
1 files changed, 1179 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/cmcyr/cyrlc.mf b/Master/texmf-dist/fonts/source/public/cmcyr/cyrlc.mf
new file mode 100644
index 00000000000..d63e637a925
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/cmcyr/cyrlc.mf
@@ -0,0 +1,1179 @@
+ "Lowercase Softened N ligature";
+call charbegin('010,pvbli+.5pwi/pu+pvbls+phbls+.5pwii/pu+phbli,px,0,.33.px.slant);
+hpen; lft1x1=round(pvbli.u); x2=x1; x3=good1(x1+pvbls.u); x4=x3;
+top1y1=m; y1=y3; bot1y2=0; y2=y4;
+w1 draw 1..2; % left stem
+w1 draw 3..4; % right stem
+if lcs0: call `a serif(1,1,2,-lcs);
+ call `b serif(1,1,2,lcs); % upper left serif
+ call `c serif(2,1,1,-lcs);
+ call `d serif(2,1,1,lcs); % lower left serif
+ call `e serif(3,1,4,-lcs);
+ call `f serif(3,1,4,lcs);
+ call `g serif(4,1,3,-lcs);
+ call `h serif(4,1,3,.5lcs); % lower right serif
+fi;
+x5=x1; x6=x3; y5=y6; y5=.52m;
+w0 draw 5..6; % bar
+x25=x3; x26=.5[x25,x27];
+y25=y26=lb; x28=x26; bot0y28=0;
+rt2x27=round(r-phbli.u); y27=.5[y25,y4];
+lft0x29=lft2x27; rt0x30=rt2x27; y29=y30=y27;
+call `f lune(26,28,29,30,.48.rdns,.48.rdns,.48.rdns,.48.rdns); % bowl
+w0 draw 25..26; % connections to stem
+w0 draw 4..28.
+ "Lowercase Softened L ligature";
+call charbegin('011,plli+.4pwiii/pu+llwidth+phbls+.5pwii/pu+phbli,px,0,.33px.slant);
+hpen; x1=good1((plli+llwidth).u+.4w3); x2=x1; bot0y1=0; top0y2=m; y3=y2; x4=x3;
+cpen;
+if ssflag=0: x6=(plli+1.5).u; x3=good0(x6+1.75u); y4=y3-s;
+new w99; w99=.8w3;
+lft99x8=lft0x7=round(plli.u); y8=y7=.12m;
+else: x7=plli.u; y7=y6; x7=x6-.75u; x3=good0(x6+.75u); y4=y3; fi;
+bot0y6=-oo;
+hpen;
+w1 draw 1..2; % vertical stroke
+w0 draw 2..3; % upper bar
+if lcs0: call `a serif(1,1,2,.5lcs); % all the serifs
+ call `b serif(1,1,2,-lcs);
+ call `c serif(2,1,1,lcs);
+ call `d serif(2,1,1,-lcs);
+ call `e dserif(3,0,4,lcs);
+ call `f dserif(3,0,4,-lcs);
+fi;
+cpen;
+if ssflag=0:
+w0 draw 4{0,-1}..6{-1,0}..7{0,1};
+w99 draw 8; % bulb
+else:
+w0 draw 4{0,-1}..6{-1,0}..7;
+fi;
+x25=x1; x26=.5[x25,x27];
+y25=y26=lb; x28=x26; bot0y28=0;
+rt2x27=round(r-phbli.u); y27=.5[y25,y1];
+lft0x29=lft2x27; rt0x30=rt2x27; y29=y30=y27;
+call `f lune(26,28,29,30,.48.rdns,.48.rdns,.48.rdns,.48.rdns); % bowl
+w0 draw 25..26; % connections to stem
+w0 draw 1..28.
+ "Serbian dzh";
+call charbegin('012,2.pvbli+pwi/pu+pvbls,px,.4pd,px.slant);
+hpen; lft1x1=round(pvbli.u); x2=x1; rt1x3=round(r-pvbli.u); x4=x3;
+top1y1=m; y1=y3; bot1y2=0; y2=y4;
+w1 draw 1..2; % left stem
+w1 draw 3..4; % right stem
+if lcs0: call `a serif(1,1,2,-lcs);
+ call `b serif(1,1,2,lcs); % upper left serif
+ call `c serif(2,1,1,-lcs);
+ call `d serif(2,1,1,.5lcs); % lower left serif
+ call `e serif(3,1,4,-lcs);
+ call `f serif(3,1,4,lcs); % upper right serif
+ call `g serif(4,1,3,-.5lcs);
+ call `h serif(4,4,3,lcs); % lower right serif
+fi;
+w0 draw 2..4; % bar
+new w99; w99=.85w1;
+rt99x5=.5[x2,x4]=lft99x6; y5=0=y6;
+x7=.2[x5,x6]; x8=.8[x5,x6]; y7=-.4d=y8;
+ddraw 7..5,8..6. % middle spur
+ "The letter i (for Ukrainian)";
+call charbegin('014,2.pvbli+pw1/pu,ph,0,ph.slant);
+hpen; x1=x2=good1 .5r; top1y1=m+ssdoo; bot1y2=0;
+w1 draw 1..2; % stem
+cpen; top3y3=h-ssd; rt3x3=rt1x1; w3 draw 3; % dot
+if lcs0: call `a sserif(1,1,2,-lcs); % upper serif
+ call `b serif(2,1,1,-lcs);
+ call `c serif(2,1,1,lcs); % lower serif
+fi.
+ "Ukrainian ebar";
+call charbegin('015,poli+qza.(.5pwii/pu)+lepwidth+.5pw/pu+plzi,px,0,px.slant);
+cpen; rt0x901=round(r-plzi.u);
+if ssflag=0: y901=.12m; x1=.44[x901,x3];
+else: y901=.15m; x1=.36[x901,x3]; fi;
+x1=x2; top0y1=m+oo; bot0y2=-oo;
+new w99; w99=qza.w2;
+lft99x3=round(poli.u); y3=.5[y1,y2];
+lft0x13=lft99x3; rt0x23=rt99x3;
+y13=y23=y3;
+call lune(1,2,23,13,.42rdns,.42rdns,.42rdns,.42rdns); % bowl
+if ssflag=0:
+x903=x901+.3u; y903=y901+(1.5+qyg).w0;
+x101=good0(x901-.2u); y101=.9m;
+x103=x101+.1u; y103=y101-(1.5+qyg).w0;
+new tailex; tailex=1.2; new tailmid; tailmid=.6;
+call arcpoint(2,901,902,1,0,tailex,1,.5,.5);
+call arcpoint(2,903,904,1,0,tailmid,1,.55,.5);
+call arcpoint(1,101,102,1,0,tailex,-1,.5,.5);
+call arcpoint(1,103,104,1,0,tailmid,-1,.55,.5);
+
+w0 ddraw 2{1,0}..902{x901-x2,y901-y2}..901{tailex,1},
+ 2{1,0}..904{x903-x2,y903-y2}..903{tailmid,1};
+
+w0 ddraw 1{1,0}..102{x101-x1,y101-y1}..101{tailex,-1},
+ 1{1,0}..104{x103-x1,y103-y1}..103{tailmid,-1};
+else:
+new slp; slp=1.2;
+x101=x901; y101=.85m;
+call arcpoint(1,101,102,1,0,slp,-1,.5,.5);
+call arcpoint(2,901,902,1,0,slp,1,.5,.5);
+w0 draw 1{1,0}..102{x101-x1,y101-y1}..101{slp,-1};
+ draw 2{1,0}..902{x901-x2,y901-y2}..901{slp,1};
+fi;
+cpen;
+if ssflag=0:
+y509=y510=y511=round .51m; x509=round(rt0x901-(1.2+qyh).u);
+x510=.5[x509,x511];
+y515-y509=.1(m-e); y509-y516=.1(m-e);
+x515=.4[x509,x510]; x516=.6[x510,x511];
+new hgt,bdth,theta,sintheta,costheta,acoef,bcoef,ccoef;
+hgt=w0; bdth=qzb.(1.75w0); theta=-30; sintheta=sind theta; costheta=cosd theta;
+x511-.5bdth.costheta=rt99x3+.25u;
+acoef=4.((costheta.costheta)/(bdth.bdth)+(sintheta.sintheta)/(hgt.hgt));
+bcoef=8.sintheta.costheta(1/(bdth.bdth)-1/(hgt.hgt));
+ccoef=4.((sintheta.sintheta)/(bdth.bdth)+(costheta.costheta)/(hgt.hgt));
+spen(acoef,bcoef,ccoef,0,0,0,0);
+draw 509..515..510{-2,-1}..516..511; % center tilde
+else:
+x800=1[x3,x1]; y800=y3;
+w0 draw 800..3;
+fi.
+ "Serbian dbar";
+call charbegin('016,2.pvbli+pwi/pu+pvbls,ph,0,.5px.slant);
+hpen; lft1x1=round(pvbli.u); x2=x1; top1y1=h; bot1y2=0;
+w1 draw 1..2; %left vertical stem
+if lcs>0: call `a serif(2,1,1,-lcs); %bot lft. lft. serif
+ call `b sserif(1,1,2,-lcs); %top lft. lft. serif
+ call `c serif(2,1,1,.75lcs); %bot inside lft. serif
+fi;
+x4=.5[x2,x7]; y4=-d;
+rt0x5=rt1x1; y5=1/4[e,m]; %point near middle of left stem
+x6=.5[x2,x7]; top0y6=m+oo; %top of curve
+rt1x7=round(r-pvbli.u); y7=.5[y6,y4];
+cpen; w0 draw 5{0,1}..6{1,0}; %shoulder
+call `e arc(6,7,w1); %right bowl
+call `f arc(4,7,w1); %right bowl
+cpen;
+lft0x8=lft1x1-lcs.u; rt0x9=x6; y8=y9=.5[m,h];
+w0 draw 8..9. % top bar
+ "Serbian cprime";
+call charbegin('017,2.pvbli+pwi/pu+pvbls,ph,0,.9px.slant);
+hpen; lft1x1=round(pvbli.u); x2=x1; top1y1=h; bot1y2=0;
+w1 draw 1..2; %left vertical stem
+rt1x7=round(r-pvbli.u); y7=1/3[e,m]; x8=x7; bot1y8=0;
+rt0x3=rt1x2; y3=1/4[e,m];
+x4=.5[x2,x7]; top3y4=m+oo;
+rt0x6=rt1x7; lft0x5=lft1x7;
+new stwo; stwo = sqrt 1.23114413sqrttwo; % the constant is $2^{3/10}$
+x9=1/stwo[x4,x5]; x10=1/stwo[x4,x6];
+y5=y6=y7; y9=y10=1/stwo[y7,y4];
+w0 draw 3{0,1}..4{1,0}; % link
+ddraw 4{1,0}..10{x6-x4,y6-y4}..6{0,-1},
+ 4{1,0}..9{x5-x4,y5-y4}..5{0,-1}; % shoulder
+w1 draw 7..8; % stem
+if lcs>0: call `a serif(2,1,1,-lcs); %bot lft. lft. serif
+ call `b sserif(1,1,2,-lcs); %top lft. lft. serif
+ call `c serif(2,1,1,.75lcs); %bot inside lft. serif
+ call `e serif(8,1,7,-.75lcs); %bot inside rt serif
+ call `f serif(8,1,7,lcs); %bot rt rt serif
+fi;
+cpen;
+lft0x15=lft1x1-lcs.u; rt0x17=.6[x2,x8]; y15=y17=.5[m,h];
+w0 draw 15..17. % top bar
+ "The letter s";
+call charbegin('036,7,px,0,px.slant-.5pu);
+hpen; top0y1=m+oo; bot0y5=-oo;
+x3=.5r; (y3-w6-.5w8)=(m-2w6-w8).(e/m); % white space ratio
+lft11x2=round u;
+if lcs=0: x1=x5=x3; lft0x6=round 2/3u; rt0x7=round(r-u); rt11x4=round(r-.75u);
+ y6=1/3[top0 0,y3]; y7=1/4[bot0m,y3];
+ w0 draw 6{x5-x6,3(y5-y6)}..5{1,0}; % lower left stroke
+ draw 7{x1-x7,2(y1-y7)}..1{-1,0}; % upper right stroke
+else: if w0=w1: x1=x5=x3; x6=x2; x7=x4; rt11x4=round(r-u);
+ y6=1/3[top0 0,y3]; y7=1/4[bot0m,y3];
+ w0 draw 6{x5-x6,3(y5-y6)}..5{1,0}; % lower left stroke
+ draw 7{x1-x7,2(y1-y7)}..1{-1,0}; % upper right stroke
+ x8=x9=x6; y9=y6+.5lcs.aspect.u+eps; bot0y8=0;
+ x10=x11=x7; y11=y7-.5lcs.aspect.u-eps; top0y10=m;
+ w0 draw 8..9; % lower serif
+ draw 10..11; % upper serif
+ else: x1=x3-.5u; x5=x3+.5u; lft0x6=round u; rt0x7=round(r-u);
+ rt11x4=round(r-.5u);
+ y6=good6(5/7 y3)-1; y7=good6(2/7[y3,m+oo])+1;
+ bot0y8=0; y9=y6; x8=x6; rt1x6=rt0x9;
+ top0y10=m+oo; y11=y7; x10=x7; lft1x7=lft0x11;
+ w0 ddraw 6..8, 9..8; % lower serif
+ ddraw 7..10, 11..10; % upper serif
+ rpen#; w1 draw 6{0,-1}..5{1,0}; % erase excess
+ lpen#; w1 draw 7{0,1}..1{-1,0}; % ditto
+ hpen; w0 draw 6{0,-1}..5{1,0}; % lower left stroke
+ draw 7{0,1}..1{-1,0}; % upper right stroke
+ fi;
+fi;
+new aa;
+if m+oo-e>e: aa=m+oo-e;
+else: aa=e;
+fi;
+call `a sdraw(1,2,3,4,5,w11,w8,-aa/(12u)); % middle stroke
+if ptsize>18:
+ if mode=2: call snip(pa);
+ fi;
+fi.
+ "Cyrillic letter ja";
+call charbegin('037,plki+.5pw/pu+ljawidth+.5pwi/pu+pvbli,px,0,px.slant);
+hpen; rt1x1=rt1x2=round(r-pvbli.u); top1y1=m; bot1y2=0;
+w1 draw 1..2; %stem
+if lcs>0: call `a serif(1,1,2,lcs); %upper serif
+ call `b serif(2,1,1,lcs);
+ call `c serif(2,1,1,-lcs); %lower serifs
+fi;
+x3=x1; y3=.5m;
+x25=good2(x1-(pvbls-.75).u); y25=.5[y1,y3];
+rt0x26=rt2x25; lft0x27=lft2x25; y26=y27=1[y3,y25];
+x29=.5[x1,x25]; top0y29=m;
+x28=.5[x3,x25]; y28=y3;
+call `e lune(29,28,26,27,.48rdns,.48rdns,.48rdns,.48rdns); % upper bowl
+cpen; w0 draw 29..1; % connections to stem
+ draw 28..3;
+
+bot0y460=-oo;
+if ssflag=0:
+x450=lft1x3-0u; y450=y3;
+x460=(plki+1).u;
+x454=(.52+qya)[x450,x460]; y454=.5[y450,y460];
+x455=.82[x450,x460]; y455=.8[y450,y460];
+
+new dirml,dirmr; dirml=.45+qyb; dirmr=.3+qyc;
+
+
+call arcpoint(450,454,452,-1,0,dirml(x460-x450),y460-y450,.55,.3);
+call arcpoint(454,460,458,dirml(x460-x450),y460-y450,-1,0,.6,.5);
+call arcpoint(450,455,451,-1,0,dirmr(x460-x450),y460-y450,.5,.5);
+call arcpoint(455,460,459,dirmr(x460-x450),y460-y450,-1,0,.5,.4);
+
+call arcpoint(450,451,421,-1,0,x455-x450,y455-y450,.4,.6);
+call arcpoint(450,452,422,-1,0,x454-x450,y454-y450,.4,.5);
+call arcpoint(451,455,425,x455-x450,y455-y450,dirmr(x460-x450),y460-y450,.5,.5);
+call arcpoint(452,454,424,x454-x450,y454-y450,dirml(x460-x450),y460-y450,.6,.3);
+
+w0 ddraw 450{-1,0}..422{x452-x450,y452-y450}.. % leg
+ 452{x454-x450,y454-y450}..424{x454-x452,y454-y452}..
+ 454{dirml(x460-x450),y460-y450}..458{x460-x454,y460-y454}..
+ 460{-1,0},
+ 450{-1,0}..421{x451-x450,y451-y450}..
+ 451{x455-x450,y455-y450}..425{x455-x451,y455-y451}..
+ 455{dirmr(x460-x450),y460-y450}..459{x460-x455,y460-y455}..
+ 460{-1,0};
+w0 draw 3..450;
+
+lft0x469=round(plki.u); y469=.25y450;
+x465=.7[x460,x469]; y465=.3[y460,y469];
+w0 draw 460{-1,0}..465..469{0,1}; % foot
+else:
+hpen; lft2x460=plki.u;
+w2 draw 28..460;
+fi.
+ "Cyrillic letter ju";
+call charbegin('030,pvbli+.5pwi/pu+(4+qyi)+(lowidth-.75)+.5pwii/pu+poli,px,0,.5.px.slant);
+hpen; lft1x1=round (pvbli.u); x2=x1; top1y1=m; bot1y2=0;
+w1 draw 1..2; %left stem
+if lcs>0: call `a serif(1,1,2,-lcs);
+ call `b serif(1,1,2,lcs); %upper serifs
+ call `c serif(2,1,1,-lcs);
+ call `d serif (2,1,1,lcs); %lower serifs
+fi;
+x3=x1; y3=.5m; y4=y3; x4=good2(x1+(4+qyi).u);
+w0 draw 3..4; %horizontal bar
+rt2x6=round(r-poli.u); x5=.5(x4+x6)=x7; top0y5=m+o; bot0y7=-o; y6=y4;
+lft0x24=lft2x4; rt0x34=rt2x4; y24=y34=y4; lft0x26=lft2x6;
+rt0x36=rt2x6; y26=y36=y6;
+call lune(5,7,26,36,.42rdns,.42rdns,.42rdns,.42rdns); % bowl
+call lune(5,7,34,24,.42rdns,.42rdns,.42rdns,.42rdns).
+ "Cyrillic letter zh";
+call charbegin('031,2.plki+pw/pu+2.lkwidth,px,0,px.slant);
+hpen; x1=good1 .5r; x3=x2=x1;
+top1y1=m; bot1y2=0;
+w1 draw 1..2; % stem
+if lcs>0: call `a serif(1,1,2,-lcs); % serifs on stem
+ call `b serif(1,1,2,lcs);
+ call `c serif(2,1,1,-lcs);
+ call `d serif(2,1,1,lcs);
+fi;
+cpen;
+new w99; w99=.8w3;
+y3=good6 .5m; rt99x118=round(r-(plki+.5).u); top99y118=m;
+y150=y3;
+if ssflag=0: x150=rt1x3; x160=x118-.25w99; top0y160=m+oo;
+else: x150=rt1x3+u; rt0x160=r-(plki+.5).u; top0y160=m+oo; fi;
+rt0x161=rt99x118; y161=y118;
+x154=.6[x150,x160]; y154=.55[y150,y160];
+x155=.73[x150,x160]; y155=.75[y150,y160];
+
+lft99x318=round((plki+.5).u); top99y318=m;
+y350=y3;
+if ssflag=0: x350=lft1x3; x360=x318+.25w99; top0y360=m+oo;
+else: x350=lft1x3-u; lft0x360=(plki+.5).u; top0y360=m+oo; fi;
+lft0x361=lft99x318; y361=y318;
+x354=.6[x350,x360]; y354=.55[y350,y360];
+x355=.73[x350,x360]; y355=.75[y350,y360];
+
+new dirml,dirmr; dirml=.5; dirmr=.25;
+
+call arcpoint(150,154,152,1,0,dirml(x160-x150),y160-y150,.6,.4);
+call arcpoint(154,160,158,dirml(x160-x150),y160-y150,1,0,.68,.5);
+call arcpoint(150,155,151,1,0,dirmr(x160-x150),y160-y150,.4,.6);
+call arcpoint(155,160,159,dirmr(x160-x150),y160-y150,1,0,.55,.5);
+
+call arcpoint(150,151,121,1,0,x155-x150,y155-y150,.78,.5);
+call arcpoint(151,155,125,x155-x150,y155-y150,dirmr(x160-x150),y160-y150,.5,.5);
+call arcpoint(150,152,122,1,0,x154-x150,y154-y150,.5,.5);
+call arcpoint(152,154,124,x154-x150,y154-y150,dirml(x160-x150),y160-y150,.5,.5);
+
+call arcpoint(350,354,352,-1,0,dirml(x360-x350),y360-y350,.6,.4);
+call arcpoint(354,360,358,dirml(x360-x350),y360-y350,-1,0,.68,.5);
+call arcpoint(350,355,351,-1,0,dirmr(x360-x350),y360-y350,.4,.6);
+call arcpoint(355,360,359,dirmr(x360-x350),y360-y350,-1,0,.55,.5);
+
+call arcpoint(350,351,321,-1,0,x355-x350,y355-y350,.78,.5);
+call arcpoint(351,355,325,x355-x350,y355-y350,dirmr(x360-x350),y360-y350,.5,.5);
+call arcpoint(350,352,322,-1,0,x354-x350,y354-y350,.5,.5);
+call arcpoint(352,354,324,x354-x350,y354-y350,dirml(x360-x350),y360-y350,.5,.5);
+
+if ssflag=0:
+w0 ddraw 150{1,0}..122{x152-x150,y152-y150}.. % upper right arm
+ 152{x154-x150,y154-y150}..124{x154-x152,y154-y152}..
+ 154{dirml(x160-x150),y160-y150}..158{x160-x154,y160-y154}..
+ 160..161{0,-1},
+ 150{1,0}..121{x151-x150,y151-y150}..
+ 151{x155-x150,y155-y150}..125{x155-x151,y155-y151}..
+ 155{dirmr(x160-x150),y160-y150}..159{x160-x155,y160-y155}..
+ 160..161{0,-1};
+w99 draw 118; % right bulb
+
+w0 ddraw 350{-1,0}..322{x352-x350,y352-y350}.. % upper left arm
+ 352{x354-x350,y354-y350}..324{x354-x352,y354-y352}..
+ 354{dirml(x360-x350),y360-y350}..358{x360-x354,y360-y354}..
+ 360..361{0,-1},
+ 350{-1,0}..321{x351-x350,y351-y350}..
+ 351{x355-x350,y355-y350}..325{x355-x351,y355-y351}..
+ 355{dirmr(x360-x350),y360-y350}..359{x360-x355,y360-y355}..
+ 360..361{0,-1};
+w99 draw 318; % left bulb
+else:
+x170=x160+.3u; y170=y160;
+w0 draw 150{1,0}..122{x152-x150,y152-y150}.. % upper right arm
+ 152{x154-x150,y154-y150}..124{x154-x152,y154-y152}..
+ 154{dirml(x160-x150),y160-y150}..158{x160-x154,y160-y154}..
+ 160{1,0}..170;
+x370=x360-.3u; y370=y360;
+w0 draw 350{-1,0}..322{x352-x350,y352-y350}.. % upper left arm
+ 352{x354-x350,y354-y350}..324{x354-x352,y354-y352}..
+ 354{dirml(x360-x350),y360-y350}..358{x360-x354,y360-y354}..
+ 360{-1,0}..370;
+fi;
+
+y250=y3;
+if ssflag=0: x250=rt1x3+.5u; x260=r-(plki+1.5).u; bot0y260=-oo;
+else: x250=rt1x3+1.5u; rt0x260=r-plki.u; bot0y260=-oo; fi;
+x254=(.55+qyd)[x250,x260]; y254=.5[y250,y260];
+x255=.84[x250,x260]; y255=.8[y250,y260];
+
+y450=y3;
+if ssflag=0: x450=lft1x3-.5u; x460=(plki+1.5).u; bot0y460=-oo;
+else: x450=lft1x3-1.5u; lft0x460=plki.u; bot0y460=-oo; fi;
+x454=(.55+qyd)[x450,x460]; y454=.5[y450,y460];
+x455=.84[x450,x460]; y455=.8[y450,y460];
+
+new dirml,dirmr; dirml=.37+qye; dirmr=.15+qyf;
+
+call arcpoint(250,254,252,1,0,dirml(x260-x250),y260-y250,.55,.3);
+call arcpoint(254,260,258,dirml(x260-x250),y260-y250,1,0,.6,.5);
+call arcpoint(250,255,251,1,0,dirmr(x260-x250),y260-y250,.5,.5);
+call arcpoint(255,260,259,dirmr(x260-x250),y260-y250,1,0,.5,.4);
+
+call arcpoint(250,251,221,1,0,x255-x250,y255-y250,.4,.6);
+call arcpoint(250,252,222,1,0,x254-x250,y254-y250,.4,.5);
+call arcpoint(251,255,225,x255-x250,y255-y250,dirmr(x260-x250),y260-y250,.5,.5);
+call arcpoint(252,254,224,x254-x250,y254-y250,dirml(x260-x250),y260-y250,.6,.3);
+
+call arcpoint(450,454,452,-1,0,dirml(x460-x450),y460-y450,.55,.3);
+call arcpoint(454,460,458,dirml(x460-x450),y460-y450,-1,0,.6,.5);
+call arcpoint(450,455,451,-1,0,dirmr(x460-x450),y460-y450,.5,.5);
+call arcpoint(455,460,459,dirmr(x460-x450),y460-y450,-1,0,.5,.4);
+
+call arcpoint(450,451,421,-1,0,x455-x450,y455-y450,.4,.6);
+call arcpoint(450,452,422,-1,0,x454-x450,y454-y450,.4,.5);
+call arcpoint(451,455,425,x455-x450,y455-y450,dirmr(x460-x450),y460-y450,.5,.5);
+call arcpoint(452,454,424,x454-x450,y454-y450,dirml(x460-x450),y460-y450,.6,.3);
+
+if ssflag=0:
+w0 ddraw 250{1,0}..222{x252-x250,y252-y250}.. % left leg
+ 252{x254-x250,y254-y250}..224{x254-x252,y254-y252}..
+ 254{dirml(x260-x250),y260-y250}..258{x260-x254,y260-y254}..
+ 260{1,0},
+ 250{1,0}..221{x251-x250,y251-y250}..
+ 251{x255-x250,y255-y250}..225{x255-x251,y255-y251}..
+ 255{dirmr(x260-x250),y260-y250}..259{x260-x255,y260-y255}..
+ 260{1,0};
+
+w0 ddraw 450{-1,0}..422{x452-x450,y452-y450}.. % left leg
+ 452{x454-x450,y454-y450}..424{x454-x452,y454-y452}..
+ 454{dirml(x460-x450),y460-y450}..458{x460-x454,y460-y454}..
+ 460{-1,0},
+ 450{-1,0}..421{x451-x450,y451-y450}..
+ 451{x455-x450,y455-y450}..425{x455-x451,y455-y451}..
+ 455{dirmr(x460-x450),y460-y450}..459{x460-x455,y460-y455}..
+ 460{-1,0};
+else:
+x270=x260; bot0y270=-oo;
+w0 draw 250{1,0}..222{x252-x250,y252-y250}.. % left leg
+ 252{x254-x250,y254-y250}..224{x254-x252,y254-y252}..
+ 254{dirml(x260-x250),y260-y250}..258{x260-x254,y260-y254}..
+ 260..270{1,0};
+x470=x460; bot0y470=-oo;
+w0 draw 450{-1,0}..422{x452-x450,y452-y450}.. % left leg
+ 452{x454-x450,y454-y450}..424{x454-x452,y454-y452}..
+ 454{dirml(x460-x450),y460-y450}..458{x460-x454,y460-y454}..
+ 460..470{-1,0};
+fi;
+cpen;
+w0 draw 3..250; % connections to stem
+ draw 3..450;
+
+if ssflag=0:
+rt0x269=round(r-plki.u); y269=.25y250;
+x265=.7[x260,x269]; y265=.3[y260,y269];
+w0 draw 260{1,0}..265..269{0,1}; % foot on right leg
+
+lft0x469=round(plki.u); y469=.25y450;
+x465=.7[x460,x469]; y465=.3[y460,y469];
+w0 draw 460{-1,0}..465..469{0,1}; % foot on left leg
+fi.
+ "Dotless letter i (for Ukrainian)";
+call charbegin('075,2.pvbli+pw1/pu,px,0,px.slant);
+hpen; x1=x2=good1 .5r; top1y1=m+ssdoo; bot1y2=0;
+w1 draw 1..2; % stem
+if lcs0: call `a sserif(1,1,2,-lcs); % upper serif
+ call `b serif(2,1,1,-lcs);
+ call `c serif(2,1,1,lcs); % lower serif
+fi.
+ "Lowercase Cyrillic soft sign";
+call charbegin('176,pvbli+.5pwi/pu+phbls+.5pwii/pu+phbli,px,0,.33.px.slant);
+hpen; lft1x1=lft1x2=round(pvbli.u);
+top1y1=m; bot1y2=0;
+w1 draw 1..2; % stem
+if lcs  0:
+ call `a serif(1,1,2, -lcs); % upper stem serif
+ call `b serif(1,1,2, lcs);
+ call `c serif(2,1,1, -lcs); % lower stem serif
+ call `d serif(2,1,1,.25lcs);
+fi;
+x25=x1; x26=.5[x25,x27];
+y25=y26=lb; x28=x26; bot0y28=0;
+rt2x27=round(r-phbli.u); y27=.5[y25,y2];
+lft0x29=lft2x27; rt0x30=rt2x27; y29=y30=y27;
+call `f lune(26,28,29,30,.48.rdns,.48.rdns,.48.rdns,.48.rdns); % bowl
+w0 draw 25..26; % connections to stem
+w0 draw 2..28.
+ "Lowercase Cyrillic hard sign";
+call charbegin('177,plai+.5pw/pu+(plal-1)+phbls+.5pwii/pu+phbli,px,0,1/3px.slant);
+hpen; x1=good1((plai+plal-1).u+.5w0); x2=x1; top1y1 = m; bot1y2 = 0;
+w1 draw 1..2; % stem
+if lcs  0:
+ call `a serif(1,1,2,-.5lcs); % upper stem serif
+ call `b serif(1,1,2, lcs);
+ call `c serif(2,1,1, -lcs); % lower stem serif
+ call `d serif(2,1,1,.5lcs);
+fi;
+lft0x3=round(plai.u); y3=y1; % upper arm and serif
+ x4= good0(x3-.5u); y4 = y3-sas;
+call `e arm(1,3,4,sas);
+x25= x1; x26=.4[x25,x27];
+y25= y26=lb+oo; x28=x26; bot0y28=0;
+rt2x27=round(r-phbli.u); y27=.5[y25,y2];
+lft0x29=lft2x27; rt0x30=rt2x27; y29=y30=y27;
+call `f lune(26,28,29,30,.48.rdns,.48.rdns,.48.rdns,.48.rdns); % bowl
+x44=x25; y44=.2[y25,y27];
+w0 draw 44{0,1}..26{1,0}; % connections to stem
+w0 draw 2..28.
+ "Cyrillic letter eprime";
+call charbegin('013,plzi+.5pw/pu+lepwidth+qza.(.5pwii/pu)+poli,px,0,.5.px.slant);
+cpen; lft0x901=round(plzi.u);
+if ssflag=0: y901=.12m; x1=.44[x901,x3];
+else: y901=.15m; x1=.36[x901,x3]; fi;
+x1=x2; top0y1=m+oo; bot0y2=-oo;
+new w99; w99=qza.w2;
+rt99x3=round(r-poli.u); y3=.5[y1,y2];
+rt0x13=rt99x3; lft0x23=lft99x3;
+y13=y23=y3;
+call lune(1,2,23,13,.42rdns,.42rdns,.42rdns,.42rdns); % bowl
+if ssflag=0:
+x903=x901-.3u; y903=y901+(1.5+qyg).w0;
+lft0x101=round(lft0x901+.2u); y101=.9m;
+x103=x101-.1u; y103=y101-(1.5+qyg).w0;
+new tailex; tailex=-1.2; new tailmid; tailmid=-.6;
+call arcpoint(2,901,902,-1,0,tailex,1,.5,.5);
+call arcpoint(2,903,904,-1,0,tailmid,1,.55,.5);
+call arcpoint(1,101,102,-1,0,tailex,-1,.5,.5);
+call arcpoint(1,103,104,-1,0,tailmid,-1,.55,.5);
+
+w0 ddraw 2{-1,0}..902{x901-x2,y901-y2}..901{tailex,1},
+ 2{-1,0}..904{x903-x2,y903-y2}..903{tailmid,1};
+
+w0 ddraw 1{-1,0}..102{x101-x1,y101-y1}..101{tailex,-1},
+ 1{-1,0}..104{x103-x1,y103-y1}..103{tailmid,-1};
+else:
+new slp; slp=-1.2;
+x101=x901; y101=.85m;
+call arcpoint(1,101,102,-1,0,slp,-1,.5,.5);
+
+call arcpoint(2,901,902,-1,0,slp,1,.5,.5);
+w0 draw 1{-1,0}..102{x101-x1,y101-y1}..101{slp,-1};
+ draw 2{-1,0}..902{x901-x2,y901-y2}..901{slp,1};
+fi;
+
+cpen;
+if ssflag=0:
+y509=y510=y511=round .51m; x509=round(lft0x901+(1.2+qyh).u); x510=.5[x509,x511];
+y515-y509=.1(m-e); y509-y516=.1(m-e);
+x515=.4[x509,x510]; x516=.6[x510,x511];
+new hgt,bdth,theta,sintheta,costheta,acoef,bcoef,ccoef;
+hgt=w0; bdth=qzb.(1.75w0); theta=30; sintheta=sind theta; costheta=cosd theta;
+x511+.5bdth.costheta=lft99x3-.25u;
+acoef=4.((costheta.costheta)/(bdth.bdth)+(sintheta.sintheta)/(hgt.hgt));
+bcoef=8.sintheta.costheta(1/(bdth.bdth)-1/(hgt.hgt));
+ccoef=4.((sintheta.sintheta)/(bdth.bdth)+(costheta.costheta)/(hgt.hgt));
+spen(acoef,bcoef,ccoef,0,0,0,0);
+draw 509..515..510{2,-1}..516..511; % center tilde
+else:
+x800=1[x3,x1]; y800=y3;
+w0 draw 800..3;
+fi.
+
+ "Cyrillic letter a";
+call charbegin(`a,plcali+.5pwii/pu+lawidth+.5pwi/pu+plcari,px,0,1/3[pe,px].slant);
+cpen; lft3x1=round((plcali+.8).u);
+if top3(top3top6e+2)>.9[e,m]: top3y1=.9[e,m];
+else: y1=top3top6e+2;
+fi;
+w3 draw 1; % bulb
+hpen; lft0x2=lft3x1; y2=y1; x3=4u; top0y3=m+oo;
+rt1x4=rt1x5=round(r-plcari.u); y4=1/3[e,m];
+w0 draw 2{0,1}..3{1,0}; call `a arc(3,4,w1); % shoulder
+if lcs=0: bot1y5=0; w1 draw 4..5; % stem
+else: rt0x7=round(r-(plcari-1.5).u); y5=.2[top1 0,e];
+ w1 draw 4..5; % stem
+ if rt1x5+.75ulft0x7: rt0x6=.5[rt1x5,rt0x7];
+ bot0y6=0; y7=.5e;
+ draw |w1#|5{0,-1}..
+ |w0#|6{1,0}..7{0,1}; % hook
+ else: rt1x6=round(r-.5u); bot1y6=0;
+ w1 draw 5{0,-1}..6{1,0}; % foot
+ fi;
+fi;
+x8=x9+1.5u; y8=e; x9=x4; y9=e;
+lft2x11=round(plcali.u); y11=.2[w6,y9];
+x12=.23[x11,x8]; bot0y12=-oo; x13=.38[x11,x8]; y13=.015[y12,y9];
+x10=x9; y10=.3[y12,y9];
+call arc(9,11,w2); % upper part of bowl
+draw |w2#|11{0,-1}..
+ |.7[w0,w2]|12{1,0}..|w0#|13..10(..8). % lower part of bowl
+ "Cyrillic letter b";
+call charbegin(`b,2.poli+pwii/pu+lowidth-.25,ph,0,ph.slant-.25pu);
+hpen; x1=.5[x2,x3]; lft2x2=round(poli.u); rt2x3=round(r-poli.u);
+top0y1=m+oo; bot0y2=-oo; y3=y2;
+call `a darc(1,2,w2); call `b darc(1,3,w2); % bowl
+lft0x4=lft2x2; y4=.5[y1,y2];
+x5=x2+2u; x6=x3-2u; y5=.6[m,h]; y6=2/3[m,h];
+x7=x8=x5; x9=x10=x6; rt0x11=rt2x3; top0y11=h+oo;
+vpen; w7 draw 5..6; % bar
+top7y5=top6y7; top7y6=top6y9; bot7y5=bot6y8; bot7y6=bot6y10;
+hpen; w0 ddraw 4{0,1}..7{x6-x5,y6-y5}, 4{0,1}..8{x6-x5,y6-y5}; % link
+ddraw 9{x6-x5,y6-y5}..11{0,1}, 10{x6-x5,y6-y5}..11{0,1}. % hook
+ "Cyrillic letter ts";
+call charbegin(`c,pvbli+.5pwi/pu+pvbls+plstla+.5pw/pu+plali,px,psas,px.slant);
+hpen; lft1x1=round(pvbli.u); x2=x1; x3=good1(r-.5w0-(plali+plstla).u);
+x4=x3; x5=.5[x1,x3];
+top0y1=m; bot0y2=0; y3=y1; y2=y5=y4=y6;
+rt0x6=round(r-plali.u); x7=good0(x6+.5u); y7=y6-sas;
+if lcs0:call `a serif(1,1,2,-lcs);
+ call `b serif(1,1,2,lcs);
+ call `c serif(2,1,1,-lcs);
+ call `d serif(2,1,1,.5lcs);
+ call `e serif(3,1,4,-lcs);
+ call `f serif(3,1,4,lcs);
+ call `g serif(4,1,3,-.5lcs);
+ new tmp; tmp=crisp; new crisp; crisp=0;
+ rt0x12=rt1x4;
+ call `h serif(4,1,3,(x6-x12)/u);
+ new crisp; crisp=tmp;
+fi;
+w1 draw 1..2; % left stem
+w1 draw 3..4; % right stem
+w0 draw 2..4; % bar
+call `i carm(5,6,7,sas). % lower arm
+ "Cyrillic letter d";
+call charbegin(`d,2.plali+pw/pu+ldwidth+plstla,px,psas,px.slant);
+hpen; lft0x9=lft0x8-.5u; lft0x8=round(plali.u);
+x5=.5[x1,x3]; rt0x6=round(r-plali.u); rt0x7=rt0x6+.5u;
+x1=good0(x8+2u); x2=x8+u; x3=good1(r-(plali+plstla).u-.5w0); x4=x3;
+top0y1=m; bot0y2=0; y3=y1; y8=y2=y5=y4=y6; y7=y9=y6-sas;
+y10=y1-s; y11=y2+s;
+x10=x1;
+(x11-x2)/(y11-y2)=(.3(x1+x3)-x2)/(.3(y1+y3)-y2);
+if lcs0: call `a dserif(1,0,10,-lcs);
+ call `b dserif(1,0,10,lcs); % upper left serif
+ call `c serif(3,1,4,-.5lcs);
+ call `d serif(3,1,4,lcs); % upper right serif
+ new tmp; tmp=crisp; new crisp; crisp=0;
+ call `e serif(2,0,11,(x8-x2)/u);% lower left serif
+ rt0x12=rt1x4;
+ call `j serif(4,1,3,(x6-x12)/u);% lower right serif
+ new crisp; crisp=tmp;
+ call `f serif(2,0,11,lcs); % lower left serif
+ call `i serif(4,1,3,-.5lcs); % lower right serif
+fi;
+w1 draw 3..4; % right stem
+w0 draw 10{0,-1}..11{x2-x11,y2-y11}; % diagonal
+draw 1..3; % upper bar
+call `g carm(5,8,9,sas); % left arm
+call `h carm(5,6,7,sas). % right arm
+ "Cyrillic letter e";
+call charbegin(`e,2.poli+pwii/pu+(lowidth-1.25),px,0,pe.slant);
+hpen; x3=.5r; top0y3=m+oo; y1=e; y2=.5[y5,y3];
+lft2x2=round(fixwidth[poli.u,(poli+.25).u]); rt2x1=round(r-fixwidth[poli.u,(poli+.25).u]);
+fi;
+bot0y5=-oo; x5=x3+.5u;
+new save; save=sqrttwo; new sqrttwo; sqrttwo=sqrt 1.3save;
+call `a arc(3,1,w1); % bowl
+new sqrttwo; sqrttwo=save;
+call `b arc(3,2,w2); call `c arc(5,2,w2); % stroke
+new aa; y1=y4=aa[y2,y3]; x4-1=(sqrt(1-aa.aa))[x3,x2];
+w0 draw 4..1; % bar
+if w0=w1: x6=x1; x7-x5=x1-x3; y7=y2;
+ new aa; x6=aa[x5,x7]; y6=(sqrt(1-aa.aa))[y7,y5];
+else: rt0x6=rt2x1; x7=x6; y6=.5e-1; y7=e;
+fi;
+w0 draw 5{1,0}..6(..7). % point
+ "Cyrillic letter f";
+call charbegin(`f,2.poli+pwi/pu+lfwidth,ph,pd,.6px.slant);
+hpen; x1=x2=good1 .5r; top1y1=h; bot1y2=-d;
+w1 draw 1..2; % stem
+if lcs0: call `a sserif(1,1,2,-lcs); % upper serif
+ call `b serif(2,1,1,-lcs);
+ call `c serif(2,1,1,lcs); % lower serif
+fi;
+lft1x7=round(poli.u); rt0x5=rt1x1;
+x3=.6[x5,x7];
+x3+x4=x5+x6=x7+x8=r; y3=y4; y5=y6; y7=y8; % symmetry
+top0y3=m+oo; bot0y5=-oo; y5=y7;
+x10+x3=2x1; y9=y7; x9+x4=2x1; y10=y8;
+x11=x1; 2y11=y3+y10;
+call `d darc(4,8,w1); % right bowl
+call `e darc(3,7,w1); % left bowl
+call `f arc(4,11,w0); call `g arc(10,11,w0); % right innards
+call `h arc(3,11,w0); call `i arc(9,11,w0). % left innards
+ "Cyrillic letter g";
+call charbegin(`g,pvbli+.5pwi/pu+plal+.5pw/pu+plai,px,0,px.slant);
+hpen; lft1x1=round(pvbli.u); x2=x1; top1y1=m; bot1y2=0;
+w1 draw 1..2; % stem
+if lcs0:
+ call `a serif(1,1,2,-lcs);
+ call `b serif(1,1,2,.5lcs); % upper stem serif
+ call `c serif(2,1,1,-lcs);
+ call `d serif(2,1,1,lcs); % lower stem serif
+fi;
+rt0x3=round(r-plai.u); x4=good0(x3+.5u); y3=y1; y4=y3-sas;
+call `e arm(1,3,4,sas). % upper arm and serif
+ "Cyrillic letter kh";
+call charbegin(`h,2.pvbli+pwii/pu+lkhwidth,px,0,px.slant);
+hpen; lft2x1=round(pvbli.u); rt2x4=round(r-pvbli.u); x3=x1; x2=good0(x4-.25u);
+top2y1=m; bot2y4=0; y2=y1; y3=y4;
+w2 draw 1..4; % upper left to lower right diagonal
+w0 draw 3..2; % lower left to upper right diagonal
+if lcs0: call `a serif(1,2,4,-lcs);
+ call `b serif(1,2,4,lcs); % upper left serif
+ call `c serif(4,2,1,-lcs);
+ call `d serif(4,2,1,lcs); % lower right serif
+ new ss; ss=.5(w2-w0)/u; % correction to \\{lcs} makes $w0$ like $w2$
+ call `e dserif(2,0,3,-lcs-ss);
+ call `f dserif(2,0,3,lcs+ss); % upper right serif
+ call `g dserif(3,0,2,-lcs-ss);
+ call `h dserif(3,0,2,lcs+ss); % lower left serif
+fi.
+ "Cyrillic letter i";
+call charbegin(`i,2.pvbli+pwi/pu+pvbls,px,0,px.slant);
+hpen; lft1x1=lft1x2=round(pvbli.u);
+rt1x3=rt1x4=round(r-pvbli.u);
+top1y1=m; y1=y3;
+bot1y2=0; y2=y4;
+w1 draw 1..2; % stems
+ draw 3..4;
+if lcs  0:
+ call `a serif(1,1,2,-lcs); % upper left serif
+ call `b serif(1,1,2, lcs);
+ call `c serif(2,1,1,-lcs); % lower left serif
+ call `d serif(2,1,1, lcs);
+ call `e serif(3,1,4,-lcs); % upper right serif
+ call `f serif(3,1,4, lcs);
+ call `g serif(4,1,3,-lcs); % lower right serif
+ call `h serif(4,1,3, lcs);
+fi;
+new w99; w99=.8w0;
+w99 draw 3..2. % bar
+ "The letter j";
+call charbegin(`j,6,ph,pd,ph.slant+.5pwi-2pu);
+hpen; x1=x2=good1(r-2.5u);
+if fixwidth=0: rt3x4=round 1.25u;
+else: lft3x4=round u;
+fi;
+cpen; top3y3=h-ssd; rt3x3=rt1x1; w3 draw 3; % dot
+bot3y4=-.9d; w3 draw 4; % bulb
+hpen; top1y1=m+ssdoo; bot1y2=-1/3 d;
+bot0y5=-d-oo; y4=y6; lft0x6=lft3x4; x5=.5[x2,x6];
+draw |w1|1..|w1#|2{0,-1}..|w0#|5{-1,0}..6{0,1}; % stem and tail
+if lcs0: call `a sserif(1,1,2,-lcs); % serif
+fi;
+if ptsize>14:
+ if mode=2: call snip(pa); call snip(px+po); call snip(0);
+ fi;
+fi.
+ "Cyrillic letter k";
+call charbegin(`k,pvbli+.5pwi/pu+lkwidth+.5pw/pu+plki,px,0,px.slant);
+hpen; lft1x1=round(pvbli.u); x3=x2=x1; top1y1=m; bot1y2=0;
+w1 draw 1..2; % stem
+if lcs>0: call `a serif(1,1,2,-lcs); % serifs on stem
+ call `b serif(1,1,2,lcs);
+ call `c serif(2,1,1,-lcs);
+ call `d serif(2,1,1,lcs);
+fi;
+cpen;
+new w99; w99=.8w3;
+y3=good6 .5m; rt99x118=round(r-(plki+.5).u); top99y118=m;
+y150=y3;
+if ssflag=0: x150=rt1x3; x160=x118-.25w99; top0y160=m+oo;
+else: x150=rt1x3+u; rt0x160=r-(plki+.5).u; top0y160=m+oo; fi;
+rt0x161=rt99x118; y161=y118;
+x154=.6[x150,x160]; y154=.55[y150,y160];
+x155=.73[x150,x160]; y155=.75[y150,y160];
+
+new dirml,dirmr; dirml=.5; dirmr=.25;
+
+call arcpoint(150,154,152,1,0,dirml(x160-x150),y160-y150,.6,.4);
+call arcpoint(154,160,158,dirml(x160-x150),y160-y150,1,0,.68,.5);
+call arcpoint(150,155,151,1,0,dirmr(x160-x150),y160-y150,.4,.6);
+call arcpoint(155,160,159,dirmr(x160-x150),y160-y150,1,0,.55,.5);
+
+call arcpoint(150,151,121,1,0,x155-x150,y155-y150,.78,.5);
+call arcpoint(151,155,125,x155-x150,y155-y150,dirmr(x160-x150),y160-y150,.5,.5);
+call arcpoint(150,152,122,1,0,x154-x150,y154-y150,.5,.5);
+call arcpoint(152,154,124,x154-x150,y154-y150,dirml(x160-x150),y160-y150,.5,.5);
+
+if ssflag=0:
+w0 ddraw 150{1,0}..122{x152-x150,y152-y150}.. % upper arm
+ 152{x154-x150,y154-y150}..124{x154-x152,y154-y152}..
+ 154{dirml(x160-x150),y160-y150}..158{x160-x154,y160-y154}..
+ 160..161{0,-1},
+ 150{1,0}..121{x151-x150,y151-y150}..
+ 151{x155-x150,y155-y150}..125{x155-x151,y155-y151}..
+ 155{dirmr(x160-x150),y160-y150}..159{x160-x155,y160-y155}..
+ 160..161{0,-1};
+w99 draw 118; % bulb
+else:
+x170=x160+.3u; y170=y160;
+w0 draw 150{1,0}..122{x152-x150,y152-y150}.. % upper arm
+ 152{x154-x150,y154-y150}..124{x154-x152,y154-y152}..
+ 154{dirml(x160-x150),y160-y150}..158{x160-x154,y160-y154}..
+ 160{1,0}..170{1,0};
+fi;
+
+y250=y3;
+if ssflag=0: x250=rt1x3+.5u; x260=r-(plki+1.5).u; bot0y260=-oo;
+else: x250=rt1x3+1.5u; rt0x260=r-plki.u; bot0y260=-oo; fi;
+x254=(.55+qyd)[x250,x260]; y254=.5[y250,y260];
+x255=.84[x250,x260]; y255=.8[y250,y260];
+new dirml,dirmr; dirml=.37+qye; dirmr=.15+qyf;
+
+call arcpoint(250,254,252,1,0,dirml(x260-x250),y260-y250,.55,.3);
+call arcpoint(254,260,258,dirml(x260-x250),y260-y250,1,0,.6,.5);
+call arcpoint(250,255,251,1,0,dirmr(x260-x250),y260-y250,.5,.5);
+call arcpoint(255,260,259,dirmr(x260-x250),y260-y250,1,0,.5,.4);
+
+call arcpoint(250,251,221,1,0,x255-x250,y255-y250,.4,.6);
+call arcpoint(250,252,222,1,0,x254-x250,y254-y250,.4,.5);
+call arcpoint(251,255,225,x255-x250,y255-y250,dirmr(x260-x250),y260-y250,.5,.5);
+call arcpoint(252,254,224,x254-x250,y254-y250,dirml(x260-x250),y260-y250,.6,.3);
+
+if ssflag=0:
+w0 ddraw 250{1,0}..222{x252-x250,y252-y250}.. % leg
+ 252{x254-x250,y254-y250}..224{x254-x252,y254-y252}..
+ 254{dirml(x260-x250),y260-y250}..258{x260-x254,y260-y254}..
+ 260{1,0},
+ 250{1,0}..221{x251-x250,y251-y250}..
+ 251{x255-x250,y255-y250}..225{x255-x251,y255-y251}..
+ 255{dirmr(x260-x250),y260-y250}..259{x260-x255,y260-y255}..
+ 260{1,0};
+else:
+x270=x260; bot0y270=-oo;
+w0 draw 250{1,0}..222{x252-x250,y252-y250}.. % leg
+ 252{x254-x250,y254-y250}..224{x254-x252,y254-y252}..
+ 254{dirml(x260-x250),y260-y250}..258{x260-x254,y260-y254}..
+ 260..270{1,0};
+fi;
+cpen;
+w0 draw 3..250; % connection to stem
+if ssflag=0:
+rt0x269=round(r-plki.u); y269=.25y250;
+x265=.7[x260,x269]; y265=.3[y260,y269];
+w0 draw 260{1,0}..265..269{0,1}; % foot on leg
+fi.
+ "Cyrillic letter l";
+call charbegin(`l,plli+.4pwiii/pu+llwidth+.5pwi/pu+pvbli,px,0,px.slant);
+hpen; rt1x1=round(r-pvbli.u); x2=x1; bot0y1=0; top0y2=m; y3=y2; x4=x3;
+cpen;
+if ssflag=0: x6=(plli+1.5).u; x3=good0(x6+1.75u); y4=y3-s;
+new w99; w99=.8w3;
+lft99x8=lft0x7=round(plli.u); y8=y7=.12m;
+else: x7=plli.u; y7=y6; x7=x6-.75u; x3=good0(x6+.75u); y4=y3; fi;
+bot0y6=-oo;
+hpen;
+w1 draw 1..2; % vertical stroke
+w0 draw 2..3; % upper bar
+if lcs0: call `a serif(1,1,2,lcs); % serifs
+ call `b serif(1,1,2,-lcs);
+ call `c serif(2,1,1,lcs);
+ call `d serif(2,1,1,-lcs);
+ call `e dserif(3,0,4,lcs);
+ call `f dserif(3,0,4,-lcs);
+fi;
+cpen;
+if ssflag=0:
+w0 draw 4{0,-1}..6{-1,0}..7{0,1};
+w99 draw 8; % bulb
+else:
+w0 draw 4{0,-1}..6{-1,0}..7;
+fi.
+ "Cyrillic letter m";
+call charbegin(`m,2.pvbli+.5(pw+pwi)/pu+lmwidth,px,0,px.slant);
+if fudge1: new w0,w1; % lines will be thinner in fudged styles
+ w0=round(fudge.pixels.pw+blacker); w1=round(fudge.pixels.pwi+blacker);
+fi;
+hpen; lft0x1=round(pvbli.u); x1=x2; top0y1=m; bot0y2=0;
+new w99; w99=round .8[w0,w1];
+rt99x3=round(r-pvbli.u); x3=x4; top99y3=m; bot99y4=0;
+lft99x5=lft0x1+del; lft0x6=lft99x3-del; y1=y5; y6=y3;
+x7-x5=x6-x8; lft99x7=lft0x8; bot4y7=0; y8=y7;
+w0 draw 5..1..1..2; % left stem
+w99 draw 5..7; % left diagonal
+rpen#; w1 draw 8..6; % erase excess at lower right
+hpen; w0 draw 8..6..6..3; % right diagonal
+w1 draw 3..4; % right stem
+if ucs0: call `a dserif(2,0,1,-lcs);
+ call `b dserif(2,0,1,lcs); % lower left serif
+ call `c serif(5,4,7,-lcs-del/u); % upper left serif
+ call `d serif(3,99,4,lcs); % upper right serif
+ call `e serif(4,99,3,-lcs);
+ call `f serif(4,99,3,lcs); % lower right serif
+fi;
+if fudge1: new w0,w1; % restore normal sizes in fudged styles
+ w0=round(pixels.pw+blacker); w1=round(pixels.pwi+blacker);
+fi.
+ "Cyrillic letter n";
+call charbegin(`n,2.pvbli+pwi/pu+pvbls,px,0,px.slant);
+hpen; lft1x1=round(pvbli.u); x2=x1;
+rt1x3=round(r-pvbli.u); x4=x3;
+top1y1=m; y1=y3;
+bot1y2=0; y2=y4;
+w1 draw 1..2; % left stem
+w1 draw 3..4; % right stem
+if lcs0: call `a serif(1,1,2,-lcs);
+ call `b serif(1,1,2,lcs); % upper left serif
+ call `c serif(2,1,1,-lcs);
+ call `d serif(2,1,1,lcs); % lower left serif
+ call `e serif(3,1,4,-lcs);
+ call `f serif(3,1,4,lcs); % upper right serif
+ call `g serif(4,1,3,-lcs);
+ call `h serif(4,1,3,lcs); % lower right serif
+fi;
+x5=x1; x6=x3; y5=y6; y5=(px/phh).ub;
+w0 draw 5..6. % bar
+ "Cyrillic letter o";
+call charbegin(`o,2.poli+pwii/pu+lowidth,px,0,.5px.slant);
+hpen;
+if fixwidth0: new save; save=sqrttwo;
+ new sqrttwo; sqrttwo=sqrt save; % super-superellipse
+ lft2x2=round 1.5u;
+else: lft2x2=round(poli.u);
+fi;
+x1=r-x1; % axis of left-right symmetry
+top0y1=m+oo;
+bot0y2=-oo; y3=y2; x3=r-x2;
+%call `a darc(1,2,w5); % left part of bowl
+%call `b darc(1,3,w5); % right part of bowl
+lft0x112=lft2x2; good0 x112=x12;
+rt0x122=rt2x2; good0 x122=x22; y12=y22=.5[y1,y2];
+lft0x113=lft2x3; good0 x113=x13;
+rt0x123=rt2x3; good0x123=x23; y13=y23=y12;
+x5=x1; bot0y5=-o;
+call lune(1,5,22,12,.42rdns,.42rdns,.42rdns,.42rdns);
+call lune(1,5,13,23,.42rdns,.42rdns,.42rdns,.42rdns);
+
+if fixwidth0: new sqrttwo; sqrttwo=save;
+fi.
+ "Cyrillic letter p";
+call charbegin(`p,2.pvbli+pwi/pu+pvbls,px,0,px.slant);
+hpen; lft1x1=round(pvbli.u); x2=x1;
+rt1x3=round(r-pvbli.u); x4=x3;
+top1y1=m; y1=y3;
+bot1y2=0; y2=y4;
+w1 draw 1..2; % left stem
+w1 draw 3..4; % right stem
+if lcs0: call `a serif(1,1,2,-lcs);
+ call `b serif(1,1,2,.5lcs); % upper left serif
+ call `c serif(2,1,1,-lcs);
+ call `d serif(2,1,1,lcs); % lower left serif
+ call `e serif(3,1,4,-.5lcs);
+ call `f serif(3,1,4,lcs); % upper right serif
+ call `g serif(4,1,3,-lcs);
+ call `h serif(4,1,3,lcs); % lower right serif
+fi;
+w0 draw 1..3. % bar
+ "Cyrillic letter ch";
+call charbegin(`q,2.pvbli+pwi/pu+pvbls-.25,px,0,px.slant);
+hpen; rt1x1=round(r-pvbli.u); x2=x1; bot1y1=0; top1y2=m;
+y4=y2; lft1x4=round(pvbli.u);
+w1 draw 1..2; %right vertical stem
+x3=x4; lft0x6=lft1x1; x5=.5[x3,x6];
+new vfr; vfr=.9px/phh;
+top1y2-bot1y5=vfr.(m+oo); top1y4-y3=vfr.(1/3[e,m]); top1y2-y6=vfr.(.25[e,m]);
+new stwo; stwo=1.37; x7=1/stwo[x5,x3]; y7=1/stwo[y3,y5];
+rt0x31=rt1x3; lft0x32=lft1x3; y31=y32=y3;
+x71=1/stwo[x5,x31]; x72=1/stwo[x5,x32];
+y71=1/stwo[y31,y5]; y72=1/stwo[y32,y5];
+w1 draw 4..3; %left vertical
+w0 draw 5{1,0}..6{0,1}; %hump
+ ddraw 31{0,-1}..71{x5-x31,y5-y31}..5{1,0},
+ 32{0,-1}..72{x5-x32,y5-y32}..5{1,0};
+if lcs>0: call `a serif(2,4,1,lcs); %top rt. rt. serif
+ call `b serif(1,4,2,lcs); %bot rt. rt. serif
+ call `c serif(2,4,1,-.5lcs); %top inside rt. serif
+ call `d serif(1,4,2,-lcs); %bot left serif
+ call `e serif(4,4,3,.5lcs); %top inside lft serif
+ call `f serif(4,4,3,-lcs); %top lft lft serif
+fi.
+ "Cyrillic letter r";
+call charbegin(`r,pvbli+.5pwi/pu+(lowidth-.75)+.5pwii/pu+poli,px,pd,.5px.slant);
+hpen; lft1x1=lft1x2=lft1x3=round(pvbli.u); x4=x5=.55[x1,x6];
+rt2x6=round(r-poli.u);
+top1y1=m+ssdoo; bot1y2=-d; top0y4=m+oo; bot0y5=-oo;
+y3=.5[y4,y5]; y6=y5;
+w1 draw 1..2; % stem
+w0 draw 5{-1,0}..3{0,1}..4{1,0}; % left part of bowl
+call `a darc(4,6,w2); % right part of bowl
+if lcs0: call `b sserif(1,1,2,-lcs); % upper serif
+ call `c serif(2,1,1,-lcs);
+ call `d serif(2,1,1,lcs); % lower serif
+fi.
+ "Cyrillic letter s";
+call charbegin(`s,poli+.5pwii/pu+lswidth+.5pwiii/pu+plsi,px,0,px.slant-pu);
+cpen; rt3x1=round(r-plsi.u);
+if top3(top3top6e+2)>.9[e,m]: top3y1=.9[e,m];
+else: y1=top3top6e+2;
+fi;
+if ssflag=0: w3 draw 1; fi; % bulb
+hpen; rt0x2=rt3x1; y2=y1; x3=x5=.6[x4,x1]; top0y3=m+oo;
+lft2x4=round(poli.u); y4=y5; bot0y5=-oo;
+call `a darc(3,4,w2); % stroke
+if w0=w1: x6=x2; x7-x5=x5-x4; y7=.5[y3,y5];
+ new aa; x6=aa[x5,x7]; y6=(sqrt(1-aa.aa))[y7,y5];
+else: lft0x6=x2; y6=.45e; x7=x6; y7=e;
+fi;
+if ssflag=0: w0 draw 2{0,1}..3{-1,0}; % shoulder
+else: x12=x6; y3-y12=y6-y5;
+x8=x7; y12-y8=y7-y6; w0 draw 3{1,0}..12(..8);
+fi;
+w0 draw 5{1,0}..6(..7); % point
+if ptsize>18:
+ if mode=2: call snip(pa);
+ fi;
+fi.
+ "Cyrillic letter t";
+call charbegin(`t,2.plali+pw/pu+2.(plal-1),px,0,px.slant);
+hpen; x1=good1 .5r; x2=x1; top1y1=m; bot1y2=0;
+w1 draw 1..2; % stem
+if lcs0: call `a serif(1,1,2,-.5lcs);
+ call `b serif(1,1,2,.5lcs); % upper bracketing
+ call `c serif(2,1,1,-1.25lcs);
+ call `d serif(2,1,1,1.25lcs); % lower serif
+fi;
+lft0x5=round(plai.u); x6=good0(x5-.5u); y3=y1; y4=y3-sas;
+x5+x3=x6+x4=x1+x1; y5=y1; y6=y4; % left-right symmetry
+call `e arm(1,3,4,sas); % upper right arm and serif
+call `f arm(1,5,6,sas). % upper left arm and serif
+ "Cyrillic letter u";
+call charbegin(`u,pllui+.5pwi/pu+luwidth+.5pw/pu+prlui,px,pd,px.slant);
+hpen; lft1x1=round(pllui.u); rt0x4=round(r-prlui.u);
+x2-x1=x4-x3; lft0x3=lft1x2+.5del;
+top1y1=m; y4=y1; bot1y2=-o;y3=y2;
+w1 draw 1..2; w0 draw 2..3; % left diagonal stroke
+rpen#; w1 draw 3..4; % erase excess at lower right
+
+if ssflag=0: cpen; lft3x8=lft0x7=round((pllui-1).u); bot3y8=-.9d; y7=y8;
+hpen; x6=x8+u; bot0y5=-.5d;
+else: x6=x5; x7=x6-u; hpen; bot0y7=bot0y6=bot0y5;
+fi;
+bot0y6=-d-oo;
+new aa; x5=aa[x3,x4]; y5=aa[y3,y4];
+cpen;
+if ssflag=0:
+w0 draw 4..3{x3-x4,y3-y4}..6{-1,0}..7{0,1}; % right diagonal and tail
+w3 draw 8; % bulb
+else:
+w0 draw 4..3{x3-x4,y3-y4}..6{-1,0}..7;
+fi;
+if lcs0: call `a serif(1,1,2,-lcs);
+ call `b serif(1,1,2,lcs); % left serif
+ call `c dserif(4,0,3,-lcs);
+ call `d dserif(4,0,3,lcs); % right serif
+fi.
+ "Cyrillic letter v";
+call charbegin(`v,pvbli+.5pwi/pu+phbls+.5pwii/pu+phbli,px,0,.75px.slant);
+hpen; lft1x1=lft1x2=round(pvbli.u); top1y1=m; bot1y2=0;
+w1 draw1..2; % stem
+if lcs0:
+ call `a serif(1,1,2,-lcs);
+ call `b serif(1,1,2,.5lcs); % upper serif
+ call `c serif(2,1,1,-lcs);
+ call `d serif(2,1,1,.5lcs); % lower serif
+fi;
+x3=x1; y3=.52m;
+rt1x25=round(r-(phbli+.5).u); y25=.5[y1,y3];
+lft0x26=lft1x25; rt0x27=rt1x25; y26=y27=1[y3,y25];
+x29=.5[x1,x25]; top0y29=m;
+x28=.5[x3,x25]; y28=y3;
+call `e lune(29,28,26,27,.48rdns,.48rdns,.48rdns,.48rdns); % upper bowl
+hpen; w0 draw 29..1; % connection to stem
+ draw 28..3;
+rt2x41=round(r-phbli.u); y41=.55[y2,y3];
+lft0x42=lft2x41; rt0x43=rt2x41; y42=y43=.55[y2,y3];
+x45=.5[x2,x41]; bot0y45=0;
+call `f lune(28,45,42,43,.48rdns,.48rdns,.48rdns,.48rdns); % lower bowl
+hpen; w0 draw 45..2. % connection to stem
+ "Cyrillic letter shch";
+call charbegin(`w,pvbli+.5pwi/pu+2.pvblshs+plstla+.5pw/pu+plali,px,psas,px.slant);
+hpen; lft1x1=lft1x2=round(pvbli.u); x3=good1(x1+pvblshs.u)=x4;
+x5=x6=good1(r-.5w0-(plali+plstla).u);;
+top1y1=m; y1=y3=y5; bot1y2=0; y2=y4=y6=y7;
+rt0x7=round(r-plali.u); rt0x8=r; y8=y7-sas;
+w1 draw 1..2; % stems
+ draw 3..4;
+ draw 5..6;
+if lcs  0:
+ if 4lcs.u+2w1>x5-x1-2u: new aa; 4aa.u+2w1=x5-x1-2u;
+ else: new aa; aa=lcs;
+ fi;
+ call `a serif(1,1,2,- lcs); % upper left serif
+ call `b serif(1,1,2, aa);
+ call `c serif(2,1,1,- lcs); % lower left serif
+ call `d serif(2,1,1, .5lcs);
+ call `e serif(3,1,4,- aa); % upper middle serif
+ call `f serif(3,1,4, aa);
+ call `g serif(4,1,3,-.5lcs); % lower middle serif
+ call `h serif(4,1,3, .5lcs);
+ call `i serif(5,1,6,- aa); % upper right serif
+ call `j serif(5,1,6, lcs);
+ call `k serif(6,1,5,-.5lcs); % lower right serif
+ new tmp; tmp=crisp; new crisp; crisp=0;
+ rt0x12=rt1x6;
+ call `l serif(6,1,5,(x7-x12)/u);
+ new crisp; crisp=tmp;
+fi;
+w0 draw 2..6; % bottom bar
+call `m carm(4,7,8,sas).
+ "Cyrillic letter sh";
+call charbegin(`x,2.pvbli+pwi/pu+2.pvblshs,px,0,px.slant);
+hpen; lft1x1=lft1x2=round(pvbli.u);
+x3=good1 .5r; rt1x5=round(r-pvbli.u); x4=x3; x6=x5;
+top1y1=m; y1=y3=y5;
+bot1y2=0; y2=y4=y6;
+w1 draw 1..2; % stems
+ draw 3..4;
+ draw 5..6;
+if lcs  0:
+ if 4lcs.u+2w1>x5-x1-2u: new aa; 4aa.u+2w1=x5-x1-2u;
+ else: new aa; aa=lcs;
+ fi;
+ call `a serif(1,1,2,- lcs); % upper left serif
+ call `b serif(1,1,2, aa);
+ call `c serif(2,1,1,- lcs); % lower left serif
+ call `d serif(2,1,1, .5lcs);
+ call `e serif(3,1,4,- aa); % upper middle serif
+ call `f serif(3,1,4, aa);
+ call `g serif(4,1,3,-.5lcs); % lower middle serif
+ call `h serif(4,1,3, .5lcs);
+ call `i serif(5,1,6,- aa); % upper right serif
+ call `j serif(5,1,6, lcs);
+ call `k serif(6,1,5,-.5lcs); % lower right serif
+ call `l serif(6,1,5, lcs);
+fi;
+w0 draw 2..6. % bottom bar
+ "Cyrillic letter y";
+call charbegin(`y,2.pvbli+pwi/pu+phbls+(3.5+qyi),px,0,px.slant);
+hpen; lft1x1=lft1x2=round(pvbli.u); rt1x3=rt1x4=round(r-pvbli.u);
+top1y1=top1y3=m; bot1y2=bot1y4=0;
+w1 draw 1..2; % stems
+ draw 3..4;
+if lcs  0:
+ call `a serif(1,1,2, -lcs); % upper left serif
+ call `b serif(1,1,2, lcs);
+ call `c serif(2,1,1, -lcs); % lower left serif
+ call `d serif(2,1,1,.5lcs);
+ call `e serif(3,1,4, -lcs); % upper right serif
+ call `f serif(3,1,4, lcs);
+ call `g serif(4,1,3, -lcs); % lower right serif
+ call `h serif(4,1,3, lcs);
+fi;
+x25=x1; x26=.5[x25,x27];
+y25=y26=lb; x28=x26; bot0y28=0;
+x27=good1(x1+phbls.u); y27=.5[y25,y2];
+lft0x29=lft2x27; rt0x30=rt2x27; y29=y30=y27;
+call `f lune(26,28,29,30,.48.rdns,.48.rdns,.48.rdns,.48.rdns); % bowl
+w0 draw 25..26; % connections to stem
+w0 draw 2..28.
+ "Cyrillic letter z";
+call charbegin(`z,plzi+.5pw/pu+lzwidth+.5pwii/pu+phbli,px,0,px.slant);
+cpen;
+if ssflag=0: lft0x901=round(plzi.u); y901=.08m; x1=.45[x901,x7];
+else: lft0x901=round(plzi.u); y901=.15m; x1=.4[x901,x7];
+fi;
+top0y1=m+oo;
+y5=(px/phh).ub; x5=x1;
+bot0y9=-oo; x9=x1;
+rt1x3=round(r-(phbli+.5).u); y3=.5[y1,y5];
+rt0x4=rt1x3; lft0x2=lft1x3; y2=y3=y4;
+rt2x7=round(r-phbli.u); y7=.5[y5,y9];
+rt0x8=rt2x7; lft0x6=lft2x7; y6=y7=y8;
+call exlune(1,5,2,4,.45rdns,.45rdns,.45rdns,.45rdns,0,.3); % bowls
+call exlune(5,9,6,8,.45rdns,.47rdns,.45rdns,.45rdns,.25,0);
+if ssflag=0: x15=x5-1.15u; else: x15=x5; fi;
+y15=y5;
+w0 draw 5..15; % center line
+if ssflag=0:
+x903=x901-.1u; y903=y901+(1.5+qyg).w0;
+lft0x101=round((plzi+.2).u); y101=.92m;
+x103=x101-.1u; y103=y101-(1.5+qyg).w0;
+new tailex; tailex=-1.2; new tailmid; tailmid=-.6;
+call arcpoint(9,901,902,-1,0,tailex,1,.5,.5);
+call arcpoint(9,903,904,-1,0,tailmid,1,.55,.5);
+call arcpoint(1,101,102,-1,0,tailex,-1,.5,.5);
+call arcpoint(1,103,104,-1,0,tailmid,-1,.55,.5);
+w0 ddraw 1{-1,0}..102{x101-x1,y101-y1}..101{tailex,-1},
+ 1{-1,0}..104{x103-x1,y103-y1}..103{tailmid,-1};
+w0 ddraw 9{-1,0}..902{x901-x9,y901-y9}..901{tailex,1},
+ 9{-1,0}..904{x903-x9,y903-y9}..903{tailmid,1};
+else:
+lft0x101=round((plzi+.1).u); y101=.85m;
+new tail; tail=-1.2;
+call arcpoint(1,101,102,-1,0,tail,-1,.5,.5);
+call arcpoint(9,901,902,-1,0,tail,1,.5,.5);
+w0 draw 1{-1,0}..102{x101-x1,y101-y1}..101{tail,-1};
+ draw 9{-1,0}..902{x901-x9,y901-y9}..901{tail,1};
+fi.