[cstex] ConTeXt, čeština a kerningové páry

Petr Olsak petr at olsak.net
Thu Dec 12 08:23:58 CET 2013


Dobrý den,

ukazuje se, že to je chyba LuaTeXu, respektive luakódu na OpenType fonty. 
Minimální příklad, který nepoužívá obludku typu ConTeXt, ale přímo LuaTeX,
může vypadat takto:

--------------------------------

\ifx\directlua\undefined \else \input luafonts \fi % otfload code 
\font\f=[lmroman10-regular] \f

\hyphenation{vl-ta-va}

\setbox0=\hbox{VLTAVA}
\message{:::::: \the\wd0}
\tracingonline=1 \showboxbreadth=25 \nonstopmode \showbox0

A AVA VLTAVA.

\end

--------------------------------

Když to zpracujete pomocí ``luatex pokus'', projeví se chyba.
Když to zpracujete pomocí ``xetex pokus'', vše je v pořádku.

Když zakonimentujete řádek \font\f..., použije se klasický 7bitový Knuthův 
font a chyba se neprojeví. Navíc v té chvíli v logu a na terinálu vidíme, 
jak to autoři LuaTeXu zamýšleli: v příslušných místech je
``\discretionary replacing kern'', tedy určitá další složitost navíc, na 
kterou asi zapomněli navázat tvůrci OpenType loaderu. Když 
zavedete OpenType font (jakýkoli), místo ``\discretionary replacing kern''
tam zůstává jen ``\discretionary''.

Když zakonimentujete řádek \hyphenation a necháte proběhnout řádek \font, 
zjistíte, že kerny i v OpenType fontu jsou, jen jsou při přítomnosti 
\discretionary zničeny.

LuaTeX je v hluboké beta verzi, nelze se ničemu divit. Upozornil jsem 
tvůrce luTeXu už na mnohé chyby, většina z nich přetrvává stále. Včetně 
například úplného kolapsu luaTeXu na některých strojích s podivnými fonty, 
které uživatel vůbec nechce použít. Nebo chyba, kdy po \halign nenastaví 
\prevdepth, je reprtována už několik let a bez toho, aby ji někdo opravil.

Chete-li si zachovat duševní zdraví, používejte jen léty prověřený TeX, 
tj. pdfTeX. Chcete-li se stát pokusným králíkem, zkuste luaTeX a 
reportujte, reportujte atd.

Zdravím

Petr Olšák



On Wed, 11 Dec 2013, Martin Rehula wrote:

> Dobrý den,
>
> Používám ConTeXt (aktuální) a narazil jsem na zvláštní věc. Když například přeložím tohle:
>
> \enableregime[utf]
> \mainlanguage[cz]
> \starttext
> AV ZASTAVÍ DOPRAVY % Správný kerning
>
> LAVABIT ZPRAVODAJSTVÍ  PŘEDSTAVOVAL NAVŠTÍVILI % tohle je špatně
> \stoptext
>
> Na výstupu na prvním řádku bude vše jak má být. Na druhém řádku se ale neaplikují kerningové páry které jsou uložené ve fontu a mezi dvojicí písmen "A V" bude ošklivá mezera.
>
> Problém je se všemi možnými fonty, ale pouze v češtině. Řekl bych, že důvodem je v dělení slov - tohle jsem našel v logu: ... LA-VA-BIT ZPRA-VO-DAJ-STVÍ ... ZA-STAVÍ ...
>
> Mám něco blbě zkompilované, je to obecná chyba, nebo featura? Existuje na to nějaký workaround?
>
>
> Děkuji předem za jakoukoliv radu
> Martin Řehula
>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> https://lists.felk.cvut.cz/mailman/listinfo/cstex
>


More information about the csTeX mailing list