% Filename: psfont.sty
% Author: Alan Jeffrey
% E-mail: alanje@cogs.sussex.ac.uk
% Last modified: 14 May 1992

% This is a document style option which defines macros for loading PS fonts.

% Set a flag to declare ourselves loaded:

\def\psfont@loaded{ }

% Load one font:

\def\new@ps@fontshape#1#2#3#4%
   {\new@fontshape{#1}{#2}{#3}{%
      <5>#4 at5pt%
      <6>#4 at6pt%
      <7>#4 at7pt%
      <8>#4 at8pt%
      <9>#4 at9pt%
      <10>#4%
      <11>#4 at10.95pt%
      <12>#4 at12pt%
      <14>#4 at14.4pt%
      <17>#4 at17.28pt%
      <20>#4 at20.736pt%
      <25>#4 at24.8832pt}{}}

% Load a whole family:

\def\load@ps@font#1#2#3#4#5#6#7#8#9%
   {\new@ps@fontshape{#1}{m}{n}{#2}
      \new@ps@fontshape{#1}{m}{it}{#3}
      \new@ps@fontshape{#1}{m}{sl}{#4}
      \new@ps@fontshape{#1}{m}{sc}{#5}
      \new@ps@fontshape{#1}{b}{n}{#6}
      \new@ps@fontshape{#1}{b}{it}{#7}
      \new@ps@fontshape{#1}{b}{sl}{#8}
      \new@ps@fontshape{#1}{b}{sc}{#9}
      \new@ps@fontshape{#1}{bx}{n}{#6}
      \new@ps@fontshape{#1}{bx}{it}{#7}
      \new@ps@fontshape{#1}{bx}{sl}{#8}
      \new@ps@fontshape{#1}{bx}{sc}{#9}
      \expandafter\let\csname every@#1@family\endcsname\every@ps@family
      \extra@def{#1}}

% Some extra characters:

\chardef\currency"A8
\chardef\cents"A2
\chardef\yen"A5
\chardef\florin"A6

% When a new family FOO is loaded, we call \every@FOO@family.

\def\fontfamily#1{\csname every@#1@family\endcsname\edef\f@family{#1}}
\let\family\fontfamily

% The CM families define the following macros:

\let\cm@pounds\pounds
\let\cm@S\S
\let\cm@dag\dag
\let\cm@ddag\ddag
\let\cm@P\P
\let\cm@ldots\ldots
\let\cm@H\H
\let\cm@dot\.
\let\cm@AA\AA

\def\every@cm@family
   {\let\pounds\cm@pounds
      \let\S\cm@S
      \let\dag\cm@dag
      \let\ddag\cm@ddag
      \let\P\cm@P
      \let\ldots\cm@ldots
      \let\H\cm@H
      \let\.\cm@dot
      \let\AA\cm@AA}

\let\every@cmr@family=\every@cm@family
\let\every@cmtt@family=\every@cm@family
\let\every@cmss@family=\every@cm@family

% The PS families define the following macros:

\newdimen\aadimen

\chardef\ps@pounds"A3
\chardef\ps@S"A7
\chardef\ps@dag"B2
\chardef\ps@ddag"B3
\chardef\ps@P"B6
\chardef\ps@ldots"BC
\def\ps@H#1{{\accent"CD #1}}
\def\ps@dot#1{{\accent"C7 #1}}
\def\ps@AA{\leavevmode\setbox0\hbox{h}\aadimen\ht0
    \advance\aadimen-1ex\setbox0\hbox{A}\rlap{\raise.67\aadimen
    \hbox to \wd0{\hss\char'27\hss}}A}

\def\every@ps@family
   {\let\pounds\ps@pounds
      \let\S\ps@S
      \let\dag\ps@dag
      \let\ddag\ps@ddag
      \let\P\ps@P
      \let\ldots\ps@ldots
      \let\H\ps@H
      \let\.\ps@dot
      \let\AA\ps@AA}

% For some reason, the default family is hard wired to be cmr, 
% rather than defined to be \rmdefault...

\def\default@family{\rmdefault}

