texlive[72336] Build/source/texk/web2c/euptexdir: euptex: Better

commits+takuji at tug.org commits+takuji at tug.org
Sat Sep 21 14:12:20 CEST 2024


Revision: 72336
          https://tug.org/svn/texlive?view=revision&revision=72336
Author:   takuji
Date:     2024-09-21 14:12:20 +0200 (Sat, 21 Sep 2024)
Log Message:
-----------
euptex: Better support for kcatcode=20 (modifier)

Modified Paths:
--------------
    trunk/Build/source/texk/web2c/euptexdir/eptex.ech
    trunk/Build/source/texk/web2c/euptexdir/pdfutils.ch

Modified: trunk/Build/source/texk/web2c/euptexdir/eptex.ech
===================================================================
--- trunk/Build/source/texk/web2c/euptexdir/eptex.ech	2024-09-21 09:54:18 UTC (rev 72335)
+++ trunk/Build/source/texk/web2c/euptexdir/eptex.ech	2024-09-21 12:12:20 UTC (rev 72336)
@@ -309,6 +309,14 @@
 @d if_tdir_code=if_case_code+4 { `\.{\\iftdir}' }
 @z
 
+ at x procedure conditional
+@!m,@!n:integer; {to be tested against the second operand}
+@!p,@!q:pointer; {for traversing token lists in \.{\\ifx} tests}
+ at y
+@!m,@!n,@!s,@!v,@!nn,@!jj:integer; {to be tested against the second operand}
+@!p,@!q:pointer; {for traversing token lists in \.{\\ifx} tests}
+ at z
+
 @x [30.???] |scan_font_ident|: recognize \lastnodefont
 else  begin print_err("Missing font identifier");
 @y
@@ -736,13 +744,35 @@
 @y
   if check_kanji(info(p)) then {|wchar_token|}
     begin
-    if BYTE1(toBUFF(info(p) mod max_cjk_val))<>0 then
-      begin buffer[m]:=BYTE1(toBUFF(info(p) mod max_cjk_val)); buffer2[m]:=1; incr(m); end;
-    if BYTE2(toBUFF(info(p) mod max_cjk_val))<>0 then
-      begin buffer[m]:=BYTE2(toBUFF(info(p) mod max_cjk_val)); buffer2[m]:=1; incr(m); end;
-    if BYTE3(toBUFF(info(p) mod max_cjk_val))<>0 then
-      begin buffer[m]:=BYTE3(toBUFF(info(p) mod max_cjk_val)); buffer2[m]:=1; incr(m); end;
-    buffer[m]:=BYTE4(toBUFF(info(p) mod max_cjk_val)); buffer2[m]:=1; incr(m);
+    if (isinternalUPTEX) then begin
+      s:=toUCS(ktokentochr(info(p)));
+      nn:=UVSgetcodepointlength(s);
+      jj:=1;
+      while jj<=nn do begin
+      v:=UVSgetcodepointinsequence(s,jj);
+      if (v>0) then begin
+        v:=UCStoUTF8(v);
+        if BYTE1(v)<>0 then
+          begin buffer[m]:=BYTE1(v); buffer2[m]:=1; incr(m); end;
+        if BYTE2(v)<>0 then
+          begin buffer[m]:=BYTE2(v); buffer2[m]:=1; incr(m); end;
+        if BYTE3(v)<>0 then
+          begin buffer[m]:=BYTE3(v); buffer2[m]:=1; incr(m); end;
+                buffer[m]:=BYTE4(v); buffer2[m]:=1; incr(m);
+        end;
+        incr(jj);
+      end
+    end
+    else begin
+      v:=toBUFF(info(p) mod max_cjk_val);
+      if BYTE1(v)<>0 then
+        begin buffer[m]:=BYTE1(v); buffer2[m]:=1; incr(m); end;
+      if BYTE2(v)<>0 then
+        begin buffer[m]:=BYTE2(v); buffer2[m]:=1; incr(m); end;
+      if BYTE3(v)<>0 then
+        begin buffer[m]:=BYTE3(v); buffer2[m]:=1; incr(m); end;
+              buffer[m]:=BYTE4(v); buffer2[m]:=1; incr(m);
+    end;
     p:=link(p);
     end
   else

Modified: trunk/Build/source/texk/web2c/euptexdir/pdfutils.ch
===================================================================
--- trunk/Build/source/texk/web2c/euptexdir/pdfutils.ch	2024-09-21 09:54:18 UTC (rev 72335)
+++ trunk/Build/source/texk/web2c/euptexdir/pdfutils.ch	2024-09-21 12:12:20 UTC (rev 72336)
@@ -1176,7 +1176,7 @@
         and (illegal_Ucharcat_wchar_catcode(cur_val)) then
         begin print_err("Invalid code ("); print_int(cur_val);
 @.Invalid code@>
-        print("), should be in the ranges 1..4, 6..8, 10..13, 16..19");
+        print("), should be in the ranges 1..4, 6..8, 10..13, 16..20");
         help1("I'm going to use 12 instead of that illegal code value.");@/
         error; cat:=12;
       end else cat:=cur_val;
@@ -1184,7 +1184,7 @@
       begin if illegal_Ucharcat_wchar_catcode(cur_val) then
         begin print_err("Invalid code ("); print_int(cur_val);
 @.Invalid code@>
-        print("), should be in the ranges 16..19");
+        print("), should be in the ranges 16..20");
         help1("I'm going to use 18 instead of that illegal code value.");@/
         error; cat:=other_kchar;
       end else cat:=cur_val;



More information about the tex-live-commits mailing list.