diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/fontinst/fontdoc.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/fontinst/fontdoc.sty | 1370 |
1 files changed, 1370 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/fontinst/fontdoc.sty b/Master/texmf-dist/tex/latex/fontinst/fontdoc.sty new file mode 100644 index 00000000000..0c5e4c7b325 --- /dev/null +++ b/Master/texmf-dist/tex/latex/fontinst/fontdoc.sty @@ -0,0 +1,1370 @@ +%% +%% This is file `fontdoc.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% fibasics.dtx (with options: `doc') +%% ficommon.dtx (with options: `doc') +%% fimain.dtx (with options: `doc') +%% +%% This is a generated file. +%% +%% Copyright 1993, 1994, 1995, 1996 Alan Jeffrey, +%% hacked and maintained 1997, 1998 Sebastian Rahtz, +%% copyright 1998, 1999, 2000, 2001 the fontinst maintenance team and any +%% individual authors listed elsewhere in this file. All rights reserved. +%% +%% This file is part of the fontinst system version 1.9. +%% ----------------------------------------------------- +%% +%% It may be distributed under the terms of the LaTeX Project Public +%% License, as described in lppl.txt in the base LaTeX distribution. +%% Either version 1.1 or, at your option, any later version. +%% This file may also be distributed by itself provided it is unchanged +%% and accompanied by some prominent file which states the location of +%% the sources for the fontinst system, from which this file was +%% generated. +%% +%%% From file: fibasics.dtx +\def\fontinstversion{1.927} +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{fontdoc} +[2004/08/07 v\fontinstversion\space + fontinst documentation package] +\newcommand*\needsfontinstversion[1]{% + \ifFD@spec@ + \comment{Automatic processing of this document as a data file + requires \textsf{fontinst} v\,#1 or higher.}% + \else + \Bheading{Needs fontinst v\thinspace#1}% + \fi +} +\newif\ifFD@spec@ +\FD@spec@false +\DeclareOption{specification}{\FD@spec@true} +\DeclareOption{hypertex}{ + \providecommand*\FD@codepoint[1]{% + \uppercase{\edef\@tempa{#1}}% + \special{html:<a href="% + http://www.unicode.org/cgi-bin/refglyph?24-\@tempa + ">% + }% + \texttt{U+\@tempa}% + \special{html:</a>}% + }% +} +\DeclareOption{pdftex}{ + \providecommand*\FD@codepoint[1]{% + \mbox{% + \uppercase{\edef\@tempa{#1}}% + \ifx \pdfstartlink\@undefined + \pdfannotlink + \else + \pdfstartlink + \fi attr {/Border [0 0 0]} user {% + /Subtype /Link /A <<% + /S /URI /URI (% + http://www.unicode.org/cgi-bin/refglyph?24-\@tempa + )% + >>}% + \textcolor{blue}{\texttt{U+\@tempa}}% + \pdfendlink + }% + }% + \AtEndOfPackage{\RequirePackage[pdftex]{color}}% +} +\InputIfFileExists{fontdoc.cfg}{% + \typeout{*************************************^^J% + * Local config file fontdoc.cfg used^^J% + *************************************}% +}{} +\ProcessOptions\relax +\RequirePackage{amstext} +\newcount\a@count +\newcount\b@count +\newdimen\a@dimen +\def\x@cs#1#2{\expandafter#1\csname#2\endcsname} +\def\FD@swap@two#1#2{#2#1} +\newcommand\Aheading[1]{% + \par\pagebreak[1]\addvspace\medskipamount + \noindent\textbf{#1}\vadjust{\penalty200}\par +} +\newcommand\Bheading[1]{\par\noindent\textbf{#1}} +\raggedbottom +\ifdim 1sp>\lineskiplimit \lineskiplimit=0.5pt \fi +\newcommand\plain{\texttt{plain}} +\let\plainint=\int +\let\plaindiv=\div +\let\plainmax=\max +\let\plainmin=\min +\newcount\list@item@counter +\newcommand\TypesetList[8]{% + \begingroup + \list@item@counter=\z@ + \def\do##1{\advance\list@item@counter\@ne}% + #8% + \ifcase \list@item@counter \or + \def\do##1{#1#7{##1}}% + \or + \def\do##1{% + \advance\list@item@counter\@ne + \ifnum \list@item@counter=\@ne #1\else #2\fi + #7{##1}% + }% + \else + \advance\list@item@counter\m@ne + \expandafter\def \expandafter\do \expandafter##\expandafter1% + \expandafter{\expandafter\ifnum \the\list@item@counter + =\list@item@counter + #4% + \else\ifnum \z@=\list@item@counter + #1% + \else + #3% + \fi\fi + \advance\list@item@counter\@ne + #7{##1}% + }% + \fi + \ifnum \z@=\list@item@counter + #6% + \else + \list@item@counter=\z@ + #8% + #5% + \fi + \endgroup +} +\let\x@relax=\relax +\def\eTeX#1{\do{\eTeXlogo\nolinebreak[3] v\,#1}} +\def\eTeXlogo{\ensuremath{\varepsilon}-\kern-.125em\TeX} +\def\pdfTeX#1#2{% + \do{pdf\TeX\nolinebreak[3] v\,% + \ifnum #1<100\space + 0.\ifnum #1<10\space 0\fi + \else + \expandafter\FD@swap@two \expandafter.% + \fi + #1#2% + } +} +\def\needsTeXextension#1#2{% + \Bheading{Needs + \TypesetList{}{ or }{, }{, or }{}{(unspecified)}{\@firstofone}{#1}}% +} +\let\then=\iffalse +\let\Else=\else +\let\Fi=\fi +\def\generic@if#1{\iftrue} +\newcommand\showbranches{% + \let\generic@if=\branches@if + \let\then=\x@relax + \let\Else=\branches@else + \let\Fi=\branches@fi +} +\newcount\saved@slot@number +\def\branches@if#1{% + \ifnum \branches@type=\tw@ + \begin{IfBranchDummy}% + \textit{ if #1 then}% + \else + \par + \ifFD@tight@\else \addvspace\medskipamount \fi + \noindent\textit{If #1 then}% + \fi + \saved@slot@number=\slot@number + \gdef\branches@type{0}% + \let\par=\branches@par +} +\def\branches@else{% + \ifnum \branches@type=\z@ + \textit{ relax else}% + \gdef\branches@type{1}% + \else + \par + \end{IfBranch}% + \noindent\textit{Else}% + \gdef\branches@type{2}% + \fi + \global\slot@number=\saved@slot@number + \let\par=\branches@par +} +\def\branches@fi{% + \ifnum \branches@type=\thr@@ + \expandafter\end \expandafter{\@currenvir}% + \expandafter\gdef \expandafter\FD@saved@fis + \expandafter{\FD@saved@fis \space fi}% + \else + \end{IfBranch}% + \gdef\FD@saved@fis{Fi}% + \fi + \gdef\branches@type{3}% + \let\par=\branches@par +} +\gdef\branches@type{4} +\def\branches@par{% + \@restorepar + \ifnum \branches@type=\thr@@ + \noindent\textit{\FD@saved@fis}\par + \else + \begin{IfBranch}% + \fi + \gdef\branches@type{4}% +} +\newif\ifFD@tight@ +\newenvironment{IfBranch}{% + \list{}{% + \ifFD@tight@ + \setlength\topsep{\z@skip}% + \@beginparpenalty=\z@ + \@endparpenalty=\z@ + \setlength\leftmargin{1em}% + \else + \setlength\topsep{\medskipamount}% + \@beginparpenalty=-10% + \@endparpenalty=\@beginparpenalty + \setlength\leftmargin{\z@}% + \fi + \setlength\partopsep{\z@skip}% + \setlength\itemsep{\z@skip}% + \setlength\parsep{\z@ plus\p@}% + \setlength\rightmargin{\z@}% + \setlength\itemindent{\z@}% + }% + \item[]% +}{\endlist} +\newenvironment{IfBranchDummy}{}{} +\begingroup + \catcode`\,=13 + \gdef\print@csep@list#1#2{% + $% + \ifnum "8000=\mathcode`\,\else + \mathchardef\private@comma=\mathcode`\,% + \mathcode`\,="8000\x@relax + \fi + #1% + \let,=\active@comma + #2% + $% + } +\endgroup +\def\active@comma{\private@comma \penalty\binoppenalty} +\let\messagebreak\space +\def\fontinsterror#1#2#3{% + \Bheading{Error} observed by #1:% + \begin{quote}#2.\end{quote}% +} +\def\fontinstwarning#1#2{ + \Bheading{Warning} from #1:% + \begin{quote}#2.\end{quote}% +} +\let\fontinstwarningnoline=\fontinstwarning +\def\fontinstinfo#1#2{ + \Bheading{Info} from #1:% + \begin{quote}#2.\end{quote}% +} +%%% From file: ficommon.dtx +\DeclareRobustCommand\PrintChar[1]{% + \leavevmode + \begingroup + \count@=#1\relax + \ifnum \@xxxii>\count@ + \advance \count@ 64% + \InvisibleCharPrefix + \PrintVisibleChar\count@ + \InvisibleCharSuffix + \else\ifnum 127>\count@ + \PrintVisibleChar\count@ + \else + \InvisibleCharPrefix + \ifnum 127=\count@ \PrintVisibleChar{63}\else + \@tempcnta=\count@ + \divide \count@ \sixt@@n + \@tempcntb=\count@ + \multiply \count@ \sixt@@n + \advance \@tempcnta -\count@ + \advance \@tempcntb \ifnum 9<\@tempcntb 87\else 48\fi + \advance \@tempcnta \ifnum 9<\@tempcnta 87\else 48\fi + \char\@tempcntb \char\@tempcnta + \fi + \InvisibleCharSuffix + \fi\fi + \endgroup +} +\newcommand\InvisibleCharPrefix{% + \/\em + \PrintVisibleChar{`\^}\PrintVisibleChar{`\^}% +} +\newcommand\InvisibleCharSuffix{\/} +\newcommand\PrintVisibleChar[1]{% + \ifcase #1% + \or\or\or\or\or\or\or\or \or\or\or\or\or\or\or\or + \or\or\or\or\or\or\or\or \or\or\or\or\or\or\or\or + % "20 + \textvisiblespace \or!\or\textquotedbl \or\#\or\textdollar + \or\%\or\&\or\textquoteright\or(\or)\or*\or+\or,\or-\or.\or/% + \or % "30 + 0\or1\or2\or3\or4\or5\or6\or7\or8\or9\or:\or;\or + \textless\or=\or\textgreater\or?% + \or % "40 + @\or A\or B\or C\or D\or E\or F\or G\or + H\or I\or J\or K\or L\or M\or N\or O% + \or % "50 + P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\or [\or + \textbackslash \or]\or\textasciicircum \or\textunderscore + \or % "60 + \textquoteleft \or a\or b\or c\or d\or e\or f\or g\or h\or + i\or j\or k\or l\or m\or n\or o% + \or % "70 + p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\or + \textbraceleft \or\textbar \or\textbraceright \or\textasciitilde + \fi +} +\DeclareTextCommandDefault{\textvisiblespace}{% + \makebox[\fontdimen\tw@\font]{% + \hfil + \vrule \@height.3ex% + \vbox{\hrule \@width .66\fontdimen\tw@\font}% + \vrule \@height.3ex% + \hfil + }% +} +\def\FD@quoted@PrintChar#1{"\number#1"} +\count@=32 +\begingroup + \catcode\z@=12\relax + \@firstofone{% +\endgroup + \loop + \if \ifnum 11=\catcode\count@ 1\else \ifnum 12=\catcode\count@ + 1\else 0\fi\fi 1% + \uccode\z@=\count@ + \uppercase{\def\@tempa{^^@}}% + \else + \edef\@tempa{\noexpand\PrintChar{\the\count@}}% + \fi + \x@cs\let{FD@printable@\the\count@}=\@tempa + \advance \count@ \@ne + \ifnum 127>\count@ \repeat +} +\@namedef{FD@printable@34}{\PrintChar{34}} % " +\@namedef{FD@printable@60}{\PrintChar{60}} % < +\@namedef{FD@printable@62}{\PrintChar{62}} % > +\def\MakePrintable#1#2#3{% + \begingroup + \toks@={}% + \escapechar=`\\% + \@tempswafalse + \FD@printable@#3\protect\FD@printable@ + \toks@=\expandafter{% + \expandafter\let \csname if#2\expandafter\endcsname + \csname if\if@tempswa false\else true\fi \expandafter\endcsname + \expandafter\def \expandafter#1\expandafter{\the\toks@}% + }% + \expandafter\endgroup \the\toks@ +} +\def\FD@printable@iii{% + \expandafter\futurelet \expandafter\@let@token + \expandafter\FD@printable@iv \string +} +\def\FD@printable@iv{% + \ifx \@let@token\@sptoken + \expandafter\FD@printable@v + \else + \expandafter\FD@printable@vi + \fi +} +\begingroup + \catcode`3=\catcode`a + \catcode`2=\catcode`a + \@firstofone{\gdef\FD@printable@v} {% + \toks@=\expandafter{\the \expandafter\toks@ \FD@printable@32}% + \FD@printable@ + } +\endgroup +\def\FD@printable@vi#1{% + \if \ifnum `#1<\@xxxii 1\else \ifnum `#1>126 1\else 0\fi\fi 1% + \toks@=\expandafter{\the\expandafter\toks@ + \expandafter\PrintChar \expandafter{\number`#1}% + }% + \else + \toks@=\expandafter{\the\expandafter\expandafter\expandafter\toks@ + \csname FD@printable@\number`#1\endcsname}% + \fi + \FD@printable@ +} +\def\FD@printable@{\futurelet\@let@token \FD@printable@i} +\def\FD@printable@i{% + \csname FD@printable@% + \ifcat \noexpand\@let@token \noexpand\FD@printable@ + \ifx \@let@token\protect ii\else vii\fi + \else iii\fi + \endcsname +} +\def\FD@printable@ii\protect#1{% + \@ifundefined{FD@printable\expandafter\zap@space\string#1 \@empty}{% + \PackageError{fontdoc}{Command \protect#1 not allowed in string}% + \@eha + }{\csname FD@printable\expandafter\zap@space\string#1 \@empty + \endcsname}% +} +\def\FD@printable@vii{\expandafter\FD@printable@vi \string} +\expandafter\let + \csname FD@printable\string\FD@printable@\endcsname \@empty +\@namedef{FD@printable\string\PrintChar}#1{% + \if \ifnum #1<\@xxxii 1\else \ifnum #1>126 1\else 0\fi\fi 1% + \toks@=\expandafter{\the\expandafter\toks@ + \expandafter\PrintChar \expandafter{\number#1}% + }% + \else + \toks@=\expandafter{\the\expandafter\expandafter\expandafter\toks@ + \csname FD@printable@\number#1\endcsname}% + \fi + \FD@printable@ +} +\newcommand*\ExpandAndMakePrintable[3]{% + \protected@edef\@tempa{{#2}{#3}}% + \expandafter\MakePrintable \expandafter#1\@tempa +} +\def\FD@string@func#1#2{% + \relax + \ifnum \spacefactor=\@ne $\mkern1mu\else$\fi + \mathrm{#1}($% + #2% + \ifnum \spacefactor=\@ne $\mkern-1mu\else $\fi)\mkern1mu$% + \spacefactor=\@ne +} +\newcommand\TypesetStringExpression[1]{% + \protected@edef\@tempa{% + \noexpand\MakePrintable \noexpand\@tempa {FD@swa}{#1}% + }% + \@tempa + \FD@typeset@string{\@tempa}% +} +\def\FD@typeset@string#1{% + \mbox{% + \normalfont\ttfamily + \spacefactor=\@ne + #1% + \ifnum \spacefactor=\@ne $\mkern-1mu\m@th$\fi + }% +} +\let\ifFD@swa\iffalse +\DeclareRobustCommand\str[1]{\FD@string@func{s}{#1}} +\@namedef{FD@printable\string\str}#1{% + \MakePrintable\@tempa{FD@swa}{#1}% + \begingroup + \let\PrintChar=\FD@quoted@PrintChar + \if \ifFD@swa \@ifundefined{FD@s-\@tempa}{0}{1}\else 0\fi 1% + \expandafter + \endgroup + \csname FD@s-\@tempa\endcsname + \else + \endgroup + \toks@=\expandafter{\the\expandafter\toks@ + \expandafter\str \expandafter{\@tempa}}% + \@tempswatrue + \fi + \FD@printable@ +} +\DeclareRobustCommand\strint[1]{\FD@string@func{int}{#1}} +\@namedef{FD@printable\string\strint}#1{% + \MakePrintable\@tempa{FD@swa}{#1}% + \protected@edef\@tempa{% + \ifFD@swa \protect\FD@simple@int \else \strint \fi{\@tempa}% + } + \toks@=\expandafter{\the\expandafter\toks@ \@tempa}% + \@tempswatrue + \FD@printable@ +} +\DeclareRobustCommand\macroparameter[1]{% + \gdef\FD@expression{\text{\normalfont\itshape\##1}}% + \global\chardef\FD@priority=5% + \global\FD@bracket@level=\z@ + \FD@evaluate@false +} +\@namedef{FD@printable\string\macroparameter}#1{% + \toks@=\expandafter{\the\toks@\textrm{\emph{\##1}}}% + \@tempswatrue + \FD@printable@ +} +\newcommand\TypesetIntegerExpression[1]{% + \protected@edef\@tempa{#1}% + \expandafter\FD@eval@expr \expandafter{\@tempa}% + \FD@expression +} +\newcount\FD@result +\newcount\FD@bracket@level +\def\FD@evaluate@true{\global\let\ifFD@evaluate@\iftrue} +\def\FD@evaluate@false{\global\let\ifFD@evaluate@\iffalse} +\FD@evaluate@false +\def\FD@eval@expr#1{% + \expandafter\expandafter \expandafter\ifx + \expandafter\@car#1\x@relax\@nil \protect + #1% + \else\ifcat \expandafter\noexpand \@car#1\x@relax\@nil 0% + \global\FD@result=#1\x@relax + \xdef\FD@expression{\the\FD@result}% + \global\chardef\FD@priority=\ifnum \FD@result<\z@ 4\else 6\fi + \global\FD@bracket@level=\z@ + \else + \begingroup + \MakePrintable\@tempa{FD@swa}{#1}% + \global\FD@bracket@level=\ifFD@swa\z@\else\@ne\fi + \protected@xdef\FD@expression{\protect\mbox{\texttt{\@tempa}}}% + \endgroup + \global\chardef\FD@priority=5% + \FD@evaluate@false + \fi\fi +} +\DeclareRobustCommand\add[2]{% + \begingroup + \FD@eval@expr{#1}% + \let\@tempa=\FD@expression + \ifFD@evaluate@ \a@count=\FD@result \fi + \b@count=\FD@bracket@level + \FD@eval@expr{#2}% + \protected@xdef\FD@expression{\@tempa+\FD@expression}% + \ifFD@evaluate@ \global\advance \FD@result \a@count \fi + \ifnum \FD@bracket@level<\b@count + \global\FD@bracket@level=\b@count + \fi + \global\chardef\FD@priority=\z@ + \endgroup +} +\DeclareRobustCommand\sub[2]{% + \begingroup + \FD@eval@expr{#1}% + \let\@tempa=\FD@expression + \ifFD@evaluate@ \a@count=\FD@result \fi + \b@count=\FD@bracket@level + \FD@eval@expr{#2}% + \ifnum \FD@priority<\@ne \FD@bracket@expression \fi + \protected@xdef\FD@expression{\@tempa-\FD@expression}% + \ifFD@evaluate@ + \advance \a@count -\FD@result + \global\FD@result=\a@count + \fi + \ifnum \FD@bracket@level<\b@count + \global\FD@bracket@level=\b@count + \fi + \global\chardef\FD@priority=\z@ + \endgroup +} +\def\FD@subexpression#1{${% + \advance \binoppenalty \FD@commapenalty + \advance \relpenalty \FD@commapenalty + \advance \FD@commapenalty \FD@commapenalty + $#1$}$% +} +\newcount\FD@commapenalty +\FD@commapenalty=\binoppenalty +\advance \FD@commapenalty \relpenalty +\def\FD@bracket@expression{% + \protected@xdef\FD@expression{% + \ifcase\FD@bracket@level \or \protect\bigl \or \protect\Bigl \or + \protect\biggl \else \protect\Biggl \fi (% + \protect\FD@subexpression{\FD@expression}% + \ifcase\FD@bracket@level \or \protect\bigr \or \protect\Bigr \or + \protect\biggr \else \protect\Biggr \fi )% + }% + \global\chardef\FD@priority=5% + \global\advance \FD@bracket@level \@ne +} +\DeclareRobustCommand\int[1]{% + \begingroup + \MakePrintable\@tempa{FD@swa}{#1}% + \protected@xdef\FD@expression{% + \ifFD@swa + \text{\protect\FD@simple@int{\@tempa}}% + \else + \protect\FD@integer@func{int}{\@tempa}% + \fi + }% + \global\chardef\FD@priority=5% + \global\FD@bracket@level=\ifFD@swa\z@\else\@ne\fi + \FD@evaluate@false + \endgroup +} +\def\FD@simple@int#1{{\normalfont\itshape #1\/}} +\def\FD@integer@func#1#2{% + \mathop{\mathrm{#1}{}}(\text{\FD@typeset@string{#2}})% +} +\DeclareRobustCommand\neg[1]{% + \FD@eval@expr{#1}% + \ifnum 5>\FD@priority \FD@bracket@expression \fi + \protected@xdef\FD@expression{-\FD@expression}% + \global\chardef\FD@priority=4% + \ifFD@evaluate@ \global\FD@result=-\FD@result \fi +} +\DeclareRobustCommand\mul[2]{% + \begingroup + \FD@eval@expr{#1}% + \ifnum \FD@priority<\@ne \FD@bracket@expression \fi + \let\@tempa=\FD@expression + \ifFD@evaluate@ \a@count=\FD@result \fi + \b@count=\FD@bracket@level + \let\FD@left@priority=\FD@priority + \FD@eval@expr{#2}% + \ifnum \FD@priority<\@ne \FD@bracket@expression \fi + \protected@xdef\FD@expression{% + \@tempa + \if \ifnum \FD@left@priority=\@ne e% + \else\ifnum \FD@priority<\thr@@ e% + \else\ifodd \FD@priority i\else e\fi\fi\fi e% + \cdot + \fi + \FD@expression + }% + \ifFD@evaluate@ \global\multiply \FD@result \a@count \fi + \ifnum \FD@bracket@level<\b@count + \global\FD@bracket@level=\b@count + \fi + \a@count=% + \ifnum \FD@priority=\@ne 1% + \else\ifnum \FD@left@priority=\@ne 2% + \else\ifodd\FD@left@priority + \ifodd\FD@priority 5\else 3\fi + \else + \ifodd\FD@priority 4\else 2\fi + \fi\fi\fi + \global\chardef\FD@priority=\a@count + \endgroup +} +\DeclareRobustCommand\div[2]{% + \begingroup + \FD@eval@expr{#1}% + \ifnum \FD@priority<\@ne \FD@bracket@expression \fi + \let\@tempa=\FD@expression + \ifFD@evaluate@ \a@count=\FD@result \fi + \b@count=\FD@bracket@level + \FD@eval@expr{#2}% + \ifnum 4>\FD@priority \FD@bracket@expression \fi + \ifnum \FD@bracket@level<\b@count + \global\FD@bracket@level=\b@count + \fi + \protected@xdef\FD@expression{% + \@tempa + \ifcase\FD@bracket@level \or \protect\big \or \protect\Big \or + \protect\bigg \else \protect\Bigg \fi /% + \FD@expression + }% + \ifFD@evaluate@ + \divide \a@count \FD@result + \global\FD@result=\a@count + \fi + \global\chardef\FD@priority=\@ne + \endgroup +} +\def\FD@eval@spec@expr#1#2#3{% + \expandafter\ifx \@car#1\x@relax\@nil #2% + #3#1% + \else + \FD@eval@expr{#1}% + \fi +} +\DeclareRobustCommand\max[2]{% + \begingroup + \toks@={}% + \a@count=-\maxdimen + \b@count=\z@ + \FD@eval@spec@expr{\max{#1}{#2}}{\max}{\FD@maxmin@comma}% + \ifnum \a@count>\FD@bracket@level + \global\FD@bracket@level=\a@count + \fi + \protected@xdef\FD@expression{% + \protect\plainmax + \ifcase\FD@bracket@level \protect\@firstofone \or \protect\bigl + \or \protect\Bigl \or \protect\biggl \else \protect\Biggl + \fi{\{}% + \the\toks@ + \protect\FD@subexpression{\FD@expression}% + \ifcase\FD@bracket@level \protect\@firstofone \or \protect\bigl + \or \protect\Bigl \or \protect\biggl \else \protect\Biggl + \fi{\}}% + }% + \ifFD@evaluate@ + \ifnum \a@count>\FD@result \global\FD@result=\a@count \fi + \fi + \global\chardef\FD@priority=5% + \global\advance \FD@bracket@level \@ne + \endgroup +} +\DeclareRobustCommand\min[2]{% + \begingroup + \toks@={}% + \a@count=\maxdimen + \b@count=\z@ + \FD@eval@spec@expr{\min{#1}{#2}}{\min}{\FD@maxmin@comma}% + \ifnum \a@count>\FD@bracket@level + \global\FD@bracket@level=\a@count + \fi + \protected@xdef\FD@expression{% + \protect\plainmin + \ifcase\FD@bracket@level \protect\@firstofone \or \protect\bigl + \or \protect\Bigl \or \protect\biggl \else \protect\Biggl + \fi{\{}% + \the\toks@ + \protect\FD@subexpression{\FD@expression}% + \ifcase\FD@bracket@level \protect\@firstofone \or \protect\bigl + \or \protect\Bigl \or \protect\biggl \else \protect\Biggl + \fi{\}}% + }% + \ifFD@evaluate@ + \ifnum \a@count<\FD@result \global\FD@result=\a@count \fi + \fi + \global\chardef\FD@priority=5% + \global\advance \FD@bracket@level \@ne + \endgroup +} +\def\FD@maxmin@comma#1#2#3{% + \FD@eval@spec@expr{#2}{#1}{\FD@maxmin@comma}% + \toks@=\expandafter{\the\expandafter\toks@ + \expandafter\protect \expandafter\FD@subexpression + \expandafter{\FD@expression}% + ,\penalty\FD@commapenalty\,% + } + \ifFD@evaluate@ + \ifnum \a@count \ifx\max#1<\else>\fi \FD@result + \a@count=\FD@result + \fi + \fi + \ifnum \b@count<\FD@bracket@level \b@count=\FD@bracket@level \fi + \FD@eval@spec@expr{#3}{#1}{\FD@maxmin@comma}% +} +\DeclareRobustCommand\half[1]{% + \begingroup + \FD@eval@expr{#1}% + \ifnum \FD@priority<\@ne \FD@bracket@expression \fi + \a@count=% + \ifnum \FD@priority=\@ne 1% + \else\ifodd\FD@priority 5% + \else 3\fi\fi + \global\chardef\FD@priority=\a@count + \protected@xdef\FD@expression{% + \protect\frac{1}{2}% + \ifnum \FD@priority>\thr@@ \else \cdot \fi + \FD@expression + }% + \ifFD@evaluate@ + \ifodd \FD@result + \global\advance \FD@result \@ne + \global\divide \FD@result \tw@ + \ifodd\FD@result \global\advance \FD@result \m@ne \fi + \else + \global\divide \FD@result \tw@ + \fi + \fi + \endgroup +} +\DeclareRobustCommand\otherhalf[1]{% + \begingroup + \FD@eval@expr{#1}% + \ifnum \FD@priority<\@ne \FD@bracket@expression \fi + \a@count=% + \ifnum \FD@priority=\@ne 1% + \else\ifodd\FD@priority 5% + \else 3\fi\fi + \global\chardef\FD@priority=\a@count + \protected@xdef\FD@expression{% + \protect\frac{1}{2}% + \ifnum \FD@priority>\thr@@ \else \cdot \fi + \FD@expression + }% + \ifFD@evaluate@ + \ifodd \FD@result + \global\advance \FD@result \@ne + \global\divide \FD@result \tw@ + \ifodd\FD@result\else \global\advance \FD@result \m@ne \fi + \else + \global\divide \FD@result \tw@ + \fi + \fi + \endgroup +} +\DeclareRobustCommand\scale[2]{% + \begingroup + \FD@eval@expr{#1}% + \ifnum \FD@priority<\@ne \FD@bracket@expression \fi + \let\@tempa=\FD@expression + \ifFD@evaluate@ \a@count=\FD@result \fi + \b@count=\FD@bracket@level + \let\FD@left@priority=\FD@priority + \FD@eval@expr{#2}% + \if \ifnum \FD@bracket@level<\@ne \ifnum \FD@priority>\thr@@ + 1\else 0\fi\else 0\fi 1% + \protected@xdef\FD@expression{% + \protect\frac{\FD@expression}{1000}% + \if \ifnum \FD@left@priority<\thr@@ e\else + \ifodd \FD@left@priority i\else e\fi\fi e% + \cdot + \fi + \@tempa + } + \global\chardef\FD@priority=% + \ifnum \FD@left@priority=\@ne 1\else + \ifodd\FD@left@priority 5\else 3\fi\fi + \global\FD@bracket@level=\b@count + \else + \ifnum \FD@priority<\@ne \FD@bracket@expression \fi + \protected@xdef\FD@expression{% + \@tempa + \if \ifnum \FD@left@priority=\@ne e% + \else\ifnum \FD@priority<\thr@@ e% + \else\ifodd \FD@priority i\else e\fi\fi\fi e% + \cdot + \fi + \FD@expression + \ifcase\FD@bracket@level \or \protect\big \or \protect\Big + \or \protect\bigg \else \protect\Bigg \fi /1000% + }% + \ifnum \FD@bracket@level<\b@count + \global\FD@bracket@level=\b@count + \fi + \global\chardef\FD@priority=\@ne + \fi + \ifFD@evaluate@ + \global\multiply \FD@result \a@count + \global\divide \FD@result 500 + \ifodd \FD@result + \global\advance \FD@result \ifnum 0>\FD@result - \fi \@ne + \fi + \global\divide \FD@result \tw@ + \fi + \endgroup +} +\def\ifnumber#1#2#3\then{% + \FD@evaluate@false + \generic@if{% + $\TypesetIntegerExpression{#1}#2\TypesetIntegerExpression{#3}$% + }% +} + +\newcommand\setint[2]{% + \Bheading{Default} \(\TypesetIntegerExpression{\int{#1}}\) = + \(\TypesetIntegerExpression{#2}\)% +} +\newcommand\setstr[2]{% + \Bheading{Default} \TypesetStringExpression{\str{#1}} = + \TypesetStringExpression{#2}% +} +\newcommand\setdim[2]{% + \a@dimen=#2\relax + \Bheading{Default} \TypesetStringExpression{#1} dimen = \the\a@dimen +} +\def\setcommand#1{\ifx#1\undefined@command + \expandafter\gdef\expandafter#1\else + \expandafter\gdef\expandafter\a@command\fi} +\newcommand\resetint[2]{% + \Bheading{Value} \(\TypesetIntegerExpression{\int{#1}}\) = + \(\TypesetIntegerExpression{#2}\)% +} +\newcommand\resetstr[2]{% + \Bheading{Value} \TypesetStringExpression{\str{#1}} = + \TypesetStringExpression{#2}% +} +\newcommand\resetdim[2]{% + \a@dimen=#2\relax + \Bheading{Value} \TypesetStringExpression{#1} dimen = \the\a@dimen +} +\def\resetcommand#1{\gdef#1} +\def\ifisint#1\then{% + \generic@if{integer $\TypesetIntegerExpression{\int{#1}}$ set}% +} +\def\ifisstr#1\then{% + \generic@if{string \TypesetStringExpression{#1} set}% +} +\def\ifisdim#1\then{% + \generic@if{dimension \TypesetStringExpression{#1} set}% +} +\def\ifiscommand#1\then{% + \generic@if{command \normalfont{\ttfamily\string#1} set}% +} +\def\offcommand#1{\Bheading{Turn off} \texttt{\string#1}} +\def\oncommand#1{\Bheading{Turn on} \texttt{\string#1}} +\newcommand\SetStringVariable[2]{% + \protected@edef\@tempa{\noexpand\MakePrintable \noexpand\@tempa + {FD@swa}{#2}}% + \@tempa + \protected@edef\@tempa{% + \toks@=\noexpand\expandafter{\noexpand\the \toks@ \@tempa}% + \ifFD@swa \noexpand\@tempswatrue \fi + }% + \protected@edef\@tempb{\noexpand\MakePrintable \noexpand\@tempb + {FD@swa}{#1}}% + \@tempb + \ifFD@swa + \begingroup + \let\PrintChar=\FD@quoted@PrintChar + \global\expandafter\let \csname FD@s-\@tempb\endcsname \@tempa + \endgroup + \else + \PackageError{fontdoc}{Names of string variables must be + simple\MessageBreak if they are to be assigned values}\@eha + \fi +} +\def\foreach(#1)#2{% + \def\next##1\endfor(#1){% + \@for\@tempa:=#2\do{% + \SetStringVariable{#1}{\@tempa}% + ##1% + }% + }% + \next +} +\def\comment{\par\noindent} +\let\begincomment=\iftrue +\let\endcomment=\fi +%%% From file: fimain.dtx +\def\inputetx#1{% + \begingroup + \edef\lowercase@file{\lowercase{% + \edef\noexpand\lowercase@file{#1}% + }}% + \lowercase@file + \global\slot@number=0% + \FD@slot@known@true + \IfFileExists{\lowercase@file.etx}{% + \def\relax{\let\relax=\x@relax\iffalse}% + \let\encoding=\fi + \outer\x@cs\def{endencoding}{\endinput}% + \@@input \@filef@und + \let\relax=\x@relax + }{% + \PackageError{fontdoc}{File #1.etx not found}% + {\@eha\MessageBreak You can \protect\inputetx\space + some other file now, if you want.}% + } + \endgroup +} +\def\encoding{% + \par + \ifFD@spec@ \addvspace{\bigskipamount}\fi + \begin{flushleft} + \global\slot@number=\z@ +} +\outer\def\endencoding{% + \end{flushleft} + \ifFD@spec@ \addvspace{\bigskipamount}\fi +} +\newcommand\setslot[1]{% + \protected@edef\slot@name{% + \noexpand\MakePrintable \noexpand\slot@name {FD@swa}{#1}% + }% + \slot@name + \FD@tight@true + \Aheading{Slot + \ifFD@slot@known@ + \the\slot@number\space + \else + \(\FD@slot@expression + \the\slot@number\) + \fi + `\FD@typeset@string{\slot@name}'% + }% + \protected@edef\@currentlabel{% + \ifFD@slot@known@ + \the\slot@number + \else + \protect\(% + \FD@slot@expression+\the\slot@number + \protect\)% + \fi + \space(\protect\FD@typeset@string{\slot@name})% + }% + \ifFD@slot@known@ \ifslot@comment@ \comment{\slot@comment}\fi\fi +} +\def\endsetslot{% + \global\advance \slot@number \@ne + \FD@tight@false +} +\newcount\slot@number +\def\FD@slot@known@true{\global\let\ifFD@slot@known@\iftrue} +\def\FD@slot@known@false{\global\let\ifFD@slot@known@\iffalse} +\FD@slot@known@true +\newcommand\nextslot[1]{% + \FD@evaluate@true + \FD@eval@expr{#1}% + \ifFD@evaluate@ + \global\slot@number=\FD@result + \FD@slot@known@true + \else + \global\let\FD@slot@expression=\FD@expression + \global\slot@number=\z@ + \FD@slot@known@false + \fi +} +\newcommand\skipslots[1]{% + \FD@evaluate@true + \FD@eval@expr{#1}% + \ifFD@evaluate@ + \global\advance \slot@number \FD@result + \else + \ifFD@slot@known@ + \global\let\FD@slot@expression=\FD@expression + \else + \protected@xdef\FD@slot@expression{% + \FD@slot@expression+\FD@expression + }% + \fi + \FD@slot@known@false + \fi +} +\newcommand\setleftboundary[1]{% + \protected@edef\slot@name{% + \noexpand\MakePrintable \noexpand\slot@name {FD@swa}{#1}% + }% + \slot@name + \FD@tight@true + \Aheading{Left boundary `\FD@typeset@string{\slot@name}'}% + \protected@edef\@currentlabel{% + left boundary (\protect\FD@typeset@string{\slot@name})% + }% +} +\let\endsetleftboundary=\FD@tight@false +\newcommand\setrightboundary[1]{% + \Aheading{Right boundary slot + \ifFD@slot@known@ + \the\slot@number\space + \else + \(\FD@slot@expression + \the\slot@number\) + \fi + `\TypesetStringExpression{#1}'% + }% + \global\advance \slot@number \@ne +} +\newcommand\ligature[3]{% + \Bheading{\ifFD@spec@ Ordinary ligature\else Ligature\fi} + \@nameuse{FD@lig-#1}{#2}{#3}% +} +\newcommand\Ligature[3]{% + \Bheading{\ifFD@spec@ Mandatory ligature\else Ligature\fi} + \@nameuse{FD@lig-#1}{#2}{#3}% +} +\newcommand\oddligature[4]{% + \Bheading{Odd\footnote{#1} ligature} + \@nameuse{FD@lig-#2}{#3}{#4}% +} +\x@cs\def{FD@lig-LIG}#1#2{% + \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}% + ${}\rightarrow{}$\typeset@glyph{#2}% +} +\x@cs\def{FD@lig-/LIG}#1#2{% + \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}% + ${}\rightarrow{}$% + \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#2}% +} +\x@cs\def{FD@lig-LIG/}#1#2{% + \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}% + ${}\rightarrow{}$% + \typeset@glyph{#2}${}*{}$\typeset@glyph{#1}% +} +\x@cs\def{FD@lig-/LIG/}#1#2{% + \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}% + ${}\rightarrow{}$% + \FD@typeset@string{\slot@name}${}*{}$% + \typeset@glyph{#2}${}*{}$\typeset@glyph{#1}% +} +\x@cs\def{FD@lig-/LIG>}#1#2{% + \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}% + ${}\rightarrow{}$% + \FD@typeset@string{\slot@name}${}*\lfloor$\typeset@glyph{#2}% +} +\x@cs\def{FD@lig-LIG/>}#1#2{% + \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}% + ${}\rightarrow{}$% + \typeset@glyph{#2}${}*\lfloor$\typeset@glyph{#1}% +} +\x@cs\def{FD@lig-/LIG/>}#1#2{% + \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}% + ${}\rightarrow{}$% + \FD@typeset@string{\slot@name}${}*\lfloor$% + \typeset@glyph{#2}${}*{}$\typeset@glyph{#1}% +} +\x@cs\def{FD@lig-/LIG/>>}#1#2{% + \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}% + ${}\rightarrow{}$% + \FD@typeset@string{\slot@name}${}*{}$% + \typeset@glyph{#2}${}*\lfloor$\typeset@glyph{#1}% +} +\def\nextlarger#1{\Bheading{Next larger} \typeset@glyph{#1}} +\def\makerightboundary#1{% + \Bheading{Right boundary marker slot} designation \typeset@glyph{#1}% +} +\newcommand*\Unicode[2]{% + \comment{% + \spaceskip=\fontdimen2\font minus 1.1\fontdimen4\font + Unicode character \FD@codepoint{#1}% + \ifx \par#2\par \else , \FD@charname{#2}\fi.% + \linepenalty=300\par + }% +} +\newcommand*\textunicode[2]{% + \FD@codepoint{#1} \ifx\par#2\par\else(\FD@charname{#2})\fi +} +\providecommand*\FD@codepoint[1]{\texttt{U+\uppercase{#1}}} +\providecommand*\FD@charname[1]{\textsc{\lowercase{#1}}} +\def\varchar{\Bheading{Extensible glyph:}} +\def\vartop#1{\Bheading{Top} \typeset@glyph{#1}} +\def\varmid#1{\Bheading{Middle} \typeset@glyph{#1}} +\def\varbot#1{\Bheading{Bottom} \typeset@glyph{#1}} +\def\varrep#1{\Bheading{Repeated} \typeset@glyph{#1}} +\let\endvarchar\relax +\newif\ifslot@comment@ +\slot@comment@false +\def\slot@comment{} +\newcommand\setslotcomment[1]{% + \slot@comment@true + \gdef\slot@comment{#1}% +} +\newcommand\resetslotcomment[1]{\gdef\slot@comment{#1}} +\newcommand\unsetslotcomment{% + \slot@comment@false + \global\let\slot@comment\@empty +} +\let\slot@font=\nullfont +\newcommand\useexamplefont[1]{\font\slot@font=#1 } +\newcommand\slotexample{% + \ifFD@slot@known@{\slot@font\char\slot@number}\fi +} +\newcommand\setfontdimen[2]{% + \Bheading{Fontdimen} \TypesetStringExpression{#1} is + \(\TypesetIntegerExpression{\int{#2}}\)% +} +\newcommand\ifdirect{\generic@if{direct}} +\def\inputmtx#1{% + \begingroup + \edef\lowercase@file{\lowercase{% + \edef\noexpand\lowercase@file{#1}% + }}% + \lowercase@file + \let\endmetrics@hook=\@empty + \IfFileExists{\lowercase@file.mtx}{% + \skip@mtx@preamble + \@@input \@filef@und + \let\relax=\x@relax + }{% + \PackageError{fontdoc}{File #1.mtx not found}% + {\@eha\MessageBreak You can \protect\inputmtx\space + some other file now, if you want.}% + } + \endmetrics@hook + \endgroup +} +\def\skip@mtx@preamble{% + \def\relax{\let\relax=\x@relax\iffalse}% + \let\metrics=\fi + \outer\x@cs\def{endmetrics}{\endinput}% +} +\def\metrics{% + \begin{flushleft}% + \let\endmetrics@hook=\@empty +} +\outer\def\endmetrics{% + \endmetrics@hook + \end{flushleft}% +} +\def\ProvidesMtxPackage#1{% + \endmetrics@hook + \announce@package{#1}% + \def\endmetrics@hook{\finish@package{#1}} + \global\x@cs\let{FD@pack-#1}\@empty +} +\def\announce@package#1{% + \Aheading{[Start of metric package \textsf{#1}.}% +} +\def\finish@package#1{% + \Aheading{End of metric package \textsf{#1}.]}% + \par\addvspace\medskipamount +} +\newcommand\usemtxpackage[2][\x@relax]{% + \ifx \x@relax#1% + \@for\@tempa:=#2\do{% + \x@cs\ifx{FD@pack-\@tempa}\@empty \else + \inputmtx{\@tempa}% + \fi + }% + \else + \@tempswafalse + \@for\@tempa:=#1\do{% + \x@cs\ifx{FD@pack-\@tempa}\@empty \else \@tempswatrue \fi + }% + \if@tempswa + \inputmtx{#2}% + \fi + \fi +} +\newcommand\setkern[3]{% + \Bheading{Kern} \typeset@glyph{#1}${{}+{}}$\typeset@glyph{#2}% + ${}\rightarrow \TypesetIntegerExpression{#3}$% +} +\newcommand\resetkern[3]{% + \Bheading{Override kern} \typeset@glyph{#1}${{}+{}}$\typeset@glyph{#2}% + ${}\rightarrow \TypesetIntegerExpression{#3}$% +} +\newcommand\setleftkerning[3]{% + \Bheading{Kern} \typeset@glyph{#1} on the left like + \typeset@glyph{#2} \ConditionallyScaled{#3}} +\newcommand\setrightkerning[3]{% + \Bheading{Kern} \typeset@glyph{#1} on the right like + \typeset@glyph{#2} \ConditionallyScaled{#3}} +\newcommand\setleftrightkerning[3]{% + \Bheading{Kern} \typeset@glyph{#1} on the left and right like + \typeset@glyph{#2} \ConditionallyScaled{#3}} +\newcommand\ConditionallyScaled[1]{% + \FD@evaluate@true + \FD@eval@expr{#1}% + \@tempswatrue + \ifFD@evaluate@ \ifnum \FD@result=\@m \@tempswafalse \fi\fi + \FD@evaluate@false + \if@tempswa scaled \(\FD@expression\)\else \ignorespaces \fi +} +\DeclareRobustCommand\kerning[2]{% + \begingroup + \MakePrintable\@tempa{FD@swa}{#1}% + \MakePrintable\@tempb{FD@swa}{#2}% + \protected@xdef\FD@expression{% + \mathop{\protect\mathrm{k{}}}(% + \text{\protect\FD@typeset@string{\@tempa}}% + ,\penalty\FD@commapenalty + \text{\protect\FD@typeset@string{\@tempb}}% + )% + }% + \global\chardef\FD@priority=5% + \global\FD@bracket@level=\@ne + \FD@evaluate@false + \endgroup +} +\def\ifiskern#1#2\then{% + \generic@if{kern \typeset@glyph{#1}${}+{}$\typeset@glyph{#2} set}% +} +\newcommand\unsetkerns[2]{% + \Bheading{Remove} all kerning pairs in + \FD@typeset@string@set{#1}${}\times{}$\FD@typeset@string@set{#2}% +} +\def\FD@typeset@string@set#1{% + \toks@={}% + \@for\@tempa:=#1\do{% + \protected@edef\@tempa{% + \noexpand\MakePrintable \noexpand\@tempa {FD@swa}{\@tempa}% + }% + \@tempa + \toks@=\expandafter{\the\expandafter\toks@ + \expandafter\do \expandafter{\@tempa}}% + }% + \expandafter\FD@typeset@string@set@ \expandafter{\the\toks@}% +} +\def\FD@typeset@string@set@#1{% + \TypesetList{$\{$}{$,\penalty\FD@commapenalty{}$}% + {$,\penalty\FD@commapenalty{}$}{$,\penalty\FD@commapenalty{}$}% + {$\}$}{$\emptyset$}{\FD@typeset@string}{#1}% +} +\newcommand\noleftkerning[1]{% + \Bheading{Remove kerns} on the left of glyphs in + \FD@typeset@string@set{#1}.} +\newcommand\norightkerning[1]{% + \Bheading{Remove kerns} on the right of glyphs in + \FD@typeset@string@set{#1}.} +\newcommand\noleftrightkerning[1]{% + \Bheading{Remove kerns} on any side of glyphs in + \FD@typeset@string@set{#1}.} +\let\typeset@glyph=\TypesetStringExpression +\DeclareRobustCommand\width[1]{\FD@glyph@metric{w}{#1}} +\DeclareRobustCommand\height[1]{\FD@glyph@metric{h}{#1}} +\DeclareRobustCommand\depth[1]{\FD@glyph@metric{d}{#1}} +\DeclareRobustCommand\italic[1]{\FD@glyph@metric{i}{#1}} +\def\FD@glyph@metric#1#2{% + \begingroup + \MakePrintable\@tempa{FD@swa}{#2}% + \protected@xdef\FD@expression{% + \protect\FD@integer@func{#1}{\@tempa}% + }% + \global\chardef\FD@priority=5% + \global\FD@bracket@level=\@ne + \FD@evaluate@false + \endgroup +} +\newcommand\setglyph[1]{% + \FD@tight@true + \Aheading{Set glyph `\typeset@glyph{#1}'}% +} +\newcommand\resetglyph[1]{% + \FD@tight@true + \Aheading{Reset glyph `\typeset@glyph{#1}'}} +\let\endsetglyph=\FD@tight@false +\let\endresetglyph=\FD@tight@false +\newcommand\setrawglyph[8]{% + \Aheading{Glyph `\typeset@glyph{#1}'} + \Bheading{Taken from} slot $\TypesetIntegerExpression{#4}$ in + font \TypesetStringExpression{#2}% +} +\newcommand\setscaledrawglyph[9]{% + \Aheading{Glyph `\typeset@glyph{#1}'} + \Bheading{Taken from} slot $\TypesetIntegerExpression{#5}$ in + font \TypesetStringExpression{#2} \ConditionallyScaled{#4}% +} +\newcommand\setnotglyph[8]{% + \Aheading{Pseudoglyph `\typeset@glyph{#1-not}'}% +} +\newcommand\setscalednotglyph[9]{% + \setnotglyph{#1}{#2}{#3}{#5}{#6}{#7}{#8}{#9}% +} +\newcommand\unsetglyph[1]{% + \Aheading{Unset glyph `\typeset@glyph{#1}'}} +\newcommand\glyph[2]{% + \Bheading{Glyph} `\typeset@glyph{#1}' \ConditionallyScaled{#2}% +} +\newcommand\glyphrule[2]{% + \Bheading{Rule} $\TypesetIntegerExpression{#1}$ by + $\TypesetIntegerExpression{#2}$% +} +\newcommand\glyphspecial[1]{% + \Bheading{Special} `\TypesetStringExpression{#1}'} +\newcommand\glyphwarning[1]{% + \Bheading{Warning} `\TypesetStringExpression{#1}'} +\newcommand\movert[1]{\Bheading{Rt}~$\TypesetIntegerExpression{#1}$} +\newcommand\moveup[1]{\Bheading{Up}~$\TypesetIntegerExpression{#1}$} +\newcommand\push{\Bheading{Push}} +\newcommand\pop{\Bheading{Pop}} +\newcommand\resetwidth[1]{% + \Bheading{Reset width to $\TypesetIntegerExpression{#1}$}% +} +\newcommand\resetheight[1]{% + \Bheading{Reset height to $\TypesetIntegerExpression{#1}$}% +} +\newcommand\resetdepth[1]{% + \Bheading{Reset depth to $\TypesetIntegerExpression{#1}$}% +} +\newcommand\resetitalic[1]{% + \Bheading{Reset italic to $\TypesetIntegerExpression{#1}$}% +} +\def\glyphpcc#1#2#3{ + \push + \movert{#2} + \moveup{#3} + \glyph{#1}{1000} + \pop +} +\DeclareRobustCommand\glyphbboxright{% + \gdef\FD@expression{\protect\mathrm{glyphbboxright}} + \global\chardef\FD@priority=\tw@ + \global\FD@bracket@level=\z@ + \FD@evaluate@false +} +\newcommand\samesize[1]{% + \Bheading{Reset dimensions to those of `\typeset@glyph{#1}'.}% +} +\def\ifisglyph#1\then{\generic@if{glyph \typeset@glyph{#1} set}} +\def\ifareglyphs#1\then{% + \generic@if{all glyphs in \FD@typeset@string@set{#1} are set}% +} +\def\ifisinslot#1#2\then{% + \generic@if{glyph \typeset@glyph{#1} assigned to slot + $\TypesetIntegerExpression{#2}$}% +} +\def\ifoption#1\then{% + \generic@if{option \TypesetStringExpression{#1}}% +} +\endinput +%% +%% End of file `fontdoc.sty'. |