[NTG-context] \setextrafontkerns can cause an infinite loop

Max Chernoff mseven at telus.net
Thu Jun 30 11:16:38 CEST 2022


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




More information about the ntg-context mailing list