Received: by nummer-3.proteosys id <01C19443.ABFA9E34@nummer-3.proteosys>; Thu, 3 Jan 2002 11:44:51 +0100 Return-Path: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C19443.ABFA9E34" x-vm-v5-data: ([nil nil nil nil nil nil nil nil nil][nil nil nil nil nil nil nil nil nil nil nil nil "^From:" nil nil nil]) X-MimeOLE: Produced By Microsoft Exchange V6.5 x-vm-vheader: ("Date:" "Resent-Date:" "From:" "Sender:" "Resent-From" "Originally-From:" "Originally-To:" "To:" "Apparently-To:" "Cc:" "Subject:") nil x-vm-bookmark: 6 Content-class: urn:content-classes:message Subject: NFSS version 2 proposal Date: Wed, 24 Jun 1992 10:03:57 +0100 Message-ID: X-MS-Has-Attach: X-MS-TNEF-Correlator: From: "Rainer Schoepf" Sender: "Mailing list for the LaTeX3 project" To: "Rainer M. Schoepf" Reply-To: "Mailing list for the LaTeX3 project" Status: R X-Status: X-Keywords: X-UID: 721 This is a multi-part message in MIME format. ------_=_NextPart_001_01C19443.ABFA9E34 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable The last time the discussion about NFSS version 2 was started, it quickly trailed off in other directions. I'd like to start it again, by sending around a slightly changed version of the notes written down by Chris Rowley and myself, followed by some excerpts from the discussion in January. I'd appreciate comments. Rainer Sch"opf ------------- % Changes by Chris are marked (approxly) by %%CCC % Comments and questions, even answers! are in marginals. % We probably need to be more precise about the syntax and about % the implementation, particularly of the "preprocessing" of the % table, and the storing of computed values before sending it out % more generally for comments. \documentstyle[11pt]{article} % draft defs: \newcommand{\ccc}[1]{\marginpar{\raggedright{\bf CAR:} #1}} \newcommand{\RmS}[1]{\marginpar{\raggedright{\bf RmS:} #1}} \author{Chris Rowley \and Rainer Sch\"opf} \date{Paris, Jardin du Luxembourg, Stardate 1991/09/26 11:00:00:00.00, updated June 1992 by RmS} \title{How to treat math fonts --- how to specify them} \begin{document} \maketitle \section{Notation} Just to distinguish these dreaded kinds of text size\ldots \begin{description} %%CCC \item [text-size] The size used in the text surrounding a math formula, i.e., outside of math mode. %%CCC \item [mathsize] Inside a math formula, the size\ccc{Phil T suggested `mathsize' for this.} used for \verb|\textstyle|. \item [scriptsize] Inside a math formula, the size used for \verb|\scriptstyle|. \item [scriptscriptsize] Inside a math formula, the size used for \verb|\scriptscriptstyle|. \end{description} \section{Informal specification} %%CCC The mathsize, scriptsize and scriptscriptsize to be used with a given text-size can be specified by giving a sequence of \begin{quote} ``math font size specifications'' (MFS). \end{quote} %%CCC An MFS consists of a range, plus $3$ ``functions'' which, in general, take the actual text-size as argument and should be defined to return these $3$ %%CCC values in $3$ specified places (see below). General functions will be supported, but easy specification of certain = commonly used {\em linear functions\/} will be supported, in particular \begin{enumerate} %%CCC \item the linear function defined by giving its values at the end = points of the range, %%CCC \item the linear function defined by giving its slope and its value at a given point\ccc{Any given point, or just, say, the = beginning of the range?}, \item the identity function, %%CCC \item constant functions, \item dilation functions.\RmS{meaning multiplication by a factor} \end{enumerate} The idea behind this is the following: the table entries are searched %%CCC until the first entry is found for which the requested ``text-size'' falls within the specified range. Then the three functions associated with that range are called, with the ``text-size'' as argument. Each of these three functions computes a number and leaves it, say, in a macro \ccc{I would suggest a macro: isnt this just the existing two macros, plus a `mathsize' one?} or dimen register. It is then easy to select the math fonts at the sizes that have just been computed (loading them if necessary). %%CCC [One\ccc{Cant this be done by just using suitable functions/ ranges?} thing that needs further thought is the question of using `nearby' sizes, e.g. 8pt if the computed value is 7.8pt. Even though the = surrounding text may be set at 7.8pt it may still be worthwhile to use 8pt math, for example since one doesn't want to recompute the fonts at 7.8pt.] \subsection{nomathsizes?} We are not sure whether the concept of ``nomathsizes'' should remain. %%CCC If it does, what should its effect be? Simply not switch the math fonts, thereby producing surprising results if one uses math---but remember that some constructions (eg itemize labels and footnote markers) involve ``hidden maths''? Or give an error message when math mode is entered---this may also cause surprises due to ``hidden maths''? \RmS{I think that we have to deal with ``hidden maths'' anyway, so we = can allow this. I still think that the nomathsizes feature is a useful one.} \subsection{Short forms} %%CCC ``Short forms'' for presently supported cases (i.e.~when the range is a single value) should be provided, e.g.~for saying: 10pt ``text-size'' uses 10/7/5 for = math. Perhaps there is a need for short forms for other simple cases as well\ccc{Example: $I/0.7I/0.5I$ where $I$ is the identity.}? \subsection{Fallback} We suggest a ``suitable linear function'' as fall-back when the requested ``text-size'' matches none of the given ranges. This could be done by appending ``invisible'' extra entries at the end of the table (assuming linear search,\ccc{What other search could be used?} for the = moment). %%CCC \section{Implementation options} %%CCC One could preprocess the table and look for ``simple entries'', i.e. single value ranges (SVRs). The processed table would be constructed so that these SVRs are tried first, before the ranges. Since this could be done by a simple lookup, similar\ccc{See para below.} to the mechanism in use in the present NFSS, these cases would be comparatively fast. [But this means that these simple entries have different semantics >from ranges, since they are always tried before any range. One might want to get special effects by inserting these simple entries between range entries. But is this sensible?\ccc{I cannot think of any use for this.}] [{\bf CAR:} Would it be much slower if this were not done by just expanding a macro? If the SVRs were still kept in a table, in such a way that their presence could be easily detected and the assignments could be quickly made by that table entry, then this table could be changed by either addition or deletion, as suggested below. A table and look-up like the one used for finding an external font-file name would work, thus the overhead would be like one extra font to check for each size change: or maybe more due to catcode problems?] %%CCC An extension of this idea is to record the result of every calculation in the same way as simple entries: i.e. after 11.25pt has been requested for the first time, there is a simple entry for 11.25pt---thus, if (as is likely) this size is used again, then it can be processed quickly next time. But this needs a switch, to prevent this from happening\ccc{I dont understand this, but see my table suggestion above.}.\RmS{The idea I had was that one might not want to record it, for e xample because this is just one special font in one special size.} %%CCC One needs also to consider the possibility of changing the table during processing, i.e.~forgetting everything that has been calculated so far. We are not sure whether this is needed or whether it is even sensible to allow this. But it might happen that, when another font family is used, different sizes are needed for = math. \RmS{I now think that it is needed when switching to other font = families, with different weight and width.} \section{An extension} One could have more than three functions in a ``math font size specification''. These extra functions would be used to calculate values based on ranges for ``text-size'', e.g., \verb|\jot|, or for tweaking the fontdimen parameters\ccc{This could be done by allowing optional ``arbitrary functions'' with input the ``text-size'' supplied, possibly as an argument to these functions.}. This certainly needs more thought. \end{document} -------- ------_=_NextPart_001_01C19443.ABFA9E34 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable NFSS version 2 proposal

The last time the discussion about NFSS version 2 was = started, it
quickly trailed off in other directions. I'd like to = start it again,
by sending around a slightly changed version of the = notes written down
by Chris Rowley and myself, followed by some excerpts = from the
discussion in January.

I'd appreciate comments.

Rainer Sch"opf

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

% Changes by Chris are marked (approxly) by = %%CCC
% Comments and questions, even answers! are in = marginals.
% We probably need to be more precise about the = syntax and about
%  the implementation, particularly of the = "preprocessing" of the
%  table, and the storing of computed values = before sending it out
%  more generally for comments.

\documentstyle[11pt]{article}
% draft defs:
\newcommand{\ccc}[1]{\marginpar{\raggedright{\bf = CAR:} #1}}
\newcommand{\RmS}[1]{\marginpar{\raggedright{\bf = RmS:} #1}}
\author{Chris Rowley \and Rainer = Sch\"opf}

\date{Paris, Jardin du Luxembourg, Stardate 1991/09/26 = 11:00:00:00.00,
      updated June 1992 by = RmS}

\title{How to treat math fonts --- how to specify = them}

\begin{document}

\maketitle

\section{Notation}

Just to distinguish these dreaded kinds of text = size\ldots
\begin{description}
%%CCC
  \item [text-size] The size used in the text = surrounding a math
        formula, = i.e., outside of math mode.
%%CCC
  \item [mathsize] Inside a math formula, the = size\ccc{Phil T
suggested `mathsize' for this.}
        used for = \verb|\textstyle|.
  \item [scriptsize] Inside a math formula, the = size
        used for = \verb|\scriptstyle|.
  \item [scriptscriptsize] Inside a math = formula, the size
        used for = \verb|\scriptscriptstyle|.
\end{description}

\section{Informal specification}
%%CCC
The
mathsize, scriptsize and scriptscriptsize to be used = with a given
text-size can be
specified by giving a sequence of
\begin{quote}
  ``math font size specifications'' = (MFS).
\end{quote}
%%CCC
An MFS consists of a range, plus $3$ ``functions'' = which, in general,
take the actual text-size as argument and should = be
defined to return these $3$
%%CCC
values in $3$ specified places (see below).

General functions will be supported, but easy = specification of certain commonly
used {\em linear functions\/}
will be supported, in particular
\begin{enumerate}
%%CCC
  \item the linear function defined by giving = its values at the end points
        of the = range,
%%CCC
  \item the linear function defined by giving = its slope and its
        value at a = given point\ccc{Any given point, or just, say, the beginning
of the range?},
  \item the identity function,
%%CCC
  \item constant functions,
  \item dilation functions.\RmS{meaning = multiplication by a factor}
\end{enumerate}
The idea behind this is the following: the table = entries are searched
%%CCC
until the first entry is found for which the
requested ``text-size'' falls within the specified = range.
Then the three functions associated with
that range are called, with the ``text-size'' as = argument. Each of
these three functions computes a number and leaves = it, say, in a macro
\ccc{I would suggest a macro: isnt this just the = existing two macros,
plus a `mathsize' one?}
or dimen register. It is then easy to select the math = fonts at the sizes
that have just been computed (loading them if = necessary).

%%CCC
[One\ccc{Cant this be done by just using suitable = functions/ ranges?}
 thing that needs further thought is the = question of using `nearby'
sizes, e.g. 8pt if the computed value is 7.8pt. Even = though the surrounding
text may be set at 7.8pt it may still be worthwhile = to use 8pt math, for
example since one doesn't want to recompute the fonts = at 7.8pt.]

\subsection{nomathsizes?}

We are not sure whether the concept of ``nomathsizes'' = should remain.
%%CCC
If it does, what should its effect be? Simply not = switch the math
fonts, thereby producing surprising results if one = uses math---but
remember that some constructions (eg itemize labels = and footnote
markers) involve ``hidden maths''? Or
give an error message when math mode is = entered---this may also
cause surprises due to ``hidden maths''?
\RmS{I think that we have to deal with ``hidden = maths'' anyway, so we can allow
 this.
I still think that the nomathsizes feature is a = useful one.}

\subsection{Short forms}

%%CCC
``Short forms'' for presently supported cases = (i.e.~when the range is
a single value)
should be provided, e.g.~for saying: 10pt = ``text-size'' uses 10/7/5 for math.
Perhaps there is a need for
short forms for other simple cases as = well\ccc{Example: $I/0.7I/0.5I$
where $I$ is the identity.}?

\subsection{Fallback}

We suggest a ``suitable linear function'' as fall-back = when the
requested ``text-size'' matches none of the given = ranges. This could be
done by appending  ``invisible'' extra entries = at the end of the table
(assuming linear search,\ccc{What other search could = be used?} for the moment).


%%CCC
\section{Implementation options}

%%CCC
One could preprocess the table and look for ``simple = entries'', i.e.
single value ranges (SVRs).  The = processed
table would be constructed so that these SVRs are = tried first,
before the ranges. Since this could be done by a = simple
lookup, similar\ccc{See para below.}
to the mechanism in use in the present NFSS, = these
cases would be comparatively fast.

[But this means that these simple entries have = different semantics
>from ranges, since they are always tried before = any range. One might
want to get special effects by inserting these simple = entries between
range entries. But is this sensible?\ccc{I cannot = think of any use for
this.}]

[{\bf CAR:} Would it be much slower if this were not = done by
just expanding a macro?  If the SVRs were still = kept in
a table, in such a way that their presence could be = easily detected
and the assignments could be quickly made by that = table entry, then
this table could be changed by either addition or = deletion, as
suggested below. A table and look-up like the one = used for finding an
external font-file name would work, thus the overhead = would be like
one extra font to check for each size change: or = maybe more due to
catcode problems?]

%%CCC
An extension of this idea is to record the result of = every calculation
in the same way as simple entries: i.e. after 11.25pt = has been requested
for the first time, there is a simple entry for = 11.25pt---thus, if (as
is likely) this size is used again, then it can be = processed quickly
next time.

But this needs a switch, to prevent this from = happening\ccc{I dont
understand this, but see my table suggestion = above.}.\RmS{The idea I
had was that one might not want to record it, for e = xample because
this is just one special font in one special = size.}

%%CCC
One needs also to
consider the possibility of changing the table during = processing,
i.e.~forgetting everything
that has been calculated so far. We are not sure = whether this is needed
or whether it is even sensible to allow this. But it = might happen
that, when another font family is used, different = sizes are needed for math.
\RmS{I now think that it is needed when switching to = other font families,
with different weight and width.}

\section{An extension}

One could have more than three functions in a ``math = font size
specification''. These extra functions would be used = to calculate values
based on ranges for ``text-size'', e.g., \verb|\jot|, = or
for tweaking the fontdimen parameters\ccc{This could = be done by
allowing optional ``arbitrary functions'' with input = the
``text-size'' supplied, possibly as an argument to = these functions.}.

This certainly  needs more thought.

\end{document}

--------

------_=_NextPart_001_01C19443.ABFA9E34--