diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-09 00:56:57 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-09 00:56:57 +0000 |
commit | f07bb53970ee2ecc53f81a206a3d3a67ef665e4a (patch) | |
tree | 6f57a1d62971db79e5ff023bdfd83b22cb971dc9 /Master/texmf-dist/doc/generic/ofs/ofstest.tex | |
parent | 007f67a693e4d031fd3d792df8e4d5f43e2cb2e7 (diff) |
doc 6
git-svn-id: svn://tug.org/texlive/trunk@85 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/generic/ofs/ofstest.tex')
-rw-r--r-- | Master/texmf-dist/doc/generic/ofs/ofstest.tex | 811 |
1 files changed, 811 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/ofs/ofstest.tex b/Master/texmf-dist/doc/generic/ofs/ofstest.tex new file mode 100644 index 00000000000..e3a38d32400 --- /dev/null +++ b/Master/texmf-dist/doc/generic/ofs/ofstest.tex @@ -0,0 +1,811 @@ +%% This file does many tests with fonts installed in OFS +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% February 2004 Petr Olsak +% April 2004 + +% You can print probe-texts or tables of fonts of choosen families. +% The interactive mode is activated if you type on command prompt: + +% Usage: tex ofstest [file1, file2, ...] +% or: csplain ofstest [file1, file2, ...] +% or: tex ofstest +% * <enter> +% +% and follow the notices on the screen. +% +% You can \input this macro in your document. +% The interactive mode is disabled automatically in this situation. Example: +% +% \input ofstest [a35] +% \cfam Times \tables \text \mixed +% \cfam Courier \tables \text \mixed +% \end + +{\nopagenumbers} % usage: tex ofstest [a35] or csplain ofstest [a35] + +\ifx\setfonts\undefined \input ofs \relax \fi + +\ifx\protectreading\undefined + \errmessage{Sorry, I need the OFS version <May 2004> at least.} +\endinput \fi + +\let\displaymessage=\wlog + +\loadingenc=1 + +\let\stmath=\relax + +\ifx\chyph\undefined + \def\textlang{en} + \def\fotenc{8t} +\else + \chyph + \def\textlang{cz} + \def\fotenc{8z} +\fi + +\fontdef\rmfont [CMRoman-rm/10] +\fontdef\itfont [CMRoman-it/10] +\fontdef\boldfont [CMRoman-bf/10] +\fontdef\nttfont [CMTypewriter-rm/10] +\fontdef\lttfont [Courier-rm/7pt] + +\parindent=10pt +\emergencystretch=3em +\advance\hoffset by22mm + +\hsize=143mm + +\lineskiplimit=-5pt + +\headline={\lttfont \spaceskip=0pt + OFS test \csname datum:\textlang\endcsname \ \dotfill \ \the\pageno} +\footline={} + +%%% Main loop of the program + +\def\runtest {\versiontext \testinteractive \readfamily \onestep} + +\def\testinteractive{\ifnum\inputlineno=0 \else \let\readfamily=\relax + \let\onestep=\relax \let\trydeclare=\relax \fi} + +\def\onestep { + \message{^^J*** What to do with family \thisfamily\space?^^J + \space\space\space (type command or \string\help): } + \read-1 to \command + \if \relax \expandafter\expandafter\expandafter \noexpand + \expandafter \readfirsttoken \command:\end + \else \expandafter \def\expandafter \command + \expandafter {\expandafter \cfam \command} + \fi + \ifx \thisfamily\astik + \def\loopcommands{} + \expandafter \pickuploopcommands \command ^^X + \ifx \loopcommands\empty \else + \bgroup + \def\ofslistfamily ##1{% + \def\tmpa ####1!.####2/{\def\thisfamily{####2}}% + \expandafter\tmpa\string##1/% + \loopcommands\relax + }% + \def\ofslisttext ##1{\if^^J\readfirsttoken ##1:\end + \edef\fromfile{\readothertokens ##1:\end}% + \else \edef\fromfile{##1}\fi} + \ofslistfamilies + \egroup + \fi + \fi + \command \relax + \onestep +} +\long\def\pickuploopcommands #1#2^^X{% + \ifx \list #1 \addloopcommand #1 \fi + \ifx \table #1 \addloopcommand #1 \fi + \ifx \text #1 \addloopcommand #1 \fi + \ifx \mixed #1 \addloopcommand #1 \fi + \ifx \math #1 \addloopcommand #1 \fi + \ifx \abet #1 \addloopcommand #1 \fi + \ifx \chars #1 \addloopcommand #1 \fi + \ifx \all #1 \addloopcommand #1 \fi + \def\tmpa{#2} + \let\next=\pickuploopcommands + \ifx \tmpa\empty \def\next^^X{}\fi + \ifx \tmpa\space \def\next ##1^^X{}\fi + \next #2^^X +} +\def\addloopcommand #1{\expandafter\def + \expandafter\loopcommands \expandafter{\loopcommands#1}} + +%%% \cfam + +\def\thisfamily{*} + +\def\readfamily {\message{^^J*** Type family name without brackets (or ? or *): } + \read-1 to \response + \expandafter \testfirsttoken \response ^^X + \if \noexpand\nextchar \relax \let\nextread=\readfamily + \ifx\nextchar\par \showfonts \hint \fi + \expandafter \response \expandafter \relax + \else \expandafter \reset \response \to\thisfamily + \expandafter \testfamily \fi + \nextread +} +\def\testfamily { + \knownfam \thisfamily? \iftrue \let\nextread=\relax + \else \ifx\thisfamily\onequestion \showfonts \hint + \let\nextread=\readfamily + \else \ifx\thisfamily\astik + \let\nextread=\relax + \else \message{ ... Sorry, unknown family.^^J + ... use exactly upper/lower letters^^J} \hint + \let\nextread=\readfamily + \fi \fi \fi +} +\def\nreadfamily #1 {\edef\tmpa{#1}% + \ifx\tmpa\onequestion \help + \else + \knownfam #1? \iftrue \edef\thisfamily{#1} + \else \ifx\tmpa\astik \edef\thisfamily{#1}\else + \message{ ... Sorry, unknown family "#1".^^J}\fi \fi \fi +} +\def\cfam{\let\interact=\readfamily \let\nointeract=\nreadfamily + \futurelet \nextchar \donextchar} + +\def\donextchar {\if \noexpand\nextchar \relax + \expandafter \interact + \else \expandafter \nointeract \fi} + +\def\reset #1 \to #2{\def#2{#1}} + +\def\testfirsttoken{\futurelet \nextchar \ignorerest} +\long\def\ignorerest #1^^X{} + +\let\famlist=\showfonts + +\def\onequestion{?} \def\astik{*} +\def\hint{\immediate\write16 + { ... you can read more declaration files by \string\decl}} + +%%% Help texts + +\def\help {\message{commands:^^J + \noexpand\list ..... List all variants of the family \thisfamily^^J + \string \table(s) . Tables of all variants of the family \thisfamily^^J + \noexpand\abet ..... One line alphabet/digits sample for each variant^^J + \noexpand\chars .... Print list of available characters including TeX sequences^^J + \noexpand\text ..... One paragraph in all variants of the family \thisfamily^^J + \noexpand\mixed .... Paragraph with fonts combined from + \string\rm, \string\bf, \string\it \space and \string\bi^^J + \noexpand\math ..... Mathematics text combined by fonts from \thisfamily^^J + \noexpand\all ...... The same as \noexpand\list \noexpand\table \noexpand\abet + \noexpand\chars \noexpand\text \noexpand\mixed \noexpand\math^^J + \noexpand\setsize .. Set size of fonts (current size is "\fosize")^^J + \noexpand\cfam ..... Change current family^^J + FamName ... The same as \noexpand\cfam FamName^^J + \noexpand\rem ...... Remove current family or family given in parameter from \string\famlist^^J + -----------------------------^^J + \noexpand\famlist .. Show list of all declared families (the same as \string\showfonts)^^J + \noexpand\decl ..... Input next declaration file^^J + \noexpand\remdecl .. Remove all families of given declaration file from famlist^^J + \noexpand\help ..... This text^^J + \noexpand\morehelp . Show more help information^^J + \noexpand\fontusage \space The help screen of the OFS^^J + \noexpand\end ...... End of this session +}} +\def\morehelp {\message{ + You can type the group of commands on the one "command" prompt.^^J + For example: \noexpand\list\noexpand\tables\noexpand\text \end^^J + -- program lists all variants, prints tables and texts and exits.^^J + ---------------------------^^J + If the family is choosen as * then the commands^^J + \string\list, \string\table, \string\abet, \string\text, + \string\mixed, \string\math^^J + will be applied to all families actually declared. Others^^J + commands will be run only once after the loop over families is done.^^J + ---------------------------^^J + The commands + \string\cfam, \string\setsize, \string\decl, \string\rem, \string\remdecl^^J + can be typed alone (interactive dialog will be started)^^J + OR with one parameter separed by space or endline (no dialog is used)^^J + Example: \noexpand\cfam Times \noexpand\setsize 12pt \string\table^^J + ---------------------------^^J + You can type other TeX commands on the "command" prompt.^^J + Examples: \string\def\string\fotenc{8t} (another font encoding, + current: "\fotenc")^^J + \space\space \baselineskip 11pt (another baselineskip, + current: "\the\baselineskip")^^J + \space\space \string\def\string\fomenc{CM} (another math enconding, + current: "\fomenc")^^J + \space\space \string\def\string\textlang{en} (another language of samples, + current: "\textlang")^^J + \space\space \noexpand\notables (the \noexpand\all command will not + print tables) +}} +\def\versiontext {\message{This is ofstest macro, version <May. 2004>}} + +\def\notables {\let\table=\relax} + +%%% \list + +\def\list {\ifx\thisfamily\astik \else + \registeredfam \thisfamily? \iftrue + \gdef\newmodifylist{} + \message{^^J [\thisfamily/\fosize], encoding: \fotenc, variants:} + {\let\modifyenc=\ofsaddenctolist \def\modifyread ##1;{}\scanvariants \listvariant } + \expandafter \ifx \csname ffe?\thisfamily:\endcsname \relax + \immediate\write16 { \space\space All font encodings are allowed. + \ifx\eenc\empty\else Extra: \eenc.\fi} + \else + \immediate\write16 { \space\space Registered font encodings: + \csname ffe?\thisfamily:\endcsname. + \ifx\eenc\empty\else Extra: \eenc.\fi} + \fi + \ifx\newmodifylist\empty \else + \immediate\write16 { \space\space Modifications: { \modlist}} + \fi + \else \warnaboutskip {list} + \fi \fi +} +\def\listvariant {% + \calculatemetricfile \fontfile\fosize + \if|\eenc|\else + {\edef\fotenc{\eenc} + \calculatemetricfile \fontfile \fosize + \xdef\efontfile{\metricfile}} + \fi + \immediate\write16{ \space\space + \texvariant\space (\fontvariant) \space\space\space\metricfile\fosize + \if|\eenc|\else \space + \efontfile\fosize\fi} +} + +\def\scanvariants #1{% + {\let\loadtextfam=\testloadtextfam + \let\newvariant=\testnewvariant + \let\addtoenc=\ofsaddenctolist + \def\runvariant{% + \expandafter \ifx \csname reg!.\fontfile\endcsname \empty + \else #1\fi} + \csname fam!.\thisfamily\endcsname + \expandafter \gdef\expandafter \newmodifylist\expandafter {\newmodifylist}% + \escapechar=-1 + \expandafter \savelist \meaning \newmodifylist^^X} +} +\def\testloadtextfam #1;#2;#3;#4;#5;{\tryloadenc{#5}% + \if|#1|\else \savevariant {}#1;\rm {#5} \runvariant \fi + \if|#2|\else \savevariant {Bold}#2;\bf {#5} \runvariant \fi + \if|#3|\else \savevariant {Italic}#3;\it {#5} \runvariant \fi + \if|#4|\else \savevariant {BoldItalic}#4;\bi {#5} \runvariant \fi +} +\def\testnewvariant #1#2#3(#4) #5;#6;{% + \def\texvariant{\string #2}\def\fontvariant{#4}% + \def\fontfile{#5}\edef\eenc{#6}% + \runvariant} + +\let\oriloadtextfam=\loadtextfam +\let\orinewvariant=\newvariant + +\def\savevariant #1#2#3;#4#5{\def\texvariant{\string #4}\xdef\eenc{#5}% + \if(#2 \savethisvariant #2#3;\else \savethisvariant (#1) #2#3;\fi} +\def\savethisvariant (#1) #2;{\def\fontvariant{#1}\def\fontfile{#2}} + +\def\savelist #1->#2^^X{\gdef\modlist{#2}} + +\def\warnaboutskip #1{\wlog {The \noexpand\fotenc "\fotenc" + is unregistered in \thisfamily. + \expandafter\noexpand\csname#1\endcsname skipped.}} + +%%% \setsize + +\def\isetsize {\message{% + *** Type the new font size (in OFS fortmat)^^J + \space\space\space (Examples: "12", "12pt", "4mm", "scaled1200", "mag1.2"): } + \read -1 to\response + \expandafter \ifx \response\par \else + \expandafter \reset \response \to\response + \expandafter \setfosize \expandafter \fosize \response:\fi} + +\def\setsize {\let\interact=\isetsize + \def\nointeract ##1 {\setfosize\fosize ##1:} + \futurelet \nextchar \donextchar} + +%%% \decl + +\def\declare {\message{^^J*** Type declaration file name (allfonts for example): } + \read-1 to \infile + \input \infile +} +\def\ndeclare #1 {\input #1 + \ifx \thisfamily\onequestion \expandafter \readfamily \fi +} +\def\decl {\let\interact=\declare \let\nointeract=\ndeclare + \futurelet \nextchar \donextchar} + +\let\trydeclare=\declare + +\def\rundeclare {\versiontext \testinteractive \trydeclare \readfamily \onestep} + + +%%% \rem + +\def\removecode {\ifx\removefamily\astik + \message{ ... Sorry, you cannot remove * (all) families.^^J + ... use \noexpand\cfam to declare the family name^^J + ... use \noexpand\undecl to remove more families.^^J + ... use \noexpand\remove FamilyName to remove FamilyName} + \else \doremovefam \fi +} +\def\doremovefam { + \knownfam \removefamily? \iftrue + \edef\act{\def\noexpand\tmpa + ####1\noexpand\ofslistfamily + \expandafter\noexpand\csname fam!.\removefamily\endcsname + ####2^^X{\gdef\noexpand\ofslistfamilies{####1####2}}}\act + \expandafter \tmpa\ofslistfamilies^^X% + \global \expandafter \let \csname fam!.\removefamily\endcsname = \relax + \message{ ... \removefamily\space is removed from declaration famlist} + \ifx\removefamily\thisfamily \def\thisfamily{*} \fi + \ifx\removefamily\savefamily \def\savefamily{*} \fi + \else + \message{ ... Sorry, the family \removefamily\space is not declared^^J} + \fi +} +\def\rem {\def\interact{\edef\removefamily{\thisfamily}\removecode} + \def\nointeract ##1 {\def\removefamily{##1}\removecode} + \futurelet \nextchar \donextchar +} + + +%%% \remdecl + +\def\remdeclcode {% + \ifx\response\defaultstext \def\thisdecl{defaults:} + \else \edef\thisdecl{\response.tex:} + \fi + \bgroup + \def\ofslisttext ##1##2\ofslisttext{\if^^J\readfirsttoken ##1:\end + \edef\tmpa{\readothertokens ##1:\end}% + \else \edef\tmpa{##1}\fi + \ifx\tmpa\thisdecl ##2\def\ofslisttext ####1####2^^X{}\fi + \ofslisttext} + \def\ofslistfamily ##1{\def\tmpa ####1!.####2/{####2}% + \edef\removefamily{\expandafter\tmpa\string ##1/}% + \doremovefam} + \expandafter \ofslistfamilies \expandafter \ofslisttext + \expandafter {\thisdecl}% + \message { ... Sorry, the \thisdecl\space is not present + in declaration list}\ofslisttext{}^^X% + \egroup +} +\def\defaultstext{defaults} + +\def\iremdeclcode {\message{% + *** What part of famlist should be removed ?^^J + \space\space\space (type "defaults" or declaration file name without ".tex"): } + \read-1 to\response + \expandafter \ifx \response\par \else + \expandafter \reset \response \to\response + \remdeclcode + \fi +} +\def\remdecl {\let\interact=\iremdeclcode + \def\nointeract ##1 {\def\response{##1}\remdeclcode} + \futurelet \nextchar \donextchar +} + +%%% \text + +\def\text{\ifx\thisfamily\astik \else + \registeredfam \thisfamily? \iftrue + \expandafter \ifx \csname ffe?\thisfamily:\endcsname \relax + \warnaboutnontext \text + \else + \message{^^J} \message{ [\thisfamily/\fosize]:} + \scanvariants \runtext + \fi + \else \warnaboutskip {text} + \fi\fi +} +\def\runtext {% + \message{\texvariant\space text} + \calculatemetricfile \fontfile \fosize + {\let\loadtextfam=\oriloadtextfam + \let\newvariant=\orinewvariant + \setfonts [\thisfamily/] + \font\ttfont=cmtt10 \fosize\relax + \bgroup \let\string=\egroup \texvariant + {\escapechar=-1 \xdef\tmp{\texvariant}} + \fontdef\fn [\thisfamily-\tmp/!] \fn + \nofontmessages + \startparagraph 1 \indent \csname text:\textlang\endcsname + \medskip\penalty-200}} + +\def\actualfont #1{{\def\texvariant{rm} \xdef\act{% + \noexpand\fontdef \noexpand #1[\thisfamily-\texvariant/!]}} + \act #1} + +\def\startparagraph #1{\par + \ifdim\fontdimen3\the\font=0pt \raggedright \fi + \ifdim\fontdimen2\the\font=0pt \rightskip=0pt plus \hsize\fi + \noindent\llap {\lttfont \vtop{\hsize=5cm + \noindent\hfill\thisfamily + \if1#1\space\texvariant\fi + \if2#1\space(\fomenc)\break \null\hfill + \mathsizes \vskip-\baselineskip \else + \if3#1\else \break \null\hfill \thesize/\theskip + \vskip-\baselineskip\fi\fi + }\kern12pt}\ignorespaces +} +\def\theskip{\the\baselineskip} +\def\thesize{\expandafter\ignoreat\fosize:} +\def\ignoreat at#1:{#1} +\def\mathsizes{[% + \expandafter\ignoreat\textfosize:/% + \expandafter\ignoreat\scriptfosize:/% + \expandafter\ignoreat\scriptscriptfosize:]} + +\def\famplusvariant{\thisfamily\if|\fontvariant|\else-\fontvariant\fi} + +%%% \abet + +\def\abet {\ifx\thisfamily\astik \else + \registeredfam \thisfamily? \iftrue + \removelastskip + \message{^^J} \message{ [\thisfamily/\fosize]:} + \noindent{\lttfont [\thisfamily/\thesize] (enc: \fotenc), + declared in + \ifx\fromfile\undefined \findfromfile \else \fromfile\fi}\par + \scanvariants \runabet + \medskip \penalty-200 + \else \warnaboutskip {abet} + \fi\fi +} +\def\runabet {% + \message{\texvariant\space abet} + \calculatemetricfile \fontfile \fosize + {{\escapechar=-1 \xdef\tmp{\texvariant}} + \fontdef\fn [\thisfamily-\tmp/!] \fn + \hbox{\llap{\lttfont (\fontvariant) \texvariant\kern12pt}% + \csname abet:\textlang\endcsname} +}} +\def\findfromfile {\bgroup + \def\fromfile{??}% + \def\ofslisttext ##1{\if^^J\readfirsttoken ##1:\end + \edef\fromfile{\readothertokens ##1:\end}% + \else \edef\fromfile{##1}\fi}% + \def\ofslistfamily ##1{\expandafter + \ifx \csname fam!.\thisfamily\endcsname ##1% + \def\tmpa####1^^X{}% + \expandafter \tmpa + \fi}% + \ofslistfamilies^^X\fromfile + \egroup +} +\def\all {\list \abet \chars \table \text \mixed \math \vfil\break} + +\def\chars {\ifx\thisfamily\astik \else + \registeredfam \thisfamily? \iftrue + \expandafter \ifx \csname ffe?\thisfamily:\endcsname \relax + \warnaboutnontext \chars + \else + \message{^^J} \message{ [\thisfamily/]: \string\chars} + \bgroup + \setfonts[\thisfamily-rm/] + \let\characterdef=\listcharacter + \let\characterdel=\characternodef + \let\accentdef=\listaccent + \let\accentdel=\accentnodef + \def\modifydef##1;##2{} + \def\protectreading##1 {} + \let\printcharacterwarn=\boxik + \let\printaccentwarn=\boxikdbl + \raggedright \rightskip=0pt plus 10em + \noindent \llap{\lttfont \thisfamily~(\fotenc)\kern12pt}% + \expandafter \let\csname enc:ofs-\fotenc\endcsname =\relax + {\def\par{}\endlinechar=-1 \input ofs-\fotenc.tex } + \if |\extraenc|\else \par + \noindent \llap{\lttfont Extra metric~(\extraenc)\kern12pt}% + \expandafter \let\csname enc:ofs-\extraenc\endcsname =\relax + {\def\par{}\endlinechar=-1 \input ofs-\extraenc.tex } + \fi + \ifx\newmodifylist\empty \else \par + {\escapechar=-1 \expandafter \savelist \meaning \newmodifylist^^X} + \noindent \llap{\lttfont Modifications\kern12pt}% + {\lttfont\char`\{\ \modlist\char`\}} \newmodifylist + \fi + \medskip \penalty-200 + \egroup \fi + \else \warnaboutskip {chars} + \fi \fi +} +\def\listcharacter #1#2#3 {\def\tmpa{#2#3}% +% \message{\string#1}% + \ifx\tmpa\astik \hbox{\lttfont \string#1:}~{\print#1{}{}}\spc \fi + \ifx\tmpa\fotenc \hbox{\lttfont \string#1:}~{\print#1{}{}}\spc \fi + \ifx\tmpa\extraenc \hbox{\lttfont \string#1:}~{\print#1{}{}}\spc \fi + \def\tmpa{tmpa}\futurelet \tmpb \docharacterdef} +\def\print #1{{\savetokenname#1\tmpb\global\let\tmpb=\tmpb}\printcharacter{\tmpb}} +\def\listaccent #1#2#3#4 {\def\tmpa{#3#4}% +% \message{\string#1 \string#2}% + \ifx\tmpa\astik \hbox{\lttfont \string#1~\string#2:}~{#1 #2{}{}}\spc \fi + \ifx\tmpa\fotenc \hbox{\lttfont \string#1~\string#2:}~{#1 #2{}{}}\spc \fi + \ifx\tmpa\extraenc \hbox{\lttfont \string#1~\string#2:}~{#1 #2{}{}}\spc \fi + \def\tmpa{tmpa}\futurelet \tmpb \docharacterdef} +\def\boxik#1{\lower1.7pt\vbox{\hrule\hbox{\vrule height6pt depth2pt + \kern.2em\lttfont?\kern.2em\vrule}\hrule}} +\def\boxikdbl#1#2{\boxik.} +\def\spc{\hskip.8em\relax} + +%%% \mixed \math + +\def\mixed{\ifx\thisfamily\astik \else + \registeredfam \thisfamily? \iftrue + \expandafter \ifx \csname ffe?\thisfamily:\endcsname \relax + \warnaboutnontext \mixed + \else + \message{^^J} \message{ [\thisfamily/\fosize]: mixed text} + {\setfonts [\thisfamily/] + \nofontmessages + \startparagraph 0 \noindent + \csname mix:\textlang\endcsname + \medskip\penalty-200} + \fi + \else \warnaboutskip {mixed} + \fi \fi +} +\def\math{\ifx\thisfamily\astik \else + \registeredfam \thisfamily? \iftrue + \expandafter \ifx \csname ffe?\thisfamily:\endcsname \relax + \warnaboutnontext \math + \else + {\setfonts [\thisfamily/] + \def\mathfonts{\defaultmathfonts} + \def\mathchars{\defaultmathchars \let\mathchars=\relax} + \stmath \setmath[//] \lineskiplimit=-.5pt + \message{^^J} \message{ [\thisfamily/\fosize] + (\string\fomenc: \fomenc) \mathsizes: math text} + \nofontmessages + \startparagraph 2 \noindent + \ifx\vecfam\undefined \else \def\bi{\fam\vecfam}\fi + \ifx\msbmfam\undefined \def\N{{\bf N}}\else \def\N{{\fam\msbmfam N}}\fi + \ifx\varmathbb\undefined \else \def\N{\varmathbb{N}}\fi + \delimiterfactor=950 + \csname math:\textlang\endcsname + \medskip\penalty-200} + \fi + \else \warnaboutskip {math} + \fi \fi +} +\def\psenc{PS} + +\def\warnaboutnontext #1{% + \message{ [\thisfamily/] is probably non text font, \string#1 skipped.^^J + \space\space (The family has no registered text encodings.)}% +} + + +%%% \table + +\def\table{\ifx\thisfamily\astik \else + \registeredfam \thisfamily? \iftrue + \message{^^J} \message{ [\thisfamily/\fosize]:} + \scanvariants \runtable + \else \warnaboutskip {table} + \fi \fi +} +\let\tables=\table + +\def\runtable {\onetable + \if |\eenc|\else {\edef\fotenc{\eenc}\onetable} \fi} + +\def\onetable{ + \calculatemetricfile \fontfile \fosize + \vfil\break + \noindent + {\rmfont Table of {\boldfont \famplusvariant}, + \hfil\break E\ifx\fotenc\eenc xtra e\fi ncoding: \fotenc, + fontfile: {\nttfont\metricfile\fosize},\hfil\break + command: {\nttfont \string\selectfont [\thisfamily/\fosize]\texvariant + \ifx\fotenc\eenc \string\setextrafont\fi}}\par + \message{\texvariant\space \ifx\fotenc\eenc ex-\fi table} + {\font \fn=\metricfile\fosize\relax \fn \knuthstable} + \vfil\break +} + +%% Z Knuthova testfont: + +\newcount\mm \newcount\n \newcount\p \newdimen\dim +\chardef\other=12 +\def\oct#1{\hbox{\rmfont'{}\kern-.2em\itfont#1\/\kern.05em}} % octal constant +\def\hexx#1{\hbox{\nttfont"#1}} % hexadecimal constant +\def\setdigs#1"#2{\gdef\h{#2}% \h=hex prefix; \0\1=corresponding octal + \mm=\n \divide\mm by 64 \xdef\0{\the\mm}% + \multiply\mm by-64 \advance\mm by\n \divide\mm by 8 \xdef\1{\the\mm}} +\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{\hexx{\h x}}}\smash{\box0}\cr + \noalign{\nointerlineskip}} +\newif\ifskipping +\def\evenline{\loop\skippingfalse + \ifnum\n<256 \mm=\n \divide\mm 16 \chardef\next=\mm + \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 \mm=\1 \advance\mm 1 \xdef\1{\the\mm} + \chartline \evenline} +\def\chartline{&\oct{\0\1x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&} +\def\chartstrut{\lower4.5pt\vbox to14pt{}} +\def\knuthstable{$$\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&&&\hexx 8&&\hexx 9&&\hexx A&&\hexx B& + &\hexx C&&\hexx D&&\hexx E&&\hexx F&\cr\egroup$$\par} +\def\:{\setbox0=\hbox{\char\n}% + \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}$}}} + +%%% texts in various languages + +\def\langdef #1 {\expandafter\def \csname#1\endcsname} + +\characternodef \textbullet * 0 +\characternodef \ellipsis * 0 +\characternodef \fullbar * 0 +\characternodef \brokenbar * 0 +\characternodef \onequarter * 0 +\characternodef \onehalf * 0 +\characternodef \threequarters * 0 +\characternodef \trademark * 0 +\characternodef \registered * 0 +\characternodef \ligct * 0 +\characternodef \ligst * 0 +\characternodef \ligft * 0 +\characternodef \longs * 0 +\characternodef \longst * 0 +\characternodef \sterling * 0 +\characternodef \euro * 0 +\characternodef \franc * 0 +\characternodef \cent * 0 +\characternodef \yen * 0 +\characternodef \degree * 0 +\characternodef \vardigits * 0 +\characternodef \textbraceleft * 0 +\characternodef \textbraceright * 0 + + +\langdef datum:cz {\the\day.~\the\month. \the\year} + +\langdef datum:en {\the\year/\the\month/\the\day} + +\langdef text:cz {% + Tento text je naps\'an p\'ismem \famplusvariant \space + za pou\v zit\'i \TeX{}ov\-sk\'e metriky + {\ttfont \fontname\fn}. V\v s\'imejme si m\'en\v e + obvykl\'ych slov, jako je slovo \v s\v tast\-n\'y (p\'ismeno \v t uprost\v red slova), + nebo t\v reba slovensk\'e ko\v lko. V\v e\v rme, \v ze v\'ysledn\'y text p\r ujde nejen + p\v re\v c\'ist, ale bude i typograficky pokud mo\v zno v~po\v r\'adku. Tak\'e je t\v reba + \clqq sledovat chov\'an\'i\crqq{} na\v sich \clqq{}uvozovek\crqq. A~co takhle \frqq + francouzsk\'e uvozovky po \v cesk\'em zp\r usobu\flqq? + \par + 0123456789, + \knownchar\vardigits? \iftrue{\vardigits 0123456789}, \fi + ligatury: fi, fl, ffi, ffl, --, ---, + kerny: Tel, T\v el, T\'el, VLTAVA. + + Znaky: \dag, \ddag, \textbullet, + \P, \ellipsis, + \textbraceleft, \fullbar, \brokenbar, \textbraceright, + \onequarter, \onehalf, \threequarters, + \trademark, \copyright, \registered, + \ligct, \ligst, \ligft, \longs, \longst, + \S, \sterling, \euro, \franc, \cent, + \yen, \degree C. + \par\nobreak\medskip + {\spaceskip=.3em minus .2em \relax + \'A \'a \"A \"a \v C \v c \v D \v d \'E \'e \v E \v e \'I \'i \'L \'l \v L \v l \v N \v n \'O \'o \^O \^o \"O \"o \v R \v r \'R \'r + \v S \v s \v T \v t \'U \'u \r U \r u \"U~\"u~\'Y~\'y~\v Z~\v z.} +} +\langdef text:en {% + This text is written by the font \famplusvariant. + The \TeX{} font metric {\ttfont \fontname\fn} is used here. + Notice how this font looks in the current paragraph. + We try to write somethink in ``english quotes''. + Digits: 0123456789, {\vardigits 0123456789} + ligatures: fi, fl, ffi, ffl, --, ---, + kerning: Te, Ti, AVA. + + Characters: \dag, \ddag, \textbullet, + \P, \ellipsis, + \textbraceleft, \fullbar, \brokenbar, \textbraceright, + \onequarter, \onehalf, \threequarters, + \trademark, \copyright, \registered, + \ligct, \ligst, \ligft, \longs, \longst, + \S, \pound, \euro, \franc, \cent, + \yen, \degree C. +} +\langdef abet:cz {% + ABCDEOPQRSVWXYZ 0123456789 \&\%?!-\v Z\v z\v s\v c\v e\'a\'e\v t\r u, + acbdefghijklmnopqrstuvwxyz% +} +\langdef abet:en {% + ABCDEOPQRSVWXYZ 0123456789 \&\%?!- ``--'' ---: + acbdefghijklmnopqrstuvwxyz% +} +\langdef mix:cz {% + {\bf P\v r\'iklad.} Nyn\'i zjist\'ime, zda je mo\v zn\'e kombinovat z\'akladn\'i \v rez s~tu\v cn\'ym + (resp. polotu\v cn\'ym) \v rezem a s~kurz\'ivou + v~rodin\v e p\'isma {\it\thisfamily}. Pro vyzna\v cov\'an\'i je vhodn\'e pou\v z\'it {\it kurz\'ivu\/} a + u\v z m\'en\v e {\bf tu\v cnou variantu} a prakticky v\r ubec se nehod\'i pou\v z\'it + {\bi tu\v cnou a sklon\v enou variantu}. + Zcela nevhodn\'e je vyzna\v covat podtr\v zen\'im nebo prostrk\'an\'im. + To lid\'e s~dobr\'ym vychov\'an\'im ned\v elaj\'i. + {\it Vyzna\v cen\'i m\'a b\'yt takov\'e, aby p\v ri \v cten\'i bylo vyzna\v cen\'e m\'isto z\v reteln\v e + odli\v sn\'e, ale p\v ri pohledu z~d\'alky z\r ustal text odstavce stejnom\v ern\v e \v sed\'y.} + Tomu nejl\'epe vyhovuje kurz\'iva, ale ne ve v\v sech rodin\'ach p\'isma je zda\v ril\'a + kuz\'iva k~dispozici. +} +\langdef mix:en {% + {\bf Example.} We try to combine the normal variant with the bold + (semibold) and italic variants in the font family {\it\thisfamily}. + The best selection to mark the text is the {\it italic}, not so good + one is the {\bf bold variant} and somewhat unsuitable + one is the {\bi bold italic variant}. The marking of the text by + underline or by letter spacing is totally unsiutable. + {\it The marked text have to be good distinguised while reading + but if you look at the paragraph from more distance the best is to + view the uniform-gray area.} The best solution of this task is to + use the italic, if this variant is ready in used font family. +} +\langdef math:cz {% + {\bf Pozn\'amka.} Funkci Gamma v bod\v e $x$ zna\v c\'ime $\Gamma(x)$ a + po\v c\'it\'ame ji podle vzorce: + $$ \Gamma(x) = \int_0^\infty e^{-t} t^{x-1} {\rm d}t \quad (x>0).$$ + Speci\'aln\v e pro $x=n\in\N$ je $\Gamma(n) = (n-1)\,!$ a pro + $\alpha\in(0,1)$ je + $$ \Gamma(\alpha)\,\Gamma(1-\alpha) = {\pi \over \sin \pi \alpha}.$$ + {\bf Definice.} Nech\v t $\bi A$ je \v ctvercov\'a matice s~$n$ sloupci a + \v r\'adky a s~prvky $a_{i,j}$. Pak \v c\'islo + $$ \mathop{\rm det}{\bi A} = \left|{\bi A}\right| = + \sum_{\Pi=(j_1,j_2,\ldots,j_n)} \mathop{\rm sgn}\Pi\cdot + a_{1,j_1}\,a_{2,j_2}\cdots a_{n,j_n} $$ + naz\'yv\'ame {\it determinantem\/} matice $\bi A$. +} +\langdef math:en {% + {\bf Notice.} The value of the function Gamma in the real + number~$x$ can be calculaded by: + $$ \Gamma(x) = \int_0^\infty e^{-t} t^{x-1} {\rm d}t \quad (x>0).$$ + Especially, for $n\in\N$ is $\Gamma(n) = (n-1)\,!$ and for + $\alpha\in(0,1)$ is + $$ \Gamma(\alpha)\,\Gamma(1-\alpha) = {\pi \over \sin \pi \alpha}.$$ + {\bf Definition.} Let $\bi A$ is a square matrix with $n$ columns + and rows and with elements $a_{i,j}$. The number + $$ \mathop{\rm det}{\bi A} = \left|{\bi A}\right| = + \sum_{\Pi=(j_1,j_2,\ldots,j_n)} \mathop{\rm sgn}\Pi\cdot + a_{1,j_1}\,a_{2,j_2}\cdots a_{n,j_n} $$ + is called {\it determinant\/} of the matrix $\bi A$. +} + +%%% Brackets after \input ofstest + +\def\processOFSoption #1,{\if ^^X#1\let\next=\runtest + \else \input #1 \fi \next} +\def\testOFSoptions {\ifx [\tmpa \expandafter \readOFSoptions + \else \expandafter \rundeclare \fi} + +\endOFSmacro + |