Instalowanie fontów Type 1/TrueType w systemie TeX
Keywords: Polish TeX Users Group, Polish TeX, computer fonts, MikTeX, fpTeX, teTeX, font installation

# Instalowanie fontów Type 1/TrueType

### UWAGA: poniższy artykuł jest mocno ''techniczny'', wyjaśniając nieco, co się dzieje za kulisami. Tym samym może okazać się przydatny dla nietypowych sytuacji, gdy instalujemy "ręcznie" własne, lub niedostępne w dystrybucji fonty. Obecnie w dystrybucji TeX Live cały proces instalacji fontów został zautomatyzowany: po instalacji pakietu fontów za pomocą programu TeX Live Manager aktualizowane są odpowiednie pliki konfiguracyjne i fonty są dostępne dla różnych wersji-silników TeX-a.

- Instalowanie fontów Type 1

- Omówienie
- TeX
- Dvips
- LaTeX
- pdfTeX/pdfLaTeX

- Instalowanie fontów True Type

- TeX/LaTeX/Dvips
- pdfTeX/pdfLaTeX

## Instalowanie fontów Type 1

Podczas składania tekstu TeX korzysta wyłącznie z plików metrycznych. Pliki takie mają rozszerzenie `.tfm`. Pliki metryczne nie zawierają informacji o kształtach znaków, te są zdefiniowane w innych plikach. Aby mieć możliwość wydrukowania złożonego dokumentu, korzystującego z fontów wektorowych (skalowalnych, np. Type 1) należy plik `dvi` zamienić na plik w formacie PostScript. W każdej dystrybucji TeX-a znajduje się program `dvips` wykonujący taką zamianę. Program ten korzysta z plików z rozszerzeniem `.pfb`, zawierających definicje kształtu znaków; może także korzystać z innych, pomocniczych plików.

Zainstalowanie fontów Type 1 w systemie TeX polega na umieszczeniu kilku plików w odpowiednich miejscach. Poniżej opisano cały proces, biorąc za przykład instalację pakietu fontów Antykwa Toruńska.

### Omówienie

Ponieważ cały proces instalacji fontów Type1 może się wydać nieco skomplikowany (szczególnie dla początkujących), wymienimy tu pokrótce poszczególne kroki. Dalsza część zawiera informacje techniczne, które mogą zainteresować bardziej zaawansowanych użytkowników.

Pakiet fontowy zawiera zwykle kilka rodzajów plików:

- pliki metryczne `.tfm`, z których korzysta TeX. W strukturze katalogów zgodnej z TDS (TeX Directory Structure) instalujemy je w ramach katalogu `~/texmf/fonts/tfm/`. Szczegóły (np. użytą tu interpretację znaku `~`) patrz część dot. samego TeX-a.
- pliki fontowe `.pfb`, z których korzysta `dvips`, instalujemy w ramach katalogu `~/texmf/fonts/type1/`.
- pliki przekodowania `.enc`, oraz
- pliki map fontowych `.map`, z których także korzysta sterownik `dvips`, instalujemy w ramach katalogu `~/texmf/dvips/`. Dla Antykwy Toruńskiej odpowiedni podkatalog może mieć nazwę `antt/`.
  UWAGA: W 2004 postanowiono zmienić wytyczne TDS i wszystkie pliki fontowe gromadzić w katalogu `~/texmf/fonts/`. Tym samym pliki `.enc` znajdują się obecnie w katalogu `~/texmf/fonts/enc/dvips/` zaś pliki `.map` w katalogu `~/texmf/fonts/map/dvips/`. Szczegóły, patrz część dot. Dvips.
- pliki `.sty` oraz `.fd` zawierają makra włączania fontu do składu i definicje fontów, przydatne dla użytkowników LaTeX-a. Instalujemy je w ramach katalogu przeznaczonego na makra i style: `~/texmf/tex/latex/`. Jeśli pakiet dystrybucyjny z fontami nie zawiera takich plików, należy je odszukać w innym, towarzyszącym pakiecie. Szczegóły, patrz część dot. LaTeX.

Po skopiowaniu plików do odpowiednich katalogów i odświeżeniu bazy danych instalacji, mapy fontowe powinny być następnie zarejestrowane w głównym pliku mapowań `psfonts.map`. Proces ten jest obecnie znacznie ułatwiony: w katalogu `~/texmf/web2c/` znajduje się plik `updmap.cfg`; należy do niego dopisać deklaracje dodawanych do instalacji map fontowych, np:

`Map antt-qx.map`
`Map antt-ec.map`

itd. Następnie należy uruchomić program `updmap`, który zaktualizuje nie tylko wspomniany `psfonts.map`, ale także pliki mapowań dla programów `pdftex` oraz `dvipdfm`.

### TeX

Pliki `.tfm` powinny być umieszczone w katalogu, w którym TeX szuka tego typu plików. W instalacji TeX-a o strukturze katalogów zgodnej z TDS będzie to `~/texmf/fonts/tfm/`. Znak `~` oznacza tu korzeń drzewa TeX-owego, np. `/usr/TeX` lub `C:\tex`. Dla wprowadzenia porządku dobrze jest utworzyć podkatalog, który będzie przechowywał nowo instalowane pliki. Pliki metryczne Antykwy Toruńskiej można np. umieścić w katalogu `~/texmf/fonts/tfm/public/antt/`

W systemach TeX-a opartych na bibliotece Web2c (np. TeX Live) istnieje główny plik konfiguracyjny systemu, którym jest plik `texmf.cnf`, znajdujący się zwykle w katalogu `~/texmf/web2c/`. `texmf.cnf` zawiera deklaracje określające katalogi, w których znajdują się poszczególne części składowe systemu. I tak zmienna `TFMFONTS` określa listę katalogów, w których TeX ma szukać plików TFM. W naszej instalacji zmienna `TFMFONTS` ma wartość:

     TFMFONTS = .;{$TEXMF/fonts,$VARTEXFONTS}/tfm//

Użyta tu notacja jest opisana w pliku konfiguracyjnym `texmf.cnf`. Jej interpretacja dla powyższego przykładu brzmi: znajdź pliki `.tfm` w katalogu bieżącym (kropka) a następnie w podkatalogach, kolejno, `fonts/tfm/` katalogów z instalacją TeX-ową (zmienna `$TEXMF`) lub/ewentualnie w `$VARTEXFONTS/tfm/` i wszystkich ich podkatalogach (znaki `//`).

W przypadku popularnej w środowisku MS Windows dystrybucji MikTeX idea jest podobna ale nieco inne są szczegóły (dystrybucja ta nie jest oparta na Web2c, ale w pełni zgodna z TDS). Główny plik konfiguracyjny `miktex.ini` znajduje się w katalogu `~\miktex\config\`. Zapis zmiennych i ich nazwy różnią się od ich odpowiedników w dystrybucjach fpTeX i teTeX. I tak do określenia katalogów zawierających pliki `TFM` MikTeX używa zmiennej `TFMPath`, zaś zapis może wyglądać następująco:

    TFMPath=.;%R\fonts\tfm//

Notacja użyta w przykładzie i jej interpretacja jest opisana w pliku konfiguracyjnym `miktex.ini` oraz w dokumentacji dystrybucji.

Pliki `.afm` (Adobe Font Metric) nie są wprawdzie wykorzystywane przez TeX-a, ale mogą być potrzebne dla innych programów wspomagających. Umieścić je należy w katalogu `~/texmf/fonts/afm/public/antt`.

Definiowana w pliku `texmf.cnf` zmienna `AFMFONTS` (lub zmienna `AFMPath` z pliku `miktex.ini` w przypadku dystrybucji MikTeX) określa listę katalogów, w których programy mają szukać plików AFM. W naszej instalacji zmienna `AFMFONTS` ma wartość:

     AFMFONTS = .;$TEXMF/fonts/afm//

Pliki `.pfm` -- jeżeli takowe są dołączone do pakietu z fontami -- nie są wykorzystywane przez żaden program systemu TeX; można je umieścić, dla porządku, w katalogu `~/texmf/fonts/type1/public/antt`. Pliki te mogą być przydatne w systemach Windows i OS/2 jeśli chcemy korzystać z fontów w innych aplikacjach i jeśli posiadamy program ATM (Adobe Type Manager).

### dvips

Podstawowymi i najważniejszymi plikami konfiguracyjnymi programu `dvips` są: `config.ps` oraz `psfonts.map`. Pierwszy z nich znajdziemy się w katalogu `~/texmf/dvips/config/`. Plik `config.ps` może zawierać deklaracje m.in. używanych przez program map fontowych (standardowo jest to `psfonts.map`), zaś plik `psfonts.map` zawiera informacje niezbędne do prawidłowego wykorzystania fontu Type 1 przez sterownik; jest to tzw. mapa fontów używanych przez program. Właściwe pliki fontowe (`.pfb`) powinny być umieszczone w katalogu przeszukiwanym przez sterownik `dvips`. W systemie TeX o strukturze katalogów zgodnej z TDS będzie to `~/texmf/fonts/type1/`. Także w tym przypadku dobrze jest utworzyć podkatalog, np. pliki `.pfb` Antykwy Toruńskiej można umieścić w katalogu `~/texmf/fonts/type1/public/antt/`.

Definiowana w pliku `texmf.cnf` zmienna `T1FONTS` (lub zmienna `Type1Path` z pliku `miktex.ini` w przypadku instalacji MikTeX) określa listę katalogów, w których dvips ma szukać fontów Type 1. W naszej instalacji (Web2c) zmienna `T1FONTS` ma wartość:

     T1FONTS = .;$TEXMF/fonts/type1//

Zawartość plików `.map`, dostarczonych zwykle w pakiecie z fontami (dla Antykwy Toruńskiej jest to kilka plików), należy dołączyć do głównego pliku map fontowych `psfonts.map` (w strukturze katalogów zgodnej z TDS plik ten znajduje się w katalogu `~/texmf/fonts/dvips/map/updmap/`). Wykonuje to wspomniany powyżej program `updmap`. W starszych instalacjach zawartość plików `.map` należało ręcznie dopisać do pliku `psfonts.map`, albo po prostu zadeklarować je w pliku konfiguracyjnym `~/texmf/dvips/config/config.ps` -- po deklaracji:

    p psfonts.map

dopisać wiersz, np.:

    p +antt-qx.map

itd. (uwaga: znak `+` jest istotny). Pliki `.map` należy umieścić w katalogu `~/texmf/fonts/map/dvips/antt/`. Fonty Antykwa Toruńska, Antykwa Półtawskiego, czy TeX Gyre Termes oraz wiele innych posiadają ponadto pliki `.enc` potrzebne do zmiany wewnętrznego kodowania fontu na kodowanie wymagane przez TeX-a. Pliki takie należy umieścić w ramach katalogu `~/texmf/fonts/enc/dvips/`. Dla Antykwy Toruńskiej podkatalog będzie miał nazwę `antt/`.

Jeżeli instalujemy font samodzielnie i nie posiadamy gotowego pliku `.map` to powinniśmy dokonać odpowiedniego wpisu do głównego pliku mapowego `psfonts.map`. Więcej informacji na ten temat można znaleźć w punkcie Pliki konfiguracyjne sterownika DVIPS z artykułu Fontowe ABC, B. Jackowskiego i S. Wawrykiewicza.

Często zadawanym przez użytkowników pytaniem jest: dlaczego dvips nie ,,widzi'' standardowych fontów CM w formacie Type 1 i ładuje zamiast nich fonty bitmapowe (.pk), które źle się prezentują na ekranie, szczególnie w powiększeniach?
Odpowiedź jest prosta: do niedawna fonty CM Type 1 (choć często obecne w instalacji) nie były wyszczególnione w pliku `psfonts.map`. Wynikało to głównie z istnienia dwóch dystrybucji BaKoMa i BlueSky Research. Włączenie ładowania fontów CM Type 1 przez program `dvips` wymaga odblokowania wiersza (usunięcia znaku %):

    p +bsr.map

co dołączy mapowania fontów BlueSky Research do standardowych mapowań deklarowanych w pliku `psfonts.map`.

### LaTeX

Aby móc wykorzystać zainstalowane fonty użytkownicy LaTeX-a muszą jeszcze zainstalować odpowiedni pakiet. Niekiedy może się zdarzyć, że pakiet z fontami nie zawiera odpowiedniego pakietu LaTeX-owego, który -- jeżeli nie ma go w standardowej dystrybucji LaTeX-a -- trzeba odnaleźć i zainstalować samodzielnie. Pakiet taki zawiera styl włączający dany krój do składu (z reguły jest to plik z rozszerzeniem `.sty`) oraz plik (lub pliki) z definicją fontu (z reguły z rozszerzeniem `.fd`). Instalacja polega na skopiowaniu plików `.sty` i `.fd` do katalogu, w którym znajdują się inne pakiety LaTeX-owe, np. do `~/texmf/tex/latex/`.
Pliki `.sty` i `.fd` fontów PL oraz `cc-pl` (spolonizowane fonty Computer Concrete) dla LaTeXa są standardowo zawarte w pakiecie Platex. Pozostałe dostępne polskie fonty (a więc te, które udostępniono jedynie w formatach obwiedniowych Type 1 i/lub TrueType) zawierają pliki dla LaTeXa w pakietach dystrybucyjnych.

### pdfTeX/pdfLaTeX

Program pdfTeX jest rozszerzeniem TeX-a, który tworzy (właśnie w trybie rozszerzonym) plik wynikowy w formacie PDF (Portable Document Format), zamiast typowego DVI. Hipertekstowe pliki PDF mogą być przeglądane na wielu platformach systemowych dzięki udostępnionemu bezpłatnie programowi Adobe Acrobat Reader, zachowując przy tym wszystkie szczegóły układu strony. Opisana powyżej instalacja fontów Type1 różni się dla pdfTeX jednym szczegółem: należy zadbać aby zawartość pliku mapy fontowej została dołączona (najlepiej przez program `updmap`) do pliku `pdftex.map` czytanego przez program pdfTeX; znajduje się on obecnie w katalogu `~/texmf/fonts/map/pdftex/updmap/`. W aktualnych wersjach pdfTeX użycie danej mapy fontowej może być także wprost zadeklarowane w pliku dokumentu.
Tworząc pliki PDF musimy pamiętać aby stosować wyłącznie fonty obwiedniowe (Type1 lub True Type -- patrz niżej), ponieważ fonty bitmapowe są zwykle fatalnie wyświetlane w przeglądarce. Dotyczy to szczególnie użytkowników LaTeXa, którzy przyzwyczaili się do stosowania fontów EC, które są domyślnie włączane po deklaracji w preambule pliku:
`\usepackage[T1]{fontenc}`.
Otóż nie ma fontów EC w formacie Type 1, choć są różne zastępniki (ładowanie dodatkowych pakietów np. `ae`, użycie fontów `cmsuper` itp.). Obecnie zalecane jest użycie fontów Latin Modern, czyli dopisanie (prócz powyższej deklaracji) w preambule:
`\usepackage{lmodern}`.

Wiele szczegółów na temat instalowania fontów Type 1 zawiera artykuł The Font Installation Guide Phillipa Lehmana.

## Instalowanie fontów TrueType

W powszechnie używanych w chwili obecnej dystrybucjach TeX-a (fpTeX, teTeX, MikTeX) nie ma sterowników potrafiących bezpośrednio wykorzystać fonty w formacie TrueType. Chcąc skorzystać z takich fontów należy dokonać odpowiedniej konwersji, która może polegać na ich zamianie albo na fonty bitmapowe w formacie `.pk`, albo na zamianie na fonty w formacie Type 42, a ostatnio także do formatu Type 1.

Pierwszy sposób można określić mianem standardowego -- jeżeli umieścimy pliki `.ttf` i `.tfm` w odpowiednich katalogach, to w dystrybucjach, które omawiamy, przy uruchomieniu program `dvips` lub sterownika ekranowego (`yap`, `xdvi`), zostaną automatyczne uruchomione programy generujące fonty `.pk` o odpowiedniej rozdzielczości, podobnie jak sprawa ma miejsce przy generowaniu fontów `.pk` na podstawie plików źródłowych `.mf`. Sposób ten ma jedną zasadniczą wadę: fonty `.pk` -- jak każde fonty bitmapowe -- nie nadają się do wykorzystania przy tworzeniu dokumentów w formacie PDF.

Uwaga 1: Ponieważ współczesne systemy TeX-owe potrafią skorzystać z fontów `.ttf` ,,z definicji'', ale jednocześnie sposób ten nie bardzo się nadaje, np. do tworzenia wysokiej jakości plików PDF, poniżej omawiamy bardziej szczegółowo jedynie wykorzystanie fontów `.ttf` po ich konwersji do formatu Type 42.

Uwaga 2: Zakładając, że pakiet, który instalujemy zawiera metryki fontów `.tfm`, instalacja fontów TrueType nie różni się zbytnio od instalowania fontów Type 1. Jeżeli nie dysponujemy plikami `.tfm`, to sprawa się komplikuje, bo utworzenie takich plików nie jest sprawą trywialną. W grę wchodzą sprawy różnego kodowania znaków, tzw. fonty wirtualnych itp. Ponieważ niniejszy tekst ma charakter wprowadzenia dla początkujących nie będziemy omawiać tego zagadnienia. Niemniej jednak w aktualnych dystrybucjach znajdziemy program `ttf2tfm` tworzący pliki `.tfm`.

Informacje na temat narzędzi i problemów zamiany plików `ttf` na pliki `tfm` można znaleźć w artykule T. Przechlewskiego Uwagi nt. wykorzystania fontów True Type (Biuletyn GUST, 11/1998). Najbardziej aktualne informacje na ten temat zawiera katalog `info/TrueType/` na serwerach CTAN.

### TeX/LaTeX, dvips

Pliki `.tfm`, `.enc` oraz `.map` kopiujemy w sposób analogiczny do opisanego wyżej. Fonty Type 42 mogą być wykorzystane przez program `dvips` a powstały plik PostScriptowy może być wydrukowany za pomocą programu ghostscript i innych interpretatorów PostScripta (byle nie bardzo starych). Do zamiany pliku `.ttf` na font Type 42 (załóżmy, że taki font ma rozszerzenie `.t42`) można wykorzystać program `ttftot42`:

     ttftot42 anttr

Powstały w wyniku plik `.t42` kopiujemy do odpowiedniego katalogu. W systemie TeX o strukturze katalogów zgodnej z TDS będzie to `~/texmf/fonts/type42/`. Należy się upewnić gdzie dvips szuka fontów Type 42. Zaglądamy w tym celu do głównego pliku konfiguracyjnego systemu TeX, którym jest plik `texmf.cnf` (zwykle katalog `~/texmf/web2c/`). Powinien on zawierać wpis podobny do poniższego:

     % Type 42 outline fonts.
     T42FONTS = .;$TEXMF/fonts/type42//

Jeżeli takowego wpisu nie ma, to trzeba go dodać. Powyższy zapis oznacza, że fonty są szukane albo w katalogu bieżącym (kropka) albo w katalogu (i wszystkich jego podkatalogach) `$TEXMF/fonts/type42//`, gdzie `$TEXMF` oznacza korzeń drzewa TeX-owego.

Wydaje się, że aktualnie lepszym rozwiązaniem niż konwersja do formatu Type 42 jest skorzystanie z programu do konwersji fontów TrueType do formatu Type 1. Patrz: CTAN/info/TrueType.

### pdfTeX/pdfLaTeX

W trybie rozszerzonym pdfTeX potrafi korzystać bezpośrednio z fontów `.ttf` -- nie musimy zatem ich konwertować do formatu Type 42 bądź Type 1. Więcej szczegółów można znaleźć w opisie programu pdfTeX.

T. Przechlewski i S. Wawrykiewicz
Ostatnia modyfikacja 05.05.2014

Powrót