summaryrefslogtreecommitdiff
path: root/info/tex-virtual-academy-pl/fonty/font-abc.html
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /info/tex-virtual-academy-pl/fonty/font-abc.html
Initial commit
Diffstat (limited to 'info/tex-virtual-academy-pl/fonty/font-abc.html')
-rw-r--r--info/tex-virtual-academy-pl/fonty/font-abc.html579
1 files changed, 579 insertions, 0 deletions
diff --git a/info/tex-virtual-academy-pl/fonty/font-abc.html b/info/tex-virtual-academy-pl/fonty/font-abc.html
new file mode 100644
index 0000000000..38f58b3a4d
--- /dev/null
+++ b/info/tex-virtual-academy-pl/fonty/font-abc.html
@@ -0,0 +1,579 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
+<meta name="keywords" lang="en" content="Polish TeX Users Group, Polish TeX, computer fonts" >
+<LINK REL=STYLESHEET TYPE="text/css" HREF="./tpstyle.css">
+<title> Fontowe ABC </title>
+</head>
+<body>
+
+<h1> Fontowe ABC </h1>
+<P>
+Co jakiś czas na liście dyskusyjnej GUST-u padają głosy świadczące
+z&nbsp;jednej strony o&nbsp;dużym zainteresowaniu sprawami fontowymi,
+a&nbsp;z&nbsp;drugiej strony -- o&nbsp;częstym niezrozumieniu podstawowych
+spraw związanych z&nbsp;fontami.
+</P>
+
+<!-- <p>Zainteresowanie fontami jest o tyle uzasadnione, że ostatnimi czasy
+pojawia się na rynku coraz więcej fontów PostScript-owych, dajšcych się
+wykorzystać do składania polskich tekstów &#8211; ot, choćby fonty
+dystrybuowane przez firmę ThETA.</p> -->
+
+<p>Te aspekty skłoniły nas do podjęcia próby spisania fontowego
+elementarza dla tych dzielnych adeptów fontologii, którzy nie boją się
+pułapek, od których niestety aż się roi w&nbsp;świecie fontów.
+(Dodatkowe informacje na temat wykorzystania fontów w LaTeX2e można
+znaleźć w&nbsp;dokumentacji <a href="nfss.html">Fonty
+w&nbsp;LaTex2e</a>).</p>
+
+<!-- Spis treści ....................................................... -->
+<hr /> <a id="P0" name="P0"></a>
+<ul>
+<li><a href="#Fonty-TFM">Fonty &#8222;TeX-owe&#8221; czyli pliki TFM</a></li>
+<li><a href="#Fonty-wlasciwe">Fonty &#8222;właściwe&#8221;</a></li>
+<li><a href="#Fonty-CM">Fonty rodziny Computer Modern</a></li>
+<li><a href="#Fonty-bitmapowe">Fonty bitmapowe</a></li>
+<li><a href="#Fonty-PS">Fonty PostScript-owe czyli pliki AFM oraz PFB
+ (lub PFA)</a></li>
+<li><a href="#Znaki">Reprezentacja znaków</a></li>
+<li><a href="#Nazwy-kody">Nazwy i kody znaków</a></li>
+<li><a href="#AFMTFM">Konwersja AFM -&gt; TFM</a></li>
+<li><a href="#AFMTFMp">Konwersja AFM -&gt; TFM &#8211; poprawność nazw
+ znaków</a></li>
+<li><a href="#AFMTFMk">Konwersja AFM -&gt; TFM &#8211; kerny
+ i&nbsp;ligatury</a></li>
+<li><a href="#Pliki-cnf">Pliki konfiguracyjne sterownika
+ <code>DVIPS</code></a></li>
+<li><a href="#Latanie">Łatanie fontów &#8211; niepoprawny font</a></li>
+<li><a href="#BrakAFM">Łatanie fontów &#8211; brak plików AFM</a></li>
+<li><a href="#Podsumowanie">Podsumowanie</a></li>
+</ul>
+
+<hr />
+<!-- ................................................................. -->
+<a id="Fonty-TFM" name="Fonty-TFM"></a>
+
+<h2><a id="Fonty-TFM" name="Fonty-TFM">Fonty &#8222;TeX-owe&#8221; czyli pliki
+TFM</a></h2>
+
+<p>TeX-owi jest absolutnie obojętne, jakich fontów używamy: czy to są
+mapy bitowe, fonty PostScript-owe w&nbsp;formacie Type&nbsp;1, czy też
+może egzotyczne fonty &#8222;własnego chowu&#8221; &#8211; nie ma to znaczenia.
+Jedyne, czego potrzebuje TeX, to informacja metryczna, czyli pliki
+<code>TFM</code> (TeX Font Metric). Pliki metryczne, jak sama nazwa
+wskazuje, zawierają w&nbsp;pierwszym rzędzie informację
+o&nbsp;rozmiarach znaków, ale także informację o&nbsp;wielkości kernów
+(podcięć) dla par znaków, informację o&nbsp;wielkości korekty kursywy
+(<em>italic correction</em> dla poszczególnych znaków oraz &#8211; choć
+trudno to zakwalifikować jako informację metryczną &#8211; informację
+o&nbsp;ligaturach, tzn.&nbsp;informację, które pary znaków mają być
+zastępowane automatycznie innym znakiem, np.&nbsp;dwa umieszczone obok
+siebie znaki <code>--</code> zamienione zostaną przez TeX-a przez
+pojedynczy znak &#8222;&#8211;&#8221; zwany pauzą półfiretową (<em>endash</em>).</p>
+
+<p>Krótko mówiąc żeby w&nbsp;ogóle &#8222;prze-TeX-ować&#8221; dokument potrzebne
+są pliki&nbsp;<code>TFM</code>.</p>
+
+<P><A HREF=#P0><IMG ALIGN="BOTTOM" SRC="back.gif"> Spis treści</A></P>
+
+<!-- ................................................................. -->
+<a id="Fonty-wlasciwe" name="Fonty-wlasciwe"></a>
+<h2><a id="Fonty-wlasciwe" name="Fonty-wlasciwe">Fonty
+&#8222;właściwe&#8221;</a></h2>
+
+<p>Dopiero sterowniki zamieniając złożone dokumenty, czyli pliki
+<code>DVI</code>, na postać widoczną już to na papierze, już to na
+ekranie, już to na jakimś innym nośniku potrzebują tych &#8222;właściwych
+fontów&#8221;.</p>
+
+<P><A HREF=#P0><IMG ALIGN="BOTTOM" SRC="back.gif"> Spis treści</A></P>
+
+<!-- ................................................................. -->
+<a id="Fonty-CM" name="Fonty-CM"></a>
+<h2><a id="Fonty-CM" name="Fonty-CM">Fonty rodziny Computer
+Modern</a></h2>
+
+<p>Zgodnie z&nbsp;konwencją przyjętą przez Donalda E.&nbsp;Knutha nazwy
+fontów rodziny Computer Modern zawierają formalny rozmiar fontu
+w&nbsp;punktach, np.&nbsp;<code>cmr10</code> (font 10-punktowy),
+<code>cmbx7</code> (font 7-punktowy), itp. Należy tu podkreślić, że
+font <code>cmr12</code> nie jest równoważny fontowi zdefiniowanemu jako
+<code>cmr10</code>&nbsp;<code>at</code>&nbsp;<code>12pt</code> &#8211;
+chociaż oba fonty mają wielkość 12&nbsp;punktów, to jednak proporcje
+znaków w&nbsp;obu fontach są inne. Tę samą cechę dziedziczą oczywiście
+fonty wywodzące się z&nbsp;rodziny Computer Modern (Computer Concrete,
+<code>EC</code>, <code>PL</code>), a&nbsp;także fonty rodziny
+<code>Euler</code>, fonty cyryliczne, i&nbsp;inne fonty tworzone
+w&nbsp;duchu konwencji rodziny Computer Modern.</p>
+
+<p>Zmiany proporcji wraz ze zmianą stopnia pisma są jak najbardziej
+uzasadnione, małe fonty powinny dla lepszej czytelności mieć nieco
+większe i&nbsp;szersze oczka minuskuł w&nbsp;stosunku do majuskuł.
+Niemniej jednak wydaje się, że Donald&nbsp;E.&nbsp;Knuth nieco
+przesadził z&nbsp;liczbą odmian fontów zmieniając co jeden punkt
+proporcje znaków.</p>
+
+<p>W&nbsp;praktyce wystarczyłyby nie więcej niż cztery zakresy:
+pierwszy dla fontów mniejszych niż 8-punktowe, drugi dla fontów od
+8&nbsp;do&nbsp;12&nbsp;punktów, trzeci dla fontów od 12&nbsp;do &#8211;
+powiedzmy &#8211; 24&nbsp;punktów i&nbsp;wreszcie czwarty dla fontów
+tzw.&nbsp;nagłówkowych. Ostatni z&nbsp;wymienionych zakresów nie
+pojawia się w&nbsp;fontach
+<code>Computer</code>&nbsp;<code>Modern</code>. Font calowy
+<code>cminch</code>, przeznaczony do nagłówków, jest w&nbsp;istocie
+przeskalowanym proporcjonalnie fontem <code>cmssbx10</code>. Innymi
+słowy dokładnie ten sam efekt uzyskałoby się za pomocą instrukcji
+<code>\font</code>&nbsp;<code>\f</code>
+<code>cminch</code>&nbsp;<code>\f</code> i&nbsp;za pomocą instrukcji
+<code>\font</code>&nbsp;<code>\f</code>
+<code>cmssbx10</code>&nbsp;<code>at</code>&nbsp;<code>1.44in</code>&nbsp;<code>
+\f</code>. Jedyna różnica polega na tym, że font <code>cminch</code>
+jest nieco &#8222;oszczędniejszy&#8221;&nbsp;&#8211; zawiera tylko duże litery
+i&nbsp;cyfry.</p>
+
+<p>Sporo zamieszania wywołały także <code>plain</code>-owe instrukcje
+<code>\magstephalf</code> i&nbsp;<code>\magstep</code> sugerujące, że
+jedyne &#8222;legalne&#8221; powiększenia fontów to 109,5%, 120%, 144%, 172,8%,
+207,4% lub co najwyżej 248,8% (p.&nbsp; <em>The TeX book</em>,
+str.&nbsp;17). Mimo iż nie jest to nigdzie <em>expressis verbis</em>
+powiedziane, to jednak sporo nieporozumień narosło na tym tle. Trudno
+się temu dziwić, skoro prawie wszystkie pakiety zawierające fonty
+TeX-owe w&nbsp;postaci map bitowych (p.&nbsp;niżej) stosowały się do
+tej reguły, tzn.&nbsp;mapy bitowe generowane były tylko dla
+wymienionych wyżej powiększeń. Chcąc w&nbsp;dokumentach TeX-owych
+w&nbsp;sposób jednolity korzystać z&nbsp;fontów tradycyjnych, czyli
+bitmapowych, i&nbsp;z&nbsp;fontów PostScript-owych, nie należy
+przejmować się zanadto rozpowszechnionym obyczajem mającym swe korzenie
+w&nbsp;czasach, gdy komputery były wolniejsze i&nbsp;wygenerowanie
+fontu &#8222;od ręki&#8221; było zbyt kosztowne. Rzadko używana instrukcja
+postaci</p>
+
+<pre>
+ \font... at ...
+</pre>
+
+<p>jest w&nbsp;tym kontekście godna polecenia.</p>
+
+<P><A HREF=#P0><IMG ALIGN="BOTTOM" SRC="back.gif"> Spis treści</A></P>
+
+<!-- ................................................................. -->
+<a id="Fonty-bitmapowe" name="Fonty-bitmapowe"></a>
+<h2><a id="Fonty-bitmapowe" name="Fonty-bitmapowe">Fonty
+bitmapowe</a></h2>
+
+<p>W&nbsp;tradycyjnej konfiguracji systemu TeX podstawowymi fontami są
+mapy bitowe (pliki <code>GF</code> &#8211; <em>generic font</em>) generowane
+przez program METAFONT. Najczęściej używanym formatem jest jednak nie
+format <code>GF</code>, a&nbsp;nieco oszczędniejszy
+format&nbsp;<code>PK</code> (<em>packed</em>). Do zamiany służy program
+<code>GFTOPK</code>, z&nbsp;reguły wywoływany automatycznie
+w&nbsp;procesie generowania fontów.</p>
+
+<p>Fonty bitmapowe generowane są dla <em>konkretnej wielkości pisma
+i&nbsp;konkretnego urządzenia</em>, tzn.&nbsp;zawierają pewne
+informacje pozwalające na danym urządzeniu &#8211; ekranie czy drukarce &#8211;
+uzyskać optymalny wygląd znaków. Stąd np.&nbsp;odrębne fonty dla
+drukarek laserowych i&nbsp;drukarek atramentowych o&nbsp;tej samej
+rozdzielczości&nbsp;300dpi.</p>
+
+<p>TeX &#8211; jak już wspomnieliśmy &#8211; pozwala skalować całość dokumentu
+lub poszczególne fonty:</p>
+
+<pre>
+\magnification2000
+\font\A plr10 scaled \magstep3
+\font\B plr10 at 28.5pt
+</pre>
+
+<p>gdzie <code>plr10</code> oznacza nazwę fizycznie posiadanego na
+dysku pliku <code>plr10.tfm</code>. TeX przeskaluje font
+<code>plr10</code> tak, jak sobie tego życzymy, a&nbsp;ściślej &#8211;
+przeskaluje informację metryczną związaną z&nbsp;fontem. Żeby móc
+zobaczyć, jak wyglądają znaki przeskalowanego fontu, należy skorzystać
+z&nbsp;METAFONT-a, który oczywiście potrafi generować fonty dowolnie
+przeskalowane.</p>
+
+<p>Fonty <code>PK</code> zwykle przechowywane są w&nbsp;katalogach
+o&nbsp;nazwach zawierających liczbę wynikającą z&nbsp;przemnożonenia
+rozdzielczości przez przeskalowanie, np.&nbsp;fonty
+o&nbsp;rozdzielczości 300dpi ( <em>dots per inch</em>) powiększone
+o&nbsp;20% (<code>\magstep1</code>) znajdą się w&nbsp;katalogu
+o&nbsp;nazwie <code>360dpi</code>, <code>dpi360</code> lub jakimś
+innym, podobnie nazwanym. Jeśli system operacyjny zezwala na nadawanie
+plikom długich nazw, to przeskalowanie może być wpisane w&nbsp;nazwę
+pliku, np.&nbsp;<code>.../fonts/pk/laserjet/pl/plr10.360pk</code>.</p>
+
+<p>Standardowe sterowniki przetwarzające pliki <code>DVI</code> czy to
+na postać wyświetlaną na ekranie, czy też drukowaną, używają fontów
+<code>PK</code> i&nbsp;posiadają mechanizm przeszukiwania odpowiedniej
+struktury katalogów lub interpretacji nazw fontów przeskalowanych.
+Sterowniki te pozwalają zwykle na bardzo szybkie wyświetlenie
+składanego tekstu. Współczesne sterowniki posiadają także możliwość
+współpracy z&nbsp;METAFONT-em &#8211; potrafią przekazać informację
+o&nbsp;brakujących fontach i&nbsp;uruchomić METAFONT-a, wstrzymując
+pracę do czasu zakończenia procesu generowania brakujących fontów.
+Dzięki temu nie ma obecnie potrzeby trzymania na dysku olbrzymich
+bibliotek fontów w&nbsp;formacie <code>PK</code>, wystarczą pliki
+źródłowe fontów i&nbsp;odpowiednio skonfigurowane łącze
+sterownik-METAFONT (program lub skrypt) by zautomatyzować proces
+generowania fontów. Dla bardzo rozpowszechnionych sterowników
+z&nbsp;pakietu <code>emTeX</code> będzie to program <code>MFjob</code>
+(<code>MS-DOS</code>, <code>OS/2</code>), zaś dla systemów opartych na
+<code>web2c</code> &#8211; skrypt <code>mktexpk</code> (różne wersje
+<code>Unix</code>, <code>Windows</code> i&nbsp;<code>Amiga</code>).</p>
+
+<P><A HREF=#P0><IMG ALIGN="BOTTOM" SRC="back.gif"> Spis treści</A></P>
+
+<!-- ................................................................. -->
+ <a id="Fonty-PS" name="Fonty-PS"></a>
+
+<h2>Fonty PostScript-owe czyli pliki AFM oraz PFB (lub PFA)</h2>
+
+<p>Jeżeli chodzi o&nbsp;PostScript, to ten &#8222;właściwy font&#8221; &#8211; mowa tu
+o&nbsp;fontach zapisanych w&nbsp;formacie Adobe Type&nbsp;1 &#8211; zawarty
+jest w&nbsp;pliku z&nbsp;rozszerzeniem <code>.pfb</code>
+(<em>PostScript Font Binary</em>) lub <code>.pfa</code> (
+<em>PostScript Font ASCII</em>). Natomiast o&nbsp;plikach
+<code>TFM</code> w&nbsp;świecie PostScript-owym mało kto słyszał. Na
+szczęście dobrzy ludzie z&nbsp;firmy Adobe wymyślili coś podobnego do
+tego, co wymyślił Donald E.&nbsp;Knuth, mianowicie pliki metryczne AFM
+(<em>Adobe Font Metric</em>). Różnią się one trochę od plików
+<code>TFM</code> (np.&nbsp;pliki <code>AFM</code> są plikami
+tekstowymi), ale mimo różnic jest możliwe by na podstawie pliku
+<code>AFM</code> utworzyć plik <code>TFM</code>.</p>
+
+<P><A HREF=#P0><IMG ALIGN="BOTTOM" SRC="back.gif"> Spis treści</A></P>
+
+<!-- ................................................................. -->
+<a id="Znaki" name="Znaki"></a>
+
+<h2>Reprezentacja znaków</h2>
+
+<p>Zanim pójdziemy dalej trzeba wyjaśnić jedną rzecz, mianowicie
+w&nbsp;jaki sposób są reprezentowane znaki. Jeżeli chodzi o&nbsp;plik
+<code>DVI</code> to odpowiedź jest trywialna: jako liczby
+z&nbsp;zakresu <code>0</code>--<code>255</code>. Przy tworzeniu pliku
+PostScript-owego za pomocą sterownika sytuacja <em>nie ulega</em>
+zmianie, to znaczy w&nbsp;pliku PostScript-owym znaki też są
+reprezentowane w&nbsp;zasadzie jako liczby z&nbsp;zakresu
+<code>0</code>--<code>255</code>, czasem w&nbsp;reprezentacji ASCII,
+a&nbsp;czasem w&nbsp;reprezentacji ósemkowej. Natomiast we &#8222;właściwym
+foncie&#8221; PostScript-owym, podobnie zresztą jak w&nbsp;foncie
+METAFONT-owym, jest inaczej: znaki są zasadniczo reprezentowane za
+pomocą nazw w&nbsp;rodzaju &#8222;period&#8221;, &#8222;periodcentered&#8221;, &#8222;lslash&#8221;,
+&#8222;aogonek&#8221;,&nbsp;itp.</p>
+
+<p>Formalnie rzecz biorąc font PostScript-owy jest programem,
+a&nbsp;nazwy znaków są nazwami podprogramów opisujących kształt znaków
+za pomocą &#8211; znów podobnie jak w&nbsp;programach METAFONT-owych &#8211;
+krzywych trzeciego stopnia, zwanych krzywymi Béziera. Dodatkowo
+podprogramy te opisują niektóre szczegóły procesu zamiany obwiedni na
+mapy bitowe (tzw.&nbsp; <em>hinty</em> czyli podpowiedzi), bo przecież
+ostatecznie znak zostanie wyświetlony na ekranie, wydrukowany na
+drukarce lub naświetlony na diapozytywie, czyli musi zostać zamieniony
+na postać dyskretną.</p>
+
+<P><A HREF=#P0><IMG ALIGN="BOTTOM" SRC="back.gif"> Spis treści</A></P>
+
+<!-- ................................................................. -->
+<a id="Nazwy-i-kody" name="Nazwy-i-kody"></a>
+
+<h2>Nazwy i kody znaków</h2>
+
+<p>Skąd zatem PostScript trafiając na jakąś liczbę &#8222;wie&#8221;, że ma użyć
+procedury o&nbsp;nazwie, powiedzmy, &#8222;aogonek&#8221;?</p>
+
+<p>Aaa, właśnie! Tu jest pies pogrzebany. We &#8222;właściwym foncie&#8221;
+PostScript-owym jest zawarta dodatkowa informacja, mianowicie tabela
+par (liczba,&nbsp;nazwa) przyporządkowująca liczbom z&nbsp;zakresu
+<code>0</code>--<code>255</code> nazwy podprogramów opisujących znaki.
+Tablica ta (czasem zwana wektorem) nosi nazwę &#8222;Encoding&#8221;, co jest
+może mało istotne, natomiast istotne jest to, że tablicę tę można
+&#8222;w&nbsp;locie&#8221; zmienić. Z&nbsp;tej możliwości korzysta m.in.
+sterownik <code>DVIPS</code> (p.&nbsp;niżej).</p>
+
+<!-- ............................................................... -->
+<a id="AFMTFM" name="AFMTFM"></a>
+
+<h2>Konwersja AFM -&gt; TFM</h2>
+
+<p>W&nbsp;pliku AFM znajduje się również informacja
+o&nbsp;przyporządkowaniu liczba-nazwa, (w&nbsp;zasadzie można zakładać,
+że jest to to samo przyporządkowanie, co w&nbsp;pliku
+<code>PFB</code>/<code>PFA</code>). Na ogół nie jest to
+przyporządkowanie, o&nbsp;które by nam chodziło. Ale nie ma biedy &#8211;
+<code>DVIPS</code>-owi można podać <em>dowolne</em> przyporządkowanie,
+które zostanie użyte w&nbsp;tworzonym przezeń pliku
+PostScript-owym.</p>
+
+<p>Konwertery <code>AFM-&gt;TFM</code> na podstawie nazw generują
+stosowne przyporządkowanie, lub nawet wiele przyporządkowań, a&nbsp;dla
+każdego z&nbsp;takich przyporządkowań tworzony jest odpowiadający mu
+plik&nbsp;<code>TFM</code>.</p>
+
+<p>Najpowszechniej używanym konwerterem jest program
+<code>AFM2TFM</code>, należący do standardowej dystrybucji sterownika
+<code>DVIPS</code>. Konwerter o&nbsp;nazwie <a
+href="ftp://ftp.gust.org.pl/TeX/fonts/utilities/t1install/toil/">TOIL</a>,
+bazuje na programach <code>AWK</code> oraz METAFONT Warto też wspomnieć
+o&nbsp;pakiecie <code>VFINST</code>, oferującym liczne możliwości,
+bazującym na fontach wirtualnych.</p>
+
+<P><A HREF=#P0><IMG ALIGN="BOTTOM" SRC="back.gif"> Spis treści</A></P>
+
+<!-- ................................................................. -->
+<a id="AFMTFMp" name="AFMTFMp"></a>
+
+<h2>Konwersja AFM -&gt; TFM &#8211; poprawność nazw znaków</h2>
+
+<p>Aby konwertery <code>AFM-&gt;TFM</code> mogły działać jak należy,
+nazwy podprogramów muszą być zgodne z&nbsp;ich treścią. Tak niestety
+nie zawsze jest, np.&nbsp;pod nazwą &#8222;Sterling&#8221; zamiast opisu znaku
+funta można znaleźć opis polskiego &#8222;Ł&#8221; czyli &#8222;Lslash&#8221;. Pomysłów na
+cudaczne nazewnictwo jest mniej więcej tyle, ile tzw.&nbsp;standardów
+kodowania znaków, czyli <em>infinity</em>.</p>
+
+<p>Z&nbsp;niepoprawnymi nazwami można sobie poradzić. Co nam zależy,
+przecież &#8222;onesuperior&#8221; brzmi równie ładnie jak &#8222;aogonek&#8221;,
+nieprawdaż? Problem jedynie w&nbsp;tym, że z&nbsp;góry nie wiadomo, że
+producent uznał &#8222;onesuperior&#8221; za odpowiednią nazwę dla polskiej
+litery &#8222;ą&#8221;.
+Jakiś
+szaleniec może się pogodzić z&nbsp;propozycją Adobe i&nbsp;użyć dla
+podprogramu opisującego &#8222;ą&#8221; nazwy &#8222;aogonek&#8221;&#8230;</p>
+
+<p>Jakby nie dość było problemów, oprócz nazewnictwa ewidentnie
+niepoprawnego możemy się zetknąć z&nbsp;obocznością! Otóż niektórzy
+producenci dla określenia znaków &#8222;ż&#8221; i&nbsp;&#8222;Ż&#8221; używają nazw
+&#8222;zdot&#8221; i&nbsp;&#8222;Zdot&#8221;, a&nbsp;niektórzy &#8222;zdotaccent&#8221;
+i&nbsp;&#8222;Zdotaccent&#8221;. Nie znalazłem jednoznacznego stanowiska firmy
+Adobe w&nbsp;tej sprawie, ale na ogół obowiązuje zasada &#8222;sklejania&#8221;
+nazw: &#8222;a&#8221; + &#8222;grave&#8221; = &#8222;agrave&#8221;; skoro więc istnieje znak
+&#8222;dotaccent&#8221; (nazwa używana przez Adobe), to &#8222;ż&#8221; należy rozumieć
+jako &#8222;z&#8221; + &#8222;dotaccent&#8221; czyli &#8222;zdotaccent&#8221;. Innymi słowy zalecać
+by należało używanie nazw &#8222;zdotaccent&#8221; i&nbsp;&#8222;Zdotaccent&#8221;, ale być
+może konwertery <code>AFM-&gt;TFM</code> powinny być uwrażliwione na tę
+oboczność.</p>
+
+<P><A HREF=#P0><IMG ALIGN="BOTTOM" SRC="back.gif"> Spis treści</A></P>
+
+<!-- ................................................................. -->
+<a id="AFMTFMk" name="AFMTFMk"></a>
+
+<h2>Konwersja AFM -&gt; TFM &#8211; kerny i&nbsp;ligatury</h2>
+
+<p>Plik <code>TFM</code> zawiera jeszcze informację o&nbsp;parach
+kernowych i&nbsp;ligaturach. Pary kernowe, uwzględniane &#8222;jak leci&#8221;
+przez większość konwerterów <code>AFM-&gt;TFM</code>, na ogół są
+umieszczane jak należy w&nbsp;plikach <code>AFM</code>, chociaż czasami
+można trafić na felerne pliki <code>AFM</code> bez par kernowych.
+Obecność par kernowych poznajemy to po występowaniu wierszy
+zaczynających się od słowa kluczowego &#8222;KPX&#8221;. Warto mieć na uwadze, że
+bywają pliki <code>AFM</code> posiadające tylko część par kernowych &#8211;
+np.&nbsp;znaki diakrytyczne czasami nie są uwzględniane &#8211; dobrze jest
+sprawdzić plik <code>AFM</code> pod tym kątem.</p>
+
+<p>Z&nbsp;ligaturami jest znacznie gorzej &#8211; można je bardzo rzadko
+uświadczyć, mimo iż teoretycznie format <code>AFM</code> pozwala na
+definiowanie ligatur, np.&nbsp;poniższy przykładowy wiersz pliku
+<code>AFM</code>:</p>
+
+<pre>
+ C 45; WX 329; N hyphen; B 17 188 313 303; L hyphen endash;
+</pre>
+
+<p>zgodnie ze specyfikacją Adobe ustala, że znak o&nbsp;kodzie
+<code>45</code> ma szerokość <code>329</code> jednostek (jednostka =
+1/1000em), nosi nazwę &#8222;hyphen&#8221;, że naroża prostokąta ograniczającego
+obrys znaku mają współrzędne wynoszące w&nbsp;tych samych jednostkach
+(17, 188) oraz (313, 303), i&nbsp;wreszcie że dwa znaki &#8222;hyphen&#8221; mają
+być zamieniane na znak o&nbsp;nazwie &#8222;endash&#8221;, czyli innymi słowy
+znak o&nbsp;nazwie &#8222;endash&#8221; jest ligaturą dwóch znaków o&nbsp;nazwie
+&#8222;hyphen&#8221;.</p>
+
+<p>W&nbsp;związku z&nbsp;powszechnym brakiem informacji
+o&nbsp;ligaturach w&nbsp;plikach <code>AFM</code>, konwertery
+<code>AFM-&gt;TFM</code> muszą albo się domyślić, jakie by tu ligatury
+można wstawić, albo &#8211; co chyba jest lepszym rozwiązaniem &#8211; zostać
+poinformowane o&nbsp;prawidłowych dla danego fontu (grupy fontów)
+ligaturach.</p>
+
+<P><A HREF=#P0><IMG ALIGN="BOTTOM" SRC="back.gif"> Spis treści</A></P>
+<!-- ................................................................. -->
+<a id="Pliki-cnf" name="Pliki-cnf"></a>
+
+<h2>Pliki konfiguracyjne sterownika <code>DVIPS</code></h2>
+
+<p>Popularny sterownik <code>DVIPS</code>, autorstwa Tomasa Rokickiego,
+zamieniający pliki <code>DVI</code> na pliki PostScript-owe musi
+wiedzieć &#8211; podobnie jak każdy sterownik &#8211; gdzie znajdują się fonty
+TeX-owe i&nbsp;PostScript-owe. Informację tę zawierają pliki
+<code>config.ps</code> i&nbsp;<code>psfonts.map</code>, poszukiwane
+w&nbsp;kartotekach wskazywanych przez zmienną systemową
+<code>TEXCONFIG</code> (we współczesnych instalacjach zmienna ta jest
+już zwykle zadeklarowana w&nbsp;pliku konfiguracyjnym
+<code>texmf.cnf</code>).</p>
+
+<p>Plik <code>config.ps</code> zawiera informacje o&nbsp;parametrach
+pracy programu.
+<!-- plików <code>TFM</code>, plików <code>PK</code>, fontów wirtualnych,
+oraz fontów PostScript-owych. -->
+Natomiast plik <code>psfonts.map</code> zawiera informacje związane
+wyłącznie z&nbsp;dostępnymi w&nbsp;danej instalacji fontami
+PostScript-owymi. W&nbsp;pliku <code>psfonts.map</code> informacje
+o&nbsp;poszczególnych fontach umieszczane są w&nbsp;jednym wierszu (co
+czasem może być kłopotliwe). Typowy wiersz wygląda następująco:</p>
+
+<pre>
+ec-qplr TeXGyrePagella-Regular "encqec ReEncodeFont" &lt;q-ec.enc &lt;qplr.pfb
+</pre>
+
+<p>Pierwsza pozycja określa nazwę TeX-ową fontu, druga &#8211; wewnętrzną
+nazwę PostScript-ową fontu (robi z&nbsp;niej użytek interpreter
+PostScript-u), następnie pojawia się informacja o&nbsp;dodatkowych
+zabiegach, jakim ma być poddany font (może to być poziome
+przeskalowanie fontu, pochylenie lub zmiana kodowania &#8211; w&nbsp;podanym
+przykładzie chodzi o&nbsp;zmianę kodowania), a&nbsp;na końcu pojawiają
+się nazwy plików, które mają zostać dołączone do pliku wynikowego &#8211;
+w&nbsp;tym wypadku jest to plik kodowania <code>q-ec.enc</code> oraz
+font <code>qplr.pfb</code>.</p>
+
+<p>Podanie nazwy pliku fontowego nie jest konieczne &#8211; w&nbsp;takim
+wypadku <code>DVIPS</code> założy, że chodzi o&nbsp;font wbudowany
+w&nbsp;urządzenie. Gorąco odradzamy korzystanie z&nbsp;tej możliwości
+&#8211; opłakane skutki korzystania z&nbsp;fontów wbudowanych można co jakiś
+czas oglądać w&nbsp;materiałach nawet renomowanych firm: a&nbsp;to
+zamiast polskich znaków występują &#8222;krzaczki&#8221;, a&nbsp;to litery
+zachodzą na siebie, a&nbsp;to skład się zupełnie rozjeżdża&#8230;</p>
+
+<p>Plik kodowania zawiera tablicę 256 nazw znaków, określającą omawiane
+wyżej przyporządkowanie kod-nazwa. Jest to w&nbsp;istocie fragment kodu
+PostScript-owego postaci:</p>
+
+<pre>
+ /encqec[
+ /grave
+ /acute
+ /circumflex
+ ...
+ /thorn
+ /germandbls
+ ] def
+</pre>
+
+<p>O&nbsp;tym, jaki kod otrzymuje dany znak, decyduje kolejność
+wystąpienia: w&nbsp;tym przypadku na pozycji zerowej (w&nbsp;języku
+PostScript liczenie zawsze odbywa się od zera) występuje znak
+o&nbsp;nazwie <code>grave</code> (znak &#8222;ciach&#8221; <code>/</code>
+w&nbsp;notacji PostScript-owej oznacza mniej więcej to samo co znak
+&#8222;w-tył-ciach&#8221; <code>\</code> w&nbsp;notacji TeX-owej),znak
+<code>acute</code> otrzymuje kod&nbsp;1, znak <code>circumflex</code> &#8211;
+kod&nbsp;2, &#8230;, znak <code>thorn</code> &#8211; kod&nbsp;254,
+i&nbsp;wreszcie znak <code>germandbls</code> &#8211; kod&nbsp;255.
+Wystąpienie <code>.notdef</code> oznacza, że
+w&nbsp;foncie nie ma znaku na pozycji o&nbsp;danym kodzie.</p>
+
+<p>Warto mieć świadomość, że <code>DVIPS</code> włącza wszelkie pliki
+prawie ich nie analizując, jedyny zabieg przezeń wykonywany to zamiana
+postaci binarnej fontu Type&nbsp;1 (<code>PFB</code>) na postać ASCII
+(<code>PFA</code>). Jeżeli font jest już w&nbsp;postaci ASCII, to
+włączany jest do dokumentu &#8222;jak leci&#8221;, bez żadnej ingerencji ze
+strony sterownika. Oznacza to, że używając <code>DVIPS</code>-a możemy
+korzystać ze wszystkich możliwych fontów PostScript-owych, nie tylko
+najbardziej popularnych fontów Type&nbsp;1, ale w&nbsp;szczególności
+także fontów TrueType, które dla interpretera PostScript-u są po prostu
+fontami Type&nbsp;42 &#8211; wystarczy mieć plik <code>TFM</code>
+i&nbsp;font&nbsp;Type&nbsp;42 w&nbsp;postaci ASCII.</p>
+
+<P><A HREF=#P0><IMG ALIGN="BOTTOM" SRC="back.gif"> Spis treści</A></P>
+<!-- ................................................................. -->
+<a id="Latanie" name="Latanie"></a>
+
+<h2>Łatanie fontów &#8211; niepoprawny font</h2>
+
+<p>Używając różnych wymyślnych narzędzi (np.&nbsp;<a
+href="ftp://ftp.gust.org.pl/TeX/fonts/utilities/t1utils/">T1UTIL</a>
+Lee Hetheringtona) można się zorientować, jakim znakom zostały
+przypisane jakie nazwy i&nbsp;w&nbsp;razie czego je poprawić, można też
+uzupełniać kerny, itp., ale to jest żmudne i&nbsp;przykre, bo
+niepotrzebne zajęcie.</p>
+
+<P><A HREF=#P0><IMG ALIGN="BOTTOM" SRC="back.gif"> Spis treści</A></P>
+<!-- ................................................................. -->
+<a id="BrakAFM" name="BrakAFM"></a>
+
+<h2>Łatanie fontów &#8211; brak plików AFM</h2>
+
+<p>Czasem fonty PostScript-owe są dystrubuowane z&nbsp;plikami
+<code>PFM</code> (<em>Printer Font Metric</em>) zamiast z&nbsp;plikami
+AFM.</p>
+
+<p>Brak plików <code>AFM</code> <em>praktycznie przekreśla</em>
+możliwość użycia fontu PostScript-owego w&nbsp;TeX-u, bowiem pliki
+<code>PFM</code> zawierają znacznie uboższą informację niż pliki AFM,
+w&nbsp;szczególności <em>nie zawierają</em> nazw znaków, czyli nie
+określają żadnej tablicy kodowania ( <em>encoding vector</em>,
+p.&nbsp;wyżej). Można zakładać, że chodzi o&nbsp;takie samo
+przyporządkowanie, jakie jest wpisane w&nbsp;pliku
+<code>PFB</code>/<code>PFA</code>, chociaż w&nbsp;ogólności tak być nie
+musi. Ponadto w&nbsp;pliku <code>PFM</code> znajdują się dane na temat
+par kernowych jedynie dla co najwyżej 256 znaków, a&nbsp;font
+PostScript-owy może ich zawierać nacznie więcej.</p>
+
+<p>Jeśli jednak szczęście nam dopisze, to z&nbsp;plików
+<code>PFM</code> oraz <code>PFB</code> (bądź <code>PFA</code>) możemy
+odtworzyć informację niezbędną do utworzenia pliku <code>AFM</code> &#8211;
+można spróbować użyć pakietu <a
+href="ftp://ftp.gust.org.pl/pub/GUST/contrib/fonts/tools/pf2afm.zip">
+pf2afm</a>, który dostępny jest w&nbsp;archiwum GUST-u.</p>
+
+<P><A HREF=#P0><IMG ALIGN="BOTTOM" SRC="back.gif"> Spis treści</A></P>
+<!-- ................................................................. -->
+<a id="Podsumowanie" name="Podsumowanie"></a>
+
+<h2>Podsumowanie</h2>
+
+<p>Warto pamiętać, że font nie tylko musi ładnie w&nbsp;druku wyglądać,
+ale i&nbsp;jego dość skomplikowana &#8222;wewnętrzna&#8221; struktura musi być
+zrobiona porządnie.</p>
+
+<p>Jednym z&nbsp;najbardziej dających się we znaki problemów jest
+problem układu znaków w&nbsp;foncie. Staranne przemyślenie tego
+problemu <em>musi</em> prowadzić do wniosku, że firma Adobe już dawno
+temu znalazła <em>wystarczające</em> w&nbsp;większości przypadków
+rozwiązanie problemu konfigurowalności układu znaków w&nbsp;foncie. To
+bardzo mocny argument na rzecz korzystania z&nbsp;fontów
+PostScript-owych w&nbsp;formacie Type&nbsp;1.</p>
+
+<p>Wprawdzie detale związane z&nbsp;instalowaniem fontów mogą się
+wydawać skomplikowane, ale taka jest natura rzeczy. A&nbsp;do czego
+prowadzi próba ukrycia tej natury przed użytkownikiem, wielu z&nbsp;nas
+boleśnie odczuło w&nbsp;przypadku korzystania fontów TrueType
+w&nbsp;systemie Windows. Wprawdzie instaluje się je bardzo prosto (albo
+i&nbsp;&#8211; nie wiedzieć czemu &#8211; nie instaluje), ale praktycznie nie ma
+<em>żadnej</em> możliwości rekonfiguracji. Ktoś, kto przenosił fonty
+TrueType z&nbsp;jednej wersji systemu Windows do innej, wie o&nbsp;czym
+mowa &#8211; a&nbsp;to font się w&nbsp;ogóle nie daje zainstalować,
+a&nbsp;to inne znaki się pojawiają, niż byśmy chcieli, a&nbsp;to nasza
+ulubiona aplikacja albo tego fontu nie widzi, albo się na nim
+wywraca&#8230;</p>
+
+<p>Mając to na względzie uważamy, że warto poświęcić nieco czasu
+i&nbsp;wysiłku na zrozumienie podstaw konfigurowania fontów, zwłaszcza
+fontów PostScript-owych w&nbsp;formacie Adobe Type&nbsp;1 &#8211; to
+naprawdę w&nbsp;pewnym momencie staje się proste, a&nbsp;tym samym
+oczywiście niezwykle użyteczne.</p>
+
+<P><A HREF=#P0><IMG ALIGN="BOTTOM" SRC="back.gif"> Spis treści</A></P>
+
+Bogusław Jackowski i&nbsp;Staszek Wawrykiewicz
+
+<p><i>Powyższy tekst jest zmodyfikowaną wersją artykułu
+z&nbsp;Biuletynu GUST, nr&nbsp;8/1997, s.&nbsp;7&#8211;12.</i><br />
+ <i>Ostatnie zmiany 5.05.2014</i></p>
+</P>
+</body>
+</html>
+