***************************************************************************** * Kolekcja fontów PL (polskiego rozszerzenia fontów * * Computer Modern) w formacie źródłowym METAFONT-a * * (dobro wspólne -- public domain) * ***************************************************************************** Autorzy ======= Bogusław Jackowski Marek Ryćko konsultacje: Roman Tomaszewski ------------- OPIS PAKIETU: ------------- Niniejsza dystrybucja METAFONT-owych plików źródłowych fontów PL (wersja 1.09, 13 kwietnia 2001) jest częścią dystrybucji pakietu MeX i WYJĄTKOWO jest rozpowszechniana jako odrębny pakiet. Powodem aktualizacji jest usunięcie błędu wykrytego (podczas pracy nad fontami EC) przez Andreasa Schwaba i Joerga Knappena. Błąd polegał na różnicach wysokości i korekt kursywy liter diakrytycznych w zależności od użytej rozdzielczości. Ponieważ suma kontrolna plików TFM zależy wyłącznie od szerokości znaków, błąd ukrywał się przez wiele lat. W wersji poprawionej znaki diakrytyczne są przetwarzane dwukrotnie (patrz makro ,beginchar_twice' w pliku pl_dod.mf). Za pierwszym razem wszystkie operacje rysowania (fill, draw, cull itp.) są neutralizowane, w rezultacie otrzymujemy w tym przebiegu jedynie wymiary znaków (mamy nadzieją, że niezależne od rozdzielczości ;-). W drugim przebiegą są tworzone obrysy (glyphs) znaków. Poniższy fragment zaczerpnięto z dokumentacji mexinfo.pol zawartej w pakiecie MeX ftp://ftp.gust.org.pl/pub/TeX/language/polish/mex105.zip lub archiwa CTAN, np. ftp://ftp.dante.de/tex-archive/language/polish/mex105.zip Fonty PL (polskie rozszerzenie fontów CM) ========================================== Fonty PL przeznaczone są do składania polskich lub polsko-angielskich tekstów przy użyciu formatów MeX i LaMeX. Obecnie mogą też być wykorzystane do składu przy użyciu pakietu PLaTeX (autorstwa Mariusza Olko i Marcina Wolińskiego), wspomagającego skład polskich dokumentów przy użyciu formatu LaTeX2e: ftp://ftp.gust.org.pl/pub/TeX/language/polish/platex-1.??.zip lub ftp://ftp.dante.de/tex-archive/language/polish/platex-1.??.zip Autorzy starali się zachować ,,ducha CM-ów'' przy projektowaniu polskich znaków diakrytycznych. Np. przekreślenie małej litery ,,ł'' zostało nieco tylko powiększone w stosunku do przekreślenia fontów rodziny CM (METAFONT-owy program ,,Cross for Polish l and L'' w pliku ACCENT.MF) umieszczanego w składzie komendami TeX-owymi \l oraz \L, chociaż w niektórych fontach autorzy chętnie widzieliby przekreślenie znacznie wyraźniejsze. Podobnie podcięcia wstawiane automatycznie pomiędzy znakami (implicit kerns) były dodawane raczej ostrożnie. Np. zdaniem autorów podcięcie między polskim otwierającym cudzysłowem (,,) a literą ,,W'' bądź ,,T'' mogłoby być znacznie większe, gdyby nie to, że w fontach CM nie ma żadnego podcięcia między literą ,,A'' a cudzysłowem zamykającym (''). Fonty PL, podobnie jak macierzyste fonty CM, projektowane były pod kątem zastosowań profesjonalnych, tzn. urządzeń o większych rozdzielczościach. Niemniej jednak sporo wysiłku włożono w prawidłową dyskretyzację przy małych rozdzielczościach (dla potrzeb wydruków testowych na drukarkach mozaikowych 9- i 24-igłowych). 1. Fonty PL stanowią rozszerzenie standardowego zestawu rodziny Computer Modern (CM) o polskie znaki diakrytyczne i bazują na tych samych plikach parametrycznych co fonty rodziny CM. Zmiany parametrów odbiegające zbyt daleko od standardu zaproponowanego przez D. E. Knutha mogą spowodować nieoczekiwane efekty (do błędu w trakcie obliczeń włącznie). Przykładowo, założone zostało, że kursywa i grotesk wykluczają się. Układ fontów PL charakteryzuje się tym, że znaki o kodach < 128 są identyczne ze znakami rodziny CM, natomiast polskim znakom diakrytycznym przypisane zostały kody > 127 (innych cech TeX-a 3.x nie wykorzystuje się). Polskie znaki diakrytyczne mają kody zgodne z układem ECM (Extended Computer Modern, Cork encoding), natomiast cudzysłowy mają kody niestandardowe (w ECM cudzysłowy mają kody < 127): Ą -- 129 ą -- 161 Ć -- 130 ć -- 162 Ę -- 134 ę -- 166 Ł -- 138 ł -- 170 Ń -- 139 ń -- 171 Ó -- 211 ó -- 243 Ś -- 145 ś -- 177 Ź -- 153 ź -- 185 Ż -- 155 ż -- 187 << (francuski cudzysłów otwierający) -- 174 >> (francuski cudzysłów zamykający) -- 175 ,, (polski cudzysłów otwierający) -- 255 Uwagi: * Fonty matematyczne plmi, plmib oraz plex nie zawierają polskich znaków diakrytycznych i nie różnią się od odpowiednich fontów CM; przedrostki CM zostały zmienione na PL jedynie dla zachowania jednorodności. * Podobnie font pltex10 to po prostu font cmtex10 ze zmienioną dla jednolitości nazwą; font cmtex10 odzwierciedla układ klawiatury na komputerze używanym przez profesora Knutha (D. E. Knuth, ,,Computer Modern Typefaces'', str. 568), tym samym nie powinien raczej zawierać polskich znaków diakrytycznych. * Fonty plsy zostały poszerzone (w stosunku do cmsy) o znaki ,,większe-równe'' i ,,mniejsze-równe'' odpowiadające polskim zwyczajom drukarskim (dolna kreska skośna zamiast poziomej); na konieczność takiego rozszerzenia zwrócił uwagę p. Włodzimierz J. Martin; majuskuły kaligraficzne tych fontów (opisane w pliku calu.mf) nie zostały uzupełnione o polskie znaki diakrytyczne. 2. Jedynymi znakami ,,polskimi'' dostępnymi poprzez ligatury są cudzysłowy (,, << >>). Polskie znaki diakrytyczne są dostępne albo bezpośrednio, albo za pomocą komendy realizowanej przez ,,aktywny ciach'' (/a /c /e /l /n /o /s /x /z /A /C /E /L /N /O /S /X /Z) zaprogramowanej w formatach MeX i LaMeX (p. opis używania formatów MeX i LaMeX). Istnieją zasadnicze powody, dla których autorzy nie wykorzystali do tego celu ligatur. 3. Ze względu na ograniczenie liczby różnych wysokości znaków w foncie do 15 niezerowych, zrezygnowano z kuszącego wypełniania ,,górnej połówki'' fontu. Ponadto w programach METAFONT-owych podjęte zostały zabiegi mające na celu minimalizację liczby różnych wysokości. Niestety, mimo to w niektórych przypadkach liczba różnych niezerowych wysokości przekracza 15. W takiej sytuacji METAFONT automatycznie zmienia niektóre spośród wysokości. Oznacza to, że w pewnych (bardzo złośliwych i -- miejmy nadzieję -- niezwykle rzadkich) przypadkach może się zdarzyć, że tekst czysto angielski złożony fontami PL zostanie inaczej przełamany na strony niż tekst złożony fontami CM. 4. Starano się unikać wprowadzania dodatkowych parametrów, co jednak nie zawsze było możliwe. Szczegóły dotyczące możliwości zmiany zachowania domyślnego opisane są w pliku pl_dod.mf. Przykłady użycia opcjonalnych parametrów zmieniających zachowanie domyślne znaleźć można w plikach źródłowych fontów plb10, plbx5, plbx6, plbx7, plbx8, plcsc10, pldunh10, plfi10, plff10, plitt10, plr5, plr6, plr7, plr8, plr9, plr12, plr17, plsl8, plsl9, plsl12, plssq8, plssqi8, pltcsc10, plti7, plti8, plti12 oraz plvtt10. 5. Programy opisujące polskie znaki diakrytyczne zostały oparte na odpowiednich programach rodziny CM. Opisy polskich znaków diakrytycznych stanowią niezależne programy, co jest zgodne z ogólną filozofią programów rodziny CM (można by np. zapamiętywać mapy bitowe liter ,,A'', ,,C'', ,,a'', ,,c'', ..., itd., i te mapy bitowe modyfikować; z takiego podejścia i mu podobnych zrezygnowano). Nieco trickowe rozwiązanie zastosowano w celu uniknięcia duplikowania plików parametrycznych (plb10, plbx10, ..., itd.). Wykorzystano tu METAFONT-ową zmienną ,,jobname'' do czytania odpowiednich plików parametrycznych rodziny CM. Pliki te powinny znajdować się w kartotece przeszukiwanej przez METAFONT-a w trakcie realizacji komendy ,,input''. 6. Program dla polskiego cudzysłowu otwierającego zaczerpnięty został z programów rodziny CM. Natomiast kształt cudzysłowów francuskich został zaprojektowany i zaprogramowany ,,od zera''. 7. Pierwszą i najważniejszą fazą pracy nad fontami PL było zaprojektowanie i zaprogramowanie kształtów polskich znaków diakrytycznych w sześciu podstawowych krojach: plr, plss, plbx, plssbx, pltt oraz plti (stopnie pisma od 5 do 17 punktów). Tym etapem pracy opiekował się troskliwie p. Roman Tomaszewski, wybitny polski typograf, członek zarządu Międzynarodowego Stowarzyszenia Typograficznego ATypI i zarazem przewodniczący Polskiego Oddziału ATypI. Autorzy są mu głęboko wdzięczni za życzliwe wspieranie swą wiedzą i doświadczeniem prac projektowych nad fontami PL. Pan Roman Tomaszewski zmarł w grudniu 1992 roku. 8. Akcenty nad minuskułami ,,ć'' ,,ń'' ,,ó'' ,,ś'' ,,ź'' są takie same jak wstawiany TeX-ową komendą \' akcent ,,acute'', tyle że w niektórych przypadkach są nieco przesunięte w poziomie. Natomiast akcenty nad majuskułami ,,Ć'' ,,Ń'' ,,Ó'' ,,Ś'' ,,Ź'' są wprawdzie konstruowane w oparciu o akcent ,,acute'', ale są nieco ,,spłaszczone'' (w przypadku odmian szeryfowych jest to zwykły obrót, natomiast w przypadku odmian bezszeryfowych -- obrót połączony z pewną modyfikacją, ze względu na konieczność zachowania poziomego położenia górnej i dolnej krawędzi akcentu oraz optycznej grubości kreski akcentowej). Wyjątkowo w karykaturalnie smukłym foncie pldunh10 akcent nad minuskułami i majuskułami jest pochylony tak samo. Powyższe zabiegi są zgodne z regułami sztuki typograficznej, powodują natomiast, że akcenty kładzione za pomocą TeX-owej komendy \accent mogą się istotnie różnić od akcentowanych majuskuł w fontach PL. 9. Akcent nad literami ,,ż'' oraz ,,Ż'' jest taki sam jak kropka nad literą ,,i'', czyli inny niż akcent wstawiany przez TeX-a (za pomocą komendy \.). W literze ,,ż'' jest także umieszczony na tej samej wysokości co kropka nad ,,i'' (oczywiście nie w foncie kapitalikowym). Dzięki temu w słowach takich jak ,,gwiżdże'' czy ,,niżej'' kropka zachowuje tę samą wysokość. Niestety, w niektórych fontach rodziny CM kropka nad ,,i'' jest stanowczo za mała (np. CMTT), co powoduje, że wartość optyczna kropki nad ,,ż'' oraz ,,Ż'' jest też czasami zbyt mała. Z powiększenia kropki zrezygnowano, uznając jej wielkość za cechę fontów CM. 10. Przekreślenie litery ,,Ł'' jest znacznie większe od przekreślenia litery ,,ł'', a przekreślenie litery ,,ł'' jest z kolei większe od przekreślenia w fontach rodziny CM (p. punkt 0 powyżej). 11. ,,Ogonki'' pod literami ,,Ą'' ,,Ę'' ,,ą'' ,,ę'' budowane są za pomocą stosunkowo skomplikowanego algorytmu, ale geometria ogonka jest bardzo prosta: zewnętrzna i wewnętrzna krawędź to pojedyncze segmenty krzywych B\'eziera. Ogonki takie -- jak pokazuje doświadczenie -- są najzgrabniejsze. Opcjonalne parametry dodatkowe wpływające na kształt ogonków opisane są w pliku pl_dod.mf. 12. Polskie znaki diakrytyczne nie są przeznaczone do używania jako znaki matematyczne, dlatego w programach opisujących te znaki pominięta została komenda ,,math_adjust''. 13. Podcięcia wstawiane automatycznie między znakami (implicit kerns) są w zasadzie takie same dla polskich znaków diakrytycznych jak dla odpowiednich liter alfabetu łacińskiego, z pewnymi wszakże wyjątkami (p. pliki polan.mf, polkur.mf oraz polkap.mf); podobnie rzecz się ma z korektą italikową wstawianą za polskimi znakami diakrytycznymi. 14. Dla tych, którzy chcieliby wydrukować źródła METAFONT-owe w postaci sformatowanej za pomocą programu MFT, dołączony jest odpowiedni format o nazwie pl.mft. Format ten jest przygotowany do składania z użyciem fontów rodziny CM; jeśli użytkownik zamienił już wszystkie CM-y na fonty PL, musi odpowiednio zmienić nazwy fontów w plikach pl.mft oraz mftmac.tex (plik mftmac.tex znaleźć można np. w każdej dystrybucji TeX-a lub CTAN:/macros/generic/plain/base/). Aktualna dystrybucja składa się z: (a) 12 plików podstawowych: fik_mik.mf, pl_cud.mf, pl_dl.mf, pl_dod.mf, pl_ml.mf, pl_mlk.mf, pl_sym.mf, polan.mf, polkap.mf, polkur.mf, polmat.mf, poltyt.mf; (b) 80 plików parametrycznych: plb10.mf, plbsy10.mf, plbsy5.mf, plbsy7.mf, plbx10.mf, plbx12.mf, plbx5.mf, plbx6.mf, plbx7.mf, plbx8.mf, plbx9.mf, plbxsl10.mf, plbxti10.mf, plcsc10.mf, pldunh10.mf, plex10.mf, plff10.mf, plfi10.mf, plfib8.mf, plinch.mf, plitt10.mf, plmi10.mf, plmi12.mf, plmi5.mf, plmi6.mf, plmi7.mf, plmi8.mf, plmi9.mf, plmib10.mf, plmib5.mf, plmib7.mf, plr10.mf, plr12.mf, plr17.mf, plr5.mf, plr6.mf, plr7.mf, plr8.mf, plr9.mf, plsl10.mf, plsl12.mf, plsl8.mf, plsl9.mf, plsltt10.mf, plss10.mf, plss12.mf, plss17.mf, plss8.mf, plss9.mf, plssbi10.mf, plssbx10.mf, plssdc10.mf, plssi10.mf, plssi12.mf, plssi17.mf, plssi8.mf, plssi9.mf, plssq8.mf, plssqi8.mf, plsy10.mf, plsy5.mf, plsy6.mf, plsy7.mf, plsy8.mf, plsy9.mf, pltcsc10.mf, pltex10.mf, pltex8.mf, pltex9.mf, plti10.mf, plti12.mf, plti7.mf, plti8.mf, plti9.mf, pltt10.mf, pltt12.mf, pltt8.mf, pltt9.mf, plu10.mf, plvtt10.mf; prawie wszystkie pliki parametryczne odwołują się do oryginalnych plików źródłowych D. E. Knutha; wyjątkiem są jedynie plbsy5.mf, plbsy7.mf, plmib5.mf oraz plmib7.mf, które odwołują się do dodatkowych plików źródłowych fontów Computern Modern zawartych w dystrybucji AMS; podczas generowania fontów PL wymagana jest dostępność w systemie oryginalnych plików źródłowych CM i AMS; (c) 2 pliki dodatkowe: * cmssbi10.mf -- dodany dla kompletności (pliku tego brak w oryginalnym zestawie plików parametrycznych); * dlr10.mf -- plik przykładowy, demonstruje sposób zmiany jednostki podstawowej fontu (w tym wypadku plik parametryczny definiuje font wielkości 10 dd) --------- HISTORIA: --------- 7 lutego 1992: wersja 1.00 11 lutego 1992: wersja 1.01 * brak zmian; nowy numer wersji wynikł ze zmian w formacie MeX 1 Jun 1992: wersja 1.02 * pl_dod.mf: dwa błędne wiersze: z_a:=(x_down+the_left_pos,.5penkind); % starting point z_d:=(xpart(z_a)-.5penkind,y_right+.5penkind)+the_tip_pos; % ending point zastąpiono następującymi: z_a:=(x_down+the_left_pos,ypart(ogonek_pos)); % starting point z_d:=(xpart(z_a)-.5penkind,y_right+ypart(ogonek_pos))+ the_tip_pos; % ending point zmiany komentarzy * pl_mlk.mf: przekreślenie w literze ł: filldraw stroke z1e--z2e; %| stem zamieniono na: filldraw stroke z1e--z2'e; %| stem * fik_mik.mf wczytuje cmbase.mf, aby uniknąć wielokrotnego wczytywania bazy podczas przetwarzania pliku parametrycznego 18 grudnia 1992: wersja 1.03 * fik_mik.mf: dodano możliwość dowolnego przeskalowania; wartość |basic_unit#| może być użyta do zmiany domyślnej jednostki podstawowej |pt#| generowanego fontu (sugestia M. Łakomego; patrz przykładowy plik dlr10.mf generujący font |10dd#|) * kosmetyczne zmiany w plikach cmbx11.mf, cmr11.mf, cmti11.mf, cmsl11.mf, cmssbi10.mf oraz polan.mf 14 kwietnia 1996: wersja 1.07$gamma$ -- nieoficjalna (wersje od 1.04 do 1.06 nie były nigdy publikowane) * usunięto przykry błąd wykryty przez Andreasa Schwaba i Joerga Knappena podczas prac nad włączeniem kodu fontów PL do fontów EC: błąd zaokrągleń powodował, że pliki TFM zależały od rozdzielczości (podziękowania dla Andreasa i Joerga) * poprawiono makro |put_dot| (pl_dod.mf) * zdefiniowano |qvair| i |limit_dist| (używane jako zmienne) * kosmetyczne zmiany kodu 13 kwietnia 2000: wersja 1.07 -- oficjalne udostępnienie (BachoTeX 2000) * bez zmian kodu od wersji 1.07$\gamma$ * usunięto z dystrybucji zbędne pliki cmr11.mf, cmti11.mf, cmsl11.mf * aktualizacja dokumentacji i komentarzy w plikach źródłowych 13 kwietnia 2000: wersja 1.08 (data została zachowana celowo) * pl_dod: w definicji makra |beginchar_twice| (przed rozpoczęciem właściwego rysowania znaku) dodano: save mode_guard_; % dedicated to those who use Karl Berry's modes.mf problemy z używaniem modes.mf zostały zgłoszone przez Włodka Macewicza * zmiana ta NIE WPŁYNĘŁA na pliki metryczne, tzn. pliki generowane z wersji 1.07 są identyczne; dołożymy wszelkich starań, żeby zachować stabilność plików TFM, zgodnie z enuncjacją Donalda E. Knutha: ,,I absolutely guarantee that the TFM files will never change again.'' (DeK, plik CM85bug) * z dystrybucji usunięty został font plex9 jako niezwiązany z oryginalnym zestawem fontów Computer Modern; w razie potrzeby (?) wystarczy przenazwować plik plex10.mf * przeczyszczono komentarze 13 kwietnia 2001: wersja 1.09 * pl_dod: typ parametru redefiniowanych w |beginchar_twice| instrukcji |special| i |numspecial| był niezgodny ze składnią (|primary| zamiast |expr|): := special | numspecial ------ EMAIL: ------ B.Jackowski@gust.org.pl lub M.Rycko@gust.org.pl