From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- fonts/amsfonts/source/asymbols.mf | 1947 +++++++++++++++++++++++++++++++++++++ 1 file changed, 1947 insertions(+) create mode 100644 fonts/amsfonts/source/asymbols.mf (limited to 'fonts/amsfonts/source/asymbols.mf') diff --git a/fonts/amsfonts/source/asymbols.mf b/fonts/amsfonts/source/asymbols.mf new file mode 100644 index 0000000000..eb97fc3b4a --- /dev/null +++ b/fonts/amsfonts/source/asymbols.mf @@ -0,0 +1,1947 @@ +%% filename: asymbols.mf +%% version: 2.2 +%% date: 1995/01/04 +%% +%% American Mathematical Society +%% Technical Support +%% Publications Technical Group +%% 201 Charles Street +%% Providence, RI 02904 +%% USA +%% tel: (401) 455-4080 +%% (800) 321-4267 (USA and Canada only) +%% fax: (401) 331-3842 +%% email: tech-support@ams.org +%% +%% Copyright 1995, 2009 American Mathematical Society. +%% +%% This Font Software is licensed under the SIL Open Font License, +%% Version 1.1. This license is in the accompanying file OFL.txt, and +%% is also available with a FAQ at: http://scripts.sil.org/OFL. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Italic corrections have not been computed for most of these characters, +% since they are generally not slanted. + +% Changed some assignments for +% +% cmchar "Circle-R brand" +% cmchar "Circle-S brand" +% +% to avoid rounding problems and the differences in TFM files for +% different magnifications +% +% Changed by Stefan Lindner 15.03.1991 +% +% original: radius=.5(6u++cap_height)+3u; radius=radius#*hppp; +% changed: radius#=.5(6u#++cap_height#)+3u#; radius:=radius#*hppp; +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +def makesquare (suffix i,j,k,l) = +%% z.j, z.k are the lower left and right corners +%% assumed on baseline; ie, y.k=y.j=0 +%% z.i, z.l are upper left and right corners +%% that is, start labeling with upper left corner, and +%% proceed to the successive corners counter-clockwise. +y.i-y.j=x.k-x.j; y.i:=good.y y.i+o; y.l=y.i +%% user must draw the square him/herself. +enddef; + + +cmchar "Square with dot"; +beginchar(oct"000",14u#,12u#,0); +adjust_fit(0,0); pickup rule.nib; +lft x1=hround 1.0u; x2=x1; x4=x5=w-x1; +bot y2=0; y4=y2; +makesquare (1,2,4,5); +y3=good.y .5[y1,y2]; x3=good.x .5[x1,x5]; +draw z1---z2---z4---z5---cycle; % square +fill fullcircle scaled dot_size shifted z3; % dot +penlabels(1,2,3,4,5); endchar; + +cmchar "Square plus"; +beginchar(oct"001",14u#,12u#,0); +adjust_fit(0,0); pickup rule.nib; +lft x1=hround 1.0u; x2=x1; x4=x5=w-x1; +bot y2=0; y4=y2; makesquare(1,2,4,5); +draw z1---z2---z4---z5---cycle; % square +x6=x1; x7=x4; y6=.5[y1,y2]; y7=y6; % cross strut +y8=y1; y9=y2; x8=.5[x1, x5]; x9=x8; % vertical strut +draw z6---z7; draw z8---z9; % plus +penlabels(1,2,4,5,6,7,8,9); endchar; + +cmchar "Square times"; +beginchar(oct"002",14u#,12u#,0); +adjust_fit(0,0); pickup rule.nib; +lft x1=hround 1.0u; x2=x1; x4=x5=w-x1; +bot y2=0; y4=y2; makesquare(1,2,4,5); +draw z1---z2---z4---z5---cycle; % square +draw z1---z4; draw z2---z5; % diagonals +penlabels(1,2,4,5); endchar; + +cmchar "Square"; +beginchar(oct"003",14u#,12u#,0); +adjust_fit(0,0); pickup rule.nib; +lft x1=hround 1.0u; x2=x1; +x4=x5=w-x1; +bot y2=0; y4=y2; makesquare(1,2,4,5); +draw z1---z2---z4---z5---cycle; % square +penlabels(1,2,4,5); endchar; + +cmchar "Filled square"; +beginchar(oct"004",14u#,12u#,0); +adjust_fit(0,0); pickup rule.nib; +lft x1=hround 1.0u; x2=x1; x4=x5=w-x1; +bot y2=0; y4=y2; makesquare(1,2,4,5); +filldraw z1---z2---z4---z5---cycle; % square +penlabels(1,2,4,5); endchar; + +cmchar "Small filled square"; +beginchar(oct"005",5u#,.8asc_height#,0); +adjust_fit(0,0); pickup rule.nib; +lft x1=hround 1.0u; x2=x1; x3=x4=w-x1; +bot y2=0; y3=y2; makesquare(1,2,3,4); +filldraw z1---z2---z3---z4---cycle; % draw and fill square +penlabels(1,2,3,4); endchar; + + +cmchar "Diamond"; +beginchar(oct"006",12u#,asc_height#,2u#); +adjust_fit(0,0); pickup rule.nib; +%% z1, z2 are left & right vertices +%% z3, z4 are top and bottom points +lft x1=hround u; x2=w-x1; y1=y2; +x3=x4=.5[x1, x2]; bot y4=-d-o; top y3= good.y h+o; +y1=.5[y4,y3]; +draw z1---z3---z2---z4---cycle; % draw diamond +penlabels(1,2,3,4); endchar; + +cmchar "Filled Diamond"; +beginchar(oct"007",12u#,asc_height#,2u#); +adjust_fit(0,0); pickup rule.nib; +%% z1, z2 are left & right vertices +%% z3, z4 are top and bottom points +lft x1=hround u; x2=w-x1; y1=y2; +x3=x4=.5[x1, x2]; bot y4=-d-o; top y3= good.y h+o; +y1=.5[y4,y3]; +filldraw z1---z3---z2---z4---cycle; % draw diamond +penlabels(1,2,3,4); endchar; + +% do char "011 before char "010. +cmchar "Counter-clockwise-circle indicator"; +beginarithchar(oct"011"); pickup light_rule.nib; +autorounded; lft x6=hround u; x2=w-x6; +y2=math_axis; top y8=h; +circle_points; % define points on circumference +%% see page 487 of vol E +path p; numeric t; +p=z8{right}...z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left} + ...z5{z6-z4}...z6{up}...z7{z8-z6}...cycle; +t=xpart(p intersectiontimes ((4.5u,0)--(4.5u,y8))); +draw subpath (0,t) of p; % circle with gap +z0=.5[z5,z1]; % the origin of the circle +%% Now prepare for left arrowhead--see pg E465 +pickup crisp.nib; +pos12(rule_thickness,90); pos13(bar,0); pos14(bar,0); +y10=y12=y8; lft x10=hround x8; +y13-y10=y10-y14=.19asc_height+eps; x13=x14=x10+3u+eps; +pos15(bar,angle(z14-z10)); z15l=z10; +pos16(bar,angle(z13-z10)); z16l=z10; +z19=.38[.5[z13,z14],z10]; +numeric t; path p; % re-use t, p +p=z14r{z19-z14}..z16r; +t=xpart(p intersectiontimes((0,y12l)--(w,y12l))); +x12=xpart point t of p; +path p; +p=z10..{z14-z19}z14l--subpath(0,t) of +(z14r{z19-z14}..z16r)--z12l--z12r +--subpath(t,0) of (z13r{z19-z13}..z15r) +--z13l{z19-z13}..z10&cycle; % arrowhead +p:=p shifted -z8; % move back to origin +p:=p rotated -16; % rotate down a bit +p:=p shifted z8; % move back to tip of circle +filldraw p; +penlabels(0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,19); +picture v; v:=currentpicture; endchar; + +cmchar "Clockwise-circle indicator"; +beginarithchar(oct"010"); +currentpicture:=v reflectedabout ((w/2,0),(w/2,h)); +penlabels(0,1,2,3,5,6,7,8,9,10); endchar; + +cmchar "Left-Right Harpoons"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"013",18u#,v_center(spread#+.48asc_height#)); +path topleft; % for top left half arrow (harpoon) +adjust_fit(0,0); +pickup crisp.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis; +x1+.5rule_thickness=hround(w-u); lft x0=hround u; +y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps; +pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); +z6l=z0; numeric t; path p; p=z4r..{2(x0-x4),y0-y4}z6r; +t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); +x2=xpart point t of p; +topleft=z0--(x0,y2l)---z1l..z1r---z2r + ..subpath (t,0) of\\(z3r..{2(x0-x3),y0-y3}z5r) + --z3l..{2(x0-x3),y0-y3}cycle; % arrowhead and stem +topleft:= +topleft shifted (0,.5spread); % shift above math_axis +path botright; % for bottom right half arrow +botright:=topleft reflectedabout ((w/2,0),(w/2,h)); +botright:=botright reflectedabout +((0,math_axis+eps),(w,math_axis+eps)); +filldraw topleft; filldraw botright; +penlabels(0,1,2,3,4,5,6); endchar; + +cmchar "Right-Left Harpoons"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"012",18u#,v_center(spread#+.48asc_height#)); +path topright, botleft; +adjust_fit(0,0); +pickup crisp.nib; +topright:=topleft reflectedabout((w/2,0),(w/2,h)); +botleft:=botright reflectedabout((w/2,0),(w/2,h)); +filldraw topright; filldraw botleft; endchar; + +cmchar "Square minus"; +beginchar(oct"014",14u#,12u#,0); adjust_fit(0,0); +pickup rule.nib; lft x1=hround 1.0u; x2=x1; x4=x5=w-x1; bot +y2=0; y4=y2; makesquare(1,2,4,5); +draw z1---z2---z4---z5---cycle; % square +x6=x1; x7=x4; y6=.5[y1,y2]; y7=y6; % cross strut +draw z6---z7; % minus +penlabels(1,2,4,5,6,7); endchar; + +cmchar "Forces"; +beginchar(oct"015",13u#,asc_height#,0); +adjust_fit(0,0);; pickup rule.nib; +top y1=h; bot y2=0; y3=y4=good.y .5h; y5=y1; y6=y2; +lft x5=hround u; x4=w-x5; +compute_spread(.45x_height#,.55x_height#); +x1=x5+spread; x1=x2=x3; x6=x5; +draw z6--z5; draw z2--z1; draw z3--z4; +penlabels(1,2,3,4,5,6); endchar; + +cmchar "Forces with extra bar"; +beginchar(oct"016",16u#, asc_height#,0); +adjust_fit(0,0); pickup rule.nib; +compute_spread(.42x_height#,.52x_height#); +top y1=h; bot y2=0; y3=y4=good.y .5h; +y5=y7=y1; y6=y8=y2; lft x7=hround u; x4=w-x7; +x5=good.x x7+spread; x1=good.x x5+spread; +x1=x2=x3; x6=x5; x7=x8; +draw z7--z8; draw z5--z6; draw z1--z2; % verticals +draw z3--z4; % horizontal piece +penlabels(1,2,3,4,5,6,7,8); endchar; + +cmchar "Satisfies"; +beginchar(oct"017",11u#,asc_height#,0); +adjust_fit(0,0); pickup rule.nib; +compute_spread(.45x_height#,.55x_height#); +top y1=h; bot y2=0; y0=good.y .5[y1,y2]; +y3=vround y0+.5spread; +y5=vround y0- .5spread; y4=y3; y6=y5; +lft x1=hround u; x4=w-x1; +x1=x2=x3=x5; x4=x6; x0=x1; +draw z1--z2; % vertical line +draw z3--z4; % draw top horizontal piece +draw z5--z6; % draw bottom horizontal piece +penlabels(0,1,2,3,4,5,6); endchar; + +cmchar "Rightward double arrowhead"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"020",18u#,v_center(spread#+.48asc_height#)); adjust_fit(0,0); +pickup crisp.nib; pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis; x1-.5rule_thickness=hround u; +rt x0=hround(w-u); y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps; +pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0; +z9=.381966[.5[z3,z4],z0]; numeric t; path p; p=z4l{z9-z4}..z6r; t=xpart(p +intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p; path p; +p=z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r) + --z2l--z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r) + --z3r{z9-z3}..z0 & cycle; +filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r) + --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r) + --z3r{z9-z3}..z0 & cycle; % arrowhead and stem +filldraw p shifted (x3l-x0,0); +penlabels(0,1,2,3,4,5,6,9); endchar; + +cmchar "Leftward double arrowhead"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"021",18u#,v_center(spread#+.48asc_height#)); +adjust_fit(0,0); pickup crisp.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis; +x1+.5rule_thickness=hround(w-u); lft x0=hround u; +y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps; +pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); +z6l=z0; z9=.381966[.5[z3,z4],z0]; +numeric t; path p; +p=z4r{z9-z4}..z6r; +t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); +x2=xpart point t of p; +path p; p=z0..{z4-z9}z4l--subpath (0,t) +of\\(z4r{z9-z4}..z6r) + --z2l--z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r) + --z3l{z9-z3}..z0 & cycle; % second arrowhead +filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r) + --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r) + --z3l{z9-z3}..z0 & cycle; % arrowhead and stem +filldraw p shifted (x3r-x0,0); +penlabels(0,1,2,3,4,5,6,9); endchar; + +cmchar "Leftward double arrow"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"022",18u#,v_center(spread#+.96asc_height#)); +adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,90); +pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0); +y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft +x0=hround u; y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps; +pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); +z6l=z0; z9=.381966[.5[z3,z4],z0]; numeric t; path p; +p=z4r{z9-z4}..z6r; t=xpart(p +intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p; +path p; % re-use p +p=z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r) + --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r) + --z3l{z9-z3}..z0 & cycle; % arrowhead and stem +p:=p shifted (0,y2-y4+eps); filldraw p; % top arrow +p:= p shifted (0,y4-y3-eps); filldraw p; % bottom arrow +penlabels(0,1,2,3,4,5,6,9); endchar; + +cmchar "Rightward double arrow"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"023",18u#,v_center(spread#+.96asc_height#)); +adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,90); +pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0); +y0=y1=y2=math_axis; x1-.5rule_thickness=hround u; rt +x0=hround(w-u); y3-y0=y0-y4=.24asc_height+eps; +x3=x4=x0-3u-eps; pos5(bar,angle(z4-z0)); z5l=z0; +pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0]; +numeric t; path p; p=z4l{z9-z4}..z6r; t=xpart(p +intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p; +path p; p=z0..{z4-z9}z4r--subpath (0,t) +of\\(z4l{z9-z4}..z6r) + --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r) + --z3r{z9-z3}..z0 & cycle; % arrowhead and stem +p:=p shifted (0,y2-y4+eps); filldraw p; % top +p:=p shifted (0,y4-y3-eps); filldraw p; %bottom +penlabels(0,1,2,3,4,5,6,9); endchar; + +cmchar "Double upward arrow"; +beginchar(oct"024",15u#,asc_height#,asc_depth#); italcorr +.76asc_height#*slant+.5crisp#-u#; adjust_fit(0,0); pickup +crisp.nib; pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(bar,90); pos4(bar,90); lft +x1l=hround(.5w-.5rule_thickness); y1-.5rule_thickness=-d; +x0=x1=x2; top y0=h; x0-x3=x4-x0=3u+eps; +y3=y4=y0-.24asc_height-eps; pos5(bar,angle(z4-z0)); z5l=z0; +pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0]; +numeric t; path p; p=z4l{z9-z4}..z6r; t=xpart(p +intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of +p; +path p; p=z0..{z4-z9}z4r--subpath (0,t) +of\\(z4l{z9-z4}..z6r) + --z2r---z1r..z1l---z2l--subpath (t,0) of\\(z3l{z9-z3}..z5r) + --z3r{z9-z3}..z0 & cycle; % arrowhead and stem +p:=p shifted (x0-x4-eps,0); filldraw p; % left arrow +p:=p shifted (x4-x3+eps,0); filldraw p; +penlabels(0,1,2,3,4,5,6,9); endchar; + +cmchar "Double downward arrow"; +beginchar(oct"025",15u#,asc_height#,asc_depth#); +adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,0); +pos2(rule_thickness,0); pos3(bar,90); pos4(bar,90); lft +x1l=hround(.5w-.5rule_thickness); y1+.5rule_thickness=h; +x0=x1=x2; bot y0=-d; x0-x3=x4-x0=3u+eps; +y3=y4=y0+.24asc_height+eps; pos5(bar,angle(z4-z0)); z5l=z0; +pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0]; +numeric t; path p; p=z4r{z9-z4}..z6r; t=xpart(p +intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of +p; +path p; p=z0..{z4-z9}z4l--subpath (0,t) +of\\(z4r{z9-z4}..z6r) + --z2r---z1r..z1l---z2l--subpath (t,0) of\\(z3r{z9-z3}..z5r) + --z3l{z9-z3}..z0 & cycle; % arrowhead and stem +p:=p shifted (x0-x4-eps,0); filldraw p; % left arrow +p:=p shifted (x4-x3+eps,0); filldraw p; +penlabels(0,1,2,3,4,5,6,9); endchar; + +%% +cmchar "Upward rightward harpoon"; +beginchar(oct"026",7.5u#,asc_height#, asc_depth#); +%% see page E431 +adjust_fit(0,0); pickup crisp.nib; +x0=x1=x2; lft x1l=hround(.5w-.5rule_thickness); +y1-.5rule_thickness=-d; pos1(rule_thickness,0); +pos2(rule_thickness,0); pos3(bar,-90); pos4(bar,-90); +top y0=vround h; +x3-x0=x0-x4=.24asc_height+eps; y3=y4=y0-3u-eps; +pos5(bar,angle(z4-z0)); z5l=z0; +pos6(bar,angle(z3-z0)); z6l=z0; +z9=.381966[.5[z3,z4],z0]; +numeric t; path p; +p=z4r..{y0-y4,2(x0-x4)}z6r; +t=xpart (p intersectiontimes ((x2l,0)--(x2l,h))); +y2=ypart point t of p; +filldraw z0--(x2l,y0)---z1l..z1r---z2r + ..subpath(t,0) of (z3r..{x0-x3,2(y0-y3)}z5r) + --z3l..{x0-x3,2(y0-y3)}cycle; +picture v; v:=currentpicture; +penlabels(0,1,2,3,4,5,6,9); endchar; + +cmchar "Downward rightward harpoon"; +beginchar(oct"027",7.5u#,asc_height#,asc_depth#); +adjust_fit(0,0); +currentpicture:=v +reflectedabout((0,.5(h-d)*aspect_ratio+eps),(w,.5(h-d)*aspect_ratio+eps)); +penlabels(0,1,2,3,4,5,6); endchar; + +cmchar "Upward leftward harpoon"; +beginchar(oct"030",7.5u#,asc_height#, asc_depth#); +adjust_fit(0,0); +currentpicture:= +v reflectedabout((w/2+eps,-d),(w/2+eps,h)); +picture v; v:=currentpicture; +penlabels(0,1,2,3,4,5,6); endchar; + +cmchar "Downward leftward harpoon"; +beginchar(oct"031",7.5u#,asc_height#,asc_depth#); +adjust_fit(0,0); +currentpicture:=v +reflectedabout((0,.5(h-d)*aspect_ratio+eps),(w,.5(h-d)*aspect_ratio+eps)); +penlabels(0,1,2,3,4,5,6); endchar; + +cmchar "Rightward arrow with tail"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"032",20u#,v_center(spread#+.48asc_height#)); +adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,90); +pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0); +y0=y1=y2=math_axis; x1-.5rule_thickness=hround 1.5u; rt +x0=hround(w-3u); y3-y0=y0-y4=.24asc_height+eps; +x3=x4=x0-3u-eps; pos5(bar,angle(z4-z0)); z5l=z0; +pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0]; +numeric t; path p; p=z4l{z9-z4}..z6r; t=xpart(p +intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p; +path p; +p=z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r) + --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r) + --z3r{z9-z3}..z0 & cycle; % arrowhead and stem +path arrow; +arrow=z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r) + --z2l---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r) + --z3r{z9-z3}..z0 & cycle; +p:=p shifted (2u,0); filldraw p; +arrow:=arrow shifted (-13u+bar,0); filldraw arrow; +penlabels(0,1,2,3,4,5,6,9); endchar; + +cmchar "Leftward arrow with tail"; +beginchar(oct"033",20u#,v_center(spread#+.48asc_height#)); +adjust_fit(0,0); pickup crisp.nib; +p:= p reflectedabout ((w/2+eps,-d),(w/2+eps,h)); +arrow:= arrow reflectedabout ((w/2+eps,-d),(w/2+eps,h)); +filldraw p; filldraw arrow; +penlabels(0,1,2,3,4,5,6,9); endchar; + +cmchar "Leftward-rightward parallel arrows"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"034",18u#,v_center(spread#+.96asc_height#)); +adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,90); +pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0); +y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft +x0=hround u; y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps; +pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); +z6l=z0; z9=.381966[.5[z3,z4],z0]; numeric t; path p; +p=z4r{z9-z4}..z6r; t=xpart(p +intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p; +path p, q; % re-use p +p=z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r) + --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r) + --z3l{z9-z3}..z0 & cycle; % arrowhead and stem +p:=p shifted (0,.5[y3,y4]+eps); filldraw p; % top arrow +p:= p shifted (0,y4-y3); +q:= p reflectedabout ((w/2+eps,-d),(w/2+eps,h)); +p:=p shifted (0,y3-y4+eps); % restore p's position +filldraw q; % bottom arrow +penlabels(0,1,2,3,4,5,6,9); endchar; + +cmchar "Rightward-leftward parallel arrow"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"035",18u#,v_center(spread#+.96asc_height#)); +adjust_fit(0,0); pickup crisp.nib; +p:=p reflectedabout ((w/2+eps,-d),(w/2+eps,h)); +q:=q reflectedabout ((w/2+eps,-d),(w/2+eps,h)); +filldraw p; filldraw q; +penlabels(0,1,2,3,4,5,6,9); endchar; + +cmchar "Leftward shift"; +beginchar(oct"036",9u#,asc_height#, 0); +adjust_fit(0,0); pickup crisp.nib; pos1(rule_thickness,90); +pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0); +y0=y1=y2=.8h; x1+.5rule_thickness=hround(w-u); lft x0=hround +u; y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps; +pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); +z6l=z0; z9=.381966[.5[z3,z4],z0]; +z10=z1; x11=x10; y11-.5rule_thickness =vround -d; +pos10(rule_thickness,0); pos11(rule_thickness,0); +numeric t; path p; p=z4r{z9-z4}..z6r; +t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); +x2=xpart point t of p; +path p; +p=z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r) +--z2l---(x10l,y1l)--z11l..z11r---{up}z10r..{left}z1r---z2r--subpath +(t,0) of\\(z3r{z9-z3}..z5r) + --z3l{z9-z3}..z0 & cycle; % arrowhead and bent stem +filldraw p; +penlabels(0,1,2,3,4,5,6,9,10); endchar; + +cmchar "Rightward shift"; +beginchar(oct"037",9u#,asc_height#, 0); +adjust_fit(0,0); pickup crisp.nib; +p:=p reflectedabout((w/2+eps,-d),(w/2+eps,h)); +filldraw p; +penlabels(0,1,2,3,4,5,6,9); endchar; + +compute_spread(.45x_height#,.55x_height#); +cmchar "Rightward squiggly arrow"; +beginchar(oct"040",18u#,v_center(spread# + +rule_thickness#)); +adjust_fit(0,0); pickup crisp.nib; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis; +x1-.5rule_thickness=hround 11u; rt x0=hround(w-u); +y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps; +pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); +z6l=z0; z9=.381966[.5[z3,z4],z0]; +numeric t; path p; +p=z4l{z9-z4}..z6r; t=xpart(p +intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p; +path p; +p=z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r) + --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r) + --z3r{z9-z3}..z0 & cycle; % arrowhead and stem +filldraw p; +%% now for squiggle +x12-x11=x13-x12=x14-x13=x15-x14=x16-x15=x1-x16; +x1-x11=hround (w-2u-x0+x1-.5rule_thickness); +y11=y13=y15=y0; y12=y16=.5[y0,y3]; +y14=.5[y4,y0]; +pickup pencircle scaled rule_thickness; +draw z11---z12---z14---z16---z1; +penlabels(0,1,2,3,4,5,6,9,11,12,13,14,15,16); endchar; + +compute_spread(.45x_height#,.55x_height#); +cmchar "Leftward rightward squiggly arrow"; +beginchar(oct"041",25u#,v_center(spread# + +rule_thickness#)); +adjust_fit(0,0); pickup crisp.nib; +arrow_length=4.5u+eps; +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis; +x1+.5rule_thickness=hround(u+arrow_length); +lft x0=hround u; y3-y0=y0-y4=.24asc_height+eps; +x3=x4=x0+3u+eps; pos5(bar,angle(z4-z0)); z5l=z0; +pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0]; +numeric t; path p; p=z4r{z9-z4}..z6r; t=xpart(p +intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p; +path p; p=z0..{z4-z9}z4l--subpath (0,t) +of\\(z4r{z9-z4}..z6r) + --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r) + --z3l{z9-z3}..z0 & cycle; % arrowhead and stem +filldraw p; % left arrow +p:=p reflectedabout ((w/2+eps,-d),(w/2+eps,h)); +filldraw p; % right arrow +z10=z1 reflectedabout ((w/2+eps,-d),(w/2+eps,h)); +y11=y15=y19=.5[y0,y3]; y13=y17=.5[y4,y0]; +y12=y14=y16=y18=y10; +x11-x1=x12-x11=x13-x12=x14-x13=x15-x14=x16-x15=x17-x16=x18-x17= +x19-x18=x10-x19; +pickup pencircle scaled rule_thickness; +draw z1---z11---z13---z15---z17---z19---z10; +penlabels(0,1,2,3,4,5,6,9,10,11,12,13,14,15,16,17,18,19); +endchar; + +cmchar "Leftward curly arrow"; +beginchar(oct"042",18u#,.8asc_height#,0#); +adjust_fit(0,0); pickup crisp.nib; +numeric arrow_length; arrow_length=.66*(w-2u+eps); +pos1(rule_thickness,90); pos2(rule_thickness,90); +pos3(bar,0); pos4(bar,0); y0=y1=y2=math_axis; +x1+.5rule_thickness=hround(u+arrow_length); +lft x0=hround u; y3-y0=y0-y4=.24asc_height+eps; +x3=x4=x0+3u+eps; pos5(bar,angle(z4-z0)); z5l=z0; +pos6(bar,angle(z3-z0)); z6l=z0; z9=.381966[.5[z3,z4],z0]; +numeric t; path p; p=z4r{z9-z4}..z6r; t=xpart(p +intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p; +path p; p=z0..{z4-z9}z4l--subpath (0,t) +of\\(z4r{z9-z4}..z6r) + --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r) + --z3l{z9-z3}..z0 & cycle; % arrowhead and stem +filldraw p; % left arrow +z10=z1; x13=x14=hround(u+arrow_length+eps); y13=y1; y14=-o; +x12=.5[x11,x13]; y12=h; rt x11=hround(w-u); y11=.5[y10,y12]; +pickup pencircle scaled rule_thickness; +path q; +q=z10{right}..tension0.8..{up}z11..tension0.8..{left}z12 +..tension0.8..{down}z13--z14; +draw q; +penlabels(0,1,2,3,4,5,6,9,10,11,12,13,14); endchar; + +cmchar "Rightward curly arrow"; +beginchar(oct"043",18u#,.8asc_height#,0#); +adjust_fit(0,0); pickup crisp.nib; +p:=p reflectedabout ((w/2+eps,-d),(w/2+eps,h)); +filldraw p; +pickup pencircle scaled rule_thickness; +q:=q reflectedabout ((w/2+eps,-d),(w/2+eps,h)); +draw q; endchar; + +numeric circ_diam; % diameter of little circle +circ_diam=2.5u; +cmchar "Equals circle sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"044",14u#,v_center(4spread#+rule_thickness#+2.5u#)); +italcorr h#*slant-.5u#; adjust_fit(0,0); pickup rule.nib; +lft x1=hround u-eps; x3=x1; x2=x4=w-x1; y1=y2; y3=y4; +y1-y3=spread; .5[y1,y3]=math_axis; draw z1--z2; % upper bar +draw z3--z4; % lower bar % +penpos11(rule_thickness,90); penpos13(rule_thickness,-90); +penpos12(rule_thickness,180); penpos14(rule_thickness,0); +x12r=hround(.5w-.5circ_diam-rule_thickness); % +x14r=w-x12r; x11=x13=.5w; y11l=y13l+circ_diam; +y12=y14=.5[y11,y13]; y13r=vround(y1+.8spread); % +penstroke pulled_arc.e(11,12) & pulled_arc.e(12,13) + & pulled_arc.e(13,14) & pulled_arc.e(14,11) & cycle; % +penlabels(1,2,3,4,11,12,13,14); endchar; + + + +cmchar "Follows or equals sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % spread of similarity sign +compute_spread(.54 x_height#,.66 x_height#); +spread#'':=spread#; spread'':=spread; % spread between symbols +compute_spread(5/4 x_height#,3/2 x_height#); % spread of follows sign +beginchar(oct"045",14u#,v_center(spread#'+spread#+spread#'')); +adjust_fit(0,0); pickup rule.nib; autorounded; +lft x1=hround 1.5u-eps; x1=x3; x2=w-x1; +y1-y3=spread; y2=.5[y1,y3]; top y1=h; +draw z1{u,-spread}...{right}z2; %upper `diagonal' +draw z3{u,spread}...{right}z2; % lower diagonal +pickup pencircle xscaled .7rule_thickness yscaled +1.4rule_thickness; +if vair#>.8curve#: pickup rule.nib; autorounded; fi +lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11; +bot y11=bot y13; top y12=top y14; +top y12-bot y11=spread''; +y3-y14=spread'; +draw z11{up}...z12{right}..{right}z13...{up}z14; +penlabels(1,2,3,11,12,13,14); endchar; + +cmchar "Greater than or similar to sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(.54x_height#,.66x_height#); +spread#'':=spread#; spread'':=spread; +compute_spread(5/4 x_height#,3/2 x_height#); +beginchar(oct"046",14u#,v_center(spread#'+spread#+spread#'')); +adjust_fit(0,0); pickup rule.nib; autorounded; +lft x1=hround 1.5u-eps; x1=x3; x2=w-x1; +y1-y3=spread; y2=.5[y1,y3]; top y1=h; +draw z1--z2--z3; +pickup pencircle xscaled .7rule_thickness yscaled +1.4rule_thickness; +if vair#>.8curve#: pickup rule.nib; autorounded; fi +lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11; +bot y11=bot y13; top y12=top y14; +top y12-bot y11=spread''; + y3-y14=spread'; +draw z11{up}...z12{right}..{right}z13...{up}z14; +penlabels(1,2,3,4,11,12,13,14); endchar; + +cmchar "Greater than or approximately equal to sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(.54x_height#,.66x_height#); +spread#'':=spread#; spread'':=spread; % spread between similarities +compute_spread(1.111 x_height#,1.333 x_height#); +beginchar(oct"047",14u#,v_center(spread#+2spread#''+2rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; autorounded; +lft x1=hround 1.5u-eps; x1=x3; x2=w-x1; +y1-y3=spread; y2=.5[y1,y3]; top y1=h; +draw z1--z2--z3; +pickup pencircle xscaled .7rule_thickness yscaled +1.4rule_thickness; +if vair#>.8curve#: pickup rule.nib; autorounded; fi +lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11; +bot y11=bot y13; top y12=top y14; +top y12-bot y11=spread'; +bot y3- top y13 = spread''; +path p; p=z11{up}...z12{right}..{right}z13...{up}z14; +draw p; draw p shifted (0,-spread''); +penlabels(1,2,3,4,11,12,13,14); endchar; + +cmchar "Multimap symbol"; +beginchar(oct"050",20u#,.8asc_height#,0#); +adjust_fit(0,0); pickup rule.nib; autorounded; +numeric circ_diam; circ_diam=5u; +y2=math_axis; y8=y2+.5circ_diam; rt x2=w-u; +x6=x2-circ_diam; +circle_points; draw_circle; +x9=u+.5rule_thickness; y9=y10=y2; x10=x6-.5rule_thickness; +draw z9---z10; +penlabels(1,2,3,4,5,6,7,8,9,10); endchar; + +cmchar "Therefore"; +beginchar(oct"051",12u#,asc_height#,0); +adjust_fit(0,0); +lft x1=hround 1.5u; x2=w-x1; bot y1=-o; y2=y1; +z3-z1=(z2-z1)rotated60; +fill fullcircle scaled dot_size shifted z1; +% left bottom dot +fill fullcircle scaled dot_size shifted z2; +% rigth bottom +fill fullcircle scaled dot_size shifted z3; % top dot +penlabels(1,2,3); endchar; + + +cmchar "Because"; +beginchar(oct"052",12u#,asc_height#,0); +adjust_fit(0,0); +lft x1=hround 1.5u; x2=w-x1; y2=y1; +x3=w/2; y3=-o; +z3-z1=(z2-z1)rotated-60; +fill fullcircle scaled dot_size shifted z1; % top left dot +fill fullcircle scaled dot_size shifted z2; +% top right dot +fill fullcircle scaled dot_size shifted z3; % bottom dot +penlabels(1,2,3); endchar; + +cmchar "Equals-and-dots sign"; +beginarithchar(oct"053"); +compute_spread(.45x_height#,.55x_height#); +pickup rule.nib; +lft x1=hround u-eps; x3=x1; x2=x4=w-x1; +y1=y2; y3=y4; y1-y3=spread; .5[y1,y3]=math_axis; +draw z1--z2; draw z3--z4; % draw bars +pickup light_rule.nib; +x5=x6=x7=x8=hround w/2+eps; z5=z6; z7=z8; +penpos5(.8dot_size,0); penpos6(.8dot_size,90); +penpos7(.8dot_size,0); penpos8(.8dot_size,90); +y5-y1=y3-y7=spread; +dot(5,6); dot(7,8); % draw dots +penlabels(1,2,3,4,5,6,7,8); endchar; + +cmchar "Equals sign with triangle"; +beginchar(oct"054", 14u#,12u#+math_axis# ,6u#-math_axis#); +compute_spread(.45x_height#,.55x_height#); +pickup rule.nib; +lft x1=hround u-eps; x3=x1; x2=x4=w-x1; +y1=y2; y3=y4; y1-y3=spread; .5[y1,y3]=math_axis; +draw z1--z2; draw z3--z4; % draw bars +numeric tri_side; % length of equilateral triangle +tri_side=7u; +x6-x5=tri_side; .5[x5,x6]=w/2; y5=y6; y5-y1=.8spread; +%top y7=body_height;x7=w/2; +z7-z5=(z6-z5) rotated 60; +draw z5--z6--z7--cycle; +penlabels(1,2,3,4,5,6,7); endchar; + + +cmchar "Precedes or equals sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(.54x_height#,.55x_height#); +spread#'':=spread#; spread'':=spread; +compute_spread(5/4 x_height#,3/2 x_height#); +beginchar(oct"055",14u#,v_center(spread#'+spread#+spread#'')); +adjust_fit(0,0); pickup rule.nib; autorounded; +lft x2=hround 1.5u-eps; x1=x3=w-x2; +y1-y3=spread; y2=.5[y1,y3]; top y1=h; +draw z1{-u,-spread}...{left}z2; %upper `diagonal' +draw z3{-u,spread}...{left}z2; % lower diagonal +pickup pencircle xscaled .7rule_thickness yscaled +1.4rule_thickness; +if vair#>.8curve#: pickup rule.nib; autorounded; fi +lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11; +bot y11=bot y13; top y12=top y14; +top y12-bot y11=spread''; + y3-y14=spread'; +draw z11{up}...z12{right}..{right}z13...{up}z14; +penlabels(1,2,3,11,12,13,14); endchar; + +cmchar "Less than or similar to sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(.54x_height#,.55x_height#); +spread#'':=spread#; spread'':=spread; +compute_spread(5/4 x_height#,3/2 x_height#); +beginchar(oct"056",14u#,v_center(spread#'+spread#+spread#'')); +adjust_fit(0,0); pickup rule.nib; autorounded; +lft x2=hround 1.5u-eps; x1=x3=w-x2; +y1-y3=spread; y2=.5[y1,y3]; top y1=h; +draw z1--z2--z3; +pickup pencircle xscaled .7rule_thickness yscaled +1.4rule_thickness; +if vair#>.8curve#: pickup rule.nib; autorounded; fi +lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11; +bot y11=bot y13; top y12=top y14; +top y12-bot y11=spread''; + y3-y14=spread'; +draw z11{up}...z12{right}..{right}z13...{up}z14; +penlabels(1,2,3,4,11,12,13,14); endchar; + +cmchar "Less than or approximately equal to sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(.54x_height#,.66x_height#); +spread#'':=spread#; spread'':=spread; % spread between similarities +compute_spread(1.111 x_height#,1.333 x_height#); +beginchar(oct"057",14u#,v_center(spread#+2spread#''+2rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; autorounded; +lft x2=hround 1.5u-eps; x1=x3=w-x2; +y1-y3=spread; y2=.5[y1,y3]; top y1=h; +draw z1--z2--z3; +pickup pencircle xscaled .7rule_thickness yscaled +1.4rule_thickness; +if vair#>.8curve#: pickup rule.nib; autorounded; fi +lft x11=hround u; x12=4u; x13=w-x12; x14=w-x11; +bot y11=bot y13; top y12=top y14; +top y12-bot y11=spread'; +bot y3- top y13 = spread''; +path p; p=z11{up}...z12{right}..{right}z13...{up}z14; +draw p; draw p shifted (0,-spread''); +penlabels(1,2,3,4,11,12,13,14); endchar; + +cmchar "Equal or less than sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"060",14u#,v_center(spread#'+spread#+rule_thickness#)); +italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; +lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread; +y2=.5[y1,y3]; y8-y1=y9-y2=spread'; top y8=h; +x2=x9; x1=x8; +draw z1--z2--z3; % diagonals +draw z8--z9; % equal sign +penlabels(1,2,3,8,9); endchar; + +cmchar "Equal or greater than sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"061",14u#,v_center(spread#'+spread#+rule_thickness#)); +italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; +rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread; +x2=x9; x1=x8; +y2=.5[y1,y3]; y8-y1=y9-y2=spread'; top y8=h; +draw z1--z2--z3; % diagonals +draw z8--z9; +penlabels(1,2,3,8,9); endchar; + +cmchar "Less than or (slanted) equal sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"066",14u#,v_center(spread#'+spread#+rule_thickness#)); +italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; +lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread; +y2=.5[y1,y3]; y3-y8=y2-y9=spread'; top y1=h; +x2=x9; x1=x8; +draw z1--z2--z3; % diagonals +draw z8--z9; % equal sign +penlabels(1,2,3,8,9); endchar; + +cmchar "Greater than or (slanted) equal sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"076",14u#,v_center(spread#'+spread#+rule_thickness#)); +italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; +rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread; +x2=x9; x1=x8; +y2=.5[y1,y3]; y3-y8=y2-y9=spread'; top y1=h; +draw z1--z2--z3; % diagonals +draw z8--z9; +penlabels(1,2,3,8,9); endchar; +cmchar "Less than or greater than sign"; +compute_spread(.4x_height#,.5x_height#); +spread#':=spread#; spread':=spread; +compute_spread(1.111 x_height#,1.333 x_height#); +beginchar(oct"067",14u#,v_center(2spread#'+spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; autorounded; +lft x1=hround w-1.5u+eps; x1=x3=x5; x2=x4=x6=w-x1; +y1-y3=spread; top y1=h; y2-y4=spread'; y4-y6=spread; +y2=.5[y1,y3]; y5=.5[y4,y6]; +draw z1--z2--z3; draw z4--z5--z6; +penlabels(1,2,3,4,5,6); endchar; + +cmchar "Greater than or less than sign"; +compute_spread(.4x_height#,.5x_height#); +spread#':=spread#; spread':=spread; +compute_spread(1.111 x_height#,1.333x_height#); +beginchar(oct"077",14u#,v_center(2spread#'+spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; autorounded; +lft x1=hround 1.5u-eps; x1=x3=x5; x2=x4=x6=w-x1; +y1-y3=spread; top y1=h; y2-y4=spread'; y4-y6=spread; +y2=.5[y1,y3]; y5=.5[y4,y6]; +draw z1--z2--z3; draw z4--z5--z6; +penlabels(1,2,3,4,5,6); endchar; + +cmchar "Equals or precedes sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"062",14u#,v_center(spread#'+spread#+rule_thickness#)); +italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; +lft x2=hround(1.5u)+eps; x1=x3=w-x2; y1-y3=spread; +y2=.5[y1,y3]; top y8-bot y1=top y9-bot y2=spread'; bot y3=0; +x2=x9;x8=x1-2u; +draw z1{-u,-spread}...{left}z2; +draw z3{-u, spread}...{left}z2; +draw z8{-u,-spread}...{left}z9; +penlabels(1,2,3,8,9); endchar; + +cmchar "Equals or follows sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"063",14u#,v_center(spread#'+spread#+rule_thickness#)); +italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; +rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread; +y2=.5[y1,y3]; top y8-bot y1=top y9-bot y2=spread'; bot y3=0;% top y8=h; +x2=x9;x8=x1+2u; +draw z1{u,-spread}...{right}z2; +draw z3{u, spread}...{right}z2; +draw z8{u,-spread}...{right}z9; +penlabels(1,2,3,8,9); endchar; + +cmchar "Precedes or curvy equals sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"064",14u#,v_center(spread#'+spread#+rule_thickness#)); +italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; +lft x2=hround(1.5u)+eps; x1=x3=w-x2; y1-y3=spread; +y2=.5[y1,y3]; top y3-bot y8=top y2-bot y9=spread'; bot y3=0; +x2=x9;x8=x1-2u; +%for i=1 upto 3: %lower entire character +%y[i]:=y[i]-spread'; endfor +%for i=8 upto 9: +%y[i]:=y[i]-spread'; endfor +draw z1{-u,-spread}...{left}z2; +draw z3{-u, spread}...{left}z2; +draw z8{-u, spread}...{left}z9; +penlabels(1,2,3,8,9); endchar; + +cmchar "Follows or curvy equals sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"074",14u#,v_center(spread#'+spread#+rule_thickness#)); +italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; +rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread; +y2=.5[y1,y3]; top y3-bot y8=top y2-bot y9=spread'; bot y3=0; +x2=x9;x8=x1+2u; +%for i=1 upto 3: %lower entire character +%y[i]:=y[i]-spread'; endfor +%for i=8 upto 9: +%y[i]:=y[i]-spread'; endfor +draw z1{u,-spread}...{right}z2; +draw z3{u, spread}...{right}z2; +draw z8{u, spread}...{right}z9; +penlabels(1,2,3,8,9); endchar; + +cmchar "Less than or (double) equals sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"065",14u#,v_center(2spread#'+spread#+2rule_thickness#)); +italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; +lft x2=hround 1.5u-eps; x1=x3=w-x2; y1-y3=spread; +y2=.5[y1,y3]; top y1=h; +x2=x9=x7; x1=x8=x6; y7=y6; y8=y9; +y7-y9=spread'; top y3-bot y6=spread'; +draw z1--z2--z3; % diagonals +draw z6--z7; draw z8--z9; % equal sign +penlabels(1,2,3,6,7,8,9); endchar; + +cmchar "Greater than or (double) equals sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"075",14u#,v_center(2spread#'+spread#+2rule_thickness#)); +italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; +rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; y1-y3=spread; +x2=x7=x9; x1=x6=x8; y6=y7; y8=y9; +y2=.5[y1,y3]; top y3-bot y6=spread'; top y1=h; +y7-y9=spread'; +draw z1--z2--z3; % diagonals +draw z6--z7; draw z8--z9; +penlabels(1,2,3,6,7,8,9); endchar; + +cmchar "Reverse prime symbol (superscript only)"; +beginchar(oct"070",3u#+max(1.75u#,curve#+2(curve#-stem#)), + .8asc_height#,0); adjust_fit(0,0); pickup fine.nib; numeric +light_stem,heavy_stem; light_stem=hround .5[vair,stem]; +heavy_stem=hround(bold+2dw); x1-.5heavy_stem=hround(.25u); +y1+.5heavy_stem=h; x2+.5light_stem=hround (w-.5u); +y2=1/12asc_height; +numeric theta; theta=angle(z1-z2)-90; +pos1(heavy_stem,theta); pos2(light_stem,theta); +filldraw circ_stroke z1e--z2e; % diagonal +penlabels(1,2); endchar; + +cmchar "short axis line"; +beginchar(oct"071",9u#,27/7u#+math_axis#,27/7u#-math_axis#); pickup rule.nib; +lft x1=hround 1.5u-eps; x2=w-x1; y1=y2=math_axis; +draw z1--z2; +labels(1,2); endchar; + +cmchar "Dotted (right-left) equals sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"072",14u#,v_center(3spread#+2rule_thickness#)); +italcorr h#*slant-.5u#; adjust_fit(0,0); pickup rule.nib; +lft x1=hround u-eps; x3=x1; x2=x4=w-x1; y1=y2; y3=y4; +y1-y3=spread; .5[y1,y3]=math_axis; draw z1--z2; % upper bar +draw z3--z4; % lower bar +pickup tiny.nib; +x6=x5=x2; y6=y5=y1+spread; +pos5(dot_size,0); pos6(dot_size,90); +x7=x8=x3; y7=y8=y4-spread; +pos7(dot_size,0); pos8(dot_size,90); +dot(5,6); dot(7,8); +penlabels(1,2,3,4,5,6,7,8); endchar; + +cmchar "Dotted (left-right) equals sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"073",14u#,v_center(3spread#+2rule_thickness#)); +italcorr h#*slant-.5u#; adjust_fit(0,0); pickup rule.nib; +lft x1=hround u-eps; x3=x1; x2=x4=w-x1; y1=y2; y3=y4; +y1-y3=spread; .5[y1,y3]=math_axis; +draw z1--z2; % upper bar +draw z3--z4; % lower bar +pickup tiny.nib; +x6=x5=x1; y6=y5=y1+spread; +pos5(dot_size,0); pos6(dot_size,90); +x7=x8=x4; y7=y8=y4-spread; +pos7(dot_size,0); pos8(dot_size,90); +dot(5,6); dot(7,8); +penlabels(1,2,3,4,5,6,7,8); endchar; + +cmchar "Square subset sign"; % taken from vol E, p533 +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"100",14u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; lft x2=hround(1.5u); +x1=x4=hround(w-x2)+eps; x3=x2; y1-y4=spread; y2=y1; y3=y4; +top y1=h; draw z1--z2--z3--z4; % bars and stem x8=x1; +penlabels(1,2,3,4); endchar; + +cmchar "Square superset sign"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"101",14u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; +x2=hround(w-1.5u); x1=x4=hround w-x2-eps; x3=x2; +y1-y4=spread; y2=y1; y3=y4; top y1=h; draw z1--z2--z3--z4; +% bars and stem +penlabels(1,2,3,4); endchar; + +cmchar "Rightward pointing isosceles triangle"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"102",14u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; lft x2=hround(1.5u); +x3=x2; x1=hround(w-x2); +top y2=h; y2-y3=spread; y1=.5[y2,y3]; +draw z1--z2--z3--cycle; +penlabels(1,2,3); endchar; + +cmchar "Leftward pointing isosceles triangle"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"103",14u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; rt x2=hround(w-1.5u-eps); +x3=x2; x1=hround(w-x2); +top y2=h; y2-y3=spread; y1=.5[y2,y3]; +draw z1--z2--z3--cycle; +penlabels(1,2,3); endchar; + +cmchar "Rightward isosceles triangle with lower bar"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"104",14u#,v_center(spread#'+spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; lft x2=hround(1.5u); +x3=x2; x1=hround(w-x2); +top y2=h; y2-y3=spread; y1=.5[y2,y3]; +x4=x2; x5=x1; y3-y4=spread'; y5=y4; +draw z1--z2--z3--cycle; draw z4--z5; +penlabels(1,2,3,4,5); endchar; + +cmchar "Leftward isosceles triangle with lower bar"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"105",14u#,v_center(spread#'+spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; rt x2=hround(w-1.5u-eps); +x3=x2; x1=hround(w-x2); +top y2=h; y2-y3=spread; y1=.5[y2,y3]; +x4=x2; x5=x1; y3-y4=spread'; y5=y4; +draw z1--z2--z3--cycle; draw z4--z5; +penlabels(1,2,3,4,5); endchar; + +cmchar "Large, filled, 5-pointed star"; +beginchar(oct"106",asc_height#+desc_depth#,asc_height#,desc_depth#); +adjust_fit(.5u#, .5u#); pickup tiny.nib; +numeric theta; theta=360/5; +x0=good.x .5w; y0=good.y .5[h, -d]; x1=x0; top y1=h; +for n=2 upto 5: z[n]=z0+(z1-z0) rotated((n-1)*theta); endfor +% z0 is the `origin' +% z1 thru z5 are the points; z1 at the top going +% counterclockwise +z6=(z1--z3)intersectionpoint(z2--z5); +for n=7 upto10: z[n]=z0+(z6-z0)rotated((n-1)*theta); endfor +filldraw z1--z6--z2--z7--z3--z8--z4--z9--z5--z10--cycle; +penlabels(0,1,2,3,4,5); endchar; + +cmchar "Vertical overlapping slurs"; +beginchar(oct"107",9u#,body_height#,paren_depth#); +adjust_fit(0,0); pickup fine.nib; +numeric light_stem; light_stem=Vround .5[vair,stem]; +y2=.5[h,-d]; x2r=hround w-1.5u; pos2(light_stem,0); +x1-.5hair=hround w-x2; x3=x1; y1+.5hair=h; y3-.5hair=-d; +numeric theta; theta= angle((z2-z1)xscaled3); +numeric theta'; theta'=angle((z3-z2)xscaled3); +pos1(hair, theta+90); pos3(hair, theta'+90); +path p; +p=z1l{dir theta}...z2l...{dir theta'}z3l + ..z3r{-dir theta'}...z2r...{-dir theta}z1r..cycle; +filldraw p; +p:=p reflectedabout((.5w,-d),(.5w,h)); filldraw p; +penlabels(1,2,3); endchar; + +cmchar "Filled rightward pointing isosceles triangle"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"111",14u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; lft x2=hround(1.5u); +x3=x2; x1=hround(w-x2); +top y2=h; y2-y3=spread; y1=.5[y2,y3]; +filldraw z1--z2--z3--cycle; +penlabels(1,2,3); endchar; + +cmchar "Filled leftward pointing isosceles triangle"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"112",14u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; rt x2=hround(w-1.5u-eps); +x3=x2; x1=hround(w-x2); +top y2=h; y2-y3=spread; y1=.5[y2,y3]; +filldraw z1--z2--z3--cycle; +penlabels(1,2,3); endchar; + + cmchar "short axis right arrow"; +beginchar(oct"113",9u#,27/7u#+math_axis#,27/7u#-math_axis#); +pickup rule.nib; +penpos1(.25rule_thickness,90); penpos2(.25rule_thickness,90); penpos3(bar,0); +penpos4(bar,0); +y0=y1=y2=math_axis; +x1=hround 1.5u-eps; +rt x0=w-x1; +y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps; +penpos5(bar,angle(z4-z0)); z5l=z0; penpos6(bar,angle(z3-z0)); z6l=z0; +z9=.381966[.5[z3,z4],z0]; +numeric t; path p; p=z4l{z9-z4}..z6r; +t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p; +filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r) + --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r) + --z3r{z9-z3}..z0 & cycle; % arrowhead and stem +penlabels(0,1,2,3,4,5,6,9); endchar; + +cmchar "short axis left arrow"; +beginchar(oct"114",9u#,27/7u#+math_axis#,27/7u#-math_axis#); +pickup rule.nib; +penpos1(.25rule_thickness,90); penpos2(.25rule_thickness,90); penpos3(bar,0); +penpos4(bar,0); +y0=y1=y2=math_axis; x0=hround 1.5u-eps; +rt x1=w-x0; +y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps; +penpos5(bar,angle(z4-z0)); z5l=z0; penpos6(bar,angle(z3-z0)); z6l=z0; +z9=.381966[.5[z3,z4],z0]; +numeric t; path p; p=z4r{z9-z4}..z6r; +t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p; +filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r) + --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r) + --z3l{z9-z3}..z0 & cycle; % arrowhead and stem +penlabels(0,1,2,3,4,5,6,9); endchar; + + +cmchar "Filled downward triangle"; +beginchar(oct"110",.8asc_height#+3u#,.8asc_height#,0pt#); +adjust_fit(0,0); pickup rule.nib; +y2=0; lft x1=1.5u; +x3=hround w-x1; +y1=y3=vround h-y2; x2=.5[x1,x3]; +filldraw z1--z2--z3--cycle; +penlabels(1,2,3); endchar; + +cmchar "Downward triangle"; +beginchar(oct"117",.8asc_height#+3u#,.8asc_height#,0pt#); +adjust_fit(0,0); pickup rule.nib; +y2=0; lft x1=1.5u; +x3=hround w-x1; +y1=y3=vround h-y2; x2=.5[x1,x3]; +draw z1--z2--z3--cycle; +penlabels(1,2,3); endchar; + +cmchar "Upward triangle"; +beginchar(oct"115",.8asc_height#+3u#,.8asc_height#,0pt#); +adjust_fit(0,0); pickup rule.nib; +y2=h; lft x1=1.5u; +x3=hround w-x1; +y1=y3=vround h-y2; x2=.5[x1,x3]; +draw z1--z2--z3--cycle; +penlabels(1,2,3); endchar; + +cmchar "Filled upward triangle"; +beginchar(oct"116",.8asc_height#+3u#,.8asc_height#,0pt#); +adjust_fit(0,0); pickup rule.nib; +y2=h; lft x1=1.5u; +x3=hround w-x1; +y1=y3=vround h-y2; x2=.5[x1,x3]; +filldraw z1--z2--z3--cycle; +penlabels(1,2,3); endchar; + +cmchar "Egg sandwich"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"120",14u#,asc_height#,0); +italcorr h#*slant-.5u#; adjust_fit(0,0); pickup rule.nib; +lft x1=hround u-eps; x3=x1; x2=x4=w-x1; +y1=y2; y3=y4; +y1-y3=spread; +.5[y1,y3]=math_axis; +draw z1--z2; % upper bar +draw z3--z4; % lower bar +pickup tiny.nib; +x5=x6=hround w/2; bot y5=bot y1; top y6=top y3; +y7=y8=math_axis;x8-x7=y5-y6; +x6=.5[x7,x8]; +draw z5{right}..z8..z6{left}..z7..cycle; +penlabels(1,2,3,4,5,6,7,8); endchar; + +cmchar "Stacked symbols: <, bar, >"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(.98 x_height#,1.176 x_height#); +beginchar(oct"121",14u#,v_center(2spread#'+2spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; +y1=y2; lft x1=hround 1.5u-eps; rt x2=w-x1; +x4=x6=x8=x1; x3=x5=x7=x2; +y5-y1=y1-y6=spread';top y3=h; y3-y5=spread; +y6-y8=spread; +y7=.5[y6,y8]; y4=.5[y3,y5]; +draw z3--z4--z5; draw z6--z7--z8; draw z1--z2; +penlabels(1,2,3,4,5,6,7,8); endchar; + +cmchar "Stacked symbls: greater than, bar, less than"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(.98 x_height#,1.176 x_height#); +beginchar(oct"122",14u#,v_center(2spread#'+2spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; +y1=y2; lft x2=hround 1.5u-eps; rt x1=w-x2; +x4=x6=x8=x1; x3=x5=x7=x2; +y5-y1=y1-y6=spread';top y3=h; y3-y5=spread; +y6-y8=spread; +y7=.5[y6,y8]; y4=.5[y3,y5]; +draw z3--z4--z5; draw z6--z7--z8; draw z1--z2; +numeric bar_ht; bar_ht=y1; %save height of bar +penlabels(1,2,3,4,5,6,7,8); endchar; + +cmchar "Stacked symbls: less than, =, greater than"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(.98 x_height#,1.176 x_height#); +beginchar(oct"123",14u#,v_center(3spread#'+2spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; autorounded; +lft x1=hround 1.5u-eps; x2=w-x1; +x1'=x1; x2=x2'; x4=x6=x8=x1; +x3=x5=x7=x2; +y1=y2; y1'=y2'; y2-y2'=spread'; bot y2=math_axis+.5spread'; +draw z1--z2; draw z1'--z2'; +y3-y5=y6-y8=spread; +y5-y2=y2'-y6=spread'; +y7=.5[y6,y8]; y4=.5[y3,y5]; +draw z3--z4--z5; draw z6--z7--z8; +penlabels(1,1',2,2',3,4,5,6,7,8); endchar; + +cmchar "Stacked symbols: greater than, =, less than"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; +compute_spread(.98 x_height#,1.176 x_height#); +beginchar(oct"124",14u#,v_center(3spread#'+2spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; +lft x2=hround 1.5u-eps; x1=w-x2; +x1'=x1; x2=x2'; x4=x6=x8=x1; +x3=x5=x7=x2; +y1=y2; y1'=y2'; y2-y2'=spread'; bot y2=math_axis+.5spread'; +draw z1--z2; draw z1'--z2'; +y3-y5=y6-y8=spread; +y5-y2=y2'-y6=spread'; +y7=.5[y6,y8]; y4=.5[y3,y5]; +draw z3--z4--z5; draw z6--z7--z8; +penlabels(1,1',2,2',3,4,5,6,7,8); endchar; + +cmchar "Yen symbol"; +compute_spread(.45x_height#, .55x_height#); +beginchar(oct"125",13u#,cap_height#,0); %% adapted from "Y" +italcorr cap_height#*slant+.45u#; +adjust_fit(cap_serif_fit#,cap_serif_fit#); numeric +left_stem,right_stem,outer_jut,dy,alpha; +left_stem=cap_stem-stem_corr; right_stem=min(cap_hair if +hefty:-2stem_corr fi,left_stem); outer_jut=.75cap_jut; +x1l=w-x4r=l+letter_fit+outer_jut+.05u; +x2l=x5l=hround(.5w-.5left_stem); x3r=x5r; y1=y4=h; +y2=y3=y5=.4h; dy=y1-y2; alpha=((x2l-x1l)++dy)/dy; +penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0); +penpos3(alpha*right_stem,0); penpos4(alpha*right_stem,0); +penpos5(left_stem,0); penpos6(left_stem,0); x5=x6; y6=0; +z0=whatever[z1r,z2r]=whatever[z3l,z4l]; if +y0>y2+cap_notch_cut: y0:=y2+cap_notch_cut; + fill +z0+.5right{up}...{z4-z3}diag_end(3l,4l,1,1,4r,3r)--z5r +--diag_end(5r,6r,1,1,6l,5l)--z5l--diag_end(2l,1l,1,1,1r,2r){z2-z1} + ...{down}z0+.5left--cycle; % diagonals and stem +else: fill z0--diag_end(0,4l,1,1,4r,3r)--z5r + --diag_end(5r,6r,1,1,6l,5l)--z5l + --diag_end(2l,1l,1,1,1r,0)--cycle; fi % diagonals & stem +if serifs: numeric inner_jut; pickup tiny.nib; + prime_points_inside(1,2); prime_points_inside(4,3); +prime_points_inside(6,5); + if rt x1'r+cap_jut+.5u+1<=lft x4'l-cap_jut: +inner_jut=cap_jut; + else: rt x1'r+inner_jut+.5u+1=lft x4'l-inner_jut; fi + dish_serif(1',2,a,1/3,outer_jut,b,1/2,inner_jut); +%upper lft serif + dish_serif(4',3,c,.6,inner_jut,d,1/2,outer_jut)(dark); +% upper right serif + dish_serif(6',5,e,1/3,cap_jut,f,1/3,cap_jut); fi +% lower serif +pickup pencircle scaled .5[fine, rule_thickness]; +x7=x9=x1l; x8=x10=x4r; +y9=y10; +top y7=bar_height; y7=y8; draw z7--z8; +y9-y7=spread; +draw z9--z10; +penlabels(0,1,2,3,4,5,6,1',2',3',4',5',6',7,8,9,10); endchar; + +cmchar "Triple rightward arrow"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"126",18u#,v_center(2spread#+.5asc_height#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; penpos1(rule_thickness,90); +penpos2(rule_thickness,90); penpos3(1.5bar,0); penpos4(1.5bar,0); +y0=y1=y2=math_axis; x1-.5rule_thickness=u; +rt x0=hround (w-u); x0'=x0''=x0; x1'=x1''=x1; +y1'=y1+spread;y1''=y1-spread; y0'=y1'; y0''=y1''; +draw z0'--z1'; draw z0''--z1''; % draw bars +pickup crisp.nib; +y3-y0'=y0''-y4=.24asc_height+eps; x3=x4=x0-6u-eps; +penpos5(bar,angle(z0-z4)); z5r=z0; penpos6(bar,angle(z0-z3)); +z6r=z0; z9=.381966[.5[z3,z4],z0]; erase filldraw +z0..{z3-z9}z3--(w,y3)--(w,y4)--z4{z9-z4}..z0& cycle; +numeric t; path p; +p=z4l{z9-z4}..z6l; t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); +x2=xpart point t of p; +filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6l) + --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5l) + --z3r{z9-z3}..z0 & cycle; % arrowhead and stem +penlabels(0,1,2,3,4,5,6,9,0',0'',1',1''); endchar; + + +cmchar "Triple leftward arrow"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"127",18u#,v_center(2spread#+.5asc_height#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; penpos1(rule_thickness,90); +penpos2(rule_thickness,90); penpos3(1.5bar,0); penpos4(1.5bar,0); +y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft +x0=hround u; x0'=x0''=x0; x1'=x1''=x1; +y1'=y1+spread;y1''=y1-spread; y0'=y1'; y0''=y1''; draw +z0'--z1'; draw z0''--z1''; % draw bars +pickup crisp.nib; +y3-y0'=y0''-y4=.24asc_height+eps; x3=x4=x0+6u+eps; +pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); +z6l=z0; z9=.381966[.5[z3,z4],z0]; erase filldraw +z0..{z3-z9}z3--(0,y3) + --(0,y4)--z4{z9-z4}..z0& cycle; numeric t; path p; +p=z4r{z9-z4}..z6r; t=xpart(p +intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p; +filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r) + --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r) + --z3l{z9-z3}..z0 & cycle; % arrowhead and stem +penlabels(0,1,2,3,4,5,6,9,0',0'',1',1''); endchar; + +cmchar "Check mark"; beginchar(oct"130",15u#,asc_height#, +0); adjust_fit(0,0); pickup cal.nib; +lft x1=hround(1.5u);y1=math_axis; y2=0; x2=hround(w/3); +x3=w-x1; y3=asc_height-o; +x4=w-1.5x2; y4=asc_height; +draw z1--z2{z4-z2}..z3; +penlabels(1,2,3,4); +endchar; + +cmchar "Vee on bar"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"131",11u#,asc_height#, desc_depth#); +adjust_fit(0,0); pickup rule.nib; +lft x1=lft x4=hround u; x3=x5=w-x1; x2=hround(w/2); +bot y4=bot y5=0; y2=y4+spread; top y1=top y3=h+o; +draw z1--z2--z3; draw z4--z5; +penlabels(1,2,3,4,5); +endchar; + +cmchar "Bar on mountain"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"132",11u#,asc_height#, desc_depth#); adjust_fit(0,0); +pickup rule.nib; +lft x1=lft x4=hround u; x3=x5=w-x1; x2=hround(w/2); +top y4=top y5=h+o; y2=y4-spread; bot y1=bot y3=0; +draw z1--z2--z3; draw z4--z5; +numeric t; % t is used in char"133, = on mountain +t=y2-y3; +penlabels(1,2,3,4,5); +endchar; + +cmchar "Equal sign on mountain"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"133",11u#,body_height#, desc_depth#); adjust_fit(0,0); +pickup rule.nib; +lft x1=lft x4=lft x6=hround u; x3=x5=x7=w-x1; x2=hround(w/2); +y4=y5; y6=y7; y6-y4=y4-y2=spread; top y4=asc_height+o-.5spread; +y2-y1=t; % t is defined in char "132 +y1=y3; +draw z1--z2--z3; draw z4--z5; draw z6--z7; +penlabels(1,2,3,4,5,6,7); +endchar; + +cmchar "Angle sign (simple)"; +beginchar(oct"134",13u#,asc_height#, 0); +adjust_fit(0,0); pickup rule.nib; +lft x2=hround u; x1=x3=w-x2; +bot y2=bot y3=0; top y1=h; +draw z1--z2--z3; +penlabels(1,2,3); +endchar; + +cmchar "Angle sign (with small arc)"; +beginchar(oct"135",13u#,asc_height#, 0); +adjust_fit(0,0); pickup rule.nib; +lft x2=hround u; x1=x3=w-x2; +bot y2=bot y3=0; y1=h; +draw z1--z2--z3; +path p; p=quartercircle scaled 15u; +numeric t; t= xpart(p intersectiontimes (z1--z2)); +draw subpath (0,t) of p; +penlabels(1,2,3); +endchar; + +cmchar "Eye-like angle sign (with small arc)"; +beginchar(oct"136",13u#,v_center(.75body_height#)); +adjust_fit(0,0); pickup rule.nib; +lft x2=hround u; x1=x3=w-x2; +y2=math_axis; y2=.5[y1,y3]; y1-y3=.75body_height; +draw z1--z2--z3; +path p; p=quartercircle scaled 17u; +numeric t; t= xpart(p intersectiontimes ((z1--z2)shifted +-z2)); +draw subpath (0,t) of p shifted z2; +draw subpath (0,t) of p shifted z2 +reflectedabout(z2,(w,y2)); +penlabels(1,2,3); +endchar; + +cmchar "Proportional sign made of circles"; +beginchar(oct"137",14u#,asc_height#,0); +adjust_fit(0,0); pickup pencircle scaled rule_thickness; +numeric radius; radius:=w-2u; radius:=radius/3; +radius:=radius-.5rule_thickness; +x2=hround w-u; x1=w-x2+radius; +y1=y2=math_axis; +pair m; m=(rule_thickness,0); +draw fullcircle scaled 2radius shifted (z1+.5m); +draw (halfcircle scaled 2radius rotated 90) shifted +(z2-.5m); +penlabels(1,2); +endchar; + +cmchar "Simple slur below (smile)"; +beginchar(oct"140",14u#,asc_height#,desc_depth#); +adjust_fit(0,0); pickup rule.nib; +lft x1=hround u; y1=vround(math_axis+.25x_height); +x3=w-x1; y3=y1; penpos2(rule_thickness,90); x2=.5w; +y2l=good.y -(.25x_height-math_axis); +numeric theta; theta=angle((z2-z1)yscaled 3); +penpos1(rule_thickness,90+theta); +penpos3(rule_thickness,90-theta); +draw z1{dir theta}...z2...{dir-theta}z3; +penlabels(1,2,3); endchar; + +cmchar "Simple slur above (frown)"; +beginchar(oct"141",14u#,asc_height#,desc_depth#); +adjust_fit(0,0); pickup rule.nib; +lft x1=hround u; y1=vround(math_axis-.25x_height); +x3=w-x1; y3=y1; +penpos2(rule_thickness,90); x2=.5w; y2=good.y(.25x_height+math_axis); +numeric theta; theta=angle((z2-z1)yscaled 3); +penpos1(rule_thickness,90+theta); +penpos3(rule_thickness,90-theta); +draw z1{dir theta}...z2...{dir-theta}z3; penlabels(1,2,3); +endchar; + +cmchar "Very proper subset sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +spread':=spread'-rule_thickness; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"142",14u#,v_center(spread#+rule_thickness#)); +italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; +autorounded; lft x2=hround 1.5u-eps; x1=x3=w-x2; +y1-y3=spread; y2=.5[y1,y3]=math_axis; x4=x5=.5w; y4=y1; +y5=y3; draw z1---z4...z2{down}...z5---z3; % arc and bars +x1'=x3'=x1; y1-y1'=y3'-y3=spread'; +x4'=x5'=x4; y4-y4'=y5'-y5=spread'; +y2'=y2; x2'-x2=spread'; +draw z1'--z4'..z2'{down}..z5'--z3'; +penlabels(1,2,3,4,5,1',2',3',4',5'); endchar; + +cmchar "Very proper superset sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +spread':=spread'-rule_thickness; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"143",14u#,v_center(spread#+rule_thickness#)); +italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; +autorounded; lft x1=hround 1.5u-eps; x2=w-x1; x3=x1; +y1-y3=spread; y2=.5[y1,y3]=math_axis; x4=x5=.5w; y4=y1; +y5=y3; draw z1---z4...z2{down}...z5---z3; % arc and bars +x1'=x3'=x1; y1-y1'=y3'-y3=spread'; +x4'=x5'=x4; y4-y4'=y5'-y5=spread'; +y2'=y2; x2-x2'=spread'; +draw z1'--z4'..z2'..z5'--z3'; +penlabels(1,2,3,4,5,1',2',3',4',5'); endchar; + +cmchar "Parallel set union sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +spread':=spread'-rule_thickness; +beginchar(oct"144",12u#,.8asc_height#,0); +italcorr .8asc_height#*slant-.5u#; +adjust_fit(0,0); pickup rule.nib; autorounded; +lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1; +y1=good.y h+o; bot y3=-o; y2=y4=2/3[y1,y3]; y5=y1; +draw z1---z2...z3...z4---z5; % stems and cup +y1'=y5'=y1; x1'-x1=x5-x5'=spread'; +y2'=y4'=y2+u; x2'-x2=x4-x4'=spread'; +x3'=x3; y3'-y3=spread'; +draw z1'..{down}z2'..z3'{right}..z4'{up}..z5'; +penlabels(1,2,3,4,5,1',2',3',4',5'); endchar; + +cmchar "Parallel set intersection sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +spread':=spread'-rule_thickness; +beginchar(oct"145",12u#,.8asc_height#,0); +italcorr .8asc_height#*slant-.5u#; adjust_fit(0,0); +pickup rule.nib; autorounded; +lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1; +y3=good.y h+o; bot y1=-o; y2=y4=2/3[y1,y3]; y5=y1; +draw z1---z2...z3...z4---z5; % stems and cap +y1'=y5'=y1; x1'-x1=x5-x5'=spread'; +y2'=y4'=y2-u; x2'-x2=x4-x4'=spread'; +x3'=x3; y3-y3'=spread'; +draw z1'..{up}z2'..z3'{right}..z4'{down}..z5'; +penlabels(1,2,3,4,5,1',2',3',4',5'); endchar; + +cmchar "Subset or (double) equal to sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"152",14u#,v_center(2spread#'+spread#+2rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; autorounded; lft x2=hround +1.5u-eps; x1=x3=w-x2; y1-y3=spread; y2=.5[y1,y3]; top y1=h; +x4=x5=.5w; y4=y1; y5=y3; draw z1---z4...z2{down}...z5---z3; +% arc and bars +x8=x1; x9=x2; +y8=y9; y3-y9=spread'; draw z8--z9; % lower bar +x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9'; +penlabels(1,2,3,4,5,8,9,8',9'); endchar; + +cmchar "Superset or (double) equal to sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"153",14u#,v_center(2spread#'+spread#+2rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; autorounded; lft x1=hround +1.5u-eps; x2=w-x1; x3=x1; y1-y3=spread; y2=.5[y1,y3]; top +y1=h; x4=x5=.5w; y4=y1; y5=y3; draw +z1---z4...z2{down}...z5---z3; % arc and bars +x8=x1; +x9=x2; +y8=y9; y3-y9=spread'; draw z8--z9; % lower bar +x9'=x9; x8'=x8; y9'=y8'; y9-y9'=spread'; draw z8'--z9'; +labels(1,2,3,4,5,8,9); endchar; + +cmchar "Christmas tree symbol"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"146",spread#+4u#,.8asc_height#,0); +italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; +autorounded; +lft x1=1.5u; x3=w-x1; x2=.5[x1,x3]; +bot y1=-d-o; y3=y1; top y2=h+o; +draw z1{spread,u}...{up}z2; +draw z3{-spread,u}...{up}z2; +penlabels(1,2,3); endchar; + +cmchar "Inverted Christmas tree symbol"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"147",spread#+4u#,.8asc_height#,0); +italcorr h#*slant-u#; adjust_fit(0,0); pickup rule.nib; +autorounded; +lft x1=1.5u; x3=w-x1; x2=.5[x1,x3]; +top y1=h+o; y3=y1; bot y2=-d-o; +draw z1{spread,-u}...{down}z2; +draw z3{-spread,-u}...{down}z2; +penlabels(1,2,3); endchar; + +cmchar "Stylized lambda symbol"; +beginchar(oct"150",14u#,asc_height#,0); +adjust_fit(0,0); pickup rule.nib; autorounded; +lft x1=u; top y1=h; +rt x2=w-u; bot y2=-o; +draw z1--z2; +z3=.5[z1,z2]; +x4=x1; y4=y2; draw z3--z4; +penlabels(1,2,3,4); endchar; + +cmchar "Reflected stylized lambda symbol"; +beginchar(oct"151",14u#,asc_height#,0); +adjust_fit(0,0); pickup rule.nib; autorounded; +lft x1=u; bot y1=-o; +rt x2=w-u; top y2=h; +draw z1--z2; +z3=.5[z1,z2]; +x4=x2; y4=y1; draw z3--z4; +penlabels(1,2,3,4); endchar; + +cmchar "Sunrise symbol"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct "154",14u#,v_center(3spread#+rule_thickness#)); +italcorr h#*slant-.5u#; adjust_fit(0,0); pickup rule.nib; +lft x1=hround u-eps; x3=x1; x2=x4=w-x1; y1=y2; y3=y4; +y1-y3=spread; .5[y1,y3]=math_axis; +y5=y6=y1; x7=.5[x1,x2]; x5=.3[x1,x2]; +x2-x6=x5-x1; +y7-y1=.5(x6-x5); +draw z1--z5{up}...z7...{down}z6--z2; % upper bar +draw z3--z4; % lower bar +penlabels(1,2,3,4,5,6,7); endchar; + +cmchar "Sunrise-over-water symbol"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct "155",14u#,v_center(3spread#+rule_thickness#)); +italcorr h#*slant-.5u#; adjust_fit(0,0); pickup rule.nib; +lft x1=hround u-eps; x3=x1; x2=x4=w-x1; y1=y2; y3=y4; +y1-y3=spread; .5[y1,y3]=math_axis; +y5=y6=y1; x7=.5[x1,x2]; x5=.3[x1,x2]; +x2-x6=x5-x1; +y7-y1=.5(x6-x5); +x5'=x5; x7'=x7; x6'=x6; y5'=y6'=y3; y3-y7'=y7-y1; +draw z1--z5{up}...z7...{down}z6--z2; % upper bar +draw z3--z5'{down}...z7'...{up}z6'--z4; % lower bar +penlabels(1,2,3,4,5,6,7); endchar; + +cmchar "Much, much less sign"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"156",24u#,v_center(spread#+rule_thickness#)); +adjust_fit(if monospace:-u#,-u# else: 0,0 fi); pickup +rule.nib; lft x2=hround u-epsilon; x1=x3=hround 12.5u-x2; +y1-y3=ceiling 1.1spread; y2=.5[y1,y3]=math_axis; +draw z1--z2--z3; % left diagonals +z4-z1=z5-z2=z6-z3=z7-z4=z8-z5=z9-z6; +x7=w-x2; y4=y1; +draw z4--z5--z6; % middle diagonals +draw z7--z8--z9; % right diagonals +penlabels(1,2,3,4,5,6,7,8,9); endchar; + +cmchar "Much, much greater sign"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(oct"157",24u#,v_center(spread#+rule_thickness#)); +adjust_fit(if monospace:-u#,-u# else: 0,0 fi); pickup +rule.nib; +lft x1=hround u-epsilon; x2=hround 12.5u-u; x1=x3; +y1-y3=ceiling 1.1spread; y2=.5[y1,y3]=math_axis; +draw z1--z2--z3; % left diagonals +z4-z1=z5-z2=z6-z3=z7-z4=z8-z5=z9-z6; +x8=w-x1; y4=y1; +draw z4--z5--z6; % middle diagonals +draw z7--z8--z9; % right diagonals +penlabels(1,2,3,4,5,6,7,8,9); endchar; + +cmchar "Northwest right angle symbol"; +beginchar(oct"160",9u#, asc_height#, 0); +adjust_fit(0,0); pickup rule.nib; +x1=x2; lft x1=u; x3=w-x1; y2=y3; top y2=h; +y2-y1=x3-x2; +draw z1--z2--z3; +penlabels(1,2,3); endchar; + +cmchar "Northeast right angle symbol"; +beginchar(oct"161",9u#,asc_height#,0); +adjust_fit(0,0); pickup rule.nib; +lft x3=u; x2=w-x3; top y3=h; y3=y2; x1=x2; x2-x3=y2-y1; +draw z1--z2--z3; +penlabels(1,2,3); endchar; + +cmchar "Southwest right angle symbol"; +beginchar(oct"170", 9u#, 7u#,0); +adjust_fit(0,0); pickup rule.nib; +lft x2=u; x3=w-x2; x1=x2; bot y2=-o; y3=y2; +y1-y2=x3-x2; +draw z1--z2--z3; +penlabels(1,2,3); endchar; + +cmchar "Southeast right angle symbol"; +beginchar(oct"171", 9u#, 7u#,0); +adjust_fit(0,0); pickup rule.nib; +lft x3=u; x2=w-x3; x1=x2; bot y2=-o; y3=y2; +y1-y2=x2-x3; +draw z1--z2--z3; +penlabels(1,2,3); endchar; + +%% include these parameters to `shrink R and S so they +%% fit inside a circle +% +begingroup +save u, width_adj, cap_serif_fit, letter_fit, + body_height, cap_height, x_height, bar_height, comma_depth, + flare, cap_hair, stem, cap_stem, cap_curve, cap_ess, + cap_jut, beak_jut, beak, slab, cap_bar, cap_band, cap_notch_cut, + o, apex_o; +numeric radius; +old.u:=u; old.cap_curve:=cap_curve; old.cap_height:=cap_height; +old.u#:=u#; old.cap_curve#:=cap_curve#; old.cap_height#:=cap_height#; +forsuffixes $=u, width_adj, cap_serif_fit, letter_fit, + body_height, cap_height, x_height, bar_height, +comma_depth, flare, cap_hair, +stem, cap_stem, cap_curve, cap_ess, + cap_jut, beak_jut, beak, +slab, cap_bar, +cap_band, cap_notch_cut, + o, apex_o: $.#:=lower.$.#; endfor +fudge:=lower.fudge; +font_setup; +% Changed by Stefan Lindner 15.03.1991 -sl +% original: radius=.5(6u++cap_height)+3u; radius=radius#*hppp; +radius#=.5(6u#++cap_height#)+3u#; radius:=radius#*hppp; +% end of change +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +cmchar "Circle-R brand"; +beginchar(oct"162",13u#, .52cap_height#+radius#,radius#-.52cap_height#); +adjust_fit(4u#,4u#); +pickup tiny.nib; pos1(cap_stem',0); pos2(cap_stem',0); +lft x1l=lft x2l=hround max(2u,3u-.5cap_stem'); +top y1=cap_height; bot y2=0; +filldraw stroke z1e--z2e; % stem +penpos3(cap_band,90); penpos4(cap_band,90); +penpos5(cap_curve,0); +penpos6(vair,-90); penpos7(vair,-90); +z3r=top z1; y4=y3; y5=.5[y4l,y6l]; y6=y7; +x7=x2; y7l=vround(.5cap_height+.5vair); x4=x6; +x4=.5w-.5u; x5r=hround(w-2.25u); +x4l:=x6l:=x4-.125cap_curve; +fill stroke z3e..pulled_arc.e(4,5) & pulled_arc.e(5,6)..z7e; % lobe +pos6'(vair,-90); pos0(cap_stem,180); + pos8(cap_curve,180); pos9(vair,-90); pos10(hair,0); + z6'=z6; lft x0r=lft x8r=hround(x5-2/3u-.5cap_curve); + y8=1/3[y2,y7]; y0=3/5[y2,y7]; x9=.5[x8l,x10r]; + bot y9r=-o; rt x10r=hround(w-.05u); y10=1/4[y2,y7]; + filldraw stroke z6'e{right}..z0e---z8e....z9e{right}..z10e{up}; % tail + nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif + dish_serif(2,1,c,1/3,cap_jut,d,1/3,cap_jut); % lower serif + % tail +math_fit(0,.75ic#); +pickup rule.nib; +z100=(hround w/2,.52cap_height); z101=z100+(0,radius); z103=z100-(0,radius); +z102=z100+(radius,0); z104=z100-(radius,0); +draw z101...z102...z103...z104...cycle; +penlabels(0,1,2,3,4,5,6,7,8,9,10,100,101,102,103,104); +endchar; + +cmchar "Circle-S brand"; +beginchar(oct"163",10u#,radius#+.52cap_height#,radius#-.52cap_height#); +adjust_fit(5u#,5u#); +numeric theta; theta=90-angle(50u,cap_height); slope:=-cap_height/50u; % angle at middle +numeric s_slab; s_slab=slab; +numeric ess'; ess'=max(fine.breadth,cap_ess); +pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-90); +pos0(ess',theta); pos7(s_slab,-90); +x2+x7=2x0=w; x7-x2=u; top y2l=cap_height+o; bot y7r=-o; +y0=.52cap_height; lft x3l=hround u; rt x6r=hround(w-u); +x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine; +ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r; +ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r; +filldraw stroke super_arc.e(2,3) & z3e{down} + ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke +pos1(hair,180); pos8(hair,180); + rt x1l=hround(w-1.5u); lft x8r=hround u; + bot y1=vround 2/3cap_height+1; top y8=vround 1/3cap_height-1; + filldraw stroke z1e{x2-x1,10(y2-y1)}....{left}z2e; % upper arc + filldraw stroke z7e{left}....{up}z8e; % lower arc + path upper_arc, lower_arc; + upper_arc=z1{x2-x1,10(y2-y1)}....{left}z2; + lower_arc=z7{left}....{up}z8; + pos10(.3[fine.breadth,cap_hair],0); + pos9(.3[fine.breadth,cap_hair],0); + x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r; + x1l-x1'=x8'-x8r=1.6cap_curve-fine; y1'=y1; y8'=y8; + numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1')); + filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb + t:=xpart(lower_arc intersectiontimes(z9r--z8')); + filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb +% lower arc and terminal +math_fit(0,.5ic#); +pickup rule.nib; +z100=(hround w/2,.52cap_height); z101=z100+(0,radius); z103=z100-(0,radius); +z102=z100+(radius,0); z104=z100-(radius,0); +draw z101...z102...z103...z104...cycle; +penlabels(0,1,1',2,3,4,5,6,7,8,8',9,10,100,101,102,103,104); +endchar; +endgroup; + + +cmchar "Pitchfork symbol"; +beginchar(oct"164",12u#,asc_height#,0); +italcorr .8asc_height#*slant-.5u#; +adjust_fit(0,0); pickup rule.nib; autorounded; +lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1; +y3=good.y .7h+o; bot y1=-o; y2=y4=2/3[y1,y3]; y5=y1; +draw z1---z2...z3...z4---z5; % stems and cap +x6=x7=good.x w/2; y6=y1; y7=h+o; +draw z6--z7; % stem +penlabels(1,2,3,4,5,6,7); endchar; + +cmchar "Dotted plus sign"; +beginchar(oct"165",14u#,8u#+math_axis#,6u#-math_axis#); +adjust_fit(0,0); pickup rule.nib; +x1=x2=good.x .5w; top y1=h-2.5rule_thickness+eps; .5[y1,y2]=math_axis; +lft x3=hround u-eps; x4=w-x3; y3=y4=math_axis; +draw z1--z2; % stem +draw z3--z4; % crossbar +x5=x1; y5=h+o; +pickup pencircle scaled 2.5rule_thickness; drawdot z5; +penlabels(1,2,3,4,5); endchar; + +cmchar "Inverted similarity sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"166",14u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); +pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness; +if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline +lft x1=hround(u); x2=4u; x3=w-x2; x4=w-x1; +bot y2=bot y4=-d; top y1=top y3=h; +draw z1{down}...z2{right}..{right}z3...{down}z4; % stroke +labels(1,2,3,4); endchar; + +cmchar "Inverted similar or equal sign"; +compute_spread(.45x_height#,.55x_height#); +beginchar(oct"167",14u#,v_center(2spread#+rule_thickness#)); +adjust_fit(0,0); +pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness; +if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline +lft x1=hround(u); x2=4u; x3=w-x2; x4=w-x1; +bot y2=bot y4=floor math_axis; top y1=top y3=h; +draw z1{down}...z2{right}..{right}z3...{down}z4; % stroke +pickup rule.nib; lft x5=hround u-eps; x6=w-x5; y5=y6=math_axis-spread; +draw z5--z6; % bar +labels(1,2,3,4,5,6); endchar; + +cmchar "Iron cross"; +beginchar(oct"172",15u#,asc_height#,0); adjust_fit(0,0); +pickup pencircle scaled .5rule_thickness; +numeric cross_tension; cross_tension=.9; +numeric cross_foot; cross_foot=4u; +y0=.5[y1,y2]; x0=hround w/2; +x1=x2=x0; bot y1=-o; lft x1l=3.5u; x1r=w-x1l; y1l=y1r=y1; +top y2=h+o; x2r=x1l; x2l=x1r; y2l=y2r=y2; +y3=y4=y0; x3=x0+eps; x4+x3=2x0; +path p; p=z1l--z1r..tension cross_tension..z3..tension cross_tension + ..z2l--z2r..tension cross_tension..z4..tension cross_tension.. + z1l..cycle; +filldraw p; +p:=p shifted -z0; p:=p rotated 90; p:=p shifted z0; +filldraw p; +penlabels(0,1,2,3,4); endchar; + +cmchar "Bourbaki C symbol"; +beginchar(oct"173",9u#, 1.1body_height#, 0); +adjust_fit(0,0); pickup pencircle scaled 2rule_thickness; +lft x4=lft x5=u; x1=x2=x8=x7=w-x4; x3=x6=hround +w/2; +bot y6=-o; top y3=h+o; y2=y4=y3-1.8u; y5=y7=y6+1.8u; +y1=y2-2u; y8=y7+2u; +draw z1--z2{up}..{left}z3..{down}z4--z5{down}..z6{right}..{up}z7--z8; +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "Bourbaki T symbol"; +beginchar(oct "174", 10u#, x_height#, desc_depth#); +adjust_fit(0,0); pickup pencircle scaled 2rule_thickness; +lft x1=u; x2=w-x1; top y1=top y2=h; x3=x4=hround w/2; y3=y1; +bot y4=-1.1d; +draw z1--z2; draw z3--z4; +labels(1,2,3,4); endchar; + +cmchar "Circle-in-a-circle operator"; +beginarithchar(oct"175"); pickup light_rule.nib; autorounded; +lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h; +circle_points; draw_circle; % circle +pickup rule.nib; +numeric x[],y[]; +lft x6=hround 4.5u; x2=w-x6; y2=math_axis; +top y8=y2+.5(rt x2-lft x6); circle_points; draw_circle; +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "Asterisk-in-a-circle"; +beginarithchar(oct"176"); +pickup light_rule.nib; autorounded; +y2=math_axis; top y8=6u+math_axis; +lft x6=hround w/2 - 6u; x2=w-x6; +circle_points; draw_circle; % circle +numeric x[], y[]; +numeric ast_flare; ast_flare=hround .7[thin_join,stem]; +x0=.5w; y0=math_axis; for d=-150 step 60 until 150: +z[d]=z0+.5dir d xscaled 7.5u yscaled x_height; + numeric theta; theta=angle(z[d]-z0); + fill z0+.5(0,-thin_join)rotated theta + ---z[d]+.5(-ast_flare,-ast_flare)rotated theta + ..z[d]..z[d]+.5(-ast_flare,ast_flare)rotated theta + ---z0+.5(0,thin_join)rotated theta--cycle; endfor % diagonal at angle |d| +labels(0,[-150],[-90],[-30],30,90,150); endchar; + +cmchar "Bar-in-a-circle operator"; +beginarithchar(oct"177"); pickup light_rule.nib; autorounded; +lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h; +circle_points; draw_circle; % circle +y9=y10=y2; x9=x6+3u; x10=w-x9; +draw z9--z10; +labels(1,2,3,4,5,6,7,8,9,10); endchar; + -- cgit v1.2.3