cmchar "open cyrillic quote (looks like <<)";
beginchar(oct"035",10u#,x_height#,0);
adjust_fit(if monospace:-u#,-u# else: 0,0 fi); pickup rule.nib;
lft x2=hround u-epsilon; x1=x3=.55w;
y1=h; y3=0; y2=.5[y1,y3];
draw z1--z2--z3; % left diagonals
x4=w-x2; y4=.9[y3,y1]; y6=.1[y3,y1];
x5-x2=x6-x3=x4-x1; y5=y2;
draw z4--z5--z6; % right diagonals
z2'=z2; x2':=x2-.625rule_thickness;
z5'=z5; x5':=x5+.625rule_thickness;
draw z1--z2'--z3; % left diagonals
draw z4--z5'--z6; % right diagonals
labels(1,2,3,4,5,6); endchar;
cmchar "close cyrillic quote (looks like >>)";
beginchar(oct"036",10u#,x_height#,0);
adjust_fit(if monospace:-u#,-u# else: 0,0 fi); pickup rule.nib;
lft x2=.55w; x1=x3=hround u-epsilon;
y1=.9h; y3=.1h; y2=.5[y1,y3];
y4=h; y6=0; y5=.5[y4,y6];
draw z1--z2--z3; % left diagonals
x4=w-x2;
x5-x2=x6-x3=x4-x1;
draw z4--z5--z6; % right diagonals
z2'=z2; x2':=x2-.625rule_thickness;
z5'=z5; x5':=x5+.625rule_thickness;
draw z1--z2'--z3; % left diagonals
draw z4--z5'--z6; % right diagonals
labels(1,2,3,4,5,6);
endchar;
cmchar "The number mark";
beginchar(oct"031",17u#,cap_height#,0);
italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#);
adjust_fit(cap_serif_fit#,cap_serif_fit#);
numeric thin_stem,letter_w,light_bulb; letter_w=14u;
thin_stem=hround(fudged.hair+stem_corr);
pickup tiny.nib; pos1(thin_stem,0); pos2(thin_stem,0);
pos3(thin_stem,0); pos4(thin_stem,0);
top y1=h; bot y4=0;
if serifs: top y3=h-bot y2=.9h; else: top y3=h; bot y2=0; fi
x1=x2; x3=x4; x1l=letter_w-x3r;
rt x3r=hround min(letter_w-3u,letter_w-4u+.5fudged.cap_stem);
filldraw stroke z1e--z2e; % left stem
filldraw stroke z3e--z4e; % right stem
if hefty: penpos5(fudged.cap_stem,0); penpos6(fudged.cap_stem,0);
x5l=x1; x6r=x4; y5=h; y6=0;
numeric upper_notch,lower_notch;
upper_notch=h-cap_notch_cut; lower_notch=cap_notch_cut;
x1'=rt x1r; z1'=whatever[z5l,z6l]; x4'=lft x4l; z4'=whatever[z5r,z6r];
fill z5l..
if y1'<upper_notch: {right}(x1'+1,upper_notch){down}... fi
{z6-z5}diag_in(5l,6l,1,6r)--z6r..
if y4'>lower_notch: {left}(x4'-1,lower_notch){up}... fi
{z5-z6}diag_in(6r,5r,1,5l)--cycle; % diagonal
else: penpos5(whatever,0); penpos6(whatever,90);
z5l=z1l; z6l=z4l;
z7=z6l+(max(eps,cap_stem-3stem_corr-tiny),0) rotated (angle(z5l-z6l)-90);
z5r=z7+whatever*(z5l-z6l); z6r=z7+whatever*(z5l-z6l);
filldraw stroke z5e..z6e; fi % diagonal
if serifs: serif(5,6,a,1/3,-cap_jut); % upper left serif
light_bulb=hround 7/8[cap_hair,flare];
z2'r=(tiny.rt x2r,y2); z2'l=(tiny.lft x2l,y2);
z3'l=(tiny.rt x3r,y3); z3'r=(tiny.lft x3l,y3);
penpos8(vair,-90); penpos9(cap_hair,-180); penpos10(light_bulb,-180);
penpos11(vair,90); penpos12(cap_hair,0); penpos13(light_bulb,0);
x8=x1-1.25u; x11=letter_w-x8;
x10r=hround .5u; x13r=hround(letter_w-.5u);
if monospace: y10=u; y11=h-y8=h;
else: y10=2u-min(.5light_bulb,.5u); top y11r=h+o; bot y8r=-o; fi
y13=h-y10;
fill stroke z2'e{down}...{left}z8e;
fill stroke z3'e{up}...{right}z11e; % upper and lower arcs
clearpen;
bulb(8,9,10); bulb(11,12,13); fi % upper and lower bulbs
numeric thick_hair; thick_hair=max(hair,.75stem);
penpos14(vair,90); penpos16(vair,-90);
penpos15(thick_hair,180); penpos17(thick_hair,0);
interim superness:=sqrt(more_super*hein_super);
if monospace: x15=hround(w-4.5u); rt x17r=hround(w-.5u);
else: x15=hround(w-4u); rt x17r=hround(w-.5u); fi
x14=x16=.5[x15,x17]; y14r=h-y16r=.7h; y15=y17=.5[y14,y16];
if x17l<=x15l+10: x15l:=x15r+vair; x17l:=x17r-vair; fi
penstroke pulled_arc.e(14,15) & pulled_arc.e(15,16)
& pulled_arc.e(16,17) & pulled_arc.e(17,14) & cycle; % bowl
pickup crisp.nib; pos18(thick_hair,90); pos19(thick_hair,90);
bot y18l=bot y19l=.075h; rt x19=x17r; lft x18=x15r;
filldraw stroke z18e--z19e; % bar
math_fit(0,max(.5ic#-.5u#,0));
penlabels(1,1',2,3,4,4',5,6,7,8,9,10,11,12,13,14,15,16,17,18,19);
endchar;
|