%% %% 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') %% fimapgen.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.933} \NeedsTeXFormat{LaTeX2e}[1995/06/01] \ProvidesPackage{fontdoc} [2007/01/23 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:% }% \texttt{U+\@tempa}% \special{html:}% }% } \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\plainneg=\neg \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}{% \FD@relax@encoding@tricks \@@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\FD@relax@encoding@tricks{% \def\relax{\let\relax=\x@relax\iffalse}% \let\encoding=\fi \outer\x@cs\def{endencoding}{\endinput}% } \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}}} \newcommand\charseq[1]{% \comment{Unicode character sequence:}% \begin{IfBranch}% \def\Unicode##1##2{% \noindent\FD@codepoint{##1} \ifx\par##2\par\else(\FD@charname{##2})\fi \par }% #1% \end{IfBranch}% } \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}}% } %%% From file: fimapgen.dtx \def\mapfrags_subsystem{Map~fragments~writer} \def\declarepsencoding#1#2#3{\comment{% This file corresponds to the \FD@typeset@string{#2} encoding vector.}} \newcommand\providepsencoding[3]{} \endinput %% %% End of file `fontdoc.sty'.