diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/cmolddig/cmolddig.tex |
Initial commit
Diffstat (limited to 'fonts/cmolddig/cmolddig.tex')
-rw-r--r-- | fonts/cmolddig/cmolddig.tex | 494 |
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} |