%%%========================================================================
%%% @TeX-font-metrics-file{
%%%    author              = "Alan Jeffrey and Lars Hellstr{\"o}m",
%%%    version             = "1.915",
%%%    date                = "20 November 2000",
%%%    time                = "17:01:00 CEST",
%%%    filename            = "mathex.mtx",
%%%    checksum            = "",
%%%    email               = "fontinst@cogs.susx.ac.uk",
%%%    codetable           = "ISO/ASCII",
%%%    keywords            = "encoding, math, TeX, PostScript",
%%%    supported           = "yes",
%%%    abstract            = "These are the extra glyphs needed for TeX 
%%%                           math fonts, used by the fontinst package.",
%%%    package             = "fontinst",
%%%    dependencies        = "fontinst.sty, fontdoc.sty",
%%% }
%%%========================================================================
\relax

\documentclass[twocolumn]{article}
\usepackage{fontdoc}[1999/11/04]

\title{The \texttt{fontinst} math symbol glyphs}
\author{Alan Jeffrey\and Lars Hellstr\"om}
\date{November 20, 2000}

\showbranches

\begin{document}

\maketitle

\section{Introduction}

This document describes the glyphs used by the \texttt{fontinst} 
package when generating math symbol fonts.

\metrics

% Uses the fontinst package.

\needsfontinstversion{1.900}


% \unfakable is a glyph which can't be faked.
\setcommand\unfakable#1{
   \setglyph{#1}
      \glyphrule{500}{500}
      \glyphwarning{missing glyph `#1'}
   \endsetglyph
}
\begincomment\medskip
An \textbf{Unfakable} is a glyph which can't be faked. An 
``\textbf{Unfakable `\#1'}\,'' is equivalent to
\begin{quotation}\unfakable{\#1}\end{quotation}

\resetcommand\unfakable#1{\Aheading{Unfakable `#1'}}
\endcomment


% \extensible and \vextensible define a number of extensible glyphs.
\setcommand\extensible#1{
   \begincomment
   \subsection{The `#1' extensible}%
   \endcomment
   \unfakable{#1}
   \unfakable{#1tp}
   \unfakable{#1mid}
   \unfakable{#1bt}
   \unfakable{#1ex}
   \setglyph{#1big} \glyph{#1}{1000} \endsetglyph
   \setglyph{#1Big} \glyph{#1big}{1000} \endsetglyph
   \setglyph{#1bigg} \glyph{#1Big}{1000} \endsetglyph
   \setglyph{#1Bigg} \glyph{#1bigg}{1000} \endsetglyph
}

\setcommand\vextensible#1{
   \begincomment
   \subsection{The `#1' extensible}%
   \endcomment
   \unfakable{#1}
   \unfakable{#1tp}
   \unfakable{#1mid}
   \unfakable{#1bt}
   \unfakable{#1vertex}
   \setglyph{#1big} \glyph{#1}{1000} \endsetglyph
   \setglyph{#1Big} \glyph{#1big}{1000} \endsetglyph
   \setglyph{#1bigg} \glyph{#1Big}{1000} \endsetglyph
   \setglyph{#1Bigg} \glyph{#1bigg}{1000} \endsetglyph
}

% \wideaccent defines a wide accent.
\setcommand\wideaccent#1{
   \begincomment
   \subsection{The `#1' wide accents}%
   \endcomment
   \unfakable{#1}
   \setglyph{#1wide} \glyph{#1}{1000} \endsetglyph
   \setglyph{#1wider} \glyph{#1wide}{1000} \endsetglyph
   \setglyph{#1widest} \glyph{#1wider}{1000} \endsetglyph
}

\comment{\textit{displayoperatorscale} is the difference in scale 
between a big and a display operator, exept for integrals, which have 
their own scale.}
\setint{displayoperatorscale}{1200}
\setint{integralscale}{1728}

\ifisglyph{product}\then
   \setint{textoperatorsize}{
      \add{\height{product}}{\depth{product}}
   }
\Else
   \setint{textoperatorsize}{1000}
   % Default taken from cmex10.
\Fi

% \integral, \bigoperator and \biggoperator define operators.

\setcommand\integral#1{
   \begincomment
   \subsection{The `#1' integrals}%
   \endcomment
   \unfakable{#1}
   \setglyph{#1text} \glyph{#1}{1000} \endsetglyph
   \setglyph{#1display} \glyph{#1text}{\int{integralscale}} \endsetglyph
}

\setcommand\bigoperator#1{
   \begincomment
   \subsection{The `#1' big operators}%
   \endcomment
   \unfakable{#1}
   \setglyph{#1text} \glyph{#1}{1000} \endsetglyph
   \setglyph{#1display} \glyph{#1text}{\int{displayoperatorscale}} \endsetglyph
}

\setcommand\biggoperator#1{
   \begincomment
   \subsection{The `#1' big operators}%
   \endcomment
   \unfakable{#1}
   \setglyph{#1text} 
      \glyph{#1}{
         \div{\mul{1000}{\int{textoperatorsize}}}
             {\add{\height{#1}}{\depth{#1}}}
      }
   \endsetglyph
   \setglyph{#1display} 
      \glyph{#1text}{\int{displayoperatorscale}} 
   \endsetglyph
}


\begincomment
\section{Math extension glyphs}
\endcomment

\unfakable{bracketleftbt}
\unfakable{bracketrightbt}
\unfakable{bracketlefttp}
\unfakable{bracketrighttp}

\setglyph{floorleft}
   \glyph{bracketleftbt}{1000}
\endsetglyph

\setglyph{floorright}
   \glyph{bracketrightbt}{1000}
\endsetglyph

\setglyph{ceilingleft}
   \glyph{bracketlefttp}{1000}
\endsetglyph

\setglyph{ceilingright}
   \glyph{bracketrighttp}{1000}
\endsetglyph

\setglyph{bardbl}
   \glyph{bar}{1000}
   \glyph{bar}{1000}
\endsetglyph
   
\setglyph{barex}
   \glyph{bar}{1000}
\endsetglyph

\setglyph{bardblex}
   \glyph{bardbl}{1000}
\endsetglyph

\setglyph{arrowtp}
   \glyph{arrowup}{1000}
\endsetglyph

\setglyph{arrowbt}
   \glyph{arrowdown}{1000}
\endsetglyph

\setglyph{arrowdbltp}
   \glyph{arrowdblup}{1000}
\endsetglyph

\setglyph{arrowdblbt}
   \glyph{arrowdbldown}{1000}
\endsetglyph

\unfakable{tilde}

\setglyph{hat}
   \glyph{circumflex}{1000}
\endsetglyph

\unfakable{plus}
\unfakable{union}

\setglyph{unionmulti}
   \push
      \movert{\div{\sub{\width{union}}{\scale{\width{plus}}{700}}}{2}}
      \moveup{\div{\width{plus}}{4}}
      \glyph{plus}{700}
   \pop
   \glyph{union}{1000}
\endsetglyph

\extensible{parenleft}
\extensible{parenright}
\extensible{bracketleft}
\extensible{bracketright}
\extensible{braceleft}
\extensible{braceright}
\extensible{floorleft}
\extensible{floorright}
\extensible{ceilingleft}
\extensible{ceilingright}
\extensible{slash}
\extensible{backslash}
\extensible{angleleft}
\extensible{angleright}

\wideaccent{hat}
\wideaccent{tilde}

\vextensible{radical}
\vextensible{arrow}
\extensible{arrowdbl}
\unfakable{arrowvertexdbl}

\biggoperator{unionsq}
\biggoperator{circledot}
\biggoperator{circleplus}
\biggoperator{circlemultiply}
\biggoperator{unionmulti}
\biggoperator{intersection}
\biggoperator{union}
\biggoperator{logicaland}
\biggoperator{logicalor}

\bigoperator{product}
\bigoperator{summation}
\bigoperator{coproduct}

\integral{integral}
\integral{contintegral}

\begincomment
\subsection{Horizontal braces}
\endcomment

\unfakable{bracehtipdownleft}
\unfakable{bracehtipdownright}
\unfakable{bracehtipupleft}
\unfakable{bracehtipupright}

\endmetrics


\section{Changes}

29 Dec 1993, v1.30: Created file.

3 Jan 1994, v1.301: Renamed some of the glyphs, added fakes for 
\texttt{arrowverttp} and friends.

8 Jan 1994, v1.304: Renamed \texttt{similareq} to \texttt{similarequal}.

9 Jan 1994, v1.305: Renamed some glyphs to use the same names as Lucida 
New Math.

16 October 2000, v\,1.915: Updated markup (made it a \LaTeXe\ 
document!). (LH)

20 November 2000, v\,1.915: Added test for whether the \texttt{product} 
glyph exists before setting the \textit{textoperatorsize}, using 
value corresponding to \texttt{cmex10} if it doesn't. Changed 
\verb|\wideaccent| to call the widest glyph \textellipsis\texttt{widest} 
instead of \textellipsis\texttt{widerr}. Changed glyph name 
\texttt{arrowdblvertex} to \texttt{arrowvertexdbl}. (LH) Reported by 
Alejandro L\'{o}pez-Valencia. 

\end{document}
