diff options
author | Norbert Preining <norbert@preining.info> | 2020-01-21 03:01:52 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-01-21 03:01:52 +0000 |
commit | b3f7f9ce3596843d5cf8e97c1855d9a15c0e4f47 (patch) | |
tree | 4287816d3535abe1f4ac55d6033d559eb9413dfe /fonts/wasy | |
parent | fccbbdebf9887a283cd611aba2e1fc0a605aec8e (diff) |
CTAN sync 202001210301
Diffstat (limited to 'fonts/wasy')
-rw-r--r-- | fonts/wasy/README | 20 | ||||
-rw-r--r-- | fonts/wasy/WASYFONT.2 | 129 | ||||
-rw-r--r-- | fonts/wasy/WASYFONT.tex | 217 | ||||
-rw-r--r-- | fonts/wasy/lasychr.mf | 388 | ||||
-rw-r--r-- | fonts/wasy/rsym.mf | 1753 | ||||
-rw-r--r-- | fonts/wasy/tfm/wasy10.tfm | bin | 0 -> 908 bytes | |||
-rw-r--r-- | fonts/wasy/tfm/wasy5.tfm | bin | 0 -> 908 bytes | |||
-rw-r--r-- | fonts/wasy/tfm/wasy6.tfm | bin | 0 -> 912 bytes | |||
-rw-r--r-- | fonts/wasy/tfm/wasy7.tfm | bin | 0 -> 912 bytes | |||
-rw-r--r-- | fonts/wasy/tfm/wasy8.tfm | bin | 0 -> 904 bytes | |||
-rw-r--r-- | fonts/wasy/tfm/wasy9.tfm | bin | 0 -> 908 bytes | |||
-rw-r--r-- | fonts/wasy/tfm/wasyb10.tfm | bin | 0 -> 912 bytes | |||
-rw-r--r-- | fonts/wasy/tfm/wasysl10.tfm | bin | 0 -> 1032 bytes | |||
-rw-r--r-- | fonts/wasy/wasy10.mf | 100 | ||||
-rw-r--r-- | fonts/wasy/wasy5.mf | 103 | ||||
-rw-r--r-- | fonts/wasy/wasy6.mf | 100 | ||||
-rw-r--r-- | fonts/wasy/wasy7.mf | 100 | ||||
-rw-r--r-- | fonts/wasy/wasy8.mf | 100 | ||||
-rw-r--r-- | fonts/wasy/wasy9.mf | 100 | ||||
-rw-r--r-- | fonts/wasy/wasyb10.mf | 100 | ||||
-rw-r--r-- | fonts/wasy/wasychr.mf | 316 | ||||
-rw-r--r-- | fonts/wasy/wasydoc.pdf | bin | 0 -> 300644 bytes | |||
-rw-r--r-- | fonts/wasy/wasydoc.tex | 980 | ||||
-rw-r--r-- | fonts/wasy/wasysl10.mf | 100 |
24 files changed, 4606 insertions, 0 deletions
diff --git a/fonts/wasy/README b/fonts/wasy/README new file mode 100644 index 0000000000..21ebef4e58 --- /dev/null +++ b/fonts/wasy/README @@ -0,0 +1,20 @@ +This is version 2.4, a 2020 update of the wasy fonts of 1990. + +The font wasy contains all lasy characters (by L.Lamport, copyright +notice in lasychr.mf), and a lot more symbols. Provided are the +Metafont files for 5-10pt, and bold and slanted 10pt fonts, together +with a tex and pdf documentation, and a file for using the fonts +in a PLAIN-TeX document. + +Type-1 fonts by Michael Sharpe and Taco Hoekwater are available +as separate package wasy-type1. + +A LaTeX implementation is in the separate package wasysym by Axel +Kielhorn. + +The files of this package (wasy2.4) are hereby released into the public +domain. Permission is granted to use and/or distribute these files. +Extensions and modifications should be restricted to those that are +downward compatible with this release. + +Jan 2020, Roland Waldi diff --git a/fonts/wasy/WASYFONT.2 b/fonts/wasy/WASYFONT.2 new file mode 100644 index 0000000000..ce8c3efb36 --- /dev/null +++ b/fonts/wasy/WASYFONT.2 @@ -0,0 +1,129 @@ +% +% this is a substitute if the wasy fonts are missing +% +\font\tenwasy = lasy10 +\font\wasyb = lasyb10 +\font\ninewasy = lasy9 +\font\eightwasy = lasy8 +\font\sevenwasy = lasy7 +\font\fivewasy = lasy5 +\newfam\wasyfam +\newcount\wasyfamcount +\wasyfamcount=\wasyfam \multiply\wasyfamcount by 256 +\def\wasy{\fam\wasyfam\tenwasy} +\textfont\wasyfam=\tenwasy +\scriptfont\wasyfam=\sevenwasy +\scriptscriptfont\wasyfam=\fivewasy +\let\wsl\sl \let\wbf\bf +%%%%%% special macro +\def\overstrike#1#2{{\setbox0\hbox{$#2$}\hbox to \wd0{\hss + $#1$\hss}\kern-\wd0\box0}} +%%%%%%%%%%%%%%%%%%%%%% <) angle +\def\varangle{\hbox{$<$\lower 0.5pt\hbox{\kern -0.5em\tt)}}} +%%%%%%%%%%%%%%%%%%%%%% < approx, > approx +\def\apprle{\mathrel{\mathpalette\buildover{<\sim {-1.15pt}{-0.25pt}}}} +\def\apprge{\mathrel{\mathpalette\buildover{>\sim {-1.15pt}{-0.25pt}}}} +\newdimen\buildraise\newdimen\buildspace +\def\buildover#1#2{\getargs#2\raise\buildraise\vbox{% + \resetall{\buildspace}\halign{$#1\hfil##\hfil$\crcr + \buildtop\crcr\buildbot\crcr}}} +\def\getargs#1#2#3#4{\def\buildtop{#1}\def\buildbot{#2}% + \global\buildraise=#3\global\buildspace=#4\relax} +\def\resetall#1{\mathsurround=0pt\everycr={}\tabskip=0pt + \baselineskip=0pt\lineskiplimit=0pt\lineskip=#1} +%%%%%%%%%%%%%%%%%%%%%% >O< +\def\currency{\hbox{\tt\kern -1.0pt + \lower 4.4pt\hbox to 0pt{\char"13\hss}% + \lower 1.3pt\hbox to 0pt{\kern 0.82pt\char"12\hss}% + \kern 2.9pt{\tensy\char"0E}\kern -3.3pt% + \lower 1.3pt\hbox to 0pt{\char"13\hss}% + \lower 4.4pt\hbox to 0pt{% + \kern 0.82pt\char"12\hss}\kern 4.2pt}} +\def\euro{\leavevmode\hbox{\kern 0.03em + \vrule height 0.7ex depth -0.6ex width 0.5em + \kern -0.47em + \vrule height 1.0ex depth -0.9ex width 0.5em + \kern -0.5em C}} +\def\z{{\teni 3}} +%%%%%%%%%%%%%%%%%%%%%% +\def\clock{\hbox{\kern 1pt + \vrule width 0.4pt height 3.6pt depth -1.2pt + \vrule width 0.4pt height 1.2pt depth -0.8pt\kern -0.4pt + \vrule width 0.4pt height 4.0pt depth -3.6pt + \vrule width 0.4pt height 0.8pt depth -0.4pt\kern -0.4pt + \vrule width 0.4pt height 4.4pt depth -4.0pt + \vrule width 2.4pt height 0.4pt depth 0.0pt\kern -2.4pt + \vrule width 2.4pt height 4.8pt depth -4.4pt\kern -1.4pt + \vrule width 0.4pt height 3.6pt depth -2.2pt + \vrule width 1.0pt height 2.6pt depth -2.2pt + \vrule width 0.4pt height 0.8pt depth -0.4pt\kern -0.4pt + \vrule width 0.4pt height 4.4pt depth -4.0pt + \vrule width 0.4pt height 1.2pt depth -0.8pt\kern -0.4pt + \vrule width 0.4pt height 4.0pt depth -3.6pt + \vrule width 0.4pt height 3.6pt depth -1.2pt + \kern 1pt}} +%%%%%%%%%%%%%%%%%%%%%% bell +\def\bell{\hbox{\kern 1pt + \vrule width 0.8pt height 0.8pt depth 0pt + \vrule width 1.0pt height 4.5pt depth 0pt + \vrule width 0.8pt height 5.3pt depth 0.8pt + \vrule width 1.0pt height 4.5pt depth 0pt + \vrule width 0.8pt height 0.8pt depth 0pt + \kern 1pt}} +%%%%%%%%%%%%%%%%%%%%%% note +\def\eighthnote{\hbox{\kern 0.5pt\lower 0.2pt + \hbox{\sevensy\char"0F\kern -0.9pt}% + \vrule width 0.2pt height 6.8pt depth -1.4pt + \raise 0.8pt\hbox{\tt\kern -1.3pt\char"12}\kern -1pt}} +%%%%%%%%%%%%%%%%%%%%%% +\def\phone{\hbox{Tel.}} +\def\Box{\hbox{\wasy\char"32}}\let\Square\Box +\def\Diamond{\hbox{\wasy\char"33}} +\def\RIGHTarrow{{\wasy\char"03}} +\def\LEFTarrow{{\wasy\char"01}} +%%%%%%%%%%%%%%%%%%%%%% +\def\notbackslash{\overstrike{\backslash}{-}} +\def\notslash{\overstrike{/}{-}} +\def\APLnot#1{\overstrike{\sim}{#1}} +\def\APLcirc#1{\overstrike{\circ}{#1}} +\def\APLvert#1{\overstrike{\vert}{#1}} +\def\APLminus{\raise0.7ex\hbox{$-$}} +\def\diameter{\overstrike{\circ}{/}} +%%%%%%%%%%%%%%%%%%%%%% +\def\AC{\hbox{\kern0.5pt\wasy\char"3A\kern0.5pt}} +\def\HF{\lower0.9pt\hbox to 0pt{\kern0.5pt\wasy\char"3A\hss}% + \raise0.9pt\hbox{\kern0.5pt\wasy\char"3A\kern0.5pt}} +\def\VHF{\lower1.7pt\hbox to 0pt{\kern0.5pt\wasy\char"3A\hss}% + \hbox to 0pt{\kern0.5pt\wasy\char"3A\kern0.5pt\hss}% + \raise1.7pt\hbox{\kern0.5pt\wasy\char"3A\kern0.5pt}} +%%%%%%%%%%%%%%%%%%%%%% +\def\iint{\int\mkern -2mu\int} +\def\iiint{\int\mkern -2mu\int\mkern -2mu\int} +%%%%%% math characters +\def\Bowtie{\hbox{\wasy\char"31}} +%%%%%% special characters +\def\permil{\ifmmode{^0\!{/}\!{}_{00}}\else$^0\!{/}\!{}_{00}$\fi} +\def\agemO{{\wasy\char"30}} +\def\Dh{\leavevmode{\setbox0\hbox{D}% + \hbox to\wd0{\kern 0.04em\char32\hss D}}} +\def\cent{\overstrike/{\rm c}} +\def\thorn{\overstrike{\rm b}{\rm p}} +\def\astrosun{\hbox{\tensy\char"0C}} +\let\Paragraph\S +%%%%%% math operators as mathchars +\def\wasymathchardef#1#2{% + \count"FF=\wasyfamcount + \advance\count"FF by"#1 + \mathchardef#2\count"FF} +\wasymathchardef{3001}{\lhd} +\wasymathchardef{3001}{\LHD} +\wasymathchardef{3003}{\rhd} +\wasymathchardef{3003}{\RHD} +\wasymathchardef{3002}{\unlhd} +\wasymathchardef{3004}{\unrhd} +\wasymathchardef{303C}{\sqsubset} +\wasymathchardef{303D}{\sqsupset} +\wasymathchardef{303B}{\leadsto} +%%%%%%%%%%%%%%%%%%%%%% +\let\newpropto\relax +\let\newint\relax diff --git a/fonts/wasy/WASYFONT.tex b/fonts/wasy/WASYFONT.tex new file mode 100644 index 0000000000..e5e171dbf4 --- /dev/null +++ b/fonts/wasy/WASYFONT.tex @@ -0,0 +1,217 @@ +% this is WASYFONT.tex version 2.4--2020/01 +% to be used with PlainTeX +\catcode`@=11 % make @ letter +\ifx\newwasy\undefined +\font\tenwasy = wasy10 +\font\wasyb = wasyb10 +\font\ninewasy = wasy9 +\font\sevenwasy = wasy7 +\font\bigwasy = wasy10 scaled \magstep1 +\font\bigwasyb = wasyb10 scaled \magstep1 +\font\Bigwasy = wasy10 scaled \magstep2 +\font\Bigwasyb = wasyb10 scaled \magstep2 +\font\fivewasy = wasy5 +\font\eightwasy = wasy8 +\font\wasysl = wasysl10 +\else +\font\tenwasy = wasym10 +\font\wasyb = wasymb10 +\font\ninewasy = wasym9 +\font\sevenwasy = wasym7 +\font\bigwasy = wasym10 scaled \magstep1 +\font\bigwasyb = wasymb10 scaled \magstep1 +\font\Bigwasy = wasym10 scaled \magstep2 +\font\Bigwasyb = wasymb10 scaled \magstep2 +\font\fivewasy = wasym5 +\font\eightwasy = wasym8 +\font\wasysl = wasyml10 +\fi +\newfam\wasyfam +\newcount\wasyfamcount +\wasyfamcount=\wasyfam \multiply\wasyfamcount by 256 +\def\wasy{\fam\wasyfam\tenwasy} +\textfont\wasyfam=\tenwasy +\scriptfont\wasyfam=\sevenwasy +\scriptscriptfont\wasyfam=\fivewasy +%%%%%% move to slanted or boldface including wasy symbols +\def\wbf{\bf\let\tenwasy\wasyb} +\def\wsl{\sl\let\tenwasy\wasysl} +\def\euro{{\wasy\char"4E}} +\def\Paragraph{{\wasy\char"4D}} +\def\s{{\wasy\char"54}} +\def\z{{\wasy\char"4F}} +\def\applecmd{{\wasy\char"53}} +%%%%%% special macro +\def\overstrike#1#2{{\setbox0\hbox{$#2$}\hbox to \wd0{\hss + $#1$\hss}\kern-\wd0\box0}} +%%%%%% special symbols +\def\male{\hbox{\wasy\char"1A}} +\def\female{\hbox{\wasy\char"19}} +\def\currency{{\wasy\char"1B}} +\def\phone{{\wasy\char"07}} +\def\recorder{{\wasy\char"06}} +\def\clock{{\wasy\char"1C}} +\def\lightning{{\wasy\char"12}} +\def\pointer{{\wasy\char"09}} +\def\RIGHTarrow{{\wasy\char"11}} +\def\LEFTarrow{{\wasy\char"10}} +\def\UParrow{{\wasy\char"4B}} +\def\DOWNarrow{{\wasy\char"4C}} +\def\AC{\hbox{\kern0.5pt\wasy\char"3A\kern0.5pt}} +\def\HF{\lower0.9pt\hbox to 0pt{\kern0.5pt\wasy\char"3A\hss}% + \raise0.9pt\hbox{\kern0.5pt\wasy\char"3A\kern0.5pt}} +\def\VHF{\hbox{\wasy\char"40}} +\def\Box{\hbox{\wasy\char"32}}\let\Square\Box +\def\XBox{\hbox{\wasy\char"34}} +\def\Diamond{\hbox{\wasy\char"33}} +\def\hexagon{\hbox{\wasy\char"37}} +\def\pentagon{\hbox{\wasy\char"44}} +\def\octagon{\hbox{\wasy\char"38}} +\def\varhexagon{\hbox{\wasy\char"39}} +\def\hexstar{\hbox{\wasy\char"41}} +\def\varhexstar{\hbox{\wasy\char"42}} +\def\davidsstar{\hbox{\wasy\char"43}} +\def\diameter{\hbox{\wasy\char"1F}} +\def\invdiameter{\hbox{\wasy\char"15}} +\def\varangle{\hbox{\wasy\char"1E}} +\def\lozenge{\hbox{\wasy\char"35}} +\def\kreuz{\hbox{\wasy\char"36}} +\def\smiley{\hbox{\wasy\char"2C}} +\def\frownie{\hbox{\wasy\char"2F}} +\def\blacksmiley{\hbox{\wasy\char"2D}} +\def\sun{\hbox{\wasy\char"2E}} +\def\checked{\hbox{\wasy\char"08}} +\def\bell{\hbox{\wasy\char"0A}} +\def\eighthnote{\hbox{\wasy\char"0B}} +\def\quarternote{\hbox{\wasy\char"0C}} +\def\halfnote{\hbox{\wasy\char"0D}} +\def\fullnote{\hbox{\wasy\char"0E}} +\def\twonotes{\hbox{\wasy\char"0F}} +\def\brokenvert{\hbox{\wasy\char"7C}} +\def\therefore{\hbox{\wasy\char"05}} +\def\ataribox{\hbox{\wasy\char"6D}} +\def\Circle{\hbox{\wasy\char"23}} +\def\CIRCLE{\hbox{\wasy\char"20}} +\def\Leftcircle{\hbox{\wasy\char"49}} +\def\LEFTCIRCLE{\hbox{\wasy\char"47}} +\def\Rightcircle{\hbox{\wasy\char"4A}} +\def\RIGHTCIRCLE{\hbox{\wasy\char"48}} +\def\LEFTcircle{\hbox to 0pt{\wasy\char"47\hss}\hbox{\wasy\char"23}} +\def\RIGHTcircle{\hbox to 0pt{\wasy\char"48\hss}\hbox{\wasy\char"23}} +%%%%%% the zodiac +\def\aries{\hbox{\wasy\char"17}} +\def\taurus{\hbox{\wasy\char"5D}} +\def\gemini{\hbox{\wasy\char"5E}} +\def\cancer{\hbox{\wasy\char"5F}} +\def\leo{\hbox{\wasy\char"13}} +\def\virgo{\hbox{\wasy\char"60}} +\def\libra{\hbox{\wasy\char"61}} +\def\scorpio{\hbox{\wasy\char"62}} +\def\sagittarius{\hbox{\wasy\char"63}} +\def\capricornus{\hbox{\wasy\char"64}} +\def\aquarius{\hbox{\wasy\char"65}} +\def\pisces{\hbox{\wasy\char"66}} +%%%%%% APL characters +\def\APLstar{{\hbox{\wasy\char"45}}} +\def\APLlog{{\hbox{\wasy\char"16}}} +\def\APLbox{{\hbox{\wasy\char"7E}}} +\def\APLup{{\hbox{\wasy\char"00}}} +\def\APLdown{{\hbox{\wasy\char"46}}} +\def\APLinput{{\hbox{\wasy\char"7D}}} +\def\APLcomment{{\hbox{\wasy\char"7F}}} +\def\APLinv{{\hbox to 0pt{\tensy\char"04\hss}\APLbox}} +\def\APLuparrowbox{{\hbox{\wasy\char"6E}}} +\def\APLdownarrowbox{{\hbox{\wasy\char"6F}}} +\def\APLleftarrowbox{{\hbox{\wasy\char"70}}} +\def\APLrightarrowbox{{\hbox{\wasy\char"71}}} +\def\notbackslash{\overstrike{\backslash}{-}} +\def\notslash{\overstrike{/}{-}} +\def\APLnot#1{\overstrike{\sim}{#1}} +\def\APLcirc#1{\overstrike{\circ}{#1}} +\def\APLvert#1{\overstrike{\vert}{#1}} +\def\APLminus{\raise0.7ex\hbox{$-$}} +%%%%%% diagrams +\def\photon{\hbox{\wasy\char"3A\char"3A\char"3A\char"3A}} +\def\gluon{\hbox{\wasy\char"51\char"50\char"50\char"50% + \char"50\char"50\char"50\char"52}} +%%%%%% math characters +\def\Bowtie{\hbox{\wasy\char"31}} +\def\leftturn{\hbox{\wasy\char"22}} +\def\rightturn{\hbox{\wasy\char"21}} +%%%%%% special characters +\def\cent{\hbox{\wasy\char"67}} +\def\permil{\hbox{\wasy\char"68}} +\def\agemO{{\wasy\char"30}} +\def\thorn{{\wasy\char"69}} +\def\Thorn{{\wasy\char"6A}} +\def\dh{{\wasy\char"6B}} +\def\Dh{\leavevmode{\setbox0\hbox{D}% + \hbox to\wd0{\kern 0.04em\char32\hss D}}} +\def\openo{{\wasy\char"6C}} +\def\inve{{\wasy\char"55}} +%%%%%% math operators as mathchars +\def\wasymathchardef#1#2{% + \count255=\wasyfamcount + \advance\count255 by"#1 + \mathchardef#2\count255} +\wasymathchardef{3001}{\lhd} +\wasymathchardef{3003}{\rhd} +\wasymathchardef{3010}{\LHD} +\wasymathchardef{3011}{\RHD} +\wasymathchardef{3002}{\unlhd} +\wasymathchardef{3004}{\unrhd} +\wasymathchardef{303C}{\sqsubset} +\wasymathchardef{303D}{\sqsupset} +\wasymathchardef{303E}{\apprle} +\wasymathchardef{303F}{\apprge} +\wasymathchardef{301D}{\varpropto} +\wasymathchardef{0018}{\invneg} +\wasymathchardef{303B}{\leadsto} +\wasymathchardef{2023}{\ocircle} +\wasymathchardef{3016}{\logof} +\wasymathchardef{1072}{\varint} +\wasymathchardef{1073}{\iint} +\wasymathchardef{1074}{\iiint} +\wasymathchardef{1075}{\varoint} +\wasymathchardef{1076}{\oiint} +% +\wasymathchardef{0027}{\mer@@} +\wasymathchardef{0019}{\ven@@} +\wasymathchardef{0026}{\ear@@} +\wasymathchardef{001A}{\mar@@} +\wasymathchardef{0058}{\jup@@} +\wasymathchardef{0059}{\sat@@} +\wasymathchardef{005A}{\ura@@} +\wasymathchardef{005B}{\nep@@} +\wasymathchardef{0024}{\moon@@} +\wasymathchardef{0017}{\vern@@} +\wasymathchardef{0013}{\ascn@de} +\wasymathchardef{0014}{\descn@de} +\wasymathchardef{0056}{\conju@@} +\wasymathchardef{0057}{\oppos@@} +%%%%%% astronomy +\def\vernal{\ifmmode\vern@@\else{\wasy\char"17}\fi} +\def\ascnode{\ifmmode\ascn@de\else{\wasy\char"13}\fi} +\def\descnode{\ifmmode\descn@de\else{\wasy\char"14}\fi} +\def\fullmoon{\hbox{\wasy\char"23}} +\def\newmoon{\hbox{\wasy\char"20}} +\def\leftmoon{\ifmmode\moon@@\else{\wasy\char"24}\fi} +\def\rightmoon{\hbox{\wasy\char"25}} +\def\astrosun{\ifmmode\odot\else\hbox{\tensy\char"0C}\fi} +\def\mercury{\ifmmode\mer@@\else{\wasy\char"27}\fi} +\def\venus{\ifmmode\ven@@\else\raise0.2ex\hbox{\wasy\char"19}\fi} +\def\earth{\ifmmode\ear@@\else\lower0.3ex\hbox{\wasy\char"26}\fi} +\def\mars{\ifmmode\mar@@\else\lower0.2ex\hbox{\wasy\char"1A}\fi} +\def\jupiter{\ifmmode\jup@@\else{\wasy\char"58}\fi} +\def\saturn{\ifmmode\sat@@\else{\wasy\char"59}\fi} +\def\uranus{\ifmmode\ura@@\else{\wasy\char"5A}\fi} +\def\neptune{\ifmmode\nep@@\else{\wasy\char"5B}\fi} +\def\pluto{\hbox{\wasy\char"5C}} +\def\conjunction{\ifmmode\conju@@\mkern-4mu{}\else{\wasy\char"56}\fi} +\def\opposition{\ifmmode\oppos@@\else{\wasy\char"57}\fi} +% +%%%%%% new definitions +% +\def\newpropto{\let\propto\varpropto} +\def\newint{\let\int\varint \let\oint\varoint} % default limits +\catcode`@=12 % at signs are no longer letters diff --git a/fonts/wasy/lasychr.mf b/fonts/wasy/lasychr.mf new file mode 100644 index 0000000000..0c94770291 --- /dev/null +++ b/fonts/wasy/lasychr.mf @@ -0,0 +1,388 @@ +% +% Copyright, The LaTeX Project and Roland Waldi, 1992. +% +% These characters are taken from LASY.MF from the LaTeX project with minor +% changes and extensions (so 100% compatible). LASY.MF is part of the +% "LaTeX fonts" package which is usually part of every LaTeX system. It +% is also available at the URL +% ftp://ftp.dante.de/tex-archive/fonts/latex/ +% +% Permission is granted without fee to use, modify and distribute this +% file, but you are not allowed to distribute this file or any files +% derived from it using the name LASY.MF. +% + +cmchar "Leftward arrowhead"; +compute_spread(.45x_height#,.55x_height#); +beginchar(hex"28",6u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup crisp.nib; +pos3(bar,0); pos4(bar,0); +y0=math_axis; 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[]; +(t1,t2)=(z4r{z9-z4}..z6r) intersectiontimes (z3r{z9-z3}..z5r); +z10=(z4r{z9-z4}..z6r) intersectionpoint (z3r{z9-z3}..z5r); +filldraw z0..{z4-z9}z4l--subpath (0,t1) of (z4r{z9-z4}..z6r) + --z10--subpath (t2,0) of (z3r{z9-z3}..z5r)--z3l{z9-z3}..z0 & cycle; + % arrowhead +penlabels(0,3,4,5,6,9,10); endchar; + +% This character is an alteration of the leftward arrow +% The tip of the arrowhead rests one unit from left edge, same as left arrow +% Changes: +% 1) deletion of the stem ... points z1,z2 etc +% The rest of the numbers stay the same, for any referencing +% 2) new intersectinpoint z10 is introduced and path slightly altered +% 3) name, code number and width changed, otherwise essentially the same + + + +cmchar "Rightward arrowhead"; +compute_spread(.45x_height#,.55x_height#); +beginchar(hex"29",6u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup crisp.nib; +pos3(bar,0); pos4(bar,0); +y0=math_axis; 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[]; +(t1,t2)=(z4l{z9-z4}..z6r) intersectiontimes (z3l{z9-z3}..z5r); +z10=(z4l{z9-z4}..z6r) intersectionpoint (z3l{z9-z3}..z5r); +filldraw z0..{z4-z9}z4r--subpath (0,t1) of (z4l{z9-z4}..z6r) + --z10--subpath (t2,0) of (z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle; + % arrowhead +penlabels(0,3,4,5,6,9,10); endchar; + +% This character is an alteration of the rightward arrow +% The tip of the arrowhead rests one unit from right edge, same as right arrow +% Changes: +% 1) deletion of the stem ... points z1,z2 etc +% The rest of the numbers stay the same, for any referencing +% 2) new intersectinpoint z10 is introduced and path slightly altered +% 3) name, code number and width changed, otherwise essentially the same + + + +cmchar "Upward arrowhead"; +beginchar(hex"2A",9u#,asc_height#,asc_depth#); +italcorr .76asc_height#*slant+.5crisp#-u#; +adjust_fit(0,0); pickup crisp.nib; +pos3(bar,90); pos4(bar,90); +top z0=(.5w,0); 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[]; +(t1,t2)=(z4l{z9-z4}..z6r) intersectiontimes (z3l{z9-z3}..z5r); +z10=(z4l{z9-z4}..z6r) intersectionpoint (z3l{z9-z3}..z5r); +filldraw z0..{z4-z9}z4r--subpath (0,t1) of (z4l{z9-z4}..z6r) + --z10--subpath (t2,0) of (z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle; + % arrowhead +penlabels(0,3,4,5,6,9,10); endchar; + +% This character is an alteration of the upward arrow +% The tip of the arrowhead rests on the baseline for reference +% Changes: +% 1) deletion of the stem ... points z1,z2 etc +% The rest of the numbers stay the same, for any referencing +% 2) point z0 is moved down from the ascender line; the tip touches +% the baseline +% 3) new intersectinpoint z10 is introduced and path slightly altered +% 4) name and code number changed, otherwise essentially the same + + + +cmchar "Downward arrowhead"; +beginchar(hex"2B",9u#,asc_height#,asc_depth#); +adjust_fit(0,0); pickup crisp.nib; +pos3(bar,90); pos4(bar,90); +bot z0=(.5w,0); 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]; % z9 iintroduces curve to arrowhead +numeric t[]; path p[]; % rather direction{z9-z4} does this +(t1,t2)=(z4r{z9-z4}..z6r) intersectiontimes (z3r{z9-z3}..z5r); +z10=(z4r{z9-z4}..z6r) intersectionpoint (z3r{z9-z3}..z5r); +filldraw z0..{z4-z9}z4l--subpath (0,t1) of (z4r{z9-z4}..z6r) + --z10--subpath (t2,0) of (z3r{z9-z3}..z5r)--z3l{z9-z3}..z0 & cycle; + % arrowhead +penlabels(0,3,4,5,6,9,10); endchar; + +% This character is an alteration of the downward arrow +% The tip of the arrowhead rests on the baseline for reference +% Changes: +% 1) deletion of the stem ... points z1,z2 etc +% The rest of the numbers stay the same, for any referencing +% 2) point z0 is moved up from the descender line to rest on the baseline +% 3) new intersectinpoint z10 is introduced and path slightly altered +% 4) name and code number changed, otherwise essentially the same + + +cmchar "Upside-down Uppercase Greek Omega"; +beginchar(hex"30",13u#,cap_height#,0); +italcorr cap_height#*slant-.35u#; %italcorr .75cap_height#*slant-.5u#; +adjust_fit(0,0); +pickup tiny.nib; pos1(vair,-90); pos2(cap_curve,0); +pos3(vair,0); pos4(cap_curve,180); pos5(vair,180); +x1=.5w; bot y1r=0-o; lft x4r=hround u; y2=y4=1/3h; x2=w-x4; +rt x5l=hround(1/3(w+.5u)+.5hair); top y3=top y5=h; x3=w-x5; +filldraw stroke z3e{down}...{down}z2e + & pulled_super_arc.e(2,1)(.5superpull) + & pulled_super_arc.e(1,4)(.5superpull) + & z4e{up}...{up}z5e; % bowl +numeric arm_thickness; path p; p=z3{down}...{down}z2; +arm_thickness=Vround(if hefty:slab+2stem_corr else:.75[slab,cap_vstem] fi); +pickup crisp.nib; pos6(arm_thickness,90); pos7(fudged.hair,0); +top y6r=h; x6=x3; rt x7r=hround (w-.8u); y7=good.y(y6l-.5beak)+eps; +(x,y)=p intersectionpoint((0,y6l)--(w+h,y6l)); x6l:=x; +arm(6,7,a,.5beak_darkness,1.2beak_jut); % right arm and beak +pos8(arm_thickness,90); pos9(fudged.hair,180); +y8=y6; y9=y7; x8+x6=x9+x7=w; x8l:=w-x6l; +arm(8,9,b,.5beak_darkness,-1.2beak_jut); % left arm and beak +math_fit(0,.5ic#); penlabels(1,2,3,4,5,6,7,8,9); endchar; + +% This character is taken from the Upper Case Omega of cmr +% Directions and reference points are reversed and flipped +% pos angles are flipped by 180 degrees +% vertical values are reversed, up/down directions in the +% filldraw stroke are reversed +% left strokes same, but changes reference points +% italic correction based on furthest pont of character , so made it +% full cap_height minus amount for the beak, taken from the cap XI +% I suppose a transformation of paths would have worked also, but this +% way, limits are maintained better, i think +% w+h instead of just w in intersection to make sure paths do intersect + +cmchar "Square subset sign"; +compute_spread(5/4x_height#,3/2x_height#); % the spread of `$=$' +beginchar(hex"3C",14u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; +lft x2=hround(1.5u+oo); x1=x4=hround(w-1.5u)+eps; x3=x2; +y1-y4=spread; y2=y1; y3=y4; y1=math_axis+.5spread; +draw z1--z2--z3--z4; % bars and stem +labels(1,2,3,4); endchar; + +% This character is an alteration of the square subset or equal to sign +% Changes: +% 1) changed position of y1 to be .5 of the spread above the math_axis +% 2) got rid of lower bar (points z8/z9,etc) and the extra spread#' amount +% which was used in calculations for the lower bar +% 3) name and code number and height changed, otherwise essentially the same + +cmchar "Square superset sign"; +compute_spread(5/4x_height#,3/2x_height#); % the spread of `$=$' +beginchar(hex"3D",14u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; +x1=x4=hround 1.5u-eps; rt x2=hround(w-1.5u-oo); x3=x2; +y1-y4=spread; y2=y1; y3=y4; y1=math_axis+.5spread; +draw z1--z2--z3--z4; % bars and stem +labels(1,2,3,4); endchar; + +% This character is an alteration of the square superset or equal to sign +% Changes: +% 1) changed position of y1 to be .5 of the spread above the math_axis +% 2) got rid of lower bar (points z8/z9,etc) and the extra spread#' amount +% which was used in calculations for the lower bar +% 3) name and code number and height changed, otherwise essentially the same + +cmchar "Diamond"; +%beginchar(oct"063",2(.85asc_height#-math_axis#)+2u#,v_center(7u#)); +beginchar(hex"33",2(.85asc_height#-math_axis#)+2u#, + v_center(2(.85asc_height#-math_axis#))); +italcorr math_axis#*slant; +adjust_fit(0,0); pickup rule.nib; +numeric a; a=.85asc_height-math_axis; +x4=x8=good.x .5w; w:=r:=2x4; rt x2=w-lft x6=good.x(x4+a); +y2=y6=.5[y4,y8]=.5cap_height; top y8=good.y(y2+a); +draw z2--z4--z6--z8--cycle; +labels(2,4,6,8); endchar; + +% This character is an alteration of the diamond operator +% The four tips are equidistant from the center point (.5w,math_axis), +% this distance being half of the cap height +% and related to that in the square character +% slightly less though, since it looks too big if the actually have same +% length +% Changes: +% 1) To the amount a, which gives the distance of the tips from the center +% 2) The width is related to the asc_height, so it changes with it +% 3) name and code number and width changed, otherwise essentially the same +% The numbers stay the same, for any referencing + +cmchar "Bowtie operator"; +beginchar(hex"31",13u#,v_center(7u#)); +italcorr math_axis#*slant; +adjust_fit(0,0); pickup rule.nib; +numeric a; a=round(1.1*math_axis); +x1=x4=good.x 1.5u; x2=x3=w-x1; +y1=y2=good.y(.5(cap_height-2a)); y3=y4=y1+2a; +draw z1--z3--z2--z4--cycle; +labels(1,2,3,4); endchar; + +% Arbitrary width given +% Length of the bars at the edges are 2.2*math_axis length +% and it's vertically aligned on the high, i.e., .5 cap height as opposed +% to being aligned on the math axis + + + + +cmchar "Leads to character extension"; +compute_spread(.45x_height#,.55x_height#); +beginchar(hex"3A",12u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; +numeric a; a=round(.45math_axis); +y11=y13=y15=math_axis; y12-a=y14+a=good.y math_axis; +x11=0; x15=w; x13=.5[x11,x15]; x12=.5[x11,x13]; x14=.5[x13,x15]; +path p; p=z12{right}...z13...z14{right}; +draw z11{dir(-angle direction 1 of p)}...z12{right}...z13... + z14{right}...z15{dir(-angle direction 1 of p)}; +penlabels(11,12,13,14,15); endchar; + +% This character is an extension to fit with the Leads to character with +% arrowhead +% This character goes from edge to edge and a series of these can be linked +% as desired. +% It has 2/3 the width of that character, and if this relation is kept, the +% the curves should all match + + + +cmchar "Leads to character with arrowhead"; +compute_spread(.45x_height#,.55x_height#); +beginchar(hex"3B",18u#,v_center(spread#+rule_thickness#)); +adjust_fit(0,0); pickup crisp.nib; +pos3(bar,0); pos4(bar,0); +y0=math_axis; 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[]; +(t1,t2)=(z4l{z9-z4}..z6r) intersectiontimes (z3l{z9-z3}..z5r); +z10=(z4l{z9-z4}..z6r) intersectionpoint (z3l{z9-z3}..z5r); +filldraw z0..{z4-z9}z4r--subpath (0,t1) of (z4l{z9-z4}..z6r) + --z10--subpath (t2,0) of (z3l{z9-z3}..z5r)--z3r{z9-z3}..z0 & cycle; + % arrowhead +pickup rule.nib; +numeric a; a=round(.45math_axis); +y11=y13=y15=y16=y0; y12-a=y14+a=good.y math_axis; +%x11=0; x15=2/3w; z17=lft z10; +%x13=.5[x11,x15]; x12=.5[x11,x13]; x14=.5[x13,x15]; x16=.3[x15,x0]; +x11=0; x15=0.7w; z17=lft z10; +x13=.5[x11,x15]; x12=.5[x11,x13]; x14=.5[x13,x15]; x16=.5[x15,x0]; +path p; p=z12{right}...z13...z14{right}; +draw z11{dir(-angle direction 1 of p)}... + z12{right}...z13...z14{right}...z16{right}...z17; +penlabels(0,3,4,5,6,9,10,11,12,13,14,15,16); endchar; + +% This character uses the rightward arrow arrowhead +% The width is the same as that of the regular arrow +% An extension character can be added for longer squiggles + + +cmchar "LASY \lhd triangle"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(1,14u#,v_center(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]=math_axis; +draw z1--z2--z3--cycle; % triangle +labels(1,2,3); endchar; + +% taken directly from CMR "less than" character +% the path was closed to make a triangle + +cmchar "black LASY \lhd triangle"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(16,14u#,v_center(spread#+rule_thickness#)); +italcorr h#*slant-u#; +adjust_fit(0,0); pickup crisp.nib; +lft x2=hround 1.5u-eps; x1=x3=w-x2; +y1-y3=spread; y2=.5[y1,y3]=math_axis; +filldraw z1--z2--z3--cycle; % triangle +labels(1,2,3); endchar; + + +cmchar "LASY \unlhd triangle"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +compute_spread(5/4x_height#,3/2x_height#); +beginchar(2,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 y1=h; +draw z1--z2--z3--cycle; % triangle +x8=x1; x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % bar +labels(1,2,3,8,9); endchar; + +% taken directly from CMR "less than or equal to sign" +% the "less than" path was closed to make a triangle + + + +cmchar "LASY \rhd triangle"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(3,14u#,v_center(spread#+rule_thickness#)); +italcorr math_axis#*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]=math_axis; +draw z1--z2--z3--cycle; % triangle +labels(1,2,3); endchar; + +% taken directly from CMR "greater than" character +% the path was closed to make a triangle + +cmchar "black LASY \rhd triangle"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(17,14u#,v_center(spread#+rule_thickness#)); +italcorr math_axis#*slant-u#; +adjust_fit(0,0); pickup crisp.nib; +rt x2=hround(w-1.5u)+eps; x1=x3=w-x2; +y1-y3=spread; y2=.5[y1,y3]=math_axis; +filldraw z1--z2--z3--cycle; % triangle +labels(1,2,3); endchar; + +cmchar "LASY \unrhd triangle"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +compute_spread(5/4x_height#,3/2x_height#); +beginchar(4,14u#,v_center(spread#'+spread#+rule_thickness#)); +italcorr h#*slant-u#; +adjust_fit(0,0); pickup rule.nib; +lft x1=hround 1.5u-eps; x2=w-x1; x3=x1; +y1-y3=spread; y2=.5[y1,y3]; top y1=h; +draw z1--z2--z3--cycle; % triangle +x8=x1; x9=x2; y8=y9; y3-y9=spread'; draw z8--z9; % bar +labels(1,2,3,8,9); endchar; + +% taken directly from CMR "greater than or equal to sign" +% the "greater than" path was closed to make a triangle + +cmchar "upwards pointing black triangle"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(hex"4B",spread#+rule_thickness#,v_center(11u#)); +italcorr 0; +adjust_fit(0,0); pickup crisp.nib; +top y2= h+eps; y1=y3; y2-y1 = vround (h+d); +x1-x3=spread; x2=.5[x1,x3]=good.x .5w; +filldraw z1--z2--z3--cycle; % triangle +labels(1,2,3); endchar; + +cmchar "downwards pointing black triangle"; +compute_spread(5/4x_height#,3/2x_height#); +beginchar(hex"4C",spread#+rule_thickness#,v_center(11u#)); +italcorr 0; +adjust_fit(0,0); pickup crisp.nib; +bot y2= (-d)-eps; y1=y3; y1-y2 = vround (h+d); +x1-x3=spread; x2=.5[x1,x3]=good.x .5w; +filldraw z1--z2--z3--cycle; % triangle +labels(1,2,3); endchar; + diff --git a/fonts/wasy/rsym.mf b/fonts/wasy/rsym.mf new file mode 100644 index 0000000000..94d4e19e73 --- /dev/null +++ b/fonts/wasy/rsym.mf @@ -0,0 +1,1753 @@ +% This is RSYM.MF in text format, version 2.3 + +cmchar "therefore"; +beginchar(hex"05",12u#,x_height#,0); +italcorr 0; +adjust_fit(0,0); pickup fine.nib; +numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#; +define_whole_blacker_pixels(dot_diam); +pos1(dot_diam,0); pos2(dot_diam,90); +pos3(dot_diam,0); pos4(dot_diam,90); +pos5(dot_diam,0); pos6(dot_diam,90); +lft x1l=hround(.5w-.5dot_diam); y1+.5dot_diam=vround(x_height+.5dot_diam); +x1=.5[x3,x5]; y3=y5; bot y4l=0; +sqrt3 * (x5-x3) = 2(y1-y4); +z1=z2; dot(1,2); % dots +z3=z4; dot(3,4); +z5=z6; dot(5,6); +penlabels(1,2,3,4,5,6); endchar; + +cmchar "pointer"; +beginchar(hex"09",9u#,fig_height#,0); +italcorr 0; +adjust_fit(0,0); pickup rule.nib; +lft x1 = hround .5u; +rt x4 = hround (w-.6u); +x7=x1; x2=x3=x5=x6=.5[x1,x4]; +(top y5) - (bot y3) = h; +y5-y6 = y2-y3 = vround .3h; +y4=good.y .5[-d,h]=.5[y3,y5]; +y1=y2; y7=y6; +draw z1--z2--z3--z4--z5--z6--z7--cycle; +labels(1,2,3,4,5,6,7); endchar; + +cmchar "lightning"; +beginchar(hex"12",8u#,asc_height#,.5desc_depth#); +italcorr 0; +adjust_fit(0,0); pickup rule.nib; +x1 = .5w; x3 = w-u; x2 = u; x5 = .5w - u; +top y1 = h; bot y5 = -d; y2=y3=.5[y4,y1]; z4=1/5[z5,z3]; +z6 = 2[z5,z4] = .5[z7,z8]; y8 = y6; x8-x7 = .5(x3-x2); +x5'=.5[x4,x5]; y5'=y5; +draw z1--z2--z3--z4; +filldraw z5'--z7--z8--cycle; +labels(1,2,3,4,5,6,7); endchar; + +cmchar "inverse logical not sign"; +beginchar(hex"18",12u#,x_height#,0); +italcorr x_height#*slant-.5u#; +adjust_fit(if monospace: -1.5u#,-1.5u# else: 0,0 fi); pickup rule.nib; +lft x2=hround u-eps; x3=w-x2; x1=x2; +y2=y3=good.y .5[bar_height,h]; y3-y1=1.2(h-bar_height); +draw z1--z2--z3; % bar and stem +labels(1,2,3); endchar; + +cmchar "aries"; +beginchar(hex"17",asc_height#+2u#,asc_height#,0); +italcorr asc_height#*slant-.5u#; +adjust_fit(0,0); pickup rule.nib; +y1=y6; y2-y1=x2-x1; top y2 = h+oo; y5=y2; bot y4 = 0-oo; +y3=.85[y4,y1]; +x3-x1 = x6-x3 = 1/2h; x3 = x4 = good.x .5w; +x2=.5[x1,x3]; x5=.5[x3,x6]; +draw z1{dir 100}..z2..z3---z4 & z4---z3..z5..{dir -100}z6; +labels(1,2,3); endchar; + +cmchar "taurus"; +beginchar(hex"5D",asc_height#+2u#,asc_height#,0); +italcorr .7asc_height#*slant; +adjust_fit(0,0); +pickup rule.nib; autorounded; +x4 = good.x .5w; y8-y4=x2-x6=2/3h; y2=good.y .34h; +circle_points; +draw_circle; +x2'=x2; x6'=x6; y2'=y6'=h; +x8'=x4; y8'=2h; +draw z2'{z2'-z8'}..z8..{z8'-z6'}z6'; +labels(1,2,3,4,5,6,7,8); +labels(2',6',8'); endchar; + +cmchar "gemini"; +beginchar(hex"5E",asc_height#+2u#,asc_height#,0); +italcorr 2/3asc_height#*slant; +adjust_fit(0,0); pickup rule.nib; +top y2 = h+u; bot y1 = 0-u; y4 = y1; y3 = y2; +x1 = x2 = u; x3 = x4 = w-u; +bot y5 = 1/18h; top y6 = 17/18h; y8 = y5; y7 = y6; +x5 = x6 = 1/3w; x7 = x8 = 2/3w; +draw z5--z6; +draw z7--z8; +draw z1..z5..z8..z4; +draw z2..z6..z7..z3; +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "capricorn"; +beginchar(hex"64",asc_height#+2u#,asc_height#,0); +italcorr 2/3asc_height#*slant; +adjust_fit(0,0); pickup rule.nib; +top y1 = h; x1 = hround u; +y2 = y1; x2 = hround (w-u); +x3 = 0.42w; y3 = 0.60h; +x4 = 0.60w; bot y4 = 0; +x5 = x2 + oo; y5 = 0.28h; +x6 = x1; y6 = 0.35h; +draw z1--z2{dir 200}..z3..z4..z5..z3..z6; +labels(1,2,3,4,5,6); endchar; + +cmchar "pisces"; +beginchar(hex"66",asc_height#+2u#,asc_height#,0); +italcorr 2/3asc_height#*slant; +adjust_fit(0,0); pickup rule.nib; +top y2 = h; bot y1 = 0; y4 = y1; y3 = y2; +y2 - y5 = y5 - y1; y6 = y5; +x5 = 1/3w; x5-x1 = x3-x6; +x1 = x2 = hround u; x3 = x4 = hround w-u; +draw z5--z6; +draw z1..z5..z2; +draw z3..z6..z4; +labels(1,2,3,4,5,6); endchar; + +cmchar "virgo"; +beginchar(hex"60",1.5asc_height#+2u#,asc_height#,desc_depth#); +italcorr .7asc_height#*slant; +adjust_fit(0,0); +pickup rule.nib; autorounded; +top y1 = h; x1 = hround u; +bot y2 = 0; x2 = hround u + (w-2u)/7; +y4-y3 = x3-x1; x3=x2; +y4=y7=y10=y1; x4-x3=x5-x4=x7-x5=x8-x7=x10-x8=0.77(x11-x10)=x3-x1; +x5=x6; x8=x9; +y5=y8=y11=y3; +y6=y9=y2; +x9'=x9+1/4(x11-x9); +y9'=y9+2/3(y12-y9); +bot y12 = -d; x12-x6 = x9-x12; +draw z1{right}..{down}z3--z2--z3..z4..z5--z6--z5..z7..z8--z9{down}..z9'; +draw z9--z8..z10..z11{down}..z12; +labels(1,2,3,4,5,6,7,8,9,10,11,12); +endchar; + +cmchar "scorpio"; +beginchar(hex"62",1.5asc_height#+2u#,asc_height#,desc_depth#); +italcorr .7asc_height#*slant; +adjust_fit(0,0); +pickup rule.nib; autorounded; +top y1 = h; x1 = hround u; +bot y2 = 0; x2 = hround u + (w-2u)/7; +y4-y3 = x3-x1; x3=x2; +y4=y7=y10=y1; x4-x3=x5-x4=x7-x5=x8-x7=x10-x8=0.77(x11-x10)=x3-x1; +x5=x6; x8=x9; +y5=y8=y3; +y6=y9=y11=y2; +x12=x11; y12=y11-2u; +x13=x11-2u; y13=y11; +draw z1{right}..{down}z3--z2--z3..z4..z5--z6--z5..z7..z8 + --z9{down}..{dir 45}z11; +draw z12--z11--z13; +labels(1,2,3,4,5,6,7,8,9,10,11,12); +endchar; + +cmchar "cancer"; +beginchar(hex"5F",1.3asc_height#+2u#,asc_height#,0); +italcorr .7asc_height#*slant; +adjust_fit(0,0); +pickup rule.nib; autorounded; +y6 = 0.5h; x6 = hround u; x2-x6 = y8-y4 = 0.35h; +circle_points; +y1'=y1; y2'=y2; y3'=y3; y4'=y4; y5'=y5; y6'=y6; y7'=y7; y8'=y8; +x6'= hround (w-u); +x9 = hround (0.55w); top y9 = h; bot y9' = 0; +x10 = hround (w-u-1/7h); y10-y8' = 1/7h; y4-y10' = 1/7h; +x2'-x6'=x6-x2; x3'-x6'=x6-x3; x4'-x6'=x6-x4; x5'-x6'=x6-x5; +x1'-x6'=x6-x1; x7'-x6'=x6-x7; x8'-x6'=x6-x8; x9'-x6'=x6-x9; +x10'-x6'=x6-x10; +draw z6{up}...z7{z8-z6} + ...z8{right}...z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left} + ...z5{z6-z4}...z6{up}..z9{right}..z10; +draw z6'{down}...z5'{z4'-z6'} + ...z4'{left}...z3'{z2'-z4'}...z2'{up}...z1'{z8'-z2'}...z8'{right} + ...z7'{z6'-z8'}...z6'{down}..z9'{left}..z10'; +labels(1,2,3,4,5,6,7,8,9,10); +labels(1',2',3',4',5',6',7',8',9',10'); +endchar; + +cmchar "libra"; +beginchar(hex"61",1.5asc_height#+2u#,0.75asc_height#,0); +italcorr .7asc_height#*slant; +adjust_fit(0,0); +pickup rule.nib; autorounded; +x4 = good.x .5w; y8-y4=x2-x6=.5w-2u; bot y4 = 0; +circle_points; +top y6' = bot y6; x6' = x6; +top y2' = bot y2; x2' = x2; +y9 = y10 = y2'; x10-x9 = w-2u; x10-x4 = x4-x9; +y11 = y12 = y4; x11=x9; x12=x10; +draw z11--z12; +draw z9--z6'{dir 95}..z7..z8..z1..{dir -95}z2'--z10; +labels(1,2',3,4,5,6',7,8,9,10,11,12); +endchar; + +cmchar "aquarius"; +beginchar(hex"65",1.5asc_height#+2u#,x_height#,0); +italcorr .7asc_height#*slant; +adjust_fit(0,0); +pickup rule.nib; autorounded; +x1 = hround u; x6 = hround (w-u); +x2-x1 = x3-x2 = x4-x3 = x5-x4 = x6-x5; +top y2 = h; y2=y4=y6; +bot y1 = 0.55h; y1=y3=y5; +x1'=x1;x2'=x2;x3'=x3;x4'=x4;x5'=x5;x6'=x6; +bot y1' = 0; y1'=y3'=y5'; +y2'-y1' = y2-y1; y2'=y4'=y6'; +draw z1..z2..z3..z4..z5..z6; +draw z1'..z2'..z3'..z4'..z5'..z6'; +labels(1,2.3,4,5,6); +labels(1',2',3',4',5',6'); +endchar; + +cmchar "sun"; +beginchar(hex"2E",asc_height#+2u#,asc_height#,0); +italcorr .5asc_height#*slant; +adjust_fit(0,0); +pickup rule.nib; autorounded; +x4 = good.x .5w; y8-y4=x2-x6=3/5h; y2=good.y .5h; +circle_points; +z1'=4/3[z5,z1]; +z2'=4/3[z6,z2]; +z3'=4/3[z7,z3]; +z4'=4/3[z8,z4]; +z5'=4/3[z1,z5]; +z6'=4/3[z2,z6]; +z7'=4/3[z3,z7]; +z8'=4/3[z4,z8]; +draw_circle; +for n=1 upto 8: draw z[n]--z[n]'; endfor +labels(1,2,3,4,5,6,7,8); +labels(1',2',3',4',5',6',7',8'); endchar; + +cmchar "check"; +beginchar(8,.90*asc_height#+2u#,asc_height#,0); +italcorr asc_height#*slant - .5u#; +adjust_fit(0,0); pickup crisp.nib; +x1=u; x2=x1+.26h; x3=x2+.65h; +y1=.35h; bot y2=0; top y3l=h-eps; +pos1(hair,45); pos2(stem,0); pos3(hair,-45); +filldraw stroke z1e{(1,-1)}..z2e; +filldraw stroke z2e..{(1,1)}z3e; +penlabels(1,2,3); endchar; + +cmchar "bell"; +beginchar(10,1.7math_axis#+u#,1.9math_axis#,0); +italcorr u#*slant + .5u#; +adjust_fit(0,0); pickup crisp.nib; +x11=good.x u; x14 = good.x .5w; x17-x14=x14-x11; +x12=x11; x16=x17; x13=1/3[x12,x14]; x15=1/3[x16,x14]; +bot y11=1.5u; y17=y11; y12=y11+stem; y16=y12; +top y14=h; y13=y15=.5[y12,y14]; +filldraw z11--z12{right}..z13..z14{right}..z15..{right}z16--z17--cycle; +x1=x3=x14; y1-y3=x2-x4=1.6u; x1=.5[x2,x4]; y4=y2=.5[y1,y3]=good.y .8u; +filldraw z1..z2..z3..z4..cycle; +labels(1,2,3,4,11,12,13,14,15,16,17); endchar; + +cmchar "1/8 note"; +beginchar(11,10u#,asc_height#,0); +italcorr 1/3asc_height#*slant; +adjust_fit(0,0); pickup crisp.nib; +lft x1=u; rt x3r=.5w; rt x7r = w-u; +x5=x5'=x3; x7'=x7; x2=x4=.5[x1,x3r]; +bot y2=0; top y4=3u; y1=y3=.5[y2,y4]; +top y5=h; y7=1/3h; z6=.5[z5,z7]; +pos3(hair,0); pos5(hair,0); pos7(hair,0); +pos5'(hair,0); pos7'(hair,0); +y5-y5'=y7'-y7=1.0u; +pos6(2u,45); +filldraw z1..z2..z3r..z4..cycle; % corpus +filldraw stroke z3e--z5e; % beam +filldraw stroke z5'e{down}...z6e...{down}z7'e--z7e; % flag +penlabels(3,5,5',6,7,7'); labels(1,2,4); endchar; + +cmchar "1/4 note"; +beginchar(12,6u#,asc_height#,0); +italcorr 1/3asc_height#*slant; +adjust_fit(0,0); pickup crisp.nib; +lft x1=u; rt x3r=w-u; +x5=x3; x2=x4=.5[x1,x3r]; +bot y2=0; top y4=3u; y1=y3=.5[y2,y4]; +top y5=h; +pos3(hair,0); pos5(hair,0); +filldraw z1..z2..z3r..z4..cycle; % corpus +filldraw stroke z3e--z5e; % beam +penlabels(3,5); labels(1,2,4); endchar; + +cmchar "1/2 note"; +beginchar(13,6u#,asc_height#,0); +italcorr 1/3asc_height#*slant; +adjust_fit(0,0); pickup crisp.nib; +.5[x1,x3] = good.x .5w; x3r-x1r=4u; +x5=x3; x2=x4=.5[x1,x3]; +bot y2=0; top y4=3u; y1=y3=.5[y2,y4]; +top y5=h; +pos1(hair,180); pos3(hair,0); pos5(hair,0); +pos2(2hair,-90); pos4(2hair,90); +penstroke z1e..z2e..z3e..z4e..cycle; % corpus +filldraw stroke z3e--z5e; % beam +penlabels(1,2,3,4,5); endchar; + +cmchar "1/1 note"; +beginchar(14,7u#,3.5u#,0.5u#); +italcorr 1/3asc_height#*slant; +adjust_fit(0,0); pickup crisp.nib; +.5[x1,x3] = good.x .5w; x3r-x1r=5u; +x2=x4=.5[x1,x3]; +y4r-y2r=vround h+eps; y1=y3=.5[y2,y4]=good.y .5(h-d); +pos1(2.5hair,180); pos3(2.5hair,0); +pos2(vair,-90); pos4(vair,90); +penstroke z1e..z2e..z3e..z4e..cycle; % corpus +penlabels(1,2,3,4); endchar; + +cmchar "2 1/8 notes"; +beginchar(15,13u#,asc_height#,0); +italcorr 1/3asc_height#*slant; +adjust_fit(0,0); pickup crisp.nib; +lft x1=u; x3=x1+4u; +x5=x3; x2=x4=.5[x1,x3r]; +bot y2=.2h; top y4=y2+3u; y1=y3=.5[y2,y4]; +top y5=h; +x1'=x3'-4u; rt x3'r=w-u; +x5'=x3'; x2'=x4'=.5[x1',x3'r]; +bot y2'=0; top y4'=3u; y1'=y3'=.5[y2',y4']; +top y5'=.8h; +pos3(hair,0); pos5(hair,0); +pos3'(hair,0); pos5'(hair,0); +pos6(3hair,-90); pos6'(3hair,-90); +x6=x5l; x6'=x5'r; +y6'l=y5'; y6l=y5 + (hair/(x6'-x6))*(y5-y5') + eps; +filldraw z1..z2..z3r..z4..cycle; % corpus 1 +filldraw z1'..z2'..z3'r..z4'..cycle; % corpus 2 +filldraw stroke z3e--z5e; % beam 1 +filldraw stroke z3'e--z5'e; % beam 2 +filldraw stroke z6e--z6'e; % bar +penlabels(3,5,6,7); labels(1,2,4); endchar; + +cmchar "female"; +beginchar(hex"19",x_height#+2u#,1.7x_height#-desc_depth#,desc_depth#); +italcorr 1/2x_height#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup rule.nib; autorounded; +lft x6=hround u; x8=good.x (.5x_height + u); +y6 = good.y (h-.5x_height); y8-y4=x2-x6; +circle_points; +x9 := x8; +numeric a; a = round .5(h+d-x_height) + eps; +x10=x8-a; +x11=x8+a; +y10 = y11; y11 = -d+a; +y9 = -desc_depth; +draw_circle; +draw z10--z11; draw z4--z9; +math_fit(0,ic#); +labels(1,2,3,4,5,6,7,8,9,10,11); endchar; + +cmchar "earth"; +beginchar(hex"26",x_height#+2u#,1.7x_height#,0); +italcorr 1/2x_height#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup rule.nib; autorounded; +lft x6=hround u; x8=good.x (.5x_height + u); +y6 = good.y .5x_height; y8-y4=x2-x6; +circle_points; +x9 := x8; +numeric a; a = round .5(h-x_height) + eps; +x10=x8-a; +x11=x8+a; +y10 = y11 = h-a; +y9 = h; +draw_circle; +draw z10--z11; draw z8--z9; +math_fit(0,ic#); +labels(1,2,3,4,5,6,7,8,9,10,11); endchar; + +cmchar "Uranus"; +beginchar(hex"5A",x_height#+2u#,v_center(1.7x_height#)); +italcorr 1/2x_height#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup rule.nib; autorounded; +lft x6=hround u; x12 = x8 = good.x (.5x_height + u); +y12 = y6 = good.y (.5x_height-d); y8-y4=x2-x6; +circle_points; +x9 := x8; +numeric a; a = round .5(h+d-x_height) + eps; +x10=x8-a+.5u; +x11=x8+a-.5u; +y10 = y11 = h-a+.5u; +y9 = h; +draw_circle; +draw z8--z9; +draw z10--z9--z11; +drawdot z12; +math_fit(0,ic#); +labels(1,2,3,4,5,6,7,8,9,10,11,12); endchar; + +cmchar "Neptun"; +beginchar(hex"5B",x_height#+4u#,v_center(2x_height#)); +italcorr 2x_height#*slant - .5u#; +adjust_fit(0,0); +pickup rule.nib; autorounded; +lft x6=hround u; x8 = good.x (.5x_height + u); +y6 = good.y (.5x_height-d); y8-y4=x2-x6; +circle_points; +x9 = x11 = x11' = x8; +x10=x10'=x6; x12=x12'=x2; +top y10' = top y11' = top y12' = h; +top y10 = top y11 = top y12 = h-u; +y10-y9 = x9-x10; +pos10(2u,0); +pos11(2u,0); +pos12(2u,0); +draw_circle; +draw z8--z11'; +draw z10'---z10..z9..z12---z12'; +draw z10l--z10'--z10r; +draw z11l--z11'--z11r; +draw z12l--z12'--z12r; +math_fit(0,ic#); +penlabels(10,11,12); +labels(1,2,3,4,5,6,7,8,9,10',11',12'); endchar; + +cmchar "Mercury"; +beginchar(hex"27",x_height#+2u#,2.2x_height#-desc_depth#,desc_depth#); +italcorr 1/2x_height#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup rule.nib; autorounded; +lft x6=hround u; x8=good.x (.5x_height + u); +y6 = good.y (h-x_height); y8-y4=x2-x6; +circle_points; +x9 := x8; +numeric a; a = round .5(h+d-1.5x_height) + eps; +x10=x8-a; +x11=x8+a; +y10 = y11; y11 = -d+a; +y9 = -desc_depth; +x12=x6; x13=x2; y12=y13; y12-y8=y8-y2; +draw_circle; +draw z10--z11; draw z4--z9; +draw z12{down}...z8{right}...{up}z13; +math_fit(0,ic#); +labels(1,2,3,4,5,6,7,8,9,10,11); endchar; + +cmchar "male"; +numeric this_size#; +this_size# = x_height#*(1+0.9/sqrt2); +beginchar(hex"1A",this_size#+1.7u#,this_size#,0); +italcorr this_size#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup rule.nib; autorounded; +lft x6=hround u; x2=x_height+2u-x6; y2=.5x_height; bot y4=0; +circle_points; +z9 = 1.9[z5,z1]; +draw_circle; +x9 := good.x x9; +y9 := good.y y9; +x10 = x9; y11 = y9; +y10 = y9-3.5u; x11 = x9-3.5u; +draw z1--z9; +draw z10--z9--z11; +labels(1,2,3,4,5,6,7,8,9); endchar; + +cmchar "sagittarius"; +numeric this_size#; +this_size# = x_height#*(1+0.9/sqrt2); +beginchar(hex"63",this_size#,this_size#,0); +italcorr this_size#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup rule.nib; autorounded; +lft x7=hround u; x2-x6 = y8-y4 = x_height; bot y5=0; +circle_points; +z9 = 1.9[z5,z1]; +x9 := good.x x9; +y9 := good.y y9; +x10 = x9; y11 = y9; +y10 = y9-3.5u; x11 = x9-3.5u; +draw z5--z9; +draw z3--z7; +draw z10--z9--z11; +labels(1,2,3,4,5,6,7,8,9); endchar; + +cmchar "conjunction"; +numeric this_size#; +this_size# = x_height#*(1+0.9/sqrt2); +beginchar(hex"56",this_size#+0.7u#,this_size#,0); +italcorr this_size#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup rule.nib; autorounded; +lft x6=hround u; x2=x_height+2u-x6; y2=.5x_height; bot y4=0; +circle_points; +z9 = 1.9[z5,z1]; +draw_circle; +x9 := good.x x9; +y9 := good.y y9; +draw z1--z9; +labels(1,2,3,4,5,6,7,8,9); endchar; + +cmchar "opposition"; +beginchar(hex"57",2x_height#+1.5u#, + 2x_height#-0.7desc_depth#,0.7desc_depth#); +italcorr 1.5x_height#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup rule.nib; autorounded; +lft x6=hround u; x2=x_height+2u-x6; bot y4=-d; y2=-d+.5x_height; +circle_points; +draw_circle; +z5'=1.5[z5,z1]; +for n=1 upto 4: z[n]' = z[n] + z5' - z5; endfor +for n=6 upto 8: z[n]' = z[n] + z5' - z5; endfor +draw z8'{right}...z1'{z2-z8}...z2'{down}...z3'{z4-z2}...z4'{left} + ...z5'{z6-z4}...z6'{up}...z7'{z8-z6}...cycle; +draw z1--z5'; +labels(1',2',3',4',5',6',7',8'); +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "automatic telephone recorder"; +beginchar(hex"06", + 1.13 min(asc_height#,9/7x_height#)+2u#, + min(asc_height#,9/7x_height#),0); +italcorr x_height#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup rule.nib; autorounded; +x4 = good.x .5w; x2-x6=y8-y4; y2=good.y .5h; bot y4=-oo; +circle_points; +z9 = 1.30[z1,z5]; +z10 = 0.70[z1,z5]; +draw_circle; +draw z9--z10; +labels(1,2,3,4,5,6,7,8,9,10,11,12); endchar; + +cmchar "currency"; +beginchar(hex"1B", + 1.13 min(asc_height#,9/7x_height#)+2u#, + min(asc_height#,9/7x_height#),0); +italcorr x_height#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup rule.nib; autorounded; +x4 = good.x .5w; x2-x6=y8-y4; y2=good.y .5h; bot y4=-oo; +circle_points; +z9 = 1.30[z5,z1]; +z10 = 1.30[z7,z3]; +z11 = 1.30[z1,z5]; +z12 = 1.30[z3,z7]; +draw_circle; +draw z1--z9; +draw z3--z10; +draw z5--z11; +draw z7--z12; +labels(1,2,3,4,5,6,7,8,9,10,11,12); endchar; + +cmchar "clock"; +beginchar(hex"1C",asc_height#+2u#,0.95asc_height#,0); +italcorr x_height#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup rule.nib; autorounded; +x8=good.x .5w; x2-x6=y8-y4; y2=good.y .5h; bot y4=0; +circle_points; +draw_circle; +z9 = 0.55[z5,z1]; +z10 = 0.55[z7,z3]; +z11 = 0.55[z1,z5]; +z12 = 0.55[z3,z7]; +z13 = 0.5[z2,z6]; +z14 = 0.25[z2,z6]; +z15 = 0.15[z8,z4]; +filldraw z9..z10..z11..z12..cycle; +draw z14--z13--z15; +labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); endchar; + +cmchar "smiley"; +beginchar(hex"2C",asc_height#+2u#,0.95asc_height#,0); +italcorr x_height#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup rule.nib; autorounded; +x8=good.x .5w; x2-x6=y8-y4; y2=good.y .5h; bot y4=0; +circle_points; +draw_circle; % circle +pickup crisp.nib; +numeric ethickness; +numeric mthickness; +ethickness = min(1.2stem,max(1,round(h/4)-1)); +mthickness = min(stem,max(1,round(h/11))); +z7' = .27[z7,z3]; pos7'(ethickness,45); z17 = z7'; pos17(ethickness,-45); +z1' = .27[z1,z5]; pos1'(ethickness,45); z11 = z1'; pos11(ethickness,-45); +x3' = .23[x3,x7]; +y3' = .28[y3,y7]; pos3'(hair,135); +x5' = .23[x5,x1]; +y5' = .28[y5,y1]; pos5'(hair,45); +z4' = .25[z4,z8]; pos4'(mthickness,90); +filldraw stroke z5'e...z4'e{right}...z3'e; % mouth +filldraw z7'r...z17l...z7'l...z17r...cycle; % eyes +filldraw z1'r...z11l...z1'l...z11r...cycle; +penlabels(1',11,3',4',5',7',17); +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "frowney"; +beginchar(hex"2F",asc_height#+2u#,0.95asc_height#,0); +italcorr x_height#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup rule.nib; autorounded; +x8=good.x .5w; x2-x6=y8-y4; y2=good.y .5h; bot y4=0; +circle_points; +draw_circle; % circle +pickup crisp.nib; +numeric ethickness; +numeric mthickness; +ethickness = min(1.2stem,max(1,round(h/4)-1)); +mthickness = min(stem,max(1,round(h/11))); +z7' = .27[z7,z3]; pos7'(ethickness,45); z17 = z7'; pos17(ethickness,-45); +z1' = .27[z1,z5]; pos1'(ethickness,45); z11 = z1'; pos11(ethickness,-45); +x3' = .25[x3,x7]; +y3' = .15[y3,y7]; pos3'(hair,45); +x5' = .25[x5,x1]; +y5' = .15[y5,y1]; pos5'(hair,135); +z4' = .35[z4,z8]; pos4'(mthickness,90); +filldraw stroke z5'e...z4'e{right}...z3'e; % mouth +filldraw z7'r...z17l...z7'l...z17r...cycle; % eyes +filldraw z1'r...z11l...z1'l...z11r...cycle; +penlabels(1',11,3',4',5',7',17); +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "black smiley"; +beginchar(hex"2D",asc_height#+2u#,0.95asc_height#,0); +italcorr x_height#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup crisp.nib; autorounded; +x8=good.x .5w; x2-x6=y8-y4; y2=good.y .5h; bot y4=0; +circle_points; +numeric ethickness; +numeric mthickness; +ethickness = min(1.2stem,max(1,round(h/4)-1))+1; +mthickness = min(stem,max(1,round(h/11)))+1; +z7' = .27[z7,z3]; pos7'(ethickness,45); z17 = z7'; pos17(ethickness,-45); +z1' = .27[z1,z5]; pos1'(ethickness,45); z11 = z1'; pos11(ethickness,-45); +z3' = .25[z3,z7]; pos3'(1.5hair,135); +z5' = .25[z5,z1]; pos5'(1.5hair,45); +z4' = .25[z4,z8]; pos4'(mthickness,90); +filldraw z8{right}...z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left} + ...z5{z6-z4}...z6{up}...z7{z8-z6}...cycle; +unfilldraw stroke z5'e...z4'e{right}...z3'e; % mouth +unfilldraw z7'r...z17l...z7'l...z17r...cycle; % eyes +unfilldraw z1'r...z11l...z1'l...z11r...cycle; +penlabels(1',11,3',4',5',7',17); +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "varprop"; +beginchar(hex"1D",14u#,x_height#,0); +italcorr x_height#*slant-.5u#; +adjust_fit(if monospace: -u#,-u# else: 0,0 fi); +pickup light_rule.nib; +lft x1 = hround 1.5u; y1 := good.y math_axis; +numeric a; a = round(2.75u); +x2 := good.x .5(w+a); +y2 = y1; +x3 = x4 = x1+a; y3 = y1 + a; y4 = y1 - a; +x5 = x6 = w-x1; y5 = y3; y6 = y4; +draw z5{left}..z2..z4..z1..z3..z2..{right}z6; +labels(1,2,3,4,5,6); endchar; + +cmchar "variant angle"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +compute_spread(5/4x_height#,3/2x_height#); +beginchar(hex"1E",14u#,v_center(spread#'+spread#+rule_thickness#)); +italcorr h#*slant-u#; +adjust_fit(0,0); +lft x10=hround 1.5u-eps; x9=x11=w-x10; +y9-y11=spread; y10=.5[y9,y11]=math_axis; +x4 = x10; x6 = 0.7[x10,x11]; y6 = y10; x6 - x1 = y4 - y1; +pickup rule.nib; autorounded; +circle_points; +draw z5{z6-z4}..z6..{z8-z6}z7; +pickup light_rule.nib; +draw z9--z10--z11; +labels(1,2,3,4,5,6,7,8,9,10,11); endchar; + +cmchar "reverse diameter"; +beginchar(hex"15",1.5556x_height#+2u#,v_center(1.5556x_height#)); +italcorr 1.348x_height#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup rule.nib; autorounded; +numeric diam; diam := max(round(x_height/rule_thickness),1); +diam := round( diam*rule_thickness ); if odd diam: diam := diam + 1; fi +x0=x8=good.x .5w; y8-y4=x2-x6=diam; +y0=y2=good.y math_axis; +circle_points; +z9' = 2.2[z0,z7]; +numeric delta; delta = round(y9'-y8); +lft x9 = x6-delta+eps; +top y9 = y8+delta+eps; +rt x10 = x2+delta+eps; +bot y10 = y4-delta+eps; +draw_circle; +draw z9--z10; +labels(0,1,2,3,4,5,6,7,8,9,10); endchar; + +cmchar "diameter"; +beginchar(hex"1F",1.5556x_height#+2u#,v_center(1.5556x_height#)); +italcorr 1.348x_height#*slant; +adjust_fit(if monospace: u#,u# else: 0,0 fi); +pickup rule.nib; autorounded; +numeric diam; diam := max(round(x_height/rule_thickness),1); +diam := round( diam*rule_thickness ); if odd diam: diam := diam + 1; fi +x0=x8=good.x .5w; y8-y4=x2-x6=diam; +y0=y2=good.y math_axis; +circle_points; +z9' = 2.2[z0,z7]; +numeric delta; delta = round(y9'-y8); +lft x9 = x6-delta+eps; +bot y9 = y4-delta+eps; +rt x10 = x2+delta+eps; +top y10 = y8+delta+eps; +draw_circle; +draw z9--z10; +labels(1,2,3,4,5,6,7,8,9,10); endchar; + +cmchar "rightcycle"; +compute_spread(.45x_height#,.55x_height#); +beginchar(hex"21", + 18u#,asc_height#,desc_depth#); +adjust_fit(if monospace:-2u#,-2u# else: 0,0 fi); +italcorr x_height#*slant; +pickup light_rule.nib; autorounded; +numeric a; a = h + d + 2o - (spread+rule_thickness); +x4 = good.x .5w; x2-x6=a; y8-y4=a; +top y8=asc_height+o-.5(spread+rule_thickness); +circle_points; +y10=y8-eps; rt x10=hround .4[x8,x1]; +draw z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left} + ...z5{z6-z4}...z6{up}...z7{z8-z6}...{right}z8; +pickup crisp.nib; +pos13(bar,0); pos14(bar,0); +y13-y10=y10-y14=.24asc_height+eps; x13=x14=x10-3u-eps; +pos15(bar,angle(z14-z10)); z15l=z10; pos16(bar,angle(z13-z10)); z16l=z10; +z19=.381966[.5[z13,z14],z10]; +numeric t[]; path p[]; +(t1,t2)=(z14l{z19-z14}..z16r) intersectiontimes (z13l{z19-z13}..z15r); +z20=(z14l{z19-z14}..z16r) intersectionpoint (z13l{z19-z13}..z15r); +filldraw z10..{z14-z19}z14r--subpath (0,t1) of (z14l{z19-z14}..z16r) + --z20--subpath (t2,0) of (z13l{z19-z13}..z15r)--z13r{z19-z13}..z10 + & cycle; % arrowhead +penlabels(10,13,14,15,16,19,20); +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "leftcycle"; +compute_spread(.45x_height#,.55x_height#); +beginchar(hex"22", + 18u#,asc_height#,desc_depth#); +adjust_fit(if monospace:-2u#,-2u# else: 0,0 fi); +italcorr x_height#*slant; +pickup light_rule.nib; autorounded; +numeric a; a = h + d + 2o - (spread+rule_thickness); +x4 = good.x .5w; x2-x6=a; y8-y4=a; +top y8=asc_height+o-.5(spread+rule_thickness); +circle_points; +y10=y8-eps; lft x10=hround .4[x8,x7]; +draw z8{right}...z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left} + ...z5{z6-z4}...z6{up}...{z8-z6}z7; +pickup crisp.nib; +pos13(bar,180); pos14(bar,180); +y13-y10=y10-y14=.24asc_height+eps; x13=x14=x10+3u+eps; +pos15(bar,angle(z14-z10)); z15l=z10; pos16(bar,angle(z13-z10)); z16l=z10; +z19=.381966[.5[z13,z14],z10]; +numeric t[]; path p[]; +(t1,t2)=(z14l{z19-z14}..z16r) intersectiontimes (z13l{z19-z13}..z15r); +z20=(z14l{z19-z14}..z16r) intersectionpoint (z13l{z19-z13}..z15r); +filldraw z10..{z14-z19}z14r--subpath (0,t1) of (z14l{z19-z14}..z16r) + --z20--subpath (t2,0) of (z13l{z19-z13}..z15r)--z13r{z19-z13}..z10 + & cycle; % arrowhead +penlabels(10,13,14,15,16,19,20); +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "ocircle same size as operators"; +beginarithchar(hex"23"); pickup light_rule.nib; autorounded; +lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h; +circle_points; draw_circle; % circle +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "pentagon"; +beginarithchar(hex"44"); pickup rule.nib; +x0=good.x .5w; y0=good.y math_axis; +x8=x0; top y8=h; +numeric theta; theta=360/5; % degrees between points +z0=.5[z4,z8]; z9-z0=(z8-z0) rotated theta; +z10-z0=(z9-z0) rotated theta; +z12-z0=(z8-z0) rotated (-theta); +z11-z0=(z12-z0) rotated (-theta); +draw z8--z9--z10--z11--z12--cycle; +labels(0,8,9,10,11,12); endchar; + +cmchar "ostar five-ended star in circle"; +beginarithchar(hex"16"); pickup light_rule.nib; autorounded; +lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h; +circle_points; draw_circle; % circle +numeric theta; theta=360/5; % degrees between points +z0=.5[z4,z8]; z9-z0=(z8-z0) rotated theta; +z10-z0=(z9-z0) rotated theta; +z11-z0=(z8-z0) rotated (-theta); +z12-z0=(z11-z0) rotated (-theta); +draw z0--z8; draw z0--z9; +draw z0--z10; draw z0--z11; +draw z0--z12; +labels(0,1,2,3,4,5,6,7,8,9,10,11,12); endchar; + +cmchar "pentastar"; +beginarithchar(hex"45"); pickup light_rule.nib; autorounded; +top y8=h; x0=x8=good.x .5w; +numeric theta; theta=360/5; % degrees between points +y0=.5h; z9-z0=(z8-z0) rotated theta; +z10-z0=(z9-z0) rotated theta; +z11-z0=(z8-z0) rotated (-theta); +z12-z0=(z11-z0) rotated (-theta); +draw z0--z8; draw z0--z9; +draw z0--z10; draw z0--z11; +draw z0--z12; +labels(0,8,9,10,11,12); endchar; + +cmchar "Filled ocircle"; +beginarithchar(hex"20"); pickup crisp.nib; autorounded; +lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h; +circle_points; +filldraw z8{right}...z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left} + ...z5{z6-z4}...z6{up}...z7{z8-z6}...cycle; +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "Filled left half ocircle"; +beginarithchar(hex"47"); pickup crisp.nib; autorounded; +lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h; +circle_points; +filldraw z8---z4{left}...z5{z6-z4}...z6{up}...z7{z8-z6}...{right}cycle; +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "Filled right half ocircle"; +beginarithchar(hex"48"); pickup crisp.nib; autorounded; +lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h; +circle_points; +filldraw z8---z4{right}...z3{z2-z4}...z2{up}...z1{z8-z2}...{left}cycle; +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "Left half ocircle"; +beginarithchar(hex"49"); pickup light_rule.nib; autorounded; +lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h; +circle_points; +draw z8---z4{left}...z5{z6-z4}...z6{up}...z7{z8-z6}...{right}cycle; +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "Right half ocircle"; +beginarithchar(hex"4A"); pickup light_rule.nib; autorounded; +lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h; +circle_points; +draw z8---z4{right}...z3{z2-z4}...z2{up}...z1{z8-z2}...{left}cycle; +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "Open moon"; +beginarithchar(hex"24"); pickup rule.nib; autorounded; +lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h; +circle_points; +z9=1/3[z6,z2]; +x8:=x8+u; +x4:=x8; +draw z4{(-1,-0.1)}..z5{z6-z4}..z6{up}..z7{z8-z6}..{(1,-0.1)}z8 + & z8..z9{down}..z4; +labels(1,2,3,4,5,6,7,8,9); endchar; + +cmchar "Close moon"; +beginarithchar(hex"25"); pickup rule.nib; autorounded; +lft x2=hround u; x6=w-x2; y2=math_axis; top y8=h; +circle_points; +z9=1/3[z6,z2]; +x8:=x8-u; +x4:=x8; +draw z4{(1,-0.1)}..z5{z6-z4}..z6{up}..z7{z8-z6}..{(-1,-0.1)}z8 + & z8..z9{down}..z4; +labels(1,2,3,4,5,6,7,8,9); endchar; + +cmchar "Jupiter"; +beginchar(hex"58",.7cap_height#+4u#,cap_height#,0); +pickup rule.nib; +lft x1 = hround u; x3-x2=y4-y5; y2=good.y .35h; bot y5=0; +x4=x5=.505[x2,x3]; y2=y3=.5[y4,y5]; +x1=x2-2u; bot y1=top y4; +top y1'=h; x1'=.35[x1,x4]; +draw z1..z1'{right}..{(-1,-2)}z2--z3; +draw z4--z5; +labels(1,2,3,4,5); endchar; + +cmchar "Saturn"; +beginchar(hex"59",10.5u#,cap_height#,desc_depth#); +pickup rule.nib; +lft x1 = hround 2.5u; rt x5 = w-u; x6=x5; x4=.5[x1,x5]; x2=x3=x1; +bot y1=0; top y2=h; y4=x_height; y3=y5=.51x_height; bot y6=-d; +y7=y8=h-2.0u; lft x7=x1-2.0u; rt x8=x1+2.0u; +draw z1--z2; +draw z3{up}...z4{right}..z5{down}..{right}z6; +draw z7--z8; +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "Pluto"; +beginchar(hex"5C",10.5u#,cap_height#,0); +pickup rule.nib; autorounded; +lft x2 = hround u; x3=x5=x2; x1=x4=w-x2; +bot y2 = 0; y1=y2; top y3=h; y5=good.y .45[y2,y3]; y4=.5[y3,y5]; +draw z1--z2--z3{right}...z4...{left}z5; +labels(1,2,3,4,5); endchar; + +cmchar "Ascendent"; +beginchar(hex"13",15u#,v_center(0.9(asc_height#+desc_depth#))); +italcorr 0.8asc_height#*slant; +adjust_fit(0,0); pickup rule.nib; +y1=y3=y8=y10=1/7(h+d)-d; +y4=y9=-d; +y5=y7=0.7(h+d)-d; +y6=h; +y1=.5[y2,y4]; +x3=u; x5=2u; +x10=w-u; x7=w-2u; +x6=.5w; +x10-x8=x1-x3=y2-y4; +x2=x4=.5[x1,x3]; +x9=.5[x8,x10]; +draw z1{up}...z2{left}...z3{down}...z4{right}...z1{up}...z5{up} + ...z6{right}...z7{down}...z8{down}...z9{right}...{up}z10; +labels(1,2,3,4,5,6,7,8,9,10); endchar; + +cmchar "Descendent"; +beginchar(hex"14",15u#,v_center(0.9(asc_height#+desc_depth#))); +italcorr 0.8asc_height#*slant; +adjust_fit(0,0); pickup rule.nib; +y1=y3=y8=y10=6/7(h+d)-d; +y4=y9=h; +y5=y7=0.3(h+d)-d; +y6=-d; +y1=.5[y2,y4]; +x3=u; x5=2u; +x10=w-u; x7=w-2u; +x6=.5w; +x10-x8=x1-x3=y4-y2; +x2=x4=.5[x1,x3]; +x9=.5[x8,x10]; +draw z1{down}...z2{left}...z3{up}...z4{right}...z1{down}...z5{down} + ...z6{right}...z7{up}...z8{up}...z9{right}...{down}z10; +labels(1,2,3,4,5,6,7,8,9,10); endchar; + +cmchar "Square"; +beginchar(hex"32",2.1math_axis#+4u#, + v_center(2.1math_axis#)); +italcorr math_axis#*slant; +adjust_fit(0,0); pickup rule.nib; +numeric a; a=round(2.1math_axis); +if odd a: a := a + 1; fi +x1=x4; x2=x3=x1+a; x5 = .5[x1,x2] = good.x .5w; +y3=y4; y1=y2=y3+a; +y5 = .5[y1,y3] = good.y .5(h-d); +draw z1--z2--z3--z4--cycle; +labels(1,2,3,4,5); endchar; + +cmchar "sharp triangle, delta form"; +beginchar(hex"00",12u#,asc_height#,0); +italcorr asc_height#*slant; +adjust_fit(0,0); pickup rule.nib; +lft x1=hround u; x3=w-x1; x2=.5[x1,x3]; +y1=y3; bot y1=-oo; top y2=h; +draw z1--z2--z3--cycle; +labels(1,2,3,4,5); endchar; + +cmchar "sharp triangle, nabla form"; +beginchar(hex"46",12u#,asc_height#,0); +italcorr asc_height#*slant; +adjust_fit(0,0); pickup rule.nib; +lft x1=hround u; x3=w-x1; x2=.5[x1,x3]; +y1=y3; top y3=h; bot y2=-oo; +draw z1--z2--z3--cycle; +labels(1,2,3,4,5); endchar; + +cmchar "Crossedsquare"; +beginchar(hex"34",2.1math_axis#+4u#, + v_center(2.1math_axis#)); +italcorr math_axis#*slant; +adjust_fit(0,0); pickup rule.nib; +numeric a; a=round(2.1math_axis); +if odd a: a := a + 1; fi +x1=x4; x2=x3=x1+a; x5 = .5[x1,x2] = good.x .5w; +y3=y4; y1=y2=y3+a; +y5 = .5[y1,y3] = good.y .5(h-d); +draw z1--z2--z3--z4--cycle; +draw z1--z3; +draw z2--z4; +labels(1,2,3,4,5); endchar; + +cmchar "Lozenge"; +beginchar(hex"35",2.1math_axis#+4u#, + v_center(2.1math_axis#)); +italcorr math_axis#*slant; +adjust_fit(0,0); pickup rule.nib; +numeric a; a=round(2.1math_axis); +x1=x4; x2=x3=x1+a; .5(x1+x2) = good.x .5w; +y3=y4; y1=y2=y3+a; +y5 = good.y .5(h-d); +z5=.5[z1,z3]; +x13-x5=x5-x11=1/3a; y13=y11=y5; +y12-y5=y5-y14=1/3a; x12=x14=x5; +draw z1...z12...z2 + & z2...z13...z3 + & z3...z14...z4 + & z4...z11...z1 & cycle; +labels(1,2,3,4,5,11,12,13,14); endchar; + +cmchar "Kreuz"; +beginchar(hex"36",2.1math_axis#+4u#, + v_center(2.1math_axis#)); +italcorr math_axis#*slant; +adjust_fit(0,0); pickup crisp.nib; +numeric a; a=round(2.1math_axis)+eps; +numeric outerthickness; outerthickness=round(math_axis); +numeric innerthickness; innerthickness=stem; +x1=x4; x2=x3=x1+a; .5(x1+x2) = good.x .5w; +y3=y4; y1=y2=y3+a; +y5 = good.y .5(h-d); +z5=.5[z1,z3]; +lft x10=x1; x11=x5; rt x12=x2; y10=y11=y12=y5; +pos10(outerthickness,90); +pos11(innerthickness,90); +pos12(outerthickness,90); +filldraw stroke z10e...z11e...z12e; +bot y13=y1; y14=y5; top y15=y4; x13=x14=x15=x5; +pos13(outerthickness,0); +pos14(innerthickness,0); +pos15(outerthickness,0); +filldraw stroke z13e...z14e...z15e; +labels(1,2,3,4,5); +penlabels(10,11,12,13,14,15); endchar; + +cmchar "Very high frequency"; +compute_spread(.45x_height#,.55x_height#); +beginchar(hex"40",14u#,v_center(1.9math_axis#+rule_thickness#)); +adjust_fit(0,0); pickup rule.nib; +numeric a; a=round(.45math_axis); +numeric b; b=round(math_axis+rule_thickness); +if odd b: b := b+1; fi +y11=y13=y15=math_axis; y12-a=y14+a=good.y math_axis; +x11=u; x15=w-u; x13=.5[x11,x15]; x12=.5[x11,x13]; x14=.5[x13,x15]; +path p; p=z12{right}...z13...z14{right}; +pos11(b,90); +pos12(b,90); +pos13(b,90); +pos14(b,90); +pos15(b,90); +draw z11{dir(-angle direction 1 of p)}...z12{right}...z13... + z14{right}...z15{dir(-angle direction 1 of p)}; +draw z11r{dir(-angle direction 1 of p)}...z12r{right}...z13r... + z14r{right}...z15r{dir(-angle direction 1 of p)}; +draw z11l{dir(-angle direction 1 of p)}...z12l{right}...z13l... + z14l{right}...z15l{dir(-angle direction 1 of p)}; +penlabels(11,12,13,14,15); endchar; + +cmchar "APL comment"; +beginchar(hex"7F",9u#,9u#,0); +adjust_fit(0,0); pickup rule.nib; autorounded; +lft x6=hround u; x2=w-x6; top y8=h; bot y4=2u; +circle_points; +y9 = y10 = 0; x9=x2; x10=x6; +draw_circle; % circle +draw z2--z9; draw z6--z10; +labels(1,2,3,4,5,6,7,8,9,10); endchar; + +cmchar "APLleftarrowbox"; +compute_spread(.45x_height#,.55x_height#); +beginchar(hex"70",14u#,7u#+math_axis#,7u#-math_axis#); +italcorr math_axis#*slant-.5u#; +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+rule_thickness=hround(w-1.5u); +lft x0=hround 1.5u; +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; +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); +pickup rule.nib; +y+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height] ++.5dot_size); +lft x11=hround u-eps; x11'=x11; x12=x12'=w-x11; +y11=y12=math_axis-1.8(y-math_axis); +y11'=y12'=math_axis+1.8(y-math_axis); +draw z11--z12--z12'--z11'--cycle; +penlabels(11,12,11',12'); endchar; + +cmchar "APLrightarrowbox"; +compute_spread(.45x_height#,.55x_height#); +beginchar(hex"71",14u#,7u#+math_axis#,7u#-math_axis#); +italcorr math_axis#*slant-.5u#; +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-rule_thickness=hround 1.5u; +rt x0=hround(w-1.5u); +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; +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); +pickup rule.nib; +y+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height] ++.5dot_size); +lft x11=hround u-eps; x11'=x11; x12=x12'=w-x11; +y11=y12=math_axis-1.8(y-math_axis); +y11'=y12'=math_axis+1.8(y-math_axis); +draw z11--z12--z12'--z11'--cycle; +penlabels(11,12,11',12'); endchar; + +cmchar "APLuparrowbox"; +beginchar(hex"6E",14u#,7u#+math_axis#,7u#-math_axis#); +italcorr math_axis#*slant-.5u#; +adjust_fit(0,0); +pickup rule.nib; +y+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height] ++.5dot_size); +lft x11=hround u-eps; x11'=x11; x12=x12'=w-x11; +y11=y12=math_axis-1.8(y-math_axis); +y11'=y12'=math_axis+1.8(y-math_axis); +draw z11--z12--z12'--z11'--cycle; +pickup crisp.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(bar,90); pos4(bar,90); +lft x1l=hround(.5w-.5rule_thickness); bot y1-rule_thickness=y11+.5u; +x0=x1=x2; top y0=y11'-1u; 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; +filldraw 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 +penlabels(0,1,2,3,4,5,6,9); +penlabels(11,12,11',12'); endchar; + +cmchar "APLdownarrowbox"; +beginchar(hex"6F",14u#,7u#+math_axis#,7u#-math_axis#); +italcorr math_axis#*slant-.5u#; +adjust_fit(0,0); +pickup rule.nib; +y+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height] ++.5dot_size); +lft x11=hround u-eps; x11'=x11; x12=x12'=w-x11; +y11=y12=math_axis-1.8(y-math_axis); +y11'=y12'=math_axis+1.8(y-math_axis); +draw z11--z12--z12'--z11'--cycle; +pickup crisp.nib; +pos1(rule_thickness,0); pos2(rule_thickness,0); +pos3(bar,90); pos4(bar,90); +lft x1l=hround(.5w-.5rule_thickness); top y1+rule_thickness=y11'-.5u; +x0=x1=x2; bot y0=y11+1u; 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; +filldraw 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 +penlabels(0,1,2,3,4,5,6,9); +penlabels(11,12,11',12'); endchar; + +cmchar "APL box"; +beginchar(hex"7E",14u#,7u#+math_axis#,7u#-math_axis#); +italcorr math_axis#*slant-.5u#; +adjust_fit(0,0); +pickup rule.nib; +y+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height] ++.5dot_size); +lft x1=hround u-eps; x1'=x1; x2=x2'=w-x1; +y1=y2=math_axis-1.8(y-math_axis); +y1'=y2'=math_axis+1.8(y-math_axis); +draw z1--z2--z2'--z1'--cycle; +penlabels(1,2,1',2'); endchar; + +cmchar "APL input"; +beginchar(hex"7D",14u#,7u#+math_axis#,7u#-math_axis#); +italcorr math_axis#*slant-.5u#; +adjust_fit(0,0); +pickup rule.nib; +y+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height] ++.5dot_size); +rt x2 - lft x1=w-2u; x1'=x1; x2=x2'=w-x1; +y1=y2=math_axis-1.8(y-math_axis); +y3=y4=y1'=y2'=math_axis+1.8(y-math_axis); +y5=.66[y1,y1']; +x5=.5[x1,x2]; +x2-x4 = x3-x1; +x4-x3 = 1.5rule_thickness; +draw z1--z2--z2'--z1'--cycle; +filldraw z3--z4--z5--cycle; +penlabels(1,2,3,4,5,1',2'); endchar; + +cmchar "Hexagon"; +beginchar(hex"37",2.43math_axis#+2u#, + v_center(2.1math_axis#)); +italcorr math_axis#*slant; +adjust_fit(0,0); pickup rule.nib; +numeric a; a=2.1math_axis/sqrt 3; +x4=x1+2a; x3=x2+a; x2=x6; x3=x5; .5[x2,x3] = .5[x1,x4] = good.x .5w; +y1 = y4 = .5[y2,y6] = good.y .5(h-d); +y2=y3; y5=y6; y6-y2=2.1math_axis; +draw z1--z2--z3--z4--z5--z6--cycle; +labels(1,2,3,4,5,6); endchar; + +cmchar "Hexagon B"; +beginchar(hex"39",2.1math_axis#+2u#, + v_center(2.43math_axis#)); +italcorr math_axis#*slant; +adjust_fit(0,0); pickup rule.nib; +numeric a; a=2.1math_axis/sqrt 3; +y4=y1+2a; y3=y2+a; y2=y6; y3=y5; .5[y2,y3] = .5[y1,y4] = good.y .5(h-d); +x1 = x4 = .5[x2,x6] = good.x .5w; +x2=x3; x5=x6; x6-x2=2.1math_axis; +draw z1--z2--z3--z4--z5--z6--cycle; +labels(1,2,3,4,5,6); endchar; + +cmchar "Hexastar"; +beginchar(hex"41",2.65math_axis#+2u#, + v_center(2.3math_axis#)); +italcorr math_axis#*slant; +adjust_fit(0,0); pickup light_rule.nib; +numeric a; a=2.3math_axis/sqrt 3; +x4=x1+2a; x3=x2+a; x2=x6; x3=x5; .5[x2,x3] = .5[x1,x4] = good.x .5w; +y1 = y4 = .5[y2,y6] = good.y .5(h-d); +y2=y3; y5=y6; y6-y2=2.3math_axis; +draw z1--z4; draw z2--z5; draw z3--z6; +labels(1,2,3,4,5,6); endchar; + +cmchar "Hexastar B"; +beginchar(hex"42",2.3math_axis#+2u#, + v_center(2.65math_axis#)); +italcorr math_axis#*slant; +adjust_fit(0,0); pickup light_rule.nib; +numeric a; a=2.3math_axis/sqrt 3; +y4=y1+2a; y3=y2+a; y2=y6; y3=y5; .5[y2,y3] = .5[y1,y4] = good.y .5(h-d); +x1 = x4 = .5[x2,x6] = good.x .5w; +x2=x3; x5=x6; x6-x2=2.3math_axis; +draw z1--z4; draw z2--z5; draw z3--z6; +labels(1,2,3,4,5,6); endchar; + +cmchar "Davids star"; +beginchar(hex"43",2.3math_axis#+2u#, + v_center(2.65math_axis#)); +italcorr math_axis#*slant; +adjust_fit(0,0); pickup light_rule.nib; +numeric a; a=2.3math_axis/sqrt 3; +y4=y1+2a; y3=y2+a; y2=y6; y3=y5; .5[y2,y3] = .5[y1,y4] = good.y .5(h-d); +x1 = x4 = .5[x2,x6] = good.x .5w; +x2=x3; x5=x6; x6-x2=2.3math_axis; +draw z1--z3--z5--cycle; draw z2--z4--z6--cycle; +labels(1,2,3,4,5,6); endchar; + +cmchar "Approximate less than sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +compute_spread(5/4x_height#,3/2x_height#); +beginchar(hex"3E",14u#,v_center(spread#+1.2spread#'+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]=good.y h-.5(spread+rule_thickness); +draw z1--z2--z3; % diagonals +pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness; +if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline +x1'=x2; x2'=4u; x3'=w-x2'; x4'=w-x1'; +bot y1'=bot y3'=-d; top y2'=top y4'=.8spread'-d; +draw z1'{up}...z2'{right}..{right}z3'...{up}z4'; % stroke +labels(1,2,3,1',2',3',4'); endchar; + +cmchar "Approximate greater than sign"; +compute_spread(.45x_height#,.55x_height#); +spread#':=spread#; spread':=spread; % the spread of `$=$' +compute_spread(5/4x_height#,3/2x_height#); +beginchar(hex"3F",14u#,v_center(spread#+1.2spread#'+rule_thickness#)); +italcorr h#*slant-u#; +adjust_fit(0,0); pickup rule.nib; +lft x1=hround 1.5u-eps; x1=x3; x2=w-x1; +y1-y3=spread; y2=.5[y1,y3]=good.y h-.5(spread+rule_thickness); +draw z1--z2--z3; % diagonals +pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness; +if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline +x1'=x1; x2'=4u; x3'=w-x2'; x4'=w-x1'; +bot y1'=bot y3'=-d; top y2'=top y4'=.8spread'-d; +draw z1'{up}...z2'{right}..{right}z3'...{up}z4'; % stroke +labels(1,2,3,1',2',3',4'); endchar; + +cmchar "double bar"; +beginchar(hex"7C",2u#,asc_height#,0); +italcorr asc_height#*slant - u#; +adjust_fit(0,0); pickup rule.nib; +bot y1 = good.y oo; top y2 = good.y (h-oo); +top y1' + 1.5u = bot y2'; .5[y1',y2'] = .5h; +x1=x1'=x2=x2'=good.x .5w; +draw z1--z1'; draw z2--z2'; +labels(1,2,1',2'); endchar; + +cmchar "octagon"; +beginchar(hex"38", + 18u#,asc_height#,desc_depth#); +pickup light_rule.nib; +y1=y8; x2=x3; y4=y5; x6=x7; y2=y7; y3=y6; x8=x5; x1=x4; +.5[y2,y3]=.5[y1,y4]=good.y .5(h-d); +.5[x1,x8]=.5[x2,x7]=good.x .5w; +x1-x8 = y3-y2 = sqrt2*(x2-x1) = (h+d)/2.62; +y4-y1=x2-x7; +draw (z1--z2--z3--z4--z5--z6--z7--z8--cycle); +labels(1,2,3,4,5,6,7,8); endchar; + +cmchar "Gluon element"; +beginchar(hex"50",6u#,v_center(1.4x_height#)); +adjust_fit(0,0); pickup rule.nib; +y1=y5=h; y3=-d; y3'=0.8[y3,y1]; +x1=0; x5=w; x3=x3'=.5w; +y2=y4=0.35[y3,y3']; +x2-x3=x3-x4=0.33w; +draw z1{right}...z3'...z2{down}...z3{left}...z4{up}...z3'...{right}z5; +labels(1,2,3,3',4,5); endchar; + +cmchar "Gluon begin element"; +beginchar(hex"51",6u#,v_center(1.4x_height#)); +adjust_fit(0,0); pickup rule.nib; +y1=good.y math_axis; y2=h; +x1=0; x2=w; +draw z1{(1,2)}...{right}z2; +labels(1,2); endchar; + +cmchar "Gluon end element"; +beginchar(hex"52",6u#,v_center(1.4x_height#)); +adjust_fit(0,0); pickup rule.nib; +y2=good.y math_axis; y1=h; +x1=0; x2=w; +draw z1{right}...{(1,-2)}z2; +labels(1,2); endchar; + +cmchar "Telephone"; +beginchar(hex"07",1.5asc_height#,asc_height#,0); +adjust_fit(0,0); pickup crisp.nib; autorounded; +numeric uu; uu = 1/20 asc_height; +bot y1 = 0; y2 = 3uu; y3 = 13uu; y4=y2; y5=y1; y0 = good.y 9uu; +lft x1 = hround (4uu+eps); x2 = x1; x4 = x5 = w-x1; x0 = x3 = .5 w; +y6 = y8 = y0 = .5[y9,y7]; x7 = x9 = x0 = .5[x8,x6]; +y7-y9 = 8uu; x6-x8 = 9uu; +y6' = y8' = y0 = .5[y9',y7']; x7' = x9' = x0 = .5[x8',x6']; +y7'-y9' = 10.5uu+0.5+eps; x6'-x8' = 11.5uu+0.5+eps; +y10 = y15 = 10uu; y11 = y12 = y14 = y17 = y10+2uu; +y13 = y16 = y18 = y20 = y10+5uu; y21 = y10+5uu+eps; y19 = y10+8uu+eps; +x19=x21=x0; x20=hround(uu+eps); x18 = w-x20; +x12=hround(uu+eps); x17 = w-x12; x10= 2uu+eps; x15 = w-x10; +x11=x10+6uu; x13=x12+6uu; x14=x15-6uu; x16=x17-6uu; +filldraw z1---z2...z3...z4---z5--cycle; % body +erase filldraw z6'...z7'...z8'...z9'...cycle; % space for dial +filldraw z6...z7...z8...z9...cycle; % dial +filldraw z10--z11--z13--z12--cycle; +filldraw z14--z15--z17--z16--cycle; +filldraw z20{(3,1)}...z19{right}...{(3,-1)}z18--z17{(-3,1)}... + z21{left}...{(-3,-1)}z12--cycle; +labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); +labels(6',7',8',9'); endchar; + + +cmchar "\textstyle integral sign"; +beginchar(hex"72",11u#,0,100/54dh#); +italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit +adjust_fit(0,-ic#); pickup fine.nib; +pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(curve,180); +pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(curve,0); +pos7(vair,-90); pos8(hair,-180); pos9(curve,-180); +rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u; +x5=x4=x6; lft x5r=hround(.5w-.5curve); +top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve); +y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7); +bulb(3,2,1); bulb(7,8,9); % bulbs +filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper curve +filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1 + ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower curve +penlabels(1,2,3,4,5,6,7,8,9); endchar; + +cmchar "\textstyle loop-integral sign"; +beginchar(hex"75",13u#,0,100/54dh#); +italcorr 0; % \TeX\ kerning between upper limit and lower limit +adjust_fit(0,-ic#); pickup fine.nib; +pos11(curve,0); pos12(hair,0); pos13(vair,90); pos14(curve,180); +pos15(curve,180); pos15'(curve,0); z15'=z15; pos16(curve,0); +pos17(vair,-90); pos18(hair,-180); pos19(curve,-180); +rt x11r=hround(w-2u); x19=w-x11; x17=w-x13=4u; +x15=x14=x16; lft x15r=hround(.5w-.5curve); +top y13r=0; bot y17r=-d; y19-.5curve=vround(top y17l+.25curve); +y13-y11=y19-y17; y15=.5[y13,y17]=.5[y14,y16]; y14-y16=.6(y13-y17); +bulb(13,12,11); bulb(17,18,19); % bulbs +filldraw stroke z13e{left}...z14e{(z15e-z14e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z15-z14}z15e; % upper curve +filldraw stroke z15'e{z16-z15}..tension atleast.8 and atleast 1 + ..{(z16e-z15'e)xscaled 1.1}z16e...{left}z17e; % lower curve +pickup light_rule.nib; +x4 = x15; y8-y4=x2-x6=.8(y14-y16); y2=y15; +circle_points; +draw_circle; +labels(1,2,3,4,5,6,7,8); +penlabels(11,12,13,14,15,16,17,18,19); endchar; + +cmchar "\textstyle two-dimensional integral sign"; +beginchar(hex"73",17u#,0,100/54dh#); +italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit +adjust_fit(0,-ic#); pickup fine.nib; +pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(curve,180); +pos11(curve,0); pos12(hair,0); pos13(vair,90); pos14(curve,180); %2 +pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(curve,0); +pos15(curve,180); pos15'(curve,0); z15'=z15; pos16(curve,0); %2 +pos7(vair,-90); pos8(hair,-180); pos9(curve,-180); +pos17(vair,-90); pos18(hair,-180); pos19(curve,-180); %2 +numeric ww; ww = 2/3w-2/3u; +numeric xx; xx = 1/3w+2/3u; +rt x1r=hround(ww-u); x9=ww-x1; x7=ww-x3=3u; +rt x11r=hround(w-u); x19=w-x1; x17=w-x3; w-x13=3u; %2 +x5=x4=x6; lft x5r=hround(.5ww-.5curve); +x15=x14=x16; lft x15r=hround(.5[xx,w]-.5curve); %2 +top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve); +y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7); +y11=y1; y13=y3; y14=y4; y15=y5; y16=y6; y17=y7; y19=y9; %2 +bulb(3,2,1); bulb(7,8,9); % bulbs +bulb(13,12,11); bulb(17,18,19); %2 bulbs +filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper curve +filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1 + ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower curve +filldraw stroke z13e{left}...z14e{(z15e-z14e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z15-z14}z15e; % upper curve +filldraw stroke z15'e{z16-z15}..tension atleast.8 and atleast 1 + ..{(z16e-z15'e)xscaled 1.1}z16e...{left}z17e; % lower curve +pickup light_rule.nib; +penlabels(1,2,3,4,5,6,7,8,9); +penlabels(11,12,13,14,15,16,17,18,19); endchar; + +cmchar "\textstyle two-dimensional surface-integral sign"; +beginchar(hex"76",17u#,0,100/54dh#); +italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit +adjust_fit(0,-ic#); pickup fine.nib; +pos21(curve,0); pos22(hair,0); pos23(vair,90); pos24(curve,180); +pos11(curve,0); pos12(hair,0); pos13(vair,90); pos14(curve,180); %2 +pos25(curve,180); pos25'(curve,0); z25'=z25; pos26(curve,0); +pos15(curve,180); pos15'(curve,0); z15'=z15; pos16(curve,0); %2 +pos27(vair,-90); pos28(hair,-180); pos29(curve,-180); +pos17(vair,-90); pos18(hair,-180); pos19(curve,-180); %2 +numeric ww; ww = 2/3w-2/3u; +numeric xx; xx = 1/3w+2/3u; +rt x21r=hround(ww-u); x29=ww-x21; x27=ww-x23=3u; +rt x11r=hround(w-u); x19=w-x21; x17=w-x23; w-x13=3u; %2 +x25=x24=x26; lft x25r=hround(.5ww-.5curve); +x15=x14=x16; lft x15r=hround(.5[xx,w]-.5curve); %2 +top y23r=0; bot y27r=-d; y29-.5curve=vround(top y27l+.25curve); +y23-y21=y29-y27; y25=.5[y23,y27]=.5[y24,y26]; y24-y26=.6(y23-y27); +y11=y21; y13=y23; y14=y24; y15=y25; y16=y26; y17=y27; y19=y29; %2 +bulb(23,22,21); bulb(27,28,29); % bulbs +bulb(13,12,11); bulb(17,18,19); %2 bulbs +filldraw stroke z23e{left}...z24e{(z25e-z24e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z25-z24}z25e; % upper curve +filldraw stroke z25'e{z26-z25}..tension atleast.8 and atleast 1 + ..{(z26e-z25'e)xscaled 1.1}z26e...{left}z27e; % lower curve +filldraw stroke z13e{left}...z14e{(z15e-z14e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z15-z14}z15e; % upper curve +filldraw stroke z15'e{z16-z15}..tension atleast.8 and atleast 1 + ..{(z16e-z15'e)xscaled 1.1}z16e...{left}z17e; % lower curve +pickup light_rule.nib; +x4 = x25+.75u; y8-y4=x2-x6=.8(y14-y16); y2=y15; +circle_points; +x4' = x8' = x15-.75u; +x1' := x1 + (x4'-x4); x2' := x2 + (x4'-x4); x3' := x3 + (x4'-x4); +y1'=y1; y2'=y2; y3'=y3; y4'=y4; y8'=y8; +draw z8---z8'...z1'...z2'...z3'...z4'---z4...z5...z6...z7...cycle; +labels(1',2',3',4',4,5,6,7,8,8'); +penlabels(11,12,13,14,15,16,17,18,19); +penlabels(21,22,23,24,25,26,27,28,29); endchar; + +cmchar "\textstyle three-dimensional integral sign"; +beginchar(hex"74",23u#,0,100/54dh#); +italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit +adjust_fit(0,-ic#); pickup fine.nib; +pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(curve,180); +pos11(curve,0); pos12(hair,0); pos13(vair,90); pos14(curve,180); %2 +pos21(curve,0); pos22(hair,0); pos23(vair,90); pos24(curve,180); %3 +pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(curve,0); +pos15(curve,180); pos15'(curve,0); z15'=z15; pos16(curve,0); %2 +pos25(curve,180); pos25'(curve,0); z25'=z25; pos26(curve,0); %3 +pos7(vair,-90); pos8(hair,-180); pos9(curve,-180); +pos17(vair,-90); pos18(hair,-180); pos19(curve,-180); %2 +pos27(vair,-90); pos28(hair,-180); pos29(curve,-180); %3 +numeric ww; ww = 1/2w-u; +numeric xx; xx = 1/4w+.5u; +numeric www; www = 3/4w-.5u; +numeric xxx; xxx = 1/2w+u; +rt x1r=hround(ww-u); x9=ww-x1; x7=ww-x3=3u; +rt x11r=hround(www-u); x19=www-x1; x17=www-x3; www-x13=3u; %2 +rt x21r=hround(w-u); x29=w-x1; x27=w-x3; w-x23=3u; %3 +x5=x4=x6; lft x5r=hround(.5ww-.5curve); +x15=x14=x16; lft x15r=hround(.5[xx,www]-.5curve); %2 +x25=x24=x26; lft x25r=hround(.5[xxx,w]-.5curve); %3 +top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve); +y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7); +y11=y1; y13=y3; y14=y4; y15=y5; y16=y6; y17=y7; y19=y9; %2 +y21=y1; y23=y3; y24=y4; y25=y5; y26=y6; y27=y7; y29=y9; %3 +bulb(3,2,1); bulb(7,8,9); % bulbs +bulb(13,12,11); bulb(17,18,19); %2 bulbs +bulb(23,22,21); bulb(27,28,29); %3 bulbs +filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper curve +filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1 + ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower curve +filldraw stroke z13e{left}...z14e{(z15e-z14e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z15-z14}z15e; % upper curve +filldraw stroke z15'e{z16-z15}..tension atleast.8 and atleast 1 + ..{(z16e-z15'e)xscaled 1.1}z16e...{left}z17e; % lower curve +filldraw stroke z23e{left}...z24e{(z25e-z24e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z25-z24}z25e; % upper curve +filldraw stroke z25'e{z26-z25}..tension atleast.8 and atleast 1 + ..{(z26e-z25'e)xscaled 1.1}z26e...{left}z27e; % lower curve +penlabels(1,2,3,4,5,6,7,8,9); +penlabels(11,12,13,14,15,16,17,18,19); +penlabels(21,22,23,24,25,26,27,28,29); endchar; + +cmchar "\displaystyle integral sign"; +beginchar(hex"77",14u#,0,150/54dh#); +italcorr 4u#; % \TeX\ kerning between upper limit and lower limit +adjust_fit(0,-ic#); pickup fine.nib; +numeric bulb_size, max_size; +bulb_size=hround(bold+dw); max_size=bold+dw; +pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(max_size,180); +pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(max_size,0); +pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180); +rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u; +x5=x4=x6; lft x5r=hround(.5w-.5curve); +top y3r=0; bot y7r=-d; +y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7; +y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7); +bulb(3,2,1); bulb(7,8,9); % bulbs +filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper curve +filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1 + ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower curve +penlabels(1,2,3,4,5,6,7,8,9); endchar; + +cmchar "\displaystyle loop-integral sign"; +beginchar(hex"7A",14u#,0,150/54dh#); +italcorr 4u#; % \TeX\ kerning between upper limit and lower limit +adjust_fit(0,-ic#); pickup fine.nib; +numeric bulb_size, max_size; +bulb_size=hround(bold+dw); max_size=bold+dw; +pos11(bulb_size,0); pos12(hair,0); pos13(vair,90); pos14(max_size,180); +pos15(max_size,180); pos15'(max_size,0); z15'=z15; pos16(max_size,0); +pos17(vair,-90); pos18(hair,-180); pos19(bulb_size,-180); +rt x11r=hround(w-u); x19=w-x11; x17=w-x13=3u; +x15=x14=x16; lft x15r=hround(.5w-.5curve); +top y13r=0; bot y17r=-d; +y19-.5bulb_size=vround(top y17l+.25bulb_size); y13-y11=y19-y17; +y15=.5[y13,y17]=.5[y14,y16]; y14-y16=.6(y13-y17); +bulb(13,12,11); bulb(17,18,19); % bulbs +filldraw stroke z13e{left}...z14e{(z15e-z14e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z15-z14}z15e; % upper curve +filldraw stroke z15'e{z16-z15}..tension atleast.8 and atleast 1 + ..{(z16e-z15'e)xscaled 1.1}z16e...{left}z17e; % lower curve +pickup light_rule.nib; +x4 = x15; y8-y4=x2-x6=.76(y14-y16); y2=y15; +circle_points; +draw_circle; +labels(1,2,3,4,5,6,7,8); +penlabels(11,12,13,14,15,16,17,18,19); endchar; + +cmchar "\displaystyle two-dimensional integral sign"; +beginchar(hex"78",23u#,0,150/54dh#); +italcorr 4u#; % \TeX\ kerning between upper limit and lower limit +adjust_fit(0,-ic#); pickup fine.nib; +numeric bulb_size, max_size; +bulb_size=hround(bold+dw); max_size=bold+dw; +pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(max_size,180); +pos11(bulb_size,0); pos12(hair,0); pos13(vair,90); pos14(max_size,180); %2 +pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(max_size,0); +pos15(max_size,180); pos15'(max_size,0); z15'=z15; pos16(max_size,0); %2 +pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180); +pos17(vair,-90); pos18(hair,-180); pos19(bulb_size,-180); %2 +numeric ww; ww = 2/3w-4/3u; +numeric xx; xx = 1/3w+4/3u; +rt x1r=hround(ww-u); x9=ww-x1; x7=ww-x3=3u; +rt x11r=hround(w-u); x19=w-x1; x17=w-x3; w-x13=3u; %2 +x5=x4=x6; lft x5r=hround(.5ww-.5curve); +x15=x14=x16; lft x15r=hround(.5[xx,w]-.5curve); %2 +top y3r=0; bot y7r=-d; +y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7; +y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7); +y11=y1; y13=y3; y14=y4; y15=y5; y16=y6; y17=y7; y19=y9; %2 +bulb(3,2,1); bulb(7,8,9); % bulbs +bulb(13,12,11); bulb(17,18,19); %2 bulbs +filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper curve +filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1 + ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower curve +filldraw stroke z13e{left}...z14e{(z15e-z14e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z15-z14}z15e; % upper curve +filldraw stroke z15'e{z16-z15}..tension atleast.8 and atleast 1 + ..{(z16e-z15'e)xscaled 1.1}z16e...{left}z17e; % lower curve +penlabels(1,2,3,4,5,6,7,8,9); +penlabels(11,12,13,14,15,16,17,18,19); endchar; + +cmchar "\displaystyle two-dimensional surface-integral sign"; +beginchar(hex"7B",23u#,0,150/54dh#); +italcorr 4u#; % \TeX\ kerning between upper limit and lower limit +adjust_fit(0,-ic#); pickup fine.nib; +numeric bulb_size, max_size; +bulb_size=hround(bold+dw); max_size=bold+dw; +pos21(bulb_size,0); pos22(hair,0); pos23(vair,90); pos24(max_size,180); +pos11(bulb_size,0); pos12(hair,0); pos13(vair,90); pos14(max_size,180); %2 +pos25(max_size,180); pos25'(max_size,0); z25'=z25; pos26(max_size,0); +pos15(max_size,180); pos15'(max_size,0); z15'=z15; pos16(max_size,0); %2 +pos27(vair,-90); pos28(hair,-180); pos29(bulb_size,-180); +pos17(vair,-90); pos18(hair,-180); pos19(bulb_size,-180); %2 +numeric ww; ww = 2/3w-4/3u; +numeric xx; xx = 1/3w+4/3u; +rt x21r=hround(ww-u); x29=ww-x21; x27=ww-x23=3u; +rt x11r=hround(w-u); x19=w-x21; x17=w-x23; w-x13=3u; %2 +x25=x24=x26; lft x25r=hround(.5ww-.5curve); +x15=x14=x16; lft x15r=hround(.5[xx,w]-.5curve); %2 +top y23r=0; bot y27r=-d; +y29-.5bulb_size=vround(top y27l+.25bulb_size); y23-y21=y29-y27; +y25=.5[y23,y27]=.5[y24,y26]; y24-y26=.6(y23-y27); +y11=y21; y13=y23; y14=y24; y15=y25; y16=y26; y17=y27; y19=y29; %2 +bulb(23,22,21); bulb(27,28,29); % bulbs +bulb(13,12,11); bulb(17,18,19); %2 bulbs +filldraw stroke z23e{left}...z24e{(z25e-z24e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z25-z24}z25e; % upper curve +filldraw stroke z25'e{z26-z25}..tension atleast.8 and atleast 1 + ..{(z26e-z25'e)xscaled 1.1}z26e...{left}z27e; % lower curve +filldraw stroke z13e{left}...z14e{(z15e-z14e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z15-z14}z15e; % upper curve +filldraw stroke z15'e{z16-z15}..tension atleast.8 and atleast 1 + ..{(z16e-z15'e)xscaled 1.1}z16e...{left}z17e; % lower curve +pickup light_rule.nib; +x4 = x25+2u; y8-y4=x2-x6=.76(y14-y16); y2=y15; +circle_points; +x4' = x8' = x15-2u; +x1' := x1 + (x4'-x4); x2' := x2 + (x4'-x4); x3' := x3 + (x4'-x4); +y1'=y1; y2'=y2; y3'=y3; y4'=y4; y8'=y8; +draw z8---z8'...z1'...z2'...z3'...z4'---z4...z5...z6...z7...cycle; +labels(1',2',3',4',4,5,6,7,8,8'); +penlabels(21,22,23,24,25,26,27,28,29); +penlabels(11,12,13,14,15,16,17,18,19); endchar; + +cmchar "\displaystyle three-dimensional integral sign"; +beginchar(hex"79",32u#,0,150/54dh#); +italcorr 4u#; % \TeX\ kerning between upper limit and lower limit +adjust_fit(0,-ic#); pickup fine.nib; +numeric bulb_size, max_size; +bulb_size=hround(bold+dw); max_size=bold+dw; +pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(max_size,180); +pos11(bulb_size,0); pos12(hair,0); pos13(vair,90); pos14(max_size,180); %2 +pos21(bulb_size,0); pos22(hair,0); pos23(vair,90); pos24(max_size,180); %3 +pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(max_size,0); +pos15(max_size,180); pos15'(max_size,0); z15'=z15; pos16(max_size,0); %2 +pos25(max_size,180); pos25'(max_size,0); z25'=z25; pos26(max_size,0); %3 +pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180); +pos17(vair,-90); pos18(hair,-180); pos19(bulb_size,-180); %2 +pos27(vair,-90); pos28(hair,-180); pos29(bulb_size,-180); %3 +numeric ww; ww = 1/2w-2u; +numeric xx; xx = 1/4w+u; +numeric www; www = 3/4w-u; +numeric xxx; xxx = 1/2w+2u; +rt x1r=hround(ww-u); x9=ww-x1; x7=ww-x3=3u; +rt x11r=hround(www-u); x19=www-x1; x17=www-x3; www-x13=3u; %2 +rt x21r=hround(w-u); x29=w-x1; x27=w-x3; w-x23=3u; %3 +x5=x4=x6; lft x5r=hround(.5ww-.5curve); +x15=x14=x16; lft x15r=hround(.5[xx,www]-.5curve); %2 +x25=x24=x26; lft x25r=hround(.5[xxx,w]-.5curve); %3 +top y3r=0; bot y7r=-d; +y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7; +y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7); +y11=y1; y13=y3; y14=y4; y15=y5; y16=y6; y17=y7; y19=y9; %2 +y21=y1; y23=y3; y24=y4; y25=y5; y26=y6; y27=y7; y29=y9; %3 +bulb(3,2,1); bulb(7,8,9); % bulbs +bulb(13,12,11); bulb(17,18,19); %2 bulbs +bulb(23,22,21); bulb(27,28,29); %3 bulbs +filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper curve +filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1 + ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower curve +filldraw stroke z13e{left}...z14e{(z15e-z14e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z15-z14}z15e; % upper curve +filldraw stroke z15'e{z16-z15}..tension atleast.8 and atleast 1 + ..{(z16e-z15'e)xscaled 1.1}z16e...{left}z17e; % lower curve +filldraw stroke z23e{left}...z24e{(z25e-z24e)xscaled 1.1} + ..tension atleast 1 and atleast .8..{z25-z24}z25e; % upper curve +filldraw stroke z25'e{z26-z25}..tension atleast.8 and atleast 1 + ..{(z26e-z25'e)xscaled 1.1}z26e...{left}z27e; % lower curve +penlabels(1,2,3,4,5,6,7,8,9); +penlabels(11,12,13,14,15,16,17,18,19); +penlabels(21,22,23,24,25,26,27,28,29); endchar; + +cmchar "ataribox (Alternate)"; +beginchar(hex"6D",33/45asc_height#,asc_height#,0); +italcorr asc_height#*slant; + pickup pencircle scaled .15w; + x1=0.05w; y1=0; + x2=x1; y2=h; + x3=0.95w; y3=y2; + x4=x3; y4=y1; + fill z1--z2--z3--z4--cycle; + x5=x1; y5=.5h; + x6=.5w; y6=h; + x7=x3; y7=y5; + x8=x6; y8=0; + undraw z5--z6--z7--z8--cycle; + penlabels(1,2,3,4,5,6,7,8); +endchar; + +cmchar "apple cmd"; +beginchar(hex"53",asc_height#,0.92asc_height#,0); +italcorr 3/4asc_height#*slant; +adjust_fit(0,0); pickup rule.nib; +x1 = good.x .5w; +y1 = good.y .5h; +numeric a; a = 1/7h; +x2=x17=x1-a; x9=x10=x1+a; lft x4=lft x15=x1-1/2h; rt x7=rt x12=x1+1/2h; +x3=x5=x14=x16=.5[x2,x4]; +x6=x8=x11=x13=.5[x9,x7]; +y13=y14=y1-a; y5=y6=y1+a; bot y11=bot y16=y1-1/2h; top y3=top y8=y1+1/2h; +y2=y4=y7=y9=.5[y3,y5]; +y10=y12=y15=y17=.5[y14,y16]; +draw z2..z3..z4..z5---z6..z7..z8..z9---z10..z11..z12..z13---z14..z15..z16..z17---z2; +labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17); +endchar; + +charlist hex"72": hex"77"; % integral signs +charlist hex"73": hex"78"; % iintegral signs +charlist hex"74": hex"79"; % iiintegral signs +charlist hex"75": hex"7A"; % ointegral signs +charlist hex"76": hex"7B"; % oiintegral signs + +input wasychr diff --git a/fonts/wasy/tfm/wasy10.tfm b/fonts/wasy/tfm/wasy10.tfm Binary files differnew file mode 100644 index 0000000000..89820cf9af --- /dev/null +++ b/fonts/wasy/tfm/wasy10.tfm diff --git a/fonts/wasy/tfm/wasy5.tfm b/fonts/wasy/tfm/wasy5.tfm Binary files differnew file mode 100644 index 0000000000..2c1f9cde56 --- /dev/null +++ b/fonts/wasy/tfm/wasy5.tfm diff --git a/fonts/wasy/tfm/wasy6.tfm b/fonts/wasy/tfm/wasy6.tfm Binary files differnew file mode 100644 index 0000000000..bd1b79c540 --- /dev/null +++ b/fonts/wasy/tfm/wasy6.tfm diff --git a/fonts/wasy/tfm/wasy7.tfm b/fonts/wasy/tfm/wasy7.tfm Binary files differnew file mode 100644 index 0000000000..1a58e87f36 --- /dev/null +++ b/fonts/wasy/tfm/wasy7.tfm diff --git a/fonts/wasy/tfm/wasy8.tfm b/fonts/wasy/tfm/wasy8.tfm Binary files differnew file mode 100644 index 0000000000..8e02d16d9f --- /dev/null +++ b/fonts/wasy/tfm/wasy8.tfm diff --git a/fonts/wasy/tfm/wasy9.tfm b/fonts/wasy/tfm/wasy9.tfm Binary files differnew file mode 100644 index 0000000000..999e43bfb0 --- /dev/null +++ b/fonts/wasy/tfm/wasy9.tfm diff --git a/fonts/wasy/tfm/wasyb10.tfm b/fonts/wasy/tfm/wasyb10.tfm Binary files differnew file mode 100644 index 0000000000..d4532c118b --- /dev/null +++ b/fonts/wasy/tfm/wasyb10.tfm diff --git a/fonts/wasy/tfm/wasysl10.tfm b/fonts/wasy/tfm/wasysl10.tfm Binary files differnew file mode 100644 index 0000000000..e6a86dd32d --- /dev/null +++ b/fonts/wasy/tfm/wasysl10.tfm diff --git a/fonts/wasy/wasy10.mf b/fonts/wasy/wasy10.mf new file mode 100644 index 0000000000..cc5671448d --- /dev/null +++ b/fonts/wasy/wasy10.mf @@ -0,0 +1,100 @@ +% This is WASY10.MF in text format +% additional symbols for math, physics, astronomy and other fields + +%input modes; +%mode=hp_laser; + +if unknown cmbase: input cmbase fi + +font_identifier:="WASY"; font_size 10pt#; + +u#:=20/36pt#; % unit width +width_adj#:=0pt#; % width adjustment for certain characters +serif_fit#:=0pt#; % extra sidebar near lowercase serifs +cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +letter_fit#:=0pt#; % extra space added to all sidebars + +body_height#:=270/36pt#; % height of tallest characters +asc_height#:=250/36pt#; % height of lowercase ascenders +cap_height#:=246/36pt#; % height of caps +fig_height#:=232/36pt#; % height of numerals +x_height#:=155/36pt#; % height of lowercase without ascenders +math_axis#:=90/36pt#; % axis of symmetry for math symbols +bar_height#:=87/36pt#; % height of crossbar in lowercase e +comma_depth#:=70/36pt#; % depth of comma below baseline +desc_depth#:=70/36pt#; % depth of lowercase descenders + +crisp#:=0pt#; % diameter of serif corners +tiny#:=8/36pt#; % diameter of rounded corners +fine#:=7/36pt#; % diameter of sharply rounded corners +thin_join#:=7/36pt#; % width of extrafine details +hair#:=9/36pt#; % lowercase hairline breadth +stem#:=25/36pt#; % lowercase stem breadth +curve#:=30/36pt#; % lowercase curve breadth +ess#:=27/36pt#; % breadth in middle of lowercase s +flare#:=33/36pt#; % diameter of bulbs or breadth of terminals +dot_size#:=38/36pt#; % diameter of dots +cap_hair#:=11/36pt#; % uppercase hairline breadth +cap_stem#:=32/36pt#; % uppercase stem breadth +cap_curve#:=37/36pt#; % uppercase curve breadth +cap_ess#:=35/36pt#; % breadth in middle of uppercase s +rule_thickness#:=.4pt#; % thickness of lines in math symbols + +dish#:=1/36pt#; % amount erased at top or bottom of serifs +bracket#:=20/36pt#; % vertical distance from serif base to tangent +jut#:=28/36pt#; % protrusion of lowercase serifs +cap_jut#:=37/36pt#; % protrusion of uppercase serifs +beak_jut#:=10/36pt#; % horizontal protrusion of beak serifs +beak#:=70/36pt#; % vertical protrusion of beak serifs +vair#:=8/36pt#; % vertical diameter of hairlines +notch_cut#:=10pt#; % maximum breadth above or below notches +bar#:=11/36pt#; % lowercase bar thickness +slab#:=11/36pt#; % serif and arm thickness +cap_bar#:=11/36pt#; % uppercase bar thickness +cap_band#:=11/36pt#; % uppercase thickness above/below lobes +cap_notch_cut#:=10pt#; % max breadth above/below uppercase notches +serif_drop#:=4/36pt#; % vertical drop of sloped serifs +stem_corr#:=1/36pt#; % for small refinements of stem breadth +vair_corr#:=1/36pt#; % for small refinements of hairline height +apex_corr#:=0pt#; % extra width at diagonal junctions + +o#:=8/36pt#; % amount of overshoot for curves +apex_o#:=8/36pt#; % amount of overshoot for diagonal junctions + +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ +fudge:=1; % factor applied to weights of heavy characters +math_spread:=0; % extra openness of math symbols +superness:=1/sqrt2; % parameter for superellipses +superpull:=1/6; % extra openness inside bowls +beak_darkness:=11/30; % fraction of triangle inside beak serifs +ligs:=2; % level of ligatures to be included + +square_dots:=false; % should dots be square? +hefty:=false; % should we try hard not to be overweight? +serifs:=true; % should serifs and bulbs be attached? +monospace:=false; % should all characters have the same width? +variant_g:=false; % should an italic-style g be used? +low_asterisk:=false; % should the asterisk be centered at the axis? +math_fitting:=false; % should math-mode spacing be used? + + +if ligs>1: font_coding_scheme:="TeX text"; +else: font_coding_scheme:=if ligs=0: "TeX typewriter text" + else: "TeX text without f-ligatures" fi; + fi + +mode_setup; font_setup; + +input rsym; % symbols +input lasychr; % lasy font symbols + + +font_slant slant; font_x_height x_height#; +if monospace: font_normal_space 9u#; % no stretching or shrinking + font_quad 18u#; + font_extra_space 9u#; +else: font_normal_space 6u#+2letter_fit#; + font_normal_stretch 3u#; font_normal_shrink 2u#; + font_quad 18u#+4letter_fit#; + font_extra_space 2u#; fi +bye. diff --git a/fonts/wasy/wasy5.mf b/fonts/wasy/wasy5.mf new file mode 100644 index 0000000000..bebc38cea8 --- /dev/null +++ b/fonts/wasy/wasy5.mf @@ -0,0 +1,103 @@ +% This is WASY5.MF in text format +% additional symbols for math, physics, astronomy and other fields + +%input modes; +%mode=nec_low; + +if unknown cmbase: input cmbase fi + +font_identifier:="WASY"; font_size 5pt#; + +u#:=12.5/36pt#; % unit width +width_adj#:=0pt#; % width adjustment for certain characters +serif_fit#:=0pt#; % extra sidebar near lowercase serifs +cap_serif_fit#:=2/36pt#; % extra sidebar near uppercase serifs +letter_fit#:=5/36pt#; % extra space added to all sidebars + +body_height#:=135/36pt#; % height of tallest characters +asc_height#:=125/36pt#; % height of lowercase ascenders +cap_height#:=123/36pt#; % height of caps +fig_height#:=116/36pt#; % height of numerals +x_height#:=77.5/36pt#; % height of lowercase without ascenders +math_axis#:=45/36pt#; % axis of symmetry for math symbols +bar_height#:=43.5/36pt#; % height of crossbar in lowercase e +comma_depth#:=35/36pt#; % depth of comma below baseline +desc_depth#:=35/36pt#; % depth of lowercase descenders + +crisp#:=0pt#; % diameter of serif corners +tiny#:=6/36pt#; % diameter of rounded corners +fine#:=5/36pt#; % diameter of sharply rounded corners +thin_join#:=5/36pt#; % width of extrafine details +hair#:=7.5/36pt#; % lowercase hairline breadth +stem#:=16/36pt#; % lowercase stem breadth +curve#:=18/36pt#; % lowercase curve breadth +ess#:=12/36pt#; % breadth in middle of lowercase s +flare#:=19/36pt#; % diameter of bulbs or breadth of terminals +dot_size#:=22/36pt#; % diameter of dots +cap_hair#:=8/36pt#; % uppercase hairline breadth +cap_stem#:=19/36pt#; % uppercase stem breadth +cap_curve#:=21/36pt#; % uppercase curve breadth +cap_ess#:=14/36pt#; % breadth in middle of uppercase s +rule_thickness#:=.28pt#; % thickness of lines in math symbols + +dish#:=.7/36pt#; % amount erased at top or bottom of serifs +bracket#:=10/36pt#; % vertical distance from serif base to tangent +jut#:=15/36pt#; % protrusion of lowercase serifs +cap_jut#:=20/36pt#; % protrusion of uppercase serifs +beak_jut#:=6/36pt#; % horizontal protrusion of beak serifs +%if write_white > 0: %% CS: replaced this line by the following: +if known write_white: + beak#:=25/36pt#; % "WRITE WHITE" ONLY! + else: beak#:=35/36pt#;fi %vertical protrusion of beak serifs +vair#:=6/36pt#; % vertical diameter of hairlines +notch_cut#:=5pt#; % maximum breadth above or below notches +bar#:=8/36pt#; % lowercase bar thickness +slab#:=8/36pt#; % serif and arm thickness +cap_bar#:=8/36pt#; % uppercase bar thickness +cap_band#:=8/36pt#; % uppercase thickness above/below lobes +cap_notch_cut#:=5pt#; % max breadth above/below uppercase notches +serif_drop#:=2/36pt#; % vertical drop of sloped serifs +stem_corr#:=.7/36pt#; % for small refinements of stem breadth +vair_corr#:=.5/36pt#; % for small refinements of hairline height +apex_corr#:=0pt#; % extra width at diagonal junctions + +o#:=4/36pt#; % amount of overshoot for curves +apex_o#:=4/36pt#; % amount of overshoot for diagonal junctions + +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ +fudge:=1; % factor applied to weights of heavy characters +math_spread:=0; % extra openness of math symbols +superness:=1/sqrt2; % parameter for superellipses +superpull:=1/6; % extra openness inside bowls +beak_darkness:=11/30; % fraction of triangle inside beak serifs +ligs:=2; % level of ligatures to be included + +square_dots:=false; % should dots be square? +hefty:=false; % should we try hard not to be overweight? +serifs:=true; % should serifs and bulbs be attached? +monospace:=false; % should all characters have the same width? +variant_g:=false; % should an italic-style g be used? +low_asterisk:=false; % should the asterisk be centered at the axis? +math_fitting:=false; % should math-mode spacing be used? + + +if ligs>1: font_coding_scheme:="TeX text"; +else: font_coding_scheme:=if ligs=0: "TeX typewriter text" + else: "TeX text without f-ligatures" fi; + fi + +mode_setup; font_setup; + +input rsym; % symbols +input lasychr; % lasy font symbols + + +font_slant slant; font_x_height x_height#; +if monospace: font_normal_space 9u#; % no stretching or shrinking + font_quad 18u#; + font_extra_space 9u#; +else: font_normal_space 6u#+2letter_fit#; + font_normal_stretch 3u#; font_normal_shrink 2u#; + font_quad 18u#+4letter_fit#; + font_extra_space 2u#; fi +bye. diff --git a/fonts/wasy/wasy6.mf b/fonts/wasy/wasy6.mf new file mode 100644 index 0000000000..32fdbaa558 --- /dev/null +++ b/fonts/wasy/wasy6.mf @@ -0,0 +1,100 @@ +% This is WASY6.MF in text format +% additional symbols for math, physics, astronomy and other fields + +%input modes; +%mode=nec_low; + +if unknown cmbase: input cmbase fi + +font_identifier:="WASY"; font_size 6pt#; + +u#:=14/36pt#; % unit width +width_adj#:=0pt#; % width adjustment for certain characters +serif_fit#:=0pt#; % extra sidebar near lowercase serifs +cap_serif_fit#:=2.8/36pt#; % extra sidebar near uppercase serifs +letter_fit#:=3/36pt#; % extra space added to all sidebars + +body_height#:=162/36pt#; % height of tallest characters +asc_height#:=150/36pt#; % height of lowercase ascenders +cap_height#:=147.6/36pt#; % height of caps +fig_height#:=139.2/36pt#; % height of numerals +x_height#:=93/36pt#; % height of lowercase without ascenders +math_axis#:=54/36pt#; % axis of symmetry for math symbols +bar_height#:=52.2/36pt#; % height of crossbar in lowercase e +comma_depth#:=42/36pt#; % depth of comma below baseline +desc_depth#:=42/36pt#; % depth of lowercase descenders + +crisp#:=0pt#; % diameter of serif corners +tiny#:=7/36pt#; % diameter of rounded corners +fine#:=6/36pt#; % diameter of sharply rounded corners +thin_join#:=6/36pt#; % width of extrafine details +hair#:=8/36pt#; % lowercase hairline breadth +stem#:=18/36pt#; % lowercase stem breadth +curve#:=20.5/36pt#; % lowercase curve breadth +ess#:=17/36pt#; % breadth in middle of lowercase s +flare#:=21/36pt#; % diameter of bulbs or breadth of terminals +dot_size#:=26/36pt#; % diameter of dots +cap_hair#:=8.5/36pt#; % uppercase hairline breadth +cap_stem#:=21.5/36pt#; % uppercase stem breadth +cap_curve#:=24/36pt#; % uppercase curve breadth +cap_ess#:=19/36pt#; % breadth in middle of uppercase s +rule_thickness#:=.31pt#; % thickness of lines in math symbols + +dish#:=.8/36pt#; % amount erased at top or bottom of serifs +bracket#:=12/36pt#; % vertical distance from serif base to tangent +jut#:=17/36pt#; % protrusion of lowercase serifs +cap_jut#:=23/36pt#; % protrusion of uppercase serifs +beak_jut#:=6.8/36pt#; % horizontal protrusion of beak serifs +beak#:=42/36pt#; % vertical protrusion of beak serifs +vair#:=7/36pt#; % vertical diameter of hairlines +notch_cut#:=6pt#; % maximum breadth above or below notches +bar#:=8.5/36pt#; % lowercase bar thickness +slab#:=8.5/36pt#; % serif and arm thickness +cap_bar#:=8.5/36pt#; % uppercase bar thickness +cap_band#:=8.5/36pt#; % uppercase thickness above/below lobes +cap_notch_cut#:=6pt#; % max breadth above/below uppercase notches +serif_drop#:=2.4/36pt#; % vertical drop of sloped serifs +stem_corr#:=.8/36pt#; % for small refinements of stem breadth +vair_corr#:=.7/36pt#; % for small refinements of hairline height +apex_corr#:=0pt#; % extra width at diagonal junctions + +o#:=4.5/36pt#; % amount of overshoot for curves +apex_o#:=4.5/36pt#; % amount of overshoot for diagonal junctions + +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ +fudge:=1; % factor applied to weights of heavy characters +math_spread:=0; % extra openness of math symbols +superness:=1/sqrt2; % parameter for superellipses +superpull:=1/6; % extra openness inside bowls +beak_darkness:=11/30; % fraction of triangle inside beak serifs +ligs:=2; % level of ligatures to be included + +square_dots:=false; % should dots be square? +hefty:=false; % should we try hard not to be overweight? +serifs:=true; % should serifs and bulbs be attached? +monospace:=false; % should all characters have the same width? +variant_g:=false; % should an italic-style g be used? +low_asterisk:=false; % should the asterisk be centered at the axis? +math_fitting:=false; % should math-mode spacing be used? + + +if ligs>1: font_coding_scheme:="TeX text"; +else: font_coding_scheme:=if ligs=0: "TeX typewriter text" + else: "TeX text without f-ligatures" fi; + fi + +mode_setup; font_setup; + +input rsym; % symbols +input lasychr; % lasy font symbols + + +font_slant slant; font_x_height x_height#; +if monospace: font_normal_space 9u#; % no stretching or shrinking + font_quad 18u#; + font_extra_space 9u#; +else: font_normal_space 6u#+2letter_fit#; + font_normal_stretch 3u#; font_normal_shrink 2u#; + font_quad 18u#+4letter_fit#; + font_extra_space 2u#; fi +bye. diff --git a/fonts/wasy/wasy7.mf b/fonts/wasy/wasy7.mf new file mode 100644 index 0000000000..9002a2cd8c --- /dev/null +++ b/fonts/wasy/wasy7.mf @@ -0,0 +1,100 @@ +% This is WASY7.MF in text format +% additional symbols for math, physics, astronomy and other fields + +%input modes; +%mode=nec_low; + +if unknown cmbase: input cmbase fi + +font_identifier:="WASY"; font_size 7pt#; + +u#:=15.5/36pt#; % unit width +width_adj#:=0pt#; % width adjustment for certain characters +serif_fit#:=0pt#; % extra sidebar near lowercase serifs +cap_serif_fit#:=3.5/36pt#; % extra sidebar near uppercase serifs +letter_fit#:=2/36pt#; % extra space added to all sidebars + +body_height#:=189/36pt#; % height of tallest characters +asc_height#:=175/36pt#; % height of lowercase ascenders +cap_height#:=172.2/36pt#; % height of caps +fig_height#:=162.4/36pt#; % height of numerals +x_height#:=108.5/36pt#; % height of lowercase without ascenders +math_axis#:=63/36pt#; % axis of symmetry for math symbols +bar_height#:=60.9/36pt#; % height of crossbar in lowercase e +comma_depth#:=49/36pt#; % depth of comma below baseline +desc_depth#:=49/36pt#; % depth of lowercase descenders + +crisp#:=0pt#; % diameter of serif corners +tiny#:=7/36pt#; % diameter of rounded corners +fine#:=6/36pt#; % diameter of sharply rounded corners +thin_join#:=6/36pt#; % width of extrafine details +hair#:=8.5/36pt#; % lowercase hairline breadth +stem#:=20/36pt#; % lowercase stem breadth +curve#:=23/36pt#; % lowercase curve breadth +ess#:=21/36pt#; % breadth in middle of lowercase s +flare#:=24/36pt#; % diameter of bulbs or breadth of terminals +dot_size#:=29/36pt#; % diameter of dots +cap_hair#:=9/36pt#; % uppercase hairline breadth +cap_stem#:=24/36pt#; % uppercase stem breadth +cap_curve#:=27/36pt#; % uppercase curve breadth +cap_ess#:=23/36pt#; % breadth in middle of uppercase s +rule_thickness#:=.34pt#; % thickness of lines in math symbols + +dish#:=.9/36pt#; % amount erased at top or bottom of serifs +bracket#:=14/36pt#; % vertical distance from serif base to tangent +jut#:=19/36pt#; % protrusion of lowercase serifs +cap_jut#:=26/36pt#; % protrusion of uppercase serifs +beak_jut#:=7.6/36pt#; % horizontal protrusion of beak serifs +beak#:=49/36pt#; % vertical protrusion of beak serifs +vair#:=7/36pt#; % vertical diameter of hairlines +notch_cut#:=7pt#; % maximum breadth above or below notches +bar#:=9/36pt#; % lowercase bar thickness +slab#:=9/36pt#; % serif and arm thickness +cap_bar#:=9/36pt#; % uppercase bar thickness +cap_band#:=9/36pt#; % uppercase thickness above/below lobes +cap_notch_cut#:=7pt#; % max breadth above/below uppercase notches +serif_drop#:=2.8/36pt#; % vertical drop of sloped serifs +stem_corr#:=.9/36pt#; % for small refinements of stem breadth +vair_corr#:=.9/36pt#; % for small refinements of hairline height +apex_corr#:=0pt#; % extra width at diagonal junctions + +o#:=5/36pt#; % amount of overshoot for curves +apex_o#:=5/36pt#; % amount of overshoot for diagonal junctions + +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ +fudge:=1; % factor applied to weights of heavy characters +math_spread:=0; % extra openness of math symbols +superness:=1/sqrt2; % parameter for superellipses +superpull:=1/6; % extra openness inside bowls +beak_darkness:=11/30; % fraction of triangle inside beak serifs +ligs:=2; % level of ligatures to be included + +square_dots:=false; % should dots be square? +hefty:=false; % should we try hard not to be overweight? +serifs:=true; % should serifs and bulbs be attached? +monospace:=false; % should all characters have the same width? +variant_g:=false; % should an italic-style g be used? +low_asterisk:=false; % should the asterisk be centered at the axis? +math_fitting:=false; % should math-mode spacing be used? + + +if ligs>1: font_coding_scheme:="TeX text"; +else: font_coding_scheme:=if ligs=0: "TeX typewriter text" + else: "TeX text without f-ligatures" fi; + fi + +mode_setup; font_setup; + +input rsym; % symbols +input lasychr; % lasy font symbols + + +font_slant slant; font_x_height x_height#; +if monospace: font_normal_space 9u#; % no stretching or shrinking + font_quad 18u#; + font_extra_space 9u#; +else: font_normal_space 6u#+2letter_fit#; + font_normal_stretch 3u#; font_normal_shrink 2u#; + font_quad 18u#+4letter_fit#; + font_extra_space 2u#; fi +bye. diff --git a/fonts/wasy/wasy8.mf b/fonts/wasy/wasy8.mf new file mode 100644 index 0000000000..ac7557bb31 --- /dev/null +++ b/fonts/wasy/wasy8.mf @@ -0,0 +1,100 @@ +% This is WASY8.MF in text format +% additional symbols for math, physics, astronomy and other fields + +%input modes; +%mode=nec_low; + +if unknown cmbase: input cmbase fi + +font_identifier:="WASY"; font_size 8pt#; + +u#:=17/36pt#; % unit width +width_adj#:=0pt#; % width adjustment for certain characters +serif_fit#:=0pt#; % extra sidebar near lowercase serifs +cap_serif_fit#:=4.1/36pt#; % extra sidebar near uppercase serifs +letter_fit#:=0pt#; % extra space added to all sidebars + +body_height#:=216/36pt#; % height of tallest characters +asc_height#:=200/36pt#; % height of lowercase ascenders +cap_height#:=196.8/36pt#; % height of caps +fig_height#:=185.6/36pt#; % height of numerals +x_height#:=124/36pt#; % height of lowercase without ascenders +math_axis#:=72/36pt#; % axis of symmetry for math symbols +bar_height#:=69.6/36pt#; % height of crossbar in lowercase e +comma_depth#:=56/36pt#; % depth of comma below baseline +desc_depth#:=56/36pt#; % depth of lowercase descenders + +crisp#:=0pt#; % diameter of serif corners +tiny#:=8/36pt#; % diameter of rounded corners +fine#:=7/36pt#; % diameter of sharply rounded corners +thin_join#:=7/36pt#; % width of extrafine details +hair#:=9/36pt#; % lowercase hairline breadth +stem#:=22/36pt#; % lowercase stem breadth +curve#:=25.5/36pt#; % lowercase curve breadth +ess#:=23/36pt#; % breadth in middle of lowercase s +flare#:=27/36pt#; % diameter of bulbs or breadth of terminals +dot_size#:=32/36pt#; % diameter of dots +cap_hair#:=9.5/36pt#; % uppercase hairline breadth +cap_stem#:=26.5/36pt#; % uppercase stem breadth +cap_curve#:=30/36pt#; % uppercase curve breadth +cap_ess#:=27/36pt#; % breadth in middle of uppercase s +rule_thickness#:=.36pt#; % thickness of lines in math symbols + +dish#:=1/36pt#; % amount erased at top or bottom of serifs +bracket#:=16/36pt#; % vertical distance from serif base to tangent +jut#:=22/36pt#; % protrusion of lowercase serifs +cap_jut#:=29/36pt#; % protrusion of uppercase serifs +beak_jut#:=8.4/36pt#; % horizontal protrusion of beak serifs +beak#:=56/36pt#; % vertical protrusion of beak serifs +vair#:=8/36pt#; % vertical diameter of hairlines +notch_cut#:=8pt#; % maximum breadth above or below notches +bar#:=9.5/36pt#; % lowercase bar thickness +slab#:=9.5/36pt#; % serif and arm thickness +cap_bar#:=9.5/36pt#; % uppercase bar thickness +cap_band#:=9.5/36pt#; % uppercase thickness above/below lobes +cap_notch_cut#:=8pt#; % max breadth above/below uppercase notches +serif_drop#:=3.2/36pt#; % vertical drop of sloped serifs +stem_corr#:=1/36pt#; % for small refinements of stem breadth +vair_corr#:=1/36pt#; % for small refinements of hairline height +apex_corr#:=0pt#; % extra width at diagonal junctions + +o#:=6/36pt#; % amount of overshoot for curves +apex_o#:=6/36pt#; % amount of overshoot for diagonal junctions + +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ +fudge:=1; % factor applied to weights of heavy characters +math_spread:=0; % extra openness of math symbols +superness:=1/sqrt2; % parameter for superellipses +superpull:=1/6; % extra openness inside bowls +beak_darkness:=11/30; % fraction of triangle inside beak serifs +ligs:=2; % level of ligatures to be included + +square_dots:=false; % should dots be square? +hefty:=false; % should we try hard not to be overweight? +serifs:=true; % should serifs and bulbs be attached? +monospace:=false; % should all characters have the same width? +variant_g:=false; % should an italic-style g be used? +low_asterisk:=false; % should the asterisk be centered at the axis? +math_fitting:=false; % should math-mode spacing be used? + + +if ligs>1: font_coding_scheme:="TeX text"; +else: font_coding_scheme:=if ligs=0: "TeX typewriter text" + else: "TeX text without f-ligatures" fi; + fi + +mode_setup; font_setup; + +input rsym; % symbols +input lasychr; % lasy font symbols + + +font_slant slant; font_x_height x_height#; +if monospace: font_normal_space 9u#; % no stretching or shrinking + font_quad 18u#; + font_extra_space 9u#; +else: font_normal_space 6u#+2letter_fit#; + font_normal_stretch 3u#; font_normal_shrink 2u#; + font_quad 18u#+4letter_fit#; + font_extra_space 2u#; fi +bye. diff --git a/fonts/wasy/wasy9.mf b/fonts/wasy/wasy9.mf new file mode 100644 index 0000000000..b734d844fa --- /dev/null +++ b/fonts/wasy/wasy9.mf @@ -0,0 +1,100 @@ +% This is WASY9.MF in text format +% additional symbols for math, physics, astronomy and other fields + +%input modes; +%mode=nec_low; + +if unknown cmbase: input cmbase fi + +font_identifier:="WASY"; font_size 9pt#; + +u#:=18.5/36pt#; % unit width +width_adj#:=0pt#; % width adjustment for certain characters +serif_fit#:=0pt#; % extra sidebar near lowercase serifs +cap_serif_fit#:=4.6/36pt#; % extra sidebar near uppercase serifs +letter_fit#:=0pt#; % extra space added to all sidebars + +body_height#:=243/36pt#; % height of tallest characters +asc_height#:=225/36pt#; % height of lowercase ascenders +cap_height#:=221.4/36pt#; % height of caps +fig_height#:=208.8/36pt#; % height of numerals +x_height#:=139.5/36pt#; % height of lowercase without ascenders +math_axis#:=81/36pt#; % axis of symmetry for math symbols +bar_height#:=78.3/36pt#; % height of crossbar in lowercase e +comma_depth#:=63/36pt#; % depth of comma below baseline +desc_depth#:=63/36pt#; % depth of lowercase descenders + +crisp#:=0pt#; % diameter of serif corners +tiny#:=8/36pt#; % diameter of rounded corners +fine#:=7/36pt#; % diameter of sharply rounded corners +thin_join#:=7/36pt#; % width of extrafine details +hair#:=9/36pt#; % lowercase hairline breadth +stem#:=24/36pt#; % lowercase stem breadth +curve#:=28/36pt#; % lowercase curve breadth +ess#:=25/36pt#; % breadth in middle of lowercase s +flare#:=30/36pt#; % diameter of bulbs or breadth of terminals +dot_size#:=35/36pt#; % diameter of dots +cap_hair#:=10/36pt#; % uppercase hairline breadth +cap_stem#:=29/36pt#; % uppercase stem breadth +cap_curve#:=33/36pt#; % uppercase curve breadth +cap_ess#:=31/36pt#; % breadth in middle of uppercase s +rule_thickness#:=.38pt#; % thickness of lines in math symbols + +dish#:=1/36pt#; % amount erased at top or bottom of serifs +bracket#:=18/36pt#; % vertical distance from serif base to tangent +jut#:=25/36pt#; % protrusion of lowercase serifs +cap_jut#:=33/36pt#; % protrusion of uppercase serifs +beak_jut#:=9.2/36pt#; % horizontal protrusion of beak serifs +beak#:=63/36pt#; % vertical protrusion of beak serifs +vair#:=8/36pt#; % vertical diameter of hairlines +notch_cut#:=9pt#; % maximum breadth above or below notches +bar#:=10/36pt#; % lowercase bar thickness +slab#:=10/36pt#; % serif and arm thickness +cap_bar#:=10/36pt#; % uppercase bar thickness +cap_band#:=10/36pt#; % uppercase thickness above/below lobes +cap_notch_cut#:=9pt#; % max breadth above/below uppercase notches +serif_drop#:=3.6/36pt#; % vertical drop of sloped serifs +stem_corr#:=1/36pt#; % for small refinements of stem breadth +vair_corr#:=1/36pt#; % for small refinements of hairline height +apex_corr#:=0pt#; % extra width at diagonal junctions + +o#:=7/36pt#; % amount of overshoot for curves +apex_o#:=7/36pt#; % amount of overshoot for diagonal junctions + +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ +fudge:=1; % factor applied to weights of heavy characters +math_spread:=0; % extra openness of math symbols +superness:=1/sqrt2; % parameter for superellipses +superpull:=1/6; % extra openness inside bowls +beak_darkness:=11/30; % fraction of triangle inside beak serifs +ligs:=2; % level of ligatures to be included + +square_dots:=false; % should dots be square? +hefty:=false; % should we try hard not to be overweight? +serifs:=true; % should serifs and bulbs be attached? +monospace:=false; % should all characters have the same width? +variant_g:=false; % should an italic-style g be used? +low_asterisk:=false; % should the asterisk be centered at the axis? +math_fitting:=false; % should math-mode spacing be used? + + +if ligs>1: font_coding_scheme:="TeX text"; +else: font_coding_scheme:=if ligs=0: "TeX typewriter text" + else: "TeX text without f-ligatures" fi; + fi + +mode_setup; font_setup; + +input rsym; % symbols +input lasychr; % lasy font symbols + + +font_slant slant; font_x_height x_height#; +if monospace: font_normal_space 9u#; % no stretching or shrinking + font_quad 18u#; + font_extra_space 9u#; +else: font_normal_space 6u#+2letter_fit#; + font_normal_stretch 3u#; font_normal_shrink 2u#; + font_quad 18u#+4letter_fit#; + font_extra_space 2u#; fi +bye. diff --git a/fonts/wasy/wasyb10.mf b/fonts/wasy/wasyb10.mf new file mode 100644 index 0000000000..8105c50611 --- /dev/null +++ b/fonts/wasy/wasyb10.mf @@ -0,0 +1,100 @@ +% This is WASY10.MF in text format +% additional symbols for math, physics, astronomy and other fields + +%input modes; +%mode=hp_laser; + +if unknown cmbase: input cmbase fi + +font_identifier:="WASY"; font_size 10pt#; + +u#:=23/36pt#; % unit width +width_adj#:=11/36pt#; % width adjustment for certain characters +serif_fit#:=0pt#; % extra sidebar near lowercase serifs +cap_serif_fit#:=7/36pt#; % extra sidebar near uppercase serifs +letter_fit#:=0pt#; % extra space added to all sidebars + +body_height#:=270/36pt#; % height of tallest characters +asc_height#:=250/36pt#; % height of lowercase ascenders +cap_height#:=246/36pt#; % height of caps +fig_height#:=232/36pt#; % height of numerals +x_height#:=155/36pt#; % height of lowercase without ascenders +math_axis#:=90/36pt#; % axis of symmetry for math symbols +bar_height#:=87/36pt#; % height of crossbar in lowercase e +comma_depth#:=70/36pt#; % depth of comma below baseline +desc_depth#:=70/36pt#; % depth of lowercase descenders + +crisp#:=8/36pt#; % diameter of serif corners +tiny#:=13/36pt#; % diameter of rounded corners +fine#:=10/36pt#; % diameter of sharply rounded corners +thin_join#:=10/36pt#; % width of extrafine details +hair#:=17/36pt#; % lowercase hairline breadth +stem#:=40/36pt#; % lowercase stem breadth +curve#:=45/36pt#; % lowercase curve breadth +ess#:=36/36pt#; % breadth in middle of lowercase s +flare#:=42/36pt#; % diameter of bulbs or breadth of terminals +dot_size#:=56/36pt#; % diameter of dots +cap_hair#:=19/36pt#; % uppercase hairline breadth +cap_stem#:=50/36pt#; % uppercase stem breadth +cap_curve#:=53/36pt#; % uppercase curve breadth +cap_ess#:=51/36pt#; % breadth in middle of uppercase s +rule_thickness#:=.6pt#; % thickness of lines in math symbols + +dish#:=1/36pt#; % amount erased at top or bottom of serifs +bracket#:=20/36pt#; % vertical distance from serif base to tangent +jut#:=28/36pt#; % protrusion of lowercase serifs +cap_jut#:=37/36pt#; % protrusion of uppercase serifs +beak_jut#:=10/36pt#; % horizontal protrusion of beak serifs +beak#:=70/36pt#; % vertical protrusion of beak serifs +vair#:=13/36pt#; % vertical diameter of hairlines +notch_cut#:=10pt#; % maximum breadth above or below notches +bar#:=17/36pt#; % lowercase bar thickness +slab#:=17/36pt#; % serif and arm thickness +cap_bar#:=17/36pt#; % uppercase bar thickness +cap_band#:=17/36pt#; % uppercase thickness above/below lobes +cap_notch_cut#:=10pt#; % max breadth above/below uppercase notches +serif_drop#:=4/36pt#; % vertical drop of sloped serifs +stem_corr#:=2/36pt#; % for small refinements of stem breadth +vair_corr#:=1/36pt#; % for small refinements of hairline height +apex_corr#:=0pt#; % extra width at diagonal junctions + +o#:=8/36pt#; % amount of overshoot for curves +apex_o#:=8/36pt#; % amount of overshoot for diagonal junctions + +slant:=0; % tilt ratio $(\Delta x/\Delta y)$ +fudge:=1; % factor applied to weights of heavy characters +math_spread:=0; % extra openness of math symbols +superness:=1/sqrt2; % parameter for superellipses +superpull:=1/6; % extra openness inside bowls +beak_darkness:=12/30; % fraction of triangle inside beak serifs +ligs:=2; % level of ligatures to be included + +square_dots:=false; % should dots be square? +hefty:=false; % should we try hard not to be overweight? +serifs:=true; % should serifs and bulbs be attached? +monospace:=false; % should all characters have the same width? +variant_g:=false; % should an italic-style g be used? +low_asterisk:=false; % should the asterisk be centered at the axis? +math_fitting:=false; % should math-mode spacing be used? + + +if ligs>1: font_coding_scheme:="TeX text"; +else: font_coding_scheme:=if ligs=0: "TeX typewriter text" + else: "TeX text without f-ligatures" fi; + fi + +mode_setup; font_setup; + +input rsym; % symbols +input lasychr; % lasy font symbols + + +font_slant slant; font_x_height x_height#; +if monospace: font_normal_space 9u#; % no stretching or shrinking + font_quad 18u#; + font_extra_space 9u#; +else: font_normal_space 6u#+2letter_fit#; + font_normal_stretch 3u#; font_normal_shrink 2u#; + font_quad 18u#+4letter_fit#; + font_extra_space 2u#; fi +bye. diff --git a/fonts/wasy/wasychr.mf b/fonts/wasy/wasychr.mf new file mode 100644 index 0000000000..10b4f8c930 --- /dev/null +++ b/fonts/wasy/wasychr.mf @@ -0,0 +1,316 @@ +% +% These characters should rather be in a character font than in a +% symbol font +% + +cmchar "Cent sign"; +beginchar(hex"67",9u#,asc_height#,desc_depth#); +italcorr x_height#*slant-.2u#; +adjust_fit(0,0); +pickup fine.nib; pos2(vair',90); pos4(vair',270); +x2=x4=.5(w+u); top y2r=vround(x_height+1.5oo); bot y4r=-oo; +pos3(curve,180); lft x3r=hround max(.6u,1.35u-.5curve); y3=.5x_height; +if serifs: pos1(hair,0); pos0(flare,0); + y1=min(bar_height+.5flare+2vair'+2,.9[bar_height,x_height]-.5flare); + rt x1r=hround(w-.7u); bulb(2,1,0); % bulb + pos5(hair,0); rt x5r=hround(w-.5u); + y5=max(good.y(.5bar_height-.9),y4l+vair'); + (x,y4l)=whatever[z4r,z5l]; x4l:=min(x,x4l+.5u); + filldraw stroke pulled_super_arc.e(2,3)(.7superpull) + & pulled_super_arc.e(3,4)(.5superpull) + ..tension .9 and 1..{x5-x4,5(y5-y4)}z5e; % arc and lower terminal +else: pos1(4/7[vair',flare],80); + rt x1r=hround(w-.6u); top y1r=vround .82[bar_height,top y2r]; + filldraw stroke term.e(2,1,right,.8,4); % upper terminal + pos5(.6[vair',flare],275); rt x5r=hround(w-.5u); + y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l; + forsuffixes e=l,r: path p.e; p.e=z4e{right}..tension .9 and 1..z5e; + if angle direction 1 of p.e>75: + p.e:=z4e{right}..tension atleast.9 and 1..{dir 75}z5e; fi endfor + filldraw stroke pulled_super_arc.e(2,3)(.7superpull) + & pulled_super_arc.e(3,4)(.5superpull) & p.e; fi % arc and lower terminal +pickup crisp.nib; +x6=x7=x8=x9=x2; y7=y2; y8=y4; bot y9=-d; y6-y7 = y8-y9; +pos6(bar,0); pos7(bar,0); +pos8(bar,0); pos9(bar,0); +filldraw stroke z6e--z7e; % upper bar +filldraw stroke z8e--z9e; % lower bar +penlabels(0,1,2,3,4,5,6,7,8,9); endchar; + +cmchar "Upside down e"; +beginchar(hex"55",7.25u#+max(.75u#,.5curve#),x_height#,0); +italcorr .5[bar_height#,x_height#]*slant+.5min(curve#-1.5u#,0); +adjust_fit(if monospace: .25u#,.5u# else: 0,0 fi); +numeric left_curve,right_curve; +left_curve=right_curve+6stem_corr=curve if not serifs: -3stem_corr fi; +if right_curve<tiny.breadth: right_curve:=tiny.breadth; fi +if left_curve<tiny.breadth: left_curve:=tiny.breadth; fi +pickup tiny.nib; pos1(right_curve,180); +pos2(vair,270); pos3(left_curve,0); +y1=good.y (h-bar_height); bot y2r=vround (-1.5oo); y0l=top y1; +lft x1r=hround max(.5u,u-.5right_curve); +rt x3r=hround min(w-.5u,w-(1.25u-.5left_curve)); x2=.5w-.25u; +{{interim superness:=more_super; + filldraw stroke super_arc.e(2,1)}}; % left bowl +y3=.5[y2,y4]; top y4r=h+oo; x4=x2-.25u; +if serifs: pos4(vair',90); pos5(hair,180); + y5=min(good.y(h-(.5bar_height-.9)),y4l-vair); x5r=x1r; + (x,y4l)=whatever[z4r,z5]; x4l:=max(x,x4l-.5u); + filldraw stroke pulled_arc.e(2,3) & pulled_arc.e(3,4) + ...{x5-x4,5(y5-y4)}z5e; % right bowl, arc, and terminal +else: pos4(vair,90); + filldraw stroke super_arc.e(2,3) & super_arc.e(3,4); % right bowl and arc + pickup fine.nib; pos4'(vair,90); z4=z4'; + pos5(.5[vair,flare],95); lft x5r=hround(.6u); + y5r=good.y(y5r-1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l; + filldraw stroke term.e(4',5,left,1,4); fi % terminal +path testpath; testpath=super_arc.l(2,3) & super_arc.l(3,4); +y1'r=y0r=y0l-.6[thin_join,vair]; y1'l=y0l; x1'l=x1'r=x1; +forsuffixes $=l,r: + x0$=xpart(((2h,y0$)--(x1,y0$)) intersectionpoint testpath); endfor % old +fill stroke z0e--z1'e; % crossbar +penlabels(0,1,2,3,4,5); endchar; + +cmchar "Phonetic open o"; +beginchar(hex"6C",8.5u#,x_height#,0); +italcorr x_height#*slant-.2u#; +adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi); +pickup fine.nib; pos2(vair',270); pos4(vair',90); +x2=x4=.5w; top y4r=vround(h+oo); bot y2r=-1.5oo; +pos3(curve,0); rt x3l=hround (w-max(1.6u,2.35u-.5curve)); y3=.5h; +if serifs: pos1(hair,180); pos0(flare,180); + y1=h-.70[bar_height,h]+.5flare; + lft x1r=hround(0.5u); bulb(2,1,0); % bulb + pos5(hair,180); lft x5r=hround(0.7u); + y5=min(good.y(h+oo-.45bar_height+.9),y4l-vair'); + (x,y4l)=whatever[z4l,z5r]; x4l:=max(x,x4l-.5u); + filldraw stroke pulled_super_arc.e(2,3)(.7superpull) + & pulled_super_arc.e(3,4)(.5superpull) + ..tension .9 and 1..{x5-x4,5(y5-y4)}z5e; % arc and upper terminal +else: pos1(4/7[vair',flare],260); + lft x1r=hround(.6u); bot y1r=vround (.82[h-bar_height,bot y2r]); + filldraw stroke term.e(2,1,left,.8,4); % lower terminal + pos5(.6[vair',flare],95); lft x5r=hround(1.5u); + y5r=good.y(y5l+h-1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l; + forsuffixes e=l,r: path p.e; p.e=z4e{left}..tension .9 and 1..z5e; + if angle direction 1 of p.e<255: + p.e:=z4e{left}..tension atleast.9 and 1..{dir 255}z5e; fi endfor + filldraw stroke pulled_super_arc.e(2,3)(.7superpull) + & pulled_super_arc.e(3,4)(.5superpull) & p.e; fi % arc and upper terminal +penlabels(0,1,2,3,4,5); endchar; + +cmchar "The small islandic thorn"; +beginchar(hex"69",10u#+serif_fit#,asc_height#,desc_depth#); +italcorr .5x_height#*slant+min(.5curve#-.85u#,-.1u#); +adjust_fit(serif_fit#,0); +pickup tiny.nib; pos1(stem',0); pos2(stem,0); +pos0'(stem',0); pos0(stem,0); z0l=z0'l; x0'=x1; x0=x2; +lft x1l=hround(2.5u-.5stem'); top y1=h if serifs: +min(oo,serif_drop) fi; +numeric edge; edge=rt x2r; +pickup fine.nib; pos3(if hefty:thin_join else: hair fi,180); +pos4(vair',90); pos5(curve,0); pos6(vair,-90); penpos7(x3l-x3r,-180); +rt x3l=max(rt x3l-(lft x3r-tiny.lft x2l), 1/3[rt x2,edge]); +y3=1/8[bar_height,x_height]; +x4l=w-.5(w-serif_fit)+.5u; top y4r=x_height+oo; +rt x5r=hround min(w-1.35u+.5curve,w-.6u); y5=.5x_height; +x6l=x4l-.2u; bot y6r=-oo; +x7=x3; y7=min(y3,y6+y4-y3+.6vair); +(x,y4r)=whatever[z3l,z4l]; x4r:=min(x,.5[x5r,x4]); +(x',y6r)=whatever[z7l,z6l]; x6r:=min(x',.5[x5r,x6]); +filldraw stroke z3e{up}...{right}z4e&super_arc.e(4,5) + &super_arc.e(5,6)&z6e{left}...{up}z7e; % bowl +y0=ypart(((edge,x_height)--(edge,0)) intersectionpoint + (z3l{up}...{right}z4l)); +pickup tiny.nib; bot y2=-d; +filldraw stroke z1e--z0'e--z0e--z2e; % stem +pickup crisp.nib; pos8(hair,0); pos7'(stem,0); +z7'=z2; x8l=x7'l; bot y8=0; +filldraw stroke z7'e--z8e; % point +if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop); % upper serif + dish_serif(2,0,b,1/3,jut,c,1/3,jut); fi % lower serif +penlabels(0,1,2,3,4,5,6,7,8); endchar; + +cmchar "Uppercase Thorn"; +beginchar(hex"6A",12u#,cap_height#,0); +italcorr .5cap_height#*slant-.5u#; +adjust_fit(cap_serif_fit#,0); +pickup tiny.nib; penpos1(cap_stem'-tiny,0); penpos2(cap_stem-tiny,0); +pos0(cap_stem',0); pos0'(cap_stem,0); +lft x1l=hround max(2u,3u-.5cap_stem'); top y1=h; bot y2=0; +x1l=x2l=x0l=x0'l; y0=y0'=y7; +penpos3(cap_band,90); penpos4(cap_band,90); +penpos5(cap_curve if hefty:-3stem_corr fi,0); +penpos6(.5[vair,cap_band],-90); penpos7(.5[vair,cap_band],-90); +y4=y3; y5=.5[y4l,y6l]; y6=y7; +x3=x7=x2; x4=x6=.5w+.75u; x5r=hround(w-u); +y3r=vround(.80h); +y7r=vround(.20h); +x4l:=x6l:=x4-.25cap_curve; +filldraw stroke z1e--z0e--z0'e--z2e; % stem +fill stroke z3e..pulled_arc.e(4,5) & pulled_arc.e(5,6)..z7e; % lobe +if serifs: dish_serif(1,0,a,1/3,cap_jut,b,1/3,cap_jut); % upper serif + dish_serif(2,0',c,1/3,cap_jut,d,1/3,cap_jut); fi % lower serif +math_fit(0,ic#-2.5u#); penlabels(0,1,2,3,4,5,6,7); endchar; + +cmchar "Islandic edh"; +beginchar(hex"6B",9u#,asc_height#,0); +italcorr .8x_height#*slant; +adjust_fit(0,0); +penpos1(vair,90); penpos3(vair',-90); +penpos1'(hair,0); +penpos2(curve,180); penpos4(curve,0); penpos4'(curve,0); +penpos5(curve,0); penpos6(curve,0); +x2r=hround max(.5u,1.25u-.5curve); +x4r=w-x2r; x1=x3=.5w; y1r=x_height; y3r=-oo; +y2=y4=.5(x_height-oo)-vair_corr; y2l:=y4l:=.5x_height; +y4'=y4+1.5u; x4'=x4; +top y6 = h; +x6= if monospace: 2/3 else: 1/3 fi [x2,x5]; +y5=0.66[y4',y6]; +x5=0.60[x4',x6]; +z1' = z4'; +penstroke pulled_arc.e(1',1) + & pulled_arc.e(1,2) & pulled_arc.e(2,3) + & pulled_arc.e(3,4)..z4'e..z5e---z6e; % bowl and stem +numeric newstem; newstem = .5[hair,.7stem]; +penpos7(newstem,-45); penpos8(newstem,-45); +top y8l = h; +bot y7r = .12[top y1r,h]; +(x8-x7)/(y6-y5) = (y8-y7)/(x5-x6); +z=.5[z7,z8]; % make bar symmetric +(y6-y)/(y6-y5) = (x6-x)/(x6-x5); +penstroke z7e--z8e; % bar +penlabels(1,2,3,4,5,6,7,8); endchar; + +cmchar "The letter long-s"; +beginchar(hex"54",5.5u#,asc_height#,0); +italcorr asc_height#*slant+if serifs:flare#-.25u# else: 1.25u# fi; +adjust_fit(stem_shift#,if monospace: .5u# else:-stem_shift# fi); +pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem'); +pickup fine.nib; numeric bulb_diam; +if serifs: bulb_diam=hround .8[stem,flare]; + pos2(bulb_diam,0); y2+.5bulb_diam=.9[x_height,h+oo]; + if monospace: rt x2r=hround(w-.5u)+1 else: lft x2l=hround(w-.75u+.5) fi; +else: pos2(5/7[vair,flare],90); top y2r=h; + rt x2=hround(if monospace:w-.5u else:w+.75u fi); fi +f_stroke(1,2,a,b,c,jut,if not monospace:1.25fi\\ jut); % stem, terminal, serif +pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround .7u; +pos3(bar,90); pos4(bar,90); +rt x4=hround(2.5u); +filldraw stroke z3e--z4e; % bar +penlabels(1,2,3,4); endchar; + +cmchar "Permille sign"; +beginchar(hex"68",9u#+max(9u#,3fudge*(hair#+stem#)), + body_height#,body_height#-asc_height#); +italcorr if hefty: .4asc_height#*slant-.5u# else: h#*slant-u# fi; +adjust_fit(0,0); pickup fine.nib; +numeric left_curve,right_curve; +left_curve=hround 5/6[fudged.hair,fudged.stem]; +right_curve=max(fine.breadth,hround(fudged.hair if hefty:-2stem_corr fi)); +pos1(vair,90); pos2(left_curve,180); pos3(vair,270); pos4(right_curve,360); +top y1r=h; lft x2r=hround u; rt x4r=hround(.35w-u); +bot y3r=floor(if monospace: .7 else: .5 fi\\ asc_height); +x1=x3=.5[x2,x4]; y2=y4=.5[y1,y3]; +filldraw stroke pulled_super_arc.e(1,2)(superpull) + & pulled_super_arc.e(2,3)(superpull); % left half of upper bowl +filldraw stroke super_arc.e(3,4) & super_arc.e(4,1); % right half of upper bowl +pos5(vair,90); pos6(left_curve,180); pos7(vair,270); +pos8(right_curve,360); +bot y7r=-d; rt x8r=hround(.70w-u); x6-x8 = x2-x4; +top y5r=vround(if monospace: .3 else: .5 fi\\ asc_height); +x5=x7=.5[x6,x8]; y6=y8=.5[y5,y7]; +filldraw stroke pulled_super_arc.e(5,6)(superpull) + & pulled_super_arc.e(6,7)(superpull); % left half of lower bowl +filldraw stroke super_arc.e(7,8) & super_arc.e(8,5); % right half of lower bowl +pos5'(vair,90); pos6'(left_curve,180); pos7'(vair,270); +pos8'(right_curve,360); +bot y7'r=-d; rt x8'r=hround(w-u); x6'-x8' = x6-x8; +top y5'r=vround(if monospace: .3 else: .5 fi\\ asc_height); +x5'=x7'=.5[x6',x8']; y6'=y8'=.5[y5',y7']; +filldraw stroke pulled_super_arc.e(5',6')(superpull) + & pulled_super_arc.e(6',7')(superpull); % left half of lower bowl +filldraw stroke super_arc.e(7',8') & super_arc.e(8',5'); % right half of lower bowl +pickup rule.nib; top y9=h; bot y10=-d; +if hefty: x9=good.x(x5-eps); x10=good.x(x1+eps); + draw z9--z10; % diagonal +else: rt x9=hround(.67w-2.5u); lft x10=hround 2.5u; draw z9--z10; % diagonal + pickup fine.nib; pos9(rule_thickness,angle(z9-z10)+90); + pos11(vair,angle(z1r-z4r)-90); pos12(vair,angle(z9-z10)+90); + path p; p=super_arc.r(1,4); z11r=point 2/3 of p; z12r=z9r; + filldraw stroke z11e{direction 2/3 of p}...{z9-z10}z12e; fi % link +penlabels(1,2,3,4,5,6,7,8,9,10,11,12); endchar; + +cmchar "German Paragraph sign, similar to section"; +beginchar(hex"4D",8.5u#+max(1.5u#,stem#),asc_height#,1/2desc_depth#); +italcorr cap_height#*slant-u#; +adjust_fit(0,0); pickup fine.nib; + pos0(stem,0); pos1(hair,0); pos2(vair,90); pos3(curve,180); + pos4(vair,270); pos5'(curve,0); pos5(curve,180); +% pos6(9/10curve,0); +pos6(vair,90); pos7(curve,0); pos8(vair,-90); pos9(hair,-180); pos10(stem,-180); +top y2r=h+oo; bot y8r=-d-oo; y2-y1=y9-y8=(y2-y8)/8; +y3=.52[y4,y2]; y5=.52[y4,y6]; y7=.52[y6,y8]; y5'=.52[y6,y4]; +y2-y4=y4-y6=y6-y8; +rt x1r=hround(w-1.5u); lft x3r=hround 1.25u; +x2=x4=x6=x8=.5w; x5=x7=w-x3; x5'=x3; x9=w-x1; +bulb(2,1,0); bulb(8,9,10); % bulbs +filldraw stroke z2e{left}...z3e{down}...z4e{3(x5-x3),y5-y3} + ...z5e{down}...{left}z6e; % upper stroke +filldraw stroke z4e{left}...z5'e{down}...z6e{3(x7-x5'),y7-y5'} + ...z7e{down}...{left}z8e; % upper stroke +penlabels(0,1,2,3,4,5,6,7,8,9,10); endchar; + +cmchar "Euro symbol"; + beginchar(hex"4E",12.5u#,cap_height#,0); + italcorr cap_height#*slant-.5u#; + adjust_fit(0,0); + pickup fine.nib; pos1(25/33flare,80); pos2(15/11slab,90); + pos3(30/37cap_curve,180); pos4(18/11slab,270); pos5(22/33flare,275); + rt x1r=hround(w-1.1u); x2=x4=.5w+1.75u; + lft x3r=hround max(2u,3u-32/64cap_curve); x5r=x1r-0.1u; + top y1r=vround .95h+oo; top y2r=h+oo; y3=.5h; + bot y4r=-oo; bot y5r=vround .08h-oo; y5l:=good.y y5l; x5l:=good.x x5l; + filldraw stroke rterm.e(2,1,right,.9,4) & super_arc.e(2,3) + & super_arc.e(3,4) & term.e(4,5,right,.8,4); % arc and terminals +italcorr h#*slant-.5u#; +adjust_fit(0,0); pickup rule.nib; +lft x9=hround 0.5u-eps; x7=x9+0.1u; x10=0.6w; x8=x10+0.3u; +y7=y8; y9=y10; y7-y9=1/5h; .5[y7,y9]=.5h; +draw z7--z8; % upper bar +draw z9--z10; % upper bar +penlabels(1,1',2,3,4,5,6,7,8,9,10); endchar; + +cmchar "round z zh"; +beginchar(hex"4F",8u#,x_height#,desc_depth#); +italcorr x_height#*slant-.5serif_fit#-.3u#; +adjust_fit(0,.5serif_fit#); +numeric arm_thickness[],z_stem; +if hefty: arm_thickness1=Vround(vair-vair_corr); arm_thickness2=vair; + z_stem=.6[vair,stem]; +else: arm_thickness1=vair; arm_thickness2=vair'; z_stem=.9[vair,stem]; fi +pickup tiny.nib; rt x1r=rt x2r=hround(w-.8u); lft x3l=3u; x4l = x3l; +top y1=h; y2=min(y1,h-2/3arm_thickness1); +y3=vround(-d+.85x_height); y4=y3-2/3arm_thickness1; +numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3)); +penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0); +penpos3(alpha*(z_stem-tiny),0); +penpos4(alpha*(z_stem-tiny),0); +pair delta; delta=penoffset z3-z2 of currentpen; +fill top lft z1l--z2l+delta---z3l+delta..lft z3l---lft z4l--z4r + --z3r-delta---z2r-delta..rt z2r---rt z1r..top z1r + ---cycle; % diagonal +pickup crisp.nib; pos5(arm_thickness1,90); pos6(hair,180); +top y5r=h; x5=x1; lft x6r=hround .75u; y6=good.y(y5l-beak/1.4)-eps; +arm(5,6,a,beak_darkness,-.4beak_jut); % upper arm and beak +pos12(vair',270); pos14(vair',90); +x12=x14=x3; bot y14l=bot y4; bot y12r=-d; +pos13(curve,0); rt x13l=hround (w-max(1.9u,2.65u-.5curve)); +y13=.5[y12,y14]; +%if serifs: + pos11(hair,180); pos10(flare,180); + y11=y14-.70[bar_height,0.85x_height]+.75flare; + lft x11r=hround(0.3u); bulb(12,11,10); % bulb + filldraw stroke pulled_super_arc.e(12,13)(.7superpull) + & pulled_super_arc.e(13,14)(.5superpull); +penlabels(1,2,3,4,10,11,12,13,14); endchar; diff --git a/fonts/wasy/wasydoc.pdf b/fonts/wasy/wasydoc.pdf Binary files differnew file mode 100644 index 0000000000..81fe564418 --- /dev/null +++ b/fonts/wasy/wasydoc.pdf diff --git a/fonts/wasy/wasydoc.tex b/fonts/wasy/wasydoc.tex new file mode 100644 index 0000000000..812710a332 --- /dev/null +++ b/fonts/wasy/wasydoc.tex @@ -0,0 +1,980 @@ +\magnification\magstep1 +\parskip 1.1ex plus 0.4ex +\advance\hsize -5truemm +\ifx\pdfoutput\undefines\else + \pdfhorigin=1truein + \pdfvorigin=1truein + \pdfpagewidth=210truemm + \pdfpageheight=297truemm +\fi +\parindent 0pt +\pretolerance 1000 +\tolerance 2000 +\hbadness 2000 +% +\font\tenssf = cmss10 % sans-serif font +\def\ssf{\tenssf} +\def\\{\char"5C{}} % define backslash +\def\({\char`\{} % define { +\def\){\char`\}} % define } +\def\newline{\hfill\break} +\def\de{\,{\rm d}} +\def\LaTeX{{\rm L\kern-.36em\raise.3ex\hbox{\sevenrm A}\kern-.15em\TeX}} +% +% the next line is used for development, to get alias-font names +% wasym... +%\def\newwasy{} +\input WASYFONT +% +%%% START %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\centerline{\bf The Symbol Font \tt wasy} +\vskip 1\parskip +\centerline{\it Roland Waldi} +\vskip 1mm +\centerline{Institut f\"ur Physik} +\centerline{Universit\"at Rostock} +\centerline{D-18051 Rostock, Germany} +\centerline{roland.waldi@uni-rostock.de} +\vskip 1mm +\centerline{Version 2.4 -- January 2020} + +\vskip 1.5\parskip + +The font {\tt wasy} contains all {\tt lasy} characters, and +a lot more symbols. +New characters +were modified from the {\tt mf} files of the standard \TeX\ fonts, +and many were designed from scratch. + +The first version was released in 1990. +Metafont sources for 5--10pt and a bold and slanted 10pt font +are available in the present version. +An extension to PLAIN-\TeX\ for using the fonts is included +in the file {\tt WASYFONT.tex}. + +This can probably be used in \LaTeX\ documents, +but a new \LaTeX\ format with the bindings already included and with +{\tt wasy} replacing the {\tt lasy} font would be the superiour +solution. +This version includes all {\tt lasy} characters at the proper codes +(causing some incompatibilities with version 1 of {\tt wasy}) +to make such a procedure easy. + +The file {\tt WASYFONT.2} contains substitutes for some macros +of {\tt WASYFONT.tex} to be used +at installations, that do not +support the {\tt wasy} fonts. + +Some characters make sense in slanted or boldface form (only available at 10pt, +although scaled fonts can be defined by the user). +These are included in slanted text, if instead of {\tt\\sl} +the command {\tt\\wsl} is used, and in bold text,\ +if instead of {\tt\\bf} +the command {\tt\\wbf} is used. Analogue commands for +\LaTeX\ are easy to define, too. + +Symbols (not letters) are defined in {\tt WASYFONT.tex} as +boxes, which simplifies their use in math-mode, but the {\tt\\/} +for italic correction for the slanted characters +will not work after a symbol. If this feature is +required, the {\tt\\hbox\(...\)} should be removed from the definition. + +A list of characters with their bindings in +{\tt WASYFONT.tex} follows. +Some macros are actually compositions of several characters useful in +the given context. +Macros using symbols +which are already available from standard \TeX\ fonts +are also included; these are marked +with $^*$. + +\bigskip + +general symbols +$$ +\halign{&\tt\\# \hfil&#\qquad\hfil\cr +male&\male &female&\female \cr +currency&\currency ¢ &\cent \cr +euro &\euro &kreuz&\kreuz \cr +smiley&\smiley &blacksmiley&\blacksmiley \cr +frownie&\frownie &sun&\sun \cr +checked&\checked &brokenvert&\brokenvert \cr +diameter&\diameter &invdiameter&\invdiameter \cr +phone&\phone &recorder &\recorder \cr +clock&\clock &permil &\permil \cr +bell&\bell &ataribox &\ataribox \cr +pointer&\pointer &lightning &\lightning \cr +agemO &\agemO &Paragraph &\Paragraph \cr +lozenge&\lozenge &applecmd &\applecmd \cr +therefore&\therefore \cr} +$$ + +music notes +$$ +\halign{&\tt\\# \hfil&#\qquad\hfil\cr +eighthnote&\eighthnote &quarternote&\quarternote \cr +halfnote&\halfnote &fullnote&\fullnote \cr +twonotes&\twonotes \cr} +$$ + +electrical engineering +$$ +\halign{&\tt\\# \hfil&#\qquad\hfil\cr +AC &\AC &HF &\HF \cr +VHF &\VHF \cr} +$$ + +APL +$$ +\halign{&\tt\\# \hfil&#\qquad\hfil\cr +APLup &\APLup &APLdown &\APLdown \cr +APLbox &\APLbox &APLinv &\APLinv \cr +APLleftarrowbox &\APLleftarrowbox&APLrightarrowbox &\APLrightarrowbox\cr +APLuparrowbox &\APLuparrowbox&APLdownarrowbox &\APLdownarrowbox\cr +APLinput&\APLinput &APLminus$^*$&\APLminus \cr +APLlog &\APLlog &APLstar &\APLstar \cr +APLvert$^*$&\APLvert{\ } & + APLvert\(\\APLdown\) &\APLvert{\APLdown} \cr +APLnot$^*$&\APLnot{\ } & + APLnot\(\\APLdown\) &\APLnot{\APLdown} \cr +APLnot\(\\land\) &\APLnot{\land} & + APLnot\(\\lor\) &\APLnot{\lor} \cr +APLcirc$^*$&\APLcirc{\ } & + APLcirc\(\\bot\) &\APLcirc{\bot} \cr +notbackslash$^*$ &\notbackslash & + notslash$^*$ &\notslash \cr +APLcomment &\APLcomment \cr} +$$ + +astronomy +$$ +\halign{&\tt\\# \hfil&#\qquad\hfil\cr +ascnode &\ascnode &descnode &\descnode \cr +vernal &\vernal &astrosun$^*$&\astrosun \cr +newmoon &\newmoon &fullmoon &\fullmoon \cr +leftmoon &\leftmoon &rightmoon &\rightmoon \cr +mercury &\mercury &venus &\venus \cr +mars &\mars &jupiter &\jupiter \cr +saturn &\saturn &uranus &\uranus \cr +neptune &\neptune &pluto &\pluto \cr +earth &\earth \cr} +$$ + +astrological symbols and zodiacal symbols +$$ +\halign{&\tt\\# \hfil&#\qquad\hfil\cr +conjunction &\conjunction &opposition &\opposition\cr +aries &\aries &libra &\libra \cr +taurus &\taurus &scorpio &\scorpio \cr +gemini &\gemini &sagittarius &\sagittarius\cr +cancer &\cancer &capricornus &\capricornus\cr +leo &\leo &aquarius &\aquarius \cr +virgo &\virgo &pisces &\pisces \cr +} +$$ + + +geometrical shapes +$$ +\halign{&\tt\\# \hfil&#\qquad\hfil\cr +hexstar &\hexstar &varhexstar&\varhexstar \cr +davidsstar &\davidsstar&APLstar&\APLstar \cr +Circle &\Circle &CIRCLE &\CIRCLE \cr +Leftcircle &\Leftcircle &LEFTCIRCLE &\LEFTCIRCLE \cr +Rightcircle&\Rightcircle &RIGHTCIRCLE &\RIGHTCIRCLE \cr +LEFTcircle &\LEFTcircle &RIGHTcircle &\RIGHTcircle \cr +LEFTarrow &\LEFTarrow &RIGHTarrow &\RIGHTarrow \cr +UParrow &\UParrow &DOWNarrow &\DOWNarrow \cr +Box &\Box &APLbox &\APLbox \cr +XBox &\XBox&Bowtie &\Bowtie \cr +Diamond &\Diamond &octagon &\octagon \cr +hexagon &\hexagon &varhexagon &\varhexagon \cr +pentagon &\pentagon \cr} +$$ + +general math \& physics +$$ +\halign{&\tt# \hfil&#\qquad\hfil\cr +\\varangle&\varangle &\$\\invneg\$ &$\invneg$\cr +\\diameter &\diameter &\\therefore&\therefore \cr +\\leftturn &\leftturn &\\rightturn &\rightturn \cr +\\photon &\photon &\\gluon &\gluon \cr} +$$ + +math operators +$$ +\halign{&\tt\$a\\#b\$ \hfil&$a#b$\qquad\hfil\cr +ocircle &\ocircle &logof &\logof \cr +oplus$^*$ &\oplus &otimes$^*$ &\otimes \cr +le$^*$ &\le &ge$^*$ &\ge \cr +apprle &\apprle &apprge &\apprge \cr +lhd &\lhd &rhd &\rhd \cr +unlhd &\unlhd &unrhd &\unrhd \cr +LHD &\LHD &RHD &\RHD \cr +sqsubset &\sqsubset &sqsupset &\sqsupset \cr +sqsubseteq$^*$ &\sqsubseteq &sqsupseteq$^*$ &\sqsupseteq \cr +propto$^*$ &\propto &varpropto &\varpropto \cr +leadsto &\leadsto \cr} +$$ + +integrals (text style) +$$ +\halign{&\tt\$\\#\_a\char`\^b f(x)dx\$ \hfil&$#_a^b f(x)dx$\qquad\hfil\cr +varint&\varint &iint&\iint \cr +iiint&\iiint &varoint&\varoint \cr +oiint&\oiint \cr} +$$ + +integrals (display style) +$$ +\varint \iint \iiint \varoint \oiint +$$ + +With the control sequence +{\tt\\newpropto} you can change the proportional sign to the +thin {\tt wasy} symbol ($\varpropto$), +which is more distinct from alpha ($\alpha$) +than the default symbol ($\propto$). + +With the control sequence +{\tt\\newint} you can change the \TeX\ integrals from $\int,\oint$ +to the vertical ones $\varint,\varoint$, in display: +$$\int_a^b \to \varint_a^b,\qquad + \oint_C \to \varoint_C +$$ + +There are also a few letters +in roman style added, although these and some symbols as +\agemO, \permil\ should +be in a separate font, to be created in different +styles like italic, sans serif etc. -- the {\tt wasychr.mf} source +is prepared for that, and now has bold and slanted versions. +$$ +\halign{&\tt\\# \hfil&#\qquad\hfil\cr +thorn &\thorn { \wbf\thorn} {\wsl\thorn} + &Thorn &\Thorn { \wbf\Thorn} {\wsl\Thorn}\cr +dh &\dh { \wbf\dh} {\wsl\dh} + &Dh$^*$ &\Dh { \wbf \Dh} {\wsl \Dh}\cr +inve &\inve { \wbf\inve} {\wsl\inve} + &openo &\openo { \wbf\openo} {\wsl\openo}\cr +s &\s { \wbf\s } {\wsl\s } + &z &\z { \wbf\z} {\wsl\z}\cr +} +$$ + + +\bigskip + +\centerline{\bf Examples} + +``We provide the \eighthnote\twonotes, you provide the \smiley'' + +The planets ($\astrosun\to{}$outer space): +\mercury\ \venus\ \earth\ \mars\ asteroids +\jupiter\ \saturn\ \uranus\ \neptune\ (\pluto). $r_{\mercury} < r_{\earth}$ + +special characters on PCs: \smiley, \blacksmiley, $\heartsuit$, +$\diamondsuit$, $\clubsuit$, $\spadesuit$, $\bullet$, +$\ocircle$, \male, \female, \eighthnote, \twonotes, \sun, \RIGHTarrow, +\LEFTarrow, $\updownarrow$, !!, \P, \S, +$\underline{\underline{\rm\hbox to 0.85em{\hss}}}$, +$\underline{\updownarrow}$, +$\uparrow$, $\downarrow$, $\to$, $\leftarrow$, \UParrow, \DOWNarrow, +\brokenvert, $\invneg$, $\neg$, \dots + +special characters on Atari STs: \pointer, \ataribox, +\checked, \clock, \bell, +\eighthnote, \inve, +$\invneg$, $\neg$, $\varoint$, \dots + +tube dimensions: $\diameter 5\,{\rm mm}$, $d = 0.5\,{\rm mm}$, + $l = 50\,{\rm mm}$ + +prices 1\$ 2\cent\ or 0.95\euro\ or 0.80{\it\$}.\newline +{\wsl prices 1\$ 2\cent\ or 0.95\euro\ or 0.80{\it\$}.} + +legal text: \Paragraph\Paragraph\ 9--22 StVG, \Paragraph\ 12 StVO oder +{\wsl \Paragraph\Paragraph\ 9--22 StVG, \Paragraph\ 12 StVO} + +Icelandic text: \'Eg veit \thorn a\dh\ ekki e\dh a +{\wbf \'Eg veit \thorn a\dh\ ekki}. + +traditional typography: ligature \s\z=\ss, \s ure to po\s\s e\s s +\s atisfaction + +simple phonetic notation: +corner ['k\openo:n\inve], this [\dh is], +thrash [{\teni\char"12}r\ae{\tensy\char"73\kern 0.3pt}], +vision ['v\i\z n] + +display math: +$$ +\mathop{\varangle}(\vec a,\vec b) = 30^{\circ} +$$ +$$ +\prod_{x \apprle 5} a_x \logof b_x \simeq \varint_{x \apprge 5} + a \ocircle b\de x +\eqno{(\hbox{nonsense.1})} +$$ +$$ +\hbox{Gauss' law:\qquad} \iiint_V \nabla {\bf F}({\bf x}) \de^3x += \oiint_{S(V)} {\bf F}({\bf x}) \de{\bf a} +$$ +$$ +\hbox{Stokes' law:\qquad} \iint_A +\lbrack\nabla \times {\bf F}({\bf x})\rbrack \de{\bf a} += \varoint_{C(A)} {\bf F}({\bf x}) \de{\bf l} +$$ + + +APL Program:\newline +$U \leftarrow \APLminus 1+ G \leftarrow 2 \times \iota N +\leftarrow \APLbox$ \qquad \APLcomment\quad generate vectors of odd and +even numbers + +\goodbreak +APL keyboard layout: +\par\nobreak +\def\1{\underbar} +\halign{&#\ \cr +&1& &2& &3& &4& &5& &6& &7& &8& &9& &0& &+& &$\times$& &$\diamond$\cr +&&Q& &W& &E& &R& &T& &Y& &U& &I& &O& &P& &$\leftarrow$& &$\to$\cr +&&A& &S& &D& &F& &G& &H& &J& &K& &L& &$\lbrack$& &$\rbrack$& &\#\cr +&$\vdash$& &Z& &X& &C& &V& &B& &N& &M& &,& &.& &/\cr +\cr +&\"\ & &\APLminus& &$<$& &$\le$& &=& &$\ge$& &$>$& &$\ne$& &$\lor$& + &$\land$& &$-$& &$\div$& &\$\cr +&&?& &$\omega$& &$\epsilon$& &$\rho$& &$\sim$& &$\uparrow$& + &$\downarrow$& &$\iota$& &$\ocircle$& &$\star$& &$\{$& &$\}$\cr +&&$\alpha$& &$\lceil$& &$\lfloor$& &\tt\_& &\APLdown& + &\APLup& &$\circ$& &{\tt\char"0D}& &\APLbox& &(& &)& &$\sim$\cr +&$\dashv$& &$\subset$& &$\supset$& &$\cap$& &$\cup$& &$\bot$& &$\top$& + &$\vert$& &;& &:& &$\backslash$\cr +\cr +&\tt I& &\APLnot{\APLdown}& &\APLvert{\APLdown}& &\APLvert{\APLup}& + &\APLvert{\ocircle}& &\invdiameter& &$\ominus$& &\APLlog& + &\APLnot{\lor}& &\APLnot{\land}& &!& &\APLinv& &\APLinput\cr +&&\1Q& &\1W& &\1E& &\1R& &\1T& &\1Y& &\1U& &\1I& &\1O& &\1P& + &\APLleftarrowbox& &\APLrightarrowbox\cr +&&\1A& &\1S& &\1D& &\1F& &\1G& &\1H& &\1J& &\1K& &\1L& + &\APLcirc{\bot}& &\APLcirc{\top}& &\=,& \cr +&\1{\APLup}& &\1Z& &\1X& &\1C& &\1V& &\1B& &\1N& &\1M& &\APLcomment& + &\notbackslash& &\notslash\cr +\cr +& & & & & & & & + & & & & & & &$\otimes$& \cr +&& & & & & & & & & & &\APLuparrowbox& &\APLdownarrowbox& \cr% +} +\medskip + +check the appropriate box like this \XBox\ or that +\Box\kern-.6em\checked: + +\noindent\Box\quad I need the {\tt wasy} fonts\newline +\Box\quad I don't need the {\tt wasy} fonts + + + + + +\bigskip +\goodbreak + +\centerline{\bf Font Table} + +{\tt wasy}: +{\wasy$$ +\halign {&#\quad\hfil\cr + {\tt 00 =} \char"00% +&{\tt 01 =} \char"01% +&{\tt 02 =} \char"02% +&{\tt 03 =} \char"03% +&{\tt 04 =} \char"04% +&{\tt 05 =} \char"05% +&{\tt 06 =} \char"06% +&{\tt 07 =} \char"07\cr + {\tt 08 =} \char"08% +&{\tt 09 =} \char"09% +&{\tt 0A =} \char"0A% +&{\tt 0B =} \char"0B% +&{\tt 0C =} \char"0C% +&{\tt 0D =} \char"0D% +&{\tt 0E =} \char"0E% +&{\tt 0F =} \char"0F\cr + {\tt 10 =} \char"10% +&{\tt 11 =} \char"11% +&{\tt 12 =} \char"12% +&{\tt 13 =} \char"13% +&{\tt 14 =} \char"14% +&{\tt 15 =} \char"15% +&{\tt 16 =} \char"16% +&{\tt 17 =} \char"17\cr + {\tt 18 =} \char"18% +&{\tt 19 =} \char"19% +&{\tt 1A =} \char"1A% +&{\tt 1B =} \char"1B% +&{\tt 1C =} \char"1C% +&{\tt 1D =} \char"1D% +&{\tt 1E =} \char"1E% +&{\tt 1F =} \char"1F\cr + {\tt 20 =} \char"20% +&{\tt 21 =} \char"21% +&{\tt 22 =} \char"22% +&{\tt 23 =} \char"23% +&{\tt 24 =} \char"24% +&{\tt 25 =} \char"25% +&{\tt 26 =} \char"26% +&{\tt 27 =} \char"27\cr + {\tt 28 =} \char"28% +&{\tt 29 =} \char"29% +&{\tt 2A =} \char"2A% +&{\tt 2B =} \char"2B% +&{\tt 2C =} \char"2C% +&{\tt 2D =} \char"2D% +&{\tt 2E =} \char"2E% +&{\tt 2F =} \char"2F\cr + {\tt 30 =} \char"30% +&{\tt 31 =} \char"31% +&{\tt 32 =} \char"32% +&{\tt 33 =} \char"33% +&{\tt 34 =} \char"34% +&{\tt 35 =} \char"35% +&{\tt 36 =} \char"36% +&{\tt 37 =} \char"37\cr + {\tt 38 =} \char"38% +&{\tt 39 =} \char"39% +&{\tt 3A =} \char"3A% +&{\tt 3B =} \char"3B% +&{\tt 3C =} \char"3C% +&{\tt 3D =} \char"3D% +&{\tt 3E =} \char"3E% +&{\tt 3F =} \char"3F\cr + {\tt 40 =} \char"40% +&{\tt 41 =} \char"41% +&{\tt 42 =} \char"42% +&{\tt 43 =} \char"43% +&{\tt 44 =} \char"44% +&{\tt 45 =} \char"45% +&{\tt 46 =} \char"46% +&{\tt 47 =} \char"47\cr + {\tt 48 =} \char"48% +&{\tt 49 =} \char"49% +&{\tt 4A =} \char"4A% +&{\tt 4B =} \char"4B% +&{\tt 4C =} \char"4C% +&{\tt 4D =} \char"4D% +&{\tt 4E =} \char"4E% +&{\tt 4F =} \char"4F\cr + {\tt 50 =} \char"50% +&{\tt 51 =} \char"51% +&{\tt 52 =} \char"52% +&{\tt 53 =} \char"53% +&{\tt 54 =} \char"54% +&{\tt 55 =} \char"55% +&{\tt 56 =} \char"56% +&{\tt 57 =} \char"57\cr + {\tt 58 =} \char"58% +&{\tt 59 =} \char"59% +&{\tt 5A =} \char"5A% +&{\tt 5B =} \char"5B% +&{\tt 5C =} \char"5C% +&{\tt 5D =} \char"5D% +&{\tt 5E =} \char"5E% +&{\tt 5F =} \char"5F\cr + {\tt 60 =} \char"60% +&{\tt 61 =} \char"61% +&{\tt 62 =} \char"62% +&{\tt 63 =} \char"63% +&{\tt 64 =} \char"64% +&{\tt 65 =} \char"65% +&{\tt 66 =} \char"66% +&{\tt 67 =} \char"67\cr + {\tt 68 =} \char"68% +&{\tt 69 =} \char"69% +&{\tt 6A =} \char"6A% +&{\tt 6B =} \char"6B% +&{\tt 6C =} \char"6C% +&{\tt 6D =} \char"6D% +&{\tt 6E =} \char"6E% +&{\tt 6F =} \char"6F\cr + {\tt 70 =} \char"70% +&{\tt 71 =} \char"71% +&{\tt 72 =} \char"72% +&{\tt 73 =} \char"73% +&{\tt 74 =} \char"74% +&{\tt 75 =} \char"75% +&{\tt 76 =} \char"76% +&{\tt 77 =} \char"77\cr + {\tt 78 =} \char"78% +&{\tt 79 =} \char"79% +&{\tt 7A =} \char"7A% +&{\tt 7B =} \char"7B% +&{\tt 7C =} \char"7C% +&{\tt 7D =} \char"7D% +&{\tt 7E =} \char"7E% +&{\tt 7F =} \char"7F\cr} +$$} + +\bigskip + +{\tt wasy 5pt}: +{\fivewasy$$ +\halign {&#\quad\hfil\cr + {\tt 00 =} \char"00% +&{\tt 01 =} \char"01% +&{\tt 02 =} \char"02% +&{\tt 03 =} \char"03% +&{\tt 04 =} \char"04% +&{\tt 05 =} \char"05% +&{\tt 06 =} \char"06% +&{\tt 07 =} \char"07\cr + {\tt 08 =} \char"08% +&{\tt 09 =} \char"09% +&{\tt 0A =} \char"0A% +&{\tt 0B =} \char"0B% +&{\tt 0C =} \char"0C% +&{\tt 0D =} \char"0D% +&{\tt 0E =} \char"0E% +&{\tt 0F =} \char"0F\cr + {\tt 10 =} \char"10% +&{\tt 11 =} \char"11% +&{\tt 12 =} \char"12% +&{\tt 13 =} \char"13% +&{\tt 14 =} \char"14% +&{\tt 15 =} \char"15% +&{\tt 16 =} \char"16% +&{\tt 17 =} \char"17\cr + {\tt 18 =} \char"18% +&{\tt 19 =} \char"19% +&{\tt 1A =} \char"1A% +&{\tt 1B =} \char"1B% +&{\tt 1C =} \char"1C% +&{\tt 1D =} \char"1D% +&{\tt 1E =} \char"1E% +&{\tt 1F =} \char"1F\cr + {\tt 20 =} \char"20% +&{\tt 21 =} \char"21% +&{\tt 22 =} \char"22% +&{\tt 23 =} \char"23% +&{\tt 24 =} \char"24% +&{\tt 25 =} \char"25% +&{\tt 26 =} \char"26% +&{\tt 27 =} \char"27\cr + {\tt 28 =} \char"28% +&{\tt 29 =} \char"29% +&{\tt 2A =} \char"2A% +&{\tt 2B =} \char"2B% +&{\tt 2C =} \char"2C% +&{\tt 2D =} \char"2D% +&{\tt 2E =} \char"2E% +&{\tt 2F =} \char"2F\cr + {\tt 30 =} \char"30% +&{\tt 31 =} \char"31% +&{\tt 32 =} \char"32% +&{\tt 33 =} \char"33% +&{\tt 34 =} \char"34% +&{\tt 35 =} \char"35% +&{\tt 36 =} \char"36% +&{\tt 37 =} \char"37\cr + {\tt 38 =} \char"38% +&{\tt 39 =} \char"39% +&{\tt 3A =} \char"3A% +&{\tt 3B =} \char"3B% +&{\tt 3C =} \char"3C% +&{\tt 3D =} \char"3D% +&{\tt 3E =} \char"3E% +&{\tt 3F =} \char"3F\cr + {\tt 40 =} \char"40% +&{\tt 41 =} \char"41% +&{\tt 42 =} \char"42% +&{\tt 43 =} \char"43% +&{\tt 44 =} \char"44% +&{\tt 45 =} \char"45% +&{\tt 46 =} \char"46% +&{\tt 47 =} \char"47\cr + {\tt 48 =} \char"48% +&{\tt 49 =} \char"49% +&{\tt 4A =} \char"4A% +&{\tt 4B =} \char"4B% +&{\tt 4C =} \char"4C% +&{\tt 4D =} \char"4D% +&{\tt 4E =} \char"4E% +&{\tt 4F =} \char"4F\cr + {\tt 50 =} \char"50% +&{\tt 51 =} \char"51% +&{\tt 52 =} \char"52% +&{\tt 53 =} \char"53% +&{\tt 54 =} \char"54% +&{\tt 55 =} \char"55% +&{\tt 56 =} \char"56% +&{\tt 57 =} \char"57\cr + {\tt 58 =} \char"58% +&{\tt 59 =} \char"59% +&{\tt 5A =} \char"5A% +&{\tt 5B =} \char"5B% +&{\tt 5C =} \char"5C% +&{\tt 5D =} \char"5D% +&{\tt 5E =} \char"5E% +&{\tt 5F =} \char"5F\cr + {\tt 60 =} \char"60% +&{\tt 61 =} \char"61% +&{\tt 62 =} \char"62% +&{\tt 63 =} \char"63% +&{\tt 64 =} \char"64% +&{\tt 65 =} \char"65% +&{\tt 66 =} \char"66% +&{\tt 67 =} \char"67\cr + {\tt 68 =} \char"68% +&{\tt 69 =} \char"69% +&{\tt 6A =} \char"6A% +&{\tt 6B =} \char"6B% +&{\tt 6C =} \char"6C% +&{\tt 6D =} \char"6D% +&{\tt 6E =} \char"6E% +&{\tt 6F =} \char"6F\cr + {\tt 70 =} \char"70% +&{\tt 71 =} \char"71% +&{\tt 72 =} \char"72% +&{\tt 73 =} \char"73% +&{\tt 74 =} \char"74% +&{\tt 75 =} \char"75% +&{\tt 76 =} \char"76% +&{\tt 77 =} \char"77\cr + {\tt 78 =} \char"78% +&{\tt 79 =} \char"79% +&{\tt 7A =} \char"7A% +&{\tt 7B =} \char"7B% +&{\tt 7C =} \char"7C% +&{\tt 7D =} \char"7D% +&{\tt 7E =} \char"7E% +&{\tt 7F =} \char"7F\cr} +$$} + +\bigskip + +{\tt wasyb}: +{\wasyb$$ +\halign {&#\quad\hfil\cr + {\tt 00 =} \char"00% +&{\tt 01 =} \char"01% +&{\tt 02 =} \char"02% +&{\tt 03 =} \char"03% +&{\tt 04 =} \char"04% +&{\tt 05 =} \char"05% +&{\tt 06 =} \char"06% +&{\tt 07 =} \char"07\cr + {\tt 08 =} \char"08% +&{\tt 09 =} \char"09% +&{\tt 0A =} \char"0A% +&{\tt 0B =} \char"0B% +&{\tt 0C =} \char"0C% +&{\tt 0D =} \char"0D% +&{\tt 0E =} \char"0E% +&{\tt 0F =} \char"0F\cr + {\tt 10 =} \char"10% +&{\tt 11 =} \char"11% +&{\tt 12 =} \char"12% +&{\tt 13 =} \char"13% +&{\tt 14 =} \char"14% +&{\tt 15 =} \char"15% +&{\tt 16 =} \char"16% +&{\tt 17 =} \char"17\cr + {\tt 18 =} \char"18% +&{\tt 19 =} \char"19% +&{\tt 1A =} \char"1A% +&{\tt 1B =} \char"1B% +&{\tt 1C =} \char"1C% +&{\tt 1D =} \char"1D% +&{\tt 1E =} \char"1E% +&{\tt 1F =} \char"1F\cr + {\tt 20 =} \char"20% +&{\tt 21 =} \char"21% +&{\tt 22 =} \char"22% +&{\tt 23 =} \char"23% +&{\tt 24 =} \char"24% +&{\tt 25 =} \char"25% +&{\tt 26 =} \char"26% +&{\tt 27 =} \char"27\cr + {\tt 28 =} \char"28% +&{\tt 29 =} \char"29% +&{\tt 2A =} \char"2A% +&{\tt 2B =} \char"2B% +&{\tt 2C =} \char"2C% +&{\tt 2D =} \char"2D% +&{\tt 2E =} \char"2E% +&{\tt 2F =} \char"2F\cr + {\tt 30 =} \char"30% +&{\tt 31 =} \char"31% +&{\tt 32 =} \char"32% +&{\tt 33 =} \char"33% +&{\tt 34 =} \char"34% +&{\tt 35 =} \char"35% +&{\tt 36 =} \char"36% +&{\tt 37 =} \char"37\cr + {\tt 38 =} \char"38% +&{\tt 39 =} \char"39% +&{\tt 3A =} \char"3A% +&{\tt 3B =} \char"3B% +&{\tt 3C =} \char"3C% +&{\tt 3D =} \char"3D% +&{\tt 3E =} \char"3E% +&{\tt 3F =} \char"3F\cr + {\tt 40 =} \char"40% +&{\tt 41 =} \char"41% +&{\tt 42 =} \char"42% +&{\tt 43 =} \char"43% +&{\tt 44 =} \char"44% +&{\tt 45 =} \char"45% +&{\tt 46 =} \char"46% +&{\tt 47 =} \char"47\cr + {\tt 48 =} \char"48% +&{\tt 49 =} \char"49% +&{\tt 4A =} \char"4A% +&{\tt 4B =} \char"4B% +&{\tt 4C =} \char"4C% +&{\tt 4D =} \char"4D% +&{\tt 4E =} \char"4E% +&{\tt 4F =} \char"4F\cr + {\tt 50 =} \char"50% +&{\tt 51 =} \char"51% +&{\tt 52 =} \char"52% +&{\tt 53 =} \char"53% +&{\tt 54 =} \char"54% +&{\tt 55 =} \char"55% +&{\tt 56 =} \char"56% +&{\tt 57 =} \char"57\cr + {\tt 58 =} \char"58% +&{\tt 59 =} \char"59% +&{\tt 5A =} \char"5A% +&{\tt 5B =} \char"5B% +&{\tt 5C =} \char"5C% +&{\tt 5D =} \char"5D% +&{\tt 5E =} \char"5E% +&{\tt 5F =} \char"5F\cr + {\tt 60 =} \char"60% +&{\tt 61 =} \char"61% +&{\tt 62 =} \char"62% +&{\tt 63 =} \char"63% +&{\tt 64 =} \char"64% +&{\tt 65 =} \char"65% +&{\tt 66 =} \char"66% +&{\tt 67 =} \char"67\cr + {\tt 68 =} \char"68% +&{\tt 69 =} \char"69% +&{\tt 6A =} \char"6A% +&{\tt 6B =} \char"6B% +&{\tt 6C =} \char"6C% +&{\tt 6D =} \char"6D% +&{\tt 6E =} \char"6E% +&{\tt 6F =} \char"6F\cr + {\tt 70 =} \char"70% +&{\tt 71 =} \char"71% +&{\tt 72 =} \char"72% +&{\tt 73 =} \char"73% +&{\tt 74 =} \char"74% +&{\tt 75 =} \char"75% +&{\tt 76 =} \char"76% +&{\tt 77 =} \char"77\cr + {\tt 78 =} \char"78% +&{\tt 79 =} \char"79% +&{\tt 7A =} \char"7A% +&{\tt 7B =} \char"7B% +&{\tt 7C =} \char"7C% +&{\tt 7D =} \char"7D% +&{\tt 7E =} \char"7E% +&{\tt 7F =} \char"7F\cr} +$$} + +\bigskip + +{\tt wasysl}: +{\wasysl$$ +\halign {&#\quad\hfil\cr + {\tt 00 =} \char"00% +&{\tt 01 =} \char"01% +&{\tt 02 =} \char"02% +&{\tt 03 =} \char"03% +&{\tt 04 =} \char"04% +&{\tt 05 =} \char"05% +&{\tt 06 =} \char"06% +&{\tt 07 =} \char"07\cr + {\tt 08 =} \char"08% +&{\tt 09 =} \char"09% +&{\tt 0A =} \char"0A% +&{\tt 0B =} \char"0B% +&{\tt 0C =} \char"0C% +&{\tt 0D =} \char"0D% +&{\tt 0E =} \char"0E% +&{\tt 0F =} \char"0F\cr + {\tt 10 =} \char"10% +&{\tt 11 =} \char"11% +&{\tt 12 =} \char"12% +&{\tt 13 =} \char"13% +&{\tt 14 =} \char"14% +&{\tt 15 =} \char"15% +&{\tt 16 =} \char"16% +&{\tt 17 =} \char"17\cr + {\tt 18 =} \char"18% +&{\tt 19 =} \char"19% +&{\tt 1A =} \char"1A% +&{\tt 1B =} \char"1B% +&{\tt 1C =} \char"1C% +&{\tt 1D =} \char"1D% +&{\tt 1E =} \char"1E% +&{\tt 1F =} \char"1F\cr + {\tt 20 =} \char"20% +&{\tt 21 =} \char"21% +&{\tt 22 =} \char"22% +&{\tt 23 =} \char"23% +&{\tt 24 =} \char"24% +&{\tt 25 =} \char"25% +&{\tt 26 =} \char"26% +&{\tt 27 =} \char"27\cr + {\tt 28 =} \char"28% +&{\tt 29 =} \char"29% +&{\tt 2A =} \char"2A% +&{\tt 2B =} \char"2B% +&{\tt 2C =} \char"2C% +&{\tt 2D =} \char"2D% +&{\tt 2E =} \char"2E% +&{\tt 2F =} \char"2F\cr + {\tt 30 =} \char"30% +&{\tt 31 =} \char"31% +&{\tt 32 =} \char"32% +&{\tt 33 =} \char"33% +&{\tt 34 =} \char"34% +&{\tt 35 =} \char"35% +&{\tt 36 =} \char"36% +&{\tt 37 =} \char"37\cr + {\tt 38 =} \char"38% +&{\tt 39 =} \char"39% +&{\tt 3A =} \char"3A% +&{\tt 3B =} \char"3B% +&{\tt 3C =} \char"3C% +&{\tt 3D =} \char"3D% +&{\tt 3E =} \char"3E% +&{\tt 3F =} \char"3F\cr + {\tt 40 =} \char"40% +&{\tt 41 =} \char"41% +&{\tt 42 =} \char"42% +&{\tt 43 =} \char"43% +&{\tt 44 =} \char"44% +&{\tt 45 =} \char"45% +&{\tt 46 =} \char"46% +&{\tt 47 =} \char"47\cr + {\tt 48 =} \char"48% +&{\tt 49 =} \char"49% +&{\tt 4A =} \char"4A% +&{\tt 4B =} \char"4B% +&{\tt 4C =} \char"4C% +&{\tt 4D =} \char"4D% +&{\tt 4E =} \char"4E% +&{\tt 4F =} \char"4F\cr + {\tt 50 =} \char"50% +&{\tt 51 =} \char"51% +&{\tt 52 =} \char"52% +&{\tt 53 =} \char"53% +&{\tt 54 =} \char"54% +&{\tt 55 =} \char"55% +&{\tt 56 =} \char"56% +&{\tt 57 =} \char"57\cr + {\tt 58 =} \char"58% +&{\tt 59 =} \char"59% +&{\tt 5A =} \char"5A% +&{\tt 5B =} \char"5B% +&{\tt 5C =} \char"5C% +&{\tt 5D =} \char"5D% +&{\tt 5E =} \char"5E% +&{\tt 5F =} \char"5F\cr + {\tt 60 =} \char"60% +&{\tt 61 =} \char"61% +&{\tt 62 =} \char"62% +&{\tt 63 =} \char"63% +&{\tt 64 =} \char"64% +&{\tt 65 =} \char"65% +&{\tt 66 =} \char"66% +&{\tt 67 =} \char"67\cr + {\tt 68 =} \char"68% +&{\tt 69 =} \char"69% +&{\tt 6A =} \char"6A% +&{\tt 6B =} \char"6B% +&{\tt 6C =} \char"6C% +&{\tt 6D =} \char"6D% +&{\tt 6E =} \char"6E% +&{\tt 6F =} \char"6F\cr + {\tt 70 =} \char"70% +&{\tt 71 =} \char"71% +&{\tt 72 =} \char"72% +&{\tt 73 =} \char"73% +&{\tt 74 =} \char"74% +&{\tt 75 =} \char"75% +&{\tt 76 =} \char"76% +&{\tt 77 =} \char"77\cr + {\tt 78 =} \char"78% +&{\tt 79 =} \char"79% +&{\tt 7A =} \char"7A% +&{\tt 7B =} \char"7B% +&{\tt 7C =} \char"7C% +&{\tt 7D =} \char"7D% +&{\tt 7E =} \char"7E% +&{\tt 7F =} \char"7F\cr} +$$} + +\bigskip + +{\bf Changes since version 1.0} + +version 1.1: + +{\tt\\varangle} has been centered at the math axis + +version 2.0: + +new: letters \Thorn,\thorn,\dh,\inve,\openo,\agemO + +new astrological and zodiacal symbols + +new symbols permil, cent, ataribox + +now the full set of +{\tt lasy} is included; for this purpose 9 characters +(\smiley, \blacksmiley, \frownie, \sun, +\jupiter, \saturn, \uranus, \neptune, \pluto) have +{\bf changed code}! + +{\tt wasyb10} font for bold math added + +version 2.1: + +new spacing for \openo + +version 2.2: + +{\tt wasysl10} font for slanted characters added + +new German Paragraph \Paragraph, currency \euro + +new commands {\tt \\wsl, \\wbf} + +version 2.3: + +new scaling for \ataribox\ (bugfix) + +corrections for \APLuparrowbox\ and \APLdownarrowbox\ at small fonts (bugfix) + +italic corrections improved ({\tt\\/} for {\tt wasysl10}; works for +symbols only without {\tt\\hbox} in the definition!) + +new apple cmd symbol \applecmd + +version 2.4: + +new characters long-s \s\ and round-z \z + +improved \opposition\ (bugfix) + +new macros for planets and some other astronomy symbols for use +in math mode subscripts (i.e.\ proper size change). + +\bye diff --git a/fonts/wasy/wasysl10.mf b/fonts/wasy/wasysl10.mf new file mode 100644 index 0000000000..7e5c5cfda0 --- /dev/null +++ b/fonts/wasy/wasysl10.mf @@ -0,0 +1,100 @@ +% This is WASY10.MF in text format +% additional symbols for math, physics, astronomy and other fields + +%input modes; +%mode=hp_laser; + +if unknown cmbase: input cmbase fi + +font_identifier:="WASY"; font_size 10pt#; + +u#:=20/36pt#; % unit width +width_adj#:=0pt#; % width adjustment for certain characters +serif_fit#:=0pt#; % extra sidebar near lowercase serifs +cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs +letter_fit#:=0pt#; % extra space added to all sidebars + +body_height#:=270/36pt#; % height of tallest characters +asc_height#:=250/36pt#; % height of lowercase ascenders +cap_height#:=246/36pt#; % height of caps +fig_height#:=232/36pt#; % height of numerals +x_height#:=155/36pt#; % height of lowercase without ascenders +math_axis#:=90/36pt#; % axis of symmetry for math symbols +bar_height#:=87/36pt#; % height of crossbar in lowercase e +comma_depth#:=70/36pt#; % depth of comma below baseline +desc_depth#:=70/36pt#; % depth of lowercase descenders + +crisp#:=0pt#; % diameter of serif corners +tiny#:=8/36pt#; % diameter of rounded corners +fine#:=7/36pt#; % diameter of sharply rounded corners +thin_join#:=7/36pt#; % width of extrafine details +hair#:=9/36pt#; % lowercase hairline breadth +stem#:=25/36pt#; % lowercase stem breadth +curve#:=30/36pt#; % lowercase curve breadth +ess#:=27/36pt#; % breadth in middle of lowercase s +flare#:=33/36pt#; % diameter of bulbs or breadth of terminals +dot_size#:=38/36pt#; % diameter of dots +cap_hair#:=11/36pt#; % uppercase hairline breadth +cap_stem#:=32/36pt#; % uppercase stem breadth +cap_curve#:=37/36pt#; % uppercase curve breadth +cap_ess#:=35/36pt#; % breadth in middle of uppercase s +rule_thickness#:=.4pt#; % thickness of lines in math symbols + +dish#:=1/36pt#; % amount erased at top or bottom of serifs +bracket#:=20/36pt#; % vertical distance from serif base to tangent +jut#:=28/36pt#; % protrusion of lowercase serifs +cap_jut#:=37/36pt#; % protrusion of uppercase serifs +beak_jut#:=10/36pt#; % horizontal protrusion of beak serifs +beak#:=70/36pt#; % vertical protrusion of beak serifs +vair#:=8/36pt#; % vertical diameter of hairlines +notch_cut#:=10pt#; % maximum breadth above or below notches +bar#:=11/36pt#; % lowercase bar thickness +slab#:=11/36pt#; % serif and arm thickness +cap_bar#:=11/36pt#; % uppercase bar thickness +cap_band#:=11/36pt#; % uppercase thickness above/below lobes +cap_notch_cut#:=10pt#; % max breadth above/below uppercase notches +serif_drop#:=4/36pt#; % vertical drop of sloped serifs +stem_corr#:=1/36pt#; % for small refinements of stem breadth +vair_corr#:=1/36pt#; % for small refinements of hairline height +apex_corr#:=0pt#; % extra width at diagonal junctions + +o#:=8/36pt#; % amount of overshoot for curves +apex_o#:=8/36pt#; % amount of overshoot for diagonal junctions + +slant:=1/6; % tilt ratio $(\Delta x/\Delta y)$ +fudge:=1; % factor applied to weights of heavy characters +math_spread:=0; % extra openness of math symbols +superness:=1/sqrt2; % parameter for superellipses +superpull:=1/6; % extra openness inside bowls +beak_darkness:=11/30; % fraction of triangle inside beak serifs +ligs:=2; % level of ligatures to be included + +square_dots:=false; % should dots be square? +hefty:=false; % should we try hard not to be overweight? +serifs:=true; % should serifs and bulbs be attached? +monospace:=false; % should all characters have the same width? +variant_g:=false; % should an italic-style g be used? +low_asterisk:=false; % should the asterisk be centered at the axis? +math_fitting:=false; % should math-mode spacing be used? + + +if ligs>1: font_coding_scheme:="TeX text"; +else: font_coding_scheme:=if ligs=0: "TeX typewriter text" + else: "TeX text without f-ligatures" fi; + fi + +mode_setup; font_setup; + +input rsym; % symbols +input lasychr; % lasy font symbols + + +font_slant slant; font_x_height x_height#; +if monospace: font_normal_space 9u#; % no stretching or shrinking + font_quad 18u#; + font_extra_space 9u#; +else: font_normal_space 6u#+2letter_fit#; + font_normal_stretch 3u#; font_normal_shrink 2u#; + font_quad 18u#+4letter_fit#; + font_extra_space 2u#; fi +bye. |