%%
%% This is file `nfssfont.tex',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% nfssfont.dtx  (with options: `code')
%% 
%% This is a generated file.
%% 
%% The source is maintained by the LaTeX Project team and bug
%% reports for it can be opened at https://latex-project.org/bugs.html
%% (but please observe conditions on bug reports sent to that address!)
%% 
%% 
%% Copyright (C) 1993-2026
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%% 
%% This file was generated from file(s) 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".
%% 
%% This file may only be distributed together with a copy of the LaTeX
%% base system. You may however distribute the LaTeX base system without
%% such generated files.
%% 
%% 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.
\def\nfssfontfileversion{v2.2f}
\def\nfssfontfiledate{2023/11/07}


\documentclass{article}
\nofiles
\setlength\textwidth{470pt}
\setlength\oddsidemargin{0pt}
\addtolength\textheight{7\baselineskip}
\addtolength\topmargin{-3\baselineskip}

\def\sevenrm{\fontencoding{OT1}\fontsize{7}{9pt}\rmfamily}

\typeout{**********************************************}
\typeout{* NFSS font test program version <\nfssfontfileversion>}
\typeout{*}
\typeout{* Follow the instructions}
\typeout{**********************************************}
\typeout{}

\tracinglostchars=0
\tolerance=1000
\raggedbottom
\parindent=0pt
\hyphenpenalty=200
\doublehyphendemerits=30000
\newcount\m \newcount\n \newcount\p \newdimen\dim
\chardef\other=12

\def\today{\ifcase\month\or
  January\or February\or March\or April\or May\or June\or
  July\or August\or September\or October\or November\or December\fi
  \space\number\day, \number\year}
\def\hours{\n=\time \divide\n 60
  \m=-\n \multiply\m 60 \advance\m \time
  \twodigits\n\twodigits\m}
\def\twodigits#1{\ifnum #1<10 0\fi \number#1}
\def\init{%
 \typein[\currfontname]%
   {Input external font name, e.g., cmr10^^J%
    (or <enter> for NFSS classification of font):}%
 \def\encoding{unknown}%
 \fontencoding{T1}\selectfont
 \ifx\currfontname\empty
  \typein[\encoding]{^^J^^J*** NFSS classification
                     ***^^J^^JFont encoding [T1]:}%
  \ifx\encoding\empty
   \fontencoding{T1}%
   \def\encoding{T1}%
  \else
    \edef\next{%
      \lowercase{\def\noexpand\next{\encoding enc.def}}}%
    \next
    \makeatletter
    \InputIfFileExists\next
       {}%
       {\PackageWarningNoLine{nfssfont}%
        {Encoding file `\next' not found.%
          \MessageBreak
           You might have misspelled the name of the encoding
          \MessageBreak
           or perhaps this encoding is not a text encoding,
         \MessageBreak
           in which case you will probably only be able to
         \MessageBreak
           run the \noexpand\table command successfully}%
       \expandafter\let\csname T@\encoding\endcsname\empty
       }%
    \makeatother
    \let\next\relax
    \fontencoding\encoding
  \fi
  \typein[\family]{Font family [cmr]:}%
  \relax
  \ifx\family\empty
    \fontfamily{cmr}%
  \else
    \fontfamily\family
  \fi
  \typein[\series]{Font series [m]:}%
  \ifx\series\empty
    \fontseries{m}%
  \else
    \fontseries\series
  \fi
  \typein[\shape]{Font shape [n]:}%
  \ifx\shape\empty
    \fontshape{n}%
  \else
    \fontshape\shape
  \fi
  \typein[\size]{Font size [10pt]:}%
  \ifx\size\empty
    \fontsize{10}{10}%
  \else
    \fontsize\size\size
  \fi
  \selectfont\edef\currfontname{\fontname\font}%
 \fi
 \startfont
 \typein[\action]{Now type a test command or
   \string\help\space for help [ \string\table\space\string\bye\space]:}%
 \ifx\action\empty
   \expandafter\table\expandafter\bye
 \else
   \expandafter\action
 \fi
}
\def\startfont{\font\testfont=\currfontname
  \leftline{\sevenrm Test of font \currfontname\unskip\ (encoding
            \encoding\unskip) on \today\ at \hours}
  \medskip
  \testfont \setbaselineskip
  \ifdim\fontdimen6\testfont<10pt \rightskip=0pt plus 20pt
  \else\rightskip=0pt plus 2em \fi
  \spaceskip=\fontdimen2\testfont % space between words (\raggedright)
  \xspaceskip=\fontdimen2\testfont \advance\xspaceskip
  by\fontdimen7\testfont}
{\catcode`\|=0 \catcode`\\=\other
|gdef|help{|message{%
\init switches to another font;^^J%
\stop or \bye finishes the run;^^J%
\table prints the font layout in tabular format;^^J%
\text prints a sample text, assuming TeX text font conventions;^^J%
\sample combines \table and \text;^^J%
\mixture mixes a background character with a series of others;^^J%
\alternation interleaves a background character with a series;^^J%
\alphabet prints all lowercase letters within a given background;^^J%
\ALPHABET prints all uppercase letters within a given background;^^J%
\series prints a series of letters within a given background;^^J%
\lowers prints a comprehensive test of lowercase;^^J%
\uppers prints a comprehensive test of uppercase;^^J%
\digits prints a comprehensive test of numerals;^^J%
\math prints a comprehensive test of TeX math italic;^^J%
\names prints a text that mixes upper and lower case;^^J%
\punct prints a punctuation test;^^J%
\bigtest combines many of the above routines;^^J%
\help repeats this message;^^J%
and you can use ordinary TeX commands (e.g., to \input a file).}}}

\def\setbaselineskip{\setbox0=\hbox{\n=0
\loop\char\n \ifnum \n<255 \advance\n 1 \repeat}
\baselineskip=6pt \advance\baselineskip\ht0 \advance\baselineskip\dp0 }
\def\setchar#1{{\escapechar-1\message{\string#1 character = }%
  \def\do##1{\catcode`##1=\other}\dospecials
  \read-1 to\next
  \expandafter\finsetchar\next\next#1}}
\def\finsetchar#1#2\next#3{\global\chardef#3=`#1
  \ifnum #3=`\# \global\chardef#3=#2 \fi}
\def\promptthree{\setchar\background
  \setchar\starting \setchar\ending}

\def\mixture{\promptthree \domix\mixpattern}
\def\alternation{\promptthree \domix\altpattern}
\def\mixpattern{\0\1\0\0\1\1\0\0\0\1\1\1\0\1}
\def\altpattern{\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0}
\def\domix#1{\par\chardef\0=\background \n=\starting
  \loop \chardef\1=\n #1\endgraf
  \ifnum \n<\ending \advance\n 1 \repeat}

\def\!{\discretionary{\background}{\background}{\background}}
\def\series{\promptthree \!\doseries\starting\ending\par}
\def\doseries#1#2{\n=#1\loop\char\n\!\ifnum\n<#2\advance\n 1 \repeat}
\def\complower{\!\doseries{`a}{`z}\doseries{'31}{'34}\par}
\def\compupper{\!\doseries{`A}{`Z}\doseries{'35}{'37}\par}
\def\compdigs{\!\doseries{`0}{`9}\par}
\def\alphabet{\setchar\background\complower}
\def\ALPHABET{\setchar\background\compupper}

\def\lowers{\docomprehensive\complower{`a}{`z}{'31}{'34}}
\def\uppers{\docomprehensive\compupper{`A}{`Z}{'35}{'37}}
\def\digits{\docomprehensive\compdigs{`0}{`4}{`5}{`9}}
\def\docomprehensive#1#2#3#4#5{\par\chardef\background=#2
  \loop{#1} \ifnum\background<#3\m=\background\advance\m 1
  \chardef\background=\m \repeat \chardef\background=#4
  \loop{#1} \ifnum\background<#5\m=\background\advance\m 1
  \chardef\background=\m \repeat}
\def\names{ {\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}
\def\punct{\par\dopunct{min}\dopunct{pig}\dopunct{hid}
  \dopunct{HIE}\dopunct{TIP}\dopunct{fluff}
  \$1,234.56 + 7/8 = 9\% @ \#0\par}
\def\dopunct#1{#1,\ #1:\ #1;\ `#1'\ ?`#1?\ !`#1!\ (#1)\ [#1]\
               #1*\ #1.\par}

\def\bigtest{\sample
  hamburgefonstiv HAMBURGEFONSTIV\par
  \names \punct \lowers \uppers \digits}

\def\math{\textfont1=\testfont \skewchar\testfont=\skewtrial
 \mathchardef\Gamma="100 \mathchardef\Delta="101
 \mathchardef\Theta="102 \mathchardef\Lambda="103 \mathchardef\Xi="104
 \mathchardef\Pi="105 \mathchardef\Sigma="106 \mathchardef\Upsilon="107
 \mathchardef\Phi="108 \mathchardef\Psi="109 \mathchardef\Omega="10A
 \def\ii{i} \def\jj{j}
 \def\\##1{|##1|+}\mathtrial
 \def\\##1{##1_2+}\mathtrial
 \def\\##1{##1^2+}\mathtrial
 \def\\##1{##1/2+}\mathtrial
 \def\\##1{2/##1+}\mathtrial
 \def\\##1{##1,{}+}\mathtrial
 \def\\##1{d##1+}\mathtrial
 \let\ii=\imath \let\jj=\jmath \def\\##1{\hat##1+}\mathtrial}
\newcount\skewtrial \skewtrial='177
\def\mathtrial{$\\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 \\a \\b \\c \\d \\e \\f
 \\g \\h \\\ii \\\jj \\k \\l \\m \\n \\o \\p \\q \\r \\s \\t \\u \\v \\w
 \\x \\y \\z \\\alpha \\\beta \\\gamma \\\delta \\\epsilon \\\zeta
 \\\eta \\\theta \\\iota \\\kappa \\\lambda \\\mu \\\nu \\\xi \\\pi
 \\\rho \\\sigma \\\tau \\\upsilon \\\phi \\\chi \\\psi \\\omega
 \\\vartheta \\\varpi \\\varphi \\\Gamma \\\Delta \\\Theta \\\Lambda
 \\\Xi \\\Pi \\\Sigma \\\Upsilon \\\Phi \\\Psi \\\Omega \\\partial
 \\\ell \\\wp$\par}
\def\mathsy{\begingroup\skewtrial='060 % for math symbol font tests
 \def\mathtrial{$\\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$\par}
 \math\endgroup}
\def\oct#1{\hbox{\fontencoding{OT1}\rmfamily\'{}\kern-.2em\itshape
           #1\/\kern.05em}}% octal constant
\def\hex#1{\hbox{\fontencoding{OT1}\rmfamily
           \H{}\ttfamily#1}}% hexadecimal constant
\def\setdigs#1"#2{\gdef\h{#2}% \h=hex prefix; \0\1=corresponding octal
 \m=\n \divide\m by 64 \xdef\0{\the\m}%
 \multiply\m by-64 \advance\m by\n \divide\m by 8 \xdef\1{\the\m}}
\def\testrow{\setbox0=\hbox{\penalty 1\def\\{\char"\h}%
 \\0\\1\\2\\3\\4\\5\\6\\7\\8\\9\\A\\B\\C\\D\\E\\F%
 \global\p=\lastpenalty}} % \p=1 if none of the characters exist
\def\oddline{\cr
  \noalign{\nointerlineskip}
  \multispan{19}\hrulefill&
  \setbox0=\hbox{\lower 2.3pt\hbox{\hex{\h x}}}\smash{\box0}\cr
  \noalign{\nointerlineskip}}
\newif\ifskipping
\def\evenline{\loop\skippingfalse
 \ifnum\n<256 \m=\n \divide\m 16 \chardef\next=\m
 \expandafter\setdigs\meaning\next \testrow
 \ifnum\p=1 \skippingtrue \fi\fi
 \ifskipping \global\advance\n 16 \repeat
 \ifnum\n=256 \let\next=\endchart\else\let\next=\morechart\fi
 \next}
\def\morechart{\cr\noalign{\hrule\penalty5000}
 \chartline \oddline \m=\1 \advance\m 1 \xdef\1{\the\m}
 \chartline \evenline}
\def\chartline{&\oct{\0\1x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&}
\def\chartstrut{\lower4.5pt\vbox to14pt{}}
\def\table{$$\global\n=0
  \halign to\hsize\bgroup
    \chartstrut##\tabskip0pt plus10pt&
    &\hfil##\hfil&\vrule##\cr
    \lower6.5pt\null
    &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline}
\def\endchart{\cr\noalign{\hrule}
  \raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B&
  &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$\par}
\def\:{\setbox0=\hbox{\noboundary\char\n\noboundary}%
  \ifdim\ht0>7.5pt\reposition
  \else\ifdim\dp0>2.5pt\reposition\fi\fi
  \box0\global\advance\n 1 }
\def\reposition{\setbox0=\vbox{\kern2pt\box0}\dim=\dp0
  \advance\dim 2pt \dp0=\dim}
\def\centerlargechars{
  \def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}}}
\def\text{{\advance\baselineskip-4pt
\setbox0=\hbox{abcdefghijklmnopqrstuvwxyz}
\ifdim\hsize>2\wd0
   \ifdim 15pc>2\wd0 \hsize=15pc \else \hsize=2\wd0 \fi
\fi
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.'' \moretext
(!`THE DAZED BROWN FOX QUICKLY GAVE 12345--67890 JUMPS!)\par}}
\def\moretext{?`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? }
\def\omitaccents{\let\moretext=\relax}

\def\sample{\table\text}
\def\bye{\end{document}}
\let\oldtypeout\typeout
\def\typeout#1{}
\makeatletter
\let\@preamblecmds\@empty
\makeatother

\begin{document}
\let\typeout\oldtypeout

\ifx\noinit!\else\expandafter\init\fi
\endinput
%%
%% End of file `nfssfont.tex'.
