diff --git a/source/texk/web2c/ptexdir/ptex-base.ch b/source/texk/web2c/ptexdir/ptex-base.ch index eda47cae4..5ec3347a4 100644 --- a/source/texk/web2c/ptexdir/ptex-base.ch +++ b/source/texk/web2c/ptexdir/ptex-base.ch @@ -2705,10 +2705,15 @@ in the |glue_kern| array. And a \.{JFM} does not use |tag=2| and |tag=3|. @x [30.557] l.11413 - pTeX: glue_kern_start @d lig_kern_start(#)==lig_kern_base[#]+rem_byte {beginning of lig/kern program} +@d lig_kern_restart_end(#)==256*op_byte(#)+rem_byte(#)+32768-kern_base_offset +@d lig_kern_restart(#)==lig_kern_base[#]+lig_kern_restart_end @y @d lig_kern_start(#)==lig_kern_base[#]+rem_byte {beginning of lig/kern program} -@d glue_kern_start(#)==lig_kern_base[#]+rem_byte - {beginning of glue/kern program} +@d lig_kern_restart_end(#)==256*op_byte(#)+rem_byte(#)+32768-kern_base_offset +@d lig_kern_restart(#)==lig_kern_base[#]+lig_kern_restart_end +@d glue_kern_start(#)==lig_kern_base[#]+rem_byte {beginning of glue/kern program} +@d glue_kern_restart_end(#)==256*op_byte(#)+rem_byte(#)+32768-kern_base_offset +@d glue_kern_restart(#)==lig_kern_base[#]+glue_kern_restart_end @z @x [30.560] l.11457 - pTeX: jfm_flag, jfm_id, nt, cx @@ -3926,6 +3931,10 @@ if (math_type(subscr(q))=empty)and(math_type(supscr(q))=empty)and@| {|cur_c|:=qi(|get_jfm_pos|(|math_kcode|(p), |fam_fnt|(fam(nucleus(p))+|cur_size|)));} cur_i:=font_info[a].qqqq; + if skip_byte(cur_i)>stop_flag then {huge glue/kern table rearranged} + begin a:=glue_kern_restart(cur_f)(cur_i); + cur_i:=font_info[a].qqqq; + end; loop@+ begin if next_char(cur_i)=cur_c then if op_byte(cur_i)=stop_flag then return; - a:=a+qo(skip_byte(cur_i))+1; + a:=a+qo(skip_byte(cur_i))+1; {SKIP property} cur_i:=font_info[a].qqqq; end; end; @@ -7215,6 +7224,10 @@ if inhibit_glue_flag<>true then begin if char_tag(main_i)=gk_tag then begin main_k:=glue_kern_start(main_f)(main_i); main_j:=font_info[main_k].qqqq; + if skip_byte(main_j)>stop_flag then {huge glue/kern table rearranged} + begin main_k:=lig_kern_restart(main_f)(main_j); + main_j:=font_info[main_k].qqqq; + end; loop@+begin if next_char(main_j)=cur_l then begin if op_byte(main_j)true then end; end; if skip_byte(main_j)>=stop_flag then goto skip_loop; - main_k:=main_k+qo(skip_byte(main_j))+1; + main_k:=main_k+qo(skip_byte(main_j))+1; {SKIP property} main_j:=font_info[main_k].qqqq; end; end;