summaryrefslogtreecommitdiff
path: root/fonts/cmastro
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/cmastro
Initial commit
Diffstat (limited to 'fonts/cmastro')
-rw-r--r--fonts/cmastro/00astro.sty32
-rw-r--r--fonts/cmastro/00astro.tex75
-rw-r--r--fonts/cmastro/00dofour.sh6
-rw-r--r--fonts/cmastro/00dohalf.sh6
-rw-r--r--fonts/cmastro/00dozero.sh7
-rw-r--r--fonts/cmastro/00loadastr.tex153
-rw-r--r--fonts/cmastro/00readme.tex39
-rw-r--r--fonts/cmastro/README47
-rw-r--r--fonts/cmastro/astro.sty55
-rw-r--r--fonts/cmastro/astro.tex50
-rw-r--r--fonts/cmastro/cmastro.tex54
-rw-r--r--fonts/cmastro/cmastro10.300pkbin0 -> 920 bytes
-rw-r--r--fonts/cmastro/cmastro10.329pkbin0 -> 964 bytes
-rw-r--r--fonts/cmastro/cmastro10.360pkbin0 -> 1052 bytes
-rw-r--r--fonts/cmastro/cmastro10.432pkbin0 -> 1320 bytes
-rw-r--r--fonts/cmastro/cmastro10.518pkbin0 -> 1596 bytes
-rw-r--r--fonts/cmastro/cmastro10.622pkbin0 -> 1920 bytes
-rw-r--r--fonts/cmastro/cmastro10.746pkbin0 -> 2344 bytes
-rw-r--r--fonts/cmastro/cmastro10.mf97
-rw-r--r--fonts/cmastro/cmastro10.tfmbin0 -> 504 bytes
-rw-r--r--fonts/cmastro/cmastro5.300pkbin0 -> 612 bytes
-rw-r--r--fonts/cmastro/cmastro5.mf97
-rw-r--r--fonts/cmastro/cmastro5.tfmbin0 -> 500 bytes
-rw-r--r--fonts/cmastro/cmastro6.300pkbin0 -> 640 bytes
-rw-r--r--fonts/cmastro/cmastro6.mf97
-rw-r--r--fonts/cmastro/cmastro6.tfmbin0 -> 500 bytes
-rw-r--r--fonts/cmastro/cmastro7.300pkbin0 -> 684 bytes
-rw-r--r--fonts/cmastro/cmastro7.mf97
-rw-r--r--fonts/cmastro/cmastro7.tfmbin0 -> 504 bytes
-rw-r--r--fonts/cmastro/cmastro8.300pkbin0 -> 784 bytes
-rw-r--r--fonts/cmastro/cmastro8.mf97
-rw-r--r--fonts/cmastro/cmastro8.tfmbin0 -> 500 bytes
-rw-r--r--fonts/cmastro/cmastro9.300pkbin0 -> 856 bytes
-rw-r--r--fonts/cmastro/cmastro9.mf97
-rw-r--r--fonts/cmastro/cmastro9.tfmbin0 -> 500 bytes
-rw-r--r--fonts/cmastro/demo.tex24
-rw-r--r--fonts/cmastro/do.sh26
-rw-r--r--fonts/cmastro/symbols.mf303
38 files changed, 1459 insertions, 0 deletions
diff --git a/fonts/cmastro/00astro.sty b/fonts/cmastro/00astro.sty
new file mode 100644
index 0000000000..ce76045a6d
--- /dev/null
+++ b/fonts/cmastro/00astro.sty
@@ -0,0 +1,32 @@
+
+% Load the fonts
+
+\newfont\twentyfiveastro{cmastro10 scaled \magstep5}
+\newfont\twentyastro{cmastro10 scaled \magstep4}
+\newfont\seventeenastro{cmastro10 scaled \magstep3}
+\newfont\fourteenastro{cmastro10 scaled \magstep2}
+\newfont\twelveastro{cmastro10 scaled \magstep1}
+\newfont\elevenastro{cmastro10 scaled \magstephalf}
+\newfont\tenastro{cmastro10}
+\newfont\nineastro{cmastro9}
+\newfont\eightastro{cmastro8}
+\newfont\sevenastro{cmastro7}
+\newfont\sixastro{cmastro6}
+\newfont\fiveastro{cmastro5}
+
+\def\Sun{\astro S} % Sun symbol, "S"
+\def\Mercury{\astro 1} % Mercury symbol, "1"
+\def\Venus{\astro 2} % Venus symbol, "2"
+\def\Earth{\astro 3} % Earth symbol, "3"
+\def\Mars{\astro 4} % Mars symbol, "4"
+\def\Jupiter{\astro 5} % Jupiter symbol, "5"
+\def\Saturn{\astro 6} % Saturn symbol, "6"
+\def\Uranus{\astro 7} % Uranus symbol, "7"
+\def\Neptune{\astro 8} % Neptune symbol, "8"
+\def\Pluto{\astro 9} % Pluo symbol, "9"
+\def\Moon{\astro M} % Moon symbol, "M"
+\def\ascnode{\astro N} % ascending node (dragon's head),
+\def\descnode{\astro D} % descending node (dragon's tail),
+\def\VE{\astro V} % vernal equinox (Aries), "V"
+\def\AE{\astro L} % autumnal equinox (Libra), "L"
+\def\circ{\astro\char'16} % circle, replacing the one in \sy
diff --git a/fonts/cmastro/00astro.tex b/fonts/cmastro/00astro.tex
new file mode 100644
index 0000000000..2d30ac6c5e
--- /dev/null
+++ b/fonts/cmastro/00astro.tex
@@ -0,0 +1,75 @@
+% Load astro symbols at 10pt, 7pt, 5pt
+\font\tenastro=cmastro10
+\font\sevenastro=cmastro7
+\font\fiveastro=cmastro5
+
+% Define a new family; but since we need its family number to be < 8
+% (in order to use \mathchardef -- see p. 155 of The TeXbook), we'll need
+% to do some rearranging. So put \sl into family 8 (note that this may mean
+% that we can't use it in subscripts any more) and \astro where \sl was
+% (family 5). Plain TeX's definitions from p. 351.
+% Family Plain TeX: Now:
+% 0 \rm \rm
+% 1 \mit \mit (math italic)
+% 2 \sy \sy (math symbols)
+% 3 \ex \ex (math extension)
+% 4 \it \it
+% 5 \sl \astro
+% 6 \bf \bf
+% 7 \tt \tt
+% 8 (none) \sl
+\newfam\astrofam
+\let\astrofam=\slfam
+\let\slfam=\allocationnumber % last number allocated (pp. 346-7)
+
+% Set up astro's math family now.
+\textfont\astrofam=\tenastro
+\scriptfont\astrofam=\sevenastro
+\scriptscriptfont\astrofam=\fiveastro
+\def\astro{\fam\astrofam\tenastro}
+
+% And make sure that \sl still works
+\textfont\slfam=\tensl
+%\scriptfont\slfam=\sevensl % we don't have this font
+%\scriptscriptfont\slfam=\fivesl % or this one
+\def\sl{\fam\slfam\tensl}
+
+% Finally, define symbols in the astro fonts. First hex digit = 0 for
+% "ordinary" symbol; second = 5 for family 5; third and fourth = ASCII
+% code for location of symbol in the font. But \circ is family 2.
+\mathchardef\Sun="0553 % Sun symbol, "S"
+\mathchardef\Mercury="0531 % Mercury symbol, "1"
+\mathchardef\Venus="0532 % Venus symbol, "2"
+\mathchardef\Earth="0533 % Earth symbol, "3"
+\mathchardef\Mars="0534 % Mars symbol, "4"
+\mathchardef\Jupiter="0535 % Jupiter symbol, "5"
+\mathchardef\Saturn="0536 % Saturn symbol, "6"
+\mathchardef\Uranus="0537 % Uranus symbol, "7"
+\mathchardef\Neptune="0538 % Neptune symbol, "8"
+\mathchardef\Pluto="0539 % Pluo symbol, "9"
+\mathchardef\Moon="054D % Moon symbol, "M"
+\mathchardef\ascnode="054E % ascending node (dragon's head), "N"
+\mathchardef\descnode="0544 % descending node (dragon's tail), "D"
+\mathchardef\VE="0556 % vernal equinox (Aries), "V"
+\mathchardef\AE="054C % autumnal equinox (Libra), "L"
+\mathchardef\circ="250E % circle, replacing the one in \sy
+
+$$
+\astro
+ \Mercury
+ \Venus
+ \Earth
+ \Mars
+ \Jupiter
+ \Saturn
+ \Uranus
+ \Neptune
+ \Pluto
+ \Moon
+ \ascnode
+ \descnode
+ \VE
+ \AE
+ \circ
+$$
+\bye
diff --git a/fonts/cmastro/00dofour.sh b/fonts/cmastro/00dofour.sh
new file mode 100644
index 0000000000..dda367bab0
--- /dev/null
+++ b/fonts/cmastro/00dofour.sh
@@ -0,0 +1,6 @@
+ cmmf "\mode=localfont; mag=magstep 4; input cmastro10"
+ cmmf "\mode=localfont; mag=magstep 4; input cmastro9"
+ cmmf "\mode=localfont; mag=magstep 4; input cmastro8"
+ cmmf "\mode=localfont; mag=magstep 4; input cmastro7"
+ cmmf "\mode=localfont; mag=magstep 4; input cmastro6"
+ cmmf "\mode=localfont; mag=magstep 4; input cmastro5"
diff --git a/fonts/cmastro/00dohalf.sh b/fonts/cmastro/00dohalf.sh
new file mode 100644
index 0000000000..45c683e221
--- /dev/null
+++ b/fonts/cmastro/00dohalf.sh
@@ -0,0 +1,6 @@
+ cmmf "\mode=localfont; mag=magstep 0.5; input cmastro10"
+ cmmf "\mode=localfont; mag=magstep 0.5; input cmastro9"
+ cmmf "\mode=localfont; mag=magstep 0.5; input cmastro8"
+ cmmf "\mode=localfont; mag=magstep 0.5; input cmastro7"
+ cmmf "\mode=localfont; mag=magstep 0.5; input cmastro6"
+ cmmf "\mode=localfont; mag=magstep 0.5; input cmastro5"
diff --git a/fonts/cmastro/00dozero.sh b/fonts/cmastro/00dozero.sh
new file mode 100644
index 0000000000..2e47ceb463
--- /dev/null
+++ b/fonts/cmastro/00dozero.sh
@@ -0,0 +1,7 @@
+cmmf "\mode=localfont; input cmastro10"
+cmmf "\mode=localfont; input cmastro9"
+cmmf "\mode=localfont; input cmastro8"
+cmmf "\mode=localfont; input cmastro7"
+cmmf "\mode=localfont; input cmastro6"
+cmmf "\mode=localfont; input cmastro5"
+
diff --git a/fonts/cmastro/00loadastr.tex b/fonts/cmastro/00loadastr.tex
new file mode 100644
index 0000000000..d856a79875
--- /dev/null
+++ b/fonts/cmastro/00loadastr.tex
@@ -0,0 +1,153 @@
+
+
+% Load astro symbols at 10pt, 7pt, 5pt
+\font\tenastro=cmastro10
+\font\sevenastro=cmastro7
+\font\fiveastro=cmastro5
+
+% Define a new family; but since we need its family number to be < 8
+% (in order to use \mathchardef -- see p. 155 of The TeXbook), we'll need
+% to do some rearranging. So put \sl into family 8 (note that this may mean
+% that we can't use it in subscripts any more) and \astro where \sl was
+% (family 5). Plain TeX's definitions from p. 351.
+% Family Plain TeX: Now:
+% 0 \rm \rm
+% 1 \mit \mit (math italic)
+% 2 \sy \sy (math symbols)
+% 3 \ex \ex (math extension)
+% 4 \it \it
+% 5 \sl \astro
+% 6 \bf \bf
+% 7 \tt \tt
+% 8 (none) \sl
+\newfam\astrofam
+\let\astrofam=\slfam
+\let\slfam=\allocationnumber % last number allocated (pp. 346-7)
+
+% Set up astro's math family now.
+\textfont\astrofam=\tenastro
+\scriptfont\astrofam=\sevenastro
+\scriptscriptfont\astrofam=\fiveastro
+\def\astro{\fam\astrofam\tenastro}
+
+% And make sure that \sl still works
+\textfont\slfam=\tensl
+%\scriptfont\slfam=\sevensl % we don't have this font
+%\scriptscriptfont\slfam=\fivesl % or this one
+\def\sl{\fam\slfam\tensl}
+
+% Finally, define symbols in the astro fonts. First hex digit = 0 for
+% "ordinary" symbol; second = 5 for family 5; third and fourth = ASCII
+% code for location of symbol in the font. But \circ is family 2.
+\mathchardef\Sun="0553 % Sun symbol, "S"
+\mathchardef\Mercury="0531 % Mercury symbol, "1"
+\mathchardef\Venus="0532 % Venus symbol, "2"
+\mathchardef\Earth="0533 % Earth symbol, "3"
+\mathchardef\Mars="0534 % Mars symbol, "4"
+\mathchardef\Jupiter="0535 % Jupiter symbol, "5"
+\mathchardef\Saturn="0536 % Saturn symbol, "6"
+\mathchardef\Uranus="0537 % Uranus symbol, "7"
+\mathchardef\Neptune="0538 % Neptune symbol, "8"
+\mathchardef\Pluto="0539 % Pluo symbol, "9"
+\mathchardef\Moon="054D % Moon symbol, "M"
+\mathchardef\ascnode="054E % ascending node (dragon's head), "N"
+\mathchardef\descnode="0544 % descending node (dragon's tail), "D"
+\mathchardef\VE="0556 % vernal equinox (Aries), "V"
+\mathchardef\AE="054C % autumnal equinox (Libra), "L"
+\mathchardef\circ="250E % circle, replacing the one in \sy
+
+$$
+\astro
+ \Mercury
+ \Venus
+ \Earth
+ \Mars
+ \Jupiter
+ \Saturn
+ \Uranus
+ \Neptune
+ \Pluto
+ \Moon
+ \ascnode
+ \descnode
+ \VE
+ \AE
+ \circ
+$$
+\bye
+
+% Load astro symbols at 10pt, 7pt, 5pt
+\font\tenastro=cmastro10
+\font\sevenastro=cmastro7
+\font\fiveastro=cmastro5
+
+% Define a new family; but since we need its family number to be < 8
+% (in order to use \mathchardef -- see p. 155 of The TeXbook), we'll need
+% to do some rearranging. So put \sl into family 8 (note that this may mean
+% that we can't use it in subscripts any more) and \astro where \sl was
+% (family 5). Plain TeX's definitions from p. 351.
+% Family Plain TeX: Now:
+% 0 \rm \rm
+% 1 \mit \mit (math italic)
+% 2 \sy \sy (math symbols)
+% 3 \ex \ex (math extension)
+% 4 \it \it
+% 5 \sl \astro
+% 6 \bf \bf
+% 7 \tt \tt
+% 8 (none) \sl
+\newfam\astrofam
+\let\astrofam=\slfam
+\let\slfam=\allocationnumber % last number allocated (pp. 346-7)
+
+% Set up astro's math family now.
+\textfont\astrofam=\tenastro
+\scriptfont\astrofam=\sevenastro
+\scriptscriptfont\astrofam=\fiveastro
+\def\astro{\fam\astrofam\tenastro}
+
+% And make sure that \sl still works
+\textfont\slfam=\tensl
+%\scriptfont\slfam=\sevensl % we don't have this font
+%\scriptscriptfont\slfam=\fivesl % or this one
+\def\sl{\fam\slfam\tensl}
+
+% Finally, define symbols in the astro fonts. First hex digit = 0 for
+% "ordinary" symbol; second = 5 for family 5; third and fourth = ASCII
+% code for location of symbol in the font. But \circ is family 2.
+\mathchardef\Sun="0553 % Sun symbol, "S"
+\mathchardef\Mercury="0531 % Mercury symbol, "1"
+\mathchardef\Venus="0532 % Venus symbol, "2"
+\mathchardef\Earth="0533 % Earth symbol, "3"
+\mathchardef\Mars="0534 % Mars symbol, "4"
+\mathchardef\Jupiter="0535 % Jupiter symbol, "5"
+\mathchardef\Saturn="0536 % Saturn symbol, "6"
+\mathchardef\Uranus="0537 % Uranus symbol, "7"
+\mathchardef\Neptune="0538 % Neptune symbol, "8"
+\mathchardef\Pluto="0539 % Pluo symbol, "9"
+\mathchardef\Moon="054D % Moon symbol, "M"
+\mathchardef\ascnode="054E % ascending node (dragon's head), "N"
+\mathchardef\descnode="0544 % descending node (dragon's tail), "D"
+\mathchardef\VE="0556 % vernal equinox (Aries), "V"
+\mathchardef\AE="054C % autumnal equinox (Libra), "L"
+\mathchardef\circ="250E % circle, replacing the one in \sy
+
+$$
+\astro
+ \Mercury
+ \Venus
+ \Earth
+ \Mars
+ \Jupiter
+ \Saturn
+ \Uranus
+ \Neptune
+ \Pluto
+ \Moon
+ \ascnode
+ \descnode
+ \VE
+ \AE
+ \circ
+$$
+\bye
diff --git a/fonts/cmastro/00readme.tex b/fonts/cmastro/00readme.tex
new file mode 100644
index 0000000000..272414f333
--- /dev/null
+++ b/fonts/cmastro/00readme.tex
@@ -0,0 +1,39 @@
+[no author was given in the sources]
+
+This message is in response to your request for my METAFONT source code
+for the planetary symbols. I thank you for your interest, and I hope
+that somebody out there may actually find these useful.
+
+The rest of this message contains:
+\begin{itemize}
+\item command procedures to set up and run computer-modern METAFONT;
+\item font drivers at 10, 9, 8, 7, 6, and 5 pt;
+\item source code for the symbols themselves;
+\item a TeX file to define the symbols.
+ \end{itemize}
+
+
+The basic scheme is that one of the driver files (e.g. CMASTRO10.MF) is
+input to CMMF on the command line; it sets up values for the standard
+computer modern variables, then inputs SYMBOLS.MF. This in turn defines
+more symbols, then inputs the source code for each character in turn.
+This is the same sort of scheme used by Knuth, particularly in the math
+fonts, from which all this was taken.
+
+You may find that the arrows for Uranus and Neptune are very slightly
+lopsided. I haven't had the time to investigate this; you are welcome to,
+of course.
+
+[
+NOTE: the sources as they arrived were set up for a VMS site; I have
+created two Unix shell scripts (`dozero.sh' and `dohalf.sh') to stand
+in for the similar DCL scripts. Otherwise the files should be the same
+under any system.
+
+I have also provided a different use of the fonts in `astro.sty', a
+LaTeX style file which uses the fonts at magstep 4 (made by
+dofour.sh) as nice big pictures (see demo.tex).
+
+Sebastian Rahtz
+4-4-89
+]
diff --git a/fonts/cmastro/README b/fonts/cmastro/README
new file mode 100644
index 0000000000..879a447f51
--- /dev/null
+++ b/fonts/cmastro/README
@@ -0,0 +1,47 @@
+This directory contains the cmastro fonts as collected
+by Sebastian Rahtz. No author was given in the sources.
+
+I have changed the standard setup and added a summary page; the files
+distributed by Sebastian Rahtz all start with 00.
+
+WHAT IS CMASTRO?
+
+CMASTRO is a collection of fonts containing special astronomical (and
+astrological :-) symbols for the planets, sun, moon, etc.
+
+HOW TO INSTALL (on un*x systems):
+
+0) CMASTRO is distributed with a complete set of PK files generated
+ for a 300dpi laser printer. If you can manage with these then skip
+ to 3).
+
+1) Edit the do.sh script to suit your font format.
+
+2) Run do.sh. If you need more magnifications than are generated here
+ then feel free to generate them...
+
+3) Install the font metric (.tfm) files where TeX will them and the
+ pixel files (usually .gf or .pk) where your DVI driver(s) will find
+ them.
+
+4) Install the macro files astro.tex and astro.sty in a place where
+ TeX will find them.
+
+5) Run plain TeX on the file cmastro.tex (typically you should execute
+ the command tex cmastro). This should produce a summary of the
+ available symbols.
+
+FINALLY...
+
+If anyone knows the author of the cmastro fonts then please write a
+mail to <kris@diku.dk> so he/she can be properly acknowledged!
+
+Neither Sebastian Rahtz nor myself (Kristoffer H. Rose) should be held
+responsible for any consequences of any form of use (or misuse) of this
+package.
+
+Enjoy,
+--
+ Kristoffer H{\o}gsbro ROSE <kris@diku.dk>
+ DIKU (TOPPS group), University of Copenhagen
+ Universitetsparken 1, DK-2100 Copenhagen {\O} (+45) 31396466
diff --git a/fonts/cmastro/astro.sty b/fonts/cmastro/astro.sty
new file mode 100644
index 0000000000..ffdfbf6f8e
--- /dev/null
+++ b/fonts/cmastro/astro.sty
@@ -0,0 +1,55 @@
+% astro.sty: LaTeX style option to load CMASTRO fonts and define the symbols
+%
+% NOTE: uses the old font selection scheme...
+%
+\input astro.tex
+%
+\def\astro{\protect\pastro}
+%
+\@addfontinfo\@vpt{%
+ \def\pastro{\fam\astrofam\fiveastro}\textfont\astrofam=\fiveastro
+ \scriptfont\astrofam=\fiveastro \scriptscriptfont\astrofam=\fiveastro}
+%
+\@addfontinfo\@vipt{%
+ \def\pastro{\fam\astrofam\sixastro}\textfont\astrofam=\sixastro
+ \scriptfont\astrofam=\fiveastro \scriptscriptfont\astrofam=\fiveastro}
+%
+\@addfontinfo\@viipt{%
+ \def\pastro{\fam\astrofam\sevenastro}\textfont\astrofam=\sevenastro
+ \scriptfont\astrofam=\fiveastro \scriptscriptfont\astrofam=\fiveastro}
+%
+\@addfontinfo\@viiipt{%
+ \def\pastro{\fam\astrofam\eightastro}\textfont\astrofam=\eightastro
+ \scriptfont\astrofam=\sixastro \scriptscriptfont\astrofam=\fiveastro}
+%
+\@addfontinfo\@ixpt{%
+ \def\pastro{\fam\astrofam\nineastro}\textfont\astrofam=\nineastro
+ \scriptfont\astrofam=\sevenastro \scriptscriptfont\astrofam=\fiveastro}
+%
+\@addfontinfo\@xpt{%
+ \def\pastro{\fam\astrofam\tenastro}\textfont\astrofam=\tenastro
+ \scriptfont\astrofam=\sevenastro \scriptscriptfont\astrofam=\fiveastro}
+%
+\@addfontinfo\@xipt{%
+ \def\pastro{\fam\astrofam\elevenastro}\textfont\astrofam=\elevenastro
+ \scriptfont\astrofam=\eightastro \scriptscriptfont\astrofam=\sixastro}
+%
+\@addfontinfo\@xiipt{%
+ \def\pastro{\fam\astrofam\twelveastro}\textfont\astrofam=\twelveastro
+ \scriptfont\astrofam=\eightastro \scriptscriptfont\astrofam=\sixastro}
+%
+\@addfontinfo\@xivpt{%
+ \def\pastro{\fam\astrofam\fourteenastro}\textfont\astrofam=\fourteenastro
+ \scriptfont\astrofam=\tenastro \scriptscriptfont\astrofam=\sevenastro}
+%
+\@addfontinfo\@xviipt{%
+ \def\pastro{\fam\astrofam\seventeenastro}\textfont\astrofam=\seventeenastro
+ \scriptfont\astrofam=\twelveastro \scriptscriptfont\astrofam=\eightastro}
+%
+\@addfontinfo\@xxpt{%
+ \def\pastro{\fam\astrofam\twentyastro}\textfont\astrofam=\twentyastro
+ \scriptfont\astrofam=\fourteenastro \scriptscriptfont\astrofam=\twelveastro}
+%
+\@addfontinfo\@xxvpt{%
+ \def\pastro{\fam\astrofam\twentyfiveastro}\textfont\astrofam=\twentyfiveastro
+ \scriptfont\astrofam=\seventeenastro \scriptscriptfont\astrofam=\fourteenastro}
diff --git a/fonts/cmastro/astro.tex b/fonts/cmastro/astro.tex
new file mode 100644
index 0000000000..8d5023f886
--- /dev/null
+++ b/fonts/cmastro/astro.tex
@@ -0,0 +1,50 @@
+% astro.tex: Load CMASTRO fonts and define the symbols
+%
+\ifx\astroloaded\relax \message{[not reloaded]}\endinput \fi
+\let\astroloaded=\endinput
+
+% Load the fonts
+%
+\font\twentyfiveastro=cmastro10 scaled \magstep5
+\font\twentyastro=cmastro10 scaled \magstep4
+\font\seventeenastro=cmastro10 scaled \magstep3
+\font\fourteenastro=cmastro10 scaled \magstep2
+\font\twelveastro=cmastro10 scaled \magstep1
+\font\elevenastro=cmastro10 scaled \magstephalf
+\font\tenastro=cmastro10
+\font\nineastro=cmastro9
+\font\eightastro=cmastro8
+\font\sevenastro=cmastro7
+\font\sixastro=cmastro6
+\font\fiveastro=cmastro5
+
+% Define default sizes (as plain 10,7,5pt)
+%
+\newfam\astrofam
+%
+\textfont\astrofam=\tenastro
+\scriptfont\astrofam=\sevenastro
+\scriptscriptfont\astrofam=\fiveastro
+%
+\def\astro{\tenastro\fam\astrofam}
+
+% Define the special symbols
+%
+\def\Sun{{\astro S}} % Sun symbol, "S"
+\def\Mercury{{\astro 1}} % Mercury symbol, "1"
+\def\Venus{{\astro 2}} % Venus symbol, "2"
+\def\Earth{{\astro 3}} % Earth symbol, "3"
+\def\Mars{{\astro 4}} % Mars symbol, "4"
+\def\Jupiter{{\astro 5}} % Jupiter symbol, "5"
+\def\Saturn{{\astro 6}} % Saturn symbol, "6"
+\def\Uranus{{\astro 7}} % Uranus symbol, "7"
+\def\Neptune{{\astro 8}} % Neptune symbol, "8"
+\def\Pluto{{\astro 9}} % Pluo symbol, "9"
+\def\Moon{{\astro M}} % Moon symbol, "M"
+\def\ascnode{{\astro N}} % ascending node (dragon's head),
+\def\descnode{{\astro D}} % descending node (dragon's tail),
+\def\VE{{\astro V}} % vernal equinox (Aries), "V"
+\def\AE{{\astro L}} % autumnal equinox (Libra), "L"
+\def\circ{{\astro\char'16}} % circle, replacing the one in \sy
+
+\astroloaded
diff --git a/fonts/cmastro/cmastro.tex b/fonts/cmastro/cmastro.tex
new file mode 100644
index 0000000000..6e05a8a6bc
--- /dev/null
+++ b/fonts/cmastro/cmastro.tex
@@ -0,0 +1,54 @@
+% cmastro.tex: Using the cmastro fonts.
+%
+% Run this through tex (plain TeX) to get summary of the astro option for
+% using the cmastro fonts.
+
+\input astro
+%
+\def\t#1{\hbox{\tt #1}} \def\cs#1{\t{\char'134 #1}}
+\def\_{\t{\char'137}} \def\${\t{\char'44}}
+\def\{{\t{\char'173}} \def\}{\t{\char'175}}
+\def\AMS{{$\cal A$\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.125em$\cal S$}}
+\def\LaTeX{L\kern-.36em\raise.3ex\hbox{\sevenrm A}\kern-.15em\TeX}
+%
+\bigskip
+\centerline{\bf Using the cmastro fonts}
+\bigskip
+
+ The \t{cmastro} fonts contain the special symbols
+$$
+\vcenter{\tabskip=1emplus1fil
+ \halign to\hsize{&\hfil#\hfil\tabskip=1em&#\hfil\tabskip=1emplus1fil\cr
+ \omit\span\bf Planets &\omit\span\bf Other \cr
+ \Mercury & \cs{Mercury} &\Sun & \cs{Sun} \cr
+ \Venus & \cs{Venus} &\Moon & \cs{Moon} \cr
+ \Earth & \cs{Earth} \cr
+ \Mars & \cs{Mars} &\ascnode & \cs{ascnode} \cr
+ \Jupiter & \cs{Jupiter} &\descnode & \cs{descnode} \cr
+ \Saturn & \cs{Saturn} \cr
+ \Uranus & \cs{Uranus} &\VE & \cs{VE} \cr
+ \Neptune & \cs{Neptune} &\AE & \cs{AE} \cr
+ \Pluto & \cs{Pluto} &\circ & \cs{circ} \cr
+}}
+$$
+ to \TeX's repertoire of characters. They also work in sub- and
+ superscripts, {\it e.g.}, \$\t{M}\_\cs{Jupiter}\$ will give
+ $M_\Jupiter$.
+
+ In order to use the fonts you must create and install \t{tfm} and
+ bitmap files as well as the two \TeX\ sources \t{astro.tex} and
+ \t{astro.sty} in a place where \TeX\ will find them. Then
+
+\item{$\bullet$} In \LaTeX\ you should use the ``\t{[astro]}'' document style
+ option, {\it e.g.},
+$$
+ \cs{documentstyle[astro,12pt]\{article\}}
+$$
+
+\item{$\bullet$} With plain \TeX\ and \AMS-\TeX\ you should add the line
+$$
+ \cs{input astro}
+$$
+ in the preamble of your document.
+
+\bye
diff --git a/fonts/cmastro/cmastro10.300pk b/fonts/cmastro/cmastro10.300pk
new file mode 100644
index 0000000000..71adeeb366
--- /dev/null
+++ b/fonts/cmastro/cmastro10.300pk
Binary files differ
diff --git a/fonts/cmastro/cmastro10.329pk b/fonts/cmastro/cmastro10.329pk
new file mode 100644
index 0000000000..134cc100ff
--- /dev/null
+++ b/fonts/cmastro/cmastro10.329pk
Binary files differ
diff --git a/fonts/cmastro/cmastro10.360pk b/fonts/cmastro/cmastro10.360pk
new file mode 100644
index 0000000000..6d4a3918ee
--- /dev/null
+++ b/fonts/cmastro/cmastro10.360pk
Binary files differ
diff --git a/fonts/cmastro/cmastro10.432pk b/fonts/cmastro/cmastro10.432pk
new file mode 100644
index 0000000000..67b9d2515a
--- /dev/null
+++ b/fonts/cmastro/cmastro10.432pk
Binary files differ
diff --git a/fonts/cmastro/cmastro10.518pk b/fonts/cmastro/cmastro10.518pk
new file mode 100644
index 0000000000..49d15556f1
--- /dev/null
+++ b/fonts/cmastro/cmastro10.518pk
Binary files differ
diff --git a/fonts/cmastro/cmastro10.622pk b/fonts/cmastro/cmastro10.622pk
new file mode 100644
index 0000000000..ca03bd77e9
--- /dev/null
+++ b/fonts/cmastro/cmastro10.622pk
Binary files differ
diff --git a/fonts/cmastro/cmastro10.746pk b/fonts/cmastro/cmastro10.746pk
new file mode 100644
index 0000000000..eeab6b2bb0
--- /dev/null
+++ b/fonts/cmastro/cmastro10.746pk
Binary files differ
diff --git a/fonts/cmastro/cmastro10.mf b/fonts/cmastro/cmastro10.mf
new file mode 100644
index 0000000000..dbc43dbb41
--- /dev/null
+++ b/fonts/cmastro/cmastro10.mf
@@ -0,0 +1,97 @@
+
+% Computer Modern Astro Symbols 10 point (wmo)
+if unknown cmbase: input cmbase fi
+
+font_identifier:="CMASTRO"; 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#:=8/36pt#; % 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#:=29/36pt#; % lowercase curve breadth
+ess#:=27/36pt#; % breadth in middle of lowercase s
+flare#:=32/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=38/36pt#; % diameter of dots
+cap_hair#:=11/36pt#; % uppercase hairline breadth
+cap_stem#:=30/36pt#; % uppercase stem breadth
+cap_curve#:=35/36pt#; % uppercase curve breadth
+cap_ess#:=33/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#:=30/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:=.25; % 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:=true; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=true; % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=7/10; % subscripts to 10pt will normally be in 7pt type
+rth#:=.4pt#; % assume that rules will come from cmex10
+fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+54/36pt#+subs*desc_depth#, % num1
+ math_axis#+1.51rth#+30/36pt#, % num2
+ math_axis#+1.51rth#+48/36pt#, % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-124/36pt#), % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-30/36pt#), % denom2
+ 8.99pt#-subs*asc_height#, % sup1
+ 8.49pt#-subs*asc_height#, % sup2
+ 104/36pt#, % sup3
+ 54/36pt#, % sub1
+ -(8.49pt#-2subs*asc_height#-3.1rth#), % sub2
+ subs*asc_height#-36/36pt#, % sup\_drop
+ 18/36pt#, % sub\_drop
+ 23.9pt#, % delim1
+ 10.1pt#, % delim2
+ math_axis#; % axis\_height
+
+generate symbols % switch to the driver file
+
diff --git a/fonts/cmastro/cmastro10.tfm b/fonts/cmastro/cmastro10.tfm
new file mode 100644
index 0000000000..dc4876ab05
--- /dev/null
+++ b/fonts/cmastro/cmastro10.tfm
Binary files differ
diff --git a/fonts/cmastro/cmastro5.300pk b/fonts/cmastro/cmastro5.300pk
new file mode 100644
index 0000000000..b864b52cf5
--- /dev/null
+++ b/fonts/cmastro/cmastro5.300pk
Binary files differ
diff --git a/fonts/cmastro/cmastro5.mf b/fonts/cmastro/cmastro5.mf
new file mode 100644
index 0000000000..f021d87459
--- /dev/null
+++ b/fonts/cmastro/cmastro5.mf
@@ -0,0 +1,97 @@
+
+% Computer Modern Astro Symbols 5 point (wmo)
+if unknown cmbase: input cmbase fi
+
+font_identifier:="CMASTRO"; 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#:=10/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#:=6/36pt#; % 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#:=15.5/36pt#; % lowercase stem breadth
+curve#:=17.5/36pt#; % lowercase curve breadth
+ess#:=12/36pt#; % breadth in middle of lowercase s
+flare#:=18.5/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=22/36pt#; % diameter of dots
+cap_hair#:=8/36pt#; % uppercase hairline breadth
+cap_stem#:=18.5/36pt#; % uppercase stem breadth
+cap_curve#:=20.5/36pt#; % uppercase curve breadth
+cap_ess#:=13.5/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#:=17/36pt#; % protrusion of lowercase serifs
+cap_jut#:=20/36pt#; % protrusion of uppercase serifs
+beak_jut#:=6/36pt#; % horizontal protrusion of beak serifs
+beak#:=35/36pt#; % 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:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=1; % factor applied to weights of heavy characters
+math_spread:=1; % 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:=1; % 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:=true; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=true; % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=5/5; % subscripts to 5pt will normally be in 5pt type
+rth#:=.4pt#; % assume that rules will come from cmex10
+fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+36/36pt#+subs*desc_depth#, % num1
+ math_axis#+1.51rth#+3/36pt#, % num2
+ math_axis#+1.51rth#+24/36pt#, % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-63/36pt#), % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-3/36pt#), % denom2
+ 5.99pt#-subs*asc_height#, % sup1
+ 5.49pt#-subs*asc_height#, % sup2
+ 53/36pt#, % sup3
+ 36/36pt#, % sub1
+ 72/36pt#, % sub2
+ subs*asc_height#-36/36pt#, % sup\_drop
+ 18/36pt#, % sub\_drop
+ 9.9pt#, % delim1
+ 7.1pt#, % delim2
+ math_axis#; % axis\_height
+
+generate symbols % switch to the driver file
+
diff --git a/fonts/cmastro/cmastro5.tfm b/fonts/cmastro/cmastro5.tfm
new file mode 100644
index 0000000000..a975f92b77
--- /dev/null
+++ b/fonts/cmastro/cmastro5.tfm
Binary files differ
diff --git a/fonts/cmastro/cmastro6.300pk b/fonts/cmastro/cmastro6.300pk
new file mode 100644
index 0000000000..4a470a9e38
--- /dev/null
+++ b/fonts/cmastro/cmastro6.300pk
Binary files differ
diff --git a/fonts/cmastro/cmastro6.mf b/fonts/cmastro/cmastro6.mf
new file mode 100644
index 0000000000..245318d3f8
--- /dev/null
+++ b/fonts/cmastro/cmastro6.mf
@@ -0,0 +1,97 @@
+
+% Computer Modern Astro Symbols 6 point (wmo)
+if unknown cmbase: input cmbase fi
+
+font_identifier:="CMASTRO"; 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#:=6/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#:=6.5/36pt#; % diameter of serif corners
+tiny#:=6.5/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#:=17.5/36pt#; % lowercase stem breadth
+curve#:=20/36pt#; % lowercase curve breadth
+ess#:=17/36pt#; % breadth in middle of lowercase s
+flare#:=20.5/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/36pt#; % uppercase stem breadth
+cap_curve#:=23.5/36pt#; % uppercase curve breadth
+cap_ess#:=18.5/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#:=19/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:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=1; % factor applied to weights of heavy characters
+math_spread:=.8; % 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:=true; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=true; % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=5/6; % subscripts to 6pt will normally be in 5pt type
+rth#:=.4pt#; % assume that rules will come from cmex10
+fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+36/36pt#+subs*desc_depth#, % num1
+ math_axis#+1.51rth#+9/36pt#, % num2
+ math_axis#+1.51rth#+29/36pt#, % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-74/36pt#), % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-9/36pt#), % denom2
+ 6.49pt#-subs*asc_height#, % sup1
+ 5.99pt#-subs*asc_height#, % sup2
+ 62/36pt#, % sup3
+ 36/36pt#, % sub1
+ 72/36pt#, % sub2
+ subs*asc_height#-36/36pt#, % sup\_drop
+ 18/36pt#, % sub\_drop
+ 11.9pt#, % delim1
+ 8.1pt#, % delim2
+ math_axis#; % axis\_height
+
+generate symbols % switch to the driver file
+
diff --git a/fonts/cmastro/cmastro6.tfm b/fonts/cmastro/cmastro6.tfm
new file mode 100644
index 0000000000..c24b6fbab1
--- /dev/null
+++ b/fonts/cmastro/cmastro6.tfm
Binary files differ
diff --git a/fonts/cmastro/cmastro7.300pk b/fonts/cmastro/cmastro7.300pk
new file mode 100644
index 0000000000..bbd62b831e
--- /dev/null
+++ b/fonts/cmastro/cmastro7.300pk
Binary files differ
diff --git a/fonts/cmastro/cmastro7.mf b/fonts/cmastro/cmastro7.mf
new file mode 100644
index 0000000000..d0e85573f0
--- /dev/null
+++ b/fonts/cmastro/cmastro7.mf
@@ -0,0 +1,97 @@
+
+% Computer Modern Astro Symbols 7 point (wmo)
+if unknown cmbase: input cmbase fi
+
+font_identifier:="CMASTRO"; 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#:=4/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#:=7/36pt#; % 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#:=19.5/36pt#; % lowercase stem breadth
+curve#:=22.5/36pt#; % lowercase curve breadth
+ess#:=21/36pt#; % breadth in middle of lowercase s
+flare#:=23.5/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=29/36pt#; % diameter of dots
+cap_hair#:=9/36pt#; % uppercase hairline breadth
+cap_stem#:=23.5/36pt#; % uppercase stem breadth
+cap_curve#:=26.5/36pt#; % uppercase curve breadth
+cap_ess#:=22.5/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#:=21/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:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=1; % factor applied to weights of heavy characters
+math_spread:=.6; % 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:=true; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=true; % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=5/7; % subscripts to 7pt will normally be in 5pt type
+rth#:=.4pt#; % assume that rules will come from cmex10
+fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+36/36pt#+subs*desc_depth#, % num1
+ math_axis#+1.51rth#+12/36pt#, % num2
+ math_axis#+1.51rth#+34/36pt#, % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-86/36pt#), % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-12/36pt#), % denom2
+ 6.99pt#-subs*asc_height#, % sup1
+ 6.49pt#-subs*asc_height#, % sup2
+ 72/36pt#, % sup3
+ 36/36pt#, % sub1
+ 72/36pt#, % sub2
+ subs*asc_height#-36/36pt#, % sup\_drop
+ 18/36pt#, % sub\_drop
+ 11.9pt#, % delim1
+ 8.1pt#, % delim2
+ math_axis#; % axis\_height
+
+generate symbols % switch to the driver file
+
diff --git a/fonts/cmastro/cmastro7.tfm b/fonts/cmastro/cmastro7.tfm
new file mode 100644
index 0000000000..8f09c23b7f
--- /dev/null
+++ b/fonts/cmastro/cmastro7.tfm
Binary files differ
diff --git a/fonts/cmastro/cmastro8.300pk b/fonts/cmastro/cmastro8.300pk
new file mode 100644
index 0000000000..b56ddfc1bb
--- /dev/null
+++ b/fonts/cmastro/cmastro8.300pk
Binary files differ
diff --git a/fonts/cmastro/cmastro8.mf b/fonts/cmastro/cmastro8.mf
new file mode 100644
index 0000000000..aadd47eede
--- /dev/null
+++ b/fonts/cmastro/cmastro8.mf
@@ -0,0 +1,97 @@
+
+% Computer Modern Astro Symbols 8 point (wmo)
+if unknown cmbase: input cmbase fi
+
+font_identifier:="CMASTRO"; 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#:=8/36pt#; % 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#:=21.5/36pt#; % lowercase stem breadth
+curve#:=25/36pt#; % lowercase curve breadth
+ess#:=23/36pt#; % breadth in middle of lowercase s
+flare#:=26.5/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#:=25.5/36pt#; % uppercase stem breadth
+cap_curve#:=29/36pt#; % uppercase curve breadth
+cap_ess#:=26/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#:=24/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:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=1; % factor applied to weights of heavy characters
+math_spread:=.4; % 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:=true; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=true; % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=6/8; % subscripts to 8pt will normally be in 6pt type
+rth#:=.4pt#; % assume that rules will come from cmex10
+fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+36/36pt#+subs*desc_depth#, % num1
+ math_axis#+1.51rth#+24/36pt#, % num2
+ math_axis#+1.51rth#+38/36pt#, % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-98/36pt#), % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-24/36pt#), % denom2
+ 7.49pt#-subs*asc_height#, % sup1
+ 6.99pt#-subs*asc_height#, % sup2
+ 82/36pt#, % sup3
+ 36/36pt#, % sub1
+ 72/36pt#, % sub2
+ subs*asc_height#-36/36pt#, % sup\_drop
+ 18/36pt#, % sub\_drop
+ 11.9pt#, % delim1
+ 9.1pt#, % delim2
+ math_axis#; % axis\_height
+
+generate symbols % switch to the driver file
+
diff --git a/fonts/cmastro/cmastro8.tfm b/fonts/cmastro/cmastro8.tfm
new file mode 100644
index 0000000000..5acdcb7e5e
--- /dev/null
+++ b/fonts/cmastro/cmastro8.tfm
Binary files differ
diff --git a/fonts/cmastro/cmastro9.300pk b/fonts/cmastro/cmastro9.300pk
new file mode 100644
index 0000000000..db1be573ca
--- /dev/null
+++ b/fonts/cmastro/cmastro9.300pk
Binary files differ
diff --git a/fonts/cmastro/cmastro9.mf b/fonts/cmastro/cmastro9.mf
new file mode 100644
index 0000000000..cb532c26a3
--- /dev/null
+++ b/fonts/cmastro/cmastro9.mf
@@ -0,0 +1,97 @@
+
+% Computer Modern Astro Symbols 9 point (wmo)
+if unknown cmbase: input cmbase fi
+
+font_identifier:="CMASTRO"; 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#:=8/36pt#; % 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#:=23/36pt#; % lowercase stem breadth
+curve#:=27/36pt#; % lowercase curve breadth
+ess#:=25/36pt#; % breadth in middle of lowercase s
+flare#:=29/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=35/36pt#; % diameter of dots
+cap_hair#:=10/36pt#; % uppercase hairline breadth
+cap_stem#:=28/36pt#; % uppercase stem breadth
+cap_curve#:=32/36pt#; % uppercase curve breadth
+cap_ess#:=30/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#:=27/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:=.25; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=1; % factor applied to weights of heavy characters
+math_spread:=.2; % 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:=true; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=true; % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=6/9; % subscripts to 9pt will normally be in 6pt type
+rth#:=.4pt#; % assume that rules will come from cmex10
+fontdimen 8: % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+36/36pt#+subs*desc_depth#, % num1
+ math_axis#+1.51rth#+30/36pt#, % num2
+ math_axis#+1.51rth#+43/36pt#, % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-111/36pt#), % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-30/36pt#), % denom2
+ 8.49pt#-subs*asc_height#, % sup1
+ 7.99pt#-subs*asc_height#, % sup2
+ 93/36pt#, % sup3
+ 36/36pt#, % sub1
+ -(7.99pt#-2subs*asc_height#-3.1rth#), % sub2
+ subs*asc_height#-36/36pt#, % sup\_drop
+ 18/36pt#, % sub\_drop
+ 23.9pt#, % delim1
+ 9.1pt#, % delim2
+ math_axis#; % axis\_height
+
+generate symbols % switch to the driver file
+
diff --git a/fonts/cmastro/cmastro9.tfm b/fonts/cmastro/cmastro9.tfm
new file mode 100644
index 0000000000..510b87a8ec
--- /dev/null
+++ b/fonts/cmastro/cmastro9.tfm
Binary files differ
diff --git a/fonts/cmastro/demo.tex b/fonts/cmastro/demo.tex
new file mode 100644
index 0000000000..81021b9d00
--- /dev/null
+++ b/fonts/cmastro/demo.tex
@@ -0,0 +1,24 @@
+\documentstyle[astro]{article}
+
+\def\Strut{\vphantom{$\bigg|$}}
+
+\begin{document}
+\begin{tabular}{cl}
+\Strut\Sun & \verb|\Sun| \\
+\Strut\Mercury & \verb|\Mercury| \\
+\Strut\Venus & \verb|\Venus| \\
+\Strut\Earth & \verb|\Earth| \\
+\Strut\Mars & \verb|\Mars| \\
+\Strut\Jupiter & \verb|\Jupiter| \\
+\Strut\Saturn & \verb|\Saturn| \\
+\Strut\Uranus & \verb|\Uranus| \\
+\Strut\Neptune & \verb|\Neptune| \\
+\Strut\Pluto & \verb|\Pluto| \\
+\Strut\Moon & \verb|\Moon| \\
+\Strut\ascnode & \verb|\ascnode| \\
+\Strut\descnode & \verb|\descnode| \\
+\Strut\VE & \verb|\VE| \\
+\Strut\AE & \verb|\AE| \\
+%\Strut\circ & \verb|\circ| \\
+\end{tabular}
+\end{document}
diff --git a/fonts/cmastro/do.sh b/fonts/cmastro/do.sh
new file mode 100644
index 0000000000..9bfa94d134
--- /dev/null
+++ b/fonts/cmastro/do.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+#
+# do.sh: build the standard CMASTRO font sizes.
+# Set MODE and GFPOST to your liking below.
+#
+MODE=localfont
+GFPOST="gftopk ./cmastro*.*gf; rm ./cmastro*.*gf"
+#
+# Generate sizes loaded by astro.tex:
+#
+rm -f ./cmastro*.*gf ./cmastro*.tfm *.log
+#
+cmmf "\mode=$MODE; mag=magstep 5; input cmastro10"; eval $GFPOST
+cmmf "\mode=$MODE; mag=magstep 4; input cmastro10"; eval $GFPOST
+cmmf "\mode=$MODE; mag=magstep 3; input cmastro10"; eval $GFPOST
+cmmf "\mode=$MODE; mag=magstep 2; input cmastro10"; eval $GFPOST
+cmmf "\mode=$MODE; mag=magstep 1; input cmastro10"; eval $GFPOST
+cmmf "\mode=$MODE; mag=magstep 0.5; input cmastro10"; eval $GFPOST
+cmmf "\mode=$MODE; input cmastro10"; eval $GFPOST
+cmmf "\mode=$MODE; input cmastro9"; eval $GFPOST
+cmmf "\mode=$MODE; input cmastro8"; eval $GFPOST
+cmmf "\mode=$MODE; input cmastro7"; eval $GFPOST
+cmmf "\mode=$MODE; input cmastro6"; eval $GFPOST
+cmmf "\mode=$MODE; input cmastro5"; eval $GFPOST
+#
+exit
diff --git a/fonts/cmastro/symbols.mf b/fonts/cmastro/symbols.mf
new file mode 100644
index 0000000000..6da5cb4dff
--- /dev/null
+++ b/fonts/cmastro/symbols.mf
@@ -0,0 +1,303 @@
+
+% The Computer Modern Symbols family (by D. E. Knuth, 1979--1985)
+
+font_coding_scheme:="TeX math symbols";
+mode_setup; font_setup;
+
+autorounding:=0;
+
+font_slant slant; font_x_height x_height#;
+font_quad 18u# if not monospace:+4letter_fit# fi;
+% (The spacing is zero so that \TeX\ will always add the italic correction.)
+% (The calling file should give the other math symbol font parameters.)
+
+slant:=mono_charic#:=0; % the remaining characters will not be slanted
+currenttransform:=identity yscaled aspect_ratio scaled granularity;
+
+% The Sun symbol
+
+cmchar "Sun symbol (S)";
+beginarithchar("S"); pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; y8=x2-x6; y2=.5y8;
+circle_points; draw_circle; % circle
+fill fullcircle scaled(1.1dot_size+eps) shifted(.5[z4,z8]); % dot
+labels(1,2,3,4,5,6,7,8); endchar;
+
+% The Mercury symbol
+
+cmchar "Mercury symbol (1)";
+beginchar("1",11u#,6u#+math_axis#,6u#-math_axis#);
+ italcorr math_axis#*slant-.5u#;
+ adjust_fit(0,0);
+pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; bot y2=2.25u+.5(x2-x6); y8-y2=.5(x2-x6);
+circle_points; draw_circle;
+% now for the cross underneath
+x9=x4; y9=-2.25u; x10=x4-2.25u; x11=x4+2.25u; y10=y11=0;
+draw z4--z9; draw z10--z11;
+% now for the horns
+z0 = .5[z6,z2]; % center of the circle
+z12 = z0 + (z8-z0) rotated 30;
+z14 = z0 + (z8-z0) rotated -30;
+bot y13 = bot y15 = top y8 + (y8-y12);
+rt x13 = 0.5(x6+x7); x15 = w-x13;
+draw z12{left}..{z7-z4}z13;
+draw z14{right}..{z1-z4}z15;
+labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); endchar;
+
+% The Venus (female) symbol
+
+cmchar "Venus symbol (2)";
+beginchar("2",12u#,6u#+math_axis#,6u#-math_axis#);
+ italcorr math_axis#*slant-.5u#;
+ adjust_fit(0,0);
+pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; bot y2=2.5u+.5(x2-x6); y8-y2=.5(x2-x6);
+circle_points; draw_circle; % 10u in diameter
+% now for the cross underneath
+x9=x4; y9=-2.5u; x10=x4-2.5u; x11=x4+2.5u; y10=y11=0;
+draw z4--z9; draw z10--z11;
+labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
+
+% The Earth symbol
+
+cmchar "Earth symbol (3)";
+beginarithchar("3"); pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; y8=x2-x6; y2=.5y8;
+circle_points; draw_circle; % circle
+draw z2--z6; draw z4--z8; % bar and stem
+labels(1,2,3,4,5,6,7,8); endchar;
+
+% The Mars (male) symbol
+
+cmchar "Mars symbol (4)";
+beginchar("4",12u#,6u#+math_axis#,6u#-math_axis#);
+ italcorr 2u#;
+ adjust_fit(0,0);
+pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; y8=x2-x6; y2=.5y8;
+circle_points; draw_circle; % circle
+% now for the arrow
+z0 = .5[z6,z2]; % center of the circle
+z9 = 2[z0,z1];
+y10 = y9; x11 = x9;
+lft x10 = x1; bot y11 = y1;
+draw z1--z9; draw z9--z10; draw z9--z11;
+labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
+
+% The Jupiter symbol
+
+cmchar "Jupiter symbol (5)";
+beginchar("5",13u#,6u#+math_axis#,6u#-math_axis#);
+adjust_fit(0,0);
+pickup light_rule.nib; autorounded;
+penpos1(cap_hair,90); penpos2(.4cap_curve,90);
+penpos3(.8cap_curve,0); penpos4(cap_hair,0);
+penpos5(1.414214cap_hair,45); penpos6(cap_hair,90);
+penpos7(1.1cap_hair,0); penpos8(1.1cap_hair,0);
+x1=hround u; y1r=0.5(asc_height+x_height);
+x2=5u; top y2=vround asc_height;
+x3 = 8u; y3=x_height;
+x5l=hround 2u; y5l=0;
+z4l=z5r;
+x5r := x4r; y5r := y4r; % redefine so we can leave out z4
+y6l=y5l; x6l=w-x1;
+x7r=x6; y7=x_height;
+x8=x3; y8=-desc_depth;
+penstroke z1e..z2e{right}..z3e{down}..{z5l-z4l}z5e--z6e;
+penstroke z7e--z8e;
+penlabels(1,2,3,4,5,6,7,8); endchar;
+
+% The Saturn symbol
+
+cmchar "Saturn symbol (6)";
+beginchar("6",11u#,asc_height#,0);
+italcorr .5[bar_height#,x_height#]*slant-serif_fit#+.5stem#-2u#;
+adjust_fit(serif_fit#+stem_shift#,serif_fit#-stem_shift#);
+pickup tiny.nib; pos1(stem,0); pos2(stem,0);
+pos3(stem,90); pos4(cap_hair,90); pos5(stem,0);
+pos6(0.75stem,0); pos7(cap_hair,45);
+lft x1l=hround(2.5u-.5stem); x1l=x2l;
+top y1=h; bot y2=0;
+filldraw stroke z1e--z2e; % left stem
+if serifs: nodish_serif(1,2,a,1/3,jut,b,1/3,jut); fi % upper serif
+x3=x2r; y3=y5=math_axis;
+x5=w-x1;
+x4=0.5(x3r+x5r); y4=x_height;
+x6r=x5l; y6=vround u;
+rt x7r = hround(w-u); y7r=-0.5desc_depth;
+filldraw stroke z3e{up}..z4e{right}..z5e{down}..z6e{down}..z7e;
+penlabels(1,2,3,4,5,6,7); endchar;
+
+% The Uranus symbol
+
+cmchar "Uranus symbol (7)";
+beginchar("7",10u#,6u#+math_axis#,6u#-math_axis#);
+ italcorr math_axis#*slant-.5u#;
+ adjust_fit(0,0);
+pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; bot y2=.5(x2-x6); y8-y2=.5(x2-x6);
+circle_points; draw_circle; % 8u in diameter
+z0 = .5[z4,z8];
+fill fullcircle scaled(.8dot_size+eps) shifted z0; % dot
+% now for the arrow on top
+z9 = 2[z0,z8]; y10=y11 = .5(y8+y9); x10-x8 = x8-x11 = .5(y9-y8);
+draw z8--z9; draw z9--z10; draw z9--z11;
+labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
+
+% The Neptune symbol
+
+cmchar "Neptune symbol (8)";
+beginchar("8",14u#,6u#+math_axis#,6u#-math_axis#);
+ italcorr math_axis#*slant-.5u#;
+ adjust_fit(0,0);
+pickup light_rule.nib; autorounded;
+lft x6=hround 2u; x2=w-x6; bot y2=2.5u+.5(x2-x6); y8-y2=.5(x2-x6);
+circle_points;
+draw z6{down}..z5{z4-z6}..z4{right}..z3{z2-z4}..{up}z2; % semicircle
+% now for the cross underneath
+x9=x4; y9=-2.5u; x10=x4-3.5u; x11=x4+3.5u; y10=y11=0;
+draw z4--z9; draw z10--z11;
+% and the three arrows
+x12=x6; x13=x4; x14=x2; y12=y13=y14=y7; % tips of arrows
+y15=y16=y17=y18=y19=y20=y7-1u;
+x15=x12-1u; x16=x12+1u; x17=x13-1u; x18=x13+1u; x19=x14-1u; x20=x14+1u;
+draw z6--z12; draw z4--z13; draw z2--z14;
+draw z12--z15; draw z12--z16;
+draw z13--z17; draw z13--z18;
+draw z14--z19; draw z14--z20;
+labels(2,3,4,5,6,9,10,11,12,13,14,17,18); endchar;
+
+% The Pluto symbol
+
+cmchar "Pluto symbol (9)";
+beginchar("9",12u#,cap_height#,0);
+adjust_fit(cap_serif_fit#,-1u#);
+pickup tiny.nib; pos1(cap_stem,0); pos2(cap_stem,0);
+lft x1l=lft x2l=hround max(2u,3u-.5cap_stem); top y1=h; bot y2=0;
+filldraw stroke z1e--z2e; % stem
+pickup crisp.nib; pos8(slab,-90); pos9(hair,0);
+bot y8r=0; x8=x2; y9=y8l+beak+eps; rt x9r=hround(w-.75u);
+arm(8,9,e,1.2beak_darkness,beak_jut); % lower arm and beak (of L)
+if serifs: nodish_serif(1,2,a,1/3,cap_jut,b,1/3,.5cap_jut); % upper serif
+ nodish_serif(2,1,c,1/3,cap_jut,d,1/3,.5cap_jut); fi % lower serif
+
+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);
+z3r=top z1; y4=y3; y5=.5[y4l,y6l]; y6=y7;
+x7=x2; y7l=vround .5h; x4=x6=.5w+.75u; x5r=hround(w-u);
+x4l:=x6l:=x4-.25cap_curve;
+fill stroke z3e..pulled_arc.e(4,5) & pulled_arc.e(5,6)..z7e; % lobe
+math_fit(0,u#); penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+% The crescent moon symbol. We have to be careful here because this
+% is to be half width (7u instead of 14u) -- so don't use beginarithchar!
+
+cmchar "Moon symbol (M)";
+beginchar("M",7u#,6u#+math_axis#,6u#-math_axis#);
+ italcorr math_axis#*slant-.5u#;
+ adjust_fit(0,1u#); % add back the 1u# of space that SHOULD be at the right
+pickup light_rule.nib; autorounded;
+lft x6=hround u; x2=2w-x6; y8=x2-x6; y2=.5y8;
+circle_points;
+% "limb" is a semicircle drawn directly
+draw z8{left}..z7{z6-z8}..z6{down}..z5{z4-z6}..{right}z4;
+% "terminator" is halfway between limb and vertical line
+z9 = .25[z7,z1]; z10 = .25[z6,z2]; z11 = .25[z5,z3];
+draw z8{left}..z9..z10{down}..z11..{right}z4;
+labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
+
+% The ascending node symbol ("dragon's head")
+
+cmchar "Ascending node symbol (N)";
+beginchar("N",14u#,cap_height#,0);
+adjust_fit(0,0);
+pickup light_rule.nib; autorounded;
+numeric diameter, rad;
+diameter = 3u; rad = 1/2diameter;
+lft x1 = 1u+rad; x5 = w - x1; top y1 = top y5 = rad;
+z2 = z1 + (rad,0) rotated 30;
+z4 = z5 + (rad,0) rotated 150;
+x3 = 1/2(x1+x5); top y3 = h;
+penpos3(.75cap_curve,-90); penpos2(.86cap_hair,30);
+penpos4(.86cap_hair,-210);
+draw fullcircle scaled diameter shifted z1;
+draw fullcircle scaled diameter shifted z5;
+penstroke z2e{(z2-z1) rotated 90}..z3e{right}..{(z4-z5) rotated 90}z4e;
+penlabels(1,2,3,4,5); endchar;
+
+% The descending node symbol ("dragon's tail")
+
+cmchar "Descending node symbol (D)";
+beginchar("D",14u#,cap_height#,0);
+adjust_fit(0,0);
+pickup light_rule.nib; autorounded;
+numeric diameter, rad;
+diameter = 3u; rad = 1/2diameter;
+lft x1 = 1u+rad; x5 = w - x1; bot y1 = bot y5 = h - rad;
+z2 = z1 + (rad,0) rotated -30;
+z4 = z5 + (rad,0) rotated -150;
+x3 = 1/2(x1+x5); bot y3 = 0;
+penpos3(.75cap_curve,-90); penpos2(.86cap_hair,150);
+penpos4(.86cap_hair,30);
+draw fullcircle scaled diameter shifted z1;
+draw fullcircle scaled diameter shifted z5;
+penstroke z2e{(z2-z1) rotated -90}..z3e{right}..{(z4-z5) rotated -90}z4e;
+penlabels(1,2,3,4,5); endchar;
+
+% The vernal equinox symbol (Aries or ram's horn)
+
+cmchar "Vernal Equinox (V)";
+beginchar("V",14u#,cap_height#,0);
+italcorr .8cap_height#*slant-.5u#;
+adjust_fit(0,0);
+pickup tiny.nib; pos1(.75cap_stem,0); pos2(.75cap_stem,0);
+lft x1l=lft x2l=hround(.5w-.375cap_stem); y1=.5h; bot y2=0;
+filldraw stroke z1e--z2e; % stem
+penpos3(.45cap_stem,0); penpos4(.6cap_curve,90);
+penpos5(.4cap_curve,180); penpos6(cap_hair,270);
+z3l=lft z1l; x5r=hround u; y5=bot .8h; x4=x6=.61803[x3l,x5l]; y4r=h+o;
+y5-y6=y4l-y5;
+penstroke z3e{up}..z4e{left}..z5e{down}..{right}z6e; % left arc
+%fill z3r{up}...z4r{left}...{down}diag_end(5'r,5r,1,1,5l,5'l){up}
+% ...{right}z4l...{down}z3l--cycle; % left arc
+penpos7(.45cap_stem,0); penpos8(.6cap_curve,-90);
+penpos9(.4cap_curve,-180); penpos10(cap_hair,-270);
+z7r=rt z1r; x9=w-x5; y9=y5; x8=w-x4; y8=y4;
+x10=w-x6; y10=y6;
+penstroke z7e{up}..z8e{right}..z9e{down}..{left}z10e; % right arc
+%fill z6r{up}...z7r{right}...{down}diag_end(8'r,8r,1,1,8l,8'l){up}
+% ...{left}z7l...{down}z6l--cycle; % right arc
+math_fit(-.8cap_height#*slant-.5u#,ic#-2.5u#);
+penlabels(1,2,3,4,5,6,7,8,9,10); endchar;
+
+% The autumnal equinox symbol (Libra or scales)
+
+cmchar "Autumnal Equinox (L)";
+compute_spread(.45x_height#,.55x_height#);
+beginchar("L",14u#,v_center(2spread#+rule_thickness#));
+italcorr h#*slant-.5u#;
+adjust_fit(0,0); pickup rule.nib;
+numeric diameter;
+lft x1=hround u; x3=x1; x2=x7=w-x1; x5=.5(x3+x7);
+x4=.5(x3+x5); x6=.5(x5+x7);
+y1=y2; y3=y4=y5=y6=y7=math_axis; y3-y1=spread;
+draw z1--z2; % lower bar
+draw z3--z4; % left of top bar
+draw z6--z7; % right of top bar
+diameter = x6-x4;
+draw halfcircle scaled diameter shifted (x5,y5); % semicircle at top
+labels(1,2,3,4,5,6,7); endchar;
+
+% small circle, refined from symbol.cm---guaranteed to be circular!
+
+cmchar "Circle operator";
+beginchar(oct"016",9u#,v_center(7u#));
+adjust_fit(0,0); pickup rule.nib; autorounded;
+lft x6=hround u; x2=w-x6; y2=math_axis; y8-y2=.5(x2-x6);
+circle_points; draw_circle; % circle
+labels(1,2,3,4,5,6,7,8); endchar;
+
+bye.
+