summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/fonttable
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2007-11-23 20:32:28 +0000
committerNorbert Preining <preining@logic.at>2007-11-23 20:32:28 +0000
commit2a880d217a7d88f43b934deb51e531751dc6335f (patch)
treedc4dca62361afe34bbfe39f42aa1c86beccefae6 /Master/texmf-dist/source/latex/fonttable
parent6416899c64e51b10d0c1ab30abe054491d2ee876 (diff)
new package fonttable
git-svn-id: svn://tug.org/texlive/trunk@5575 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/fonttable')
-rw-r--r--Master/texmf-dist/source/latex/fonttable/fonttable.dtx720
-rw-r--r--Master/texmf-dist/source/latex/fonttable/fonttable.ins72
2 files changed, 792 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/fonttable/fonttable.dtx b/Master/texmf-dist/source/latex/fonttable/fonttable.dtx
new file mode 100644
index 00000000000..4336a9dfba9
--- /dev/null
+++ b/Master/texmf-dist/source/latex/fonttable/fonttable.dtx
@@ -0,0 +1,720 @@
+% \iffalse meta-comment
+%
+% fonttable.dtx
+%
+% Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net
+% Copyright 2005 Peter R. Wilson
+%
+% This work may be distributed and/or modified under the
+% conditions of the Latex Project Public License, either
+% version 1.3 of this license or (at your option) any
+% later version.
+% The latest version of the license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2003/06/01 or later.
+%
+% This work has the LPPL maintenance status "author-maintained".
+%
+% This work consists of the files listed in the README file.
+%
+%
+%<*driver>
+\documentclass[twoside]{ltxdoc}
+\usepackage{url}
+\usepackage[draft=false,
+ plainpages=false,
+ pdfpagelabels,
+ bookmarksnumbered,
+ hyperindex=false
+ ]{hyperref}
+\providecommand{\phantomsection}{}
+%%\OnlyDescription %% comment this out for the full glory
+\EnableCrossrefs
+\CodelineIndex
+\setcounter{StandardModuleDepth}{1}
+\makeatletter
+ \@mparswitchfalse
+\makeatother
+\renewcommand{\MakeUppercase}[1]{#1}
+\pagestyle{headings}
+\newenvironment{addtomargins}[1]{%
+ \begin{list}{}{%
+ \topsep 0pt%
+ \addtolength{\leftmargin}{#1}%
+ \addtolength{\rightmargin}{#1}%
+ \listparindent \parindent
+ \itemindent \parindent
+ \parsep \parskip}%
+ \item[]}{\end{list}}
+\begin{document}
+ \raggedbottom
+ \DocInput{fonttable.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+% \CheckSum{580}
+%
+% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath}
+% \DoNotIndex{\@centercr,\@cite}
+% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
+% \DoNotIndex{\@input,\@ixpt,\@m}
+% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint}
+% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
+% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
+% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
+% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
+% \DoNotIndex{\advance,\Alph,\alph}
+% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
+% \DoNotIndex{\bullet}
+% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
+% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
+% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist}
+% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
+% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
+% \DoNotIndex{\fbox}
+% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
+% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
+% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi}
+% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi}
+% \DoNotIndex{\input}
+% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark}
+% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
+% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
+% \DoNotIndex{\NeedsTeXFormat,\newdimen}
+% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number}
+% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@}
+% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip}
+% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
+% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
+% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font}
+% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman}
+% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength}
+% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
+% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase}
+% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt}
+% \DoNotIndex{\viipt,\vipt,\vskip,\vspace}
+% \DoNotIndex{\wd,\xiipt,\year,\z@}
+%
+% \changes{v1.0}{2005/11/27}{First public release}
+% \changes{v1.0a}{2005/12/06}{Minor bug fix}
+%
+% \def\fileversion{v1.0} \def\filedate{2005/11/27}
+% \def\fileversion{v1.0a} \def\filedate{2005/12/06}
+% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package
+% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option
+% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file
+% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter
+% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle
+% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment
+% \newcommand*{\AD}{\textsc{ad}}
+% \newcommand*{\thisfont}{OandS}
+%
+% \title{The \Lpack{fonttable} package\thanks{This
+% file has version number \fileversion, last revised
+% \filedate.}}
+%
+% \author{%
+% Peter Wilson\thanks{\texttt{herries dot press at earthlink dot net}}\\
+% Herries Press
+% }
+% \date{\filedate}
+% \maketitle
+% \begin{abstract}
+% The package lets you typeset the characters in a font in tabular and/or
+% running text forms.
+% \end{abstract}
+% \tableofcontents
+%
+% \section{Introduction}
+%
+% The \Lpack{fonttable} package lets you typeset a font's character set
+% in tabular and/or running text forms.
+%
+% This manual is typeset according to the conventions of the
+% \LaTeX{} \textsc{docstrip} utility which enables the automatic
+% extraction of the \LaTeX{} macro source files~\cite{COMPANION}.
+%
+% \section{The package}
+%
+% The package provides commands to typeset a table of all the glyphs in
+% a given font and to typeset an example of regular text.
+%
+% \DescribeMacro{\fonttable}
+% The command \cs{fonttable}\marg{testfont} typesets a table showing all the
+% glyphs in the \meta{testfont}, where \meta{testfont} is the name of a font
+% like \texttt{cmr10}.
+%
+% \DescribeMacro{\fontrange}
+% The package attempts to populate the table with a maximum of 256 glyphs,
+% numbered from 0 to 255.
+% The \cs{fontrange}\marg{low}\marg{high} declaration changes this by reducing
+% the range so that it extends from \meta{low} to \meta{high}, where \meta{low}
+% should be at least 0 and \meta{high} at most 256, and \meta{low} less than
+% \meta{high}.
+%
+% The table is composed of blocks of sixteen characters. If necessary the
+% value of \meta{low} is adjusted lower and \meta{high} is adjusted higher
+% to match this block structure. For example, if you wanted a table of the
+% lower 128 characters then \verb?\fontrange{0}{127}? would do the job,
+% while the upper half of a 256 character font could be tabulated via
+% \verb?\fontrange{128}{255}?.
+%
+% \DescribeMacro{\decimals}
+% \DescribeMacro{\nodecimals}
+% Normally each cell in the table includes the decimal number of the position
+% in the (256) character set. \cs{nodecimals} turns off this numbering and
+% \cs{decimals} turns it on. The default is \cs{decimals}.
+%
+% \DescribeMacro{\hexoct}
+% \DescribeMacro{\nohexoct}
+% Normally the columns and rows in the table are numbered using hexadecimal
+% and octal numbers. These can be turned off by \cs{nohexoct} and turned
+% on again with \cs{hexoct}, which is the default.
+%
+% \DescribeMacro{\ftablewidth}
+% The font table's width is the length \cs{ftablewidth}, which by default
+% is set to the normal textwidth (or more exactly, to \cs{hsize}). The table
+% itself is left aligned. However, if \cs{nohexoct} is in effect the width of
+% the table is its natural width.
+%
+% \DescribeMacro{\fntcolwidth}
+% When \cs{nohexoct} is in effect the minimum width of a table column
+% is \cs{fntcolwidth}. This is initially declared as \\
+% \verb?\setwidth{\fntcolwidth}{0.08\ftablewidth}?
+%
+% \DescribeMacro{\fonttext}
+% The command \cs{fonttext}\marg{testfont} typesets an example text using
+% the \meta{testfont} (e.g. \texttt{cmr10}).
+%
+% \DescribeMacro{\simpletext}
+% \DescribeMacro{\fulltext}
+% The example text can be just a paragraph and a line of capitals,
+% or include more complex accented
+% words as well. Following the declaration \cs{fulltext} the complex words are
+% included as well as the example paragraph. The default is \cs{simpletext}
+% for just the paragraph.
+%
+% \DescribeMacro{\regulartext}
+% The command \cs{regulartext}\marg{fontspec} typesets the example text
+% using \meta{fontspec}, for example \verb?\rmfamily\itshape?.
+%
+%
+% \StopEventually{
+% \bibliographystyle{alpha}
+% \renewcommand{\refname}{Bibliography}
+% \begin{thebibliography}{GMS94}
+% \addcontentsline{toc}{section}{\refname}
+%
+% \bibitem[MG04]{COMPANION}
+% Frank Mittelbach and Michel Goossens.
+% \newblock \emph{The LaTeX Companion}.
+% \newblock Second edition.
+% \newblock Addison-Wesley Publishing Company, 2004.
+%
+%
+% \end{thebibliography}
+%
+% \PrintIndex
+%
+% }
+%
+%
+%
+% \section{The code} \label{sec:mf}
+%
+% Most of the code below is an edited version of code used in
+% \verb?nfssfont.tex? for displaying aspects of the set of glyphs in a font.
+%
+% \begin{macrocode}
+%<*pack>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{fonttable}[2005/12/06 v1.0a displays a font]
+
+% \end{macrocode}
+%
+% \begin{macro}{\sevenrm}
+% A small fixed size roman font.
+% \begin{macrocode}
+\providecommand*{\sevenrm}{\fontsize{7}{9pt}\rmfamily}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\f@tm}
+% \begin{macro}{\f@tn}
+% \begin{macro}{\f@tp}
+% \begin{macro}{\f@tdim}
+% Counts and a dimen.
+% \begin{macrocode}
+\newcount\f@tm \newcount\f@tn \newcount\f@tp \newdimen\f@tdim
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fonttable}
+% \cs{fonttable}\marg{font} typesets a table of all the glyphs in the
+% \meta{font} (e.g., auncl10).
+% \begin{macrocode}
+\newcommand*{\fonttable}[1]{%
+ \def\f@tfontname{#1}%
+ \bgroup
+ \f@tstartfont
+ \ftable
+ \egroup}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\f@tstartfont}
+% Sets up for a font table.
+% \begin{macrocode}
+\newcommand*{\f@tstartfont}{\font\f@ttestfont=\f@tfontname
+ \f@ttestfont \f@tsetbaselineskip
+ \ifdim\fontdimen6\f@ttestfont<10pt \rightskip=0pt plus 20pt
+ \else\rightskip=0pt plus 2em \fi
+ \spaceskip=\fontdimen2\f@ttestfont % space between words (\raggedright)
+ \xspaceskip=\fontdimen2\f@ttestfont \advance\xspaceskip
+ by\fontdimen7\f@ttestfont}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\f@tsetbaselineskip}
+% \begin{macrocode}
+\newcommand*{\f@tsetbaselineskip}{\setbox0=\hbox{\f@tn=0
+ \loop\char\f@tn \ifnum \f@tn<255 \advance\f@tn 1 \repeat}
+ \baselineskip=6pt \advance\baselineskip\ht0 \advance\baselineskip\dp0 }
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\f@toct}
+% \cs{f@toct}\marg{onum} typesets the octal constant \meta{onum}.
+% \begin{macrocode}
+\newcommand*{\f@toct}[1]{\hbox{\rmfamily\'{}\kern-.2em\itshape
+ #1\/\kern.05em}} % octal constant
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\f@thex}
+% \cs{f@thex}\marg{hnum} typesets the hexadecimal constant \meta{hnum}.
+% \begin{macrocode}
+\newcommand*{\f@thex}[1]{\hbox{\rmfamily\H{}\ttfamily#1}} % hexadecimal constant
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\f@tsetdigs}
+% \cs{f@tsetdigs}
+% \begin{macrocode}
+\def\f@tsetdigs#1"#2{\gdef\h{#2}% \h=hex prefix; \0\1=corresponding octal
+ \f@tm=\f@tn \divide\f@tm by 64 \xdef\0{\the\f@tm}%
+ \multiply\f@tm by-64 \advance\f@tm by\f@tn \divide\f@tm by 8 \xdef\1{\the\f@tm}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\f@ttestrow}
+% \cs{f@ttestrow} checks if there are any characters in the next block of
+% 16 slots.
+% \begin{macrocode}
+\newcommand*{\f@ttestrow}{\setbox0=\hbox{\penalty 1\def\\{\char"\h}%
+ \\0\\1\\2\\3\\4\\5\\6\\7\\8\\9\\A\\B\\C\\D\\E\\F%
+ \global\f@tp=\lastpenalty}} % \f@tp=1 if none of the characters exist
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifhexoct}
+% \begin{macro}{\hexoct}
+% \begin{macro}{\nohexoct}
+% Flag for (not) setting hex and octal numbers.
+% \begin{macrocode}
+\newif\ifhexoct
+\newcommand*{\hexoct}{\hexocttrue}
+\newcommand*{\nohexoct}{\hexoctfalse}
+\hexoct
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\f@toddlinenum}
+% \cs{f@toddline}
+% \begin{macrocode}
+\newcommand*{\f@toddline}{\cr
+ \noalign{\nointerlineskip}
+ \multispan{19}\hrulefill&
+ \setbox0=\hbox{\lower 2.3pt\hbox{\f@thex{\h x}}}\smash{\box0}
+ \cr
+ \noalign{\nointerlineskip}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\iff@tskipping}
+% \begin{macro}{\f@tskippingtrue}
+% \begin{macro}{\f@tskippingfalse}
+% \begin{macrocode}
+\newif\iff@tskipping
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fontrange}
+% \cs{fontrange}\marg{low}\marg{high} sets the character range to be
+% output.
+% \begin{macrocode}
+\newcommand*{\fontrange}[2]{%
+ \ifnum#1<#2\relax
+% \end{macrocode}
+% Set \cs{f@tlow} to the nearest multiple of 16 that is at or below \meta{low},
+% but first make sure that it will be at least 0.
+% \begin{macrocode}
+ \ifnum#1<\z@
+ \f@tm=\z@
+ \else
+ \f@tm=#1
+ \divide \f@tm \sixt@@n
+ \multiply \f@tm \sixt@@n
+ \fi
+ \edef\f@tlow{\the\f@tm}
+% \end{macrocode}
+% Set \cs{f@thigh} to the nearest multiple of 16 at or above \meta{high},
+% finally making sure that its maximum is 256.
+% \begin{macrocode}
+ \f@tm=#2
+ \divide \f@tm \sixt@@n
+ \advance \f@tm \@ne
+ \multiply \f@tm \sixt@@n
+ \ifnum \f@tm > \@cclvi \f@tm=\@cclvi \fi
+ \edef\f@thigh{\the\f@tm}
+ \else
+ \PackageError{fonttable}{%
+ Improper values for fontrange. Default values substituted}{\@ehc}
+ \def\f@tlow{0} \def\f@thigh{256}
+ \fi}
+\fontrange{0}{256}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\f@tloopforsixteen}
+% \cs{f@tloopforsixteen} sets up a block of sixteen character slots.
+% \begin{macrocode}
+\newcommand*{\f@tloopforsixteen}{%
+ \ifnum\f@tn<\f@tlow \global\f@tn=\f@tlow\fi
+ \loop\f@tskippingfalse
+ \ifnum\f@tn<\f@thigh \f@tm=\f@tn \divide\f@tm \sixt@@n \chardef\next=\f@tm
+ \expandafter\f@tsetdigs\meaning\next \f@ttestrow
+ \ifnum\f@tp=\@ne \f@tskippingtrue \fi\fi
+ \iff@tskipping \global\advance\f@tn \sixt@@n \repeat}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\f@tevenline}
+% \begin{macro}{\f@tevenlinenonum}
+% \cs{f@tevenline} gets next non-empty set of a block of 16 characters.
+% It either calls \cs{f@tmorechart} to print them, or \cs{f@tendchart} to
+% finish off the table if all 256 potential characters have been processed.
+%
+% \cs{f@tevenlinenonum} does something similar when no external numbers
+% are printed.
+% \begin{macrocode}
+\newcommand*{\f@tevenline}{%
+ \f@tloopforsixteen
+ \ifnum\f@tn=\f@thigh \let\next=\f@tendchart\else\let\next=\f@tmorechart\fi
+ \next}
+\newcommand*{\f@tevenlinenonum}{%
+ \f@tloopforsixteen
+ \ifnum\f@tn=\f@thigh
+ \\\hline
+ \else
+ \\\hline
+ \f@tmorechartnonum
+ \fi}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\f@tmorechart}
+% \begin{macro}{\f@tmorechartnonum}
+% \cs{f@tmorechart} sets two lines of the table, and \cs{f@tmorechartnonum}
+% does the same when there are no external numbers.
+% \begin{macrocode}
+\newcommand*{\f@tmorechart}{\cr\noalign{\hrule\penalty5000}
+ \f@tchartline \f@toddline \f@tm=\1 \advance\f@tm 1 \xdef\1{\the\f@tm}
+ \f@tchartline \f@tevenline}
+\newcommand*{\f@tmorechartnonum}{%
+ \f@tsimpleline \\ \hline
+ \f@tsimpleline \f@tevenlinenonum}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\f@tchartline}
+% \begin{macro}{\f@tsimpleline}
+% \cs{f@tchartline} does a line of the table, including external numbers,
+% and \cs{f@tsimpleline} does an unnumbered line.
+% \begin{macrocode}
+\newcommand*{\f@tchartline}{&\f@toct{\0\1x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&}
+\newcommand*{\f@tsimpleline}{%
+ \:\f@tchartstrut& \: & \: & \: & \: & \: & \: & \:}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\f@tchartstrut}
+% \begin{macro}{\ftablewidth}
+% \begin{macro}{\fntcolwidth}
+% \cs{f@tchartstrut} is a strut used in each table line. \cs{ftablewidth} is
+% width of an externally numbered table. \cs{fntcolwidth} is the minimum
+% width of a column in an unnumbered table.
+% \begin{macrocode}
+\newcommand*{\f@tchartstrut}{\lower4.5pt\vbox to14pt{}}
+\newdimen\ftablewidth
+ \ftablewidth=\hsize
+\newdimen\fntcolwidth
+ \setlength{\fntcolwidth}{0.08\ftablewidth}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\f@tcol}
+% \begin{macro}{\f@tstartchartnonum}
+% \cs{f@tstartchartnonum} is a table line of spaces, with no verticals.
+% \begin{macrocode}
+\newcommand*{\f@tcol}{%
+ \multicolumn{1}{c}{\hspace*{\fntcolwidth}}}
+\newcommand*{\f@tstartchartnonum}{%
+ \f@tcol &\f@tcol &\f@tcol &\f@tcol &\f@tcol &\f@tcol &\f@tcol &\f@tcol}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ftable}
+% \begin{macro}{\f@tftablenum}
+% \begin{macro}{\f@tftablenonum}
+% \cs{ftable} sets a complete character table. The actual code is in either
+% \cs{f@tftablenum} or \cs{f@tftablenonum} for externally numbered or
+% plain tables, respectively.
+% \changes{v1.0a}{2005/12/06}{Added missing zeroing of \cs{f@tn} to \cs{f@tftablenonum}}
+% \begin{macrocode}
+\newcommand*{\f@tftablenum}{$$\global\f@tn=\z@
+ \halign to\ftablewidth\bgroup
+ \f@tchartstrut##\tabskip0pt plus10pt&
+ &\hfil##\hfil&\vrule##\cr
+ \lower6.5pt\null
+ &&&\f@toct0&&\f@toct1&&\f@toct2&&\f@toct3&&\f@toct4&&\f@toct5&&\f@toct6&&\f@toct7&%
+ \f@tevenline}
+\newcommand*{\f@tftablenonum}{%
+ \global\f@tn=\z@
+ \begin{tabular}{|c|c|c|c|c|c|c|c|}
+ \f@tstartchartnonum
+ \f@tevenlinenonum
+ \end{tabular}}
+\newcommand*{\ftable}{\ifhexoct\f@tftablenum\else\f@tftablenonum\fi}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\f@tendchart}
+% \cs{f@tendchart} sets the last line of an externally numbered table with
+% the relevant hex digits.
+% \begin{macrocode}
+\newcommand*{\f@tendchart}{\cr\noalign{\hrule}
+ \raise11.5pt\null&&&\f@thex 8&&\f@thex 9&&\f@thex A&&\f@thex B&
+ &\f@thex C&&\f@thex D&&\f@thex E&&\f@thex F&\cr
+ \egroup$$\par}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\decimals}
+% \begin{macro}{\nodecimals}
+% \begin{macro}{\:}
+% Following \cs{decimals}, which is the default, decimal numbers are
+% printed in the table. Following \cs{nodecimals} they are not printed.
+%
+% \cs{:} typesets a single glyph, possibly with its decimal slot number.
+% \begin{macrocode}
+\newcommand*{\nodecimals}{%
+%%% the original
+ \def\:{\setbox0=\hbox{\char\f@tn}%
+ \ifdim\ht0>7.5pt\f@treposition
+ \else\ifdim\dp0>2.5pt\f@treposition\fi\fi
+ \box0\global\advance\f@tn 1 }}
+\newcommand{\decimals}{%
+%%% mine
+ \def\:{\setbox0=\hbox{\char\f@tn\,\rlap{\tiny \the\f@tn}}%
+ \ifdim\ht0>7.5pt\f@treposition
+ \else\ifdim\dp0>2.5pt\f@treposition\fi\fi
+ \box0\global\advance\f@tn 1 }}
+\decimals
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\f@treposition}
+% \cs{f@treposition}
+% \begin{macrocode}
+\newcommand*{\f@treposition}{\setbox0=\vbox{\kern2pt\box0}\f@tdim=\dp0
+ \advance\f@tdim 2pt \dp0=\f@tdim}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fonttext}
+% \cs{fonttext}\marg{font} typesets \cs{text} using \meta{font} (e.g.
+% auncl10).
+% \begin{macrocode}
+\def\fonttext#1{%
+ \def\f@tfontname{#1}%
+ \bgroup
+ \f@tstartfont
+ \knutext
+ \egroup}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\regulartext}
+% \cs{regulartext}\marg{fontspec} typesets \cs{knutext} using \meta{fontspec}
+% (e.g., \cs{aunclfamily}).
+% \begin{macrocode}
+\def\regulartext#1{%
+ \bgroup
+ #1
+ \knutext
+ \egroup}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\knutext}
+% Deathless prose from Knuth for testing a font. It includes
+% \cs{moreknutext}, \cs{capknutext}, and \cs{knunames}.
+% \begin{macrocode}
+\def\knutext{{
+On November 14, 1885, Senator \& Mrs.~Leland Stanford called together
+at their San Francisco mansion the 24~prominent men who had been
+chosen as the first trustees of The Leland Stanford Junior University.
+They handed to the board the Founding Grant of the University, which
+they had executed three days before. This document---with various
+amendments, legislative acts, and court decrees---remains as the
+University's charter. In bold, sweeping language it stipulates that
+the objectives of the University are ``to qualify students for
+personal success and direct usefulness in life; and to promote the
+publick welfare by exercising an influence in behalf of humanity and
+civilization, teaching the blessings of liberty regulated by law, and
+inculcating love and reverence for the great principles of government
+as derived from the inalienable rights of man to life, liberty, and
+the pursuit of happiness.''
+
+\moreknutext
+
+\capknutext
+
+\knunames
+\par}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@moreknutext}
+% Some more text with a variety of ligatures and accents.
+% \begin{macrocode}
+\def\@moreknutext{?`But aren't Kafka's Schlo{\ss} and {\AE}sop's
+{\OE}uvres often na{\"\i}ve vis-\`a-vis the d{\ae}monic ph{\oe}nix's
+official r\^ole in fluffy souffl\'es? }
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@capknutext}
+% \begin{macro}{\capknutext}
+% Text using only capital letters and some punctutation.
+% \begin{macrocode}
+\newcommand{\@capknutext}{%
+(!`THE DAZED BROWN FOX QUICKLY GAVE 12345--67890 JUMPS!)}
+\let\capknutext\@capknutext
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@knunames}
+% Lots of accents masquerading in personal names.
+% \begin{macrocode}
+\def\@knunames{ {\AA}ngel\aa\ Beatrice Claire
+ Diana \'Erica Fran\c{c}oise Ginette H\'el\`ene Iris
+ Jackie K\=aren {\L}au\.ra Mar{\'\i}a N\H{a}ta{\l}{\u\i}e {\O}ctave
+ Pauline Qu\^eneau Roxanne Sabine T\~a{\'\j}a Ur\v{s}ula
+ Vivian Wendy Xanthippe Yv{\o}nne Z\"azilie\par}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\simpletext}
+% \begin{macro}{\fulltext}
+% \begin{macro}{\moreknutext}
+% \begin{macro}{\knunames}
+% \cs{simpletext} kills off \cs{moreknutext} and \cs{knunames}.
+% \cs{fulltext} restores \cs{moreknutext} and \cs{knunames}.
+% Make \cs{fulltext} the default.
+% \begin{macrocode}
+\newcommand*{\simpletext}{\let\moreknutext\relax \let\knunames\relax}
+\newcommand*{\fulltext}{\let\moreknutext\@moreknutext \let\knunames\@knunames}
+\simpletext
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The end of the package.
+% \begin{macrocode}
+%</pack>
+% \end{macrocode}
+%
+%
+%
+%
+% \Finale
+\endinput
+
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+
+
diff --git a/Master/texmf-dist/source/latex/fonttable/fonttable.ins b/Master/texmf-dist/source/latex/fonttable/fonttable.ins
new file mode 100644
index 00000000000..eab35370c5b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/fonttable/fonttable.ins
@@ -0,0 +1,72 @@
+%% fonttable.ins
+%% Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net
+%% Copyright 2005 Peter R. Wilson
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the Latex Project Public License, either
+%% version 1.3 of this license or (at your option) any
+%% later version.
+%% The latest version of the license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2003/06/01 or later.
+%%
+%% This work has the LPPL maintenance status "author-maintained".
+%%
+%% This work consists of the files listed in the README file.
+%%
+%% This file will generate fast loadable files from the doc files
+%% in this work when run through LaTeX
+%%
+%% --------------------- start of docstrip commands --------------
+%%
+\def\batchfile{fonttable.ins}
+\input docstrip.tex
+\preamble
+------------------------------------------------------------------
+ Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net
+ Copyright 2005 Peter R. Wilson
+
+ This work may be distributed and/or modified under the
+ conditions of the Latex Project Public License, either
+ version 1.3 of this license or (at your option) any
+ later version.
+ The latest version of the license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of
+ LaTeX version 2003/06/01 or later.
+
+ This work has the LPPL maintenance status "author-maintained".
+
+ This work consists of the files listed in the README file.
+------------------------------------------------------------------
+\endpreamble
+
+\keepsilent
+
+%%% \Msg{*** Generating the driver file ***}
+%%% \generateFile{fonttable.drv}{t}{\from{fonttable.dtx}{driver}}
+
+\Msg{*** Generating the LaTeX2e package files ***}
+\generateFile{fonttable.sty}{t}{\from{fonttable.dtx}{pack}}
+
+
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move these files}
+\Msg{* into the LaTeX macro area:}
+\Msg{* \space\space fonttable.sty}
+\Msg{*}
+\Msg{* Further installation instructions are in the README}
+\Msg{*}
+\Msg{* To produce the documentation run the files ending with}
+\Msg{* `.dtx' through LaTeX.}
+\Msg{* Process any name.idx file by:}
+\Msg{* \space\space\space\space makeindex -s gind.ist name}
+\Msg{* Process any name.glo file by:}
+\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo}
+\Msg{*}
+\Msg{* Happy TeXing}
+\Msg{***********************************************************}
+
+\endinput