[Dev-luatex] letterspacing and (no) ligatures

Paul Isambert zappathustra at free.fr
Wed Sep 7 08:15:24 CEST 2011

Le 07/09/2011 05:03, Robert a écrit :
> On 06.09.11 10:31, Hans Hagen wrote:
>> I cannot test it here but you should use mode=base which will create a
>> static font that is handled by tex itself as the tex machinery will copy
>> the font data when you do that kind of letterspacing. The engine is
>> ignorant of anything related to the font at the lua end so one might
>> loose some very specific features provided outside the engine but that's
>> no big deal as letterspacing spoils the game anyway. Smallcaps and
>> oldstyles normally are no problem.
> Thanks, that works. Would you mind elaborating on the difference 
> between base and node mode a bit, or could you point me to the 
> relevant documentation? I'm unable to find anything more specific than 
> that base mode does not support Opentype "fully" (luaotfload). But 
> what exactly is not supported, what would you lose by switching from 
> node to base mode?

If I'm not mistaken, "base mode" implements OT features like traditional 
TeX fonts, and thus only those features supported by TeX can be used; 
for instance, simple ligatures or kerning is easily done this way, 
because those already exist for TFM fonts.

But contextual features, for instance, or even simple ligatures with 
more than two input glyphs, aren't supported this way, because TeX knows 
nothing about them; there is nothing devoted to them in the way fonts 
are organised. So you use "node mode", which boils down to inspecting 
lists of nodes before the paragraph is constructed (in one of the 
callbacks before linebreak_filter) and changing what must be changed; of 
course the traditional features can be implemented this way too.

As for the documentation, I don't think there is any!


More information about the dev-luatex mailing list