ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* \setextrafontkerns can cause an infinite loop
@ 2022-06-30  9:16 Max Chernoff via ntg-context
  2022-06-30 18:33 ` Hans Hagen via ntg-context
  0 siblings, 1 reply; 2+ messages in thread
From: Max Chernoff via ntg-context @ 2022-06-30  9:16 UTC (permalink / raw)
  To: mailing list for ConTeXt users; +Cc: Max Chernoff

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


___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: \setextrafontkerns can cause an infinite loop
  2022-06-30  9:16 \setextrafontkerns can cause an infinite loop Max Chernoff via ntg-context
@ 2022-06-30 18:33 ` Hans Hagen via ntg-context
  0 siblings, 0 replies; 2+ messages in thread
From: Hans Hagen via ntg-context @ 2022-06-30 18:33 UTC (permalink / raw)
  To: Max Chernoff via ntg-context; +Cc: Hans Hagen

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
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-06-30 18:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-30  9:16 \setextrafontkerns can cause an infinite loop Max Chernoff via ntg-context
2022-06-30 18:33 ` Hans Hagen via ntg-context

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).