% \iffalse meta-comment
%
% Copyright (C) 1993-2025
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
% This file is part of the LaTeX base system.
% -------------------------------------------
%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
%    https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
% version 2008 or later.
%
% This file has the LPPL maintenance status "maintained".
%
% The list of all files belonging to the LaTeX base distribution is
% given in the file `manifest.txt'. See also `legal.txt' for additional
% information.
%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
%
% \fi
%
%\iffalse        This is a META comment
%
% File `cmfonts.fdd'.
% Copyright (C) 1989-1999 Frank Mittelbach and Rainer Sch\"opf,
% all rights reserved.
%
%<OMLccm,   >\ProvidesFile{omlccm.fd}
%<OMLcmm,   >\ProvidesFile{omlcmm.fd}
%<OMLcmr,   >\ProvidesFile{omlcmr.fd}
%<OMScmr,   >\ProvidesFile{omscmr.fd}
%<OMScmsy,  >\ProvidesFile{omscmsy.fd}
%<OMXcmex,  >\ProvidesFile{omxcmex.fd}
%<OT1ccr,   >\ProvidesFile{ot1ccr.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}
%<OT1cmvtt, >\ProvidesFile{ot1cmvtt.fd}
%<OT2cmr,   >\ProvidesFile{ot2cmr.fd}
%<OT2cmss,  >\ProvidesFile{ot2cmss.fd}
%<T1ccr,    >\ProvidesFile{t1ccr.fd}
%<T1cmdh,   >\ProvidesFile{t1cmdh.fd}
%<T1cmfib,  >\ProvidesFile{t1cmfib.fd}
%<T1cmfr,   >\ProvidesFile{t1cmfr.fd}
%<T1cmr,    >\ProvidesFile{t1cmr.fd}
%<T1cmss,   >\ProvidesFile{t1cmss.fd}
%<T1cmtt,   >\ProvidesFile{t1cmtt.fd}
%<T1cmvtt,  >\ProvidesFile{t1cmvtt.fd}
%<TS1cmr,   >\ProvidesFile{ts1cmr.fd}
%<TS1cmss,  >\ProvidesFile{ts1cmss.fd}
%<TS1cmtt,  >\ProvidesFile{ts1cmtt.fd}
%<TS1cmvtt, >\ProvidesFile{ts1cmvtt.fd}
%<Ucmr,     >\ProvidesFile{ucmr.fd}
%<Ucmss,    >\ProvidesFile{ucmss.fd}
%<Ucmtt,    >\ProvidesFile{ucmtt.fd}
%<*driver,  >
             \ProvidesFile{cmfonts.drv}
%</driver,  >
        [2024/11/19 v2.5n Standard LaTeX font definitions]
%
%<*driver>
\documentclass{ltxdoc}
\GetFileInfo{cmfonts.drv}
\providecommand\dst{\expandafter{\normalfont\scshape docstrip}}
\title{The file \texttt{cmfonts.fdd} for use with
      \LaTeXe.\thanks{This file has version
           number \fileversion, dated \filedate.}}
\date{\filedate}\author{Frank Mittelbach \and Rainer Sch\"opf}
\begin{document}
\MaintainedByLaTeXTeam{latex}
\maketitle
 \DocInput{cmfonts.fdd}
\end{document}
%</driver>
%
%\fi
%
%
%
% \changes{v2.5e}{1997/06/16}{Replaced reference to DC-fonts by ec
%    fonts.}
% \changes{v2.5c}{1997/05/26}{Removed spaces in and around arguments
%    to \cs{DeclareFontShape} and \cs{EC@family}.}
% \changes{v2.4j}{1996/11/20}{lowercase filenames /1044}
% \changes{v2.4h}{1996/05/19}{Added CM variable typewriter family}
% \changes{v2.4g}{1996/05/17}
%      {Force \cs{hyphenchar} of OT1 fonts to 45, in case
%       \cs{defaulthyphenchar} has changed.}
% \changes{v2.4g}{1996/05/17}
%      {Remove some spurious extra empty arguments to
%       \cs{DeclareFontFamily} calls}
% \changes{v2.4d}{1995/12/01}
%      {Documentation changes from Ulrik Vieth /1989}
% \changes{v2.4d}{1995/12/01}
%      {Dont force T1 hyphenchar to 127. latex/1853}
% \changes{v2.4c}{1995/11/07}{Use decimal rather than octal character
% specification for \cs{hyphenchar} and \cs{skewchar} so that there is
% no problem with an active quote character.}
% \changes{v2.4a}{1995/10/22}{Added support for new (v1.2) DC fonts
%    and text companion fonts (TS1 encoding).}
% \changes{v2.3d}{1994/11/02}{Added more font substitutions for
%    \cs{pounds}.}
% \changes{v2.3d}{1994/10/30}{Added OMLcmr.fd and OMScmr.fd.}
% \changes{v2.3b}{1994/05/12}{Added \cs{ProvidesFile} commands}
% \changes{v2.3a}{1994/05/03}{Included definitions for
%                             AMS-supplied cm fonts.}
% \changes{v2.2f}{1994/02/07}{Added missing size 10.95 for
%             cmr/b/n and cmr/m/ui.}
% \changes{v2.2e}{1994/02/02}{Corrected encoding scheme U.}
% \changes{v2.2d}{1994/01/27}{Replaced most ssub with sub}
% \changes{v2.2a}{1993/12/13}{Removed \cs{CodelineIndex} from the
%                           driver code.}
%
% \changes{v2.1a}{1993/10/17}{Shape u renamed to ui.}
% \changes{v2.1a}{1993/10/17}{File renamed to cmfonts.fdd.}
%
%
%
% \section{Introduction}
%
% This file contains the external font information needed to load
% the Computer Modern fonts designed by Don Knuth and distributed with
% \TeX.
%
% From this file all {\ttfamily.fd} files (font definition files) for
% the Computer Modern fonts, both with old encoding (|OT1|) and Cork
% encoding (|T1|) are generated. The Cork encoded fonts are known
% under the name ec fonts.
%
% \section{Customization}
%
% If you plan to install the AMS font package or if you have it
% already installed, please note that within this package there are
% additional sizes of the Computer Modern symbol and math italic
% fonts.  With the release of \LaTeXe, these AMS `extracm' fonts have
% been included in the \LaTeX\ font set. Therefore, the math |.fd| files
% produced here assume the presence of these AMS extensions.
%
% For text fonts in \texttt{T1} encoding, the directive |new| selects
% the new (version 1.2) DC fonts.
%
% For the text fonts in \texttt{OT1} and \texttt{U} encoding,
% the optional \dst{} directive |ori| selects a conservatively
% generated set of font definition files,
% which means that only the basic font sizes coming with an old
% \LaTeX~2.09 installation are included into the |\DeclareFontShape|
% commands.  However, on many installations, people have added missing
% sizes by scaling up or down available Metafont sources. For example,
% the Computer Modern Roman italic font |cmti| is only available in
% the sizes 7, 8, 9, and 10pt. Nevertheless one could generate it for
% the sizes 5, and 6pt by using the source from |cmti7| scaled
% downwards. The corresponding enlarged font set is generated if the
% \dst{} directive |ori| is not used.
%
% When you generate the |.fd| files using the installation script
% |cmfonts.ins| distributed with \LaTeXe, the enlarged font set is
% selected.
% If you want to select the conservative set of |.fd| files, you have to
% replace statements like
% \begin{verbatim}
%   \generateFile{OT1cmr.fd}{t}{\from{cmfonts.fdd}{fd,OT1cmr}}
%\end{verbatim}
% with
% \begin{verbatim}
%   \generateFile{OT1cmr.fd}{t}{\from{cmfonts.fdd}{fd,OT1cmr,ori}}
%\end{verbatim}
% in the installation script, or more exactly by copying the
% installation script to a file with a new name and change that copy.
%
% \StopEventually{}
%
% \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 \\
%   nowarn & produce |.fd| files that do not warn about substitutions\\
%   ori    & make conservative |.fd| files\\
%   new    & select version 1.2 DC fonts\\
%   ec     & select EC fonts\\
%   fd     & produce a font definition file (actually no longer used)\\[2pt]
%   OMLccm   & make Concrete Roman Math italic\\
%   OMLcmm   & make Computer Modern Math italic\\
%   OMLcmr   & make Computer Modern Roman (math italic encoding)\\
%   OMScmr   & make Computer Modern Roman (math symbol encoding)\\
%   OMScmsy  & make Computer Modern Symbols \\
%   OMXcmex  & make Computer Modern large Symbols\\
%   OT1ccr   & make Concrete Roman (old encoding) \\
%   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)\\
%   OT1cmvtt & make Computer Modern Variable Typewriter (old encoding)\\
%   OT2cmr   & make Computer Modern Roman (old cyrillic encoding)\\
%   OT2cmss  & make Computer Modern Sans (old cyrillic 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)\\
%   T1cmvtt  & make Computer Modern Variable Typewriter (Cork
%                encoding)\\
%   TS1cmr   & make Computer Modern Roman text companion fonts\\
%   TS1cmss  & make Computer Modern Sans text companion fonts\\
%   TS1cmtt  & make Computer Modern Typewriter text companion fonts\\
%   TS1cmvtt & make Computer Modern Variable Typewriter text
%                companion fonts\\
%   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}
% A typical \texttt{docstrip} command file would then have entries like:
% \begin{verbatim}
%\generateFile{OT1cmr.fd}{t}{\from{cmfonts.fdd}{fd,OT1cmr}}
%\end{verbatim}
%
%
%  \section{The font definition files}
%
%    As always we begin by identifying the latest version of the files
%    in the \textsf{log} file. The explicit spaces are necessary in an
%    |.fd| file and the |\string| guards against situations where |`|,
%    |<| or |>| is active.
% \changes{v2.2g}{1994/02/15}{Removed surplus \cs{string}}
%
%  \subsection{Fonts with Cork encoding (\texttt{T1})}
%
%    We start with the DC-fonts. These are Computer Modern fonts
%    reimplemented originally by Norbert Schwarz, and since release~1.2
%    by J\"org Knappen.
%    You can get them from \TeX{}
%    archives and from \TeX{} organizations. We strongly recommend
%    that you use them because they are encoded in the approved
%    standard encoding for text fonts.
%
%  \subsubsection{Commands for fonts with the `EC' naming scheme}
%    Before the declarations for the individual fonts, first define
%    some abbreviations that may be used as most of the fonts in the
%    `new' dc font distribution come in the same range of sizes.
%    The same is true for the ec fonts, with a somewhat enlarged font
%    size range.
% \changes{v2.5f}{1998/01/10}{Added larger sizes for ec fonts only
%    (thanks to Christian Cornelssen)}
%    \begin{macrocode}
%<*new|ec>
%<*!tt&!T1cmss>
\providecommand{\EC@family}[5]{%
  \DeclareFontShape{#1}{#2}{#3}{#4}%
  {<5><6><7><8><9><10><10.95><12><14.4>%
%<ec>   <17.28><20.74><24.88><29.86><35.83>genb*#5}{}}
%<!ec>   <17.28><20.74><24.88>genb*#5}{}}
%</!tt&!T1cmss>
%    \end{macrocode}
% For monospaced fonts, the normal interpolation breaks down below
% 8pt, so scale the 8pt fonts instead.
% \changes{v2.5f}{1998/01/10}{Added larger sizes for ec fonts only
%    (thanks to Christian Cornelssen)}
%    \begin{macrocode}
%<*tt>
\providecommand{\EC@ttfamily}[5]{%
  \DeclareFontShape{#1}{#2}{#3}{#4}%
  {<5><6><7><8>#50800%
%<ec>  <9><10><10.95><12><14.4><17.28><20.74><24.88><29.86>%
%<ec>  <35.83>genb*#5}{}}
%<!ec>  <9><10><10.95><12><14.4><17.28><20.74><24.88>genb*#5}{}}
%</tt>
%    \end{macrocode}
% \changes{v2.5l}{2022/07/10}%
%         {Avoid ec ss fonts at design size 5, 6, 7. gh/879}
% For ec cmss fonts avoid the small design sizes which have incorrect
% definitions.
% (Medium weight bolder and wider than bold extended for 5pt and 6pt,
% 7pt does not have expected contrast. Scale 8pt, matching |fix-cm|).
% gh/879
%    \begin{macrocode}
%<*T1cmss>
\providecommand{\EC@ssfamily}[5]{%
  \DeclareFontShape{#1}{#2}{#3}{#4}%
  {<5><6><7><8>#50800%
   <9><10><10.95><12><14.4><17.28><20.74><24.88><29.86><35.83>genb*#5}{}}
%</T1cmss>
%</new|ec>
%    \end{macrocode}
%
%  \subsubsection{The Computer Modern Roman}
%
%    This family is available in the shapes |n|, |sl|, |it|, |sc|, and
%    |ui|.
%    \begin{macrocode}
%<*T1cmr>
\DeclareFontFamily{T1}{cmr}{}
%<*!new&!ec>
\DeclareFontShape{T1}{cmr}{m}{n}{%
      <5><6><7><8><9>gen*dcr%
      <10><10.95>dcr10%
      <12><14.4>dcr12%
      <17.28><20.74><24.88>dcr17}{}
\DeclareFontShape{T1}{cmr}{m}{sl}{%
      <5><6><7><8>dcsl8%
      <9>dcsl9%
      <10><10.95>dcsl10%
      <12><14.4>dcsl12%
      <17.28><20.74><24.88>dcsl17%
      }{}
\DeclareFontShape{T1}{cmr}{m}{it}{%
      <5><6>dcti7%
      <7><8><9>gen*dcti%
      <10><10.95>dcti10%
      <12><14.4>dcti12%
      <17.28><20.74><24.88>dcti17%
      }{}
\DeclareFontShape{T1}{cmr}{m}{sc}{%
      <5><6><7><8><9><10><10.95>dccsc10%
      <12><14.4>dccsc12%
      <17.28><20.74><24.88>dccsc17%
      }{}
\DeclareFontShape{T1}{cmr}{m}{ui}{%
      <5><6>dcu7%
      <7><8><9>gen*dcu%
      <10><10.95>dcu10%
      <12><14.4>dcu12%
      <17.28><20.74><24.88>dcu17%
      }{}
%    \end{macrocode}
%    There is a bold `|b|' series, but unfortunately only the normal
%    shape is available in this series.
%    \begin{macrocode}
%<+T1cmr>%%%%%%% bold series
\DeclareFontShape{T1}{cmr}{b}{n}{%
      <5><6><7><8><9>gen*dcb%
      <10><10.95>dcb10%
      <12><14.4>dcb12%
      <17.28><20.74><24.88>dcb17%
      }{}
%    \end{macrocode}
%    Finally there is a bold extended series `|bx|' with the shapes
%    |n|, |sl|, and |it|.
%    \begin{macrocode}
%<+T1cmr>%%%%%%%% bold extended series
\DeclareFontShape{T1}{cmr}{bx}{n}{%
      <5><6><7><8><9>gen*dcbx%
      <10><10.95>dcbx10%
      <12><14.4><17.28><20.74><24.88>dcbx12%
      }{}
\DeclareFontShape{T1}{cmr}{bx}{sl}{%
      <5><6><7><8><9>gen*dcbxsl%
      <10><10.95>dcbxsl10%
      <12><14.4><17.28><20.74><24.88>dcbxsl12%
      }{}
\DeclareFontShape{T1}{cmr}{bx}{it}{%
      <5><6><7><8><9><10><10.95>dcbxti10%
      <12><14.4>dcbxti12%
      <17.28><20.74><24.88>dcbxti17%
      }{}
%</!new&!ec>
%    \end{macrocode}
% \changes{v2.4d}{1995/12/01}
%      {Ulrik Vieth. Add ui shape /1989}
%    \begin{macrocode}
%<*new>
\EC@family{T1}{cmr}{m}{n}{dcr}
\EC@family{T1}{cmr}{m}{sl}{dcsl}
\EC@family{T1}{cmr}{m}{it}{dcti}
\EC@family{T1}{cmr}{m}{sc}{dccc}
\EC@family{T1}{cmr}{bx}{n}{dcbx}
\EC@family{T1}{cmr}{b}{n}{dcb}
\EC@family{T1}{cmr}{bx}{it}{dcbi}
\EC@family{T1}{cmr}{bx}{sl}{dcbl}
\EC@family{T1}{cmr}{m}{ui}{dcu}
%</new>
%    \end{macrocode}
% \changes{v2.5a}{1997/01/14}
%      {EC fonts}
% \changes{v2.5d}{1997/06/02}{bold sc fonts latex/2497}
% \changes{v2.5k}{2022/06/10}{add support for slanted small caps github/782}
%
%    \begin{macrocode}
%<*ec>
\EC@family{T1}{cmr}{m}{n}{ecrm}
\EC@family{T1}{cmr}{m}{sl}{ecsl}
\EC@family{T1}{cmr}{m}{it}{ecti}
\EC@family{T1}{cmr}{m}{sc}{eccc}
\EC@family{T1}{cmr}{bx}{n}{ecbx}
\EC@family{T1}{cmr}{b}{n}{ecrb}
\EC@family{T1}{cmr}{bx}{it}{ecbi}
\EC@family{T1}{cmr}{bx}{sl}{ecbl}
\EC@family{T1}{cmr}{bx}{sc}{ecxc}
\EC@family{T1}{cmr}{m}{ui}{ecui}
\EC@family{T1}{cmr}{m}{scsl}{ecsc}
\EC@family{T1}{cmr}{bx}{scsl}{ecoc}
\EC@family{T1}{cmr}{b}{scsl}{ecoc}
%</ec>
%</T1cmr>
%    \end{macrocode}
%
% \subsubsection{Computer Modern Fibonacci}
%
%    This family was created by Don Knuth as an experiment, supplying
%    only Fibonacci numbers to the parameters of the Metafont sources
%    of the Computer Modern Meta family.
%    \begin{macrocode}
%<*T1cmfib>
\DeclareFontFamily{T1}{cmfib}{}
%<*!new&!ec>
\DeclareFontShape{T1}{cmfib}{m}{n}{%
      <8><9><10><12>gen*dcfib%
      }{}
%</!new&!ec>
%    \end{macrocode}
% \changes{v2.4f}{1995/12/20}
%      {Family name and external file name corrected Ulrik Vieth /2017}
% In fact these `dcfb' fonts are currently withdrawn as they generate
% metafont errors.
%    \begin{macrocode}
%<*new>
\EC@family{T1}{cmfib}{m}{n}{dcfb}
%</new>
%    \end{macrocode}
% \changes{v2.5a}{1997/01/14}
%      {EC fonts, new slanted fibonacci}
%    \begin{macrocode}
%<*ec>
\EC@family{T1}{cmfib}{m}{n}{ecfb}
\EC@family{T1}{cmfib}{m}{sl}{ecfs}
%</ec>
%</T1cmfib>
%    \end{macrocode}
%
% \subsubsection{Computer Modern Funny (Roman)}
%
%    This family was created by Don Knuth as another experiment.
%    \begin{macrocode}
%<*T1cmfr>
\DeclareFontFamily{T1}{cmfr}{}
%<*!new&!ec>
\DeclareFontShape{T1}{cmfr}{m}{n}{%
      <10>dcff10%
    }{}
\DeclareFontShape{T1}{cmfr}{m}{it}{%
      <10>dcfi10%
    }{}
%</!new&!ec>
%<*new>
\EC@family{T1}{cmfr}{m}{n}{dcff}
\EC@family{T1}{cmfr}{m}{it}{dcfi}
%</new>
%    \end{macrocode}
% \changes{v2.5a}{1997/01/14}
%      {EC fonts}
%    \begin{macrocode}
%<*ec>
\EC@family{T1}{cmfr}{m}{n}{ecff}
\EC@family{T1}{cmfr}{m}{it}{ecfi}
%</ec>
%</T1cmfr>
%    \end{macrocode}
%
% \subsubsection{Computer Modern Sans}
%
%    \begin{macrocode}
%<*T1cmss>
\DeclareFontFamily{T1}{cmss}{}
%<*!new&!ec>
\DeclareFontShape{T1}{cmss}{m}{n}{%
      <5><6><7><8>dcss8%
      <9>dcss9%
      <10><10.95>dcss10%
      <12><14.4>dcss12%
      <17.28><20.74><24.88>dcss17%
      }{}
\DeclareFontShape{T1}{cmss}{m}{it}%
      {<->sub*cmss/m/sl}{}
\DeclareFontShape{T1}{cmss}{m}{sl}{%
      <5><6><7><8>dcssi8%
      <9>dcssi9%
      <10><10.95>dcssi10%
      <12><14.4>dcssi12%
      <17.28><20.74><24.88>dcssi17%
      }{}
%</!new&!ec>
%<*new>
\EC@family{T1}{cmss}{m}{n}{dcss}
\EC@family{T1}{cmss}{m}{sl}{dcsi}
\EC@family{T1}{cmss}{m}{it}{dcsi}
\EC@family{T1}{cmss}{bx}{n}{dcsx}
\EC@family{T1}{cmss}{bx}{it}{dcso}
\EC@family{T1}{cmss}{bx}{sl}{dcso}
%</new>
%    \end{macrocode}
% \changes{v2.5a}{1997/01/14}
%      {EC fonts}
%    \begin{macrocode}
%<*ec>
\EC@ssfamily{T1}{cmss}{m}{n}{ecss}
\EC@ssfamily{T1}{cmss}{m}{sl}{ecsi}
\EC@ssfamily{T1}{cmss}{m}{it}{ecsi}
\EC@ssfamily{T1}{cmss}{bx}{n}{ecsx}
\EC@ssfamily{T1}{cmss}{bx}{it}{ecso}
\EC@ssfamily{T1}{cmss}{bx}{sl}{ecso}
%</ec>
%    \end{macrocode}
%    The next substitution is very questionable.
%    \begin{macrocode}
%<+T1cmss>%%%%%% Font/shape undefined, therefore substituted
\DeclareFontShape{T1}{cmss}{m}{sc}%
       {<->sub*cmr/m/sc}{}
%    \end{macrocode}
%    The next font group is quite attractive for display.
%    \begin{macrocode}
%<+T1cmss>%%%%%%% semibold condensed series
\DeclareFontShape{T1}{cmss}{sbc}{n}{%
      <5><6><7><8><9><10><10.95><12><14.4><17.28>%
      <20.74><24.88>%
%<!ec>dcssdc10
%<ec>ecssdc10
       }{}
%    \end{macrocode}
%
%    \begin{macrocode}
%<*!new&!ec>
%<+T1cmss>%%%%%%%% bold extended series
\DeclareFontShape{T1}{cmss}{bx}{n}{%
      <5><6><7><8><9><10><10.95><12><14.4><17.28>%
      <20.74><24.88>dcssbx10%
      }{}
%    \end{macrocode}
%    Another questionable substitution, but if we have the above
%    we might as well have this one
% \changes{v2.5g}{1998/03/27}{Added subst for cmss/bx/sc (pr/2586)}
%    \begin{macrocode}
%<+T1cmss>%%%%%% Font/shape undefined, therefore substituted
\DeclareFontShape{T1}{cmss}{bx}{sc}%
       {<->sub*cmr/m/sc}{}
%</!new&!ec>
%</T1cmss>
%    \end{macrocode}
%
% \subsubsection{Computer Modern Typewriter}
%
%    Perhaps the best font in the Computer Modern suite.
%    \begin{macrocode}
%<*T1cmtt>
\DeclareFontFamily{T1}{cmtt}{\hyphenchar \font\m@ne}
%<*!new&!ec>
\DeclareFontShape{T1}{cmtt}{m}{n}{%
      <8><9>gen*dctt%
      <10><10.95>dctt10%
      <12><14.4><17.28><20.74><24.88>dctt12%
      }{}
\DeclareFontShape{T1}{cmtt}{m}{it}{%
      <8><9>gen*dcitt%
      <10><10.95>dcitt10%
      <12><14.4>dcitt12%
      <17.28><20.74><24.88>dcitt17%
      }{}
\DeclareFontShape{T1}{cmtt}{m}{sl}{%
      <8><9>gen*dcsltt%
      <10><10.95>dcsltt10%
      <12><14.4><17.28><20.74><24.88>dcsltt12%
      }{}
\DeclareFontShape{T1}{cmtt}{m}{sc}{%
      <10><10.95>dctcsc10%
      <12><14.4>dctcsc12%
      <17.28><20.74><24.88>dctcsc17%
      }{}
%</!new&!ec>
%    \end{macrocode}
% \changes{v2.4e}{1995/12/04}
%      {Ulrik Vieth. added dctc  /1989}
%    \begin{macrocode}
%<*new>
\EC@ttfamily{T1}{cmtt}{m}{n}{dctt}
\EC@ttfamily{T1}{cmtt}{m}{sl}{dcst}
\EC@ttfamily{T1}{cmtt}{m}{it}{dcit}
\EC@ttfamily{T1}{cmtt}{m}{sc}{dctc}
%    \end{macrocode}
% \changes{v2.4i}{1996/09/26}{Added substitutions for T1 bold
%    extended typewriter fonts (new version).}
%    Finally, we define substitutions for the series |bx|. It comes
%    with or without a warning.
%    \begin{macrocode}
\DeclareFontShape{T1}{cmtt}{bx}{n}%
%<-nowarn>  {<->sub*cmtt/m/n}{}
%<+nowarn>  {<->ssub*cmtt/m/n}{}
\DeclareFontShape{T1}{cmtt}{bx}{it}%
%<-nowarn>  {<->sub*cmtt/m/it}{}
%<+nowarn>  {<->ssub*cmtt/m/it}{}
%</new>
%    \end{macrocode}
% \changes{v2.5a}{1997/01/14}
%      {EC fonts}
%    \begin{macrocode}
%<*ec>
\EC@ttfamily{T1}{cmtt}{m}{n}{ectt}
\EC@ttfamily{T1}{cmtt}{m}{sl}{ecst}
\EC@ttfamily{T1}{cmtt}{m}{it}{ecit}
\EC@ttfamily{T1}{cmtt}{m}{sc}{ectc}
%    \end{macrocode}
% \changes{v2.4i}{1996/09/26}{Added substitutions for T1 bold
%    extended typewriter fonts (new version).}
%    Finally, we define substitutions for the series |bx|. It comes
%    with or without a warning.
%    \begin{macrocode}
\DeclareFontShape{T1}{cmtt}{bx}{n}%
%<-nowarn>  {<->sub*cmtt/m/n}{}
%<+nowarn>  {<->ssub*cmtt/m/n}{}
\DeclareFontShape{T1}{cmtt}{bx}{it}%
%<-nowarn>  {<->sub*cmtt/m/it}{}
%<+nowarn>  {<->ssub*cmtt/m/it}{}
%</ec>
%</T1cmtt>
%    \end{macrocode}
%
%
% \subsubsection{Computer Modern Variable Typewriter}
%
%    The Computer Modern Variable Typewriter family is the
%    proportional spaced version of the Computer Modern Typewriter
%    family. It is implemented as a separate family to allow easy use
%    in normal text, including changes of shape/series etc if available.
%    This family also allows normal hyphenation.
%
%    In the first implementations for the Cork encoding only the
%    normal shape is available. Starting with release 1.3 italic will
%    be provided as well.
%    \begin{macrocode}
%<*T1cmvtt>
\DeclareFontFamily{T1}{cmvtt}{}
%<*!new&!ec>
\DeclareFontShape{T1}{cmvtt}{m}{n}{%
      <8><9>gen*dcvtt%
      <10><10.95>dcvtt10%
      <12><14.4><17.28><20.74><24.88>dcvtt12%
      }{}
%</!new&!ec>
%    \end{macrocode}
%    With release 1.3 there will be an italic shape as well.
%    \begin{macrocode}
%<*new>
\EC@ttfamily{T1}{cmvtt}{m}{n}{dcvt}
\EC@ttfamily{T1}{cmvtt}{m}{it}{dcvi}
%</new>
%<*ec>
\EC@ttfamily{T1}{cmvtt}{m}{n}{ecvt}
\EC@ttfamily{T1}{cmvtt}{m}{it}{ecvi}
%</ec>
%</T1cmvtt>
%    \end{macrocode}
%
%
% \subsubsection{Computer Modern Dunhill}
%
%   The smoker's choice? Within the Cork encoding this font comes with
%   a full size range by default but only with one series.
%    \begin{macrocode}
%<*T1cmdh>
\DeclareFontFamily{T1}{cmdh}{}
%<*!new&!ec>
\DeclareFontShape{T1}{cmdh}{m}{n}{%
      <5><6><7><8><9>gen*dcdunh%
      <10><10.95>dcdunh10%
      <12><14.4>dcdunh12%
      <17.28><20.74><24.88>dcdunh17}{}
%</!new&!ec>
%<*new>
\EC@family{T1}{cmdh}{m}{n}{dcdh}
%</new>
%<*ec>
\EC@family{T1}{cmdh}{m}{n}{ecdh}
%</ec>
%</T1cmdh>
%    \end{macrocode}
%
% \subsubsection{Concrete Roman}
%
%   A font near to Computer Modern Typewriter designed to go with the
%   Euler Math fonts.
%    \begin{macrocode}
%<*T1ccr>
\DeclareFontFamily{T1}{ccr}{}
\DeclareFontShape{T1}{ccr}{m}{n}{%
   <5><6><7><8><9><10><12>gen*dccr%
   <10.95>dccr11 <14.4>dccr14%
   <17.28><20.74><24.88>dccr17}{}
\DeclareFontShape{T1}{ccr}{m}{it}{%
   <10><10.95><12>dcti10}{}
\DeclareFontShape{T1}{ccr}{m}{sc}{%
   <10><10.95><12>dccsc10 }{}
%    \end{macrocode}
%    Note the condensed slanted variant (not used).
% \changes{v2.4d}{1995/12/01}
%      {Ulrik Vieth. Removed dcslc9 (no such font...)  /1989}
%    \begin{macrocode}
%\DeclareFontShape{T1}{ccr}{c}{sl}{<9>dcslc9}{}
%    \end{macrocode}
%    Finally a few substitution fonts for combinations not available.
%    As suggested by Leslie Lamport and several others the
%    substitution should warn by default. We control this my a \dst{}
%    module so that one can modify this behavior from the outside.
% \changes{v2.0f}{1993/09/24}{Added substitution fonts}
%    \begin{macrocode}
\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}
%
%
%  \subsubsection{The text companion fonts for \texttt{T1} encoding}
%
% \changes{v2.4e}{1995/12/04}
%      {Ulrik Vieth. added tcu  /1989}
%    \begin{macrocode}
%<*TS1cmr>
\DeclareFontFamily{TS1}{cmr}{\hyphenchar\font\m@ne}
%<!ec>\EC@family{TS1}{cmr}{m}{n}{tcr}
%<ec>\EC@family{TS1}{cmr}{m}{n}{tcrm}
\EC@family{TS1}{cmr}{m}{sl}{tcsl}
\EC@family{TS1}{cmr}{m}{it}{tcti}
\EC@family{TS1}{cmr}{bx}{n}{tcbx}
%<!ec>\EC@family{TS1}{cmr}{b}{n}{tcb}
%<ec>\EC@family{TS1}{cmr}{b}{n}{tcrb}
\EC@family{TS1}{cmr}{bx}{it}{tcbi}
\EC@family{TS1}{cmr}{bx}{sl}{tcbl}
%<!ec>\EC@family{TS1}{cmr}{m}{ui}{tcu}
%<ec>\EC@family{TS1}{cmr}{m}{ui}{tcui}
%    \end{macrocode}
%    
% \changes{v2.5n}{2024/11/19}{Add \cs{DeclareEncodingSubset} declaration}
%    \begin{macrocode}
\DeclareEncodingSubset{TS1}{cmr}{0}
%</TS1cmr>
%<*TS1cmss>
\DeclareFontFamily{TS1}{cmss}{\hyphenchar\font\m@ne}
\EC@family{TS1}{cmss}{m}{n}{tcss}
\EC@family{TS1}{cmss}{m}{sl}{tcsi}
\EC@family{TS1}{cmss}{m}{it}{tcsi}
\EC@family{TS1}{cmss}{bx}{n}{tcsx}
\EC@family{TS1}{cmss}{bx}{it}{tcso}
\EC@family{TS1}{cmss}{bx}{sl}{tcso}
%    \end{macrocode}
%    
% \changes{v2.5n}{2024/11/19}{Add \cs{DeclareEncodingSubset} declaration}
%    \begin{macrocode}
\DeclareEncodingSubset{TS1}{cmss}{0}
%</TS1cmss>
%<*TS1cmtt>
\DeclareFontFamily{TS1}{cmtt}{\hyphenchar\font\m@ne}
\EC@ttfamily{TS1}{cmtt}{m}{n}{tctt}
\EC@ttfamily{TS1}{cmtt}{m}{sl}{tcst}
\EC@ttfamily{TS1}{cmtt}{m}{it}{tcit}
%    \end{macrocode}
%    
% \changes{v2.5n}{2024/11/19}{Add \cs{DeclareEncodingSubset} declaration}
%    \begin{macrocode}
\DeclareEncodingSubset{TS1}{cmtt}{0}
%</TS1cmtt>
%    \end{macrocode}
%    Again the italic shape is only available with release 1.3.
%    \begin{macrocode}
%<*TS1cmvtt>
\DeclareFontFamily{TS1}{cmvtt}{}
\EC@ttfamily{TS1}{cmvtt}{m}{n}{tcvt}
\EC@ttfamily{TS1}{cmvtt}{m}{it}{tcvi}
%    \end{macrocode}
%    
%    \begin{macrocode}
\DeclareEncodingSubset{TS1}{cmvtt}{0}
%</TS1cmvtt>
%    \end{macrocode}
%
%  \subsection{Fonts with the old \TeX{} text encoding (\texttt{OT1})}
%
%    Note that in contrast to the Cork encoding, which is fully
%    defined, the old \TeX{} text encoding isn't implemented consistent
%    within all fonts. Most noticeably is that a dollar sign (\$) in
%    some fonts is replaced by a pound symbol (\pounds) in others,
%    which produced quite a number of bug fixes in the NFSS1. Also the
%    typewriter fonts contain a few different characters which are not
%    present in other fonts.
%
%    If one would use the philosophy of NFSS2 consequently all these
%    would therefore be different encodings and font mixing would
%    therefore be nearly impossible with older fonts. Therefore such
%    encodings are considered the same but one should be remember that
%    in some situations this may cause problems.
%
%    In other words, use |T1| encoding whenever possible, the |OT..|
%    encodings will be removed in some future release.
%
% \subsubsection{Computer Modern Roman (\texttt{OT1})}
%
%  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}{\hyphenchar\font45 }
%<+Ucmr>\DeclareFontFamily{U}{cmr}{\hyphenchar\font45 }
%<+OT1cmr>\DeclareFontShape{OT1}{cmr}{m}{n}%
%<+Ucmr>\DeclareFontShape{U}{cmr}{m}{n}%
     {<5><6><7><8><9><10><12>gen*cmr%
      <10.95>cmr10%
      <14.4>cmr12%
      <17.28><20.74><24.88>cmr17}{}
%<+OT1cmr>\DeclareFontShape{OT1}{cmr}{m}{sl}%
%<+Ucmr>\DeclareFontShape{U}{cmr}{m}{sl}%
     {%
%<+ori>      <5-8>sub*cmr/m/n%
%<-ori>      <5><6><7>cmsl8%
      <8><9>gen*cmsl%
      <10><10.95>cmsl10%
      <12><14.4><17.28><20.74><24.88>cmsl12%
      }{}
%<+OT1cmr>\DeclareFontShape{OT1}{cmr}{m}{it}%
%<+Ucmr>\DeclareFontShape{U}{cmr}{m}{it}%
     {%
%<+ori>      <5-7>sub*cmr/m/n%
%<+ori>      <7>cmti7%
%<-ori>      <5><6><7>cmti7%
      <8>cmti8%
      <9>cmti9%
      <10><10.95>cmti10%
      <12><14.4><17.28><20.74><24.88>cmti12%
      }{}
%<+OT1cmr>\DeclareFontShape{OT1}{cmr}{m}{sc}%
%<+Ucmr>\DeclareFontShape{U}{cmr}{m}{sc}%
     {%
%<+ori>      <5-8>sub*cmr/m/n%
%<+ori>      <8><9><10><10.95><12>%
%<+ori>      <14.4><17.28><20.74><24.88>cmcsc10%
%<-ori>      <5><6><7><8><9><10><10.95><12>%
%<-ori>      <14.4><17.28><20.74><24.88>cmcsc10%
      }{}
%    \end{macrocode}
%    Here we try to cure the famous \$ $\to$ \pounds{} bug:
% \changes{v2.2c}{1994/01/18}{Corrected forgotten renaming of font
%            shape u to ui in substitution.}
%    \begin{macrocode}
%<+OT1cmr,Ucmr>% Warning: please note that the upright shape below is
%<+OT1cmr,Ucmr>%          used for the \pounds symbol of LaTeX. So this
%<+OT1cmr,Ucmr>%          font definition shouldn't be removed.
%<+OT1cmr,Ucmr>%
%<+ori>%          If cmu below 10pt is not available we substitute
%<+ori>%          cmti as far as possible (sizes 7, 8, 9). This is
%<+ori>%          done because cmu is used mainly for producing the
%<+ori>%          the \pound symbol and it is better to get a slanted
%<+ori>%          (or bigger) pound then to get a $ sign in such
%<+ori>%          situations.
%<+OT1cmr>\DeclareFontShape{OT1}{cmr}{m}{ui}
%<+Ucmr>\DeclareFontShape{U}{cmr}{m}{ui}
   {
%<+ori>      <7>subf*cmti7%
%<+ori>      <8>subf*cmti8%
%<+ori>      <9>subf*cmti9%
%<+ori>      <10><10.95><12><14.4><17.28><20.74><24.88>cmu10%
%<-ori>      <5><6><7><8><9><10><10.95><12>%
%<-ori>      <14.4><17.28><20.74><24.88>cmu10%
      }{}
%<+OT1cmr,Ucmr>%%%%%%% bold series
%<+OT1cmr>\DeclareFontShape{OT1}{cmr}{b}{n}
%<+Ucmr>\DeclareFontShape{U}{cmr}{b}{n}%
     {%
%<+ori>      <-10>sub*cmr/bx/n%
%<+ori>      <10><10.95><12><14.4><17.28><20.74><24.88>cmb10%
%<-ori>      <5><6><7><8><9><10><10.95><12>%
%<-ori>      <14.4><17.28><20.74><24.88>cmb10%
      }{}
%<+OT1cmr,Ucmr>%%%%%%%% bold extended series
%<+OT1cmr>\DeclareFontShape{OT1}{cmr}{bx}{n}
%<+Ucmr>\DeclareFontShape{U}{cmr}{bx}{n}%
   {%
      <5><6><7><8><9>gen*cmbx%
      <10><10.95>cmbx10%
      <12><14.4><17.28><20.74><24.88>cmbx12%
      }{}
%<+OT1cmr>\DeclareFontShape{OT1}{cmr}{bx}{sl}
%<+Ucmr>\DeclareFontShape{U}{cmr}{bx}{sl}%
      {%
%<+ori>      <-10>sub*cmr/bx/n%
%<+ori>      <10><10.95><12><14.4><17.28><20.74><24.88>cmbxsl10%
%<-ori>      <5><6><7><8><9>%
%<-ori>      <10><10.95><12><14.4><17.28><20.74><24.88>cmbxsl10%
      }{}
%<+OT1cmr>\DeclareFontShape{OT1}{cmr}{bx}{it}
%<+Ucmr>\DeclareFontShape{U}{cmr}{bx}{it}%
      {%
%<+ori>      <-10>sub*cmr/bx/n%
%<+ori>      <10><10.95><12><14.4><17.28><20.74><24.88>cmbxti10%
%<-ori>      <5><6><7><8><9>%
%<-ori>      <10><10.95><12><14.4><17.28><20.74><24.88>cmbxti10%
      }{}
%    \end{macrocode}
% \changes{v2.5h}{1999/05/09}{docstrip `nowarn' guard was the wrong way
%    around (pr/3036)}
%    \begin{macrocode}
%<+OT1cmr,Ucmr>% Again this is necessary for a correct \pounds symbol in
%<+OT1cmr,Ucmr>% the cmr fonts Hopefully the dc/ec font layout will take
%<+OT1cmr,Ucmr>% over soon.
%<+OT1cmr,Ucmr>%
%<+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})}
%
%    Same game for the Sans family.
%    \begin{macrocode}
%<*OT1cmss,Ucmss>
%<+OT1cmss>\DeclareFontFamily{OT1}{cmss}{\hyphenchar\font45 }
%<+Ucmss>\DeclareFontFamily{U}{cmss}{\hyphenchar\font45 }
%<+OT1cmss>\DeclareFontShape{OT1}{cmss}{m}{n}
%<+Ucmss>\DeclareFontShape{U}{cmss}{m}{n}%
     {%
%<+ori>      <-8>sub*cmr/m/n%
%<+ori>      <8>cmss8%
%<-ori>      <5><6><7><8>cmss8%
      <9>cmss9%
      <10><10.95>cmss10%
      <12><14.4>cmss12%
      <17.28><20.74><24.88>cmss17%
      }{}
%<+OT1cmss,Ucmss>% Font undefined, therefore substituted
%<+OT1cmss>\DeclareFontShape{OT1}{cmss}{m}{it}
%<+Ucmss>\DeclareFontShape{U}{cmss}{m}{it}%
%    \end{macrocode}
%    Never warn about substituting \texttt{sl} for \texttt{it} because
%    that is common practise for sans serif fonts.
% \changes{v2.5i}{2019/12/02}{Silent warning for cmss/it substitution
%    (gh/172)}
%    \begin{macrocode}
    {<->ssub*cmss/m/sl}{}
%<+OT1cmss>\DeclareFontShape{OT1}{cmss}{m}{sl}
%<+Ucmss>\DeclareFontShape{U}{cmss}{m}{sl}%
    {%
%<+ori>      <-8>sub*cmss/m/n%
%<+ori>      <8><9>gen*cmssi%
%<-ori>      <5><6><7><8>cmssi8<9>cmssi9%
      <10><10.95>cmssi10%
      <12><14.4>cmssi12%
      <17.28><20.74><24.88>cmssi17%
      }{}
%<+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>\DeclareFontShape{OT1}{cmss}{sbc}{n}
%<+Ucmss>\DeclareFontShape{U}{cmss}{sbc}{n}%
     {%
%<+ori>      <-10>sub*cmss/m/n%
%<-ori>      <5><6><7><8><9>cmssdc10%
       <10><10.95><12><14.4><17.28><20.74><24.88>cmssdc10%
       }{}

%<+OT1cmss,Ucmss>%%%%%%%%% bold extended series
%<+OT1cmss>\DeclareFontShape{OT1}{cmss}{bx}{n}
%<+Ucmss>\DeclareFontShape{U}{cmss}{bx}{n}%
     {%
%<+ori>      <-10>sub*cmss/m/n%
%<-ori>      <5><6><7><8><9>cmssbx10%
      <10><10.95><12><14.4><17.28><20.74><24.88>cmssbx10%
      }{}
%<+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})}
%
%    Notice that this encoding is in fact quite different and we
%    shouldn't therefore substitute some other font group if the
%    correct size or shape isn't available. Otherwise, we may end with
%    a |\verb| suddenly producing a lot of funny chars instead of the
%    desired ones.
%    \begin{macrocode}
%<*OT1cmtt,Ucmtt>
%<+OT1cmtt>\DeclareFontFamily{OT1}{cmtt}{\hyphenchar \font\m@ne}
%<+Ucmtt>\DeclareFontFamily{U}{cmtt}{\hyphenchar \font\m@ne}
%<+OT1cmtt>\DeclareFontShape{OT1}{cmtt}{m}{n}
%<+Ucmtt>\DeclareFontShape{U}{cmtt}{m}{n}%
     {%
%    \end{macrocode}
%    This substitution for |ori| is wrong and only in here because
%    that was the way stuff has be set up in the old |lfonts.tex| file.
%    \begin{macrocode}
%<+ori>      <-8>sub*cmr/m/n%
%<+ori>      <8><9>gen*cmtt%
%<-ori>      <5><6><7><8>cmtt8<9>cmtt9%
      <10><10.95>cmtt10%
      <12><14.4><17.28><20.74><24.88>cmtt12%
      }{}
%<+OT1cmtt,Ucmtt>%%%%%% make sure subst shapes are available
%<+OT1cmtt>\DeclareFontShape{OT1}{cmtt}{m}{it}
%<+Ucmtt>\DeclareFontShape{U}{cmtt}{m}{it}%
     {%
%    \end{macrocode}
%    The following substitution however is okay since both fonts have
%    the same encoding.
%    \begin{macrocode}
%<+ori>      <-10>sub*cmtt/m/n%
%<-ori>      <5><6><7><8><9>%
      <10><10.95><12><14.4><17.28><20.74><24.88>cmitt10%
      }{}
%<+OT1cmtt>\DeclareFontShape{OT1}{cmtt}{m}{sl}
%<+Ucmtt>\DeclareFontShape{U}{cmtt}{m}{sl}%
     {%
%<+ori>      <-10>sub*cmtt/m/n%
%<-ori>      <5><6><7><8><9>%
      <10><10.95><12><14.4><17.28><20.74><24.88>cmsltt10%
      }{}
%<+OT1cmtt>\DeclareFontShape{OT1}{cmtt}{m}{sc}
%<+Ucmtt>\DeclareFontShape{U}{cmtt}{m}{sc}%
     {%
%<+ori>      <-10>sub*cmtt/m/n%
%<-ori>      <5><6><7><8><9>%
      <10><10.95><12><14.4><17.28><20.74><24.88>cmtcsc10%
      }{}
%<+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}{}
%    \end{macrocode}
%
% \changes{v2.5j}{2019/12/16}{Provide substitutions for cmtt/bx/sl}
% \changes{v2.5m}{2023/04/13}{Add missing substitution for U/cmtt/bx/sl}
%    \begin{macrocode}
%<+OT1cmtt>\DeclareFontShape{OT1}{cmtt}{bx}{sl}
%<+Ucmtt>\DeclareFontShape{U}{cmtt}{bx}{sl}
%<-nowarn>  {<->sub*cmtt/m/n}{}
%<+nowarn>  {<->ssub*cmtt/m/n}{}
%<+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 Variable Typewriter (\texttt{OT1})}
%
%    The Computer Modern Variable Typewriter family is the
%    proportional spaced version of the Computer Modern Typewriter
%    family. It is implemented as a separate family to allow easy use
%    in normal text, including changes of shape/series etc if available.
%    This family also allows normal hyphenation.
% \changes{v2.5b}{1997/02/25}
%      {typo fixed in ot1cmvtt \cs{ProvidesFile} latex/2394}
%    \begin{macrocode}
%<*OT1cmvtt>
\DeclareFontFamily{OT1}{cmvtt}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmvtt}{m}{n}%
     {%
      <5><6><7><8><9><10><10.95>%
      <12><14.4><17.28><20.74><24.88>cmvtt10%
      }{}
%    \end{macrocode}
%    This font is probably not available to everybody as it is not
%    part of the standard distribution. One might find it in
%    \texttt{.../systems/knuth/local} on CTAN.
%    \begin{macrocode}
\DeclareFontShape{OT1}{cmvtt}{m}{it}%
     {%
      <5><6><7><8><9><10><10.95>%
      <12><14.4><17.28><20.74><24.88>cmvtti10%
      }{}
%</OT1cmvtt>
%    \end{macrocode}
%
%
% \subsubsection{Computer Modern Funny (\texttt{OT1})}
%
%    \begin{macrocode}
%<*OT1cmfr>
\DeclareFontFamily{OT1}{cmfr}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmfr}{m}{n}{%
      <10>cmff10%
    }{}
\DeclareFontShape{OT1}{cmfr}{m}{it}{%
      <10>cmfi10%
    }{}
%</OT1cmfr>
%    \end{macrocode}
%
% \subsubsection{Computer Modern Dunhill (\texttt{OT1})}
%
%    \begin{macrocode}
%<*OT1cmdh>
\DeclareFontFamily{OT1}{cmdh}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmdh}{m}{n}{%
      <10>cmdunh10%
    }{}
%</OT1cmdh>
%    \end{macrocode}
%
% \subsubsection{Computer Modern Fibonacci (\texttt{OT1})}
%
%    \begin{macrocode}
%<*OT1cmfib>
\DeclareFontFamily{OT1}{cmfib}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmfib}{m}{n}{%
      <8>cmfib8%
    }{}
%</OT1cmfib>
%    \end{macrocode}
%
%  \subsection{Math fonts}
%
%  \subsubsection{Computer Modern Math italics}
%  \changes{v2.0d}{1993/06/12}{OML/cmm/bx/it added for
%    \cs{oldstylenums}}
%  \changes{v2.3a}{1994/05/02}{Included font definitions for
%                              AMS-supplied cm fonts.}
%    \begin{macrocode}
%<*OMLcmm>
\DeclareFontFamily{OML}{cmm}{\skewchar\font127 }
\DeclareFontShape{OML}{cmm}{m}{it}%
     {<5><6><7><8><9>gen*cmmi%
      <10><10.95>cmmi10%
      <12><14.4><17.28><20.74><24.88>cmmi12%
      }{}
\DeclareFontShape{OML}{cmm}{b}{it}{%
      <5><6><7><8><9>gen*cmmib%
      <10><10.95><12><14.4><17.28><20.74><24.88>cmmib10%
      }{}
%    \end{macrocode}
%    This will allow the |\oldstylenums| command to work within
%    |\textbf|.
%    \begin{macrocode}
\DeclareFontShape{OML}{cmm}{bx}{it}%
   {<->ssub*cmm/b/it}{}
%</OMLcmm>
%    \end{macrocode}
%
%  \subsubsection{Computer Modern Roman Math italics}
%
%  \changes{v2.3d}{1994/10/30}{Added OMLcmr font substitutions pointing
%     to OMLcmm. }
%  \changes{v2.3f}{1995/04/22}{Corrected OMLcmr \cs{skewchar}}
%
%  Some text symbols like `\t oo' and `$<$' are kept in the OML
%   encoding, so we need font substititutions from OML/cmr to OML/cmm.
%    \begin{macrocode}
%<*OMLcmr>
\DeclareFontFamily{OML}{cmr}{\skewchar\font127 }
\DeclareFontShape{OML}{cmr}{m}{n}%
   {<->ssub*cmm/m/it}{}
\DeclareFontShape{OML}{cmr}{m}{it}%
   {<->ssub*cmm/m/it}{}
\DeclareFontShape{OML}{cmr}{m}{sl}%
   {<->ssub*cmm/m/it}{}
\DeclareFontShape{OML}{cmr}{m}{sc}%
   {<->ssub*cmm/m/it}{}
\DeclareFontShape{OML}{cmr}{bx}{n}%
   {<->ssub*cmm/b/it}{}
\DeclareFontShape{OML}{cmr}{bx}{it}%
   {<->ssub*cmm/b/it}{}
\DeclareFontShape{OML}{cmr}{bx}{sl}%
   {<->ssub*cmm/b/it}{}
\DeclareFontShape{OML}{cmr}{bx}{sc}%
   {<->ssub*cmm/b/it}{}
%</OMLcmr>
%    \end{macrocode}
%
%  \subsubsection{Computer Modern Math symbols}
%
%  \changes{v2.3a}{1994/05/02}{Included font definitions for
%                              AMS-supplied cm fonts.}
%    \begin{macrocode}
%<*OMScmsy>
\DeclareFontFamily{OMS}{cmsy}{\skewchar\font48 }
\DeclareFontShape{OMS}{cmsy}{m}{n}{%
      <5><6><7><8><9><10>gen*cmsy%
      <10.95><12><14.4><17.28><20.74><24.88>cmsy10%
      }{}
\DeclareFontShape{OMS}{cmsy}{b}{n}{%
      <5><6><7><8><9>gen*cmbsy%
      <10><10.95><12><14.4><17.28><20.74><24.88>cmbsy10%
      }{}
%</OMScmsy>
%    \end{macrocode}
%
%  \subsubsection{Computer Modern Roman Math symbols}
%
%  \changes{v2.3d}{1994/10/30}{Added OMScmr font substitutions pointing
%     to OMScmm. }
%
%  Some text symbols like `\P' and `\dag' are kept in the OMS encoding,
%  so we need font substititutions from OMS/cmr to OMS/cmsy.
%    \begin{macrocode}
%<*OMScmr>
\DeclareFontFamily{OMS}{cmr}{\skewchar\font48 }
\DeclareFontShape{OMS}{cmr}{m}{n}%
   {<->ssub*cmsy/m/n}{}
\DeclareFontShape{OMS}{cmr}{m}{it}%
   {<->ssub*cmsy/m/n}{}
\DeclareFontShape{OMS}{cmr}{m}{sl}%
   {<->ssub*cmsy/m/n}{}
\DeclareFontShape{OMS}{cmr}{m}{sc}%
   {<->ssub*cmsy/m/n}{}
\DeclareFontShape{OMS}{cmr}{bx}{n}%
   {<->ssub*cmsy/b/n}{}
\DeclareFontShape{OMS}{cmr}{bx}{it}%
   {<->ssub*cmsy/b/n}{}
\DeclareFontShape{OMS}{cmr}{bx}{sl}%
   {<->ssub*cmsy/b/n}{}
\DeclareFontShape{OMS}{cmr}{bx}{sc}%
   {<->ssub*cmsy/b/n}{}
%</OMScmr>
%    \end{macrocode}
%
%  \subsubsection{Computer Modern large symbols}
%
%    \begin{macrocode}
%<*OMXcmex>
\DeclareFontFamily{OMX}{cmex}{}
\DeclareFontShape{OMX}{cmex}{m}{n}{%
   <->sfixed*cmex10%
   }{}
%</OMXcmex>
%    \end{macrocode}
%
%
%  \subsubsection{Concrete Roman}
%
%  \changes{v2.3d}{1994/07/13}{Added new concrete shapes}
%    \begin{macrocode}
%<*OT1ccr>
\DeclareFontFamily{OT1}{ccr}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{ccr}{m}{n}{%
   <5><6><7><8><9><10>gen*ccr%
   <10.95><12><14.4><17.28><20.74><24.88>ccr10}{}
\DeclareFontShape{OT1}{ccr}{m}{it}{%
   <10><10.95><12>ccti10}{}
\DeclareFontShape{OT1}{ccr}{m}{sc}{%
   <10><10.95><12>cccsc10}{}
\DeclareFontShape{OT1}{ccr}{m}{sl}{%
   <9>ccsl9%
   <10><10.95><12>ccsl10}{}
\DeclareFontShape{OT1}{ccr}{c}{sl}{<9>ccslc9}{}
%    \end{macrocode}
%    Finally a few substitution fonts for combinations not available.
% \changes{v2.0f}{1993/09/24}{Added substitution fonts}
%    \begin{macrocode}
\DeclareFontShape{OT1}{ccr}{bx}{n}%
     {<->sub*cmr/bx/n}{}
\DeclareFontShape{OT1}{ccr}{bx}{sl}%
     {<->sub*cmr/bx/sl}{}
\DeclareFontShape{OT1}{ccr}{bx}{it}%
     {<->sub*cmr/bx/it}{}
%</OT1ccr>
%    \end{macrocode}
%
%  \subsubsection{Concrete Roman math italic}
%
% \changes{v2.4d}{1995/12/01}
%      {Ulrik Vieth. Add 10.95 and 12 size for ccmi10  /1989}
%    \begin{macrocode}
%<*OMLccm>
\DeclareFontFamily{OML}{ccm}{\skewchar\font127 }
\DeclareFontShape{OML}{ccm}{m}{it}{%
   <10><10.95><12>ccmi10}{}
%</OMLccm>
%    \end{macrocode}
%
% \subsubsection{Computer Modern Roman in \texttt{OT2} encoding}
%
%    These fonts are from the University of Washington. They do not
%    belong into this file but at the moment there is no other place.
%    \begin{macrocode}
%<*OT2cmr>
\DeclareFontFamily{OT2}{cmr}{\hyphenchar\font45 }
\DeclareFontShape{OT2}{cmr}{m}{n}{%
   <5><6><7><8><9>gen*wncyr%
   <10><10.95><12><14.4><17.28><20.74><24.88>wncyr10}{}
\DeclareFontShape{OT2}{cmr}{m}{it}{%
   <5><6><7><8><9>gen*wncyi%
   <10><10.95><12><14.4><17.28><20.74><24.88>wncyi10}{}
\DeclareFontShape{OT2}{cmr}{m}{sc}{%
   <5><6><7><8><9><10><10.95><12><14.4>%
   <17.28><20.74><24.88>wncysc10}{}
%<+OT2cmr>%%%%%%%%%%%%% bold series
\DeclareFontShape{OT2}{cmr}{b}{n}{%
   <5><6><7><8><9>gen*wncyb%
   <10><10.95><12><14.4><17.28><20.74><24.88>wncyb10}{}
%</OT2cmr>
%    \end{macrocode}
%
% \subsubsection{Computer Modern Sans in \texttt{OT2} encoding}
%
%    Some more fonts  from the University of Washington.
%    \begin{macrocode}
%<*OT2cmss>
\DeclareFontFamily{OT2}{cmss}{\hyphenchar\font45 }
\DeclareFontShape{OT2}{cmss}{m}{n}{%
   <8><9>gen*wncyss%
   <10><10.95><12><14.4><17.28><20.74><24.88>wncyss10}{}
%</OT2cmss>
%    \end{macrocode}
%
%    The next line goes into all files and in addition prevents \dst{}
%    from adding any further code from the main source file (such as a
%    character table.
%    \begin{macrocode}
\endinput
%    \end{macrocode}
%
% \Finale
%
