Bug: \adjustspacing=1 does not disable expansion
Dear devs, The \adjustspacing register is described in the LuaTeX manual as follows: 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, setting \adjustspacing=1 will only disable shrink but not stretch. Please find a minimal example example, where I have used exaggerated values for shrink and stretch to emphasize the issue. It can be reproduced with both mtxrun --script plain and luatex with luaotfload.sty. I have already checked linebreak.c but add_to_widths looks innocuous and properly checks the adjust_spacing parameter. Cheers, Henri --- %\input luaotfload.sty \directlua{ fonts.expansions.setups.default.stretch = 2000 fonts.expansions.setups.default.shrink = 2000 } \adjustspacing=1 \font\1="file:lmroman10-regular.otf:expansion=default" \hsize=5em \1 \input lorem \bye
Possible patch (can be directly used with `git apply') diff --git a/source/texk/web2c/luatexdir/tex/postlinebreak.c b/source/texk/web2c/luatexdir/tex/postlinebreak.c index cbc77e556..9cd76b5fa 100644 --- a/source/texk/web2c/luatexdir/tex/postlinebreak.c +++ b/source/texk/web2c/luatexdir/tex/postlinebreak.c @@ -440,7 +440,7 @@ void ext_post_line_break(int paragraph_dir, } adjust_tail = adjust_head; pre_adjust_tail = pre_adjust_head; - if (adjust_spacing > 0) { + if (adjust_spacing > 1) { just_box = hpack(q, cur_width, cal_expand_ratio, paragraph_dir); } else { just_box = hpack(q, cur_width, exactly, paragraph_dir); On 12/5/19 10:04 AM, Henri Menke wrote:
Dear devs,
The \adjustspacing register is described in the LuaTeX manual as follows:
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, setting \adjustspacing=1 will only disable shrink but not stretch. Please find a minimal example example, where I have used exaggerated values for shrink and stretch to emphasize the issue. It can be reproduced with both mtxrun --script plain and luatex with luaotfload.sty.
I have already checked linebreak.c but add_to_widths looks innocuous and properly checks the adjust_spacing parameter.
Cheers, Henri
---
%\input luaotfload.sty \directlua{ fonts.expansions.setups.default.stretch = 2000 fonts.expansions.setups.default.shrink = 2000 } \adjustspacing=1 \font\1="file:lmroman10-regular.otf:expansion=default" \hsize=5em \1 \input lorem \bye
It actually seems as if the documentation of LuaTeX is wrong here, because the behaviour of `\adjustspacing=1' is compatible with `\pdfadjustspacing=1` in pdfTeX. From the pdfTeX manual: When \pdfadjustspacing is set to 1, font expansion is applied after TeX’s normal paragraph breaking routines have broken the paragraph into lines. In this case, line breaks are identical to standard TeX behavior. So maybe just copy this paragraph to the LuaTeX manual. On 12/5/19 1:34 PM, Henri Menke wrote:
Possible patch (can be directly used with `git apply')
diff --git a/source/texk/web2c/luatexdir/tex/postlinebreak.c b/source/texk/web2c/luatexdir/tex/postlinebreak.c index cbc77e556..9cd76b5fa 100644 --- a/source/texk/web2c/luatexdir/tex/postlinebreak.c +++ b/source/texk/web2c/luatexdir/tex/postlinebreak.c @@ -440,7 +440,7 @@ void ext_post_line_break(int paragraph_dir, } adjust_tail = adjust_head; pre_adjust_tail = pre_adjust_head; - if (adjust_spacing > 0) { + if (adjust_spacing > 1) { just_box = hpack(q, cur_width, cal_expand_ratio, paragraph_dir); } else { just_box = hpack(q, cur_width, exactly, paragraph_dir);
On 12/5/19 10:04 AM, Henri Menke wrote:
Dear devs,
The \adjustspacing register is described in the LuaTeX manual as follows:
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, setting \adjustspacing=1 will only disable shrink but not stretch. Please find a minimal example example, where I have used exaggerated values for shrink and stretch to emphasize the issue. It can be reproduced with both mtxrun --script plain and luatex with luaotfload.sty.
I have already checked linebreak.c but add_to_widths looks innocuous and properly checks the adjust_spacing parameter.
Cheers, Henri
---
%\input luaotfload.sty \directlua{ fonts.expansions.setups.default.stretch = 2000 fonts.expansions.setups.default.shrink = 2000 } \adjustspacing=1 \font\1="file:lmroman10-regular.otf:expansion=default" \hsize=5em \1 \input lorem \bye
On 12/5/2019 1:39 AM, Henri Menke wrote:
It actually seems as if the documentation of LuaTeX is wrong here, because the behaviour of `\adjustspacing=1' is compatible with `\pdfadjustspacing=1` in pdfTeX. From the pdfTeX manual:
When \pdfadjustspacing is set to 1, font expansion is applied after TeX’s normal paragraph breaking routines have broken the paragraph into lines. In this case, line breaks are identical to standard TeX behavior.
So maybe just copy this paragraph to the LuaTeX manual. ok.
btw, Level 1 is rather useless and was more a variant to the at that time bitmap generated instances (which was the original idea: generate new fonts with mfm but that mode was dropped). Context doesn't support level 1 at all. ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
participants (2)
-
Hans Hagen
-
Henri Menke