From b3225c4301e7724de481f410444fef5463799b9d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Tue, 14 Jan 2020 03:00:43 +0000
Subject: CTAN sync 202001140300

---
 macros/latex-dev/base/lttextcomp.dtx | 2215 ++++++++++++++++++++++++++++++++++
 1 file changed, 2215 insertions(+)
 create mode 100644 macros/latex-dev/base/lttextcomp.dtx

(limited to 'macros/latex-dev/base/lttextcomp.dtx')

diff --git a/macros/latex-dev/base/lttextcomp.dtx b/macros/latex-dev/base/lttextcomp.dtx
new file mode 100644
index 0000000000..fc208c2e74
--- /dev/null
+++ b/macros/latex-dev/base/lttextcomp.dtx
@@ -0,0 +1,2215 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2019
+% The LaTeX3 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
+%
+%<*driver>
+% \fi
+%
+%
+\ProvidesFile{lttextcomp.dtx}
+             [2019/12/24 v1.0a LaTeX Kernel (text companion symbols)]
+% \iffalse
+\documentclass{ltxdoc}
+\begin{document}
+\DocInput{lttextcomp.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+%
+%
+%
+% \GetFileInfo{lttextcomp.dtx}
+% \title{Providing addtional text symbols\\
+%        (previously available through the \texttt{textcomp} package)\thanks
+%       {This file has version number
+%       \fileversion\ dated \filedate}}
+%
+% \author{Frank Mittelbach}
+%
+% \MaintainedByLaTeXTeam{latex}
+% \maketitle
+%
+% This file contains the implementation for accessing the glyphs
+% provided by the \texttt{TS1} encoding (Text Companion
+% Encoding). This is now offered as part of the kernel and so the
+% \texttt{textcomp} package which used to provide the definitions is
+% now mainly needed for compatibility reasons (and doesn't do much any
+% more).
+%
+%
+%
+% \StopEventually{}
+%
+%
+%  \begin{macro}{\oldstylenums}
+%  \begin{macro}{\legacyoldstylenums}
+%
+%
+%    Preserve the old definition of \cs{oldstylenums} under a different name.
+% 
+%    This macro implements old style numerals but only works if we
+%    assume that the standard math fonts are used. Thus it needs
+%    changing in case other math encodings are used.
+%    \begin{macrocode}
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease>                 {\oldstylenums}{Old style numerals}%
+\DeclareRobustCommand\legacyoldstylenums[1]{%
+   \begingroup
+%    \end{macrocode}
+%    Provide spacing using the interword space of the current font.
+%    \begin{macrocode}
+    \spaceskip\fontdimen\tw@\font
+%    \end{macrocode}
+%    Then switch to the math italic font. We don't change the current
+%    value of |\f@series| which means that you can use bold numerals
+%    if |\bfseries| is in force. As family we use |\rmdefault| which
+%    means that this only works if there exist an |OML| encoded
+%    version of that font or rather a corresponding |.fd| file (which
+%    is the case for standard \LaTeX{} fonts even though they only
+%    contain substitutions).
+% \changes{v3.0j}{1999/02/12}{Use \cs{rmdefault} instead of \texttt{cmm}
+%                 (pr/2954)}
+%    \begin{macrocode}
+    \usefont{OML}{\rmdefault}{\f@series}{it}%
+    \mathgroup\symletters #1%
+   \endgroup
+}
+%    \end{macrocode}
+%    
+%    And here is the improved one that adjusts depending on surroundings.
+%    \begin{macrocode}
+\DeclareRobustCommand\oldstylenums[1]{%
+ \begingroup
+ \ifmmode
+   \mathgroup\symletters #1%
+  \else
+%    \end{macrocode}
+%    The \cs{CheckEncodingSubset} is discused below.
+%    \begin{macrocode}
+   \CheckEncodingSubset\@use@text@encoding{TS1}\tc@oldstylesubst2{{#1}}%
+ \fi
+ \endgroup
+}
+%    \end{macrocode}
+%    The helper to select the substitution if needed.
+%    \begin{macrocode}
+\def\tc@oldstylesubst#1{%
+   \tc@errorwarn
+          {Oldstyle digits unavailable for
+           family \f@family.\MessageBreak
+           Default oldstyle digits used instead}\@eha
+  \bgroup
+      \expand@font@defaults
+%    \end{macrocode}
+%    The substitution defaults are provided in the file \texttt{fonttext.ltx}.
+%    \begin{macrocode}
+      \ifx\f@family\rmdef@ult
+         \fontfamily\rmsubstdefault
+      \else\ifx\f@family\sfdef@ult
+         \fontfamily\sfsubstdefault
+      \else\ifx\f@family\ttdef@ult
+         \fontfamily\ttsubstdefault
+      \else
+        \fontfamily\textcompsubstdefault
+      \fi\fi\fi
+      \fontencoding{TS1}\selectfont#1%
+  \egroup
+}
+%    \end{macrocode}
+%  \end{macro}
+%  \end{macro}
+%
+% \begin{macro}{\textcompsubstdefault}
+%    Here is the default for the ``unknown'' case:
+%    \begin{macrocode}
+\def\textcompsubstdefault{\rmsubstdefault}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+%    \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\oldstylenums}{Old style numerals}%
+%<latexrelease>
+%<latexrelease>\DeclareRobustCommand\oldstylenums[1]{%
+%<latexrelease>   \begingroup
+%<latexrelease>    \spaceskip\fontdimen\tw@\font
+%<latexrelease>    \usefont{OML}{\rmdefault}{\f@series}{it}%
+%<latexrelease>    \mathgroup\symletters #1%
+%<latexrelease>   \endgroup
+%<latexrelease>}
+%<latexrelease>\let\legacyoldstylenums\@undefined
+%<latexrelease>\def\textcompsubstdefault{cmr}
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%    \end{macrocode}
+%    
+%    
+
+
+
+
+
+%    Everything else in the this file got introduced 2020/02/02, so we do a
+%    single rollback (for now).
+%    \begin{macrocode}
+%<*2ekernel>
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease>   {\DeclareEncodingSubset}{Text companion symbols}%
+%    \end{macrocode}
+%
+%
+%
+%  \begin{macro}{\DeclareEncodingSubset}
+%
+%     The declaration takes 3 mandatory arguments: an \emph{encoding}
+%    for which a subsetting is wanted (currently always \texttt{TS1},
+%    and most likely forever), the \emph{font family} for which we
+%    declare the subset and finally the \emph{subset} number (between \texttt{0} (all
+%    of the encoding is supported) and \texttt{9} many glyphs are missing.
+%
+%    For \texttt{TS1} the numbers have been choosen in a way that most
+%    fonts can be fairly correctly categorized, but the default
+%    settings are always conservative, that is they may claim that
+%    less glyphs are supported than there actually are.
+%
+%    As these days many font families are set up to end in \texttt{-LF}
+%    (lining figures), \texttt{-OsF} (oldstyle figures), etc.\ the
+%    declaration supports a shortcut: if the \emph{font family} name
+%    ends in \texttt{-*} then the star gets replaced by these common
+%    ending, e.g.,
+%\begin{verbatim}
+% \DeclareEncodingSubeset{TS1}{Alegreya-*}{2}
+%\end{verbatim}
+%    is the same as writing
+%\begin{verbatim}
+% \DeclareEncodingSubeset{TS1}{Alegreya-LF}{2}
+% \DeclareEncodingSubeset{TS1}{Alegreya-OsF}{2}
+% \DeclareEncodingSubeset{TS1}{Alegreya-TLF}{2}
+% \DeclareEncodingSubeset{TS1}{Alegreya-TOsF}{2}
+%\end{verbatim}
+%    If only some are needed then one can define them individually but
+%    in many cases all four are wanted, hence the shortcut.
+%
+%
+%    The coding of the declaration has no error checking as it is
+%    mostly for internal use.
+%    \begin{macrocode}
+\def\DeclareEncodingSubset#1#2{%
+  \DeclareEncodingSubset@aux{#1}#2*\DeclareEncodingSubset@aux
+}  
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\def\DeclareEncodingSubset@aux#1#2*#3\DeclareEncodingSubset@aux#4{%
+%    \end{macrocode}
+%    if \verb=#3= is empty then there was no star, otherwise we we
+%    define all four variants.
+%    \begin{macrocode}
+  \expandafter\ifx\expandafter X\detokenize{#3}X%
+    \@DeclareEncodingSubset{#1}{#2}{#4}%
+  \else
+    \@DeclareEncodingSubset{#1}{#2LF}{#4}%
+    \@DeclareEncodingSubset{#1}{#2TLF}{#4}%
+    \@DeclareEncodingSubset{#1}{#2OsF}{#4}%
+    \@DeclareEncodingSubset{#1}{#2TOsF}{#4}%
+  \fi
+}
+%    \end{macrocode}
+%
+%    The subset info is stored in a command with the name
+%    \texttt{\bslash}\emph{family}\texttt{:}\emph{subset} so if that
+%    already exists we change otherwise declare a subset.
+%    \begin{macrocode}
+\def\@DeclareEncodingSubset#1#2#3{%
+   \@ifundefined{#1:#2}%
+     {\@font@info{Setting #2 sub-encoding to #1/#3}}%
+     {\@font@info{Changing #2 sub-encoding to #1/#3}}%
+     \@namedef{#1:#2}{#3}}
+%    \end{macrocode}
+%    
+%    Any reason to allow those in the middle of documents?
+%    \begin{macrocode}
+\@onlypreamble\DeclareEncodingSubset
+\@onlypreamble\DeclareEncodingSubset@aux
+\@onlypreamble\@DeclareEncodingSubset
+%    \end{macrocode}
+%  \end{macro}
+
+
+% \begin{macro}{\CheckEncodingSubset}
+%    The command |\CheckEncodingSubset| will check if the current font
+%    family has the right encoding subset to typeset a certain
+%    command. It takes five arguments as follows:
+%    first argument is either |\UseTextSymbol|, |\UseTextAccent|
+%    depending on whether or not the symbol is a text symbol or a text
+%    accent.
+
+%    The second argument is the encoding from which this symbol should
+%    be fetched.
+%
+%    The third argument is either a fake accessor command or an error
+%    message. the code in that argument (if ever executed) receives
+%    two arguments: |#2| and |#5| of |\CheckEncodingSubset|.
+%
+%    Argument four is the subset encoding id to test against: if this
+%    value is higher than the subset id of the current font family
+%    then we typeset the symbol, i.e., execute |#1{#2}#5| otherwise
+%    it runs |#3#5|, e.g., to produce an error message or fake the
+%    glyph somehow.
+%
+%    Argument five is the symbol or accent command that is being
+%    checked.
+%
+%    For usage examples see definitions below.
+%
+%    \begin{macrocode}
+\def\CheckEncodingSubset#1#2#3#4#5{%
+    \ifnum #4>%
+      \expandafter\ifx\csname #2:\f@family\endcsname\relax
+        0\csname #2:?\endcsname
+      \else
+        \csname #2:\f@family\endcsname
+      \fi
+   \relax
+   \expandafter\@firstoftwo
+  \else
+   \expandafter\@secondoftwo
+ \fi
+  {#1{#2}}{#3}%
+  #5%
+}
+%    \end{macrocode}
+% \end{macro}
+
+
+
+
+
+% To set up the glyphs for the subsets we need a number helpers.
+%
+%  \begin{macro}{\tc@errorwarn}
+%    To we produce errors, warnings, or only info in the transcripts
+%    if glyphs require substitutions? By default it is ``info''
+%    only. With the \texttt{textcomp} package that can be changed.
+%    \begin{macrocode}
+\def\tc@errorwarn#1#2{\@latex@info{#1}}
+%    \end{macrocode}
+%  \end{macro}
+
+
+%  \begin{macro}{\tc@subst}
+%    
+%    \begin{macrocode}
+\def\tc@subst#1{%
+   \tc@errorwarn
+    {Symbol \string#1 not provided by\MessageBreak
+     font family \f@family\space
+     in TS1 encoding.\MessageBreak Default family used instead}\@eha
+  \bgroup
+      \expand@font@defaults
+      \ifx\f@family\rmdef@ult
+         \fontfamily\rmsubstdefault
+      \else\ifx\f@family\sfdef@ult
+         \fontfamily\sfsubstdefault
+      \else\ifx\f@family\ttdef@ult
+         \fontfamily\ttsubstdefault
+      \else
+        \fontfamily\substdefault
+      \fi\fi\fi
+%    \end{macrocode}
+%    Whatever default was chosen, we claim now (locally hopefully)
+%    that it  can handle all slots (even if not true) to avoid looping
+%    in certain situations, e.g., when something was set up incorrectly.
+%    \begin{macrocode}
+      \@namedef{TS1:\f@family}{0}%
+      \selectfont#1%
+  \egroup
+}
+%    \end{macrocode}
+%  \end{macro}
+
+
+
+
+% \begin{macro}{\tc@fake@euro}
+%    |\tc@fake@euro|  is an example of a ``fake'' definition to use in  arg |#3| of
+%    |\CheckEncodingSubset| when a symbol is not available in a
+%    certain font family. Here we produce a poor man's Euro symbol by combining
+%    a ``C'' with a ``=''.
+%    \begin{macrocode}
+\def\tc@fake@euro#1{%
+   \leavevmode
+   \@font@info{Faking \noexpand#1for font family
+                          \f@family\MessageBreak in TS1 encoding}%
+   \valign{##\cr
+      \vfil\hbox to 0.07em{\dimen@\f@size\p@
+                           \math@fontsfalse
+                           \fontsize{.7\dimen@}\z@\selectfont=\hss}%
+      \vfil\cr%
+      \hbox{C}\crcr
+   }%
+}
+%    \end{macrocode}
+% \end{macro}
+
+
+
+
+% \begin{macro}{\tc@check@symbol}
+% \begin{macro}{\tc@check@accent}
+%    These are two abbreviations that we use below to check symbols
+%    and accents in TS1. Only there to save some space, e.g., we can
+%    then write
+%\begin{verbatim}
+%\DeclareTextCommandDefault{\textcurrency}{\tc@check@symbol3\textcurrency}
+%\end{verbatim}
+%    to ensure that |\textcurrency| is only typeset if the current
+%    font has a \texttt{TS1} subset id of less than 3. Otherwise
+%    |\tc@error| is called telling the user that for this font family
+%    |\textcurreny| is not available.
+%    \begin{macrocode}
+\def\tc@check@symbol{\CheckEncodingSubset\UseTextSymbol{TS1}\tc@subst}
+%    \end{macrocode}
+%
+%    Accents and been mad an error in the \texttt{textcomp} package when
+%    not available. Now that we provide the functionality in the
+%    kernel we avoid the eror by swapping in a \texttt{T1} accent if
+%    the \texttt{TS1} accent is not available.
+%    \begin{macrocode}
+%\def\tc@check@accent{\CheckEncodingSubset\UseTextAccent{TS1}\tc@error}
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\def\tc@check@accent#1{\CheckEncodingSubset\UseTextAccent{TS1}{\tc@swap@accent#1}}
+\def\tc@swap@accent#1#2{\UseTextAccent{T1}#1}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+
+% \section{Sub-encodings}
+%
+%    Here are the default definitions for the \texttt{TS1} symbols.
+%    First those that we assume are always available if a font
+%    implements \texttt{TS1}.
+%    
+%    \begin{macrocode}
+\DeclareTextSymbolDefault{\textdollar}{TS1}
+\UndeclareTextCommand{\textdollar}  {OT1}         % don't use the OT1 def any longer
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareTextSymbolDefault{\textsterling}{TS1}
+\UndeclareTextCommand{\textsterling}{OT1}         % don't use the OT1 def any longer
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareTextSymbolDefault{\textperthousand}{TS1}
+\UndeclareTextCommand{\textperthousand}{T1}       % don't use the T1 def
+                                                  % should actually not be declaed
+                                                  % in the t1enc.def file instead
+                                                  % otherwise fontenc would overwrite
+                                                  % it again (legacy tests!)
+%    \end{macrocode}
+%    
+%    These are the standard \texttt{itemize} and footnote symbols
+%    originally taken from \texttt{OMS} and now from \texttt{TS1}:
+%    \begin{macrocode}
+\DeclareTextSymbolDefault{\textasteriskcentered}{TS1} 
+\DeclareTextSymbolDefault{\textbullet}{TS1}
+\DeclareTextSymbolDefault{\textdaggerdbl}{TS1}
+\DeclareTextSymbolDefault{\textdagger}{TS1}
+\DeclareTextSymbolDefault{\textparagraph}{TS1}
+\DeclareTextSymbolDefault{\textperiodcentered}{TS1}
+\DeclareTextSymbolDefault{\textsection}{TS1}
+%    \end{macrocode}
+%
+%    And here are the other \texttt{TS1} glyphs that are implemented
+%    by every font (or nearly everyone---a few are commented out and
+%    moved to sub-encoding 9,
+%    because they aren't around in one or two fonts. 
+%    \begin{macrocode}
+%%\DeclareTextSymbolDefault{\textbardbl}{TS1} % subst in sub-enc 9 above
+\DeclareTextSymbolDefault{\textbrokenbar}{TS1}
+%%\DeclareTextSymbolDefault{\textcelsius}{TS1} % subst in sub-enc 9 above
+\DeclareTextSymbolDefault{\textcent}{TS1} 
+\DeclareTextSymbolDefault{\textcopyright}{TS1}
+\DeclareTextSymbolDefault{\textdegree}{TS1}
+\DeclareTextSymbolDefault{\textdiv}{TS1}
+\DeclareTextSymbolDefault{\textlnot}{TS1}
+\DeclareTextSymbolDefault{\textonehalf}{TS1}
+\DeclareTextSymbolDefault{\textonequarter}{TS1}
+%%\DeclareTextSymbolDefault{\textonesuperior}{TS1} % subst in sub-enc 9 above
+\DeclareTextSymbolDefault{\textordfeminine}{TS1}
+\DeclareTextSymbolDefault{\textordmasculine}{TS1}
+\DeclareTextSymbolDefault{\textpm}{TS1}
+\DeclareTextSymbolDefault{\textquotesingle}{TS1}
+\DeclareTextSymbolDefault{\textquotestraightbase}{TS1}
+\DeclareTextSymbolDefault{\textquotestraightdblbase}{TS1}
+\DeclareTextSymbolDefault{\textregistered}{TS1}
+%%\DeclareTextSymbolDefault{\textthreequartersemdash}{TS1} % subst in sub-enc 9 above
+\DeclareTextSymbolDefault{\textthreequarters}{TS1}
+%%\DeclareTextSymbolDefault{\textthreesuperior}{TS1} % subst in sub-enc 9 above
+\DeclareTextSymbolDefault{\texttimes}{TS1}
+\DeclareTextSymbolDefault{\texttrademark}{TS1}
+%%\DeclareTextSymbolDefault{\texttwelveudash}{TS1} % subst in sub-enc 9 above
+%%\DeclareTextSymbolDefault{\texttwosuperior}{TS1} % subst in sub-enc 9 above
+\DeclareTextSymbolDefault{\textyen}{TS1}
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareTextSymbolDefault{\textcapitalcompwordmark}{TS1}
+\DeclareTextSymbolDefault{\textascendercompwordmark}{TS1}
+%    \end{macrocode}
+%
+%
+%    In the following sections the remaining default definitions are ordered by
+%    sub-encoding in which they are become unavailable (i.e., they are
+%    not provided in the sub-encoding with that number and all
+%    sub-encodings with higher numbers.
+%
+%    Thus the symbols that are available in sub-encoding $x$ are the
+%    symbols above (always available) and the symbols list in the
+%    sections for sub-encodings $x+1$ and higher.
+%
+% \subsection{Sub-encoding \texttt{1} (drop symbols not working in
+%    Latin Modern)}
+%
+%    The \cs{textcircled} is available but the glyph is simply too
+%    small so we keep using the \texttt{OMS} glyph.
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\textcircled}
+  {\CheckEncodingSubset\UseTextAccent{TS1}{\UseTextAccent{OMS}}1\textcircled}
+%    \end{macrocode}
+%
+%
+%    
+%
+%
+% \subsection{Sub-encoding \texttt{2} (majority of new OTF fonts via autoinst)}
+%
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\t}
+  {\CheckEncodingSubset\UseTextAccent{TS1}{\UseTextAccent{OML}}2\t}
+%    \end{macrocode}
+%
+%    Capital  accents are really only very seldom implemented, so from
+%    sub-encoding \texttt{2} onwards we use the normal \texttt{T1}
+%    accents if they are asked for in the document.
+%
+%    In Unicode engines we don't implement them at all but always use
+%    the basic accents instead. whether that works or not really
+%    depends on the font, something like \verb=\"X= usually comes out
+%    wrong in Unicode engines.
+%  
+%    \begin{macrocode}
+\ifx\Umathcode\@undefined
+  \DeclareTextCommandDefault{\capitalacute}       {\tc@check@accent{\'}2\capitalacute}
+  \DeclareTextCommandDefault{\capitalbreve}       {\tc@check@accent{\u}2\capitalbreve}
+  \DeclareTextCommandDefault{\capitalcaron}       {\tc@check@accent{\v}2\capitalcaron}
+  \DeclareTextCommandDefault{\capitalcedilla}     {\tc@check@accent{\c}2\capitalcedilla}
+  \DeclareTextCommandDefault{\capitalcircumflex}  {\tc@check@accent{\^}2\capitalcircumflex}
+  \DeclareTextCommandDefault{\capitaldieresis}    {\tc@check@accent{\"}2\capitaldieresis}
+  \DeclareTextCommandDefault{\capitaldotaccent}   {\tc@check@accent{\.}2\capitaldotaccent}
+  \DeclareTextCommandDefault{\capitalgrave}       {\tc@check@accent{\`}2\capitalgrave}
+  \DeclareTextCommandDefault{\capitalhungarumlaut}{\tc@check@accent{\H}2\capitalhungarumlaut}
+  \DeclareTextCommandDefault{\capitalmacron}      {\tc@check@accent{\=}2\capitalmacron}
+  \DeclareTextCommandDefault{\capitalogonek}      {\tc@check@accent{\k}2\capitalogonek}
+  \DeclareTextCommandDefault{\capitalring}        {\tc@check@accent{\r}2\capitalring}
+  \DeclareTextCommandDefault{\capitaltie}         {\tc@check@accent{\t}2\capitaltie}
+  \DeclareTextCommandDefault{\capitaltilde}       {\tc@check@accent{\~}2\capitaltilde}
+%    \end{macrocode}
+%    For \cs{newtie} and \cs{capitalnewtie} this is actually wrong, they should pick up
+%    the accent from the substitution font (not done yet).
+%    \begin{macrocode}
+  \DeclareTextCommandDefault{\newtie}             {\tc@check@accent{\t}2\newtie}
+  \DeclareTextCommandDefault{\capitalnewtie}      {\tc@check@accent{\t}2\capitalnewtie}
+%    \end{macrocode}
+%    
+%    In Unicode engines we just execute the simple accents:
+%    \begin{macrocode}
+\else
+  \def\capitalacute{\'}
+  \def\capitalbreve{\u}
+  \def\capitalcaron{\v}
+  \def\capitalcedilla{\c}
+  \def\capitalcircumflex{\^}
+  \def\capitaldieresis{\"}
+  \def\capitaldotaccent{\.}
+  \def\capitalgrave{\`}
+  \def\capitalhungarumlaut{\H}
+  \def\capitalmacron{\=}
+  \def\capitalnewtie{\t}
+  \def\capitalogonek{\k}
+  \def\capitalring{\r}
+  \def\capitaltie{\t}
+  \def\capitaltilde{\~}
+  \def\newtie{\t}
+\fi
+%    \end{macrocode}
+%    
+%
+%
+%
+%    The next two symbols exist in some fonts (faked?), but we ignore
+%    that to keep the subsets reasonable compact and most important linear.
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\textlbrackdbl}      {\tc@check@symbol2\textlbrackdbl}
+\DeclareTextCommandDefault{\textrbrackdbl}      {\tc@check@symbol2\textrbrackdbl}
+%    \end{macrocode}
+%
+%
+%    Old style numerals are again in some fonts but using
+%    \texttt{-OsF}, etc.\ is the better approach to get them, so we
+%    claim they aren't in sub-encoding 2 as that's true for most
+%    fonts.
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\texteightoldstyle}  {\tc@check@symbol2\texteightoldstyle}
+\DeclareTextCommandDefault{\textfiveoldstyle}   {\tc@check@symbol2\textfiveoldstyle}
+\DeclareTextCommandDefault{\textfouroldstyle}   {\tc@check@symbol2\textfouroldstyle}
+\DeclareTextCommandDefault{\textnineoldstyle}   {\tc@check@symbol2\textnineoldstyle}
+\DeclareTextCommandDefault{\textoneoldstyle}    {\tc@check@symbol2\textoneoldstyle}
+\DeclareTextCommandDefault{\textsevenoldstyle}  {\tc@check@symbol2\textsevenoldstyle}
+\DeclareTextCommandDefault{\textsixoldstyle}    {\tc@check@symbol2\textsixoldstyle}
+\DeclareTextCommandDefault{\textthreeoldstyle}  {\tc@check@symbol2\textthreeoldstyle}
+\DeclareTextCommandDefault{\texttwooldstyle}    {\tc@check@symbol2\texttwooldstyle}
+\DeclareTextCommandDefault{\textzerooldstyle}   {\tc@check@symbol2\textzerooldstyle}
+%    \end{macrocode}
+%
+%
+%
+%    The next set of glyphs is special to TeX fonts (and available
+%    with a few older PS fonts supported in the virtual fonts), but
+%    not any longer in the majority of fonts provided through
+%    autoinst, so we pretend there aren't available in sub-encoding 2
+%    and below.
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\textacutedbl}       {\tc@check@symbol2\textacutedbl}
+\DeclareTextCommandDefault{\textasciiacute}     {\tc@check@symbol2\textasciiacute}
+\DeclareTextCommandDefault{\textasciibreve}     {\tc@check@symbol2\textasciibreve}
+\DeclareTextCommandDefault{\textasciicaron}     {\tc@check@symbol2\textasciicaron}
+\DeclareTextCommandDefault{\textasciidieresis}  {\tc@check@symbol2\textasciidieresis}
+\DeclareTextCommandDefault{\textasciigrave}     {\tc@check@symbol2\textasciigrave}
+\DeclareTextCommandDefault{\textasciimacron}    {\tc@check@symbol2\textasciimacron}
+\DeclareTextCommandDefault{\textgravedbl}       {\tc@check@symbol2\textgravedbl}
+\DeclareTextCommandDefault{\texttildelow}       {\tc@check@symbol2\texttildelow}
+%    \end{macrocode}
+%
+%
+%    Finally those below are only available in CM-based fonts but in
+%    no font that has its origin outside of the \TeX{} world.
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\textbaht}           {\tc@check@symbol2\textbaht}
+\DeclareTextCommandDefault{\textbigcircle}      {\tc@check@symbol2\textbigcircle}
+\DeclareTextCommandDefault{\textborn}           {\tc@check@symbol2\textborn}
+\DeclareTextCommandDefault{\textcentoldstyle}   {\tc@check@symbol2\textcentoldstyle}
+\DeclareTextCommandDefault{\textcircledP}       {\tc@check@symbol2\textcircledP}
+\DeclareTextCommandDefault{\textcopyleft}       {\tc@check@symbol2\textcopyleft}
+\DeclareTextCommandDefault{\textdblhyphenchar}  {\tc@check@symbol2\textdblhyphenchar}
+\DeclareTextCommandDefault{\textdblhyphen}      {\tc@check@symbol2\textdblhyphen}
+\DeclareTextCommandDefault{\textdied}           {\tc@check@symbol2\textdied}
+\DeclareTextCommandDefault{\textdiscount}       {\tc@check@symbol2\textdiscount}
+\DeclareTextCommandDefault{\textdivorced}       {\tc@check@symbol2\textdivorced}
+\DeclareTextCommandDefault{\textdollaroldstyle} {\tc@check@symbol2\textdollaroldstyle}
+\DeclareTextCommandDefault{\textguarani}        {\tc@check@symbol2\textguarani}
+\DeclareTextCommandDefault{\textleaf}           {\tc@check@symbol2\textleaf}
+\DeclareTextCommandDefault{\textlquill}         {\tc@check@symbol2\textlquill}
+\DeclareTextCommandDefault{\textmarried}        {\tc@check@symbol2\textmarried}
+\DeclareTextCommandDefault{\textmho}            {\tc@check@symbol2\textmho}
+\DeclareTextCommandDefault{\textmusicalnote}    {\tc@check@symbol2\textmusicalnote}
+\DeclareTextCommandDefault{\textnaira}          {\tc@check@symbol2\textnaira}
+\DeclareTextCommandDefault{\textopenbullet}     {\tc@check@symbol2\textopenbullet}
+\DeclareTextCommandDefault{\textpeso}           {\tc@check@symbol2\textpeso}
+\DeclareTextCommandDefault{\textpilcrow}        {\tc@check@symbol2\textpilcrow}
+\DeclareTextCommandDefault{\textrecipe}         {\tc@check@symbol2\textrecipe}
+\DeclareTextCommandDefault{\textreferencemark}  {\tc@check@symbol2\textreferencemark}
+\DeclareTextCommandDefault{\textrquill}         {\tc@check@symbol2\textrquill}
+\DeclareTextCommandDefault{\textservicemark}    {\tc@check@symbol2\textservicemark}
+\DeclareTextCommandDefault{\textsurd}           {\tc@check@symbol2\textsurd}
+%    \end{macrocode}
+%
+%    The \cs{textpertenthousand} also belongs in this group but here
+%    we have a choice: in T1 there is definition for
+%    \cs{textpertenthousand} making the symbol up from \% and
+%    \verb=\char 24= (twice) but in many fonts that char doesn't exist
+%    and the slot is reused for random ligatures. So better not use it
+%    because often it is wrong.  But pointing to TS1 is also not great
+%    as only a few fonts have it as a real symbol, so we get a
+%    substitution to CM or LM.
+%
+%    Alternatively we could just state that the symbol is unavailable in
+%    those fonts. For now I substitute.
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\textpertenthousand} {\tc@check@symbol2\textpertenthousand}
+\UndeclareTextCommand{\textpertenthousand}{T1}
+%    \end{macrocode}
+%
+%
+%
+% \subsection{Sub-encoding \texttt{3}}
+%
+%    Sub-encoding \texttt{2} is the one where we loose many
+%    symbols. In the higher-numbered sub-encodings we see only a few
+%    dropped additionally.
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\textlangle}         {\tc@check@symbol3\textlangle}
+\DeclareTextCommandDefault{\textrangle}         {\tc@check@symbol3\textrangle}
+%    \end{macrocode}
+%
+%
+%
+%
+%
+% \subsection{Sub-encoding \texttt{4}}
+%
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\textcolonmonetary}  {\tc@check@symbol4\textcolonmonetary}
+\DeclareTextCommandDefault{\textdong}           {\tc@check@symbol4\textdong}
+\DeclareTextCommandDefault{\textdownarrow}      {\tc@check@symbol4\textdownarrow}
+\DeclareTextCommandDefault{\textleftarrow}      {\tc@check@symbol4\textleftarrow}
+\DeclareTextCommandDefault{\textlira}           {\tc@check@symbol4\textlira}
+\DeclareTextCommandDefault{\textrightarrow}     {\tc@check@symbol4\textrightarrow}
+\DeclareTextCommandDefault{\textuparrow}        {\tc@check@symbol4\textuparrow}
+\DeclareTextCommandDefault{\textwon}            {\tc@check@symbol4\textwon}
+%    \end{macrocode}
+%    
+%
+%    
+%
+%
+% \subsection{Sub-encoding \texttt{5} (most older PS fonts)}
+%
+%    Most older PS fonts (supported in \TeX{} since the early nineties
+%    when virtual fonts became available) are sorted under this
+%    sub-encoding. But in reality, many of them don't have all glpyhs
+%    that should be available in sub-encoding \texttt{5}. Instead they
+%    show little squares, i.e., they produce ``tofu'' if you are
+%    unlucky.
+%
+%    But the coverage is so random that it is impossible to sort them
+%    properly and if we tried to ensure that they only typeset those
+%    glyphs that are really  always available wouput put them all into
+%    sub-encoding \texttt{9} so that's a compromise really.
+%
+%    Modern fonts that don't typeset a tofu character if a glyph is
+%    missing are only cataloged as sub-encoding \texttt{5} if they
+%    really support of its glyph set.
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\textestimated}      {\tc@check@symbol5\textestimated}
+\DeclareTextCommandDefault{\textnumero}         {\tc@check@symbol5\textnumero}
+%    \end{macrocode}
+%    
+%
+%
+%
+% \subsection{Sub-encoding \texttt{6}}
+%
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\textflorin}         {\tc@check@symbol6\textflorin}    
+\DeclareTextCommandDefault{\textcurrency}       {\tc@check@symbol6\textcurrency}
+%    \end{macrocode}
+%    
+%
+%
+% \subsection{Sub-encoding \texttt{7}}
+%
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\textfractionsolidus}{\tc@check@symbol7\textfractionsolidus}
+\DeclareTextCommandDefault{\textohm}            {\tc@check@symbol7\textohm}
+\DeclareTextCommandDefault{\textmu}             {\tc@check@symbol7\textmu}
+\DeclareTextCommandDefault{\textminus}          {\tc@check@symbol7\textminus}
+%    \end{macrocode}
+%    
+%
+%
+% \subsection{Sub-encoding \texttt{8}}
+%
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\textblank}          {\tc@check@symbol{8}\textblank}
+\DeclareTextCommandDefault{\textinterrobangdown}{\tc@check@symbol{8}\textinterrobangdown}
+\DeclareTextCommandDefault{\textinterrobang}    {\tc@check@symbol{8}\textinterrobang}
+%    \end{macrocode}
+%
+%    Fonts with this sub-encoding don't have a Euro symbol, but
+%    instead of substituting we fake it.
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\texteuro}
+            {\CheckEncodingSubset\UseTextSymbol{TS1}\tc@fake@euro{8}\texteuro}
+%    \end{macrocode}
+%
+%
+%
+%
+% \subsection{Sub-encoding \texttt{9} (most missing)}
+%
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\textcelsius}{\tc@check@symbol{9}\textcelsius}
+\DeclareTextCommandDefault{\textonesuperior}{\tc@check@symbol{9}\textonesuperior}
+\DeclareTextCommandDefault{\textthreequartersemdash}{\tc@check@symbol{9}\textthreequartersemdash}
+\DeclareTextCommandDefault{\textthreesuperior}{\tc@check@symbol{9}\textthreesuperior}
+\DeclareTextCommandDefault{\texttwelveudash}{\tc@check@symbol{9}\texttwelveudash}
+\DeclareTextCommandDefault{\texttwosuperior}{\tc@check@symbol{9}\texttwosuperior}
+\DeclareTextCommandDefault{\textbardbl}{\tc@check@symbol{9}\textbardbl}
+%    \end{macrocode}
+%    
+%
+%    
+%
+% \section{Unicode engine specials}
+%
+%    If we are using a unicode engine we handle some glyphs differently,
+%    so this here are the definitions for the Unicode encoding
+%    (overwriting the defaults above).
+
+%    \begin{macrocode}
+\ifx \Umathcode\@undefined  \else
+%    \end{macrocode}
+%
+%    This set should be taken from \texttt{TS1} encoding even if it
+%    means you get it from the default font for that encoding.
+%    \begin{macrocode}
+%\DeclareTextSymbol{\textcopyleft}{TS1}{171}
+%\DeclareTextSymbol{\textdblhyphen}{TS1}{45}
+%\DeclareTextSymbol{\textdblhyphenchar}{TS1}{127}
+%\DeclareTextSymbol{\textquotestraightbase}{TS1}{13}
+%\DeclareTextSymbol{\textquotestraightdblbase}{TS1}{18}
+%\DeclareTextSymbol{\textleaf}{TS1}{108}
+%\DeclareTextSymbol{\texttwelveudash}{TS1}{21}
+%\DeclareTextSymbol{\textthreequartersemdash}{TS1}{22}
+%    \end{macrocode}
+%
+%    If oldstyle numerals are asked for we just use \cs{oldstylenums}.
+%    \begin{macrocode}
+\DeclareTextCommand{\textzerooldstyle} \UnicodeEncodingName{\oldstylenums{0}}
+\DeclareTextCommand{\textoneoldstyle}  \UnicodeEncodingName{\oldstylenums{1}}
+\DeclareTextCommand{\texttwooldstyle}  \UnicodeEncodingName{\oldstylenums{2}}
+\DeclareTextCommand{\textthreeoldstyle}\UnicodeEncodingName{\oldstylenums{3}}
+\DeclareTextCommand{\textfouroldstyle} \UnicodeEncodingName{\oldstylenums{4}}
+\DeclareTextCommand{\textfiveoldstyle} \UnicodeEncodingName{\oldstylenums{5}}
+\DeclareTextCommand{\textsixoldstyle}  \UnicodeEncodingName{\oldstylenums{6}}
+\DeclareTextCommand{\textsevenoldstyle}\UnicodeEncodingName{\oldstylenums{7}}
+\DeclareTextCommand{\texteightoldstyle}\UnicodeEncodingName{\oldstylenums{8}}
+\DeclareTextCommand{\textnineoldstyle} \UnicodeEncodingName{\oldstylenums{9}}
+%    \end{macrocode}
+%    These have Unicode slots so this should be integrated into TU explictly
+%    \begin{macrocode}
+\DeclareTextSymbol{\textpilcrow}       \UnicodeEncodingName{"00B6}
+\DeclareTextSymbol{\textborn}          \UnicodeEncodingName{"002A}
+\DeclareTextSymbol{\textdied}          \UnicodeEncodingName{"2020}
+\DeclareTextSymbol{\textlbrackdbl}     \UnicodeEncodingName{"27E6}
+\DeclareTextSymbol{\textrbrackdbl}     \UnicodeEncodingName{"27E7}
+\DeclareTextSymbol{\textguarani}       \UnicodeEncodingName{"20B2}
+%    \end{macrocode}
+%    We could make \cs{textcentoldstyle} and \cs{textdollaroldstyle}
+%    point to dollar and cent in the Unicode encoding
+%    \begin{macrocode}
+%\DeclareTextSymbol{\textcentoldstyle}            \UnicodeEncodingName{"00A2}
+%\DeclareTextSymbol{\textdollaroldstyle}          \UnicodeEncodingName{"0024}
+%    \end{macrocode}
+%    but I think it is better to pick them up from TS1 even if that
+%    usually means LMR fonts
+%    \begin{macrocode}
+\DeclareTextSymbol{\textdollaroldstyle}{TS1}{138}
+\DeclareTextSymbol{\textcentoldstyle}  {TS1}{139}
+%    \end{macrocode}
+%    
+%    
+%    \begin{macrocode}
+\fi               % --- END of Unicode engines specials
+%    \end{macrocode}
+%
+% \section{Font family sub-encodings setup}
+%
+%    We declare the subsets for a good number of fonts in the kernel
+%    \ldots
+%
+%    But first the default for anything that is not declared.  We use
+%    \texttt{9} which is most like much too conservative but with the
+%    advantage that we aren't getting missing glyphs (or at least that
+%    this very very unlikely).
+%    For nearly all font in the \TeX{} Live distribution of 2019
+%    ``correct'' classifications are given below, so that this default
+%    is only used for new font families, and over time the right
+%    classifications can be added here too.
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{?}{9}
+%    \end{macrocode}
+%
+%    This first block contains the fonts that have been already
+%    supported by the \texttt{textcomp} package way back, i.e., the
+%    font families that have \TeX{} support since the mid-nineties.
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{ccr}     {0}
+\DeclareEncodingSubset{TS1}{cmbr}    {0}
+\DeclareEncodingSubset{TS1}{cmr}     {0}
+\DeclareEncodingSubset{TS1}{cmss}    {0}
+\DeclareEncodingSubset{TS1}{cmtl}    {0}
+\DeclareEncodingSubset{TS1}{cmtt}    {0}
+\DeclareEncodingSubset{TS1}{cmvtt}   {0}
+\DeclareEncodingSubset{TS1}{pxr}     {0}
+\DeclareEncodingSubset{TS1}{pxss}    {0}
+\DeclareEncodingSubset{TS1}{pxtt}    {0}
+\DeclareEncodingSubset{TS1}{qag}     {0}
+\DeclareEncodingSubset{TS1}{qbk}     {0}
+\DeclareEncodingSubset{TS1}{qcr}     {0}
+\DeclareEncodingSubset{TS1}{qcs}     {0}
+\DeclareEncodingSubset{TS1}{qhvc}    {0}
+\DeclareEncodingSubset{TS1}{qhv}     {0}
+\DeclareEncodingSubset{TS1}{qpl}     {0}
+\DeclareEncodingSubset{TS1}{qtm}     {0}
+\DeclareEncodingSubset{TS1}{qzc}     {0}
+\DeclareEncodingSubset{TS1}{txr}     {0}
+\DeclareEncodingSubset{TS1}{txss}    {0}
+\DeclareEncodingSubset{TS1}{txtt}    {0}
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{lmr}     {1}
+\DeclareEncodingSubset{TS1}{lmdh}    {1}
+\DeclareEncodingSubset{TS1}{lmss}    {1}
+\DeclareEncodingSubset{TS1}{lmssq}   {1}
+\DeclareEncodingSubset{TS1}{lmvtt}   {1}
+\DeclareEncodingSubset{TS1}{lmtt}    {1} % missing TM, SM, pertenthousand for some reason
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{ptmx}    {2}
+\DeclareEncodingSubset{TS1}{ptmj}    {2}
+\DeclareEncodingSubset{TS1}{ul8}     {2}
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{bch}     {5}  % tofu for blank, ohm 
+\DeclareEncodingSubset{TS1}{futj}    {5}  % tofu for blank, interrobang/down, ohm 
+\DeclareEncodingSubset{TS1}{futs}    {5}  % tofu for blank, ohm 
+\DeclareEncodingSubset{TS1}{futx}    {5}  % probably (currently broken distrib)
+\DeclareEncodingSubset{TS1}{pag}     {5}  % tofu for blank, interrobang/down, ohm 
+\DeclareEncodingSubset{TS1}{pbk}     {5}  % tofu for blank, interrobang/down, ohm 
+\DeclareEncodingSubset{TS1}{pcr}     {5}  % tofu for blank, interrobang/down, ohm 
+\DeclareEncodingSubset{TS1}{phv}     {5}  % tofu for blank, interrobang/down, ohm 
+\DeclareEncodingSubset{TS1}{pnc}     {5}  % tofu for blank, interrobang/down, ohm 
+\DeclareEncodingSubset{TS1}{pplj}    {5}  % tofu for blank
+\DeclareEncodingSubset{TS1}{pplx}    {5}  % tofu for blank
+\DeclareEncodingSubset{TS1}{ppl}     {5}  % tofu for blank interrobang/down
+\DeclareEncodingSubset{TS1}{ptm}     {5}  % tofu for blank, interrobang/down, ohm 
+\DeclareEncodingSubset{TS1}{pzc}     {5}  % tofu for blank, interrobang/down, ohm 
+\DeclareEncodingSubset{TS1}{ul9}     {5}  % tofu for blank, interrobang/down, ohm 
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{dayroms} {6}  % tofu for blank, interrobang/down, ohm 
+\DeclareEncodingSubset{TS1}{dayrom}  {6}  % tofu for blank, interrobang/down, ohm 
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{augie}   {8}  % really only missing euro
+\DeclareEncodingSubset{TS1}{put}     {8}
+\DeclareEncodingSubset{TS1}{uag}     {8}  % probably (currently broken distrib)
+\DeclareEncodingSubset{TS1}{ugq}     {8}  
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{zi4}     {9}
+%    \end{macrocode}
+%    LucidaBright (sold through TUG) probably not quite correct, I
+%    guess as I have the older fonts \ldots
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{hls}     {5}
+\DeclareEncodingSubset{TS1}{hlst}    {5}
+\DeclareEncodingSubset{TS1}{hlct}    {5}
+\DeclareEncodingSubset{TS1}{hlh}     {5}
+\DeclareEncodingSubset{TS1}{hlx}     {8}
+\DeclareEncodingSubset{TS1}{hlce}    {8}
+\DeclareEncodingSubset{TS1}{hlcn}    {8}
+\DeclareEncodingSubset{TS1}{hlcw}    {8}
+\DeclareEncodingSubset{TS1}{hlcf}    {8}
+%    \end{macrocode}
+%
+%    Below are the newer fonts that have support files for
+%    \LaTeX{}. With very few exceptions the classifications are done
+%    so that that all characters are correctly produced (either being
+%    available in the font or substituted.
+%
+%    There are a few fonts that contain ``tofu'' squares in places
+%    (instead of a real glyph) and in a few cases some really seldom
+%    needed chars are unavailable, i.e., produce missing glyphs (to
+%    avoid that a large number of available chars are unnecessarily
+%    substituted.
+%
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{lato-*}                   {0}  % with a bunch of tofu inside
+\DeclareEncodingSubset{TS1}{opensans-*}               {0}  % with a bunch of tofu inside
+\DeclareEncodingSubset{TS1}{cantarell-*}              {0}  % with a bunch of tofu inside
+\DeclareEncodingSubset{TS1}{fbb-*}                    {0}  % missing centoldstyle
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{tli}                      {1}  % with lots of tofu inside
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{Alegreya-*}               {2}
+\DeclareEncodingSubset{TS1}{AlegreyaSans-*}           {2}
+\DeclareEncodingSubset{TS1}{DejaVuSans-TLF}           {2}
+\DeclareEncodingSubset{TS1}{DejaVuSansCondensed-TLF}  {2}
+\DeclareEncodingSubset{TS1}{DejaVuSansMono-TLF}       {2}
+\DeclareEncodingSubset{TS1}{EBGaramond-*}             {2}
+\DeclareEncodingSubset{TS1}{Tempora-TLF}              {2}
+\DeclareEncodingSubset{TS1}{Tempora-TOsF}             {2}
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{Arimo-TLF}                {3}
+\DeclareEncodingSubset{TS1}{Carlito-*}                {3}
+\DeclareEncodingSubset{TS1}{FiraSans-*}               {3}
+\DeclareEncodingSubset{TS1}{IBMPlexSans-TLF}          {3}
+\DeclareEncodingSubset{TS1}{Merriweather-OsF}         {3} 
+\DeclareEncodingSubset{TS1}{Montserrat-*}             {3}
+\DeclareEncodingSubset{TS1}{MontserratAlternates-*}   {3}
+\DeclareEncodingSubset{TS1}{SourceCodePro-TLF}        {3}
+\DeclareEncodingSubset{TS1}{SourceCodePro-TOsF}       {3}
+\DeclareEncodingSubset{TS1}{SourceSansPro-*}          {3}
+\DeclareEncodingSubset{TS1}{SourceSerifPro-*}         {3}
+\DeclareEncodingSubset{TS1}{Tinos-TLF}                {3}
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{AccanthisADFStdNoThree-LF}{4}
+\DeclareEncodingSubset{TS1}{Cabin-TLF}                {4}
+\DeclareEncodingSubset{TS1}{Caladea-TLF}              {4}
+\DeclareEncodingSubset{TS1}{Chivo-*}                  {4}
+\DeclareEncodingSubset{TS1}{ClearSans-TLF}            {4}
+\DeclareEncodingSubset{TS1}{Coelacanth-LF}            {4}
+\DeclareEncodingSubset{TS1}{CrimsonPro-*}             {4}
+\DeclareEncodingSubset{TS1}{FiraMono-TLF}             {4}
+\DeclareEncodingSubset{TS1}{FiraMono-TOsF}            {4}
+\DeclareEncodingSubset{TS1}{Go-TLF}                   {4}
+\DeclareEncodingSubset{TS1}{GoMono-TLF}               {4}
+\DeclareEncodingSubset{TS1}{InriaSans-*}              {4}
+\DeclareEncodingSubset{TS1}{InriaSerif-*}             {4}
+\DeclareEncodingSubset{TS1}{LibertinusSans-*}         {4}
+\DeclareEncodingSubset{TS1}{LibertinusSerif-*}        {4}
+\DeclareEncodingSubset{TS1}{LibreBodoni-TLF}          {4}
+\DeclareEncodingSubset{TS1}{LibreFranklin-TLF}        {4}
+\DeclareEncodingSubset{TS1}{LinguisticsPro-LF}        {4}
+\DeclareEncodingSubset{TS1}{LinguisticsPro-OsF}       {4}
+\DeclareEncodingSubset{TS1}{LinuxBiolinumT-*}         {4}
+\DeclareEncodingSubset{TS1}{LinuxLibertineT-*}        {4}
+\DeclareEncodingSubset{TS1}{MerriweatherSans-OsF}     {4} 
+\DeclareEncodingSubset{TS1}{MintSpirit-*}             {4}
+\DeclareEncodingSubset{TS1}{MintSpiritNoTwo-*}        {4}
+\DeclareEncodingSubset{TS1}{PTMono-TLF}               {4}
+\DeclareEncodingSubset{TS1}{PTSans-TLF}               {4}
+\DeclareEncodingSubset{TS1}{PTSansCaption-TLF}        {4}
+\DeclareEncodingSubset{TS1}{PTSansNarrow-TLF}         {4}
+\DeclareEncodingSubset{TS1}{PTSerif-TLF}              {4}
+\DeclareEncodingSubset{TS1}{PTSerifCaption-TLF}       {4}
+\DeclareEncodingSubset{TS1}{Raleway-TLF}              {4}
+\DeclareEncodingSubset{TS1}{Raleway-TOsF}             {4}
+\DeclareEncodingSubset{TS1}{Roboto-*}                 {4}
+\DeclareEncodingSubset{TS1}{RobotoMono-TLF}           {4}
+\DeclareEncodingSubset{TS1}{RobotoSlab-TLF}           {4}
+\DeclareEncodingSubset{TS1}{Rosario-*}                {4}
+\DeclareEncodingSubset{TS1}{SticksTooText-*}          {4}
+\DeclareEncodingSubset{TS1}{UniversalisADFStd-LF}     {4}
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{Almendra-OsF}             {5} 
+\DeclareEncodingSubset{TS1}{Baskervaldx-*}            {5}
+\DeclareEncodingSubset{TS1}{BaskervilleF-*}           {5}
+\DeclareEncodingSubset{TS1}{Bitter-TLF}               {5}
+\DeclareEncodingSubset{TS1}{Cinzel-LF}                {5}
+\DeclareEncodingSubset{TS1}{CinzelDecorative-LF}      {5}
+\DeclareEncodingSubset{TS1}{DejaVuSerif-TLF}          {5}
+\DeclareEncodingSubset{TS1}{DejaVuSerifCondensed-TLF} {5}
+\DeclareEncodingSubset{TS1}{GilliusADF-LF}            {5}
+\DeclareEncodingSubset{TS1}{GilliusADFCond-LF}        {5}
+\DeclareEncodingSubset{TS1}{GilliusADFNoTwo-LF}       {5}
+\DeclareEncodingSubset{TS1}{GilliusADFNoTwoCond-LF}   {5}
+\DeclareEncodingSubset{TS1}{LobsterTwo-LF}            {5}
+\DeclareEncodingSubset{TS1}{OldStandard-TLF}          {5}
+\DeclareEncodingSubset{TS1}{PlayfairDisplay-TLF}      {5}
+\DeclareEncodingSubset{TS1}{PlayfairDisplay-TOsF}     {5}
+\DeclareEncodingSubset{TS1}{TheanoDidot-TLF}          {5}
+\DeclareEncodingSubset{TS1}{TheanoDidot-TOsF}         {5}
+\DeclareEncodingSubset{TS1}{TheanoModern-TLF}         {5}
+\DeclareEncodingSubset{TS1}{TheanoModern-TOsF}        {5}
+\DeclareEncodingSubset{TS1}{TheanoOldStyle-TLF}       {5}
+\DeclareEncodingSubset{TS1}{TheanoOldStyle-TOsF}      {5}
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{Crimson-TLF}              {6}
+\DeclareEncodingSubset{TS1}{IBMPlexMono-TLF}          {6}
+\DeclareEncodingSubset{TS1}{IBMPlexSerif-TLF}         {6}
+\DeclareEncodingSubset{TS1}{LibertinusMono-TLF}       {6}
+\DeclareEncodingSubset{TS1}{LibertinusSerifDisplay-LF}{6}
+\DeclareEncodingSubset{TS1}{LinuxLibertineDisplayT-*} {6}
+\DeclareEncodingSubset{TS1}{LinuxLibertineMonoT-LF}   {6}
+\DeclareEncodingSubset{TS1}{LinuxLibertineMonoT-TLF}  {6}
+\DeclareEncodingSubset{TS1}{Overlock-LF}              {6}
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{CormorantGaramond-*}      {7}
+\DeclareEncodingSubset{TS1}{Heuristica-TLF}           {7}
+\DeclareEncodingSubset{TS1}{Heuristica-TOsF}          {7}
+\DeclareEncodingSubset{TS1}{IMFELLEnglish-TLF}        {7}
+\DeclareEncodingSubset{TS1}{LibreBaskerville-TLF}     {7}
+\DeclareEncodingSubset{TS1}{LibreCaslon-*}            {7}
+\DeclareEncodingSubset{TS1}{Marcellus-LF}             {7}
+\DeclareEncodingSubset{TS1}{NotoSans-*}               {7}
+\DeclareEncodingSubset{TS1}{NotoSansMono-TLF}         {7}
+\DeclareEncodingSubset{TS1}{NotoSansMono-TOsF}        {7}
+\DeclareEncodingSubset{TS1}{NotoSerif-*}              {7}
+\DeclareEncodingSubset{TS1}{Quattrocento-TLF}         {7}
+\DeclareEncodingSubset{TS1}{QuattrocentoSans-TLF}     {7}
+\DeclareEncodingSubset{TS1}{XCharter-TLF}             {7}
+\DeclareEncodingSubset{TS1}{XCharter-TOsF}            {7}
+\DeclareEncodingSubset{TS1}{erewhon-*}                {7} 
+\DeclareEncodingSubset{TS1}{ComicNeue-TLF}            {7} 
+\DeclareEncodingSubset{TS1}{ComicNeueAngular-TLF}     {7} 
+\DeclareEncodingSubset{TS1}{Forum-LF}                 {7}  % the superiors are missing 
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{Cochineal-*}              {8}
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{AlgolRevived-TLF}         {9}
+%    \end{macrocode}
+%
+%
+%
+%
+% \section{Legacy symbol support for lists and footnote symbols}
+%
+%  \begin{macro}{\UseLegacyTextSymbols}
+%    
+%    \begin{macrocode}
+\def\UseLegacyTextSymbols{%
+  \DeclareTextSymbolDefault{\textasteriskcentered}{OMS}%
+  \DeclareTextSymbolDefault{\textbardbl}{OMS}%
+  \DeclareTextSymbolDefault{\textbullet}{OMS}%
+  \DeclareTextSymbolDefault{\textdaggerdbl}{OMS}%
+  \DeclareTextSymbolDefault{\textdagger}{OMS}%
+  \DeclareTextSymbolDefault{\textparagraph}{OMS}%
+  \DeclareTextSymbolDefault{\textperiodcentered}{OMS}%
+  \DeclareTextSymbolDefault{\textsection}{OMS}%
+  \UndeclareTextCommand{\textsection}{T1}%
+  \expandafter\let\csname oldstylenums \expandafter\endcsname
+                  \csname legacyoldstylenums \endcsname
+}
+%    \end{macrocode}
+%  \end{macro}
+
+
+
+%  \begin{macro}{\textlegacyasteriskcentered}
+%  \begin{macro}{\textlegacybardbl}
+%  \begin{macro}{\textlegacybullet}
+%  \begin{macro}{\textlegacydaggerdbl}
+%  \begin{macro}{\textlegacydagger}
+%  \begin{macro}{\textlegacyparagraph}
+%  \begin{macro}{\textlegacyperiodcentered}
+%  \begin{macro}{\textlegacysection}
+%
+%    Here are new names for the legacy symbols that \LaTeX{} used to
+%    pick up from the \texttt{OMS} encoded fonts (and used dor itemize
+%    lists or footnote symbols.
+%    
+%    We go the roundabout way via separate OMS declarations so that
+%\begin{verbatim}
+%   \renewcommand\textbullet{\textlegacybullet}
+%\end{verbatim}
+% doesn't produce an endless loop.
+%    \begin{macrocode}
+\DeclareTextSymbol{\textlegacyasteriskcentered}{OMS}{3}   % "03
+\DeclareTextSymbol{\textlegacybardbl}{OMS}{107}           % "6B
+\DeclareTextSymbol{\textlegacybullet}{OMS}{15}            % "0F
+\DeclareTextSymbol{\textlegacydaggerdbl}{OMS}{122}        % "7A
+\DeclareTextSymbol{\textlegacydagger}{OMS}{121}           % "79
+\DeclareTextSymbol{\textlegacyparagraph}{OMS}{123}        % "7B
+\DeclareTextSymbol{\textlegacyperiodcentered}{OMS}{1}     % "01
+\DeclareTextSymbol{\textlegacysection}{OMS}{120}          % "78
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\DeclareTextSymbolDefault{\textlegacyasteriskcentered}{OMS}
+\DeclareTextSymbolDefault{\textlegacybardbl}{OMS}
+\DeclareTextSymbolDefault{\textlegacybullet}{OMS}
+\DeclareTextSymbolDefault{\textlegacydaggerdbl}{OMS}
+\DeclareTextSymbolDefault{\textlegacydagger}{OMS}
+\DeclareTextSymbolDefault{\textlegacyparagraph}{OMS}
+\DeclareTextSymbolDefault{\textlegacyperiodcentered}{OMS}
+\DeclareTextSymbolDefault{\textlegacysection}{OMS}
+%    \end{macrocode}
+%  \end{macro}
+%  \end{macro}
+%  \end{macro}
+%  \end{macro}
+%  \end{macro}
+%  \end{macro}
+%  \end{macro}
+%  \end{macro}
+
+%
+%
+% Supporting rollback \ldots
+%    \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>   {\DeclareEncodingSubset}{Text companion symbols}%
+%<latexrelease>
+%<latexrelease>\let\DeclareEncodingSubset\@undefined
+%<latexrelease>\let\CheckEncodingSubset\@undefined
+%<latexrelease>
+%<latexrelease>\DeclareTextSymbolDefault{\textdollar}{OT1}
+%<latexrelease>\DeclareTextSymbolDefault{\textsterling}{OT1}
+%<latexrelease>\DeclareTextCommand{\textdollar}{OT1}{\hmode@bgroup
+%<latexrelease>   \ifdim \fontdimen\@ne\font >\z@
+%<latexrelease>      \slshape
+%<latexrelease>   \else
+%<latexrelease>      \upshape
+%<latexrelease>   \fi
+%<latexrelease>   \char`\$\egroup}
+%<latexrelease>\DeclareTextCommand{\textsterling}{OT1}{\hmode@bgroup
+%<latexrelease>   \ifdim \fontdimen\@ne\font >\z@
+%<latexrelease>      \itshape
+%<latexrelease>   \else
+%<latexrelease>      \fontshape{ui}\selectfont
+%<latexrelease>   \fi
+%<latexrelease>   \char`\$\egroup}
+%<latexrelease>\DeclareTextCommand{\textperthousand}{T1}
+%<latexrelease>   {\%\char 24 }  
+%<latexrelease>
+%<latexrelease>\DeclareTextSymbolDefault{\textasteriskcentered}{OMS}
+%<latexrelease>\DeclareTextSymbolDefault{\textbullet}{OMS}
+%<latexrelease>\DeclareTextSymbolDefault{\textdaggerdbl}{OMS}
+%<latexrelease>\DeclareTextSymbolDefault{\textdagger}{OMS}
+%<latexrelease>\DeclareTextSymbolDefault{\textparagraph}{OMS}
+%<latexrelease>\DeclareTextSymbolDefault{\textperiodcentered}{OMS}
+%<latexrelease>\DeclareTextSymbolDefault{\textsection}{OMS}
+%<latexrelease>
+%<latexrelease>\DeclareTextSymbolDefault{\textbardbl}{OMS}
+%<latexrelease>\let\textbrokenbar\@undefined
+%<latexrelease>\let\textcelsius\@undefined
+%<latexrelease>\let\textcent\@undefined
+%<latexrelease>\DeclareTextCommandDefault{\textcopyright}{\textcircled{c}}
+%<latexrelease>\let\textdegree\@undefined
+%<latexrelease>\let\textdiv\@undefined
+%<latexrelease>\let\textlnot\@undefined
+%<latexrelease>\let\textonehalf\@undefined
+%<latexrelease>\let\textonequarter\@undefined
+%<latexrelease>\let\textonesuperior\@undefined
+%<latexrelease>\DeclareTextCommandDefault{\textordfeminine}{\textsuperscript{a}}
+%<latexrelease>\DeclareTextCommandDefault{\textordmasculine}{\textsuperscript{o}}
+%<latexrelease>\let\textpm\@undefined
+%<latexrelease>\let\textquotesingle\@undefined
+%<latexrelease>\let\textquotestraightbase\@undefined
+%<latexrelease>\let\textquotestraightdblbase\@undefined
+%<latexrelease>\DeclareTextCommandDefault{\textregistered}{\textcircled{%
+%<latexrelease>     \check@mathfonts\fontsize\sf@size\z@\math@fontsfalse\selectfont R}}
+%<latexrelease>\let\textthreequartersemdash\@undefined
+%<latexrelease>\let\textthreequarters\@undefined
+%<latexrelease>\let\textthreesuperior\@undefined
+%<latexrelease>\let\texttimes\@undefined
+%<latexrelease>\DeclareTextCommandDefault{\texttrademark}{\textsuperscript{TM}}
+%<latexrelease>\let\texttwelveudash\@undefined
+%<latexrelease>\let\texttwosuperior\@undefined
+%<latexrelease>\let\textyen\@undefined
+%<latexrelease>
+%<latexrelease>\let\textcapitalcompwordmark\@undefined
+%<latexrelease>\let\textascendercompwordmark\@undefined
+%<latexrelease>
+%<latexrelease>\DeclareTextAccentDefault{\textcircled}{OMS}
+%<latexrelease>\DeclareTextAccentDefault{\t}{OML}
+%<latexrelease>
+%<latexrelease>\let\capitalacute\@undefined
+%<latexrelease>\let\capitalbreve\@undefined
+%<latexrelease>\let\capitalcaron\@undefined
+%<latexrelease>\let\capitalcedilla\@undefined
+%<latexrelease>\let\capitalcircumflex\@undefined
+%<latexrelease>\let\capitaldieresis\@undefined
+%<latexrelease>\let\capitaldotaccent\@undefined
+%<latexrelease>\let\capitalgrave\@undefined
+%<latexrelease>\let\capitalhungarumlaut\@undefined
+%<latexrelease>\let\capitalmacron\@undefined
+%<latexrelease>\let\capitalnewtie\@undefined
+%<latexrelease>\let\capitalogonek\@undefined
+%<latexrelease>\let\capitalring\@undefined
+%<latexrelease>\let\capitaltie\@undefined
+%<latexrelease>\let\capitaltilde\@undefined
+%<latexrelease>\let\newtie\@undefined
+%<latexrelease>
+%<latexrelease>\let\textlbrackdbl\@undefined
+%<latexrelease>\let\textrbrackdbl\@undefined
+%<latexrelease>
+%<latexrelease>\let\texteightoldstyle\@undefined
+%<latexrelease>\let\textfiveoldstyle\@undefined
+%<latexrelease>\let\textfouroldstyle\@undefined
+%<latexrelease>\let\textnineoldstyle\@undefined
+%<latexrelease>\let\textoneoldstyle\@undefined
+%<latexrelease>\let\textsevenoldstyle\@undefined
+%<latexrelease>\let\textsixoldstyle\@undefined
+%<latexrelease>\let\textthreeoldstyle\@undefined
+%<latexrelease>\let\texttwooldstyle\@undefined
+%<latexrelease>\let\textzerooldstyle\@undefined
+%<latexrelease>
+%<latexrelease>\let\textacutedbl\@undefined
+%<latexrelease>\let\textasciiacute\@undefined
+%<latexrelease>\let\textasciibreve\@undefined
+%<latexrelease>\let\textasciicaron\@undefined
+%<latexrelease>\let\textasciidieresis\@undefined
+%<latexrelease>\let\textasciigrave\@undefined
+%<latexrelease>\let\textasciimacron\@undefined
+%<latexrelease>\let\textgravedbl\@undefined
+%<latexrelease>\let\texttildelow\@undefined
+%<latexrelease>
+%<latexrelease>\let\textbaht\@undefined
+%<latexrelease>\let\textbigcircle\@undefined
+%<latexrelease>\let\textborn\@undefined
+%<latexrelease>\let\textcentoldstyle\@undefined
+%<latexrelease>\let\textcircledP\@undefined
+%<latexrelease>\let\textcopyleft\@undefined
+%<latexrelease>\let\textdblhyphenchar\@undefined
+%<latexrelease>\let\textdblhyphen\@undefined
+%<latexrelease>\let\textdied\@undefined
+%<latexrelease>\let\textdiscount\@undefined
+%<latexrelease>\let\textdivorced\@undefined
+%<latexrelease>\let\textdollaroldstyle\@undefined
+%<latexrelease>\let\textguarani\@undefined
+%<latexrelease>\let\textleaf\@undefined
+%<latexrelease>\let\textlquill\@undefined
+%<latexrelease>\let\textmarried\@undefined
+%<latexrelease>\let\textmho\@undefined
+%<latexrelease>\let\textmusicalnote\@undefined
+%<latexrelease>\let\textnaira\@undefined
+%<latexrelease>\let\textopenbullet\@undefined
+%<latexrelease>\let\textpeso\@undefined
+%<latexrelease>\let\textpilcrow\@undefined
+%<latexrelease>\let\textrecipe\@undefined
+%<latexrelease>\let\textreferencemark\@undefined
+%<latexrelease>\let\textrquill\@undefined
+%<latexrelease>\let\textservicemark\@undefined
+%<latexrelease>\let\textsurd\@undefined
+%<latexrelease>
+%<latexrelease>\DeclareTextCommand{\textpertenthousand}{T1}
+%<latexrelease>                   {\%\char 24\char 24 }
+%<latexrelease>
+%<latexrelease>\let\textlangle\@undefined                   
+%<latexrelease>\let\textrangle\@undefined                   
+%<latexrelease>
+%<latexrelease>\let\textcolonmonetary\@undefined
+%<latexrelease>\let\textdong\@undefined
+%<latexrelease>\let\textdownarrow\@undefined
+%<latexrelease>\let\textleftarrow\@undefined
+%<latexrelease>\let\textlira\@undefined
+%<latexrelease>\let\textrightarrow\@undefined
+%<latexrelease>\let\textuparrow\@undefined
+%<latexrelease>\let\textwon\@undefined
+%<latexrelease>
+%<latexrelease>\let\textestimated\@undefined
+%<latexrelease>\let\textnumero\@undefined
+%<latexrelease>
+%<latexrelease>\let\textflorin\@undefined
+%<latexrelease>\let\textcurrency\@undefined
+%<latexrelease>
+%<latexrelease>\let\textfractionsolidus\@undefined
+%<latexrelease>\let\textohm\@undefined
+%<latexrelease>\let\textmu\@undefined
+%<latexrelease>\let\textminus\@undefined
+%<latexrelease>
+%<latexrelease>\let\textblank\@undefined
+%<latexrelease>\let\textinterrobangdown\@undefined
+%<latexrelease>\let\textinterrobang\@undefined
+%<latexrelease>
+%<latexrelease>\let\texteuro\@undefined
+%<latexrelease>
+%<latexrelease>\let\textcelsius\@undefined
+%<latexrelease>\let\textonesuperior\@undefined
+%<latexrelease>\let\textthreequartersemdash\@undefined
+%<latexrelease>\let\textthreesuperior\@undefined
+%<latexrelease>\let\texttwelveudash\@undefined
+%<latexrelease>\let\texttwosuperior\@undefined
+%<latexrelease>\let\textbardbl\@undefined
+%<latexrelease>
+%<latexrelease>\let\UseLegacyTextSymbols\@undefined
+%<latexrelease>\let\textlegacyasteriskcentered\@undefined
+%<latexrelease>\let\textlegacybardbl\@undefined
+%<latexrelease>\let\textlegacybullet\@undefined
+%<latexrelease>\let\textlegacydaggerdbl\@undefined
+%<latexrelease>\let\textlegacydagger\@undefined
+%<latexrelease>\let\textlegacyparagraph\@undefined
+%<latexrelease>\let\textlegacyperiodcentered\@undefined
+%<latexrelease>\let\textlegacysection\@undefined
+%<latexrelease>                          
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%</2ekernel>
+%    \end{macrocode}
+%
+%
+%
+%
+% \section{The \texttt{textcomp} package}
+%
+%    
+%    \begin{macrocode}
+%<*TS1sty>
+\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\providecommand\DeclareRelease[3]{}
+\providecommand\DeclareCurrentRelease[2]{}
+
+\DeclareRelease{}{2018-08-11}{textcomp-2018-08-11.sty}
+\DeclareCurrentRelease{}{2020-02-02}
+
+\ProvidesPackage{textcomp}
+ [2020/02/02 v2.0m Standard LaTeX package]
+%    \end{macrocode}
+%
+%    This is implemented by defining the default subset:
+%    \begin{macrocode}
+\DeclareOption{full}{\DeclareEncodingSubset{TS1}{?}{0}}
+\DeclareOption{almostfull}{\DeclareEncodingSubset{TS1}{?}{1}}
+\DeclareOption{euro}{\DeclareEncodingSubset{TS1}{?}{8}}
+\DeclareOption{safe}{\DeclareEncodingSubset{TS1}{?}{9}}
+%    \end{macrocode}
+%    The default is set up in the kernel is  ``safe'' these days for
+%    unknown fonts but LaTeX has definitions for most families so it
+%    seldom applies.
+%
+%    If a different default is used then one needs to check the
+%    results to ensure that there aren't ``missing glyphs''.
+%
+%    The next set of options define the warning level (default in the
+%    kernel is info only). If you load the package then the default
+%    changes to produce an error message if any substitution happens.
+%    \begin{macrocode}
+\def\tc@errorwarn{\PackageError{textcomp}}
+\DeclareOption{error}{\gdef\tc@errorwarn{\PackageError{textcomp}}}
+\DeclareOption{warn}{\gdef\tc@errorwarn#1#2{\PackageWarning{textcomp}{#1}}}
+\DeclareOption{quiet}{\gdef\tc@errorwarn#1#2{}}
+%    \end{macrocode}
+%
+%    The ``force'' option basically changes the sub-encoding  to that
+%    of the default (which, unless changes, is 9 these days), i.e., it
+%    no longer depends on the font in use. This is mainly there
+%    because it might have been used in older documents, but not
+%    somehting that is recommended.
+%    \begin{macrocode}
+\DeclareOption{force}{%
+    \def\CheckEncodingSubset#1#2#3#4#5{%
+      \ifnum #4>%
+           0\csname #2:?\endcsname
+           \relax
+      \expandafter\@firstoftwo
+     \else
+      \expandafter\@secondoftwo
+    \fi
+     {#1{#2}}{#3}%
+     #5}%
+}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\ExecuteOptions{}
+\ProcessOptions\relax
+%    \end{macrocode}
+%
+%    There is not much else to do nowadays, because everything is
+%    already set up in the \LaTeX{} kernel.
+%
+%    \begin{macrocode}
+\InputIfFileExists{textcomp.cfg}
+  {\PackageInfo{textcomp}{Local configuration file used}}{}
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+%</TS1sty>
+%    \end{macrocode}
+%
+%    
+%
+% \subsection{The old textcomp package code}
+%
+%    This section contains the old code for the textcomp package and
+%    its documentation. It is only used if we roll back prior to 2020.
+%    Thus all the rest is mainly for historians. Note that the old
+%    code categorised in the sub-encodings only into 6 classes not 10.
+%
+%    \begin{macrocode}
+%<*TS1oldsty>
+\ProvidesPackage{textcomp}
+   [2018/08/11 v2.0j Standard LaTeX package]
+%    \end{macrocode}
+%
+%    This one is for the |TS1| encoding which contains text symbols
+%    for use with the |T1|-encoded text fonts.  It therefore first
+%    inputs the file |TS1enc.def| and then sets (or resets) the
+%    defaults for the symbols it contains.  The result of this is that
+%    when one of these symbols is accessed and the current encoding
+%    does not provide it, the symbol will be supplied by a silent,
+%    local change to this encoding.
+%
+%    Since many PostScript fonts only implement a subset of |TS1| many
+%    commands only produce black blobs of ink. To resolve the
+%    resulting problems a number of options have been introduced and
+%    some code  has been developed to distinguish sub-encodings.
+%
+%    The sub-encodings have a numerical id and are defined as follows
+%    for \texttt{TS1}:
+% \begin{description}
+%
+% \item[\#5] those \texttt{TS1} symbols that are also in the ISO-Adobe
+%       character set; without \verb=textcurrency=, which is often
+%       misused for the Euro.  Older Type1 fonts from the non-\TeX{}
+%       world provide only this subset.
+%
+% \item[\#4] = \#5 + \verb=\texteuro=.  Most newer fonts provide this.
+%
+% \item[\#3] = \#4 + \verb=\textomega=.  Can also be described as
+%       $\texttt{TS1} \cap (\texttt{ISO-Adobe} \cup
+%       \texttt{MacRoman})$.  (Except for the missing "currency".)
+
+%
+% \item[\#2] = \#3 + \verb=\textestimated= + \verb=\textcurrency=.  Can
+%       also be described as $\texttt{TS1} \cap
+%       \texttt{Adobe-Western-2}$.  This may be relevant for OpenType
+%       fonts, which usually show the Adobe-Western-2 character set.
+%
+%    \item[\#1] = \texttt{TS1} without \verb=\textcircled= and \verb=\t=.
+%       These two glyphs are often not implemented and if their kernel
+%       defaults are changed commands like \verb=\copyright=
+%       unnecessarily fail.
+%
+%    \item[\#0] = full \texttt{TS1}
+% \end{description}
+%
+%    And here a summary to go in the transcript file:
+%    \begin{macrocode}
+\PackageInfo{textcomp}{Sub-encoding information:\MessageBreak
+    \space\space 5 = only ISO-Adobe without
+                              \string\textcurrency\MessageBreak
+    \space\space 4 = 5 + \string\texteuro\MessageBreak
+    \space\space 3 = 4 + \string\textohm\MessageBreak
+    \space\space 2 = 3 + \noexpand\textestimated+ 
+                                \string\textcurrency\MessageBreak
+    \space\space 1 = TS1 - \noexpand\textcircled-
+                                            \string\t\MessageBreak
+    \space\space 0 = TS1 (full)\MessageBreak
+    Font families with sub-encoding setting implement\MessageBreak
+    only a restricted character set as indicated.\MessageBreak
+    Family '?' is the default used for unknown fonts.\MessageBreak
+    See the documentation for details\@gobble}
+%    \end{macrocode}
+%
+% \begin{macro}{\DeclareEncodingSubset}
+%    An encoding subset to which a font family belongs is declared by
+%    the command |\DeclareEncodingSubset| that takes the major encoding as the
+%    first argument (e.g., |TS1|), the family name as the second
+%    argument (e.g., |cmr|), and the subset encoding id as a third,
+%    (e.g., |0| for |cmr|).
+%
+%    The default encoding subset to use when nothing is known about
+%    the current font family is named |?|.
+%    \begin{macrocode}
+\def\DeclareEncodingSubset#1#2#3{%
+   \@ifundefined{#1:#2}%
+     {\PackageInfo{textcomp}{Setting #2 sub-encoding to #1/#3}}%
+     {\PackageInfo{textcomp}{Changing #2 sub-encoding to #1/#3}}%
+   \@namedef{#1:#2}{#3}}
+\@onlypreamble\DeclareEncodingSubset
+%    \end{macrocode}
+% \end{macro}
+%
+%
+%  The options for the package are the following:
+%    \begin{description}
+%    \item[safe]
+%       for unknown font families enables only symbols that are also
+%       in the ISO-Adobe character set; without "currency", which is
+%       often misused for the Euro.  Older Type1 fonts from the
+%       non-TeX world provide only this subset.
+%
+%    \item[euro]
+%       enables the ``safe'' symbols plus the |\texteuro|
+%       command. Most newer fonts provide this.
+%
+%    \item[full] enables all |TS1| commands; useful only with fonts
+%       like EC or CM bright.
+%
+%    \item[almostfull]
+%       same as ``full'', except that |\textcircled|
+%       and |\t| are \emph{not} redefined from their defaults to avoid
+%       that commands like |\copyright| suddenly no longer work.
+%
+%    \item[force]
+%       ignore all subset encoding definitions stored in the package
+%       itself or in the configuration file and always use the default
+%       subset as specified by one of the other options (seldom useful,
+%       only dangerous).
+%    \end{description}
+%
+% \begin{macro}{\iftc@forced}
+%    Switch used to implement the \texttt{force} option
+%    \begin{macrocode}
+\newif\iftc@forced   \tc@forcedfalse
+%    \end{macrocode}
+% \end{macro}
+
+%    This is implemented by defining the default subset:
+%    \begin{macrocode}
+\DeclareOption{full}{\DeclareEncodingSubset{TS1}{?}{0}}
+\DeclareOption{almostfull}{\DeclareEncodingSubset{TS1}{?}{1}}
+\DeclareOption{euro}{\DeclareEncodingSubset{TS1}{?}{4}}
+\DeclareOption{safe}{\DeclareEncodingSubset{TS1}{?}{5}}
+%    \end{macrocode}
+%    The default is ``almostfull'' which means that old documents will
+%    work except that |\textcircled| and |\t| will use the kernel
+%    defaults (with the advantage that this also works if the current
+%    font (as often the case) doesn't implement these glyphs.
+%
+%    The ``force'' option simply sets the switch to true.
+%    \begin{macrocode}
+\DeclareOption{force}{\tc@forcedtrue}
+%    \end{macrocode}
+%
+%    The suggestions to user is to use the ``safe'' option always
+%    unless that balks in which case they could switch to
+%    ``almostfull'' but then better check their output manually.
+%
+%    \begin{macrocode}
+\def\tc@errorwarn{\PackageError}
+\DeclareOption{warn}{\gdef\tc@errorwarn#1#2#3{\PackageWarning{#1}{#2}}}
+\DeclareOption{quiet}{\gdef\tc@errorwarn#1#2#3{}}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\ExecuteOptions{almostfull}
+\ProcessOptions\relax
+%    \end{macrocode}
+%
+%
+%
+%
+% \begin{macro}{\CheckEncodingSubset}
+%    The command |\CheckEncodingSubset| will check if the current font
+%    family has the right encoding subset to typeset a certain
+%    command. It takes five arguments as follows:
+%    first argument is either |\UseTextSymbol|, |\UseTextAccent|
+%    depending on whether or not the symbol is a text symbol or a text
+%    accent.
+
+%    The second argument is the encoding from which this symbol should
+%    be fetched.
+%
+%    The third argument is either a fake accessor command or an error
+%    message. the code in that argument (if ever executed) receives
+%    two arguments: |#2| and |#5| of |\CheckEncodingSubset|.
+%
+%    Argument four is the subset encoding id to test against: if this
+%    value is higher than the subset id of the current font family
+%    then we typeset the symbol, i.e., execute |#1{#2}#5| otherwise
+%    it runs |#3#5|, e.g., to produce an error message or fake the
+%    glyph somehow.
+%
+%    Argument five is the symbol or accent command that is being
+%    checked.
+%
+%    For usage examples see definitions below.
+%    \begin{macrocode}
+\iftc@forced
+%    \end{macrocode}
+%    If the ``force'' option was given we always use the default for
+%    testing against.
+%    \begin{macrocode}
+\def\CheckEncodingSubset#1#2#3#4#5{%
+    \ifnum #4>%
+        0\csname #2:?\endcsname
+        \relax
+   \expandafter\@firstoftwo
+  \else
+   \expandafter\@secondoftwo
+ \fi
+  {#1{#2}}{#3}%
+  #5%
+}
+%    \end{macrocode}
+%
+%    In normal circumstances the test is a bit more complicated: first
+%    check if there exists a macro
+%    |\|\meta{arg2}|:|\meta{current-family} and if so use that value
+%    to test against, otherwise use the default to test against.
+%    \begin{macrocode}
+\else
+\def\CheckEncodingSubset#1#2#3#4#5{%
+    \ifnum #4>%
+      \expandafter\ifx\csname #2:\f@family\endcsname\relax
+        0\csname #2:?\endcsname
+      \else
+        \csname #2:\f@family\endcsname
+      \fi
+   \relax
+   \expandafter\@firstoftwo
+  \else
+   \expandafter\@secondoftwo
+ \fi
+  {#1{#2}}{#3}%
+  #5%
+}
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tc@subst}
+%    \begin{macrocode}
+\def\tc@subst#1{%
+   \tc@errorwarn{textcomp}%
+    {Symbol \string#1 not provided by\MessageBreak
+     font family \f@family\space
+     in TS1 encoding.\MessageBreak Default family used instead}\@eha
+  \bgroup\fontfamily\textcompsubstdefault\selectfont#1\egroup
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tc@error}
+%    |\tc@error| is going to be used in arg |#3| of
+%    |\CheckEncodingSubset| when a symbol is not available in a
+%    certain font family. It gets pass the encoding it normally lives
+%    in (arg one) and the name of the symbol or accent that has a
+%    problem.
+%
+%    \begin{macrocode}
+% error commands take argument:
+% #1 symbol to be used
+\def\tc@error#1{%
+   \PackageError{textcomp}%  % should be latex error if general
+    {Accent \string#1 not provided by\MessageBreak
+     font family \f@family\space
+     in TS1 encoding}\@eha
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\tc@fake@euro}
+%    |\tc@fake@euro|  is an example of a ``fake'' definition to use in  arg |#3| of
+%    |\CheckEncodingSubset| when a symbol is not available in a
+%    certain font family. Here we produce an Euro symbol by combining
+%    a ``C'' with a ``=''.
+%    \begin{macrocode}
+\def\tc@fake@euro#1{%
+   \leavevmode
+   \PackageInfo{textcomp}{Faking \noexpand#1for font family
+                          \f@family\MessageBreak in TS1 encoding}%
+   \valign{##\cr
+      \vfil\hbox to 0.07em{\dimen@\f@size\p@
+                           \math@fontsfalse
+                           \fontsize{.7\dimen@}\z@\selectfont=\hss}%
+      \vfil\cr%
+      \hbox{C}\crcr
+   }%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tc@check@symbol}
+% \begin{macro}{\tc@check@accent}
+%    These are two abbreviations that we use below to check symbols
+%    and accents in TS1. Only there to save some space, e.g., we can
+%    then write
+%\begin{verbatim}
+%\DeclareTextCommandDefault{\textcurrency}{\tc@check@symbol3\textcurrency}
+%\end{verbatim}
+%    to ensure that |\textcurrency| is only typeset if the current
+%    font has a \texttt{TS1} subset id of less than 3. Otherwise
+%    |\tc@error| is called telling the user that for this font family
+%    |\textcurreny| is not available.
+%    \begin{macrocode}
+\def\tc@check@symbol{\CheckEncodingSubset\UseTextSymbol{TS1}\tc@subst}
+\def\tc@check@accent{\CheckEncodingSubset\UseTextAccent{TS1}\tc@error}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%    We start with the commands that are ``safe'' and which can be
+%    unconditionally set up, first the accents\ldots
+%    \begin{macrocode}
+\DeclareTextAccentDefault{\capitalcedilla}{TS1}
+\DeclareTextAccentDefault{\capitalogonek}{TS1}
+\DeclareTextAccentDefault{\capitalgrave}{TS1}
+\DeclareTextAccentDefault{\capitalacute}{TS1}
+\DeclareTextAccentDefault{\capitalcircumflex}{TS1}
+\DeclareTextAccentDefault{\capitaltilde}{TS1}
+\DeclareTextAccentDefault{\capitaldieresis}{TS1}
+\DeclareTextAccentDefault{\capitalhungarumlaut}{TS1}
+\DeclareTextAccentDefault{\capitalring}{TS1}
+\DeclareTextAccentDefault{\capitalcaron}{TS1}
+\DeclareTextAccentDefault{\capitalbreve}{TS1}
+\DeclareTextAccentDefault{\capitalmacron}{TS1}
+\DeclareTextAccentDefault{\capitaldotaccent}{TS1}
+%    \end{macrocode}
+%    \ldots and then the other glyphs.
+% \changes{v1.9p}{1998/06/12}{Renamed \cs{textmacron} pr/2840}
+%    \begin{macrocode}
+\DeclareTextSymbolDefault{\textcapitalcompwordmark}{TS1}
+\DeclareTextSymbolDefault{\textascendercompwordmark}{TS1}
+\DeclareTextSymbolDefault{\textquotestraightbase}{TS1}
+\DeclareTextSymbolDefault{\textquotestraightdblbase}{TS1}
+\DeclareTextSymbolDefault{\texttwelveudash}{TS1}
+\DeclareTextSymbolDefault{\textthreequartersemdash}{TS1}
+\DeclareTextSymbolDefault{\textdollar}{TS1}
+\DeclareTextSymbolDefault{\textquotesingle}{TS1}
+\DeclareTextSymbolDefault{\textasteriskcentered}{TS1}
+\DeclareTextSymbolDefault{\textfractionsolidus}{TS1}
+\DeclareTextSymbolDefault{\textminus}{TS1}
+\DeclareTextSymbolDefault{\textlbrackdbl}{TS1}
+\DeclareTextSymbolDefault{\textrbrackdbl}{TS1}
+\DeclareTextSymbolDefault{\textasciigrave}{TS1}
+\DeclareTextSymbolDefault{\texttildelow}{TS1}
+\DeclareTextSymbolDefault{\textasciibreve}{TS1}
+\DeclareTextSymbolDefault{\textasciicaron}{TS1}
+\DeclareTextSymbolDefault{\textgravedbl}{TS1}
+\DeclareTextSymbolDefault{\textacutedbl}{TS1}
+\DeclareTextSymbolDefault{\textdagger}{TS1}
+\DeclareTextSymbolDefault{\textdaggerdbl}{TS1}
+\DeclareTextSymbolDefault{\textbardbl}{TS1}
+\DeclareTextSymbolDefault{\textperthousand}{TS1}
+\DeclareTextSymbolDefault{\textbullet}{TS1}
+\DeclareTextSymbolDefault{\textcelsius}{TS1}
+\DeclareTextSymbolDefault{\textflorin}{TS1}
+\DeclareTextSymbolDefault{\texttrademark}{TS1}
+\DeclareTextSymbolDefault{\textcent}{TS1}
+\DeclareTextSymbolDefault{\textsterling}{TS1}
+\DeclareTextSymbolDefault{\textyen}{TS1}
+\DeclareTextSymbolDefault{\textbrokenbar}{TS1}
+\DeclareTextSymbolDefault{\textsection}{TS1}
+\DeclareTextSymbolDefault{\textasciidieresis}{TS1}
+\DeclareTextSymbolDefault{\textcopyright}{TS1}
+\DeclareTextSymbolDefault{\textordfeminine}{TS1}
+\DeclareTextSymbolDefault{\textlnot}{TS1}
+\DeclareTextSymbolDefault{\textregistered}{TS1}
+\DeclareTextSymbolDefault{\textasciimacron}{TS1}
+\DeclareTextSymbolDefault{\textdegree}{TS1}
+\DeclareTextSymbolDefault{\textpm}{TS1}
+\DeclareTextSymbolDefault{\texttwosuperior}{TS1}
+\DeclareTextSymbolDefault{\textthreesuperior}{TS1}
+\DeclareTextSymbolDefault{\textasciiacute}{TS1}
+\DeclareTextSymbolDefault{\textmu}{TS1}
+\DeclareTextSymbolDefault{\textparagraph}{TS1}
+\DeclareTextSymbolDefault{\textperiodcentered}{TS1}
+\DeclareTextSymbolDefault{\textonesuperior}{TS1}
+\DeclareTextSymbolDefault{\textordmasculine}{TS1}
+\DeclareTextSymbolDefault{\textonequarter}{TS1}
+\DeclareTextSymbolDefault{\textonehalf}{TS1}
+\DeclareTextSymbolDefault{\textthreequarters}{TS1}
+\DeclareTextSymbolDefault{\texttimes}{TS1}
+\DeclareTextSymbolDefault{\textdiv}{TS1}
+%    \end{macrocode}
+%
+%    The |\texteuro| is only available for subsets with id 4 or
+%    less. Otherwise we fake the glyph using |\tc@fake@euro|
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\texteuro}
+   {\CheckEncodingSubset\UseTextSymbol{TS1}\tc@fake@euro5\texteuro}
+%    \end{macrocode}
+%
+%    The |\textohm| is only available for subsets with id 3 or
+%    less. Otherwise we produce an error.
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\textohm}{\tc@check@symbol4\textohm}
+%    \end{macrocode}
+%    The |\textestimated| and |\textcurrency| are only provided for
+%    fonts with subset encoding with id 2 or less.
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\textestimated}%
+    {\tc@check@symbol3\textestimated}
+\DeclareTextCommandDefault{\textcurrency}%
+    {\tc@check@symbol3\textcurrency}
+%    \end{macrocode}
+%    Nearly all of the remaining glyphs are provided only with fonts
+%    with id 1 or 0, i.e., are essentially complete.
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\capitaltie}%
+    {\tc@check@accent2\capitaltie}
+\DeclareTextCommandDefault{\newtie}%
+    {\tc@check@accent2\newtie}
+\DeclareTextCommandDefault{\capitalnewtie}%
+    {\tc@check@accent2\capitalnewtie}
+\DeclareTextCommandDefault{\textleftarrow}%
+    {\tc@check@symbol2\textleftarrow}
+\DeclareTextCommandDefault{\textrightarrow}%
+    {\tc@check@symbol2\textrightarrow}
+\DeclareTextCommandDefault{\textblank}%
+    {\tc@check@symbol2\textblank}
+\DeclareTextCommandDefault{\textdblhyphen}%
+    {\tc@check@symbol2\textdblhyphen}
+\DeclareTextCommandDefault{\textzerooldstyle}%
+    {\tc@check@symbol2\textzerooldstyle}
+\DeclareTextCommandDefault{\textoneoldstyle}%
+    {\tc@check@symbol2\textoneoldstyle}
+\DeclareTextCommandDefault{\texttwooldstyle}%
+    {\tc@check@symbol2\texttwooldstyle}
+\DeclareTextCommandDefault{\textthreeoldstyle}%
+    {\tc@check@symbol2\textthreeoldstyle}
+\DeclareTextCommandDefault{\textfouroldstyle}%
+    {\tc@check@symbol2\textfouroldstyle}
+\DeclareTextCommandDefault{\textfiveoldstyle}%
+    {\tc@check@symbol2\textfiveoldstyle}
+\DeclareTextCommandDefault{\textsixoldstyle}%
+    {\tc@check@symbol2\textsixoldstyle}
+\DeclareTextCommandDefault{\textsevenoldstyle}%
+    {\tc@check@symbol2\textsevenoldstyle}
+\DeclareTextCommandDefault{\texteightoldstyle}%
+    {\tc@check@symbol2\texteightoldstyle}
+\DeclareTextCommandDefault{\textnineoldstyle}%
+    {\tc@check@symbol2\textnineoldstyle}
+\DeclareTextCommandDefault{\textlangle}%
+    {\tc@check@symbol2\textlangle}
+\DeclareTextCommandDefault{\textrangle}%
+    {\tc@check@symbol2\textrangle}
+\DeclareTextCommandDefault{\textmho}%
+    {\tc@check@symbol2\textmho}
+\DeclareTextCommandDefault{\textbigcircle}%
+    {\tc@check@symbol2\textbigcircle}
+\DeclareTextCommandDefault{\textuparrow}%
+    {\tc@check@symbol2\textuparrow}
+\DeclareTextCommandDefault{\textdownarrow}%
+    {\tc@check@symbol2\textdownarrow}
+\DeclareTextCommandDefault{\textborn}%
+    {\tc@check@symbol2\textborn}
+\DeclareTextCommandDefault{\textdivorced}%
+    {\tc@check@symbol2\textdivorced}
+\DeclareTextCommandDefault{\textdied}%
+    {\tc@check@symbol2\textdied}
+\DeclareTextCommandDefault{\textleaf}%
+    {\tc@check@symbol2\textleaf}
+\DeclareTextCommandDefault{\textmarried}%
+    {\tc@check@symbol2\textmarried}
+\DeclareTextCommandDefault{\textmusicalnote}%
+    {\tc@check@symbol2\textmusicalnote}
+\DeclareTextCommandDefault{\textdblhyphenchar}%
+    {\tc@check@symbol2\textdblhyphenchar}
+\DeclareTextCommandDefault{\textdollaroldstyle}%
+    {\tc@check@symbol2\textdollaroldstyle}
+\DeclareTextCommandDefault{\textcentoldstyle}%
+    {\tc@check@symbol2\textcentoldstyle}
+\DeclareTextCommandDefault{\textcolonmonetary}%
+    {\tc@check@symbol2\textcolonmonetary}
+\DeclareTextCommandDefault{\textwon}%
+    {\tc@check@symbol2\textwon}
+\DeclareTextCommandDefault{\textnaira}%
+    {\tc@check@symbol2\textnaira}
+\DeclareTextCommandDefault{\textguarani}%
+    {\tc@check@symbol2\textguarani}
+\DeclareTextCommandDefault{\textpeso}%
+    {\tc@check@symbol2\textpeso}
+\DeclareTextCommandDefault{\textlira}%
+    {\tc@check@symbol2\textlira}
+\DeclareTextCommandDefault{\textrecipe}%
+    {\tc@check@symbol2\textrecipe}
+\DeclareTextCommandDefault{\textinterrobang}%
+    {\tc@check@symbol2\textinterrobang}
+\DeclareTextCommandDefault{\textinterrobangdown}%
+    {\tc@check@symbol2\textinterrobangdown}
+\DeclareTextCommandDefault{\textdong}%
+    {\tc@check@symbol2\textdong}
+\DeclareTextCommandDefault{\textpertenthousand}%
+    {\tc@check@symbol2\textpertenthousand}
+\DeclareTextCommandDefault{\textpilcrow}%
+    {\tc@check@symbol2\textpilcrow}
+\DeclareTextCommandDefault{\textbaht}%
+    {\tc@check@symbol2\textbaht}
+\DeclareTextCommandDefault{\textnumero}%
+    {\tc@check@symbol2\textnumero}
+\DeclareTextCommandDefault{\textdiscount}%
+    {\tc@check@symbol2\textdiscount}
+\DeclareTextCommandDefault{\textopenbullet}%
+    {\tc@check@symbol2\textopenbullet}
+\DeclareTextCommandDefault{\textservicemark}%
+    {\tc@check@symbol2\textservicemark}
+\DeclareTextCommandDefault{\textlquill}%
+    {\tc@check@symbol2\textlquill}
+\DeclareTextCommandDefault{\textrquill}%
+    {\tc@check@symbol2\textrquill}
+\DeclareTextCommandDefault{\textcopyleft}%
+    {\tc@check@symbol2\textcopyleft}
+\DeclareTextCommandDefault{\textcircledP}%
+    {\tc@check@symbol2\textcircledP}
+\DeclareTextCommandDefault{\textreferencemark}%
+    {\tc@check@symbol2\textreferencemark}
+\DeclareTextCommandDefault{\textsurd}%
+    {\tc@check@symbol2\textsurd}
+%    \end{macrocode}
+%    The |\textcircled| and |\t| are handled specially, unless the
+%    current font has a subset id of 0 (i.e. full \texttt{TS1}) we
+%    pick the symbols up from the the math font encodings, i.e., the
+%    third argument to |\CheckEncodingSubset| uses |\UseTextAccent| to
+%    get them from there.
+%    \begin{macrocode}
+\DeclareTextCommandDefault{\textcircled}
+  {\CheckEncodingSubset\UseTextAccent{TS1}%
+    {\UseTextAccent{OMS}}1\textcircled}
+\DeclareTextCommandDefault{\t}
+  {\CheckEncodingSubset\UseTextAccent{TS1}%
+    {\UseTextAccent{OML}}1\t}
+%    \end{macrocode}
+
+
+%
+%    Finally input the encoding-specific definitions for
+%    \texttt{TS1} thus making the top-level definitions
+%    optimised for this encoding (and not for the default
+%    encoding).
+% \changes{v1.9o}{1998/03/20}{Load decls after defaults for speed.}
+%    \begin{macrocode}
+\input{ts1enc.def}
+%    \end{macrocode}
+%    Now having the new glyphs available we also want to make sure
+%    that they are used. For most cases this will automatically happen
+%    but for some glyphs there are inferior definitions already known
+%    to \LaTeX{} which will prevent the usage of the \texttt{TS1}
+%    versions. So we better
+%    get rid of them:
+% \changes{v1.9o}{1998/03/20}{Added various \cs{UndeclareTextCommand}
+%    declarations for pr/2783}
+%    \begin{macrocode}
+\UndeclareTextCommand{\textsterling}{OT1}
+\UndeclareTextCommand{\textdollar}  {OT1}
+%    \end{macrocode}
+%    Similar declarations should probably be made for other encodings
+%    like \texttt{OT4} if they are in use.
+%    \begin{macrocode}
+%\UndeclareTextCommand{\textsterling}{OT4}
+%\UndeclareTextCommand{\textdollar}  {OT4}
+%    \end{macrocode}
+%    From the \texttt{T1} encoding there are two candidates for removal:
+%    \textperthousand{} and \textpertenthousand{} since these are both
+%    constructed from \% followed by a tiny
+%    `{\fontencoding{T1}\selectfont \char 24}'
+%    rather than being a single glyph. The problem with this
+%    approach is that in PostScript fonts this small zero is usually not
+%    available resulting in \%\rule{3pt}{3pt} rather than
+%    \textperthousand{} while the real glyph (at least for
+%    |\textperthousand|) is available in the PostScript version of
+%    \texttt{TS1}.  So for the moment we compromise by removing the
+%    \texttt{T1} declaration for |\textperthousand| but keeping the one
+%    for |\textpertenthousand|. This will have the effect that with
+%    Computer Modern fonts everything will come out (although
+%    \textperthousand{} and \textpertenthousand{} are not taken from the
+%    same physical font) and with PostScript fonts \textperthousand{}
+%    will come out correctly while \textpertenthousand{} will most
+%    likely look like \%\rule{6pt}{3pt} --- which is probably an
+%    improvement over just getting a single `\rule{3pt}{3pt}' to
+%    indicate a completely missing glyph, which would happen if we
+%    also `undeclared' |\textpertenthousand|.
+%    \begin{macrocode}
+\UndeclareTextCommand{\textperthousand}{T1}
+%\UndeclareTextCommand{\textpertenthousand}{T1}
+%    \end{macrocode}
+%
+%
+%  \subsubsection{Supporting oldstyle digits}
+%
+%    \begin{macrocode}
+\DeclareRobustCommand\oldstylenums[1]{%
+ \begingroup
+  \ifmmode
+   \mathgroup\symletters #1%
+  \else
+   \CheckEncodingSubset\@use@text@encoding{TS1}%
+       {\PackageWarning{textcomp}%
+          {Oldstyle digits unavailable for
+           family \f@family.\MessageBreak
+           Lining digits used instead}}%
+       \tw@{#1}%
+   \fi
+ \endgroup
+}
+%    \end{macrocode}
+%
+%  \subsubsection{Subset encoding defaults}
+%
+%    For many font families commonly used in the \TeX{} world we
+%    provide the subset encoding data here. Users can add additional
+%    font families in the file \texttt{textcomp.cfg} if they own other
+%    fonts.
+%
+%    However, if the option ``forced'' was given then all subset
+%    encoding specifications are ignored, so there is no point in
+%    setting any of them up:
+%    \begin{macrocode}
+\iftc@forced \else
+%    \end{macrocode}
+%
+%    Computer modern based fonts (e.g., CM, CM-Bright, Concrete):
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{cmr}     {0}
+\DeclareEncodingSubset{TS1}{cmss}    {0}
+\DeclareEncodingSubset{TS1}{cmtt}    {0}
+\DeclareEncodingSubset{TS1}{cmvtt}   {0}
+\DeclareEncodingSubset{TS1}{cmbr}    {0}
+\DeclareEncodingSubset{TS1}{cmtl}    {0}
+\DeclareEncodingSubset{TS1}{ccr}     {0}
+%    \end{macrocode}
+%
+%    PSNFSS fonts:
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{ptm}     {4}
+\DeclareEncodingSubset{TS1}{pcr}     {4}
+\DeclareEncodingSubset{TS1}{phv}     {4}
+\DeclareEncodingSubset{TS1}{ppl}     {3}
+\DeclareEncodingSubset{TS1}{pag}     {4}
+\DeclareEncodingSubset{TS1}{pbk}     {4}
+\DeclareEncodingSubset{TS1}{pnc}     {4}
+\DeclareEncodingSubset{TS1}{pzc}     {4}
+\DeclareEncodingSubset{TS1}{bch}     {4}
+\DeclareEncodingSubset{TS1}{put}     {5}
+%    \end{macrocode}
+%
+%    Other CTAN fonts (probably not complete):
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{uag}     {5}
+\DeclareEncodingSubset{TS1}{ugq}     {5}
+\DeclareEncodingSubset{TS1}{ul8}     {4}
+\DeclareEncodingSubset{TS1}{ul9}     {4}  % (LuxiSans, one day)
+\DeclareEncodingSubset{TS1}{augie}   {5}
+\DeclareEncodingSubset{TS1}{dayrom}  {3}
+\DeclareEncodingSubset{TS1}{dayroms} {3}
+\DeclareEncodingSubset{TS1}{pxr}     {0}
+\DeclareEncodingSubset{TS1}{pxss}    {0}
+\DeclareEncodingSubset{TS1}{pxtt}    {0}
+\DeclareEncodingSubset{TS1}{txr}     {0}
+\DeclareEncodingSubset{TS1}{txss}    {0}
+\DeclareEncodingSubset{TS1}{txtt}    {0}
+%    \end{macrocode}
+%
+%    Latin Modern and TeX Gyre:
+% \changes{v1.99k}{2009/10/28}{Added Latin Modern and TeX Gyre subsets}
+% \changes{v1.99l}{2009/11/04}{Added more Latin Modern and TeX Gyre subsets}
+% \changes{v1.99m}{2015/02/16}{Added lmtt (Heiko Oberdiek) latex/4415}
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{lmr}     {0}
+\DeclareEncodingSubset{TS1}{lmdh}    {0}
+\DeclareEncodingSubset{TS1}{lmss}    {0}
+\DeclareEncodingSubset{TS1}{lmssq}   {0}
+\DeclareEncodingSubset{TS1}{lmvtt}   {0}
+\DeclareEncodingSubset{TS1}{lmtt}    {0}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{qhv}     {0}
+\DeclareEncodingSubset{TS1}{qag}     {0}
+\DeclareEncodingSubset{TS1}{qbk}     {0}
+\DeclareEncodingSubset{TS1}{qcr}     {0}
+\DeclareEncodingSubset{TS1}{qcs}     {0}
+\DeclareEncodingSubset{TS1}{qpl}     {0}
+\DeclareEncodingSubset{TS1}{qtm}     {0}
+\DeclareEncodingSubset{TS1}{qzc}     {0}
+\DeclareEncodingSubset{TS1}{qhvc}    {0}
+%    \end{macrocode}
+%
+%    Fourier-GUTenberg:
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{futs}    {4}
+\DeclareEncodingSubset{TS1}{futx}    {4}
+\DeclareEncodingSubset{TS1}{futj}    {4}
+%    \end{macrocode}
+%
+%  Y\&Y's Lucida Bright
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{hlh}     {3}
+\DeclareEncodingSubset{TS1}{hls}     {3}
+\DeclareEncodingSubset{TS1}{hlst}    {3}
+%    \end{macrocode}
+%    The remaining settings for Lucida are conservative: the following
+%    fonts contain the |\textohm| character but not the |\texteuro|,
+%    i.e., belong to neither subset~4 nor subset~3. If you want to
+%    use the |\textohm| with these fonts copy these definition to
+%    \texttt{textcomp.cfg} and change the subset to~3. However in that
+%    case make sure that you do not use the |\texteuro|.
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{hlct}    {5}
+\DeclareEncodingSubset{TS1}{hlx}     {5}
+\DeclareEncodingSubset{TS1}{hlce}    {5}
+\DeclareEncodingSubset{TS1}{hlcn}    {5}
+\DeclareEncodingSubset{TS1}{hlcw}    {5}
+\DeclareEncodingSubset{TS1}{hlcf}    {5}
+%    \end{macrocode}
+%
+%    Other commercial families\ldots
+%    \begin{macrocode}
+\DeclareEncodingSubset{TS1}{pplx}    {3}
+\DeclareEncodingSubset{TS1}{pplj}    {3}
+\DeclareEncodingSubset{TS1}{ptmx}    {4}
+\DeclareEncodingSubset{TS1}{ptmj}    {4}
+%    \end{macrocode}
+%
+%    If the file \texttt{textcomp.cfg} exists it will be loaded at
+%    this point. This allows to define further subset encodings for
+%    font families not covered by default.
+%
+%    \begin{macrocode}
+\InputIfFileExists{textcomp.cfg}
+  {\PackageInfo{textcomp}{Local configuration file used}}{}
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\fi
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%</TS1oldsty>
+%    \end{macrocode}
+
+
+% \Finale
+%
+
+
+
+
+\endinput
+
+
+
+
+
-- 
cgit v1.2.3

