\chyph % pou�ijte csplain

% P�imlov�m se k tomu nep�ezna�kov�vat �l�nek do LaTeXu
% Na �l�nku toti� demonstruji vlastnosti OFS a op�r�m se
% o OFS z plainu. P�echod na LaTeX se zachov�n�m t�chto vlastnost�
% by nebyl jednoduch�. M��ete rozbalit metriky
% a virtu�ln� fonty k Charteru (p�ilo�en� charter8z.zip) do 
% pracovn�ho adres��e a zpracovat csplainem na instalaci TeXu, 
% kter� obsahuje OFS. P�ed spu�t�n�m dvips je pak pot�eba doplnit 
% do psfonts.map �ty�i ��dky uveden� v souboru mapfile. M��ete m� tak�
% informovat o tom, na kter�ch str�nk�ch se dokument bude ve sborn�ku
% nach�zet, j� oprav�m �daj \firstpage, zplainuji to, zdvipsuji a
% po�lu obratem zp�tky.

\newcount\firstpage   \firstpage=79
\newcount\numpages    \numpages=14

\def\addcmd #1#2{\expandafter\def\expandafter\tmpa\expandafter{#1}%
   \def\tmpb{#1}%
   \ifx\tmpa\tmpb % the #1 is not a macro
      \expandafter\let\csname \string#1-original\endcsname =#1%
      \expandafter\def\expandafter #1\expandafter{%
           \csname\string#1-original\endcsname #2}%
   \else          % the #1 is a macro
      \expandafter\def\expandafter #1\expandafter{#1#2}%
   \fi}

\input ofs [ffonts]                  % Charter je ve skupin� free fonts
\setfonts [Charter/10pt]             % v�choz� rodina
\setmath[//]                         % inicializace matematiky
\fontdef\tt [CMTypewriter/mag1.1]    % strojopis, korekce st�edn� v��ky
\fontdef\verbtt [CMTypewriter-rm/8]  % strojopis pro display uk�zky
\fontdef\small [!/9]                 % zmen�en� pro abstrakt a z�hlav�
\addcmd \small {\baselineskip11pt \rm \def\mathversion{normal}\setmath[//]}
\fontdef\fontsekce [!/12]            % pro nadpisy sekc�
\addcmd \fontsekce {\bf \let\it=\bi \def\mathversion{bold}\setmath[//]} 
\fontdef\fonttitul [!-bf/14.4]       % titul

\hsize=12,2cm
\vsize=19,3cm
\hoffset=63pt
\voffset=43pt
\parindent=14pt

\lineskiplimit=-10pt
\raggedbottom

\exhyphenpenalty=10000
\widowpenalty=10000
\clubpenalty=10000

\showboxdepth=10 \showboxbreadth=50

\def\starthead{\global\headline=
     {\small \ifodd\pageno \hfil \thetitul \headspace \the\pageno 
     \else \the\pageno \headspace \theauthor \hfil \fi}}
\headline={\hfil\starthead}
\def\headspace{\hskip2.5em\relax}
\def\makeheadline{\vbox to0pt{\vskip-25pt
  \line{\vbox to8.5pt{}\the\headline}\vss}\nointerlineskip}
\footline={\setfonts[/7]\setmath[//]\baselineskip=9pt
     \vbox{\hbox{\copytext}\hbox{\copykonvoj}}\hfil
     \global\footline={}}
\def\lastpage{\advance\firstpage by\numpages \advance\firstpage by-1
     \the\firstpage}

\def\copytext{Jan Kasprzak, Petr Sojka (edito�i): \SLT~2002 -- sborn�k
       semin��e o~Linuxu a \TeX{}u, str. \the\firstpage--\lastpage, 2002.}
\def\copykonvoj{\copyright~Konvoj, CSTUG, CZLUG 2002}

\newcount\subnum

\def\kap #1\par{\advance\subnum by1
   \removelastskip %\goodbreak
   \vskip17pt plus2pt minus1pt\noindent{\fontsekce
   \ifnum\subnum>1 \the\subnum\enspace\enspace\fi #1}%
   \par\nobreak\vskip11pt plus2pt minus1pt 
   \everypar{\setbox0=\lastbox \everypar={}}}
\def\reference {\subnum=-1 \kap Reference\par \small}
\def\bib{\par\advance\subnum by1 \leftskip=\parindent 
   \noindent\llap{\the\subnum.\enspace}\ignorespaces}

\let\orifootnote=\footnote
\newcount\footnotenum
\def\footnote#1{\global\advance\footnotenum by1
   \orifootnote{$\setmath[//]^\the\footnotenum$}{\small 
        \hangindent=\parindent #1\par}}
\def\footnoterule{\kern-3pt \hrule width 2cm \kern2.6pt }

\def\titul #1 \par{\def\thetitul{#1}\pageno=\firstpage
   \centerline{\fonttitul #1}\vskip20pt\relax}
\def\autor #1 \par{\def\theauthor{#1}
   \centerline{#1}\vskip10pt\relax}
\def\institut #1 \par{\centerline{\small #1}}
\def\email #1 \par{\centerline{\small Email: \tt #1}\vskip20pt\relax}
\def\abstrakt #1\par{\bgroup \small
   \leftskip=3em \rightskip=3em
   \noindent{\bf Abstrakt:}\enspace #1\par \egroup\bigskip}
\def\url#1{{\tt#1}}

\font\mflogo=logo10                       % METAFONT logo
\font\boldsy=cmbsy10 at12pt               % Tu�n� \CS, \AMS.
\font\bboldsy=cmbsy10 scaled\magstep2     % Tu�n� \CS v titulu

\def\CS{$\cal C\kern-.1667em\lower.5ex\hbox{$\cal S$}\kern-.075em $}
\def\bCS{{\boldsy C\kern-.1667em\lower.5ex\hbox{S}\kern-.04em}}
\def\CSTeX{\CS\TeX}
\def\CSTUG{\CS TUG}
\def\CSfont{\CS\kern.1em font}
\def\csplain{\CS\kern.1em plain} \let\CSplain=\csplain
\def\mf{{\mflogo META}\-{\mflogo FONT}}
\def\mp{{\mflogo META}\-{\mflogo POST}}
\def\LaTeX{L\kern-.2em\raise.45ex\hbox{\setfonts[/mag.7] A}\kern-.05em\TeX}
\def\twoe{$2_{\textstyle\varepsilon}$}
\def\LaTeXe{\LaTeX\thinspace\twoe}
\def\cslatex{\CS\kern.05em\LaTeX} \let\CSLaTeX=\cslatex
\def\twoe{$2_{\textstyle\varepsilon}$}
\def\LaTeXe{\LaTeX\thinspace\twoe}
\def\AMS{$\cal A\kern-.166em\lower.5ex\hbox{$\cal M$}\kern-.075em S$}
\def\bAMS{{\boldsy A\kern-.166em\lower.5ex\hbox{M}\kern-.075em S}}
\def\ps{Post\-Script}
\def\SLT{S\kern-0.025em\lower.5ex\hbox{L}\kern-.2emT}
\def\DOS{\hbox{DOS}}

%% Definice verbatim prost�ed� %%          !verb.
\catcode`\"=13
\def"{\hbox\bgroup\let"=\egroup\setverb\tt}
\def\setverb{\def\do##1{\catcode`##1=12}\dospecials\obeyspaces}
\def\begtt{\medskip\bgroup
   \nobreak\setverb \parskip=0pt %\parindent=0pt
   \catcode`\"=12\catcode`\~=13 \obeylines
   \baselineskip=10pt
   \let\tt=\verbtt \startverb}
{\catcode`\|=0 \catcode`\\=12
  |gdef|startverb#1\endtt{%
        |tt#1|nobreak|egroup|penalty0|medskip|scannexttoken}}
{\obeyspaces\gdef {\ }}
\long\def\scannexttoken#1{\ifx#1\par\else\noindent#1\fi}

\def\citeref #1 #2 {\expandafter\def\csname cit:#1\endcsname{#2}}
\citeref pismolijna  1
\citeref ofsftp      2
\citeref ofsdoc      3
\citeref stormcl     4
\def\cite#1{\expandafter\ifx \csname cit:#1\endcsname\relax
   \message{Warning: cite{#1} is not defined}[??]%
   \else [\csname cit:#1\endcsname]\fi}

%-------------------------------------------------------------------------

\titul  Makro OFS
        %%%%%%%%%

\autor Petr Ol��k

\institut Elektrotechnick� fakulta �VUT, Praha

\email olsak@math.feld.cvut.cz

\abstrakt 
   OFS (Ol��k�v fontov� syst�m) je bal��ek TeXov�ch maker, kter�
   umo�n� z�skat v�t�� p�ehled nad rozs�hl�mi kolekcemi font� a umo�n�
   s~nimi pom�rn� snadnou manipulaci. Bal�k byl vyvinut pro z�sk�n�
   p�ehledu nad fonty z~Typokatalogu St�e�ovick� p�smolijny~\cite{pismolijna}.
   Na z�klad� popt�vky \LaTeX{}ov�ch u�ivatel� byl bal�k
   naps�n je�t� jednou pro \LaTeX, kde vyu��v� NFSS a pokou�� se je
   tro�i�ku vylep�it. Z�kladn� u�ivatelsk� p��kazy OFS jsou pak v~obou
   prost�ed�ch (plain i \LaTeX) stejn�. Na p�edn�ce p�edvedu pou�it�
   OFS na u�ivatelsk� i konfigura�n� �rovni.

\kap �vodem
%----------

Makro OFS jsem si napsal hlavn� proto, abych se vyznal ve stovk�ch
font�, kter� poch�zely ze St�e�ovick� p�smolijny a pro kter� jsem
p�ed rokem ud�lal \TeX{}ovou podporu. Proto�e jsem plainista, �lo mi
hlavn� o~to ud�lat makro co nejv�ce srozumiteln� u�ivateli plainu,
kter� pot�ebuje p�esn� v�d�t, co to makro d�l�. Tento po�adavek
nap��klad \LaTeX{}ov� NFSS nespl�uje.

Pozd�ji se za�ali o~OFS zaj�mat t� n�kte�� u�ivatel� \LaTeX{}u. To�
jsem se p�emohl a pokusil OFS napsat je�t� jednou, tentokr�t pod
\LaTeX{}em s~vyu�it�m~NFSS. C�lem tohoto p�eps�n� bylo hlavn� to, aby
se u�ivatelsk� p��kazy pro vyhled�v�n� a p�ep�n�n� rodin font�
zcela shodovaly v~\LaTeX{}ov� verzi s~verz� plainovou. \LaTeX{}ov�
verze p�esto um� podstatn� m�n� v�c�, ne� plainov�, proto�e pokud by
m�la um�t v�e, musel bych NFSS zcela odm�tnout a fontov� modul
\LaTeX{}u si napsat po sv�m. T�m bych ale pop�el \LaTeX{} jako
takov�, tak�e jsem z�stal u~respektov�n� princip� NFSS. V�ci, kter�
se v~NFSS daj� d�lat velmi t�ko, jsem rad�ji ned�lal. 

Z~t�chto d�vod� jsem se v~\LaTeX{}u nepou�t�l ani do podpory
matematick�ch font�. Koncepce matematiky v~NFSS mi p�ipad� jako
plainistovi pon�kud nesrozumiteln�. Nav�c velk� kolekce font�, kter� byly
hlavn� motivac� OFS, jsou v�t�inou textov�. Pokud chce n�kdo
pou��t matematickou sadu font� v~\LaTeX{}u, pou�ije
"\usepackage{styl}" a ten styl je k~t� matematick� sad� v�t�inou
dod�v�n. Nepova�oval jsem tedy �e�en� matematiky 
v~\LaTeX{}u za prioritn�. Na druhou stranu matematick� rodiny v~plainu
se pomoc� OFS dopl�uj� a zav�d�j� ve v�ech velikostech velmi
elegantn�. V���m, �e alespo� n�jak�mu plainistovi (krom� m�) se toto
�e�en� bude hodit.

Makro OFS jsem zve�ejnil na \cite{ofsftp} pod \TeX-like licenc�, 
tj. je voln� k~m�n�, ale zm�ny pod stejn�m n�zvem nesm� d�le ���it nikdo
jin�, ne� autor. Do \TeX{}ov�ch distribuc� jsem makro zat�m 
neprosadil, proto�e bohu�el chyb� anglick� dokumentace. Domn�v�m se,
�e kdyby anglick� dokumentace byla, nebyl by se za�azen�m do \TeX{}ov�ch
distribuc� probl�m a makro by mohlo vyu��t daleko v�ce lid�. Bohu�el,
nejsem v~angli�tin� natolik zdatn�, abych tento probl�m rychle p�ekonal.
Pro leto�n� letn� pr�zdniny jsem sice pl�noval, �e se pokus�m anglickou
dokumentaci napsat, jen�e p�i�la voda\dots

K~OFS existuje samoz�ejm� �esk� dokumentace~\cite{ofsdoc} podrob�
popisuj�c� chov�n� makra. Nav�c jsem se o~OFS zm�nil u� v~�l�nku 
o~\TeX{}ov� podpo�e �tormov�ch font�~\cite{stormcl}. Dovolil jsem si
zde p�esto znovu k~tomuto t�matu vr�tit. Nechci  b�t nyn�
tak technicky exaktn�, jako v~manu�lu~\cite{ofsdoc}, ale zase m�m zde
v�ce m�sta k~rozeps�n� mo�nost� makra, ne� jsem m�l ve
�l�nku~\cite{stormcl}, kter� byl p�edev��m o~�tormov�ch fontech.


\kap Z�klady u�ivatelsk�ho rozhran�
%----------------------------------

U�ivatelsk� rozhran� je shodn� v~\LaTeX{}ov� verzi OFS i 
v~plainov� s~v�jimkou snad zaveden� makra OFS, kter� v~plainu
provedeme jednodu�e pomoc� "\input ofs [kolekce, font�]", zat�mco 
v~z�hlav� \LaTeX{}ov�ho dokumentu p��eme
"\usepackage [kolekce, font�] {ofs}".

Abych v~tomto textu nemusel ka�dou chv�li v�tvit sv�j v�klad na situaci
vhodnou pro plain a pro \LaTeX{}, rozhodl jsem se zde p�edpokl�dat, �e
pracujeme pouze s~plainem (nap��klad s~\csplain{}em).
\LaTeX{}ov� u�ivatel si bude muset dohledat specifika verze OFS pro
sv�j form�t v~dokumentaci~\cite{ofsdoc}. 

\bigskip

P��kazem "\fontusage" dostaneme na termin�l a do logu z�kladn�
informace o~u�ivatelsk�ch p��kazech:

\begtt
$ tex ofs \\fontusage
This is TeX, Version 3.14159 (Web2C 7.3beta5)
(/usr/local/share/texmf/tex/csplain/ofs.tex
OFS (Olsak's Font System) based on plain initialized. <Oct. 2002>
(/usr/local/share/texmf/tex/csplain/ofsdef.tex))
\fontusage: ============== Olsak's Font System, usage: =================
\input ofs [sjannon, sdynamo, a35] ... for example
\showfonts  ... shows all loaded font families (by previous \input)
\setfonts [Family/] ... local switch to the new family, after this, the
  \rm, \bf, \it, bi will switch to the variants. The current size is used.
\setfonts [/size] ... local switch to the new size of fonts, the family is
  not changed. The "size" has the following possible formats:
    at<dimen>       ... the same as \font\something=file at<dimen>
    <dimen>         ... the same as at<dimen>
    <number>        ... the same as at<number>pt
    scaled<number>  ... the same as \font\something=file scaled<number>
    mag<decimal-number> fonts will be magnified by given coefficient
                        depend on current size of the fonts.
\setfonts [Family/size] ... switch to the new family at given size
\setfonts [Family-vr/]  ... switch to the specified font, the current size
  is used. The "vr" is acronym for variant (bf for example).
\setfonts [Family-vr/size] ... switch to the specified font.
\fontdef\name [Family/size] ... same as \gdef\name{\setfonts[Family/size]}
  The "Family" or "size" parameter may be empty.
\fontdef\name [Family-vr/size] ... \name is fixed-font switch iff:
  "size" is no empty and no mag<dec-number>.
  Fixed-font switch "\name" is implemented as \global\font\name=file.
\setmath [size/size/size] ... set math it/rm as current it/rm + use PS Symbol
\nofontmessages, \logfontmessages, \displayfontmessages, \detailfontmessages
  ... the levels of log.
*
\endtt

Vid�me, �e p��kaz "\showfonts" n�m uk�e kolekce font�. Pokud jsme
nepou�ili \uv{previous "\input"}, dopadne z�kladn� kolekce
(implementovan� p��mo uvnit� OFS) takto:

\begtt
*\showfonts
OFS (l.0): The list of known font families:
defaults:
   [CMRoman/]            \rm, \bf, \it, \bi, \sl
   [CMSans/]             \rm, \bf, \it,  - 
   [CMTypewriter/]       \rm,  - , \it,  - , \sl
   [Times/]              \rm, \bf, \it, \bi
   [Helvetica/]          \rm, \bf, \it, \bi, \nrm, \nbf, \nit, \nbi
   [Courier/]            \rm, \bf, \it, \bi
\endtt

N�zvy fontov�ch rodin jsou zde uvedeny v~hranat�ch z�vork�ch a vedle jsou
uvedeny p�ep�na�e variant, kter� pro danou rodinu je mo�n� pou��t.

Vid�me, �e nejb�n�j�� textov� fonty Computer Modern jsou zaneseny 
v~OFS do t�� rodin "CMRoman", "CMSans" a "CMTypewriter". Mysl�m, �e
net�eba dod�vat, co to znamen�. V~rodin�ch "CMSans" a "CMTypewriter"
nen� k~dispozici jinak obvykl� varianta "BoldItalic", pro kterou je
vyhrazen p�ep�na� "\bi". V~rodin� "CMTypewriter" nenajdeme ani
p�ep�na� "\bf" pro tu�nou variantu, ale zato m��eme pou��t
\uv{nadstandardn�} variantu "\sl" (slanted), kter� je k~dispozici i
v~rodin� "CMRoman".

%OFS tak� p��mo pracuje s~rodinami "Times", "Helvetica" a
%"Courier". 
%Rodina "Helvetica" m� krom� b�n�ch variant je�t� varianty
%z��en�, nap��klad "\nbf" znamen� "NarrowBold". Pokud p�smov� rodina
%nem� skute�nou kurz�vu, ale jen sklon�nou variantu, je p�esto tato
%varianta vymezena p�ep�na�em "\it". 
%V�t�ina p�smov�ch rodin toti�
%dodr�uje \uv{logiku �ty� variant}, pro kter� jsou v~OFS vyhrazeny
%pr�v� p�ep�na�e "\rm", "\bf", "\it", "\bi".

Deklarace dal��ch p�smov�ch rodin jsou zan�eny do deklara�n�ch 
soubor� s~p��ponou "tex"%
\footnote{V \LaTeX{}ov�m OFS se jedn� o~p��ponu {\tt sty}.}.
V~ka�d�m distribuci \TeX{}u 
doporu�uji udr�ovat soubor volaj�c� v�echny deklara�n� soubory 
"allfonts.tex". Nap��klad na m�m po��ta�i vypad� tento soubor takto:

\begtt
$ cat `kpsewhich allfonts.tex`
%%% All OFS families declared on this TeX
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%                            Petr Olsak
\input a35       % PostScript 35
\input ffonts    % Another free fonts
\input btfonts   % Bitstream fonts
\input skatalog  % Stromtype foundry, 89 families
\endtt
%
Kdy� tedy nap��u "$ tex allfonts \\showfonts \\end | less"~, dostanu
na sv�m po��ta�i v�pis zhruba t�� set p�smov�ch rodin, ka�d� obvykle
ve �ty�ech variant�ch. D�le�it� je, �e se v tom vyzn�m a nemus�m
vzpom�nat, jak se kter� metrika jmenuje.  N�sleduje jen ��st v�pisu.

\begtt
OFS (l.0): The list of known font families:
defaults:
   [CMRoman/]            \rm, \bf, \it, \bi, \sl
   [CMSans/]             \rm, \bf, \it,  - 
   [CMTypewriter/]       \rm,  - , \it,  - , \sl
   [Times/]              \rm, \bf, \it, \bi
   [Helvetica/]          \rm, \bf, \it, \bi, \nrm, \nbf, \nit, \nbi
   [Courier/]            \rm, \bf, \it, \bi
a35.tex:
   [AvantGarde/]         \rm, \bf, \it, \bi
   [Bookman/]            \rm, \bf, \it, \bi
   [NewCentury/]         \rm, \bf, \it, \bi
   [Palatino/]           \rm, \bf, \it, \bi
   [ZapfChancery/]       \rm,  - , \it,  - 
   [ZapfDingbats/]       \rm,  - ,  - ,  - 
   [Symbol/]             \rm,  - , \it,  - 
ffonts.tex:
   [Charter/]            \rm, \bf, \it, \bi
...
sjannon.tex:
   [JannonAntikva/]      \rm, \bf, \it, \bi, \mr, \mi
   [JannonText/]         \rm, \bf, \it, \bi, \mr, \mi
   [JannonCaps/]         \rm, \bf, \it, \bi
...
sdynamo.tex:
...
   [DynaGroteskLE/]      \rm, \bf, \it, \bi
   [DynaGroteskD/]       \rm, \bf, \it, \bi
   [DynaGroteskR/]       \rm, \bf, \it, \bi
...
stitul.tex:
   [Alcoholica/]         \rm, \bf, \it,  - 
   [Monarchia/]          \rm, \bf,  - ,  - 
   [MonarchiaText/]      \rm, \bf,  - ,  - 
   [Clichee/]            \rm, \bf, \it, \bi
   [Regula/]             \rm,  - , \it,  - 
   [Splendid/]           \rm, \bf, \it,  - , \script, \sans
   [Cobra/]              \rm, \bf,  - ,  - 
   [ExcelScript/]        \rm,  - ,  - ,  - , \ext
   [ExcelScriptText/]    \rm,  - ,  - ,  - , \ext
   [Zeppelin/]           \rm, \bf,  - ,  - , \lr, \coll
   [Negro/]              \rm,  - ,  - ,  - 
   [Farao/]              \rm, \bf,  - ,  - , \kr, \coll
...
slido.tex:
   [Lido/]               \rm, \bf, \it, \bi, \crm, \cbf
\endtt

Ve v�pisu je uveden i \TeX{}ov� soubor, kde se deklarace odpov�daj�c�ch
rodin skute�n� nach�z�. Vid�me tedy, �e "a35.tex" u� obsahuje
deklarace rodin, ale nap��klad soubor "skatalog.tex" z�ejm� obsahuje jen dal��
"\input sjannon", "\input sdynamo", "\input stitul" atd.
Kdy� si pro sv�j dokument vyberu t�eba rodiny "JannonText", 
"DynaGroteskR" a "Farao", pak m�sto toho, abych psal

\begtt
\input ofs [allfonts]
\endtt
%
si vysta��m~s
\begtt
\input ofs [sjannon, sdynamo, stitul]
\endtt
%
co� zp�sob� na��t�n� podstatn� m�n� soubor� s~deklaracemi fontov�ch rodin.

Pokud pot�ebuji v�d�t, jak ty fonty vypadaj�, nap��u nap��klad:

\begtt
$ pdfcsplain ofscatal [sjannon, sdynamo, stitul] ; acroread ofscatal.pdf
\endtt
%
Soubor "ofscatal.tex", kter� vytvo�� katalog, byl za�azen do bal�ku 
OFS od verze~"Oct 2002".

\kap P�ep�na� rodin a velikost�

Hlavn�m p��kazem OFS na u�ivatelsk� �rovni je "\setfonts". Jedn� se
p�edev��m o~p�ep�na� rodin, viz v�pis "\fontusage" v~p�edchoz� sekci.
P�ep�na� m� dva parametry v~hranat� z�vorce odd�len� lom�tkem. Prvn�m
parametrem je n�zev rodiny a druh�m po�adovan� velikost font�. Pokud
n�kter� parametr chyb�, p�ep�na� nebude jeho nastaven� m�nit. P�ep�na�
samoz�ejm� funguje lok�ln� ve skupin�ch, jako b�v� u~fontov�ch
p�ep�na�� obvykl�. Po p�epnut� rodiny pracuj� p�ep�na�e variant
(obvykle "\rm", "\bf", "\it", "\bi") pro novou rodinu. Varianta se po
p�epnut� rodiny inicializuje stejn�, jako byla p�ed p�epnut�m,
tj. jsme-li zrovna v~kurz�v� rodiny Times a p�epneme do Helveticy,
z�st�v�me ve variant� "\it" rodiny Helvetica, tj. sklon�n�
p�smo. Pokud ale p�i p�epnut� rodiny aktu�ln� varianta v~nov� rodin�
neexistuje, inicializuje se varianta "\rm", kterou mus� obsahovat
ka�d� rodina.

P��klady

\begtt
\setfonts [JannonText/10.5]  % nastav�m na za��tku dokumentu
\setfonts [/14]\bf           % nap��klad pro nadpisy
\setfonts [/8]\rm            % pro pozn�mky pod �arou
\setfonts [DynagroteskR/]\it % t�eba pro cit�ty
\setfonts [CMTypewriter/]    %  pro strojopis.
       % tento p�ep�na� nap�. v kurz�v� nastav� automaticky
       % variantu kurz�va-strojopis.
\endtt

V�hodou tedy je, �e si nemus�m pamatovat n�zvy matrik (v~\LaTeX{}u pak
nesrozumiteln� zkratky rodin pou��van� v~NFSS), ale p��u n�zev rodiny
do dokumentu stejn�m zp�sobem, jak jej vid�m v~p�smov�m katalogu.
Pokud ud�l�m v~n�zvu rodiny p�eklep (t�eba nedodr��m velk� a mal�
p�smena), p��kaz "\setfonts" spust� "\showfonts", tj. na obrazovce 
a v~logu vid�m seznam v�ech rodin, kter� mohu pou��t.

Velikost font� mohu nastavit p��mo ud�n�m v~jednotce "pt", nebo
p�ips�n�m jin� jednotky (nap�. "mm"), nebo jako u~primitivu "\font"
pomoc� slova "scaled" (koeficient zv�t�en� se v�e k~z�kladn�
velikosti fontu) a kone�n� i pomoc� zcela nov�ho prefixu "mag", kter�
ud�v� zv�t�en� vzhledem ke zrovna pou�it� velikosti font�, nap��klad:

\begtt
\def\maly{\setfonts [/mag0.8]}
stanu se {\maly men��m a {\maly men��m a {\maly je�t� men��m}}} 
a u� jsem se z toho dostal.
\endtt
% 
dopadne takto:

\medskip
\def\maly{\setfonts[/mag0.8]}
stanu se {\maly men��m a {\maly men��m a {\maly je�t� men��m}}} a
u� jsem se z~toho dostal.
\medskip

Prefix "mag" pro velikost vyu�ijeme nap��klad v~logu \LaTeX{}, kter�
jsem si v~plainu definoval jako

\begtt
\def\LaTeX{L\kern-.2em\raise.45ex\hbox{\setfonts[/mag.7] A}\kern-.05em\TeX}
\endtt
%
a funguje to v~nadpisech (je tam tu�n� vyv��en� A~odpov�daj�c�
velikosti) i v~pozn�mk�ch pod �arou. V~\LaTeX{}u samotn�m maj� toto
logo definov�no tak, �e se pro vyv��en� A~pou�ije font v~indexov�
velikosti. No jo, zde jim to n�hodou proch�z�, ale co kdyby se
(nap��klad v~jin�m v~logu) hodilo pro n�kter� p�smeno pou��t 
velikost "mag.8", kter� nen� jako indexov� velikost pou�ita?
Bez OFS bychom to pak d�lali dost obt��n�, proto�e NFSS n�m �e�en�
nenab�z�. 

Dal��m vyu�it�m prefixu "mag" je mo�nost korigovat nestejn� st�edn�
v��ky p�sma. Nap��klad v~tomto sborn�ku je pro strojopis pou�it
"CMTypewriter". Pokud si v�imnete v~jin�ch p��sp�vc�ch, ne� tento,
vid�te, �e uvnit� odstavc� ten strojopis s~fontem Charter moc nesed�, proto�e
strojopis m� men�� st�edn� v��ku p�sma. Sta�� ale pro p�ep�na� "\tt"
pou��t "\setfonts [CMTypewriter/mag1.1]", a st�edn� v��ka je 
v~lati. To vid�me nap��klad v~tomto p��sp�vku.
A~funguje to v�etn� zmen�en�ch variant, kter� jsou 
v~p��sp�vc�ch pro \SLT{} pou�ity v~abstaktu, pozn�mce pod �arou, 
nebo t�eba v~�daji \uv{Email}, uveden�m v~z�hlav� p��sp�vku.

P��kaz "\setfonts" m��e obsahovat i specifikaci varianty (viz v�pis
p��kazu "\fontusage"). Pak se u� nejedn� o~p�ep�na� rodiny, ale fontu
samotn�ho. V~takov�m p��pad� p�ep�na� "\setfonts" neovlivn� p�ep�na�e
variant "\rm", "\bf" a dal��ch, ale nastav� jen po�adovan� jedin�
font. Nap��klad pro nadpisy by �lo ps�t "\setfonts[-bf/14]" m�sto
"\setfonts[/14]\bf", ale museli bychom m�t jistotu, �e v~nadpisu
nepou�ijeme p�ep�na� varianty, proto�e ten by vr�til font do velikosti
aktu�ln� rodiny. Tou velikost� je t�eba 10pt.

Abychom v~nadpisu mohli pou��t p�ep�na� "\it", a p�itom se dostali do
varianty "\bi" (co� je ��douc�), je pot�eba p�ep�na� fontu v~makru
pro nadpis naprogramovat zhruba takto:

\begtt
\def\nadpis #1{{\setfonts[/14]\bf \let\it=\bi #1}}
\endtt
%
Kv�li tomuto jednoduch�mu obratu, kter� zvl�dne snad ka�d� plainista,
jsem se rozhodl nekomplikovat j�dro OFS podobn�m zp�sobem jako NFSS a
nezav�d�t tedy dal�� \uv{nez�vislou sou�adnici} popisuj�c� duktus fontu.
Pro speci�ln� rodiny font� (jako je t�eba rodina
"DynaGrotesk") jsem ale snadno pomoc� dopl�uj�c�ch maker vytvo�il
p�ep�na�, kter� respektuje je�t� o~jednu \uv{nez�vislou sou�adnici}
v�ce, ne� zvl�d� NFSS. V~tomto p��pad� to nebyl jen duktus, ale 
i stupe� z��en� p�sma. Nav�c tento p�ep�na� dok�e \uv{poskakovat} po
jednotk�ch vp�ed a vzad pod�l zvolen� sou�adnice. To tak� NFSS
nezvl�d�.

�asto se hod� vytv��et zkratky pro p�ep�na�e rodin. K~tomu slou��
makro "\fontdef\p�ep�na�[Rodina/velikost]", kter� funguje podobn�,
jako pou�it� konstrukce "\gdef\p�ep�na�{\setfonts[Rodina/velikost]}".
V~z�hlav� tohoto dokumentu m�m nap��klad uvedeno:

\begtt
\input ofs [ffonts]                 % Charter je ve skupin� free fonts
\setfonts [Charter/10pt]            % v�choz� rodina
\fontdef\tt [CMTypewriter/mag1.1]   % strojopis, korekce st�edn� v��ky
\fontdef\verbtt [CMTypewriter/8]    % strojopis pro display uk�zky
\fontdef\small [Charter/9]          % zmen�en� pro abstrakt a z�hlav�
\endtt

Mo�n� �ten��e napadne, �e jsem nemusel ps�t podruh� slovo "Charter" 
v~deklaraci p�ep�na�e "\small". P�i kompletn� zm�n� z�kladn� rodiny
dokumentu na jinou bych pak mohl zm�nit slovo "Charter" jen na 
jedin�m m�st�  (u~p��kazu "\setfonts") a byl bych hotov. 
Bohu�el, vynech�n� rodiny v~p��kazu "\small" vede 
k~probl�m�m, proto�e tento p��kaz je pou�it v~z�hlav� dokumentu, 
tj. ~v~"\output" rutin�. Pokud zde neuvedeme explicitn� rodinu, d�d� se
rodina aktu�ln� pou�it�, kter� ov�em m��e b�t jak�koli, proto�e
"\output" rutina je vyvol�van� z~r�zn�ch m�st p�i zpracov�n�
dokumentu. M�t z�hlav� jednou strojopisem a podruh� Charterem podle
toho, odkud byla "\output" rutina zavol�na, je samoz�ejm� ne��douc�.

Tento probl�m se d� �e�it \uv{vyk�i�n�kovou} konvenc�, kterou um�
zpracovat p��kaz "\fontdef":

\begtt
\fontdef\small [!/9] \addcmd\small {\rm} % pro abstrakt a z�hlav�
\endtt
%
Vyk�i�n�k je nahrazen aktu�ln� rodinou u� v~dob� �innosti p��kazu
"\fontdef", nikoli tedy a� v~dob� prov�d�n� p�ep�na�e.  V~"\output"
rutin� se mus�me je�t� postarat o~potla�en� d�di�nosti aktu�ln�
varianty. Proto jsem pou�il je�t� p��kaz "\addcmd" (zaveden nov� od
verze OFS "Oct 2002"), kter� k~existuj�c�mu makru p�id� dal�� p��kazy
na jeho konec. Cel� deklarace font� v~tomto dokumentu tedy vypad�
zhruba takto:

\begtt
\input ofs [ffonts]                   % Charter je ve skupin� free fonts
\setfonts [Charter/10pt]              % v�choz� rodina
\fontdef\tt [CMTypewriter/mag1.1]     % strojopis, korekce st�edn� v��ky
\fontdef\verbtt [CMTypewriter-rm/8]   % strojopis pro display uk�zky
\fontdef\small [!/9] 
\addcmd \small {\baselineskip11pt\rm} % zmen�en� pro abstrakt a z�hlav�
\fontdef\fontsekce [!/12]            
\addcmd \fontsekce {\bf \let\it=\bi}  % pro nadpisy sekc�
\fontdef\fonttitul [!-bf/14.4]        % v titulu nebudeme p�ep�nat varianty
\endtt

Povedlo se tedy ve�ker� aktivity souvisej�c� s~v�b�rem font�
soust�edit na jedno m�sto dokumentu bez nutnosti pou��vat n�zvy
metrik. 


\kap K�dov�n� font�
%------------------

OFS pro plain implicitn� pracuje v~k�dov�n� \CSfont{}�, ale m��ete
jej p�epnout do jin�ho k�dov�n�. 
\footnote{OFS pro \LaTeX{} p�enech�v� starost o~k�dov�n� zcela na~NFSS.}

Z�kladem informace o~k�dov�n� v~OFS pro plain je makro "\fotenc",
kter� m� implicitn� hodnotu "8z". To znamen�, �e rodiny "CMRoman",
"CMTypewriter" a "CMSans" budou pracovat s~\CSfont{}y.
Kdyby u�ivatel nastavil "\def\fotenc{8t}", za�alo by OFS pracovat 
v~p��pad� t�chto rodin s~DC nebo EC fonty. Jak� je technick� pozad�
vysv�tl�me v~n�sleduj�c� sekci.

V�t�ina metrik \ps{}ov�ch font� m� varianty "*8t" (pro
k�dov�n� podle Corku) a "*8z" (pro k�dov�n� podle \CSfont{}�).
Makro "\fotenc" tedy mus� obsahovat koncovku metrik, kter� chceme
pou��t. T�m vol�me k�dov�n�. P��klad:

\begtt
\input ofs
\setfonts [Times/]  text 1 % metrika: ptmr8z, tj. k�dov�n� CSfont�
\def\fotenc{8t}
\setfonts [/]       text 2 % metrika: ptmr8t  tj. k�dov�n� podle Corku
\endtt
%
M�te-li sv� fonty v~n�jak�m dal��m k�dov�n� a koncovky metrik m�te
s~n�zvy t�eba "*8x", pak nen� probl�m napsat "\def\fotenc{8x}"
a m��ete za��t pou��vat sv� vlastn� metriky.

Pokud pou��v�te k�dov�n� podle Corku, doporu�uji definovat makro
"\fotenc" jako "8t" p�ed zaveden�m makra OFS. P�i pou�it� slo�it�ji
deklarovan�ch rodin se to hod�.

V~bal�ku OFS jsou soubory "ofs-8z.tex" a "ofs-8t.tex", ve kter�ch je
deklarace akcent� a n�kter�ch na k�dov�n� z�visl�ch maker, jako
nap��klad "\promile". Implicitn� nen� na�ten ani jeden z~t�chto
soubor�, tj.~jsou respektov�na makra pro akcenty z~origin�ln�ho 
plainu, kter� expanduj� na "\accent" podle k�dov�n� CMfont�.

Pokud je toto chov�n� nevyhovuj�c�, m��ete na��st pomoc� "\input"
jeden nebo oba dva v��e zm�n�n� soubory (v~libovoln�m po�ad� -- jejich
definice se neh�daj�). Pokud na�tete oba soubory, pak makra pro
akcenty expanduj� na znaky podle k�dov�n�, kter� je aktu�ln� nastaveno
v~makru "\fotenc" ("8z" nebo "8t").

Pod�vejme se do soubor� "ofs-8z.tex" a "ofs-8t.tex" (v�razn� kr�ceno):

\begtt
%%% Default accents in CM
\accentdef  \` *    8z  {\accent 18 }                   % grave
\accentdef  \' *    8z  {\accent 19 }                   % acute
\accentdef  \v *    8z  {\accent 20 }                   % caron
\accentdef  \u *    8z  {\accent 21 }                   % breve
...
%%% Standard characters in plain (redefined here)
\def\aa{\r a} 
\def\AA{\r A}
\characterdef \i    8z  16 
\characterdef \j    8z  17
\characterdef \SS   8z  {SS}
\characterdef \AE   8z  29
...
%%% Extra characters from CS-fonts
\characterdef \promile      8z  141
\characterdef \varhyphen    8z  156
\characterdef \flqq         8z  158
\characterdef \frqq         8z  159
\characterdef \clqq         8z  254
\characterdef \crqq         8z  255
...
%%% Accented letters from CS fonts
\accentdef  \` A      8z  152
\accentdef  \' A      8z  193
\accentdef  \" A      8z  196
\accentdef  \` a      8z  184
\accentdef  \' a      8z  225
...
%%% Default accents in Cork
\accentdef  \` *    8t  {\accent 0 }               
\accentdef  \' *    8t  {\accent 1 }
\accentdef  \^ *    8t  {\accent 2 }
\accentdef  \~ *    8t  {\accent 3 }
\accentdef  \" *    8t  {\accent 4 }
...
%%% Standard characters in plain (redefined here)
\def\aa{\r a} 
\def\AA{\r A}
\characterdef \i    8t  25
\characterdef \j    8t  26
\characterdef \SS   8t  223
\characterdef \AE   8t  198
...
\characterdef \promile              8t {\%\char 24 }        
\characterdef \textpertenthousand   8t {\%\char 24\char 24 } 
...
%%% Accented letters from Cork encoding
\accentdef  \. i    8t `\i
\accentdef  \u A    8t 128
\accentdef  \k A    8t 129
\accentdef  \' C    8t 130
\accentdef  \v C    8t 131
...
\endtt

Mysl�m, �e syntaxe a v�znam p��kaz� "\characterdef" a "\accentdef" je
v~t�to uk�zce samovysv�tluj�c�. Pokud ne, odkazuji �ten��e do
dokumentace~\cite{ofsdoc}, kter� do posledn�ho detailu (v�etn� popisu 
jednotliv�ch f�z� expanze) vysv�tluje �innost t�chto p��kaz�.

\LaTeX{}ov�mu u�ivateli to m��e p�ipom�nat p��kazy
"\DeclareTextSymbol" a "\DeclareTextComposite" a jim podobn�, kter�
d�laj� zhruba tot� (jen pon�kud komplikovan�ji, nep�ehledn�ji a
t�kop�dn�ji).

OFS tak� po��t� s~mo�nost�, �e n�kter� znaky jsou p�id�ny do extra
fontu, kter� s~p�vodn�m fontem vytv��� uspo��danou dvojici. Takov�
dvojice metrik jsou pou�ity nap��klad pro fonty �tormovy p�smolijny,
proto�e obsahuj� v�ce ne� 256 znak�. P�itom by bylo �koda n�kter�
znaky nevyu��t. Ke ka�d� metrice t�chto font� ("*8z" i "*8t") je
p�i�azena extra metrika "*6s", obsahuj�c� zbyl� znaky.
Pomoc� "\characterdef" a "\accentdef" m��eme deklarovat p��tomnost
t�chto znak� v~k�dov�n� "6s" (viz soubor "stormenc.tex"). Pokud 
aktu�ln� metrika m� k~sob� extra font v~k�dov�n� "6s" a je po�adov�n 
znak z~tohoto fontu, OFS jej automaticky \uv{vylov�} pomoc� 
p�echodn�ho p�epnut� na extra metriku.


\kap Deklarace rodin
%-------------------

Pod�vejme se nyn� do souboru "a35.tex", kter� deklaruje rodiny pro
z�kladn�ch 35 \ps{}ov�ch font� (kr�ceno):

\begtt
%%% Times, Helvetica, Courier is in OFS defaults

\ofsdeclarefamily [AvantGarde] {% -------------------- AvantGarde
   \loadtextfam (Book)         pagk\fotenc;%
                (Demi)         pagd\fotenc;%
                (BookOblique)  pagko\fotenc;%
                (DemiOblique)  pagdo\fotenc;;%
   \def\TeX{T\kern-.08em\lower.3333ex\hbox{E}\kern-0.09emX}%
}
\ofsdeclarefamily [NewCentury] {% -------------------- NewCenturySchlbk
   \loadtextfam (Roman)        pncr\fotenc;%
                               pncb\fotenc;%
                               pncri\fotenc;%
                               pncbi\fotenc;;%
   \def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX}%
}
...
\endtt

Zde je tedy deklarov�no zobrazen� mezi n�zvy rodin a metrikami.%
\footnote{
   V~OFS pro \LaTeX{} takov� soubory neexistuj�; tam se pouze
   deklaruje zobrazen� mezi (dlouh�mi) n�zvy rodin v~OFS a zkratkami
   rodin v~NFSS.  
} 
Ka�d� rodina m� �ty�i povinn� metriky (pro b�n� �ty�i
varianty). Metriky jsou zaps�ny pomoc� "\fotenc", aby fungovalo
p�ep�n�n� k�dov�n�. Mezi p�edposledn�m a posledn�m st�edn�kem m��e b�t
uvedeno extra k�dov�n�, pokud je font rozlo�en do dvou metrik (v~tomto
p��klad� nen�). P��kazy uveden� v~parametru "\ofsdeclarefamily" se
provedou p�i ka�d�m p�epnut� rodiny p��kazem "\setfonts".
V~uk�zce tam m�me alternativn� definice loga "\TeX", aby toto logo p�kn�
vypadalo v~ka�d�m fontu.

Od verze OFS "Oct 2002" je p�id�na mo�nost pou��t nepovinn� parametry
v~argumentech p��kazu "\loadtextfam". Tyto parametry p��eme do kulat�
z�vorky a zna�� n�zev varianty, pokud je odli�n� od b�n�ho n�zvu.
Tato informace se pou�ije v logu a p�i tisku katalogu.

Pod�vejme se je�t� do souboru "sjannon.tex" z~podpory �tormov�ch font�
(v�pis je zde ne�pln�):

\begtt
\ofsdeclarefamily [JannonAntikva] {% -------- Jannon Antikva
   \loadtextfam sjnr\fotenc;%
                sjnb\fotenc;%
                sjnri\fotenc;%
                sjnbi\fotenc;6s;%
   \newvariant2 \mr (Medium)        sjnm\fotenc;6s;%
   \newvariant3 \mi (MediumItalic)  sjnmi\fotenc;6s;%
}
\ofsdeclarefamily [JannonText] {% ------------ Jannon Text
   \loadtextfam sjnrg\fotenc;%
                sjnbg\fotenc;%
                sjnrig\fotenc;%
                sjnbig\fotenc;6s;%
   \newvariant2 \mr (Medium)        sjnmg\fotenc;6s;%
   \newvariant3 \mi (MediumItalic)  sjnmig\fotenc;6s;%
}
...
\endtt
%
Vid�me, �e nav�c je zde deklarov�na extra metrika v~k�dov�n�~"6s" a �e
se zde deklaruj� dopl�uj�c� p�ep�na�e variant "\mr" a "\mi" mimo
z�kladn� �ty�i varianty. Podrobn�j�� vysv�tlen� pou�it�ch p��kaz�
�ten�� op�t najde v~dokumentaci~\cite{ofsdoc}.

Jak jsou pomoc� expanze "\fotenc" mapov�ny metriky \CSfont{}�
resp. DC~font�, kter� v~n�zvech koncovku "8z" ani "8t" nemaj�?
To souvis� rovn� s~t�m, �e tyto fonty maj� pro r�zn� velikosti r�zn�
metriky. V~deklara�n�ch souborech je pak tento probl�m vy�e�en
zp�sobem \uv{dv� mouchy jednou ranou} (viz soubor "ofsdef.tex"):

\begtt
\registertfm cmr8z     -      csr10  % metrika pro v�echny velikosti
\registertfm cmr8z  0pt-6pt   csr5
\registertfm cmr8z  6pt-7pt   csr6
\registertfm cmr8z  7pt-8pt   csr7
\registertfm cmr8z  8pt-9pt   csr8
\registertfm cmr8z  9pt-10pt  csr9
\registertfm cmr8z  10pt-12pt csr10
\registertfm cmr8z  12pt-17pt csr12
\registertfm cmr8z  17pt-*    csr17
...
\registertfm cmr8t     -   dcr10     % metrika pro v�echny velikosti
...
\ofsdeclarefamily [CMRoman] {% ------------ Computer Modern Roman
   \loadtextfam cmr\fotenc;%
                cmbx\fotenc;%
                cmti\fotenc;%
                cmbxti\fotenc;;%
   \newvariant8 \sl (Slanted) cmsl\fotenc;;%
}
\endtt
%
Centr�ln�m p��kazem je zde makro "\registertfm", kter� mapuje
neexistuj�c� metriky form�ln� vytvo�en� pomoc� expanze "\fotenc" do
skute�n�ch metrik. Toto makro tak� um� registrovat r�zn� metriky
pro r�zn� velikosti. Pokud tedy budeme cht�t font dan� pomoc�
"\setfonts[CMRoman-rm/12.5]", vyvol� se p�i "\fotenc"
s~hodnotou "8z" metrika "csr12 at12.5pt". \uv{Metrika pro v�echny
velikosti} se pou�ije v~p��pad�, �e je velikost fontu deklarovan�
s~\hbox{prefixem} "scaled", tak�e "\setfonts[CMRoman-rm/scaled1250]" vyvol�
metriku "csr10 scaled1250". Ztr�c�te-li p�ehled o~tom, jak� metrika se
ve skute�nosti pou�ila, m��ete zapnout logovac� p�ep�na�
"\detailfontmessages". 

Pod�v�te-li se do souboru "ofsdef.tex" podrobn�ji, m��ete si v�imnout, �e
jsem metriky rodiny "CMRoman" a dal��ch "CM"~rodin pro k�dov�n�~"8t" pon�kud
odbyl. Registroval jsem je jako metriky DC font� bez st��d�n� metrik pro
r�zn� velikosti. Necht�lo se mi to toti� vypisovat a nev�d�l jsem, zda
u�ivatel tohoto k�dov�n� rad�ji nepou�ije EC fonty m�sto DC font�.
Ve zm�n�n�m souboru jsou p��klady, jak by se ta deklarace m�la
prov�st. Pokud ji n�kdo dop��e (nap��klad pro DC i EC fonty do zvl�tn�ch
soubor�), r�d ji do bal�ku OFS za�ad�m. Osobn� ale fonty k�dovan� 
v~"8t" nepou��v�m, tak�e m� zat�m nic nemotivuje to ud�lat.


\kap Matematick� fonty
%---------------------

Ka�d� plainista v�, �e fonty pro matematiku se sdru�uj� do matematick�ch
rodin obsahuj�c� font pro z�kladn�, indexovou a index-indexovou
velikost. Rovn� v�, �e prvn� �ty�i matematick� rodiny (s~��slem 0 a�~3)
jsou s~\TeX{}em jist�m zp�sobem pevn� v�znamov� sv�z�ny a dal�� rodiny
se daj� deklarovat.

Aby plainista p�i deklarov�n� matematick�ch rodin nemusel ps�t t�ikr�t
za sebou "\font" a potom je�t� 
"\textfont\rodina=...", "\scriptfont...", atd, je v~OFS k~tomu
vytvo�ena zkratka "\loadmathfam", jak uk�u za chv�li.

Inicializaci matematick�ch font� v~OFS pro plain provedeme pomoc�
p��kazu "\setmath". Dokud tento p��kaz nepou�ijeme, jsou matematick�
fonty ve stavu, jak je inicializoval plain. Ve t�ech parametrech
p��kazu "\setmath" (odd�len�ch lom�tky) d�v�me najevo, jakou chceme
z�kladn� velikost, jakou pro indexy a jakou pro indexy
index�. Jsou-li tyto parametry pr�zdn�, je pou�ito relativn� zmen�en�
podle aktu�ln� velikosti textov�ho fontu pomoc� prefixu "mag" takto:

\begtt
\setmath [//] je tot� jako \setmath [mag1.0/mag.7/mag.5]
\endtt

P��kaz "\setmath" vypo��t� po�adovan� velikosti a startuje makro pro
zaveden� font� "\mathfonts". D�le tento p��kaz startuje makro pro
inicializaci matematick�ho k�dov�n� "\mathchars". Tato makra si m��e
plainista definovat jak chce, nicm�n� v�t�inou vyu�ije ji�
p�ipraven�ch maker "\defaultmathfonts" a "\defaultmathchars", kter�
jsou ud�l�na tak, �e spou�t�j� r�zn� varianty k�du podle hodnoty maker
"\fomenc" a "\mathversion".

P�i "\def\fomenc{PS}" (imlicitn� hodnota: PostScriptov� fonty) se zavedou
fonty tak, �e matematick� kurz�va se ztoto�n� s~aktu�ln� textovou
kurz�vou a podobn� rodina~0 pro ��slice a textov� symboly z�st�v�
nastavena podle aktu�ln� textov� rodiny varianty "\rm". 
Matematick� symboly se berou
(pokud to je mo�n�) z~b�n� dostupn�ho \ps{}ov�ho fontu
"Symbol". Zbytek (nap�. natahovac� z�vorky) pak z�st�v� v~Computer
Modern. Matematick� k�dov�n� je pro tuto situaci v�razn�
pozm�n�no obvykl�mi primitivy "\mathchardef" a podobn�mi, aby byly
dosa�iteln� v�echny znaky plainu. Nap��klad pro �eck� p�smena musela b�t
zavedena nov� rodina se sklon�n�m fontem "Symbol" a p��kazy typu "\alpha" jsou
p�ek�dov�ny z~p�vodn� matematick� rodiny~1 na tuto novou rodinu.

Nastav�te-li "\def\fomenc{CM}", pak p��kaz "\setmath" zavede
stejn� matematick� fonty z~rodiny Computer Modern, jako 
v~plainu. P��kaz "\setmath[//]" pak pouze aktualizuje velikosti t�chto font�
podle velikosti aktu�ln�ho textov�ho fontu.

Nakoup�te-li fonty MathTimes, d�le na�tete soubor "ofsmtdef.tex" (sou��st�
OFS od verze "Jun. 2002") a definujete "\def\fomenc{MT}", pak p��kaz
"\setmath" zavede kurz�vu a rodinu~0 stejn� jako p�i
"\def\fomenc{PS}", ale nav�c pou�ije pro {\it v�echny\/} symboly v�etn�
natahovac�ch z�vorek fonty MathTimes.

Krom� hodnoty "\fomenc" se p��kaz "\setmath" v�tv� i vzhledem 
k~hodnot� makra "\mathversion". Implicitn� OFS po��t� se dv�ma
hodnotami tohoto mak\-ra: "\def\mathversion{normal}" nebo "bold".
P�i verzi "bold" jsou na�teny do matematick�ch rodin tu�n� alternativy
font�, pokud to jde. V�e n�zorn� vysv�tl� pohled do souboru
"ofsdef.tex":

\begtt
\def\defaultmathfonts{\csname load\fomenc\mathversion math\endcsname}
\def\defaultmathchars{\csname set\fomenc mathchars\endcsname}
\def\mathfonts{\defaultmathfonts}
\def\mathchars{\defaultmathchars 
   \let\mathchars=\relax % to protect the twice math-setting
}
\def\loadPSnormalmath{%
  \loadmathfam 0[tenrm/]%              Actual Roman font
  \loadmathfam 1[tenit/]%              Actual Italic font
  \loadmathfam 2[/cmsy]%               Standard symbols from CM
  \noindexsize\loadmathfam 3[tenex/]%  Standard extra symbols from CM
  \chardef\itfam=1 \chardef\bifam=5 
  \loadmathfam \bffam [tenbf/]%        Actual Bold font
  \loadmathfam \bifam [tenbi/]%        Actual Bold Italic  
  \newmathfam\symbfam
  \loadmathfam \symbfam [/psyr]%       PostScript Symbol
  \newmathfam\symbofam
  \loadmathfam \symbofam [/psyro]%     PostScript Symbol Oblique
}
\def\loadPSboldmath{%
  \loadmathfam 0[tenbf/]%              Actual Bold font
  \loadmathfam 1[tenbi/]%              Actual Bold-Italic font
...
}
\def\loadCMnormalmath{%
  \loadmathfam 0[/cmr8z]%                    Roman font
  \loadmathfam 1[/cmmi]%                     Math Italic font
  \loadmathfam 2[/cmsy]%                     Standard symbols from CM
  \noindexsize\loadmathfam 3[/cmex10]%       Standard extra symbols from CM
...
}
\def\loadCMboldmath{%
  \loadmathfam 0[/cmbx8z]%                     Roman font
  \loadmathfam 1[/cmmib10]%                    Math Italic font
...
}
\def\setPSmathchars{%
  \fontmessage{\ofsmessageheader Math codes are set for PS encoding}%
  \mathcode`\,="602C
  \mathcode`\.="002E
  \delcode`\<="\hex\symbfam E130A
  \delcode`\>="\hex\symbfam F130B
  \delcode`\|="\hex\symbfam 7C30C
  \edef\langle{\delimiter"4\hex\symbfam E130A }%
  \edef\rangle{\delimiter"5\hex\symbfam F130B }%
  \mathchardef\alpha    "0\hex\symbofam 61
  \mathchardef\beta     "0\hex\symbofam 62
  \mathchardef\gamma    "0\hex\symbofam 67
...
}
\endtt

Chceme-li p�idat n�jak� dal�� matematick� rodiny (v~terminologii NFSS
matematick� abecedy), pak m��eme postupovat t�eba takto:

\begtt
\def\mathfonts{\defaultmathfonts
  \newmathfam\bbfam 
  \loadmathfam \bbfam [/bbold12]%  Dvojit� vertik�ln� kresba
  \def\bb{\fam\bbfam}%
}
\def\mathchars{\defaultmathchars 
  \mathchardef\balpha    "0\hex\bbfam 0B
  \mathchardef\bbeta     "0\hex\bbfam 0C
  ...
} 
\endtt

P��klad z~konce sekce~3 nyn� obohat�me o~mo�nost pr�ce 
s~matematikou v~libovoln�ch velikostech:

\begtt
\input ofs [ffonts]                  % Charter je ve skupin� free fonts
\setfonts [Charter/10pt]             % v�choz� rodina
\setmath[//]                         % inicializace matematiky
\fontdef\tt [CMTypewriter/mag1.1]    % strojopis, korekce st�edn� v��ky
\fontdef\verbtt [CMTypewriter-rm/8]  % strojopis pro display uk�zky
\fontdef\small [!/9]                 % zmen�en� pro abstrakt a z�hlav�
\addcmd \small {\baselineskip11pt \rm \def\mathversion{normal}\setmath[//]}
\fontdef\fontsekce [!/12]            % pro nadpisy sekc�
\addcmd \fontsekce {\bf \let\it=\bi \def\mathversion{bold}\setmath[//]} 
\fontdef\fonttitul [!-bf/14.4]       % titul
\endtt

Nyn� i v~abstraktech, pozn�mk�ch pod �arou a z�hlav�ch je matematika
ve v�ech velikostech v�ech mo�n�ch index� zmen�en� odpov�daj�c�m
zp�sobem. Pokud by se matematika m�la pou��t v~n�zvu sekce, pak bude
tak� tu�n� a spr�vn� velik�.


\reference

\bib \url{www.pismolijna.cz}, \url{www.cstug.cz/stormtype}.

\bib \url{ftp://math.feld.cvut.cz/pub/olsak/ofs}.

\bib Petr Ol��k. {\it OFS: Ol��k�v fontov� syst�m}. 2001.
     Dokumentace k~bal�ku je v~souborech "ofsdoc.tex", "ofsdoc.pdf".

\bib Petr Ol��k. {\it Jak \TeX{} k~font�m ze St�e�ovic p�i�el}. Zpravodaj
     �eskoslovensk�ho sdru�en� u�ivatel� \TeX{}u, 4/2001, pp~153--180.

\bye 

