Some legacy fonts cause "invalid list tail, probably missing glue"
There is an issue with lualatex which comes about when using a document such as this (based on a discussion here https://tex.stackexchange.com/questions/525898/combining-french-and-greek-ba...). Try running lualatex on the following document, and an error will be returned. This seems to apply for all fonts whose packages were generated by autoinst (step is just an example). \documentclass[12pt]{article} \usepackage[utf8]{luainputenc}\usepackage[LGR,T1]{fontenc}\input{lgrenc.dfu} \usepackage{step} \usepackage[greek.ancient,main=french]{babel} \title{Ça marche?} %\date{} \author{me} \begin{document} \maketitle un, deux, trois \foreignlanguage{greek}{ἀγαγεῖν} \end{document} According to Marcel Krüger, this is related to an issue which was reported over a year ago: https://mailman.ntg.nl/pipermail/dev-luatex/2018-November/006138.html.
On Tue, Feb 18, 2020 at 01:55:59AM -0500, Daniel Benjamin Miller wrote:
There is an issue with lualatex which comes about when using a document such as this (based on a discussion here https://tex.stackexchange.com/questions/525898/combining-french-and-greek-ba...).
Try running lualatex on the following document, and an error will be returned. This seems to apply for all fonts whose packages were generated by autoinst (step is just an example).
\documentclass[12pt]{article}
\usepackage[utf8]{luainputenc}\usepackage[LGR,T1]{fontenc}\input{lgrenc.dfu}
\usepackage{step} \usepackage[greek.ancient,main=french]{babel}
\title{Ça marche?} %\date{} \author{me}
\begin{document} \maketitle un, deux, trois \foreignlanguage{greek}{ἀγαγεῖν} \end{document}
According to Marcel Krüger, this is related to an issue which was reported over a year ago: https://mailman.ntg.nl/pipermail/dev-luatex/2018-November/006138.html.
A plain LuaTeX example for this would be \directlua{ callback.register('kerning', node.kerning) font.current(font.define { name = "dummy", type = "virtual", characters = { { width = 655360, height = 655360, depth = 655360, commands = {}, }, right_boundary = { width = 655360, height = 655360, depth = 655360, }, }, }) } \char1 \bye The issue appears for fonts with a right boundary char if they appear at the end of a paragraph and the kerning callback is overwritten. Then the right boundary is passed as tail to the callback which will then remove the boundary from the node list. As discussed in the earlier thread, the callback currently can't pass the new tail to LuaTeX (and LuaTeX does not recalculate the tail in contrast to the documentation) so LuaTeX adds the end of paragraph glue etc. after the no longer existing old tail, leading to the error because the new list does not end with these required nodes. Best regards, Marcel
On Tue, Feb 18, 2020 at 12:54 PM Marcel Fabian Krüger
On Tue, Feb 18, 2020 at 01:55:59AM -0500, Daniel Benjamin Miller wrote:
There is an issue with lualatex which comes about when using a document such as this (based on a discussion here https://tex.stackexchange.com/questions/525898/combining-french-and-greek-ba... ).
Try running lualatex on the following document, and an error will be returned. This seems to apply for all fonts whose packages were generated by autoinst (step is just an example).
\documentclass[12pt]{article}
\usepackage[utf8]{luainputenc}\usepackage[LGR,T1]{fontenc}\input{lgrenc.dfu}
\usepackage{step} \usepackage[greek.ancient,main=french]{babel}
\title{Ça marche?} %\date{} \author{me}
\begin{document} \maketitle un, deux, trois
\foreignlanguage{greek}{ἀγαγεῖν}
\end{document}
According to Marcel Krüger, this is related to an issue which was reported over a year ago: https://mailman.ntg.nl/pipermail/dev-luatex/2018-November/006138.html.
A plain LuaTeX example for this would be
\directlua{ callback.register('kerning', node.kerning)
font.current(font.define { name = "dummy", type = "virtual", characters = { { width = 655360, height = 655360, depth = 655360, commands = {}, }, right_boundary = { width = 655360, height = 655360, depth = 655360, }, }, }) } \char1 \bye
The issue appears for fonts with a right boundary char if they appear at the end of a paragraph and the kerning callback is overwritten. Then the right boundary is passed as tail to the callback which will then remove the boundary from the node list. As discussed in the earlier thread, the callback currently can't pass the new tail to LuaTeX (and LuaTeX does not recalculate the tail in contrast to the documentation) so LuaTeX adds the end of paragraph glue etc. after the no longer existing old tail, leading to the error because the new list does not end with these required nodes.
ok, thank you. I will see it together with the old thread. -- luigi
On Tue, Feb 18, 2020 at 12:54 PM Marcel Fabian Krüger
A plain LuaTeX example for this would be
\directlua{ callback.register('kerning', node.kerning)
font.current(font.define { name = "dummy", type = "virtual", characters = { { width = 655360, height = 655360, depth = 655360, commands = {}, }, right_boundary = { width = 655360, height = 655360, depth = 655360, }, }, }) } \char1 \bye
this fails with (see the transcript file for additional information) ! error: (file dummy) (type 3): font dummy at 72 not found -- luigi
Presumably this is an issue with Marcel's dummy example. Now, what about the original example I presented? Yes, it is a lualatex example, but maybe dvilualatex will work with it now. I can't built the experimental branch tonight but maybe you can test it.
On Thu, Feb 20, 2020 at 7:31 AM Daniel Benjamin Miller < dbmiller@dbmiller.org> wrote:
Presumably this is an issue with Marcel's dummy example. Now, what about the original example I presented? Yes, it is a lualatex example, but maybe dvilualatex will work with it now. I can't built the experimental branch tonight but maybe you can test it.
both dvi/pdf seems to be ok. I will push my local copy this week end. -- luigi
On Tue, Feb 18, 2020 at 11:44:37PM +0100, luigi scarso wrote:
On Tue, Feb 18, 2020 at 12:54 PM Marcel Fabian Krüger
wrote: A plain LuaTeX example for this would be
\directlua{ callback.register('kerning', node.kerning)
font.current(font.define { name = "dummy", type = "virtual", characters = { { width = 655360, height = 655360, depth = 655360, commands = {}, }, right_boundary = { width = 655360, height = 655360, depth = 655360, }, }, }) } \char1 \bye
this fails with
(see the transcript file for additional information) ! error: (file dummy) (type 3): font dummy at 72 not found
-- luigi
Right, I forgot that LuaTeX is not particularly happy about empty commandds tables. But after replacing commands = {} by commands = {{"right", 0}} and adding some f.fonts table the not found error disappears. But I am surprised that it even got that far for you: On my system (vanilla TeXLive 2019 on (Arch) Linux, both with the regular LuaTeX 1.10 and the current head of "experimental") the actual issue "invalid list tail, probably missing glue" appears long before LuaTeX reaches the font embedding stage. Best regards, Marcel
On Wed, Feb 19, 2020 at 9:55 AM Marcel Fabian Krüger
On Tue, Feb 18, 2020 at 11:44:37PM +0100, luigi scarso wrote:
On Tue, Feb 18, 2020 at 12:54 PM Marcel Fabian Krüger
wrote: A plain LuaTeX example for this would be
\directlua{ callback.register('kerning', node.kerning)
font.current(font.define { name = "dummy", type = "virtual", characters = { { width = 655360, height = 655360, depth = 655360, commands = {}, }, right_boundary = { width = 655360, height = 655360, depth = 655360, }, }, }) } \char1 \bye
this fails with
(see the transcript file for additional information) ! error: (file dummy) (type 3): font dummy at 72 not found
-- luigi
Right, I forgot that LuaTeX is not particularly happy about empty commandds tables. But after replacing
commands = {}
by
commands = {{"right", 0}}
and adding some f.fonts table the not found error disappears. But I am surprised that it even got that far for you: On my system (vanilla TeXLive 2019 on (Arch) Linux, both with the regular LuaTeX 1.10 and the current head of "experimental") the actual issue "invalid list tail, probably missing glue" appears long before LuaTeX reaches the font embedding stage.
not surprise, could be that I am testing a local version not yet pushed. For this reason is better to have a minimal and complete example, otherwise we waste time . With my local version \directlua{ callback.register('kerning', node.kerning) font.current(font.define{ name = "dummy", type = "virtual", characters = { { width = 655360, height = 655360, depth = 655360, commands = {{"right", 0}}, }, right_boundary = { width = 655360, height = 655360, depth = 655360, }, }, }) } \char1 \bye $ luatex --fmt=luatex-plain test-tail.tex doesn't complain . -- luigi
participants (3)
-
Daniel Benjamin Miller
-
luigi scarso
-
Marcel Fabian Krüger