summaryrefslogtreecommitdiff
path: root/info/ltx3pub/mfgaston.tex
blob: 6fb699be0ef1fbc55f2eec83af7fabbcc9f56e25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
%%% ====================================================================
%%%  @LaTeX-file{
%%%     author          = "Alan Jeffrey",
%%%     version         = "0.01",
%%%     date            = "03 August 1993",
%%%     time            = "22:26:08 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        = "18638 273 1528 10597",
%%%     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{ltugboat}

\title{Summary of MFG Aston workshop}

\author{Alan~Jeffrey}
\address{University of Sussex}
\netaddress{alanje@cogs.susx.ac.uk}

\def\rtitlex{MFG discussion document}
\def\midrtitle{{\sl Summary of Aston workshop\/}}
\setcounter{page}{1}

\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}

\maketitle

\section{Introduction}

At the 1993 \TUG\ meeting at Aston University, the math font group held a
workshop at which we discussed the need for new math font encodings, and
our work so far at meeting these needs.

This document contains a short summary of the material presented at the
workshop, for the benefit of those unable to intend, or people like me
with faulty memory!

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.

\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 five math
fonts:
\begin{itemize}
\item Computer Modern
\item Computer Concrete and Euler
\item Lucida Math
\item Lucida New Math
\item MathTime
\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 \MS1 math symbol 1 encoding
\item \MS2 math symbol 2 encoding
\item \MS3 math symbol 3 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
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|.

\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{i} encodings.

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}
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}

The \MS1, \MS2 and \MS3 encodings will contain the geometric glyphs from
\verb|cm*| and \verb|ms*m|, plus frequently requested glyphs such as
\verb|\mapsfrom|.  In addition:
\begin{itemize}
\item \MS1 will contain calligraphic upper and lower case
\item \MS2 will contain open (or `inline' or `outline' or `blackboard
   bold') upper and lower case
\item \MS3 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 \MS1 font.  Another is
to ask that script letters be provided in \T1 encoded fonts.  This point
is still up for discussion.

Families 1, 4 and 5 will contain \MS1, \MS2 and \MS3 encoded fonts.

\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
for your help in developing and implementing them:
\begin{verbatim}
   math-font-discuss@cogs.susx.ac.uk
\end{verbatim}

\makesignature

\end{document}