METAFONT
   
METAFONT CSTUG


Jak dostat z METAFONTu to, co chcete

METAFONT vám umožňuje vytvořit si vlastní font, ale většina uživatelů TeXu ho nikdy nepoužívá. METAFONT, na rozdíl od TeXu, vyžaduje nekterá speciální nastavení. Každé výstupní zařízení, pro které se generuje font, potřebuje přidružený mód. Módy se definují použitím konvencí mode_def popsaných na straně 94 v The METAFONTbook (viz Knihy o TeXu a příbuzná literatura). Je potřeba mít soubor zpravidla nazvaný local.mf obsahující mode_defs, které budete používat. Jestliže local.mf ještě neexistuje, dobrým výchozím bodem může být kolekce módů od Karla Berryho, dostupná jako CTANmodes-file. Lze ji použít jako local.mf beze změn pro ,,dostatečně širokou`` implementaci METAFONTu. Výpis nastavení pro nejrůznější výstupní zařízení bývá také pravidelně zveřejňován v TUGboatu (viz Co je to TUG a TUGboat). Nyní vytvořte bázový soubor plain s použitím inimf, plain.mflocal.mf:

   % inimf
   This is METAFONT....
   **plain # napište plain
   (output)
   *input local # zadejte toto
   (output)
   *dump # zadejte toto
   Beginning to dump on file plain....
   (output)
Tím se vytvoří bázový soubor pojmenovaný plain.base (případně něco podobného; například v MSDOSu to bude PLAIN.BAS), který je třeba přemístit do adresáře, jenž ve vašem systému obsahuje bázové soubory. (Některé systémy obsahují i dva nebo více takových adresářů, každý pro jinou ,,velikost`` použitého METAFONTu.)

Nyní se potřebujete ujistit, že METAFONT při spuštění čte tuto novou bázi. Jestliže METAFONT načítá na vašem systému implicitně plain bázi, jste připraveni. Pod Unixem (za použití běžné distribuce web2c) to tak skutečně funguje, ale mohli bychom třeba definovat příkaz mf, který vykonává virmf &plain načtením plain bázového souboru.

Obvyklý způsob, jak vytvořit font s plain METAFONTem, je začít řádkem

\mode=; mag=; input 
jako odpověď na výzvu ,,**`` nebo na příkazové řádce METAFONTu. (Pokud <jméno módu> je neznámé nebo neplatné, bude použit implicitní mód a METAFONT vyrobí výstupní soubor nazvaný .2602gf) <Zvětšení> je číslo v plovoucí řádové čárce nebo `magstep' (magstepy jsou definovány v The METAFONTbook a v The TeXbook). Jestliže mag=<zvětšení> je neplatné, bude implicitně 1 (magstep 0). Například, pro generování cmr10 zvětšeného na 12pt pro tiskárnu epson byste měli napsat
   mf \mode=epson; mag=magstep 1; input cmr10
Poznamenejme, že pod Unixem jsou znaky \; obvykle v uvozovkách nebo se zpětným lomítkem, takže by to zpravidla mělo vypadat takhle:
   mf '\mode=epson; mag=magstep 1; input cmr10'

Pokud nemáte inimf nebo potřebujete speciální mód, který není v bázi, můžete vložit jeho příkazy do souboru (např. ln03.mf) a vyvolat ho za běhu příkazem \smode. Tak například, aby se vytvořil cmr10.300gf pro tiskárnu LN03 za použití souboru

   % This is ln03.mf as of 2/27/90
   % mode_def courtesy of John Sauter
   proofing:=0;
   fontmaking:=1;
   tracingtitles:=0;
   pixels_per_inch:=300;
   blacker:=0.65;
   fillin:=-0.1;
   o_correction:=.5;
(všimněte si nepřítomnosti příkazů mode_defenddef), je třeba napsat
   mf \smode="ln03"; input cmr10
Tato technika není jediná, kterou byste správně měli používat, ale může se ukázat užitečná, jestliže máte novou tiskárnu a chcete experimentovat s parametry, či z nějakých jiných důvodů editujete používané parametry. Jakmile jste si jednou ujasnili přípustnou množinu parametrů, můžete je uplatnit při přebudování bázového souboru, který používáte.

Souhrn výše uvedeného od Geoffrey Tobina a upozornění na nejčastější nástrahy a úskalí při používání METAFONTu lze nalézt v dokumentu CTANmf-beginners


Které fontové soubory je třeba si nechat

METAFONT produkuje při svém běhu tři soubory: metrikové (tfm) soubory, soubory s generickými fonty (gf) a soubory s popisem překladu (log). Všechny tyto soubory mají stejné bázové jméno jako vstup, (např. pokud vstupní soubor byl cmr10.mf, výstupem bude cmr10.tfm, cmr10.nnngf [5] a cmr10.log).

Pro práci TeXu s fontem je zapotřebí tfm soubor, takže si ho musíte nechat. Ale obyčejně chcete generovat tentýž font ve více velikostech a pokaždé se bude (automaticky) generovat další tfm soubor. Tyto soubory jsou stejné, proto stačí nechat si jediný z nich.

K výrobě obrazovkového nebo tiskového výstupu potřebuje dvi procesor rastrový soubor fontu; to je to, co poskytuje gf soubor. Avšak, zatímco dříve používané dvi procesory uměly pracovat s gf soubory, moderní procesory používají komprimované rastrové (pk) soubory. Proto je třeba generovat pk soubor z gf souboru. Tohle za vás udělá program gftopk a jakmile je to jednou hotovo, můžete soubor gf odstranit.

Pokud nenastanou nějaké problémy, neměl by být soubor log nikdy použit. Normálně tedy není třeba nechávat si jej.


Vytažení bitových map z archívu

Většina lidí, kteří začínají používat TeX s laserovou tiskárnou s rozlišením 300 dpi (dots-per-inch) a fonty Computer Modern pro toto rozlišení, je zásobena množstvím TeXovských balíků. Na CTAN jsou také dvě takové sady: CTANpk300 (pro černý tisk) a CTANpk300w (pro bílý tisk). Ale někteří uživatelé chtějí poslat svou práci na vysoce kvalitní sázecí stroje (obyčejně s rozlišením 1270 dpi nebo více). Též se častěji používají 600 dpi laserové tiskárny. Proč archívy a knihovny neposkytují bitové mapy fontů v těchto velikostech? Důvody jsou dva:

  1. Pokud je bitová mapa fontu vytvořena pomocí METAFONTu, je třeba znát charakteristiky zařízení; kdo může vědět, jaký 600 či 1270 dpi přístroj vlastníte? (Tahle námitka se samozřejmě stejně dobře týká 300 dpi tiskáren.)
  2. Při vysokých rozlišeních jsou bitové mapy objemné. Kdo ví, které fonty a s jakou velikostí potřebujete?
Bylo by možné poskytovat v archívech nějakou sadu 1270 dpi bitových map fontů, ale zabralo by to spoustu místa a možná by to pro vás nebylo to pravé.

Tak co s tím? Můžete si sami vytvořit potřebné fonty pomocí METAFONTu; není to tak složité a některé ovladače vám pomohou (dvips a ovladače emTeXu) zkonstruovat příkazy METAFONTu. Můžete se podívat na CTAN do kolekce módů METAFONTu Karla Berryho, do souboru CTANmodes-file. Na druhé straně, pokud vlastníte PostScriptové zařízení, uvažujte o fontech ve formátu Type 1. Je možné koupit všechny fonty Computer Modern v PostScriptovém tvaru od Blue Sky Research nebo od Y&Y (adresa viz Komerční implementace TeXu), či použít veřejně přístupnou verzi Basila Malysheva v CTANps-type1 (kolekce Paradissa je kompletní, ale postupně je nahrazována lepší kolekcí BaKoMa).


[5]
Všimněte si, že jméno souboru může být přetvořeno u~takových operačních systémů jako MSDOS, které nepřipouštějí dlouhé názvy souborů.


CSTUG
(c) 12.05.2000 18:52 Libor Škarvada, Tomáš Hudec, Aleš Vítek
Připomínky, opravy a zejména odpovědi na další časté otázky posílejte na adresu cstug-faq@cstug.cz
Připomínky k HTML verzi posílejte na adresu libor@fi.muni.cz nebo hudec@fi.muni.cz.