
\titul  Novinky v OFS
%%%%%%%%%%%%%%%%%%%%%

\autor Petr Ol��k

\institut Elektrotechnick� fakulta �VUT, Praha

\email petr@olsak.net

\abstrakt 
   OFS (Ol��k�v fontov� syst�m) byl ji� na \SLT{} prezentov�n.
   B�hem roku 2004 byl ale OFS pro plain v�znam� p�epracov�n a byly do
   n�j p�id�ny nov� vlastnosti, kter� umo��uj� vytv��et on-line
   katalogy font� nebo d�kladn� testy fontov�ch rodin v�etn� kombinace
   s matematickou sazbou. Rovn� byly roz���eny mo�nosti pr�ce s makry
   z�visl�mi na k�dov�n� a implementov�na podpora TX font�.
   Na p�edn�ce budou v kr�tkosti tyto nov� vlastnosti OFS p�edvedeny
   poslucha��m. 

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

Makro OFS jsem poprv� zve�ejnil v roce 2001 a na \SLT{} v~Se�i jsem
toto makro prezentoval~\cite{ofs-slt}. Pak se s OFS del�� dobu nic ned�lo.
Teprve letos jsem se pokusil vytvo�it pro OFS jednak
interaktivn� makro na testy cel�ch fontov�ch rodin a d�le jsem
za�al pracovat na Ok\TeX{}u~[\ncite{oktexftp},\,\ncite{oktex-slt}],
kde jsem se rozhodl OFS pro plain vyu��t.

Tyto dva c�le m� donutily ud�lat v OFS n�kolik docela
z�sadn�ch zm�n. Zm�ny se t�kaj� v�hradn� verze OFS pro plain. Na
\LaTeX{}ovou verzi jsem v�bec nes�hl. Neznamen� to ale, �e by
\LaTeX{}ov� u�ivatel nem�l z t�to pr�ce ��dn� u�itek. M��e si pomoc�
p��kazu "csplain ofstest" interaktivn� vytv��et vzorn�ky font�. Mysl�m
si, �e v tomto p��pad� mu m��e b�t jedno, jak�m form�tem je ten
vzorn�k zpracov�n.


\kap Interaktivn� makro {\tt ofstest.tex}
%----------

Po spu�t�n� "csplain ofstest" nebo "tex ofstest" si program vy��d�
vlo�en� n�zvu defini�n�ho souboru. Nap��klad "a35" nebo "slido".
Pokud rovnou na p��kazov� ��dek za
slovo "ofstest" a za mezeru zap��eme defini�n� soubor(y) do hranat�
z�vorky, pak program u� tento �daj ne��d� znovu.
D�le m��eme vybrat rodinu font�, kterou chceme testovat. Potom lze
p��kazem "\help" vypsat dal�� mo�nosti, co m��eme d�lat. Komunikace
m��e vypadat nap��klad takto (�daje, kter� vlo�il u�ivatel, jsou
vyzna�eny r�me�kem):

\bgroup\catcode`\<=12
\def\=#1={\raise-3.4pt\vbox{%
   \hrule\hbox{\vrule height7pt depth3pt\kern1pt#1\kern1pt\vrule}\hrule}}
\catcode`\!=0
\begtt
$ !=csplain ofstest [ffonts]=
This is TeX, Version 3.14159 (Web2C 7.3.7x)
encTeX v. Feb. 2003, the reencoding enabled.
(/usr/TeX/texmf/tex/ofs/ofstest.tex The format: csplain <Feb. 2000>.
The cs-fonts are preloaded and A4 size implicitly defined.
(/usr/TeX/texmf/tex/ofs/ofs.tex
OFS (Olsak's Font System) based on plain initialized. <May 2004>
(/usr/TeX/texmf/tex/ofs/ofsdef.tex))
Czech hyphenation used (\language=5). \frenchspacing is set on.
(/usr/TeX/texmf/tex/ofs/ofs-8z.tex) (/usr/TeX/texmf/tex/ofs/ofs-8c.tex))
(/usr/TeX/texmf/tex/ofs/ffonts.tex) This is ofstest macro, version <May. 2004>

*** Type family name without brackets (or ? or *): !=Charter=

*** What to do with family Charter ?
    (type command or \help): !=\help=
commands:
 \list ..... List all variants of the family Charter
 \table(s) . Tables of all variants of the family Charter
 \abet ..... One line alphabet/digits sample for each variant
 \chars .... Print list of available characters including TeX sequences
 \text ..... One paragraph in all variants of the family Charter
 \mixed .... Paragraph with fonts combined from \rm, \bf, \it and \bi
 \math ..... Mathematics text combined by fonts from Charter
 \all ...... The same as \list \table \abet \chars \text \mixed \math 
 \setsize .. Set size of fonts (current size is "at10pt")
 \cfam ..... Change current family
 FamName ... The same as \cfam FamName
 \rem ...... Remove current family or family given in parameter from \famlist
 -----------------------------
 \famlist .. Show list of all declared families (the same as \showfonts)
 \decl ..... Input next declaration file
 \remdecl .. Remove all families of given declaration file from famlist
 \help ..... This text
 \morehelp . Show more help information
 \fontusage  The help screen of the OFS
 \end ...... End of this session 

*** What to do with family Charter ?
    (type command or \help): !=\abet \chars \mixed \math \end=

 [Charter/at10pt]: \rm abet (/usr/TeX/texmf/tex/ofs/ffonts.tex) \bf abet
\it abet \bi abet 
 [Charter/]: \chars (/usr/TeX/texmf/tex/ofs/ofs-8z.tex) 
 [Charter/at10pt]: mixed text (/usr/TeX/texmf/tex/ofs/ofs-ps.tex) 
 [Charter/at10pt] (\fomenc: PS) [10.0pt/7.0pt/5.0pt]: math text
[1]
Output written on ofstest.dvi (1 page, 7492 bytes).
Transcript written on ofstest.log.
\endtt
\egroup
V tomto p��klad� jsme vybrali rodinu Charter (shodou okolnost� je
touto rodinou font� d�l�n sborn�k \SLT) a vypsali jsme si pomoc�
"\help" mo�nosti, co m��eme podniknout d�le. Z nab�dky jsme pak
vybrali pouze tisk zkr�cen� abecedy ("\abet"), v�pis dostupn�ch
znak� v~t�to rodin� v�etn� jejich \TeX{}ov�ch sekvenc� ("\chars"), 
tisk vzorku, kde je kombinov�n z�kladn� �ez s tu�n�m a s kurz�vou
("\mixed"), a kone�n� tisk vzorku s matematickou sazbou ("\math").
V�sledek testu je vid�t na obr�zku~1. 

\topfig{\epsfxsize=\hsize \epsfbox{charter.eps}}
{\def\\#1{{\tt\char`\\#1}}V�stup z {\tt ofstest.tex}. 
 Charter, p��kazy: \\{abet}, \\{chars}, \\{mixed}, \\{math}}

Obr�zek je v tomto
sborn�ku m�rn� zmen�en�, tak�e �daje po stran�ch 
(�e se jedn� o 10bodov� p�smo) nejsou spr�vn�. Samoz�ejm�, origin�ln�
v�stup z~makra "ofstest.tex" je ve spr�vn� velikosti a �daje o rozm�rech
souhlas�.

Funkci v�ech p��kaz�, kter� jsou v interaktivn�m prost�ed� 
k dispozici, nebudu podrobn� rozeb�rat. Stru�n� v�znam t�chto p��kaz�
je vyti�t�n na termin�l pomoc� p��kazu "\help" a je zahrnut 
v~p�edchoz� uk�zce.

P�ed tiskem m��eme m�nit interaktivn� n�kter� parametry. Nap��klad
pomoc� "\def\fotenc{8t}" d�me najevo, �e chceme testovat fonty 
v~k�dov�n�~"8t". Pomoc� p��kazu "\setsize" m��eme zadat jin�
z�kladn� rozm�r fontu ne� "10pt" a p��kazem "\baselineskip=..." m��eme
m�nit velikost ��dkov�n�. Kone�n� p��kazem "\def\textlang{en}"
d�v�me najevo, �e chceme vzorky v anglick�m textu a nikoli �esk�m.

V�choz� hodnoty makra "ofstest.tex" jsou z�visl� na tom, zda je pou�it
form�t "csplain" nebo form�t "plain". V prvn�m p��pad� je v�choz�m
jazykem uk�zek �e�tina a v�choz� k�dov�n� je "8z" (alias IL2).
P�i form�tu "plain" je v�choz�m jazykem angli�tina a k�dov�n� je
implicitn� nastaveno na "8t" (podle Corku).

Makro "ofstest.tex" nemus� testovat jen jedinou rodinu. Nap��eme-li
m�sto jm�na rodiny hv�zdi�ku, provede se pak zvolen� p��kaz na v�echny
rodiny, kter� jsou na�teny v deklara�n�ch souborech. Seznam t�chto
rodin je dostupn� pomoc� zn�m�ho p��kazu OFS "\showfonts" nebo
p��kazem "\famlist". Makro d�le umo�n� za chodu na��tat dal��
deklara�n� soubory (p��kaz "\decl") a ze seznamu rodin vymaz�vat
n�kter� rodiny. A� n�m po takov� �innosti z�stanou v seznamu
"\listfam" jen rodiny, kter� chceme podrobit testu, pak teprve
pou�ijeme p��kazy "\abet", "\text", "\mixed" a dal��.

\topfig {\epsfxsize=\hsize \epsfbox{antykwa.eps}}
{V�stup z "ofstest.tex". 
 Katalog voln� dostupn�ch rodin AntykwaTorunska}

Na obr�zku~2 je v�stup, kter� se d� vyu��t jako vzorn��ek font�.
Zvolil jsem deklara�n� soubor "pantyk" (Polish Antykwa) a p��kazem
"\remdecl defaults" jsem odstranil z "\listfam" implicitn� rodiny OFS.
Z�staly tam jen rodiny Antykwy Toru\'nsk�, z nich� jsem si ud�lal
vzorn��ek p��kazem "\abet". Takov� vzorn��ky stovek rodin, kter� m�m
na po��ta�i k dispozici, jsem si vytiskl a vyb�r�m z nich p�sma podle
aktu�ln� pot�eby (vzorn��ky nech�m kolovati).

V�imn�me si, �e OFS pro plain\TeX{} si udr�uje v pam�ti informace o
p�vodn�ch n�zvech jednotliv�ch variant font�. V uveden� uk�zce vid�me
varianty "Light", "LightItalic", "Medium" a "MediumItalic". Ve
vzorn��ku m�me tak� uvedeny p��kazy na p�epnut� do zvolen� varianty.

Z�v�rem bych cht�l poznamenat, �e interaktivn� makro "ofstest.tex"
se d� pou��t i neinteraktivn�m zp�sobem. V plain\TeX{}ov�m dokumentu
m��eme napsat nap��klad:

\begtt
\input ofstest [a117]
\cfam Bodoni        \tables \text \mixed
\cfam LetterGothic  \tables \text \mixed
<...atd.>
\endtt
%
Makro samo pozn�, �e je zavol�no v neinteraktivn�m re�imu a potla��
nutk�n� kl�st jak�koli dotazy.


\kap V�jimky z k�dov�n� pro ka�dou rodinu font�
%----------------------------------------------

Ukazuje se, �e ka�d� rodina font� je vybavena m�rn� odli�nou sadou
znak�. Tu chyb� nete�kovan� j, tam zas je nav�c k dispozici 
Euro atd. Nen� rozumn� pro ka�dou takovou v�jimku vytv��et k�dov�n� 
s~nov�m n�zvem. OFS rad�ji pracuje s po��d stejn�m k�dov�n�m, ale je
nov� schopno registrovat v�echny v�jimky z~k�dov�n� jednotliv�ch rodin
a udr�ovat si podle toho p�edstavu, kter� znaky jsou moment�ln� 
k~dispozici a kter� ne. Mysl�m si, �e touto vlastnost� nap��klad 
NFSS z \LaTeX{}u nedisponuje.

Za z�klad pro k�dov�n� "8z" jsem vzal encoding vektor
"xl2.enc", kter� vytvo�il pan Wagner. Vzhledem k tomuto k�dov�n� pak
ka�d� rodina font� m��e m�t n�jak� v�jimky. T�eba rodin� Charter chyb�
znaky "\dotlessj", "\Eth", "\eth", "\textimes" a "\texdiv". Je to
n�zorn� vid�t na v�pisu p�i testu p��kazem "\chars" (obr�zek~1).
Naopak t�eba rodina font� Lido m� nav�c (proti z�kladn�mu
k�dov�n� "8z") znaky "\degree", "\euro", "\trademark" atd.

V deklara�n�ch souborech m��eme v�jimky seskupit do skupin p��kazem
"\modifydef", jednotliv� v�jimky pak tam daklarujeme pomoc�
"\characterdef", "\characterdel", "\accentdef" a "\accentdel"
a kone�n� jednotliv�m rodin�m m��eme p�id�lit ur�it� skupiny v�jimek
p��kazem "\modifyenc". Program�tor maker se m��e pt�t na existenci
znaku ve fontu p��kazem "\knowchar". Podrobn�ji je o~t�chto p��kazech 
pojedn�no v dokumentaci~\cite{ofsdoc}.

Nap��klad rodina Charter m� pro k�dov�n� "8z" p�id�lenu skupinu
v�jimek s~n�zvem "8z:charter". O t�to skute�nosti n�s rovn� informuje
v�pis "\chars" na obr�zku~1 v odstavci "Modifications". Kdyby tato
skupina v�jimek obsahovala znaky nav�c, byly by v tomto odstavci 
vykresleny. V�pis "\chars" ov�em zatajuje, �e nejsou dosa�iteln�
n�kter� akcentovan� znaky. Nap��klad v~rodin� Charter chyb� 
znak~\H u. Proto je pro n�j deklarov�na v�jimka pomoc� "\accentdel".
Jakmile je v�jimka registrov�na, OFS automaticky za�ne realizovat
sekvenci \clqq"\H u"\crqq{} pomoc� implicitn�ho akcentu, tak�e i tento znak n�m
bude fungovat (a�koli bude v \TeX{}u slo�en ze dvou znak� pomoc�
primitivu "\accent"). 

\kap Automatick� �ten� k�dovac�ch soubor�
%----------------------------------------

Aby mohl OFS udr�ovat p�ehled o kontroln�ch sekvenc�ch pro jednotliv�
znaky a t�m tak� o v�jimk�ch z k�dov�n�, mus� m�t na�teny odpov�daj�c�
soubory "ofs-<k�dov�n�>.tex". U� ve verzi z roku 2001 tyto soubory
existovaly, ale u�ivatel si je na��tal podle vlastn�ho uv�en� s�m
p��kazem "\input". Proto�e se v~Ok\TeX{}u bude pracovat s mno�stv�m
r�zn�ch k�dov�n� a makra mezi t�mito k�dov�n�mi budou sofistikovan� a
mnohdy automaticky p�ep�nat, rozhodl jsem se OFS vybavit mo�nost�
automatick�ho na��t�n� soubor� "ofs-<k�dov�n�>.tex" v~okam�iku, kdy to
je nutn�.

Abych neiritoval p��li�nou inteligenc� makra OFS ty u�ivatele, kte��
maj� r�di konzervativn� p��stup a rad�ji si soubory na�tou sami, je
implicitn� automatick� na��t�n� k�dovac�ch soubor� vypnuto. U�ivatel
si m��e tuto funkci zapnout pomoc� p��kazu
"\loadingenc=1". Teprve po takov�m p��kazu m�me zaru�eno, �e OFS
udr�uje p�ehled o \TeX{}ov�ch sekvenc�ch vztahuj�c�ch se ke k�dov�n�
pou�it�ch font�.

Automatick� na�ten� souboru "ofs-<k�dov�n�>.tex" m��e prob�hnout ve
vel\-mi nep��zniv� dob�: nap��klad v horizont�ln�m m�du, uvnit� skupiny
nebo dokonce ve stavu, kdy m� u�ivatel nastaveny "\catcode" speci�ln�m
zp�sobem. Aby p�esto prob�hlo na�ten� souboru bezkonfliktn�, rozhodl
jsem se toto na�ten� �e�it n�sleduj�c�mi kroky:

\begitems
* P�ed na�ten�m k�dovac�ho souboru zalo�� OFS novou skupinu. 
* Pro jistotu v~t�to skupin� nastav� v�em znak�m standardn� 
  kategorie a znaku~"@" nastav� kategorii~11.
* Nastav� "\endlinechar=-1", tak�e dal�� �ten� ze souboru
  ignoruje pr�zdn� ��dky (neprovede se tedy ��dn� nadbyte�n� "\par")
  a ignoruje mezery, kter� vznikaj� na konc�ch ��dk� (nedoch�z�
  k~zavle�en� mezer v~horizont�ln�m m�du).
* Provede "\globaldefs=1", aby v�echny n�sleduj�c� definice 
  z~k�dovac�ho souboru z�staly zachov�ny i po opu�t�n� skupiny.
* Na�te k�dovac� soubor.
* Ukon�� skupinu, tak�e "\globaldefs", "\endlinechar" a kategorie
  znak� maj� zase stejn� v�znam, jak� m�ly p�ed na�ten�m souboru.
\enditems

\kap Novinky v deklara�n�ch souborech
%------------------------------------

Deklara�n� soubory vytvo�en� pro star� OFS z roku 2001 jsou a budou 
st�le pou�iteln�, tj. jazyk t�chto soubor� je zp�tn� kompatibiln�.
V nov� verzi OFS jsem ale p�idal dal�� vlastnosti a je tedy mo�no
pou��t nov� p��kazy.

Mezi ji� zm�n�n� novinky pat�� mo�nost p�id�lit ka�d� rodin� skupinu
v�jimek z k�dov�n�. To ale zdaleka nen� v�echno, co lze
nov� vyu��t ve verzi OFS~2004.

Ka�d� rodina font� m��e b�t registrov�na p��kazem "\registerenc"
k~pou�it� jen pro ur�it� k�dov�n�. M�me tak zaru�eno, �e nap��klad po

\begtt
\def\fotenc{aaa} \setfonts [Times/]
\endtt
%
se nebude OFS marn� sna�it naj�t neexistuj�c� metriku "ptmraaa.tfm",
ale vynad� n�m, �e k�dov�n� "aaa" nen� pro rodinu Times registrov�no.
Tato vlastnost je bohat� vyu�ita v Ok\TeX{}u, viz~\cite{oktex-slt}.

Ka�d� deklara�n� i k�dovac� soubor m��e za��nat p��kazem

\begtt
\protectreading <jm�no souboru><mezera>% This is part of OFS package
\endtt
%
T�m z�m�rn� zkomplikujeme �ten� tohoto souboru v~bal��c�ch, kde nen� p��kaz
"\protectreading" definov�n. V nov� verzi OFS je tento p��kaz definov�n tak, �e si
poznamen� <jm�no souboru> do pam�ti a p�i p���t�m �ten� stejn�ho
souboru se chov� jako "\endinput", tj. zaru��, �e n��e zapsan�
deklarace budou p�e�teny jen jednou. Podobnou vlastnost m� \LaTeX{}ov�
p��kaz "\ProvidesPackage".

Nov� je zavedena t� mo�nost p�edeklarovat ji� deklarovan� rodiny
font� prost�m zopakov�n�m p��kazu "\ofsdeclarefamily [<Rodina>]",
ov�em s jin�mi parametry. To d�v� mo�nost u�ivateli p�izp�sobit i
implicitn� rodiny font� vlastn�m pot�eb�m.

%\kap OFS �et�� �as u�ivatele i pam� \TeX{}u
%%-------------------------------------------
%
%V r�mci Ok\TeX{}u pl�nuji na��st pokud
%mo�no v�echny dostupn� deklara�n� soubory rodin font� u� p�i generov�n� form�tu.
%Cht�l bych proto, aby toto na�ten� zbyte�n� nezat�ovalo pam� \TeX{}u.
%Rozhodl jsem se tedy zcela p�epracovat intern� implementaci makra
%"\showfonts". P�vodn� toto makro pracovalo s makrem "\listfamilies",
%kter� vypisovalo sv�j obsah \uv{tak jak je} na termin�l a do logu.
%P�i velk�m mno�stv� font� ale toto makro nab�valo zbyte�n� obrovsk�ch
%rozm�r� a zacl�n�lo v pam�ti. P�i na��t�n� nov�ch daklara�n�ch soubor�
%nav�c OFS musel s t�mto velk�m makrem pracovat a modifikovat je. To
%zbyte�n� zpomalovalo na��t�n� nov�ch deklarac�.
%
%Nov� p��kaz "\showfonts" pracuje s daleko �sporn�j��m makrem,
%kter� obsahuje jen odkazy na jednotliv� deklarovan� rodiny. P��kaz
%"\showfonts" si pak mus� po�adovan� v�stup vypo��tat. Form�t v�stupu
%z�stal nezm�n�n. U�ivatel tedy nemus� post�ehnout ��dn� rozd�l (a� na
%to, �e bude na��t�n� deklara�n�ch soubor� pracovat rychleji). 


\kap Dvoj� �ten� stejn�ho souboru
%--------------------------------

Kam ps�t v�jimky z k�dov�n� jednotliv�ch rodin font�? Slu�elo by se,
aby byly tyto v�jimky v deklara�n�ch souborech spole�n� s
deklarovan�mi rodinami. 

V r�mci Ok\TeX{}u pl�nuji na��st pokud mo�no v�echny dostupn�
deklara�n� soubory rodin font� u� p�i generov�n� form�tu. Pak by ale
byly v�jimky p�e�teny u� p�i generov�n� form�tu.  Ov�em to nen� dobr�,
pokud chceme �et�it pam� \TeX{}u. Rozhodl jsem se tedy pou��t
n�sleduj�c� trik:

V�jimky z k�dov�n� lze zapisovat do deklara�n�ch soubor� za 
"\endinput", tak�e p�i prvn�m �ten� t�chto soubor� budou 
ignorov�ny. Ov�em v dob�, kdy bude rodina aktivov�na p��kazem
"\setfonts", m��e OFS otev��t deklara�n� soubor je�t� jednou,
tentokr�t p�esko�� obvykl� deklarace i "\endinput" a p�e�te seznam
v�jimek z k�dov�n�. Pro tyto ��ely jsou nov� vytvo�eny p��kazy 
"\modifyread" a "\modifytext". Jak p�esn� pracuj�, je pops�no v
dokumentaci~\cite{ofsdoc} a p��klad jejich pou�it� najde �ten��
v nov�m deklara�n�m souboru "slido.tex".


\kap Makro {\tt\char`\\ofshexbox}
%--------------------------------

V plain\TeX{}u je nap��klad znak \S{} �e�en pomoc� makra "\mathhexbox".
P�i v�� �ct� ke Knuthovi si dovol�m poznamenat, �e to je docela
nekoncep�n�, proto�e textov� znak je deklarov�n tak, �e jeho funk�nost
z�vis� na moment�ln�m nastaven� matematick�ch font�. Rozhodl jsem se
tedy vytvo�it pro takov� ��ely nov� makro "\ofshexbox", kter� z�vis�
jen na �tev�ici deklarovan�ch textov�ch font�, je� tvo�� rodinu. OFS
si nav�c pohl�d� velikost t�chto font�, tj. zaru��, �e v�dy budou
pou�ity ve spr�vn� velikosti. Pomoc� p��kazu

\begtt
\ofshexboxdef <rodina>{<metrika-rm>}{<metrika-bf>}{<metrika-it>}{<metrika-bi>}
\endtt
%
lze deklarovat <rodinu> jako �tve�ici metrik, kter� bude pak p�i
pou�it� makra "\ofshexbox<rodina><hexa-k�d>" pou�ita. Kter� konkr�tn�
metrika bude pou�ita, z�vis� na aktu�ln� variant� font�. P�i "\bf"
bude pou�ita <metrika-bf>, atd. Je-li aktu�ln� jin� varianta ne�
"\bf", "\it", "\bi", bude pou�ita <metrika-rm>.

N�sleduj�c� uk�zka z dokumentace ilustruje, jak se m��eme jednou pro
v�dy vyrovant s t�m, �e n�kter� rodiny znak Euro obsahuj� a n�kter�
ne:
\begtt
\ofshexboxdef {TS1}{tcrm1000}{tcbx1000}{tcti1000}{tcbi1000}
\characterdef \euro * {\ofshexbox{TS1}BF}
\endtt
%
Pou�it� metriky "tc*1000.tfm" obsahuj� znak Euro na pozici "BF". Tyto metriky
z~bal��ku EC font� jsou k�dovan� podle tzv.~Text Companion Encoding, 
v~\LaTeX{}u ozna�ovan� jako TS1. V uk�zce jsme deklarovali znak
"\euro" {\it pro v�echny rodiny font�, ve kter�ch znak nen� deklarov�n\/}
pomoc� makra "\ofshexbox". Znak se tedy v rodin�ch, kde Euro nen�
p��tomno, vylov� z metrik "tc*1000.tfm", a p�itom bude z�viset na
aktu�ln� variant� (tu�n�/kurz�va/tu�n� kurz�va) a nav�c bude v�dy
pou�it v aktu�ln� velikosti font�. Pokud ale znak Euro je v rodin�
font� obsa�en, pak se p�ednostn� pou�ije tento znak.

\ofshexboxdef {TS1}{cmr8c}{cmbx8c}{cmti8c}{cmbxti8c}
\characterdef \euro * {\ofshexbox{TS1}BF}

Aby to cel� fungovalo, je samoz�ejm� pot�eba deklarovat pro ka�dou rodinu
odpov�daj�c� skupinu v�jimek ze z�kladn�ho k�dov�n�. Pak bude m�t
u�ivatel z�ruku, �e pokud nap��e "\euro", v�dycky se mu vytiskne znak 
\euro. P�itom se nemus� starat, zda znak v aktu�ln� pou�it�m fontu je
nebo nen�.


\kap Nov� deklarace v OFS
%------------------------

Do nov� verze OFS jsem p�idal deklarace rodin "CM*" v k�dov�n� 
"8t" (podle Corku). Tyto rodiny odkazuj� na
EC fonty a respektuj� v�echny stupn� zv�t�en� (r�zn� metriky pro r�zn�
velikosti).

D�le jsem definoval nov� k�dov�n� "8c", kter� odpov�d� tzv. \uv{Text
Companion encoding} v \LaTeX{}u zn�m� jako TS1. V�em implicitn�m
rodin�m font� "CMRoman", "CMSans", "CMTypewriter", "Times",
"Helvetica", "Courier" jsem p�id�lil roz�i�uj�c� metriku v k�dov�n�
"8c". T�m je nap��klad vy�e�en znak "\euro" v rodin�ch "CM*".  Rodiny
"Times", "Helvetica" a "Courier" maj� sice ve standardn�ch
distribuc�ch \TeX{}u p�ipraveny metriky "8c", ale tyto metriky 
zdaleka neobsahuj� v�echny znaky podle
definice tohoto k�dov�n� (nap��klad "\euro" chyb�).Tyto rodiny maj�
tedy v~OFS p�id�leny v�jimky z k�dov�n� "8c".

Vzhledem k tomu, �e metriky "tc*.tfm" pat�� rodin� "CMRoman"
v k�dov�n� "8c", je mo�n� p��klad z p�edchoz� sekce s p��kazem
"\ofshexbox" p�epsat takto:

\begtt
\ofshexboxdef {TS1}{cmr8c}{cmbx8c}{cmti8c}{cmbxti8c}
\characterdef \euro * {\ofshexbox{TS1}BF}
\endtt

�ten��, kter� zn� dokumentaci k OFS, si jako cvi�en� m��e zkusit naj�t
rozd�l mezi deklarac� "\ofshexboxdef" z p�edchoz� sekce a touto
uk�zkou.  (Odpov��: p�i pr�ci s r�zn�mi velikostmi se podle p�edchoz�
sekce pou�ije znak euro v�dy z metriky "tc*1000.tfm" p��slu�n�
zv�t�en� pomoc� "at". Na druh� stran� tato nov� deklarace vybere podle
po�adovan� velikosti odpov�daj�c� metriku, t�eba "tcrm1095.tfm",
"tcrm1200.tfm" atd. v�dy nav�c p�esn� zv�t�enou pomoc� "at".)


\kap Deklara�n� soubory pro matematick� fonty
%--------------------------------------------

OFS z roku 2001 deklarovalo jen matematick� k�dov�n� "PS"
(PostSriptov� znaky z~fontu Symbol) a "CM" (Znaky z Computer Modern
font�). Pozd�ji p�ibyl dopl�kov� soubor, kde byla deklarace
pro fonty MathTimes.

V roce 2004 jsem nejprve vylep�il k�dov�n� "PS" tak, �e znaky
$\sum$, $\int$ a $\prod$ maj� v~display m�du zv�t�en� varianty a d�le jsem
deklaroval dal�� matematick� k�dov�n�:

\begitems
* Po na�ten� souboru "amsfn.tex" m��e u�ivatel pou��t
  "\def\fomenc{AMS}" a vyu��t des�tky speci�ln�ch matematick�ch symbol�
  zn�m�ch p�edev��m z~\AMS\TeX{}u.
* Po na�ten� souboru "txfn.tex" m��e u�ivatel pou��t jednu ze dvou
  mo�nost�: "\def\fomenc{TX}" --- pro matematiku se pou�ij� TX fonty,
  tj.~voln� p��stupn� �pln� sada matematick�ch znak� vizu�ln� kompatibiln�ch
  s rodinou Times a tedy i s mnoha dal��mi b�n�mi p�smy dynamick� antikvy. 
  Druhou mo�nost� je "\def\fomenc{PX}" --- podobn� jako 
  p�i k�dov�n� "PS" se kombinuje
  kurz�va aktu�ln� rodiny font� s matematick�mi znaky z TX font�.
* Po na�ten� souboru "mtfn.tex" m��e u�ivatel pou��t
  "\def\fomenc{MT}". Pak se pou�ij� metriky komer�n� sady
  matematick�ch font� MathTimes.
\enditems

V tuto chv�li u� mohu prozradit, �e jsem na za��tku tohoto �l�nku
zatajil, �e obr�zek~1 nekoresponduje zcela
p�esn� s v�pisem, kter� obr�zku p�edch�z�. Test "\math" byl
ve skute�nosti spu�t�n a� po zad�n� "\input txfn" a "\def\fomenc{PX}". 
Na obr�zku~1 tedy vid�me kombinaci voln� dostupn� rodiny Charter 
s voln� dostupn�mi TX fonty pro matematickou sazbu. Tyto matematick� fonty
vypadaj� hodn� dob�e a nav�c obsahuj� nadmno�inu v�ech znak� z Computer
Modern i z~\AMS{} font� dohromady. Doporu�uji pou��vat!


\kap Nekompatibilita
%-------------------

P�i p�echodu na novou verzi jsem byl bohu�el nucen v n�kolika bodech
ustoupit od exaktn� zp�tn� kompatibility. Tyto body nyn� p�esn�
vyjmenuji. V���m, �e se jedn� o zm�ny, kter� v�t�ina u�ivatel� v�bec
nepoc�t�.

Jazyk deklara�n�ch soubor� textov�ch font� byl pouze roz���en,
tj. star� konstrukce jsou st�le pou�iteln�, ale p�ibyly nov�
slov��ka. Deklara�n� soubory pro novou verzi OFS nejsou tedy
zpracovateln� ve verzi star�. Typick�m nov�m slov��kem je
"\protectreading", kter� se nyn� sna��m pou��vat ve v�ech nov�ch
deklara�n�ch souborech.

Jazyk deklara�n�ch soubor� matematick�ch font� byl bohu�el m�rn�
zm�n�n. M��e se tedy st�t, �e pokud si n�kdo vytvo�il deklaraci
matematick� rodiny, nebude mu v nov�m OFS fungovat. Jste-li autory
maker, kter� deklaruj� matematick� rodiny font�, pak doporu�uji
p�e��st sekci 3.7 v~dokumentaci~\cite{ofsdoc}, kde jsou zm�ny d�kladn�
pops�ny.

Dal�� probl�my s kompatibilitou mohou nastat na �rovni pou�it� maker
pro fonty �tormovy p�smolijny. Tam jsem m�l v deklarac�ch rodin
docela nekoncep�n� zavedeny i k�dovac� soubory pro k�dov�n�~"6s",
zat�mco p�i pou�it� standardn�ch rodin
(nap�. ze souboru "a35.tex") musel u�ivatel zav�st k�dovac� soubory
manu�ln�. Rozhodl jsem se k�dovac� soubory implicitn� nezav�d�t nikde,
tak�e jsem p��slu�n� "\input" vymazal i z~deklara�n�ch soubor� pro
�tormovy fonty. Pokud u�ivatel chce na��tat k�dovac� soubory, m��e 
v~nov� verzi OFS ps�t "\loadingenc=1".

V p�vodn� deklaraci �tormov�ch font� bylo nav�c aktivov�no makro,
kter� roz�i�ovalo sadu matematick�ch font� o aktu�ln� �torm�v font, na
kter� pak byly odkazy u t�ch matematick�ch znak�, kter� �torm do sv�ch
p�sem obvykle zahrnul (nap��klad $\infty$). To ale nefungovalo
spolehliv� (ne ve v�ech �tormov�ch fontech byly matematick� znaky
zastoupeny stejnou m�rou), tak�e jsem tuto vlastnost zru�il �pln�. Pro
u�ivatele, kte�� to n�kdy vyu�ili, jsem ponechal makro "\stmath",
jeho� explicitn�m spu�t�n�m se matematick� sada font� roz���� stejn�,
jako ve star�ch deklarac�ch �tormov�ch font�.

Citelnou zm�nu v deklarac�ch mohou poc�tit u�ivatel�, kter� pou��vali
makra definovan� na konc�ch k�dovac�ch soubor� a t�kaj�c� se uvozovek:
"\singleuv", "\doubleuv", "\doublefuv", atd. Tato makra jsem 
z deklarac� vyhodil, proto�e podle m�ho n�zoru pat�� do stylov�ho
souboru pro dan� jazyk. Za�adil jsem je proto do Ok\TeX{}u.
Pokud je u�ivatel pot�ebuje, m��e si je ze soubor� "ofs-8?.tex"
a "ofs-6s.tex" obkreslit. Z�stala tam, jsou ale zakomentovan�.

�et�en� pam�t� v p��kazu "\showfonts" m� vedlo k odstran�n� intern�ho
p��kazu "\listfamilies". Pokud si u�ivatel ud�lal makra, kter� 
s t�mto p��kazem pracovala, pak toto p�estane fungovat. 
Nap��klad m� makro "ofscatal.tex"
p�estalo z tohoto d�vodu pracovat. Rozhodl jsem se toto makro u�
nep�ed�l�vat a odsunout je na smeti�t� d�jin. Makro "ofstest.tex"
toti� um� taky d�lat katalogy font�, viz nap��klad obr�zek~2.


\kap Obnoven� dokumentace v�etn� anglick�
%----------

�eskou dokumentci jsem upravoval pr�b�n� p�ed proveden�m zm�n ve
vlastn�ch makrech OFS. Anglickou dokumentaci jsem pak upravil se
zpo�d�n�m. Vydatn� mi p�i tom pomohl student Tom� Kom�rek. D�kuji.


\reference

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

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

\bib {ofs-slt}
     Petr Ol��k. {\it Makro OFS}.
     in: \SLT{} 2002 -- sborn�k semin��e o Linuxu a \TeX{}u, str.~79--92.

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

\bib {oktex-slt}
     Petr Ol��k. {\it Projekt Ok\TeX}. 
     in: \SLT{} 2004 -- sborn�k semin��e o Linuxu a \TeX{}u.


\bye 







