summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tpcmfont
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/tpcmfont')
-rw-r--r--macros/latex/contrib/tpcmfont/dcxtedt.tex276
-rw-r--r--macros/latex/contrib/tpcmfont/readme.txt23
-rw-r--r--macros/latex/contrib/tpcmfont/tpcmfont.fdd445
-rw-r--r--macros/latex/contrib/tpcmfont/tpcmfont.ins132
4 files changed, 876 insertions, 0 deletions
diff --git a/macros/latex/contrib/tpcmfont/dcxtedt.tex b/macros/latex/contrib/tpcmfont/dcxtedt.tex
new file mode 100644
index 0000000000..0eb98788cf
--- /dev/null
+++ b/macros/latex/contrib/tpcmfont/dcxtedt.tex
@@ -0,0 +1,276 @@
+%
+% Modified 21.8.1995 from Norbert Schwartz's original dcstdedt.tex and
+% dccrstd.tex (produced by LaTeX3 project).
+%
+% Timo Knuutila
+% knuutila@cs.utu.fi
+%
+% Original header follows:
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Generating MF-files for DC/EC fonts Version 1.1 / 22.3.1992
+%
+% Running TeX with this file as an input results in a lot of
+% Metafont font driver files (dcr5.mf, dcr6.mf, ..). The files
+% which should be generated are marked in the following macro
+% \FontsToBeGenerated. For each font there has to be an entry
+% with the pt sizes the font should be generate with. Additionally
+% in the heading \tablevalues all used pt sizes have to be mentioned,
+% just to get an fine printout.
+%
+% Furthermore there is a batch file which can be customized for the
+% Metafont batch run.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% please change only here:
+%
+\def\oneline#1{\makefont #1 ( 5 6 7 8 9 10 10.95[11] 12 14.4[14] 17.28[17] 20.74[20] 24.88[25])}
+\long\def\FontsToBeGenerated{
+\tablevalues ( 5 6 7 8 9 10 10.95[11] 12 14.4[14] 17.28[17] 20.74[20] 24.88[25])
+ \oneline{dcr}
+ \oneline{dcsl}
+ \oneline{dcti}
+ \oneline{dcbx}
+ \oneline{dcb}
+ \oneline{dcu}
+ \oneline{dcbx}
+ \oneline{dcbxsl}
+ \oneline{dcbxti}
+%
+ \oneline{dctt}
+ \oneline{dcsltt}
+ \oneline{dcitt}
+ \oneline{dcvtt}
+%
+ \oneline{dcss}
+ \oneline{dcssi}
+ \oneline{dcssbx}
+ \oneline{dcssdc}
+ \oneline{dcssq}
+ \oneline{dcssqi}
+%
+ \oneline{dccsc}
+ \oneline{dctcsc}
+%
+ \oneline{dcfib}
+ \oneline{dcdunh}
+ \oneline{dcff}
+ \oneline{dcfi}
+%
+ \oneline{dccr}
+}
+% If a font with a fraction, e.g. "7.5", should be generated
+% and the file name is not allowed to contain a period, an
+% optional file name part can be specified.
+%
+% 7.5[7h]
+%
+% result in - may be - "dcr7h.mf" and an entry of "gensize:=7.5;"
+% (The new value has to be specified in the \tablevalues-line too!
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The Batch file entries ( #1 contains the fontname )
+%
+% should be of the following form:
+%
+% \def\BatchOutput{\BatchLine{...}%
+% ...
+% \BatchLine{...}}
+%
+%
+% preset value, change \BatchOutput if you like ....
+%
+\def\BatchOutput#1{
+ \BatchLine{mf "&plain \string\mode:=localfont; input #1"}
+}
+%
+% File naming conventions:
+%
+\def\BatchFileName{mfbatch.bat}
+%
+%
+\def\MetafontFileExtension{.mf}
+%
+\def\modedef{} % e.g. \def\modedef{\string\mode:=hplaser;}
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% please n o changes from here, thanks !
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%
+% (Avoiding inspecting the macros (sigh!)
+%
+% Norbert Schwarz, Dezember 1990
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\magnification\magstep1
+\overfullrule=0pt
+%\tracingonline1
+%\tracingcommands=1
+%\tracingmacros=1
+% some token handling
+\let\EA\expandafter
+\def\JoinToks#1=(#2+#3){#1=\EA\EA\EA{\EA\the\EA#2\the#3}}
+\def\UpToHere{\relax}
+\def\IgnoreRest#1#2\UpToHere{#1}
+\def\IgnoreFirst#1#2\relax\UpToHere{#2}
+\def\First#1{\EA\IgnoreRest\the#1{}\UpToHere}
+\def\FirstOf#1{\EA\EA\EA{\EA\IgnoreRest\the#1{}\UpToHere}}
+\def\MoveFirst(#1to#2){#2\FirstOf#1}
+\def\Rest#1{\EA\IgnoreFirst\the#1\relax\UpToHere}
+\def\RestOf#1{\EA\EA\EA{\EA\IgnoreFirst\the#1\relax\UpToHere}}
+\def\MoveRest(#1to#2){#2=\RestOf{#1}}
+% borrowed from p. 132 in N.Schwarz, Introduction to TeX (some advertising ..)
+
+\newtoks\Basis
+\newtoks\Table
+\def\storetoks#1{\toks0={#1}\JoinToks\Table=(\Table+\toks0)}
+\Table={}
+%
+\newwrite \batchoutput
+\newwrite \fontoutput
+\def\today{\ifcase\month\or
+ January\or Februar\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi,
+ \number\day,
+ \space\number\year}
+
+\def\BatchLine#1{\immediate\write\batchoutput{#1}}
+\immediate\openout\batchoutput=\BatchFileName
+
+\def\empty{}
+\def\minus{-}
+\def\blank{ }
+\def\singlefont#1 {%
+ \def\fontsize{#1}%\message{<#1>}%
+ \ifx\fontsize\minus\let\next\relax
+ \else
+ \ifx\fontsize\empty\let\next\singlefont
+ \else
+ \ifx\fontsize\blank\let\next\singlefont
+ \else
+ \let\next\dofont
+ \fi\fi\fi
+ \next}
+
+\def\doentry{\MoveFirst(\Workbase to\Htok)%
+ \Workbase=\RestOf\Workbase
+ \edef\doou{\the\Htok}%
+ \ifx\doou\fontsize
+ \def\dooU{\storetoks{\hfill $\bullet$\hfill&}}%
+ \let\weiter\dooU
+ \else
+ \def\weiter{\storetoks{~\hfill&}\doentry}%
+ \fi\weiter}
+
+
+\def\singletablevalue#1 {%
+ \def\fontsize{#1}%
+ \ifx\fontsize\blank\let\next\singletablevalue
+ \else
+ \ifx\minus\fontsize\let\next\relax
+ \else\let\next\dotablevalue\fi
+ \fi
+ \next}
+
+\newtoks\Htok
+\newtoks\Workbase
+\def\dotablevalue{\edef\dooo{\Htok={{\fontsize}}}%
+ \dooo
+ \EA\storetoks\EA{\fontsize&}%
+ \JoinToks\Basis=(\Basis+\Htok)\singletablevalue}
+
+\def\tablevalues(#1){\storetoks{\bf Fonts &}\singletablevalue#1 -
+ \storetoks{\cr}}
+
+\def\makefont #1 (#2){\JoinToks\Workbase=(\Basis+\Basis)%
+ \myc=0\immediate\write16{}%
+ \edef\fontnamebody{#1}%
+ \def\dostoretoks{\storetoks{#1 &}}\dostoretoks
+ \singlefont #2 - \storetoks{\cr}}
+
+\def~{\ifdim\dimen0>0pt
+ \message{\number\dimen0}%
+ \global\advance\dimen0 by -5.25pt
+ \message{ }\fi}
+
+\newcount\myc
+\def\extraspaces{\setbox0=\hbox{\tt\fontname}%
+\dimen0=78.75pt
+\advance\dimen0 by -\wd0\relax
+ \advance\myc by 1
+ \ifnum \myc=5
+ \immediate\write16{}%
+ \myc=0 \fi}
+
+
+\def\dofonttest#1[#2]#3\nothing{%
+\def\fontsize{#2}%
+\ifx\fontsize\empty
+ \def\fontsizename{#1}%
+ \def\fontsize{#1}%
+\else
+ \def\fontsize{#1}%
+ \def\fontsizename{#2}%
+\fi}
+\def\dofont{\doentry\expandafter\dofonttest\fontsize[]\nothing\Dofont}
+
+{\catcode`\%=11
+\catcode`\|=14
+\gdef\Dofont{|
+ \edef\fontname{\fontnamebody\fontsizename\MetafontFileExtension}|
+ \edef\dowrite{|
+ \immediate\openout \fontoutput = \fontname|
+ \immediate\write
+ \fontoutput {% This is \fontname\space
+ in text format as of \today}|
+ \immediate\write \fontoutput {if unknown dxbase: input dxbase fi;}|
+ \immediate\write \fontoutput {}|
+ \immediate\write \fontoutput {\modedef}|
+ \immediate\write \fontoutput {gensize:=\fontsize;}|
+ \immediate\write \fontoutput {generate \fontnamebody}|
+ \immediate\closeout \fontoutput|
+ \BatchOutput{\fontnamebody\fontsizename}
+ \message{\fontname\blank}|\extraspaces~~~~~~~~~~~|
+}\dowrite\singlefont}}
+\immediate\write16{generated mf-files:}
+\immediate\write16{-------------------}
+
+\nopagenumbers
+
+\def\minimumbox#1{\setbox0=\hbox{#1}%
+ \ifdim\wd0>15pt \box0\else \hbox to 15pt{\hfil
+ \box0\hfil}\fi}
+\storetoks{\hrule
+\medskip
+\centerline{Overview DC/EC - Standard font set}
+\medskip
+\hrule
+\bigskip
+\noindent The following table describes the generated {*.mf} files which
+are needed for the setup of the standard DC/EC-font set.
+\bigskip
+\bigskip
+$$\vbox\bgroup\nointerlineskip\halign\bgroup#\hfil\quad&&\strut
+ \quad\minimumbox{#}\cr
+\noalign{\medskip}}
+
+
+
+%\tracingonline1
+%\tracingmacros2
+%\tracingcommands1
+
+\FontsToBeGenerated
+
+\storetoks{\egroup\egroup$$}
+
+\the\Table
+\end
+ \ No newline at end of file
diff --git a/macros/latex/contrib/tpcmfont/readme.txt b/macros/latex/contrib/tpcmfont/readme.txt
new file mode 100644
index 0000000000..9b0a03780e
--- /dev/null
+++ b/macros/latex/contrib/tpcmfont/readme.txt
@@ -0,0 +1,23 @@
+
+TPCMFONT: Font Definition files for "True Point Computer Modern"
+(and actually, for Computer Concrete in T1 encoding, too).
+For example, cmr11 is declared as cmr11, not as cmr10 at 10.95pt.
+
+This package is meant to replace (most of) the .fd -files distributed
+with the standard LaTeX.
+
+To install tpcmfont:
+
+ 1) move to an empty directory or create one
+ 2) copy tpcmfont.fdd and tpcmfont.ins therein
+ 3) run latex on tpcmfonts.ins
+ 4) (optional) copy the .fd -files distributed with
+ LaTeX to some backup directory
+ 5) replace the old .fd -files (in som LaTeX input directory)
+ with the ones just created.
+ 6) (optional) run latex on tpcmfonts.fdd and admire the missing
+ documentation.
+
+Timo Knuutila
+knuutila@utu.fi
+
diff --git a/macros/latex/contrib/tpcmfont/tpcmfont.fdd b/macros/latex/contrib/tpcmfont/tpcmfont.fdd
new file mode 100644
index 0000000000..67b8df1386
--- /dev/null
+++ b/macros/latex/contrib/tpcmfont/tpcmfont.fdd
@@ -0,0 +1,445 @@
+% \CheckSum{170}
+%\iffalse This is a META comment
+%
+% File `tpcmfont.fdd' by Timo Knuutila (knuutila@cs.utu.fi).
+%
+% Please do not change this file: if you feel it should be changed,
+% contact the author.
+%
+%<T1cmdh, >\ProvidesFile{T1cmdh.fd}
+%<T1cmfib, >\ProvidesFile{T1cmfib.fd}
+%<T1cmfr, >\ProvidesFile{T1cmfr.fd}
+%<T1cmr, >\ProvidesFile{T1cmr.fd}
+%<T1cmss, >\ProvidesFile{T1cmss.fd}
+%<T1cmtt, >\ProvidesFile{T1cmtt.fd}
+%<T1ccr, >\ProvidesFile{T1ccr.fd}
+%<OT1cmdh, >\ProvidesFile{OT1cmdh.fd}
+%<OT1cmfib, >\ProvidesFile{OT1cmfib.fd}
+%<OT1cmfr, >\ProvidesFile{OT1cmfr.fd}
+%<OT1cmr, >\ProvidesFile{OT1cmr.fd}
+%<OT1cmss, >\ProvidesFile{OT1cmss.fd}
+%<OT1cmtt, >\ProvidesFile{OT1cmtt.fd}
+%<Ucmr, >\ProvidesFile{Ucmr.fd}
+%<Ucmss, >\ProvidesFile{Ucmss.fd}
+%<Ucmtt, >\ProvidesFile{Ucmtt.fd}
+%<OMLcmm, >\ProvidesFile{OMLcmm.fd}
+%<OMScmsy, >\ProvidesFile{OMScmsy.fd}
+%<OMXcmex, >\ProvidesFile{OMXcmex.fd}
+%<*driver, >
+ \ProvidesFile{tpcmfont.drv}
+%</driver, >
+ [1995/08/21 v1.1 LaTeX font definitions with true point sizes]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{texnames}
+\GetFileInfo{tpcmfont.drv}
+\providecommand\dst{\expandafter{\normalfont\scshape docstrip}}
+\title{The file \texttt{tpcmfont.fdd} for use with
+ \LaTeXe.\thanks{This file has version
+ number \fileversion, dated \filedate.}}
+\date{\filedate}
+\author{Timo Knuutila}
+\begin{document}
+\maketitle
+ \DocInput{tpcmfont.fdd}
+\end{document}
+%</driver>
+%
+%\fi
+%
+% \section{Introduction}
+%
+% This file contains the external font information needed to load
+% those of the Computer Modern fonts that are also found from the
+% |sauter| package and all the DC fonts. Fontshapes are declared
+% in true point sizes instead of the traditional scaled versions.
+%
+% Lot of the suff here has been copied
+% from Mittelbach's and Schoepf's original |cmfonts.fdd|.
+% The structure of this file follows the original, and the discussion
+% occurring in |cmfonts.fdd| applies unless otherwise stated (it has been
+% mostly omitted here). The lines that have been copied are preceded by M\&S
+% (for Mittelbach and Schoepf).
+%
+% \section{The \texttt{docstrip} modules}
+%
+% The following modules are used to direct \texttt{docstrip} in
+% generating external files.
+% \begin{center}
+% \begin{tabular}{ll}
+% driver & produce a documentation driver file \\
+% fd & produce a font definition file \\[2pt]
+% OMLcmm & make Computer Modern Math italic\\
+% OMScmsy & make Computer Modern Symbols \\
+% OMXcmex & make Computer Modern large Symbols\\
+% OT1cmdh & make Computer Modern Dunhill (old encoding)\\
+% OT1cmfib & make Computer Modern Fibonacci (old encoding)\\
+% OT1cmfr & make Computer Modern Funny (old encoding)\\
+% OT1cmr & make Computer Modern Roman (old encoding)\\
+% OT1cmss & make Computer Modern Sans (old encoding)\\
+% OT1cmtt & make Computer Modern Typewriter (old encoding)\\
+% T1ccr & make Concrete Roman (Cork encoding)\\
+% T1cmdh & make Computer Modern Dunhill (Cork encoding)\\
+% T1cmfib & make Computer Modern Fibonacci (Cork encoding)\\
+% T1cmfr & make Computer Modern Funny (Cork encoding)\\
+% T1cmr & make Computer Modern Roman (Cork encoding)\\
+% T1cmss & make Computer Modern Sans (Cork encoding)\\
+% T1cmtt & make Computer Modern Typewriter (Cork encoding)\\
+% Ucmr & make Computer Modern Roman (unknown encoding)\\
+% Ucmss & make Computer Modern Sans (unknown encoding)\\
+% Ucmtt & make Computer Modern Typewriter (unknown encoding)\\
+% \end{tabular}
+% \end{center}
+%Note that the following modules (contained in the standard \LaTeX\
+% distribution) are \emph{not}
+% replaced: |OMLcmr|, |OMScmr|, |OMLccm|, |OT1ccr|, |OT2cmr|, and |OT2cmss|.
+%
+% \section{Installation}
+%
+% \subsection{\LaTeX\ files}
+%
+% Just replace the original |.fd| -files with the ones produced by
+% running \LaTeX\ on |tpcmfont.ins| and recreate the \LaTeX\ format.
+% Make a backup copy of the originals before making the replacement.
+% For example, in |unix| machines supposing that your
+%\begin{itemize}
+%\item |base| stuff is in directory |latexdir|
+% (like |/usr/local/lib/texmf/tex/latex2e/base|),
+%\item format files are in directory |fmtdir|
+%(like |/usr/local/lib/texmf/ini|), and
+%\item this package
+% has been unpacked to |distdir| (like |~/tmp|)):
+%\end{itemize}
+%\begin{verbatim}
+%cd latexdir
+%mkdir backup
+%mv *.fd backup
+%cp distdir/*.fd .
+%initex latex
+%...
+%cd fmtdir
+%mv latex.fmt latex.fmt.backup
+%mv latexdir/latex.fmt .
+%\end{verbatim}
+%
+% If you want to use this package
+% only for the Cork encoded fonts, replace only the files beginning with
+% T1. If you choose to use only the old encoding, you must replace
+% both OT1- and U- prefixed |.fd| files.
+%
+% \subsection{\MF\ files}
+% Run \TeX\ on |dcxtedt.tex| to create the necessary |.mf| sources
+% and place them into \MF{}'s input directory
+% (like |/usr/local/lib/texmf/fonts/public/dc/src|).
+%
+% \section{The font definition files}
+%
+% The basic macro below is used whenever a full set of fonts
+% (point sizes 5--12, 14, 17, 20, and 25) is
+% available. For some strange reason only the ugly code below
+% seems to work appropriately. The macro is copied to all |.fd|
+% files created.
+% \begin{macrocode}
+%<*fd>
+\providecommand*{\TPFamily}[5]{%
+\DeclareFontShape{#1}{#2}{#4}{#5}{%
+ <5> #35 <6> #36 <7> #37 <8> #38 <9> #39 <10> #310
+ <10.95> #311 <12> #312 <14.4> #314 <17.28> #317 <20.74> #320 <24.88> #325
+ }{}%
+}
+%</fd>
+% \end{macrocode}
+%
+% \subsection{Fonts with Cork encoding (\texttt{T1})}
+%
+% The DC-fonts are Computer Modern fonts
+% reimplemented by Norbert Schwarz and currently developed further by
+% Joerg Knappen. You can get them from \TeX{}
+% archives and from \TeX{} organizations.
+% The implementation allows one to easily create fonts for
+% all point sizes ever needed (package |mfnfss| contains the metafont
+% sources for Computer Concrete). With the conventional CM-fonts
+% one needs the |sauter| fonts (found from CTAN, too).
+%
+% \subsubsection{The Computer Modern Roman}
+%
+% Available in the shapes |n|, |sl|, |it|, |sc|, and |u|. Also bold
+% series |b| (with normal shape only), and bold extended |bx| with shapes
+% |n|, |sl|, and |it|.
+% \begin{macrocode}
+%<*T1cmr>
+\DeclareFontFamily{T1}{cmr}{}{}
+\TPFamily{T1}{cmr}{dcr}{m}{n}
+\TPFamily{T1}{cmr}{dcsl}{m}{sl}
+\TPFamily{T1}{cmr}{dcti}{m}{it}
+\TPFamily{T1}{cmr}{dccsc}{m}{sc}
+\TPFamily{T1}{cmr}{dcu}{m}{u}
+\TPFamily{T1}{cmr}{dcb}{b}{n}
+\TPFamily{T1}{cmr}{dcbx}{bx}{n}
+\TPFamily{T1}{cmr}{dcbxsl}{bx}{sl}
+\TPFamily{T1}{cmr}{dcbxti}{bx}{it}
+%</T1cmr>
+% \end{macrocode}
+%
+% \subsubsection{Computer Modern Fibonacci}
+%
+% Don Knuth's experiment.
+% \begin{macrocode}
+%<*T1cmfib>
+\DeclareFontFamily{T1}{cmfib}{}
+\TPFamily{T1}{cmfib}{dcfib}{m}{n}
+%</T1cmfib>
+% \end{macrocode}
+%
+% \subsubsection{Computer Modern Funny (Roman)}
+%
+% Another Don Knuth's experiment.
+% \begin{macrocode}
+%<*T1cmfr>
+\DeclareFontFamily{T1}{cmfr}{}
+\TPFamily{T1}{cmfr}{dcff}{m}{n}
+\TPFamily{T1}{cmfr}{dcfi}{m}{it}
+%</T1cmfr>
+% \end{macrocode}
+%
+% \subsubsection{Computer Modern Sans}
+%
+% Don Knuth's sans serif font (normal, semibold and bold extended series).
+% \begin{macrocode}
+%<*T1cmss>
+\DeclareFontFamily{T1}{cmss}{}
+\TPFamily{T1}{cmss}{dcss}{m}{n}
+\DeclareFontShape{T1}{cmss}{m}{it}
+ {<->sub*cmss/m/sl}{}
+\TPFamily{T1}{cmss}{dcssi}{m}{sl}
+\DeclareFontShape{T1}{cmss}{m}{sc}
+ {<->sub*cmr/m/sc}{}
+\TPFamily{T1}{cmss}{dcssdc}{sbc}{n}
+\TPFamily{T1}{cmss}{dcssbx}{bx}{n}
+%</T1cmss>
+% \end{macrocode}
+%
+% \subsubsection{Computer Modern Typewriter}
+%
+% \begin{macrocode}
+%<*T1cmtt>
+\DeclareFontFamily{T1}{cmtt}{\hyphenchar \font\m@ne}
+\TPFamily{T1}{cmtt}{dctt}{m}{n}
+\TPFamily{T1}{cmtt}{dcitt}{m}{it}
+\TPFamily{T1}{cmtt}{dcsltt}{m}{sl}
+\TPFamily{T1}{cmtt}{dctcsc}{m}{sc}
+%</T1cmtt>
+% \end{macrocode}
+%
+% \subsubsection{Computer Modern Dunhill}
+%
+% \begin{macrocode}
+%<*T1cmdh>
+\DeclareFontFamily{T1}{cmdh}{}
+\TPFamily{T1}{cmdh}{dcdunh}{m}{n}
+%</T1cmdh>
+% \end{macrocode}
+%
+% \subsubsection{Concrete Roman}
+%
+% \begin{macrocode}
+%<*T1ccr>
+\DeclareFontFamily{T1}{ccr}{}{}
+\TPFamily{T1}{ccr}{dccr}{m}{n}
+\TPFamily{T1}{ccr}{dcti}{m}{it}
+\TPFamily{T1}{ccr}{dccsc}{m}{sc}
+\TPFamily{T1}{ccr}{dcslc}{c}{sl}
+\DeclareFontShape{T1}{ccr}{bx}{sl}{
+%<-nowarn> <->sub * cmr/bx/it
+%<+nowarn> <->ssub * cmr/bx/it
+}{}
+\DeclareFontShape{T1}{ccr}{bx}{n}{
+%<-nowarn> <->sub * cmr/bx/n
+%<+nowarn> <->ssub * cmr/bx/n
+}{}
+\DeclareFontShape{T1}{ccr}{bx}{it}{
+%<-nowarn> <->sub * cmr/bx/it
+%<+nowarn> <->ssub * cmr/bx/it
+}{}
+%</T1ccr>
+% \end{macrocode}
+%
+% \subsection{Fonts with the old \TeX{} text encoding (\texttt{OT1})}
+%
+% \subsubsection{Computer Modern Roman (\texttt{OT1})}
+%
+% M\&S: Beside the |OT1| encoding we also define the same family as |U|
+% encoded which is used for accepting old sources with stuff like
+% |\newmathalphabet| in it.
+% \begin{macrocode}
+%<*OT1cmr,Ucmr>
+%<+OT1cmr>\DeclareFontFamily{OT1}{cmr}{}
+%<+Ucmr>\DeclareFontFamily{U}{cmr}{}
+%<+OT1cmr>\TPFamily{OT1}{cmr}{cmr}{m}{n}
+%<+Ucmr>\TPFamily{U}{cmr}{cmr}{m}{n}
+%<+OT1cmr>\TPFamily{OT1}{cmr}{cmsl}{m}{sl}
+%<+Ucmr>\TPFamily{U}{cmr}{cmsl}{m}{sl}
+%<+OT1cmr>\TPFamily{OT1}{cmr}{cmti}{m}{it}
+%<+Ucmr>\TPFamily{U}{cmr}{cmti}{m}{it}
+%<+OT1cmr>\TPFamily{OT1}{cmr}{cmcsc}{m}{sc}
+%<+Ucmr>\TPFamily{U}{cmr}{cmcsc}{m}{sc}
+% \end{macrocode}
+% M\&S: Here we try to cure the famous \$ $\to$ \pounds{} bug:
+% \begin{macrocode}
+%<+OT1cmr>\TPFamily{OT1}{cmr}{cmu}{m}{ui}
+%<+Ucmr>\TPFamily{U}{cmr}{cmu}{m}{ui}
+%<+OT1cmr,Ucmr>%%%%%%% bold series
+%<+OT1cmr>\TPFamily{OT1}{cmr}{cmb}{b}{n}
+%<+Ucmr>\TPFamily{U}{cmr}{cmb}{b}{n}
+%<+OT1cmr,Ucmr>%%%%%%%% bold extended series
+%<+OT1cmr>\TPFamily{OT1}{cmr}{cmbx}{bx}{n}
+%<+Ucmr>\TPFamily{U}{cmr}{cmbx}{bx}{n}
+%<+OT1cmr>\TPFamily{OT1}{cmr}{cmbxsl}{bx}{sl}
+%<+Ucmr>\TPFamily{U}{cmr}{cmbxsl}{bx}{sl}
+%<+OT1cmr>\TPFamily{OT1}{cmr}{cmbxti}{bx}{it}
+%<+Ucmr>\TPFamily{U}{cmr}{cmbxti}{bx}{it}
+%<+OT1cmr>\DeclareFontShape{OT1}{cmr}{bx}{ui}
+%<+Ucmr>\DeclareFontShape{U}{cmr}{bx}{ui}
+%<+nowarn> {<->sub * cmr/m/ui}{}
+%<-nowarn> {<->ssub * cmr/m/ui}{}
+%</OT1cmr,Ucmr>
+% \end{macrocode}
+%
+% \subsubsection{Computer Modern Sans (\texttt{OT1})}
+%
+% \begin{macrocode}
+%<*OT1cmss,Ucmss>
+%<+OT1cmss>\DeclareFontFamily{OT1}{cmss}{}
+%<+Ucmss>\DeclareFontFamily{U}{cmss}{}
+%<+OT1cmss>\TPFamily{OT1}{cmss}{cmss}{m}{n}
+%<+Ucmss>\TPFamily{U}{cmss}{cmss}{m}{n}
+%<+OT1cmss,Ucmss>% Font undefined, therefore substituted
+%<+OT1cmss>\DeclareFontShape{OT1}{cmss}{m}{it}
+%<+Ucmss>\DeclareFontShape{U}{cmss}{m}{it}
+%<-nowarn> {<->sub*cmss/m/sl}{}
+%<+nowarn> {<->ssub*cmss/m/sl}{}
+%<+OT1cmss>\TPFamily{OT1}{cmss}{cmssi}{m}{sl}
+%<+Ucmss>\TPFamily{U}{cmss}{cmssi}{m}{sl}
+%<+OT1cmss,Ucmss>%%%%%%% Font/shape undefined, therefore substituted
+%<+OT1cmss>\DeclareFontShape{OT1}{cmss}{m}{sc}
+%<+Ucmss>\DeclareFontShape{U}{cmss}{m}{sc}
+ {<->sub*cmr/m/sc}{}
+%<+OT1cmss,Ucmss>%%%%%%% Font/shape undefined, therefore substituted
+%<+OT1cmss>\DeclareFontShape{OT1}{cmss}{m}{ui}
+%<+Ucmss>\DeclareFontShape{U}{cmss}{m}{ui}
+ {<->sub*cmr/m/ui}{}
+%<+OT1cmss,Ucmss>%%%%%%%% semibold condensed series
+%<+OT1cmss>\TPFamily{OT1}{cmss}{cmssdc}{sbc}{n}
+%<+Ucmss>\TPFamily{U}{cmss}{cmssdc}{sbc}{n}
+%<+OT1cmss,Ucmss>%%%%%%%%% bold extended series
+%<+OT1cmss>\TPFamily{OT1}{cmss}{cmssbx}{bx}{n}
+%<+Ucmss>\TPFamily{U}{cmss}{cmssbx}{bx}{n}
+%<+OT1cmss,Ucmss>%%%%%%% Font/shape undefined, therefore substituted
+%<+OT1cmss>\DeclareFontShape{OT1}{cmss}{bx}{ui}
+%<+Ucmss>\DeclareFontShape{U}{cmss}{bx}{ui}
+ {<->sub*cmr/bx/ui}{}
+%</OT1cmss,Ucmss>
+% \end{macrocode}
+%
+% \subsubsection{Computer Modern Typewriter (\texttt{OT1})}
+%
+% We use here no substitutions (outside the |cmtt| family), so the
+% discussion in the original |cmfonts.fdd| can be forgotten.
+% \begin{macrocode}
+%<*OT1cmtt,Ucmtt>
+%<+OT1cmtt>\DeclareFontFamily{OT1}{cmtt}{\hyphenchar \font\m@ne}
+%<+Ucmtt>\DeclareFontFamily{U}{cmtt}{\hyphenchar \font\m@ne}
+%<+OT1cmtt>\TPFamily{OT1}{cmtt}{cmtt}{m}{n}
+%<+Ucmtt>\TPFamily{U}{cmtt}{cmtt}{m}{n}
+%<+OT1cmtt,Ucmtt>%%%%%% make sure subst shapes are available
+%<+OT1cmtt>\TPFamily{OT1}{cmtt}{cmitt}{m}{it}
+%<+Ucmtt>\TPFamily{U}{cmtt}{cmitt}{m}{it}
+%<+OT1cmtt>\TPFamily{OT1}{cmtt}{cmsltt}{m}{sl}
+%<+Ucmtt>\TPFamily{U}{cmtt}{cmsltt}{m}{sl}
+%<+OT1cmtt>\TPFamily{OT1}{cmtt}{cmtcsc}{m}{sc}
+%<+Ucmtt>\TPFamily{U}{cmtt}{cmtcsc}{m}{sc}
+%<+OT1cmtt>\DeclareFontShape{OT1}{cmtt}{m}{ui}
+%<+Ucmtt>\DeclareFontShape{U}{cmtt}{m}{ui}
+%<-nowarn> {<->sub * cmtt/m/it}{}
+%<+nowarn> {<->ssub * cmtt/m/it}{}
+%<+OT1cmtt>\DeclareFontShape{OT1}{cmtt}{bx}{n}
+%<+Ucmtt>\DeclareFontShape{U}{cmtt}{bx}{n}
+%<-nowarn> {<->sub * cmtt/m/n}{}
+%<+nowarn> {<->ssub * cmtt/m/n}{}
+%<+OT1cmtt>\DeclareFontShape{OT1}{cmtt}{bx}{it}
+%<+Ucmtt>\DeclareFontShape{U}{cmtt}{bx}{it}
+%<-nowarn> {<->sub * cmtt/m/it}{}
+%<+nowarn> {<->ssub * cmtt/m/it}{}
+%<+OT1cmtt>\DeclareFontShape{OT1}{cmtt}{bx}{ui}
+%<+Ucmtt>\DeclareFontShape{U}{cmtt}{bx}{ui}
+%<-nowarn> {<->sub * cmtt/m/it}{}
+%<+nowarn> {<->ssub * cmtt/m/it}{}
+%</OT1cmtt,Ucmtt>
+% \end{macrocode}
+%
+% \subsubsection{Computer Modern Funny (\texttt{OT1})}
+%
+% \begin{macrocode}
+%<*OT1cmfr>
+\DeclareFontFamily{OT1}{cmfr}{}
+\TPFamily{OT1}{cmfr}{cmff}{m}{n}
+\TPFamily{OT1}{cmfr}{cmfi}{m}{it}
+%</OT1cmfr>
+% \end{macrocode}
+%
+% \subsubsection{Computer Modern Dunhill (\texttt{OT1})}
+%
+% \begin{macrocode}
+%<*OT1cmdh>
+\DeclareFontFamily{OT1}{cmdh}{}
+\TPFamily{OT1}{cmdh}{cmdunh}{m}{n}
+%</OT1cmdh>
+% \end{macrocode}
+%
+% \subsubsection{Computer Modern Fibonacci (\texttt{OT1})}
+%
+% \begin{macrocode}
+%<*OT1cmfib>
+\DeclareFontFamily{OT1}{cmfib}{}
+\TPFamily{OT1}{cmfib}{cmfib}{m}{n}
+%</OT1cmfib>
+% \end{macrocode}
+%
+% \subsection{Math fonts}
+%
+% \subsubsection{Computer Modern Math italics}
+% \begin{macrocode}
+%<*OMLcmm>
+\DeclareFontFamily{OML}{cmm}{\skewchar\font'177}
+\TPFamily{OML}{cmm}{cmmi}{m}{it}
+\TPFamily{OML}{cmm}{cmmib}{b}{it}
+\DeclareFontShape{OML}{cmm}{bx}{it}
+ {<-> ssub * cmm/b/it}{}
+%</OMLcmm>
+% \end{macrocode}
+%
+% \subsubsection{Computer Modern Math symbols}
+%
+% \begin{macrocode}
+%<*OMScmsy>
+\DeclareFontFamily{OMS}{cmsy}{\skewchar\font'60}
+\TPFamily{OMS}{cmsy}{cmsy}{m}{n}
+\TPFamily{OMS}{cmsy}{cmbsy}{b}{n}
+%</OMScmsy>
+% \end{macrocode}
+%
+% \subsubsection{Computer Modern large symbols}
+%
+% \begin{macrocode}
+%<*OMXcmex>
+\DeclareFontFamily{OMX}{cmex}{}{}
+\TPFamily{OMX}{cmex}{cmex}{m}{n}
+%</OMXcmex>
+% \end{macrocode}
+% \begin{macrocode}
+\endinput
+% \end{macrocode}
+%
+% \Finale
+%
diff --git a/macros/latex/contrib/tpcmfont/tpcmfont.ins b/macros/latex/contrib/tpcmfont/tpcmfont.ins
new file mode 100644
index 0000000000..8661ffb7cd
--- /dev/null
+++ b/macros/latex/contrib/tpcmfont/tpcmfont.ins
@@ -0,0 +1,132 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\def\batchfile{tpcmfont.ins}
+\input docstrip.tex
+\preamble
+You are not allowed to change this file. If you feel it should be changed,
+contact the author.
+\endpreamble
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+
+\def\filedate{1995/01/05}
+\def\batchfile{tpcmfont.dst} % ignored in distribution
+\input docstrip.tex % ignored in distribution
+
+\keepsilent
+
+\preamble
+
+Written by Timo Knuutila (knuutila@cs.utu.fi)
+
+This is a generated file. Permission is granted to to customize the
+declarations in this file to serve the needs of your installation.
+However, no permission is granted to distribute a modified version of
+this file under its original name.
+
+\endpreamble
+
+\Msg{*** Generating font defs for Cork encoded fonts ***}
+
+\generateFile{T1cmdh.fd}{t}{
+ \from{tpcmfont.fdd}{fd,T1cmdh}}
+
+\generateFile{T1cmfib.fd}{t}{
+ \from{tpcmfont.fdd}{fd,T1cmfib}}
+
+\generateFile{T1cmfr.fd}{t}{
+ \from{tpcmfont.fdd}{fd,T1cmfr}}
+
+\generateFile{T1cmr.fd}{t}{
+ \from{tpcmfont.fdd}{fd,T1cmr}}
+
+\generateFile{T1cmss.fd}{t}{
+ \from{tpcmfont.fdd}{fd,T1cmss}}
+
+\generateFile{T1cmtt.fd}{t}{
+ \from{tpcmfont.fdd}{fd,T1cmtt}}
+
+\generateFile{T1ccr.fd}{t}{
+ \from{tpcmfont.fdd}{fd,T1ccr}}
+
+
+\Msg{*** Generating font defs for old TeX Text encoding ***}
+
+\generateFile{OT1cmdh.fd}{t}{
+ \from{tpcmfont.fdd}{fd,OT1cmdh}}
+
+\generateFile{OT1cmfib.fd}{t}{
+ \from{tpcmfont.fdd}{fd,OT1cmfib}}
+
+\generateFile{OT1cmfr.fd}{t}{
+ \from{tpcmfont.fdd}{fd,OT1cmfr}}
+
+\generateFile{OT1cmr.fd}{t}{
+ \from{tpcmfont.fdd}{fd,OT1cmr}}
+
+\generateFile{OT1cmss.fd}{t}{
+ \from{tpcmfont.fdd}{fd,OT1cmss}}
+
+\generateFile{OT1cmtt.fd}{t}{
+ \from{tpcmfont.fdd}{fd,OT1cmtt}}
+
+
+\Msg{*** Generating font defs for unknown encoding
+ (compatibility files) ***}
+
+\generateFile{Ucmr.fd}{t}{
+ \from{tpcmfont.fdd}{fd,Ucmr}}
+
+\generateFile{Ucmss.fd}{t}{
+ \from{tpcmfont.fdd}{fd,Ucmss}}
+
+\generateFile{Ucmtt.fd}{t}{
+ \from{tpcmfont.fdd}{fd,Ucmtt}}
+
+
+\Msg{*** Math stuff ***}
+
+\generateFile{OMLcmm.fd}{t}{
+ \from{tpcmfont.fdd}{fd,OMLcmm}}
+
+\generateFile{OMScmsy.fd}{t}{
+ \from{tpcmfont.fdd}{fd,OMScmsy}}
+
+\generateFile{OMXcmex.fd}{t}{
+ \from{tpcmfont.fdd}{fd,OMXcmex}}
+
+\ifToplevel{
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space\space All *.fd}
+\Msg{*}
+\Msg{* To produce the documentation run the files ending with}
+\Msg{* `.fdd' through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing}
+\Msg{***********************************************************}
+}
+
+\endinput