*****************************************************************************
*            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, dostępny jako ligatura <<) – 174
             » (francuski cudzysłów zamykający, dostępny jako ligatura >>)  – 175
             „ (polski cudzysłów otwierający, dostępny jako ligatura ,,)    – 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 („ « » – odpowiednio jako ,, << >>). 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, cmsl11.mf,
      cmti11.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 cmbx11.mf, cmr11.mf,
      cmsl11.mf i cmti11.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 command> :=
           special <string expression> | numspecial <numeric expression>
30 marca 2020: wersja 1.09a
    * lepsze sformułowania licencyjne w: fik_mik.mf, pl_cud_.mf i pl_dod.mf
    * kodowanie UTF-8: polske znaki w tym i kilku innych dokumentach
