XeTeX Pull request on github texlive-source

Norbert Preining norbert at preining.info
Thu Jan 5 01:58:56 CET 2023


Hi Martin, hi all

On Wed, 04 Jan 2023, Martin Hosken wrote:
> I have submitted a pull request against the github texlive-source repository https://github.com/TeX-Live/texlive-source/pull/58 It addresses a pretty obscure corner (XeTeXupwardsmode) bug in XeTeX. If anyone is willing to engage with it, I would appreciate it.

Thanks, but Github is at the moment only used for CI testing and binary
building, but main development is going on in the svn repo.

I attach the patch here in case anyone wants to look into it.

Best

Norbert

--
PREINING Norbert                              https://www.preining.info
Mercari Inc.     +     IFMGA Guide     +     TU Wien     +     TeX Live
GPG: 0x860CDC13   fp: F7D8 A928 26E3 16A1 9FA0 ACF0 6CAC A448 860C DC13
-------------- next part --------------
>From 52f2f458687dbd8ce5f0c4ae9577174e20100c60 Mon Sep 17 00:00:00 2001
From: Martin Hosken <martin_hosken at sil.org>
Date: Wed, 4 Jan 2023 13:02:51 +0700
Subject: [PATCH] Fix topskip for XeTeXupwardsmode

---
 texk/web2c/xetexdir/xetex.web | 24 ++++++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

diff --git a/texk/web2c/xetexdir/xetex.web b/texk/web2c/xetexdir/xetex.web
index 4871d9d588..98fed258f7 100644
--- a/texk/web2c/xetexdir/xetex.web
+++ b/texk/web2c/xetexdir/xetex.web
@@ -22995,8 +22995,16 @@ end;
 @ @<Insert glue for |split_top_skip|...@>=
 begin q:=new_skip_param(split_top_skip_code); link(prev_p):=q; link(q):=p;
   {now |temp_ptr=glue_ptr(q)|}
-if width(temp_ptr)>height(p) then width(temp_ptr):=width(temp_ptr)-height(p)
-else width(temp_ptr):=0;
+if XeTeX_upwards then
+  begin
+    if width(temp_ptr)>depth(p) then width(temp_ptr):=width(temp_ptr)-depth(p)
+    else width(temp_ptr):=0;
+  end
+else
+  begin
+    if width(temp_ptr)>height(p) then width(temp_ptr):=width(temp_ptr)-height(p)
+    else width(temp_ptr):=0;
+  end;
 p:=null;
 end
 
@@ -23632,8 +23640,16 @@ endcases
 begin if page_contents=empty then freeze_page_specs(box_there)
 else page_contents:=box_there;
 q:=new_skip_param(top_skip_code); {now |temp_ptr=glue_ptr(q)|}
-if width(temp_ptr)>height(p) then width(temp_ptr):=width(temp_ptr)-height(p)
-else width(temp_ptr):=0;
+if XeTeX_upwards then
+  begin
+    if width(temp_ptr)>depth(p) then width(temp_ptr):=width(temp_ptr)-depth(p)
+    else width(temp_ptr):=0;
+  end
+else
+  begin
+    if width(temp_ptr)>height(p) then width(temp_ptr):=width(temp_ptr)-height(p)
+    else width(temp_ptr):=0;
+  end;
 link(q):=p; link(contrib_head):=q; goto continue;
 end
 


More information about the tex-live mailing list.