[luatex] font expansion

Robert w.m.l at gmx.net
Thu Jul 6 17:46:14 CEST 2017

On 06.07.17 14:02, Hans Hagen wrote:
> On 7/6/2017 1:37 AM, Robert wrote:
>> Firstly, the manual says:
>> | When \adjustspacing has value 2, hz optimization will be applied to
>> | glyphs and kerns. When the value is 3, only glyphs will be treated.
>> | A value smaller than 2 disables this feature.
>> However, what I see is:
>>   * a difference between \adjustspacing=0 and \adjustspacing=1,
>>   * a difference between \adjustspacing=1 and \adjustspacing=2,
>>   * no difference between \adjustspacing=2 and \adjustspacing=3
>> (regardless of whether the font is expanded with \expandglyphsinfont
>> or via the luaotfload interface).
> kerns are normally quite small so you will not really notice it and it
> being a backend related property the log will not report expansion factors

I'm aware that all things microtype are "quite small", so I don't trust 
my eyes but look into the log file. And there I find for example a kern 
of -0.56 between "v" and "a" regardless of whether \adjustspacing is set 
to 2 or 3.
Or are you suggesting that the reported kern of -0.56 isn't actually a 
kern of -0.56? Still, even with ridiculously large expansion limits (500 
500), I don't see any difference whatsoever. And the uncompressed pdf is 
also 100% the same (which would reveal a difference of 0.01bp).

> in your font definition below you don't enable kerns anyway (unless
> luaotfload does that automatically for you)

Yes, luaotfload enables kerns by default.

>> So it seems that the former "compatibility" level 1 (same line breaks
>> as without expansion), which according to the manual should no longer
>> exist, still does; while the new level 3 does not (all the kerns are
>> the same as for level 2). Could somebody explain this?

> 0: nothing
> 1: glyphs and kerns  (only stretch/shrink)
> 2: glyphs and kerns  (also in par builder)
> 3: glyphs            (also in par builder)

So the compatibility level 1 still exists. This is not mentioned in the 
manual. Level 3 continues to escape me.

>> Secondly, I wonder about the status of the "autoexpand" qualifier to
>> \expandglyphsinfont. AFAICT it is silently ignored, and fonts are
>> always autoexpanded. Is this correct? Or would it still be possible to
>> use pre-expanded font instances (say, from a MM font)?
> it all depends on what magic you rmacro package does ... the \expand..
> command works when no expansion has been set yet, otherwise you need to
> pass values (and it depends in your case what 'default' does)
>  When I test the adjustments here it looks ok (it works).

Sorry, I don't understand what you're saying. It's not about my macro 
package or any magic. What I meant is that in pdftex, there is a 
difference between

| \pdffontexpand\font 20 20 5 autoexpand


| \pdffontexpand\font 20 20 5

The latter requires pre-generated expanded font instances, which are 
then used and embedded in the pdf.
With luatex, however, there is no difference between

| \expandglyphsinfont 20 20 5 autoexpand


| \expandglyphsinfont 20 20 5

Existing expanded font instances are ignored, and only the base font is 
embedded in the pdf. Expansion seems to be calculated mechanically and 
linearly instead of taking into account the width axis of a Multiple 
Master font.


More information about the luatex mailing list