LaTeX2e i fonty

Poni�szy dokument jest cz�ci� artyku�u Marcina Woli�skiego LaTeX2e a sprawa polska, kt�ry ukaza� si� w Biuletynie GUST nr 10/1998. Ca�y artyku� dost�pny jest na serwerze GUST w (spakowanej) wersji PostScript.



NFSS

W niniejszym wprowadzeniu zostanie przedstawiony wy��cznie spos�b zarz�dzania fontami tekstowymi. Do prezentacji zagadnie� zwi�zanych ze sk�adem formu� matematycznych autor nie czuje si� jeszcze odpowiednio przygotowany.

TeX ma wbudowany jedynie bardzo prosty spos�b dost�pu do font�w. Poleceniem \font mo�na zwi�za� nazw� symboliczn� z operacj� wybrania fontu za�adowanego z konkretnego pliku metrycznego i o ustalonej wielko�ci. (W ca�ym niniejszym tek�cie s�owo font b�dzie u�ywane na okre�lenie takiej w�a�nie istno�ci. W sensie TeXa -- co� za�adowanego z konkretnego pliku metrycznego. W sensie typograficznym -- pismo o ustalonym kroju, odmianie i stopniu.) Pos�ugiwanie si� tak zdefiniowanymi poleceniami na d�u�sz� met� jest uci��liwe, poniewa� wywo�uj� one bezpo�rednio okre�lon� odmian� i stopie� okre�lonego kroju pisma. Wyobra�my sobie, �e wykonano

\font\it=plti10

Je�li teraz fragment tekstu zawieraj�cy u�ycie tego polecenia zostanie przeniesiony z g��wnego tekstu dokumentu do przypisu, wydarzy si� katastrofa: przypisy s� tradycyjnie sk�adane pismem mniejszego stopnia, ale fragment kursyw� b�dzie wi�kszy!

Dlatego ka�dy TeXowy format ma swoj� metod� zdefiniowania polecenia \it tak, aby znaczy�o co� w rodzaju ,,prze��cz font na kursyw� w bie��cym stopniu''. LaTeX 2.09 zapewnia� dost�p do ustalonego zbioru font�w -- mianowicie kroj�w Computer Modern -- tak aby dawa�o si� manipulowa� niezale�nie stopniem i odmian� pisma. Dodanie nowych font�w do zestawu dost�pnego w LaTeXu w praktyce wymaga�o ingerencji w plik lfonts.tex, co by�o zadaniem wyj�tkowo niewdzi�cznym, a ponadto prowadzi�o do powstawania niezgodnych ze sob� lokalnych wersji LaTeXa.

W LaTeXa 2e wbudowano skomplikowany, ale za to bardzo elastyczny, mechanizm nazywaj�cy si� NFSS (New Font Selection Scheme -- nowy spos�b wyboru font�w). System ten jest stosunkowo �atwy w u�yciu, zarejestrowanie font�w w systemie jest elementarne (je�eli dost�pne s� pliki opisu font�w -- font descripton files) i nie wymaga ingerencji w format LaTeXa, natomiast si�� rzeczy stworzenie plik�w opisu wymaga odrobiny wiedzy o systemie.

Opis fontu w nowym sposobie wyboru font�w

W LaTeXu 2e bie��cy font jest charakteryzowany przez pi�� element�w: uk�ad (zestaw znak�w), kr�j (rodzin�), grubo�� i szeroko��, odmian�, stopie� i interlini�. Ka�dy z tych element�w mo�na wybra� oddzielnym poleceniem.

uk�ad fontu \fontencoding{OT1}
rodzina (kr�j) \fontfamily{cmr}
grubo�� i szeroko�� \fontseries{m}
odmiana \fontshape{n}
stopie� i interlinia \fontsize{10}{12pt}
\selectfont

Argumenty polece� wymienione w tabelce odpowiadaj� domy�lnym warto�ciom dla dokumentu sk�adanego przy pomocy standardowych klas w stopniu 10pt. U�ycie polece� \font... nie powoduje od razu w��czenia fontu, poniewa� u�ytkownik mo�e chcie� zmieni� kilka element�w charakterystyki bie��cego fontu jednocze�nie. Dlatego ostateczny wyb�r fontu zatwierdza si� poleceniem \selectfont.

Wszystkie elementy charakterystyki fontu, za wyj�tkiem stopnia pisma, mo�na zmieni� jednocze�nie poleceniem \usefont. Nie wymaga ono r�wnie� zatwierdzenia przez \selectfont.

\usefont{OT1}{cmr}{m}{n}

Poszczeg�lne elementy opisu fontu s� od siebie niezale�ne, co daje LaTeXowi przewag� nad procesorami tekstu. Wyobra�my sobie, �e w ,,zwyk�ym procesorze tekstu'' w tek�cie po polsku u�ywamy wyra�enia ,,\`a propos''. Poniewa� w ,,polskim'' foncie nie ma znaku \`a, musimy pobra� symbol z fontu ,,zachodniego''. Je�eli w p�niejszym etapie opracowania redakcyjnego postanowimy zmieni� kr�j pisma np. z Timesa na Helvetic�, obca litera pozostanie w starym kroju, bo uzyskuj�c j� nie mogli�my powiedzie� ,,chc� bie��cy kr�j i odmian�, ale w uk�adzie zachodnioeuropejskim'', zamiast tego w dokumencie stoi ,,tu ma by� zachodnioeuropejski Times jasny prosty stopnia 10pt''.

Gdy NFSS stwierdzi, �e dana kombinacja parametr�w nie odpowiada �adnemu istniej�cemu fontowi, wypisuje odpowiedni� informacj� do pliku .log i stara si� u�y� fontu o mo�liwie bliskiej charakterystyce. Niekt�rzy bardzo nie lubi� tej w�asno�ci NFSS, uwa�aj�c �e jest to jedno z miejsc, w kt�rych LaTeX usi�uje co� (�le) zrobi� za u�ytkownika. To zachowanie mo�na zmieni�. U�ycie w preambule deklaracji

\usepackage[pausing]{tracefnt}

powoduje zamian� wszystkich komunikat�w o brakuj�cych fontach w komunikaty o b��dach, wymagaj�ce interwencji u�ytkownika.

Om�wi� teraz kolejne parametry opisuj�ce font w NFSS.

Uk�ad fontu jest najciekawszym elementem, poniewa� wydaje si�, �e LaTeX jest jedynym systemem, w kt�rym poj�cie to wyst�puje jawnie. Uk�ad fontu opisuje, jakie znaki s� dost�pne w foncie i w jakich pozycjach. Polecenia akcentowe w LaTeXu korzystaj� z informacji o uk�adzie bie��cego fontu, aby u�y� najlepszej dost�pnej metody uzyskania danego znaku.

Poniewa� mechanizm sterowania t�umaczeniem znak�w na pozycje w foncie nie wyst�puje w samym TeXu, LaTeXowy mechanizm uk�ad�w dzia�a na poziomie makr. W zwi�zku z tym dotyczy on tylko znak�w dost�pnych poprzez makra. Tabele konwersji kodu wej�ciowego na poziomie implementacji dokonuj� t�umaczenia od razu w pozycje znak�w w foncie, ignoruj�c ten mechanizm. Z drugiej strony pakiet inputenc pos�uguje si� znakami aktywnymi, kt�re zachowuj� si� jak makra, wykorzystuj�c mechanizm uk�ad�w font�w.

Nazwy uk�ad�w s� tradycyjnie pisane wielkimi literami i cyframi. Poni�sza tabela zestawia uk�ady font�w nale��ce do standardu LaTeXa.

Uk�ady font�w w LaTeXu
OT1 Old Text 1 uk�ad font�w zastosowany przez Knutha
OT2 Old Text 2 uk�ad cyrylicy z Washington University
OT3 Old Text 3 uk�ad font�w wsuipa (?)
OT4 Old Text 4 uk�ad font�w PL
T1 Text 1 ,,europejski'' uk�ad font�w (Cork)
T3 Text 3 IPA -- znaki fonetyczne
T4 Text 4 uk�ad dla j�zyk�w afryka�skich
TS1 Text Symbol 1 dodatkowe symbole tekstowe
OML Old Math Letters uk�ad fontu matematycznego wg. Knutha
OMS Old Math Symbols uk�ad symboli wg. Knutha
OMX Old Math Extensible uk�ad fontu ze znakami ,,rozci�gliwymi''

Uk�ady o nazwach, zaczynaj�cych si� liter� O, zawieraj� po 128 pozycji. Pozosta�e s� ,,nowymi'' uk�adami 256-znakowymi. OT4 wy�amuje si� z tego schematu, b�d�c rozszerzeniem OT1, ale nie wype�niaj�cym wszystkich 256 pozycji.

Uk�ad T1 jest ,,nowym'' uk�adem opracowanym na konferencji w Cork. Zawiera on znaki umo�liwiaj�ce sk�ad w wi�kszo�ci j�zyk�w europejskich. TS1 jest odpowiadaj�cym mu uk�adem uzupe�niaj�cym zawieraj�cym lataj�ce akcenty dla majusku� (kt�re nie zmie�ci�y si� w T1), znaki ,,copyright'', ,,registered'' i ,,trade mark'', liczne symbole walut oraz znaki pauzy o d�ugo�ciach po�rednich mi�dzy ,,endash'' i ,,emdash'', kt�re powinny uszcz�liwi� polskich redaktor�w technicznych.

Jak wida�, brak ,,nowych'' uk�ad�w matematycznych. Wydaje si�, �e nikt nie czuje si� kompetentny, by takie opracowa�, lub te� uk�ad zaproponowany przez Knutha funkcjonuje wystarczaj�co dobrze, a wieloj�zyczno�� nie ma wielkiego zastosowania do formu� matematycznych.

Uk�ady font�w musz� by� jawnie deklarowane w dokumencie. Wszystkie uk�ady, kt�re b�d� u�ywane w dokumencie powinny zosta� wymienione jako opcje wywo�ania pakietu fontenc. Na przyk�ad �eby za�adowa� definicje uk�adu OT2 (cyrylica) i OT4 (polski) wykonujemy:

\usepackage[OT2,OT4]{fontenc}

Ostatni uk�ad wymieniony w tej klauzuli b�dzie domy�lnym uk�adem dokumentu.

Kr�j pisma (rodzina).
Kr�j pisma jest wyr�niony przez jednolito�� projektu graficznego. Jest to wszak�e do�� nieprecyzyjne okre�lenie, jako �e np. antykwa i kursywa tego samego kroju r�ni� si� do�� znacznie kszta�tem znak�w. Kryterium praktyczne jest wi�c takie, �e kr�j stanowi taki zbi�r font�w, kt�remu jego projektant nada� wsp�ln� nazw�, np. Quasi Palladio.

W NFSS stosuje si� kilkuznakowe skr�ty nazw kroj�w. Dla Computer Modern s� to np. cmr, cmss, cmtt. Dla kroj�w postscriptowych stosuje si� zwykle trzy pierwsze znaki nazwy plikowej fontu wg. konwencji Karla Berry. Na przyk�ad ptm to Adobe Times, phv to Adobe Helvetica, a bch to Bitstream Charter. Tych nazw u�ywa si� jako argumentu \fonfamily.

Dla os�b po raz pierwszy stykaj�cych si� z NFSS trudno�� stanowi zwykle zrozumienie zale�no�ci mi�dzy rodzin� a uk�adem fontu. I tak na przyk�ad kr�j Computer Modern Roman (cmr) wyst�puje co najmniej w trzech uk�adach. Kr�j cmr w starym uk�adzie tekstowym OT1 jest dost�pny w oryginalnych fontach Knutha o nazwach plikowych np. cmr10, cmbx12, cmti9, itd. Kr�j cmr w uk�adzie polskim OT4 jest realizowany przez adaptacj� font�w Knutha, dokonan� przez B. Jackowskiego i M. Ry�ko. Nazwy plikowe tych font�w to np. plr10, plbx12, plti9. Trzecim uk�adem, w kt�rym dost�pny jest kr�j cmr, jest nowy ,,europejski'' uk�ad tekstowy T1. Ta kombinacja parametr�w oznacza u�ycie font�w EC (Extended Computer Modern), czyli plik�w metrycznych np. ecr1000, ecbx1200, ecti0900.

Fonty Knutha opr�cz rodziny Computer Modern Roman obejmuj� jeszcze rodzin� Computer Modern Sans Serif (cmss), Computer Modern Typewriter (cmtt) i kilka drobnych eksperymentalno-dekoracyjno-zabawowych, jak Computer Modern Funny Roman (cmff), Computer Modern Dunhill Roman (cmdh), Computer Modern Fibonacci Roman (cmfib).

Zatem wyb�r spo�r�d font�w CM, PL czy EC, odbywa si� poprzez zmian� u�ywanego uk�adu, a nie rodziny, bo wszystkie one zawieraj� rodziny cmr, cmsscmtt -- znaki wyst�puj�ce w ka�dym z tych font�w maj� w zasadzie ten sam projekt graficzny, jedynie zestaw dost�pnych znak�w jest r�ny.

Prze��czenie standardowego LaTeXa na fonty zawieraj�ce polskie znaki diakrytyczne, polega na zmianie u�ywanego uk�adu font�w na OT4 lub T1. Od tego momentu odwo�ania do standardowych rodzin font�w b�d� dotyczy�y font�w zawieraj�cych polskie znaki.

Kroj�w pisma nie trzeba deklarowa�. LaTeX za�aduje odpowiednie informacje przy pierwszym odwo�aniu do danego kroju.

Grubo�� i szeroko��.
Oto najcz�ciej spotykane warto�ci tego parametru:
m medium zwyk�y
b bold gruby
bx bold extended gruby szeroki
sb semi-bold p�gruby
c condensed w�ski

W og�lno�ci grubo�� i szeroko�� mog� przebiega� kilkustopniow� skal�, daj�c kilkana�cie kombinacji opisanych dwuliterowymi kodami. Wi�kszo�� kroj�w wyst�puje jednak tylko w dw�ch lub trzech wersjach grubo�ci/szeroko�ci.

Odmiana.
Najcz�ciej dost�pne odmiany to:

n normal prosta
it italic kursywa
sl slanted pochy�a
sc small caps kapitaliki
ui upright italic ,,wyprostowana'' kursywa
Stopie� pisma i interlinia.
Argumentami polecenia \fontsize s� stopie� pisma i interlinia. Domy�ln� jednostk� s� punkty (ameryka�skie), ale w ka�dym z argument�w mo�na te� u�y� dowolnej jednostki akceptowanej przez TeXa.

W TeXu interlinia jest sta�a dla ca�ego akapitu. M�wi�c �ci�lej, w ca�ym akapicie zostanie u�yta jej warto�� bie��ca na jego ko�cu.

Obs�uga typowych sytuacji

Opisany powy�ej spos�b manipulowania fontami pozwala na dost�p do wszystkich zainstalowanych font�w rodziny, ale jest uci��liwy. Dlatego LaTeX ma seri� polece� (definiowanych po cz�ci przez klasy) obs�uguj�cych typowe sytuacje.

Po pierwsze, mamy seri� polece� wybieraj�cych stopie� pisma i interlini�, kt�re wyst�powa�y r�wnie� w LaTeXu 2.09. Poni�sza tabela wymienia stopnie odpowiadaj�ce poszczeg�lnym poleceniom, w zale�no�ci od stopnia pisma tekstu podstawowego wybranego w \documentclass.

stopie� pisma
tekstu g��wnego 10pt 11pt 12pt
\tiny 5pt 6pt 6pt
\scriptsize 7pt 8pt 8pt
\footnotesize 8pt 9pt 10pt
\small 9pt 10pt 11pt
\normalsize 10pt 11pt 12pt
\large 12pt 12pt 14pt
\Large 14pt 14pt 17pt
\LARGE 17pt 17pt 20pt
\huge 20pt 20pt 25pt
\Huge 25pt 25pt 25pt

Zosta�y r�wnie� zachowane polecenia LaTeXa 2.09 \rm, \bf, \it, \sl, \sc, \ss\tt. Ale uwaga: zachowuj� si� one dok�adnie tak jak w LaTeXu 2.09 -- nie da si� na przyk�ad przy ich pomocy uzyska� grubej kursywy.

Nowy zestaw polece� pos�uguje si� nast�puj�cym modelem u�ycia font�w w dokumencie. Poniewa� mieszanie r�nych kroj�w szeryfowych w jednym dokumencie w zasadzie jest b��dem (a przynajmniej powinno by� wynikiem przemy�lanej decyzji), w schemacie przyj�tym przez standardowe klasy dokument�w dost�pny jest jeden kr�j szeryfowy, jeden bezszeryfowy i jeden grotesk. Oczywi�cie domy�lnie s� to Computer Modern Roman, Computer Modern Sansserif i Computer Modern Typewriter.

Oto podstawowe polecenia wyboru kroj�w i odmian w tym schemacie:

Kr�j pisma (rodzina)
\textrm{...} lub \rmfamily kr�j szeryfowy
\textsf{...} lub \sffamily kr�j bezszeryfowy
\texttt{...} lub \ttfamily grotesk
Grubo�� i szeroko�� pisma
\textmd{...} lub \mdseries pismo jasne
\textbf{...} lub \bfseries pismo grube
Odmiana pisma
\textup{...} lub \upshape odmiana prosta
\textit{...} lub \itshape kursywa
\textsl{...} lub \slshape odmiana pochy�a
\textsc{...} lub \scshape kapitaliki

Jak wida�, tworz� one pary polece� o podobnej funkcjonalno�ci. Wersje z argumentem sk�adaj� ten argument pismem wybranym przez sw�j odpowiednik bez argumentu. Ponadto polecenia te na granicy mi�dzy pismem pochy�ym a prostym dodaj� kompensat� wychylenia ostatniego znaku (italic correction), chyba �e nast�pnym znakiem jest kropka lub przecinek i kompensata nie jest potrzebna.

Polecenia bez argument�w mo�na sobie wyobra�a� jako zdefiniowane wg schematu:


\newcommand\rmfamily{
  \fontfamily{\rmdefault}\selectfont}

One r�wnie� nie maj� zaszytej w sobie nazwy rodziny, odmiany, grubo�ci, ale odwo�uj� si� do makr przechowuj�cych warto�ci domy�lne. Oczywi�cie domy�ln� warto�ci� makra \rmdefault jest cmr, czyli polecenie \rmfamily domy�lnie w��cza kr�j Computer Modern Roman.

St�d p�ynie wniosek, �e aby w LaTeXu z�o�y� dokument, u�ywaj�c jako kroju szeryfowego Timesa, wystarczy:

\renewcommand\rmdefault{ptm}

(Polecenia zapo�yczone z LaTeXa 2.09 dzia�aj� w podobny, po�redni spos�b, wi�c r�wnie� konsekwentnie poddaj� si� takiemu przedefiniowaniu.)

Warto�ci domy�lne wkraczaj� jeszcze w kilku innych miejscach.

Zasadnicza tre�� dokumentu jest sk�adana fontem uaktywnianym poleceniem \normalfont. Jest ono mniej wi�cej r�wnowa�ne


\usefont{\encodingdefault}
  {\familydefault}
  {\seriesdefault}{\shapedefault}
P�yn� z tego ciekawe wnioski:

1) Zmieniaj�c warto�� \encodingdefault na OT4 mo�emy sprawi�, �e dokument b�dzie sk�adany polskimi fontami. Pakiet polski tak w�a�nie post�puje, prze��czaj�c uk�ad na OT4 lub T1 w zale�no�ci od opcji.

2) Standardow� warto�ci� \familydefault jest \rmdefault. Sk�ad ca�ego dokumentu czcionk� bezszeryfow� mo�na uzyska� zmieniaj�c t� warto�� na \sfdefault:

\renewcommand\familydefault{\sfdefault}

Tego rodzaju zmian nale�y dokonywa� w preambule dokumentu (to jest przed \begin{document}).

Konfigurowanie NFSS

Pozostaje jeszcze odpowiedzie� na pytanie, sk�d NFSS ,,wie'', jakie kroje, odmiany i stopnie pisma s� dost�pne i w jakich uk�adach.

Deklaracja uk�ad�w font�w powoduje, �e LaTeX �aduje pliki opisuj�ce dane uk�ady. Np. dla uk�adu OT4 b�dzie to plik ot4enc.def (Uwaga: od grudnia 1996 nazwy wszystkich plik�w w dystrybucji LaTeXa s� pisane tylko ma�ymi literami. Fakt ten wywo�a� niejakie zamieszanie, ale wydaje si�, �e na d�u�sz� met� jest to decyzja rozs�dna.) W tym pliku zawarte s� informacje, jakie akcenty s� dost�pne w danym uk�adzie, w jakich pozycjach si� one znajduj� i jakie s� dost�pne znaki akcentowane (kombinacje akcent-litera).

Pakiet polski.sty wewn�trznie �aduje odpowiedni� definicj� uk�adu.

Opisy kroj�w s� �adowane automatycznie z plik�w .fd przy pierwszej pr�bie u�ycia fontu z danej rodziny w danym uk�adzie. Na przyk�ad po zadeklarowaniu jako domy�lnego uk�adu OT4, pierwsza pr�ba w��czenia fontu z rodziny cmr spowoduje, �e LaTeX za�aduje plik ot4cmr.fd. Oto fragment tego pliku:


\DeclareFontFamily{OT4}{cmr}{}
\DeclareFontShape{OT4}{cmr}{m}{n}
   {  <5> <6> <7> <8>
          <9> <10> <12> gen * plr
      <10.95> plr10
      <14.4>  plr12
      <17.28><20.74><24.88>plr17}{}
...
\DeclareFontShape{OT4}{cmr}{bx}{it}
   { <-10>sub * cmr/bx/n
     <10> <10.95> <12> <14.4> <17.28>
          <20.74> <24.88> plbxti10
     }{}
...

Pierwsza deklaracja powiadamia, �e jest to opis rodziny cmr w uk�adzie OT4. Dalej nast�puje ci�g deklaracji \DeclareFontShape opisuj�cych poszczeg�lne kombinacje rodzina/grubo��/odmiana. Pierwsza opisuje odmian� jasn� (m medium), prost� (n normal) -- dla stopni 5, 6, 7, 8, 9, 10 i 12 nale�y u�y� fontu o nazwie plikowej powstaj�cej z ci�gu plr po do��czeniu do� liczby stopnia pisma. Dla stopnia 10.95pt nale�y u�y� fontu plr10 at 10.95pt, podobnie dla stopni 14.4, 17.28, 20.74, 24.88 u�yty zostanie odpowiednio zeskalowany font plr12plr17. Druga klauzula \DeclareFontShape opisuje grub� (bx bold extended) kursyw� (it italic) -- dla stopni mniejszych od 10pt nale�y u�y� w zast�pstwie grubej prostej odmiany rodziny cmr. Dla wymienionych dalej stopni u�yty zostanie odpowiednio zeskalowany font plbxti10.

Deklaracje uk�ad�w OT1T1 oraz opis rodziny cmr w tych uk�adach s� wbudowywane w format razem z plikami metrycznymi podstawowych font�w. S�u�y to przyspieszeniu �adowania LaTeXa na pocz�tku przetwarzania dokumentu. Zestaw wbudowanych uk�ad�w, rodzin i plik�w metrycznych mo�na zmieni� przy pomocy plik�w konfiguracyjnych fonttext.cfgpreload.cfg -- szczeg�y opisano w dokumencie cfgguide.tex.

Aby mo�na by�o powiedzie�, �e font jest zainstalowany w LaTeXu musi istnie� dla niego definicja uk�adu i definicja kroju (rodziny) w tym uk�adzie. Uk�ad�w w zasadzie jest sko�czona niewielka liczba i definicje wi�kszo�ci z nich s� zawarte w dystrybucji LaTeXa (w tym OT4). Natomiast dla ka�dego kroju potrzebny jest jego opis w pliku o nazwie zbudowanej z nazwy uk�adu i nazwy rodziny z rozszerzeniem .fd (wszystko ma�ymi literami). Pliki te musz� znajdowa� si� w katalogu widocznym dla LaTeXa.

Pliki opisu dla font�w PL i PC s� zawarte w pakiecie PLaTeX. Pliki opisu dla kroju Quasi Palladio (qpl), Quasi Times (qtm) i antykwy toru�skiej (antt) s� cz�ci� pakietu pl-qx Piotra K�osowskiego.


Opracowa�: StaW (ostatnia modyfikacja 28.11.2000)