\setextrafontkerns can cause an infinite loop
Sometimes using \setextrafontkerns can cause an infinite loop. Example 1: \setextrafontkerns[max] \starttext l\it l \stoptext Example 2: \setupbodyfont[libertinus] \setextrafontkerns[max] \starttext x\ss x \stoptext Both of these examples cause ConTeXt to get stuck until it runs out of memory. This happens in both MkIV and MkXL. This patch seems to fix the issue (although it may break other things...): --- texmf-context/tex/context/base/mkiv/typo-fkr.old 2022-06-30 03:05:17.702804200 -0600 +++ texmf-context/tex/context/base/mkiv/typo-fkr.lua 2022-06-30 03:05:22.286858200 -0600 @@ -57,6 +57,7 @@ end if kern ~= 0 then head, current = insertbefore(head,current,new_kern(kern)) + current = getnext(current) end lastdata = data else @@ -69,6 +70,7 @@ local kern = getkernpair(lastdata,lastchar,char) if kern ~= 0 then head, current = insertbefore(head,current,new_kern(kern)) + current = getnext(current) end end lastchar = char -- Max
On 6/30/2022 11:16 AM, Max Chernoff via ntg-context wrote:
Sometimes using \setextrafontkerns can cause an infinite loop.
Example 1:
\setextrafontkerns[max]
\starttext l\it l \stoptext
Example 2:
\setupbodyfont[libertinus]
\setextrafontkerns[max]
\starttext x\ss x \stoptext
Both of these examples cause ConTeXt to get stuck until it runs out of memory. This happens in both MkIV and MkXL.
This patch seems to fix the issue (although it may break other things...):
--- texmf-context/tex/context/base/mkiv/typo-fkr.old 2022-06-30 03:05:17.702804200 -0600 +++ texmf-context/tex/context/base/mkiv/typo-fkr.lua 2022-06-30 03:05:22.286858200 -0600 @@ -57,6 +57,7 @@ end if kern ~= 0 then head, current = insertbefore(head,current,new_kern(kern)) + current = getnext(current) end lastdata = data else @@ -69,6 +70,7 @@ local kern = getkernpair(lastdata,lastchar,char) if kern ~= 0 then head, current = insertbefore(head,current,new_kern(kern)) + current = getnext(current) end end lastchar = char just
head = insertbefore(head,current,new_kern(kern)) will do ----------------------------------------------------------------- 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
-
Max Chernoff