Kodowanie QX

Wiosn� 1998 roku pojawi�a si� w archiwum GUST-u polonizacja fontu Palatino, pochodz�cego z kolekcji font�w URW, dystrybuowanej od jakiego� czasu z Ghostscriptem. Znaki w spolonizowanym foncie maj� kodowanie zgodne z tzw. uk�adem QX. Co to takiego, ten uk�ad QX?

Ot� fonty w postaci elektronicznej przybywaj� na rynek polski g��wnie ze Stan�w Zjednoczonych i s� dostosowane do potrzeb tamtejszego rynku, zar�wno je�li chodzi o zestaw znak�w jak i kodowanie znak�w. W zwi�zku z tym w uk�adzie dystrybuowanych font�w nie znajduj� odbicia ani potrzeby Polak�w, ani TeX-owc�w.

Problem ten od paru lat by� przedmiotem prac nieformalnej grupy cz�onk�w GUST-u. W pracach brali udzia�: W�odek Bzyl, Bogus�aw Jackowski, Janusz M. Nowacki, Andrzej Odyniec, Piotr Pianowski, Marek Ry�ko, Andrzej Tomaszewski, Staszek Wawrykiewicz oraz wielu innych, kt�rzy dobrym lub krytycznym s�owem pomagali popycha� spraw� do przodu.

Efektem prac jest w�a�nie uk�ad QX okre�laj�cy dla font�w PostScriptowych-owych zar�wno zestaw znak�w, jak i tabele kod�w do zastosowa� okienkowych oraz do zastosowa� TeX-owych, gdy� w zamierzeniu uk�ad QX ma zaspokaja� potrzeby sk�adu TeXnicznego, z mo�liwo�ci� (ograniczonego) wykorzystywania font�w w �rodowisku okienkowym.

Za�o�enia

Uk�ad QX nie wzi�� si� ,,z g�owy czyli z niczego'' -- przeciwnie, wynik� z przyj�tych zasad. Zasady mog� si� okaza� chybione, to poka�e czas, niemniej jednak najpierw sformu�owane zosta�y zasady, a na ich podstawie konstruowany by� uk�ad QX.

Oto najwa�niejsze z tych zasad:

Ad 1

Oczywi�cie nie mo�na oczekiwa� stuprocentowej zgodno�ci, na przyk�ad niekt�re fonty s� zaprojektowane bez ligatur zwi�zanych z liter� ,,f''. Wydaje si�, �e brak niekt�rych znak�w jest stosunkowo niegro�ny.

Nieprzyjemne konsekwencje mo�e mie� natomiast decyzja zast�powania pewnych znak�w innymi. Mimo to taki pomys� przyszed� do g�owy nawet samemu Donaldowi E. Knuthowi: w fontach rodziny Computer Modern font cmr5 ma nieco inny zestaw znak�w ni� pozosta�e fonty szeregu CMR -- przykra niespodzianka wydaje si� wcze�niej czy p�niej nieunikniona. Jednak i takie sytuacje mog� by� nie do unikni�cia, np. pisanki z regu�y maj� wi�cej ligatur ni� zwyk�e fonty drukarskie. Nale�y zatem dba� o to, by przynajmniej podstawowe znaki (litery) mia�y przypisane zawsze te same kody.

Spis za�o�e�

Ad 2

TeX operuje jedynie na fontach co najwy�ej 256-znakowych -- to powa�ne ograniczenie. Zosta�o ono oczywi�cie uwzgl�dnione przy projektowaniu uk�adu QX. Kolejnym ograniczeniem jest limit r�nych wysoko�ci i g��boko�ci znak�w w foncie (16), w zwi�zku z czym znaki w danym foncie nie powinny si� zbyt r�ni� rozmiarami.

Ze wzgl�du na powszechno�� font�w CM zestaw znak�w powinien by� mo�liwe zgodny z zestawem znak�w font�w tekstowych rodziny CM (fonty matematyczne, jako u�ywalne wy��cznie w kontek�cie TeX-a, pozostaj� poza zakresem zainteresowa�).

Podobna zasada by�a �ci�le przestrzegana przy projektowaniu pakietu MeX: fonty PL i fonty CM r�ni� si� jedynie znakami o kodach 128--255 (polskie znaki diakrytyczne i cudzys�owy). Dzi�ki temu ka�de oprogramowanie TeX-owe przeznaczone do pracy z fontami CM dzia�a r�wnie� z fontami PL, co okaza�o si� w praktyce bardzo korzystne.

Podj�cie takiej decyzji sta�o niestety w sprzeczno�ci z ustaleniami konferencji EuroTeX'90 w Cork (Irlandia), gdzie przyj�ty zosta� jako ,,nowy standard'' tzw. uk�ad EC. Z grubsza rzecz bior�c w uk�adzie EC znaki diakrytyczne umieszczone s� w pozycjach o kodach 0--32, a narodowe znaki diakrytyczne w pozycjach o kodach 128--256 (w uk�adzie PL pozycje polskich znak�w diakrytycznych s� takie same jak w uk�adzie EC). Niezale�nie od zalet takiego systemu kodowania u�ycie font�w EC z formatem plain jest po prostu niemo�liwe. Ponadto pula stu dwudziestu o�miu pozycji na znaki diakrytyczne okaza�a si� zbyt ma�a. Nie zmie�ci�y si� na przyk�ad litewskie litery ,,iogonek'', ,,Iogonek'', ,,uogonek'' oraz ,,Uogonek''.

Spis za�o�e�

Ad 3

Wolno s�dzi�, �e pakiet MeX zadomowi� si� w �rodowisku polskich u�ytkownik�w TeX-a. Ze wzgl�du na istnienie pakietu MeX jest wskazane, by font by� rozszerzeniem uk�adu PL, mo�liwie ma�o r�ni�cym si� od uk�adu EC. W szczeg�lno�ci oznacza to, �e wszystkie polskie znaki diakrytyczne powinny si� w foncie znale��.

W zwi�zku ze sk�adaniem polskich tekst�w technicznych przydatne s� znaki specyficzne dla polskiej literatury technicznej. Zagadnienie to om�wione jest przy okazji analizowania konsekwencji zasady 4.

W fontach anglosaskich powszechnie obecna jest ligatura ,,fl'' (czasem tak�e ,,ffl''). Nie wida� �adnego powodu, dla kt�rego w polskich fontach nie mia�oby by� ligatury ,,fk'' (poprawna nazwa w wektorze kodowania to f_k). W polskim j�zyku jest wprawdzie znacznie wi�cej s��w zawieraj�cych digram ,,fl'' ni� s��w zawieraj�cych digram ,,fk'', niemniej jednak s� takie s�owa: agrafka, cofka, dryfkotwa, fifka, Kafka, karafka, lufka, mufka, sofka, szafka. Bez ligatury ,,fk'' wygl�daj� one niezbyt �adnie ze wzgl�du na kolizj� liter ,,f'' i ,,k'', analogiczn� do kolizji liter ,,f'' i ,,l''. St�d obecno�� ligatury ,,fk'' w uk�adzie QX.

Spis za�o�e�

Ad 4

Zastosowanie TeX-a do sk�adania tekst�w sugeruje pewien zakres zastosowa�, mianowicie sk�ad tekst�w technicznych. Fonty zatem powinny posiada� znaki przydatne do takich zastosowa�. Po�r�d wielu znak�w specyficznych dla polskich zwyczaj�w typograficznych dwa wydaj� si� szczeg�lnie wa�ne: symbol k�ta ,,anglearc'', oraz symbol �rednicy ,,diameter''. Znak�w tych, o ile nam wiadomo, nie posiada �aden font pochodzenia zagranicznego. R�wnie� polskie znaki mniejsze-r�wne i wi�ksze-r�wne, ,,lessequal'' ,,greaterequal'', r�ni� si� od symboli stosowanych za granic�.

W tekstach technicznych cz�sto pojawia si� promil ,,perthousand''. Rzecz dziwna, Donald E. Knuth nie przyj�� do wiadomo�ci istnienia tego znaku -- w fontach CM po prostu go nie ma.

Z punktu widzenia tekst�w technicznych po��dana jest obecno�� niekt�rych ma�ych greckich liter w foncie. Np. litera mu pojawia si� w oznaczeniach jednostek (przedrostek mikro). Litera pi wydaje si� r�wnie� warta uwzgl�dnienia. Najlepiej by�oby m�c zawrze� w foncie ca�y alfabet grecki. Niestety, szczup�o�� miejsca i obszerno�� potrzeb wykluczaj� tak� mo�liwo��.

Jako jednostki u�ywane s� czasem symbole quotesingle (minuta), quotedbl (sekunda lub cal), degree (stopie�) -- ich brak wcze�niej czy p�niej zaczyna dokucza�.

Okre�lenie ,,teksty techniczne'' niekoniecznie musi oznacza� teksty o profilu matematycznym lub in�ynierskim. Teksty prawne r�wnie� mo�na zaliczy� do tekst�w technicznych. Brak symbolu section w standardowych fontach CM (symbol ten wyst�puje jedynie w fontach szeregu CMSY) dawa� si� dotkliwie odczu� w praktyce.

Spis za�o�e�

Ad 5

Wi�kszo�� znak�w diakrytycznych daje si� uzyska� za pomoc� operacji TeX-owych, na og� za pomoc� polecenia \accent. Je�eli akcent nie styka si� z liter� (akcenty ,,acute'', ,,grave'', ,,dieresis'' itp.) zabieg taki jest dopuszczalny. Mo�na te� skorzysta� z bardzo og�lnego mechanizmu konstruowania znak�w z�o�onych, mianowicie z font�w wirtualnych. Dzi�ki fontom wirtualnym znaki z�o�one s� widziane przez TeX-a jako zwyk�e, pojedyncze znaki. Tworzenie font�w wirtualnych jest jednak pracoch�onne (brak p�ki co wygodnych narz�dzi) i wymaga sporej wiedzy, tak TeX-owej, jak i typograficznej.

Niestety, niekt�re znaki tworz� z elementem diakrytycznym jedn� ca�o��. Wymieni� tu nale�y w pierwszym rz�dzie polskie i litewskie litery z ogonkiem (,,�'', ,,�'', iogonek, uogonek i odpowiednie majusku�y) oraz litery z cedill� (ccedilla, scedilla, tcedilla i odpowiednie majusku�y). Inne znaki diakrytyczne tego rodzaju to islandzkie thorn, Thorn czy eth. W dobrze zaprojektowanych fontach takie znaki nie mog� by� ,,sk�adank�'' -- musz� stanowi� sp�jnie zaprojektowan� ca�o��.

Spis za�o�e�

Ad 6

Font powinien zawiera� pewne ,,u�wi�cone tradycj�'' znaki dodatkowe. Takie symbole jak ,,copyright'' czy ,,registered'' powinny by� zgodne z bie��cym fontem. Teoretycznie wystarczy�oby k�ko, w kt�re za pomoc� makra TeX-owego wstawia�o by si� odpowiednie litery. Ka�dy, kto pr�bowa� u�ywa� plain-owego makra \copyright, wie, �e nie jest to pomys� najszcz�liwszy -- pozycjonowanie liter wewn�trz ko�a musi by� przeprowadzone dla ka�dego fontu (a nawet dla ka�dej odmiany) osobno, co wyklucza mo�liwo�� automatyzacji.

Symbole ,,dagger'' i ,,daggerdbl'' s� wprawdzie stosunkowo rzadko u�ywane (ich u�ywanie to w zasadzie zwyczaj anglosaski), jednak�e kszta�t tych symboli jest specyficzny dla danego fontu, tym samym -- dla pe�no�ci -- font powinien je zawiera�.

Inne symbole potrzebne sporadycznie to ,,bullet'' i ,,periodcentered''. Na pierwszy rzut oka mog�oby si� wydawa�, �e znaki te nie s� w �aden spos�b z konkretnym fontem zwi�zane. To oczywi�cie nieprawda, na przyk�ad kszta�t kropki zale�y od fontu. Si�ganie do innego fontu po te znaki lub przesuwanie kropki w celu uzyskania drugiego z nich jest zabiegiem niezwykle uci��liwym ze wzgl�du na trudno�ci w wywa�eniu po�o�enia obu znak�w.

Spis za�o�e�

Ad 7

Rozpowszechniona obecnie wersja �rodowiska Windows nak�ada dodatkowe ograniczenia na liczb� znak�w w foncie: znakom nie mo�na przypisa� kod�w wi�kszych ni� 255 i mniejszych ni� 32. Redukuje to maksymaln� liczb� znak�w w foncie daj�cych si� r�wnocze�nie wykorzysta� do 224. W uk�adzie QX przeznaczonym do zastosowa� okienkowych kody mniejsze-r�wne od 32 otrzyma�y znaki, co do kt�rych mo�na ze sporym prawdopodobie�stwem za�o�y�, �e nie b�d� potrzebne w tych zastosowaniach (g��wnie akcenty, symbole i ligatury -- p. tabela 2).

Dalsze zmniejszenie puli wolnych miejsc wi��e si� ze znakami o niewielkiej u�yteczno�ci z punktu widzenia TeX-a, ale niezb�dnymi ze wzgl�du na pewne tradycje w ich stosowaniu. Takim znakiem jest np. ,,paragraph'', u�ywany jako znak ko�ca akapitu w niekt�rych edytorach tekstu pracuj�cych w �rodowisku MS Windows. Do podobnego celu wykorzystywany bywa znak ,,currency''.

Pewne aplikacje windowsowe spodziewaj� si� znale�� pod kodami 32 i 160 odpowiednio odst�p (space) i nie�amliwy odst�p (nbspace). S� to znaki absolutnie bezu�yteczne z punktu widzenia TeX-a, ale nieusuwalne ze wzgl�du na windowsowe tradycje.

Spis za�o�e�

Ligatury i kerny

Specyfikacja uk�adu QX w kontek�cie zastosowa� TeX-owych obejmuje tak�e ligatury. Ligatury to wa�ny cho� praktycznie pomijany (z nie do ko�ca jasnych przyczyn) w �wiecie nieTeX-owym element definicji fontu.

Od wersji 0.03 uk�ad QX uwzgl�dnia nast�puj�ce ligatury:

f + f ff
f + i  fi
f + l fl
f + k f_k
ff + i  ffi
ff + l ffl
hyphen + hyphen endash
endash + hyphen emdash
quoteleft + quoteleft quotedblleft
quoteright + quoteright quotedblright
comma + comma quotedblbase
exclam + quoteleft exclamdown
question + quoteleft questiondown
exclamdown + exclamdown guillemotleft
questiondown + questiondown guillemotright

Z dok�adno�ci� do ligatury ,,fk'' jest to ten sam zestaw ligatur co w fontach PL, natomiast r�ni si� on od zestawu ligatur zaproponowanego dla uk�adu EC, kt�ry obejmowa� m.in.:

space + l lslash
space + L Lslash
percent + percent perthousand
less + less guillemotleft
greater + greater guillemotright

Pierwsze trzy z tych ligatur wydaj� si� nieuzasadnione, dwie pozosta�e s� nieadekwatne, ze wzgl�du na zachowanie w uk�adzie QX konwencji font�w CM umieszczaj�cej hiszpa�skie znaki interpunkcyjne w pozycji znaku less (znak ,,<'') oraz greater (znak ,,>'').

W definicji uk�adu QX zestaw par kernowych nie jest w �aden spos�b specyfikowany, w szczeg�lno�ci dopuszczalne s� -- nieobecne w uk�adzie EC -- kerny mi�dzy cyframi.

Zmiany wprowadzone do uk�adu QX wer. 0.05 (14.01.2002)

Po d�ugiej debacie znaki [tT]cedilla (niewykorzystywane w �adnym z europejskich j�zyk�w, ale z niezrozumia�ych przyczyn obecne w wielu fontach) zosta�y w wersji 0.04 uk�adu QX zast�pione przez rumu�skie znaki [tT]commaaccent. Konsekwentnie tureckie znaki [sS]cedilla zosta�y zast�pione przez rumu�skie znaki [sS]commaaccent, aczkolwiek zalecane jest pozostawienie definicji obwiedni znak�w [sS]cedilla w foncie. Wprowadzenie waluty euro spowodowa�o dodanie symbolu Euro do uk�adu QX (wer. 0.05). Symbolowi temu zosta� przypisany kod 128 zar�wno w kodowaniu dla systemu TeX, jak i Windows, co jest zgodne z zaleceniem Microsoftu (patrz faq12.htm):

The symbol has been added to the following codepages at position '0x80'; 1250 Eastern European, 1252 Western, 1253 Greek, 1254 Turkish, 1257 Baltic, 1255 Hebrew, 1256 Arabic, 1258 Vietnamese, 874 Thai. In 1251 Cyrillic the symbol will be added at position '0x88'.

Niestety skutkiem tego rozszerzenia by�a konieczno�� wprowadzenia dalszych zmian w kodowaniu QX dla systemu Windows: litewskie znaki [Ii]ogonek otrzyma�y kody 222 i 254 (uprzednio 128 i 144); znaki [Tt]horn, maj�ce przedtem te kody, zosta�y usuni�te. Zalecane jest pozostawienie definicji kszta�t�w znak�w [Tt]horn w foncie. Przy okazji zmian wprowadzona zosta�a nazwa f_k dla (niestandardowej) ligatury ,,fk'', zgodnie z zaleceniem Adobe: unicodegn.html

Zmiany wprowadzone do uk�adu QX wer. 0.06 (24.08.2003)

Dodano ligatury ij, IJ (dost�pne tylko w TeX-owym kodowaniu) oraz znak interpunkcyjny threequartersemdash.

Tabele uk�adu QX

Na dw�ch kolejnych stronach zamieszczamy por�wnanie aktualnego uk�adu QX (wer. 0.06) z innymi szeroko u�ywanymi uk�adami znak�w. Tabela 1 przedstawia por�wnanie TeX-owych uk�ad�w -- uk�adu PL (przypomnijmy, �e znaki o kodach mniejszych-r�wnych od 127 s� identyczne w uk�adzie PL i w uk�adzie CM), uk�adu EC oraz uk�adu QX. Z kolei tabela 2 przedstawia por�wnanie uk�adu QX przeznaczonego do zastosowa� windowsowych z uk�adem CP 1250 oraz macintoshowym PLEURO. Je�eli chodzi o uk�ad QX to -- rzecz jasna -- w obu tabelach wyst�puje ten sam zestaw znak�w, r�nice dotycz� jedynie kod�w przypisanych poszczeg�lnym znakom.

Tekst jest zaktualizowan� wersj� artyku�u z Biuletynu GUST, nr 9/1997, s. 28--30.
Ostatnia modyfikacja 13.09.2004 (StaW)


Powr�t