# mfgaston.tex

• To: math-font-discuss@cogs.susx.ac.uk
• Subject: mfgaston.tex
• From: alanje@cogs.susx.ac.uk (Alan Jeffrey)
• Date: Mon, 16 Aug 93 18:30 BST

This is a slightly updated version of the summary of the Aston workshop,
which I'm going to send off to Mimi on Wednesday for inclusion in the
Aston proceedings.  If you have any comments, you'd better shout quickly!

Alan.
%%% ====================================================================
%%%  @LaTeX-file{
%%%     author          = "Alan Jeffrey",
%%%     version         = "0.04",
%%%     date            = "16 August 1993",
%%%     time            = "10:15:12 BST",
%%%     filename        = "mfgaston.tex",
%%%     address         = "School of Cognitive and Computing Sciences
%%%                        University of Sussex
%%%                        Brighton BN1 9QH
%%%                        UK",
%%%     telephone       = "+44 273 606755 x 3238",
%%%     FAX             = "+44 273 678188",
%%%     checksum        = "???",
%%%     email           = "alanje@cogs.sussex.ac.uk",
%%%     codetable       = "ISO/ASCII",
%%%     keywords        = "TeX fonts mathematics",
%%%     supported       = "yes",
%%%     abstract        = "This is a summary of the MFG Aston workshop.",
%%%     docstring       = "The checksum field above contains a CRC-16
%%%                        checksum as the first value, followed by the
%%%                        equivalent of the standard UNIX wc (word
%%%                        count) utility output of lines, words, and
%%%                        characters.  This is produced by Robert
%%%                        Solovay's checksum utility.",
%%%     package         = "stands alone",
%%%     dependencies    = "none",
%%%  }
%%% ====================================================================

\documentstyle{ltugproc}

\title{Math Font Encodings: a workshop summary}

\preprint

\def\MtgYear{1993}
\def\TUBissue{14 (\MtgYear), No.\ 3}
\def\MeetingDate{July 26--30, 1993}

\def\T#1{${\fam0 T}_{#1}$}
\def\X#1{${\fam0 X}_{#1}$}
\def\MX{$\fam0 MX$}
\def\MS#1{${\fam0 MS}_{#1}$}
\def\MC{$\fam0 MC$}
\def\psname#1{{\normalshape $\langle$#1$\rangle$}}
\def\psnon#1{{\it $\langle$#1\/$\rangle$}}

\begin{document}

%%% Moved the introduction into the abstract.  ASAJ

\begin{abstract}
The math font group is a joint venture of \TUG\ and the \LaTeX3
project.  Its aims are to investigate the requirements for
mathematical typesetting using \TeX, and to propose and implement
new math font encodings which will satisfy these requirements.  At
the 1993 Aston \TUG\ meeting, we held a workshop at which we
discussed the needs for new math font encodings, and the work so
far at meeting those needs.  This paper is a summary of that
workshop, for the benefit of those unable to attend.
The panel consisted of Barbara Beeton, Alan Jeffrey, Frank
Mittelbach, Chris Rowley and Justin Ziegler.  There were many
useful questions and suggestions from the audience.
\end{abstract}

\maketitle

\section{Motivation}

The current situation (as discussed by Berthold Horn in his
stimulating talk {\em Where are the math fonts?\/}) is that there are
over 14,000 text fonts available for use in \TeX, but only six math
fonts:
\begin{itemize}
\item Computer Modern
\item Computer Concrete and Euler
\item Lucida Math
\item Lucida New Math
\item MathTime
\item Symbol
%%% ASAJ Added Symbol, which is quite important since it's the only
%%% PostScript math font that most PostScript interpreters have heard
%%% of!
\end{itemize}
Each of these fonts use different encodings, and each comes with its own
selection of \TeX\ macros.  Although the Cork encoding is rapidly being
established as the standard encoding for European Latin text, there is no
similar encoding for mathematics.  The result is:
\begin{itemize}
\item complex {\em ad hoc\/} macro packages for using each math font.
\item it is difficult to set mathematics with Cork text, since the Cork
encoding does not include the upper case Greek.
\item installing PostScript math fonts such as Mathematical Pi is very
difficult.
\end{itemize}
This is a bottleneck for uptake of the Cork fonts, and use of \TeX\ for
mathematical setting with anything other than the Computer Modern fonts.

The math font group (MFG, or Joint \LaTeX3 project \TUG\ Technical
Working Group on Extended Math Font Encodings to give it its full
title!)~was formed in order to develop new encodings for setting
mathematics.

These encodings should be fully upwardly compatible with \plain~\TeX,
\LaTeX, \AmSTeX\ and \AmS-\LaTeX.  The only effect most users should
notice is that more symbols, and more math fonts will be available for
use in \TeX.

\section{Overview}

The MFG has developed an outline for a proposed math encoding, although
the details of each encoding have yet to be worked out.  There is still
plenty of room for change!

The current math encoding proposal uses:
\begin{itemize}

\item \T1 Cork' text encoding
\item \MC\ math core encoding
\item \MX\ math extension encoding
\item \MS{P} math symbol primary encoding
\item \MS1 math symbol additional 1 encoding
\item \MS2 math symbol additional 2 encoding

\end{itemize}
In addition, we are proposing an \X1 companion text' encoding, to hold
the text glyphs such as \dag' that are currently in math fonts.

Glyphs are being allocated to math encodings on the grounds of:
\begin{description}

\item[Glyph shape.] All glyphs of a similar design should be in the same
encoding.  For example, all the Greek glyphs should live together.

\item[Kerning.] Any glyphs which may need to have a kern pair should be
in the same encoding.  For example, one common request is for kerning
between $f$' and $($', and so these glyphs should live together.
(The situation is somewhat more complex than this, since \TeX\ will
only kern or ligature when the first glyph is a math atom consisting
only of a single-character mathord.  See Rule~14 of Appendix G of \TB\
for more details.)

\item[Ligaturing.] Any glyphs which may need to ligature should be in
the same encoding.  For example, some fonts do not have a separate
\psnon{mapstochar} glyph, and will instead use a ligature between
\psnon{mapstochar} and \psnon{rightarrow} to produce \psnon{mapsto}.

\item[Orthogonality.] Each encoding should use as few different glyph
styles as possible, to minimize the number of virtual fonts needed.
For example, the Computer Modern Symbol encoding includes roman
glyphs, geometric symbols, calligraphic letters, and dingbats, and so
a different VF is required for each combination of roman, geometric,
calligraphic and dingbat font.  A site with 100~text romans, four
geometric symbol fonts, three calligraphic fonts, and three dingbat
fonts would need $100 \times 4 \times 3 \times 3 = 3600$ VFs.

\item[Slots.] Some glyphs have preferred slots, for example it would be
useful if the letter A' was always in slot~65.

\end{description}
None of the encodings will specify bold or sans glyphs, since these are
expected to be kept in separate bold or sans math fonts, with the same
%%% ASAJ
%%%
%%% encoding.  The most commonly used bold glyphs will be placed in the \T1
%%% and \MC\ encoding, so if many bold glyphs are used in a document, only
%%% two extra families need to be used.  If few bold glyphs are
%%% requested, these can be set using macros similar to \verb|\boldsymbol|.
%%%
%%% replaced by:
%%% encoding.  The most commonly used bold glyphs will be placed in the
%%% \MC\ encoding, so if many bold glyphs are used in a document, only
%%% one extra family needs to be used.  If few bold glyphs are
%%% requested, these can be set using macros similar to \verb|\boldsymbol|
%%% from \AmSTeX.
%%%
%%% replaced again by:
encoding.  The glyphs which are most commonly requested in bold will be
placed in the \MC\ encoding, so if many bold glyphs are used in a
document, only one extra \MC-encoded family containing bold glyphs needs
to be used.  If few bold glyphs are
requested, these can be set using macros similar to \verb|\boldsymbol|
from \AmSTeX.

\section{\T1 encoding}

The \T1 (or Cork) encoding will be used for multi-letter identifiers such
as log', sin' and lim'.  Using the \T1 encoding allows arbitrary text
fonts to be used for multi-letter identifiers.  In many texts this will
the same as the text roman, but this will not always be the case (for
example Barandregt's {\em The Lambda Calculus\/}, North-Holland, 1984,
has some multi-letter identifiers set in bold sans!).

This font will not normally be used for anything other than upper and
lower case Latin letters.  The symbol glyphs such as +', =' and /'
will be taken from the \MS{P} encoding.

Although the multi-letter identifier font will be \T1 encoded, it does not
necessarily have to be a text font.  In particular it may have the glyph
width and italic correction adjusted to produce good subscript and
superscript positioning, as long as this is not to the detriment of setting
multi-letter identifiers.

Family~0 will contain a \T1 encoded font.

\section{\MC\ encoding}

The \MC\ encoding will contain:
\begin{itemize}

\item The default Latin letters (for example $f$').
\item The default numerals (for example $1$').
\item The default punctuation (for example $($').
\item The slanted and upright Greek (for example $\alpha$' and
$\Gamma$').

\end{itemize}
%%% Should we keep this sentence?  ASAJ
Other glyphs (such as the math accents and Hebrew) will be included if
there is space!

The font will also contain enough font dimensions to be used as
\verb|\fam2|, since the positioning of subscripts and superscripts
depends much more on the math core font than the symbol fonts.  It may
also contain font dimensions for:
\begin{itemize}

\item Design size
\item Suggested script and scriptscript design size
\item Suggested values for \verb|\mathsurround|, \\
\verb|\thickmuskip|, \verb|\medmuskip| and
\verb|\thinmuskip|.

\end{itemize}
Family~2 will contain a \MC\ encoded font.

\section{\MX\ encoding}

The \MX\ encoding will contain the extension glyphs from \verb|cmex| and
\verb|ms*m|, plus frequently requested glyphs such as longer math
accents, double brackets, and \verb|\bigsqcap|.

Family~3 will contain an \MX\ encoded font.

\section{\MS{i} encodings}

%%% Replaced \MS1 with \MS{P} throughout.

The \MS{P}, \MS1 and \MS2 encodings will contain the geometric glyphs from
\verb|cm*| and \verb|ms*m|, plus frequently requested glyphs such as
\begin{itemize}
\item \MS{P} will contain calligraphic upper and lower case
\item \MS1 will contain open (or inline' or outline' or blackboard
bold') upper and lower case
\item \MS2 will contain black letter (or fraktur') upper and lower case
\end{itemize}
There was quite a lively discussion about what to do with script upper
and lower case!  One possibility is to allow font implementors to replace
the calligraphic letters by script letters in an \MS{P} font.  Another is
to ask that script letters be provided in \T1 encoded fonts.  This point
is still up for discussion.

All of the geometric glyphs used in \plain\ \TeX\ and \LaTeX\ will be
kept in the \MS{P} encoding, so compatibility with \plain\ \TeX\ or \LaTeX\
can be achieved by loading four families, encoded as \T1, \MS{P}, \MC\ and
\MX.  Compatibility with \AmSTeX\ or \AmS-\LaTeX\ can be achieved by
loading six families, encoded as \T1, \MS{P}, \MC, \MX, \MS1 and \MS2.

\section{\X1 encoding}

There are a number of text glyphs that currently live in math fonts, such
as \dag' or \copyright'.  These glyphs will be put into a text
companion' encoding, along with the Adobe standard
and expert glyphs missing from the Cork encoding, such as $f$' (florin)
and ${}^1\!/\!{}_2$'.

The \X1 encoding is not designed to be used in math mode.

\section{Work to do}

There is still quite a lot of work to be done!
\begin{itemize}

\item Propose and document the math encodings.

\item Implement the math encodings with \MF\ or virtual fonts.

\item Provide user interfaces for \plain~\TeX\ and \LaTeX.

\end{itemize}
We have set up a mailing list where we will discuss the encodings and ask
%%% ASAJ
%%%
%%% for your help in developing and implementing them:
%%% \begin{verbatim}
%%%    math-font-discuss@cogs.susx.ac.uk
%%% \end{verbatim}
%%%
%%% replaced with the request address:
subscription requests to:
\begin{verbatim}
math-font-request@cogs.susx.ac.uk
\end{verbatim}
We look forward to hearing from you!

%%% Put the names and addresses here, since they look so dreadful if
%%% ASAJ

\author{Barbara~Beeton}

\author{Alan~Jeffrey}

\author{Frank~Mittelbach}

\author{Chris~Rowley}

\author{Justin~Ziegler}
\address{Ecole des Mines de Saint Etienne}

\makesignature

\end{document}