• To: math-font-discuss@cogs.susx.ac.uk
• From: Matthias Clasen <clasen@pong.mathematik.uni-freiburg.de>
• Date: Tue, 20 Jan 1998 09:02:49 +0100

Hello,

I have thought about an uglyness in our current proposal for
the extensible encoding MXP: The text/script/scriptscript
ratio is fixed, since we include the small radicals. I have
worked on some ideas how we could avoid this while still
being able to load the extensible font in only one size.

You can find a first sketch for such an implementation
of \sqrt in the document below. It works, as far as I could
see from some tests. Of course it needs some extension
(integration with NFSS, the optional argument, etc).
But before I continue to investigate this I'd like to
hear your opinion on this. Is it a viable alternative to
our current proposal ?

Regards, Matthias

------------------

\documentclass[preprint]{ltugboat}
\usepackage{shortvrb}

\overfullrule0pt

\title{How many sizes of radicals do we need?}
\author{Matthias Clasen}
Albert-Ludwigs-Universit{\"a}t Freiburg\\
Institut f{\"u}r Mathematische Logik\\
D-79104 Freiburg, Germany}
\def\rtitlex{MFG discussion document}
\setcounter{page}{1}

\makeatletter
\def\fsqrt#1{{\mathpalette\@fsqrt{#1}}}
\def\@fsqrt#1#2{%
% set #2 in cramped style #1
\setbox0=\hbox{%
\nulldelimiterspace=0pt
$\m@th#1\radical0{#2}$}%
% remove the extra vertical space
\ifx#1\displaystyle
\dimen0=\fontdimen8\textfont3
\else \dimen0=1.25\fontdimen8
\ifx#1\textstyle \textfont
\else \ifx#1\scriptstyle \scriptfont
\else \scriptscriptfont
\fi
\fi 3
\fi
\setbox1=\hbox{%
$\m@th\exsc@le#1\fsqrtsign{\box0}$}%
\box1\relax}
\DeclareFontFamily{U}{fsym}{}
\DeclareFontShape{U}{fsym}{m}{n}{<->sfixed*cmsy10}{}
\DeclareSymbolFont{fsym}{U}{fsym}{m}{n}
\DeclareMathSymbol{\afsym}{\mathord}{fsym}{3}
\font\fsyten=cmsy10
\font\fsyseven=cmsy7
\font\fsyfive=cmsy5
\def\exsc@le{%
\textfont\symfsym=\fsyten
\scriptfont\symfsym=\fsyseven
\scriptscriptfont\symfsym=\fsyfive
}

\begin{document}
\maketitle

\section{The current approach}

In his Technical Report on Math Font Encoding'', Justin Ziegler
states that
\begin{quote}
The present \texttt{cmsy} font contains one glyph that is set in a
strange way --- the radical sign, and thus makes that whole font
unusable for the outer world. It would be a good idea to make sure
that this does not happen again.

\dots [\texttt{cmsy}] has always been loaded in three sizes, and must remain
so. If it [the radical] is taken out of \texttt{cmsy}, and put in a \texttt{cmex}
replacement, then this point must be taken into consideration.
\end{quote}
And he comes to the conclusion that
\begin{quote}
If the new \texttt{cmex} is loaded in one size, it must contain
three different sizes of the radical in order to stay compatible
with plain.
\end{quote}
This makes script and scriptscript sizes of the radical available even
if the MXP-encoded font is loaded in only one size. But it has the very ugly
side effect of fixing the text/script/scriptscript size ratios, i.\,e.\ a
MXP-encoded font designed for 10\,pt / 7\,pt / 5\,pt will not be usable with
e.\,g.\ 10\,pt / 8\,pt / 6\,pt.

\section{A new approach}

If we assume that loading three sizes of the MXP-encoded font will be the
compatibility with old documents, then the cleaner solution would be to put
only a textsize radical into MXP.

I claim that we can do this and still enable loading one size. The idea is to
use three sizes \emph{locally} for radicals. The following macros are my
first try at such a solution, inspired by some old macros to set math material
in cramped style:

\begin{verbatim}
\def\fsqrt#1{{\mathpalette\@fsqrt{#1}}}
\def\@fsqrt#1#2{%
% set #2 in cramped style #1
\setbox0=\hbox{%
\nulldelimiterspace=0pt
$\m@th#1\radical0{#2}$}%
% remove the extra vertical space
\ifx#1\displaystyle
\dimen0=\fontdimen8\textfont3
\else \dimen0=1.25\fontdimen8
\ifx#1\textstyle \textfont
\else \ifx#1\scriptstyle \scriptfont
\else \scriptscriptfont
\fi
\fi 3
\fi
\setbox1=\hbox{%
$\m@th\exsc@le#1\fsqrtsign{\box0}$}%
\box1\relax}
\end{verbatim}
The macro \cs{exsc@le} has to change the font allocations for the family
from which we take the \cs{fsqrtsign} to use three sizes.

\section{An example}

My simple test version of \cs{exsc@le} (ignoring NFSS) used in this
document is:
\begin{verbatim}
\font\fsyten=cmsy10
\font\fsyseven=cmsy7
\font\fsyfive=cmsy5
\def\exsc@le{%
\textfont\symfsym=\fsyten
\scriptfont\symfym=\fsyseven
\scriptscriptfont\symfsym=\fsyfive}
\end{verbatim}
For demonstration purposes within this document,
I take the \cs{fsqrtsign} from a symbol font containing
only one size of \texttt{cmsy}:
\begin{verbatim}
\DeclareFontFamily{U}{fsym}{}
\DeclareFontShape{U}{fsym}{m}{n}
{<->sfixed*cmsy10}{}
\DeclareSymbolFont{fsym}{U}{fsym}{m}{n}
{fsym}{"70}{largesymbols}{"70}
\end{verbatim}
Now compare
$\sqrt{*}^{\sqrt{*}^{\sqrt{*}}}\sqrt{*^{*^*}}*^{*^*} \quad\textrm{(using \cs{sqrt})}$
$\fsqrt{*}^{\fsqrt{*}^{\fsqrt{*}}}\fsqrt{*^{*^*}}*^{*^*} \quad\textrm{(using \cs{fsqrt})}$
$\fsqrt{\afsym}^{\fsqrt{\afsym}^{\fsqrt{\afsym}}} \quad\textrm{(using \cs{fsqrt}, * from \texttt{fsym})}$
I'd very much like to hear your opinions on the practicability of this
approach.

\makesignature
\end{document}

--
Matthias Clasen,
Tel. 0761/203-5606
Email: clasen@mathematik.uni-freiburg.de
Institut fuer Mathematik, Albert-Ludwigs-Universitaet Freiburg