Cesky tisk - uvaha

Petr Olsak olsak na math.feld.cvut.cz
Úterý Únor 22 15:59:44 CET 2000



On 26 Jan 2000 pali na tmapy.cz wrote:

> Dobry den
> 
> Chtěl bych se zeptat na názor, případně rozvířit diskusi, která by nastínila,
> jak dlouholetý problém řešit. 
> 
> Dle mého názoru je problém s českým tiskem (iso-8859-2 znaků) jedním z
> nejpalčivějších současných problémů, z pohledu českého uživatele.
> I západní autoři si již zvykají psát programy tak, že vstup a zobrazování
> našich znaků je bez problémů (zde míním především projekty v s využitím
> knihoven projektu gnome nebo kde). Případně stačí doplnit jeden řádek kodu (BTW
> o s čárkou v programech s knihovnou xforms také nenapíšu bez hacků s Xwin, ale
> to mi nevadí, tato knihovna se stejně nějak dynamicky nevyvíjí) viz dnešní SW
> sklizen na www.root.cz.
> 
> Ale tisk to je něco jiného. Programy, které něco česky vytiskou (ted myslím
> hlavně tisk v grafice, vim mi samozřejmě tiskne skvěle :-) bez dodatečných
> úprav lze spočítat na prstech jedné ruky (ted mě ani žádný nenapadá).
> Možná mi nyní někdo vysvětlíte, že mám špatné informace a že jich jsou mraky.
> Rád bych to slyšel. 
> ... 
> 
> Zajímalo by mě, jestli někdo z konference je schopen říct, v čem je vlastně
> problém při tisku postscriptu. Ogonkify pomůže při tisku z netscapu, ale
> nezabírá na gnumeric a ostatní. 

Vážený kolego a přátelé z linux na linux,

myslím si, že vím, kde je problém, ale nevím, jak jej efektivně řešit.
Pokusím se problém stručně popsat.

Grafický tisk v UNIXu se děje výhradně přes PostScript a věc stojí a padá
na fontech v PostScriptu. Základní sadu 35 fontů najdete v každém PSovém
RIPu (tj. uvnitř tiskárny, osvitky, součást Ghostscriptu atd.)  Používá-li
aplikace tyto fonty, nemusí je downloadovat do PSového výstupu, ale nechá
na ně jenom odkazy. Všechny ostatní fonty musí aplikace downloadovat. 

Downloadování se ale dovoluje často jen pro lokální účely. Dokument 
s fonty většinou nesmíte downloadovat pro případ posílání někomu dalšímu,
protože tím porušíte licenci k fontům (ten někdo další ty fonty, nebo jen
některé znaky, může z toho PSového kódu vykostit). Většina komečních
licencí k fontům vám proto downloadování do PSových výstupů určených pro
další uživatele nepovolí a volné licence ke kvalitním PostScriptovým
fontům umějícím češtinu myslím neexistují. 

Protože velmi záhy po tom, co se povede zprovoznit PSový tisk v češtině 
přijde na řadu otázka portability a možnosti výměny PSových kódů,
docházíme k jednoduchému závěru, že se musíme spolehnout na základní sadu
35 fontů, kterou umí každý PSový RIP.

Základní sada 35 fontů obsahuje ale fonty, které sice mají všechny akcenty
pro náš jazyk jako samostatné znaky, ale třeba písmeno ř byste tam hledali
marně. Font se navíc inicializuje v AdobeStandard Encoding. Pro aplikaci
ale není problém do PSového kódu přidat požadavek na pře-iniciování do
ISO-8859-1 Encoding. Všechny znaky z tohoto kódování totiž v té základní
sadě fontů obsaženy _jsou_. Proto se programátorům ze západní Evropy jeví,
že aplikaci stačí dát do PSového kódu tento pokyn a je po problémech. Ano,
oni nemají další problémy, ale my ano. 

Pokud by měla aplikace využít základní sadu fontů, a přitom psát česky,
pak musí do PSového kódu sdělit míto prostého "(ř) show" poněkud
složitější konstrukci: "zapamatuj si aktuální bod sazby, vytiskni vhodně
posunutý akcent háčku, vrať se zpět a udělej konečně (r) show". Takto to
například dělá TeX prostřednictvím svého vlastního konceptu virtuálních
fontů. (Poznámka na okraj: Knuthův nápad konceptu virtuálních fontů
mi připadá geniální, protože elegntně řeší tento poroblém) Takto
vygenerovaný PSový kód sice neobsahuje downloadované fonty, a přitom je
naprosto transparentní. 

Druhou metodou je momocí PSových definic na začátku PSového kódu definovat
nové fonty, které jsou tzv. kompozitní a definují jednotlivé své znaky
jako složeniny znaků ze zkákladních 35 fontů. Tyto definice pak stačí
vložit na začátek PSového kódu aplikace. O to se snaží, pokud se
nemýlím, ogonkify, ale zřejmě to není ještě zcela dokonalé (nevím, sám
jsem to nezkoumal, tisknu výhradně z TeXu).

Za správnou cestu vidím naučit _všechny_ aplikace vytvářet PSové kódy s
pokynem k sestavení akcentu a písmene zvlášť, pokud takový znak ve fontu
neexistuje jako celek. Tak to dělá například TeX. Zřejmě by to šlo
vytvořením nějaké standardní knihovny používané programátory pro tiskové
rutiny (každá aplikace přece musí generovat PSový kód, takže bych na to
očekával nějaké knihovny).

Petr Olšák



Další informace o konferenci Linux