Důležité upozornění!

Policie České republiky a šéfcensor Ústavu pro studium totalitních režimů Jaroslav Čvančara varují: citovat jakékoli texty z tohoto blogu způsobuje vážné risiko trestního stíhání! Četba na vlastní nebezpečí!

V článku o magickém formuláři, který se v každém prohlížeči zobrazí zcela jinak, jsem se dopustil jedné nepřesnosti, když jsem autora tohoto svěžího softwarového dílka obvinil z neodůvodněného používání kodu CP1250.

Protože shodou okolností právě něco sám programuji v ReportLabu, přišel jsem na to, jak se nesprávně kodované znaky s diakritikou do výstupu dostaly: Formát PDF, dnes již informatický stařík, předpokládá, že prohlížeč zná 14 standardních fontů a umí tyto fonty správně vyrenderovat, aniž by musely být v PDF souboru vnořeny (embedded); v době, kdy byl tento formát mlád, na počátku 90. let, to mělo smysl, neboť bylo třeba šetřit každým kilobytem, dnes se všechny použité fonty vnořují pravidelně a u formátu PDF/A je to dokonce povinné.

Potíž je v tom, že tyto povinné fonty mají pouze 256 glyfů, a to v kodu Latin-1 (West European Character Set). Jestliže tedy někdo použije jeden z těchto standardních fontů pro text obsahující české znaky, aniž by font do PDF souboru dodal, výsledkem bude nesprávná representace dat.

V daném případě autor předepsal pro své texty font Arial (jenž mezi standardní čtrnáctku nepatří). Adobe Acrobat ve Windows tento font našel a použil (což nelze hodnotit z hlediska kompatibility jako právě košer řešení, ale je v souladu s filosofií Windows zatěžovat uživatele systémovými problémy co nejméně), Adobe Reader v Linuxu ho nahradil tečkami a prohlížeč Evince vyřešil situaci tak, že místo Arialu použil standardní typeface Helvetica, což ale způsobilo, že text v UTF-8 renderoval chybně, pomocí 256 znaků z Latin-1.

Tolik tedy na upřesnění.

Komentovat články mohou pouze registrovaní uživatelé; prosím, zaregistrujte se (v pravém sloupci dole)