summaryrefslogtreecommitdiff
path: root/fonts/cmolddig/cmolddig.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/cmolddig/cmolddig.tex
Initial commit
Diffstat (limited to 'fonts/cmolddig/cmolddig.tex')
-rw-r--r--fonts/cmolddig/cmolddig.tex494
1 files changed, 494 insertions, 0 deletions
diff --git a/fonts/cmolddig/cmolddig.tex b/fonts/cmolddig/cmolddig.tex
new file mode 100644
index 0000000000..9394509ac5
--- /dev/null
+++ b/fonts/cmolddig/cmolddig.tex
@@ -0,0 +1,494 @@
+%&latex
+% File cmolddig.tex
+% Copyright 1999 Rowland McDonnell
+% rowland.mcdonnell@physics.org
+%
+% Part of the cmolddig package
+%
+% This file can redistributed and/or modified under the terms
+% of the LaTeX Project Public License Distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt; either
+% version 1 of the License, or (at your option) any later version.
+
+\documentclass[a4paper,11pt]{article}
+
+\usepackage{array,xspace}
+
+\makeatletter
+\newcommand{\ttlb}{{\ttfamily\def\@tempcmda{OT1}%
+\ifx\f@encoding\@tempcmda\char"7B\else\{\fi}}
+
+\newcommand{\ttrb}{{\ttfamily\def\@tempcmda{OT1}%
+\ifx\f@encoding\@tempcmda\char"7D\else\}\fi}}
+
+\newcommand{\ttbs}{{\ttfamily\def\@tempcmda{OT1}%
+\ifx\f@encoding\@tempcmda\char`\\\else\textbackslash\fi}}
+
+\newcommand*{\comname}[2][VF500F2E]{{\ttfamily\ttbs #2%
+\def\@tempcmda{VF500F2E}\def\@tempcmdb{#1}%
+\ifx\@tempcmda\@tempcmdb\else\comarg{#1}\fi}}
+\makeatother
+
+\newcommand*{\comarg}[1]{{\ttfamily\ttlb$\langle$%
+{\rmfamily\itshape#1}\/$\rangle$\ttrb}}
+
+\newcommand*{\comoptarg}[1]{{\ttfamily[$\langle$%
+{\rmfamily\itshape#1}\/$\rangle$]}}
+
+\newcommand*{\filename}[1]{\texttt{#1}}
+\newcommand*{\packname}[1]{\texttt{#1}}
+\newcommand*{\optname}[1]{\texttt{#1}}
+\newcommand*{\newsgroup}[1]{\texttt{news://#1}}
+\newcommand*{\dvidriver}{dvi driver}
+
+\newcommand*{\cmolddig}{\packname{cmolddig}\xspace}
+
+\author{Rowland McDonnell}
+\title{The \cmolddig package}
+\date{23rd August 1999}
+
+\begin{document}
+
+\maketitle
+\tableofcontents
+
+\section{Introduction}
+
+The \packname{cmolddig} package sets things up so that numbers are
+printed using old style digits -- $\oldstylenums{1234567890}$ --
+rather than the usual lining digits -- $1234567890$. It only works
+with the original Computer Modern founts. You can choose whether
+numbers are printed as old style or lining digits in text or in maths
+mode.
+
+You can get old style digits without any extra help by using the
+command \comname{oldstylenums} in maths mode, but this package
+arranges things so that all numbers are printed using old style digits
+without you needing to do that.
+
+To cut a very involved tale down to the barest essentials: old style
+digits look better and are easier to read in text and the like; while
+lining digits are more suitable for maths, in tables, and the like.
+Both these assertions are argued over by typographers.
+
+If you have the T1 encoded European Modern founts installed, you might
+be interested in the \packname{eco} package, which is the T1
+equivalent of \cmolddig. It avoids many of the limits of this package.
+The \cmolddig package doesn't contain any new characters: you need to
+have the OT1 encoded Computer Modern Roman founts installed before
+this package is useful. As far as I know, all \TeX\ systems come with
+these founts installed by default. It doesn't matter if you're using
+Metafont, PostScript Type 1, or TrueType versions of the Computer
+Modern founts; but you do need a \TeX\ system able to use virtual
+founts. Almost all modern (1999) \TeX\ systems can use virtual founts;
+the only exception I know of is Y\&Y \TeX's version.
+
+\packname{Cmolddig} works by switching to a set of virtual founts that
+have the normal lining digits replaced with old style digits from the
+corresponding maths italic fount. These digits are conventional
+upright digits despite living in a nominally italic fount.
+
+The original Computer Modern founts have old style digits available
+for the Computer Modern Roman family only, and even then only for the
+upright shapes: Computer Modern Roman upright, bold extended, bold,
+and small caps. Because of this, this package can't give you old style
+digits for Computer Modern Sanserif or Computer Modern Typewriter; nor
+does it give you old style digits if you're using any italic or
+slanted fount.
+
+Options exist to use old style digits in maths or not, independently
+of the style of numbers in normal text. You can also choose to make
+use of the extra small caps sizes included with the AMS fount set if
+you have it installed.
+
+\section{Installation}
+
+You need to put three directories of files in the right places on
+your \TeX\ system's directory tree: with that done, installation is
+complete.
+
+All the files in the \filename{texinputs} directory should go
+into a directory that \TeX\ searches for input files. All the files in
+the \filename{tfm} directory should go into a directory that
+\TeX\ searches for \filename{tfm} (fount) files. All the files in
+the \filename{vf} directory should go into a directory that
+\TeX\ searches for \filename{vf} (virtual fount) files. If you don't
+know where these places are, have a read of your \TeX\ system's
+documentation.
+
+Moving these files to the right places is all you need to do. Once
+you've done this, try running \LaTeX\ on \filename{odshrtst.tex}: you
+should see some old style digits in the output, showing that you've
+installed the package correctly.
+
+You can ignore all the files in the \filename{source} directory
+unless you're interested in how I created the virtual founts at the
+heart of this package. The \filename{source} directory can be thrown
+away if you like.
+
+\section{Using the \cmolddig package}
+
+Make sure you include the \cmolddig package by saying:
+\begin{verbatim}
+ \usepackage{cmolddig}
+\end{verbatim}
+in the preamble of your document. This will switch you to Computer
+Modern Roman with old style digits in normal text only, not in maths
+mode.
+
+\subsection{Controlling the package}
+
+You can switch between Computer Modern Roman with old style digits and
+with normal lining digits inside your document using the new commands:
+\comname{cmoldstyledigits} and \comname{cmliningdigits}.
+\begin{verbatim}
+ \cmoldstyledigits 35,000 cabbages with old style digits,
+ \cmliningdigits or 15 turnips with lining digits.
+\end{verbatim}
+
+By default, the \cmolddig package doesn't affect numbers in maths mode.
+If you want old style digits in maths mode, you can give the package
+the \optname{cmoldstyledigits} option:
+\begin{verbatim}
+ \usepackage[cmoldstyledigits]{cmolddig}
+\end{verbatim}
+the \optname{cmliningmathdigit} option forces lining digits in
+maths mode; this is what \cmolddig usually does, so there's probably
+no need to know about this option.
+
+You can switch between Computer Modern Roman with old style digits in
+maths and with normal lining digits in maths inside your document
+using the commands: \comname{cmoldstyledigits} and
+\comname{cmliningdigits}.
+\begin{verbatim}
+ \cmoldstylemathdigits $35 \pi = x$% old style digits
+ \cmliningmathdigits $17x^{2}-32x+17=y$% lining digits
+\end{verbatim}
+
+You might like to note that it's \emph{very} unusual to use old style
+digits in maths. I have come across one typographer who asserts that,
+despite this, maths is more readable when typeset with old style
+digits. Whatever the truth of the matter, it's probably best to keep
+to lining digits in maths if you are producing work that needs to meet
+any standard of conventionality.
+
+If you have the AMS founts which come with Computer Modern Roman caps
+and small caps in two extra sizes -- 8\,pt and 9\,pt -- you can tell
+\cmolddig about it with the \optname{amsfonts} option:
+\begin{verbatim}
+ \usepackage[amsfonts]{cmolddig}
+\end{verbatim}
+will tell \cmolddig to use these extra sizes if needed. The \cmolddig
+package won't use these two extra founts unless you tell it to. The
+\optname{extracsc} option is identical in effect to the
+\optname{amsfonts} option.
+
+The package also includes the \optname{noamsfonts} and
+\optname{noextracsc}: a pair of options which tell \cmolddig to avoid
+using the extra AMS small caps founts. I can't see any need for
+anyone to use them, because the \cmolddig package avoids using these
+extra founts by default.
+
+\section{How it works and stuff}
+
+There are three separate things that can be considered: the virtual
+fount mechanism in \TeX, which makes this package possible; the
+creation of the particular virtual founts used by \cmolddig; and what
+the package actually does when you use it.
+
+\subsection{Virtual founts}
+
+A warning: the subject of \TeX\ and founts is complicated and
+never-ending. This short section is inevitably inadequate, but I hope
+it sheds a little light.
+
+To begin with, all \TeX\ knows about a fount is the \filename{tfm}
+file. When you select a fount for typesetting, \TeX\ reads the
+appropriate \filename{tfm} file which tells it how much space each
+character takes up (height, depth, and width), how much space to add
+or subtract between certain pairs of letters (kerning information),
+which pairs of characters should be replaced by a different character
+(ligature information; replacing \texttt{ff} with an `ff' ligature,
+for example), and similar things. There is no information about the
+shape of any letters in this file.
+
+Every \filename{tfm} file has up to 256 different characters listed in
+it. Each character lives in a numbered slot: 0--255. There are a
+number of standard \emph{encodings} defined for \LaTeX\ which say which
+character should live in which numbered slot. In OT1 encoding (used
+for the original Computer Modern Roman founts), character number 48 is
+the number `0', character number 49 is the number `1', and so on.
+
+In the normal run of things, \TeX\ places information about the fount
+in the \filename{dvi} file, and when you come to print or preview that
+\filename{dvi} file, the driver program finds a real fount (bitmap, PS
+Type 1, TrueType, or whatever) and displays it. This approach has a
+few problems, particularly when you come to work with founts that (in
+their natural state) don't have the same characters in the same slots
+as the standard \TeX\ encoding. For example, character number 1 in an
+OT1 encoded fount is an upper-case Delta: $\Delta$. This is unique to
+that encoding: character number 1 in a normal PS type 1 fount is
+undefined. If you tried to use a normal PS Type 1 fount with \LaTeX's
+OT1 encoding and took no precautions, things just wouldn't work at all
+right and you'd get the wrong characters printed for lots of things.
+
+The virtual fount mechanism is one method for getting round this (and
+other) problems. The way it works (in brief) is this. You create a
+pair of files: a \filename{tfm} file and a \filename{vf} file. The
+\filename{tfm} file is a perfectly ordinary \filename{tfm} file. The
+\filename{vf} (virtual fount) file is something new: it contains
+information on how to print each character referred to in the
+\filename{tfm} file. The instructions might be to get all the
+characters except the numbers from (say) cmr10, and to get the numbers
+from cmmi10. This is exactly what \filename{cmrj10.vf} does. These
+\filename{vf} files can contain fragments of \filename{dvi} file so
+all sorts of trickery is possible. A more common use for virtual
+founts is re-mapping: re-arranging the characters so that they're in
+the expected slots for the encoding you're using. In other words, you
+might be using (say) a PS Type 1 version of Times using the
+\packname{times} package and OT1 encoding. If you were to use a dot
+accent, you'd be asking for character number 95. In the `natural' PS
+text encoding, character number 95 is an underscore. The magic of
+virtual founts means that character number 95 in the fount
+(\filename{tfm} file) that \TeX\ sees `really' is a dot accent; when
+the \dvidriver comes to display that fount, it sees that
+it's a virtual fount, looks at the appropriate \filename{vf} file, and
+displays character number 199 from the `real' Times fount every time
+the \filename{dvi} file asks for character number 95. (For the sake of
+a comprehensible explanation, I've ignored the widespread use of 8r
+encoding as an intermediate step, and ignored re-encoding done by the
+\dvidriver).
+
+The \filename{vf} (virtual fount) file is a new type of file for
+\TeX\ systems, but it's ignored by \TeX\ itself: \filename{vf} files
+are used only by \filename{dvi} drivers. What happens is this: when
+a modern \filename{dvi} driver looks at a \filename{dvi} file, it
+checks to see if any of the \filename{tfm} files in it have
+corresponding \filename{vf} files. If so, the driver looks in the
+\filename{vf} files and follows the instructions in them on how to
+print the characters referred to. A \filename{vf} file can refer to
+any real fount or any virtual fount, so this business of looking
+things up in virtual founts can get complicated.
+
+You can find out more about virtual founts by running \filename{weave}
+and then \TeX\ on these files from CTAN:
+\begin{center}
+\begin{tabular}{@{}p{\textwidth}@{}}
+\filename{systems/knuth/etc/vftovp.web}\\
+\filename{systems/knuth/etc/vptovf.web}
+\end{tabular}
+\end{center}
+
+\subsection{What the package does}
+
+A brief explanation to begin with: every fount in \LaTeX\ belongs to a
+\emph{family}. Every family has a short internal name by which it is
+referred to inside \LaTeX. The internal name of the Computer Modern
+Roman family is \texttt{cmr}. The \cmolddig package defines a new
+family, which has the internal name \texttt{cmrj}. The `j' is a code
+that means `with old style digits', so \texttt{cmrj} stands for
+`Computer Modern Roman with old style digits'. If you're interested,
+the fontname documentation available from CTAN explains the full
+details of this code.
+
+This package's default behaviour is to define the \comname{rmdefault}
+family to be \texttt{cmrj}. This command defines the fount family used
+for typesetting normal text. What this change means is that when
+\LaTeX\ comes across a request to typeset normal text, it sees that it
+needs to use the \texttt{cmrj} family, it loads the file
+\texttt{ot1cmrj.fd} (this is assuming that you're using OT1 encoding
+-- if you're not, you'll get an error message instead). This file
+tells \LaTeX\ which \filename{tfm} file to load when you ask for any
+given fount. In this case, \LaTeX\ is told to use the new virtual
+founts where they exist. You can learn more about \filename{fd} files
+by reading \filename{fntguide.tex}, which is part of the standard
+\LaTeX\ distribution.
+
+The \cmolddig package makes two new commands:
+\comname{cm\-old\-style\-digits}, which changes \comname{rmdefault} to
+\texttt{cmrj} and switches to \comname{rmfamily}; and
+\comname{cm\-lining\-digits}, which changes \comname{rmdefault} to
+\texttt{cmr} and also switches to \comname{rmfamily}
+
+Maths is a bit more tricky. By default, the \cmolddig package
+doesn't affect maths mode behaviour. The package defines two
+commands for switching between the two sorts of digits in maths mode:
+\comname{cmoldstylemathdigits} and \comname{cmliningmathdigits}.
+These commands are used by the package when you use the
+\optname{cmoldstylemathdigits} and \optname{cmliningmathdigit}
+options. What do they do? They change the mathcode of the numbers
+0--9 to the appropriate values to select either normal lining digits
+from the usual place, or old style digits from the appropriate maths
+italic fount (which is where the normal upright roman old style digits
+are kept, for reasons best known to Donald Knuth). If that makes
+almost no sense to you and you'd like to know more, the best solution
+is to read Knuth's \emph{The \TeX book}, the \LaTeX\ source code, and the
+\cmolddig package file. In case you're wondering, I don't understand
+maths fount selection at all well, and I found out how to perform this
+particular switching by asking on \newsgroup{comp.text.tex}.
+
+The maths digit switching doesn't require the fount files that come
+with this package: it uses the normal `real' Computer Modern founts
+without needing any virtual fount trickery.
+
+\subsection{Creating the \cmolddig virtual founts}
+
+You don't need to do this job: all the useful files that this process
+creates are part of the \cmolddig distribution. I've included this
+section and the corresponding source files to satisfy the curiosity
+of people who want to know how I did the deed.
+
+The contents of the virtual founts used by \cmolddig are pretty
+straightforward: rounding errors aside, they are identical to the
+Computer Modern originals with normal lining digits in the text
+founts replaced with old style digits from the appropriate maths italic
+fount. These old style digits are upright despite living in an italic
+fount; ask Dr Knuth if you want to know why. The job of creating them
+was non-trivial only because of certain eccentricities of
+\packname{fontinst} and the equally eccentric encodings used by Donald
+Knuth in his original Computer Modern family of founts.
+
+I used \packname{fontinst} to help create the virtual founts used by
+this package; \packname{fontinst} is a set of \TeX\ macros available
+from CTAN: it'll run on any computer with a functioning \TeX\ on it.
+
+To create the virtual founts the way I did, you need to install
+\packname{fontinst}, and use the files in \cmolddig's
+\filename{source} directory by following the instructions below. You
+also need \packname{tftopl} and \packname{vptovf} which should be part
+of your \TeX\ system.
+
+Some of the files used to create the virtual founts at the heart of
+this package have names that break the `8+3' filename limit imposed by
+some archaic operating systems. Apologies for this; it's just the way
+they turned out, and I didn't notice until it was far too late.%
+\footnote{The computer I use now has a file system that dates back to
+1984; it has a 31 character filename limit} Since there's no
+\emph{need} to use the source files, I thought it'd be okay not to
+fix this.
+
+You'll need to use \filename{tftopl} to create the following
+\filename{pl} files from the corresponding Computer Modern
+\filename{tfm} files:
+\begin{center}
+\begin{tabular}{@{}>{\raggedright\small}p{\textwidth}@{}}
+\filename{cmb10.pl}\\
+\filename{cmbx10.pl},
+\filename{cmbx12.pl},
+\filename{cmbx5.pl},
+\filename{cmbx6.pl},
+\filename{cmbx7.pl},
+\filename{cmbx8.pl},
+\filename{cmbx9.pl}\\
+\filename{cmcsc10.pl}\\
+\filename{cmmi10.pl},
+\filename{cmmi12.pl},
+\filename{cmmi5.pl},
+\filename{cmmi6.pl},
+\filename{cmmi7.pl},
+\filename{cmmi8.pl},
+\filename{cmmi9.pl}\\
+\filename{cmmib10.pl},
+\filename{cmmib5.pl},
+\filename{cmmib6.pl},
+\filename{cmmib7.pl},
+\filename{cmmib8.pl},
+\filename{cmmib9.pl}\\
+\filename{cmr10.pl},
+\filename{cmr12.pl},
+\filename{cmr17.pl},
+\filename{cmr5.pl},
+\filename{cmr6.pl},
+\filename{cmr7.pl},
+\filename{cmr8.pl},
+\filename{cmr9.pl}\\
+\end{tabular}
+\end{center}
+
+If you have access to the AMS extra founts, you'll also need:
+\begin{center}
+\begin{tabular}{@{}>{\raggedright\small}p{\textwidth}@{}}
+\filename{cmcsc8.pl},
+\filename{cmcsc9.pl}
+\end{tabular}
+\end{center}
+
+The \filename{source} directory contains these five files:
+\begin{center}
+\begin{tabular}{@{}p{\textwidth}@{}}
+\filename{dostretch.mtx}\\
+\filename{instcmrj.tex}\\
+\filename{ot1noflig.etx}, \filename{ot1nofligcj.etx}, \filename{ot1nofligj.etx}
+\end{tabular}
+\end{center}
+
+Put these five source files in a directory with the \filename{pl}
+files listed above. If you don't have the AMS extra founts, edit
+\filename{instcmrj.tex} and comment out the lines referring to cmcscj9
+and cmcscj8.
+
+Then run Plain \TeX\ on \filename{instcmrj.tex}. The result of this
+run will be a huge pile of files: run \packname{vptovf} on the files
+ending in \filename{vpl} (virtual property list; human-readable
+precursors to a machine-readable \filename{tfm}/\filename{vf} pair).
+The resulting \filename{tfm} and \filename{vf} files are the files
+that do the trick. The \filename{fd} file created by
+\packname{fontinst} isn't particularly useful to begin with: compare
+it to the one supplied with \cmolddig to see what modifications I felt
+were needed.
+
+You can throw away the debris now if you like: all the files
+(\filename{mtx}, \filename{pl}, and \filename{fd}) that have been
+worked with except the five files from \cmolddig's \filename{source}
+directory are machine-generated so you don't need to keep them.
+
+\subsubsection{So how does it work?}
+
+You really ought to understand \LaTeX\ founts and \packname{fontinst}
+to an extent before reading this section.
+
+The \packname{fontinst}
+file that does the work contains lines like this:
+{\small
+\begin{verbatim}
+\installfont{cmrj10}{cmr10,kernoff,cmmi10,kernon,dostretch}{OT1j}
+ {OT1}{cmrj}{m}{n}{<10> <10.95>}
+\end{verbatim}
+}
+The last 5 arguments (on the second line) are just the NFSS
+parameters used in the \filename{fd} file that's created by
+\packname{fontinst} for this installation. The interesting bit is
+the first line: cmrj10 is the (virtual) fount about to be created.
+In this case, the glyphs are taken from cmr10 and cmmi10
+(\packname{fontinst} converts the \filename{pl} files to
+\filename{mtx} files before it does anything with them).
+
+The file \filename{kernoff.mtx} tells \packname{fontinst} to ignore
+kerning information from subsequent founts: this ensures that the
+newly created fount has kerning from cmr10 only. This is important,
+since maths fount kerning is entirely unsuitable for text. The file
+\filename{kernon.mtx} tells \packname{fontinst} to take notice of
+kerning again. It's redundant, since no kerning information is held in
+\filename{dostretch.mtx}, but kept there just for the sake of
+neatness. So: kerning information is taken from cmr10, not from
+cmmi10.
+
+The file \filename{dostretch.mtx} tells \packname{fontinst} to take
+the new virtual fount's spacing parameters from those that have been
+set by the first fount read -- in other words, to take spacing from
+cmr10 in this case. The third argument is the encoding file used to
+build the fount: in this case, it's OT1j; that's OT1 encoding with old
+style digits. Rather than using the glyphs called `one', `two',
+`three', and so on, this \filename{mtx} file ensures that the glyphs
+called `oneoldstyle', `twooldstyle', `threeoldstyle' are used instead.
+The `oldstyle' digit glyphs are kept in the cmmi founts.
+
+Some of these installation lines ask for the final encoding
+OT1NOFLIGj. This calls \filename{ot1nofligj.etx}, which in turn calls
+\filename{ot1noflig.etx}; this last file is a new encoding file I
+wrote for use with \packname{fontinst v1.8}. It defines the
+\textsc{tex text without f-ligatures} encoding, used in cmr5 and the
+caps and small caps founts.
+
+
+\end{document}