% This file contains punctuation marks common to roman and % italic styles, including math italic and fixed-width fonts. % Codes \041, \047--\054, \056, \057, \072--\077, \133, \135, \140 are used. input newsympars; % for the AMS symbol modifications % changed from cysympars by rw in bb presence 25 jul 85 "Exclamation point"; call charbegin('041,5,0,0,ph,0,ph.slant+.5pwiii-2pu); new w99; if w3<1.1w0: w99=round 1.1w0; else: w99=w3; fi; cpen; x1=x2=x3=good99 2.5u; bot99y1=0; w99 draw 1; % dot top99y3=h+o; bot6y2=.25[top99y1+1,m]; w99 draw 3; % top of stem hpen; draw |w99|3..|w0|2; % stem if ptsize>18: if mode=2: call snip(pa); call snip(px); fi; fi. "Apostrophe"; call charbegin('047,5,0,0,ph,0,2/3[px,ph].slant+.5pw-pu); % There is rotational symmetry with respect to reverse apostrophe. new v; v=fixwidth[u,5/9u]; % unit width adjusted to agree with closing quotes cpen; top3y1=top6y2=h; top6y4=m; y3=2/3[y4,y2]; x1=x2=good3 .5r; x3=good0(x1+v+eps); x4=x1-.5v-eps; w3 draw 1; % bulb hpen; w0 draw 2{1,0}..3{0,-1}..4{3(x4-x3),y4-y3}; % tail if ptsize>18: if mode=2: call snip(pa); call snip(px); fi; fi. "Left parenthesis"; call charbegin('050,6,0,0,ph+pb,ph+pb-2pa,(ph+pb).slant+.5pw-.5pu); % There is left-right symmetry with respect to right parenthesis. hpen; x1=x3=good0(r-u); top0y1=h+b; y2=a=.5[y1,y3]; y0=y1; y4=y3; new v; % unit width corrected for fixed width option if fixwidth=0: v=u; else: v=6/9 u; fi; new w99; w99=round .75[w0,w1]; lft99x2=round(x1-4v); x0=x4=x1+7.5v; draw (0..)|w0|1..|w99#|2..|w0|3(..4); % stroke if ptsize>12: if mode=2: call snip(pa); call snip(px); call snip(0); fi; fi. "Right parenthesis"; call charbegin('051,6,0,0,ph+pb,ph+pb-2pa,pa.slant-.5pu); % There is left-right symmetry with respect to left parenthesis. hpen; x1=x3=good0 u; top0y1=h+b; y2=a=.5[y1,y3]; y0=y1; y4=y3; new v; % unit width corrected for fixed width option if fixwidth=0: v=u; else: v=6/9 u; fi; new w99; w99=round .75[w0,w1]; rt99x2=round(x1+4v); x0=x4=x1-7.5v; draw (0..)|w0|1..|w99#|2..|w0|3(..4); % stroke if ptsize>12: if mode=2: call snip(pa); call snip(px); call snip(0); fi; fi. "Asterisk"; call charbegin('052,9,0,0,lowast[ph+pb,pa+.5px],0, (lowast[ph+pb,pa+.5px]-.25px).slant-(4-1.875sqrt3)pu); new w99; w99=round(.6pixels.pw+blacker); % thinner than hairline new w98; w98=round .7[w99,w1]; cpen; top1y1=lowast[h+b,round(a+.5m)]; top1y1-bot1y2=m; y0=.5[y1,y2]; x0=r-x0; x1=x2=x0; x3=r-x4; x5=r-x6; x3=x5; % left-right symmetry y3=y4; y5=y6; y3-y5=y1-y0; .5[y3,y5]=y0; x4-x0=(.5sqrt3)lft1 3.75u; % asterisk will have 60-degree angles if $m=7.5u$ call `a cdraw(1,0,98,99); % upper arm call `b cdraw(2,0,98,99); % lower arm call `c cdraw(3,0,98,99); % upper left arm call `d cdraw(4,0,98,99); % upper right arm call `e cdraw(5,0,98,99); % lower left arm call `f cdraw(6,0,98,99); % lower right arm if ptsize>18: if mode=2: call snip(pa); call snip(px); fi; fi; if ptsize>18: if mode=2: call snip(pa); crsbreak y0; fi; fi. "Comma"; call charbegin('054,5,0,0,1.1pwiii,pdd,0); cpen; new w99; w99=round 1.1w3; x1=good99 .5r; bot99y1=0; w99 draw 1; % bulb y2=y1; rt99x1=rt0x2; if fixwidth=0: x3=good0 1.5u; else: x3=good0 35/18 u; fi; hpen; bot0y3=-dd; w0 draw 2{0,-1}..3{3(x3-x2),y3-y2}. % point "Period"; call charbegin('056,5,0,0,1.1pwiii,0,0); cpen; new w99; w99=round 1.1w3; x1=good99 .5r; bot99y1=0; w99 draw 1. % dot "Virgule (slash)"; call charbegin('057,9,0,0,ph+pb,ph+pb-2pa,(ph+pb).slant-.5pu); cpen; lft10x1=round u; x2=r-x1; top10y2=h+b; .5[y1,y2]=a; w10 draw 1..2; % diagonal if ptsize>12: if mode=2: call snip(pa); call snip(px); call snip(0); fi; fi. "Colon"; call charbegin('072,5,0,0,px,0,px.slant+.55pwiii-2pu); cpen; new w99; w99=round 1.1w3; x1=good99 .5r; bot99y1=0; w99 draw 1; % upper dot x3=x1; top99y3=m; w99 draw 3; % lower dot if ptsize>18: if mode=2: call snip(pa); fi; fi. "Semicolon"; call charbegin('073,5,0,0,px,pdd,px.slant+.55pwiii-2pu); cpen; new w99; w99=round 1.1w3; x1=good99 .5r; bot99y1=0; w99 draw 1; % bulb x5=x1; top99y5=m; w99 draw 5; % dot y2=y1; rt99x1=rt0x2; if fixwidth=0: x3=good0 1.5u; else: x3=good0 35/18 u; fi; hpen; bot0y3=-dd; w0 draw 2{0,-1}..3{3(x3-x2),y3-y2}; % point if ptsize>18: if mode=2: call snip(pa); fi; fi. "Question mark"; call charbegin('077,7,0,0,ph,0,.8ph.slant+.5pwii-pu); new w99,w98; w98=round .4[w6,w8]; if w3<1.1w0: w99=1.1w0; else: w99=w3; fi; cpen; bot99y1=0; x1=good0 .5(r-u); w99 draw 1; % dot lft3x2=lft0x3=round u; y2=y3=.8[top99y1,h]; top6y4=h+o; w3 draw 2; % bulb hpen; x4=.5(r-u); x5=good2(r-1.5u); y5=y2; new save; save=sqrttwo; new sqrttwo; sqrttwo=sqrt 1.3save; w0 draw 3{0,1}..4{1,0}; call `a arc(4,5,w2); % bowl new sqrttwo; sqrttwo=save; lft0x11=lft2x5; rt0x12=rt2x5; y11=y12=y5; cpen; top6y9=top98y6; bot6y10=bot98y6; x9=x10=x7+u; x7=x8=x13=x1; y13-y7=y10-y9; h-y2=y2-top6y9; top6y7=top98 1/3[y6,y8]; bot6y8=.25[top99y1,m]+1; hpen; w0 ddraw 11{0,-1}..9{-1,0}..7{0,-1}, 12{0,-1}..10{-1,0}..13{0,-1}; % link and stem draw 13..8; % point if ptsize>18: if mode=2: call snip(pa); call snip(px); fi; fi. "Left bracket"; call charbegin('133,5,0,0,ph+pb,ph+pb-2pa, (ph+pb).slant+prt/2-.25pu); cpen; x1=x2=good10 .5r; x3=x4=x1+1.75u+eps; top10y1=h+b; .5[y1,y2]=a; y3=y1; y4=y2; w10 draw 3..1..1..2..2..4; % stem and points if ptsize>12: if mode=2: call snip(0); call snip(pa); call snip(px); fi; fi. "Right bracket"; call charbegin('135,5,0,0,ph+pb,ph+pb-2pa, (ph+pb).slant+prt/2-2pu); cpen; x1=x2=good10 .5r; x3=x4=x1-1.75u-eps; top10y1=h+b; .5[y1,y2]=a; y3=y1; y4=y2; w10 draw 3..1..1..2..2..4; % stem and points if ptsize>12: if mode=2: call snip(0); call snip(pa); call snip(px); fi; fi. "Reverse apostrophe"; call charbegin('140,5,0,0,ph,0,ph.slant+.5pw-1.5pu); % There is rotational symmetry with respect to apostrophe. new v; v=fixwidth[u,5/9u]; % unit width adjusted to agree with opening quotes cpen; bot3y1=bot6y2; top6y4=h; y3=2/3[y4,y2]; y2-y4=m-h; x1=x2=good3 .5r; x3=good0(x1-v-eps); x4=x1+.5v+eps; w3 draw 1; % bulb hpen; w0 draw 2{-1,0}..3{0,1}..4{3(x4-x3),y4-y3}; % tail if ptsize>18: if mode=2: call snip(.5ph); fi; fi. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % The following were taken from the file cyritl.mf from TeX80. % This file defines characters common to roman and italic text fonts % that do not appear in non-ligature fonts. % Character codes \040, \042, \055, \100, \134, \136, \137 are used. "Closing quotes"; call charbegin('042,9,0,0,ph,0,2/3[px,ph].slant+.5pw-2.5pu); % There is rotational symmetry with respect to opening quotes. cpen; top3y1=top6y2=h; top6y4=m; y3=2/3[y4,y2]; x1=x2=good3 1.5u; x3=good0(x1+u+eps); x4=x1-.5u-eps; x11-x1=x12-x2=x13-x3=x14-x4=round 3.5u; y11=y1; y12=y2; y13=y3; y14=y4; w3 draw 1; % left bulb draw 11; % right bulb hpen; w0 draw 2{1,0}..3{0,-1}..4{3(x4-x3),y4-y3}; % left tail draw 12{1,0}..13{0,-1}..14{3(x14-x13),y14-y13}; % right tail if ptsize>18: if mode=2: call snip(.5ph); fi; fi. lig `': `' = '042; "Hyphen"; call charbegin('055,fixwidth[6,9],0,0,px,0,.5px.slant-.5pu); vpen; y1=y2=.5m; if fixwidth=0: lft7x1=0; rt7x2=r-u; else: lft7x1=1.5u; x2=r-x1; fi; w7 draw 1..2. % bar "Opening quotes"; call charbegin('134,9,0,0,ph,0,ph.slant+.5pw-.5pu); % There is rotational symmetry with respect to closing quotes. cpen; bot3y1=bot6y2; top6y4=h; y3=2/3[y4,y2]; y2-y4=m-h; x1=x2=good3 4u; x3=good0(x1-u-eps); x4=x1+.5u+eps; x11-x1=x12-x2=x13-x3=x14-x4=round 3.5u; y11=y1; y12=y2; y13=y3; y14=y4; w3 draw 1; % left bulb draw 11; % right bulb hpen; w0 draw 2{-1,0}..3{0,1}..4{3(x4-x3),y4-y3}; % left tail draw 12{-1,0}..13{0,1}..14{3(x14-x13),y14-y13}; % right tail if ptsize>18: if mode=2: call snip(.5ph); fi; fi. lig ``: `` = '134; "En dash"; call charbegin('173,9,0,0,px,0,.5px.slant+.5pu); hpen; lft0x1=0; rt0x2=r; y1=y2=.5m; w0 draw 1..2. % bar lig `-: `- = '173; "Em dash"; call charbegin('174,18,0,0,px,0,.5px.slant+.5pu); hpen; lft0x1=0; rt0x2=r; y1=y2=.5m; w0 draw 1..2. % bar lig '173: `- = '174;