texlive[57741] Master/texmf-dist: luatexja (14feb21)

commits+karl at tug.org commits+karl at tug.org
Sun Feb 14 23:33:09 CET 2021


Revision: 57741
          http://tug.org/svn/texlive?view=revision&revision=57741
Author:   karl
Date:     2021-02-14 23:33:09 +0100 (Sun, 14 Feb 2021)
Log Message:
-----------
luatexja (14feb21)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/luatex/luatexja/README
    trunk/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf
    trunk/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf
    trunk/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx
    trunk/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua
    trunk/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua
    trunk/Master/texmf-dist/tex/luatex/luatexja/ltj-setwidth.lua
    trunk/Master/texmf-dist/tex/luatex/luatexja/luatexja.lua
    trunk/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty
    trunk/Master/texmf-dist/tex/luatex/luatexja/patches/lltjdefs.sty
    trunk/Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty

Modified: trunk/Master/texmf-dist/doc/luatex/luatexja/README
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/luatexja/README	2021-02-14 22:32:36 UTC (rev 57740)
+++ trunk/Master/texmf-dist/doc/luatex/luatexja/README	2021-02-14 22:33:09 UTC (rev 57741)
@@ -1,4 +1,4 @@
-The LuaTeX-ja Package 20210103.0
+The LuaTeX-ja Package 20210214.0
 --------------------------------
 Copyright (c) 2011--2021 The LuaTeX-ja project
 License: modified BSD (see COPYING)
@@ -25,14 +25,13 @@
     - LuaTeX 1.10.0 (or later)
     - luaotfload (v3.1 or later recommended)
     - adobemapping (Adobe CMap files)
-    - LaTeX 2020-02-02 patch level 5 or later (if you want to use with LaTeX)
-    - everysel package
+    - LaTeX2e 2020-02-02 patch level 5 or later (if you want to use with LaTeX)
+      Note that the adaptation for LaTeX2e 2021-05-01 is 
+      work in progress; it will be done after the freeze of TL'20
     - etoolbox package
-    - ltxcmds package
-    - pdftexcmds package
-    - atbegshi package
-    - filehook package
-    - stfloats package
+    - ltxcmds package, pdftexcmds package
+    - filehook package, atbegshi package (for LaTeX2e 2020-02-02)
+    - everysel package (for LaTeXe 2020-02-02 and 2020-10-01)
     - Harano Aji fonts (https://github.com/trueroad/HaranoAjiFonts)
 	  more specifically, HaranoAjiMincho-Regular and HaranoAjiGothic-Medium
 
@@ -45,9 +44,9 @@
 2. If you must/want to install manually:
 
    a. Download the source archive from CTAN,
-      or tagged as 20210103.0 in the Git repository by
+      or tagged as 20210214.0 in the Git repository by
       <http://git.osdn.jp/view?p=luatex-ja/luatexja.git
-                              ;a=snapshot;h=refs/tags/20210103.0;sf=tgz>
+                              ;a=snapshot;h=refs/tags/20210214.0;sf=tgz>
 
    b. Extract the archive and process following three files by LuaLaTeX
       to generate classes for Japanese typesetting:
@@ -96,4 +95,4 @@
   This file and ltj-kinsoku.lua are not used anymore.
   (Do not remove ltj-kinsoku.tex.)
 
-Last commit date: Sun Jan 3 09:48:34 2021 +0900
+Last commit date: Sun Feb 14 10:04:35 2021 +0900

Modified: trunk/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx	2021-02-14 22:32:36 UTC (rev 57740)
+++ trunk/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx	2021-02-14 22:33:09 UTC (rev 57741)
@@ -652,17 +652,15 @@
 %<ja>  (DVI出力(\cs{outputmode=0})は対応していない.)
 \item recent \href{https://github.com/latex3/luaotfload}{\Pkg{luaotfload}} (v3.1 or later recommended)
 \item \Pkg{adobemapping} (Adobe cmap and pdfmapping files)
-\item \LaTeX\ 2020-02-02 patch level 5 or later
+\item \LaTeXe\ 2020-02-02 patch level 5 or later
 %<en>  (if you want to use \LuaTeX-ja with \LaTeXe)
 %<ja>  (\LaTeXe 下で\LuaTeX-jaを使う場合)
-\item \href{https://github.com/josephwright/etoolbox/}{\Pkg{etoolbox}},
-  \Pkg{everysel}
+\item \href{https://github.com/josephwright/etoolbox/}{\Pkg{etoolbox}}
 %<en>  (if you want to use \LuaTeX-ja with \LaTeXe)
 %<ja>  (\LaTeXe 下で\LuaTeX-jaを使う場合)
+\item \Pkg{everysel} (only for \LaTeXe\ 2020-02-02~and~2020-10-01)
+\item \Pkg{filehook}, \Pkg{atbegshi}  (only for \LaTeXe\ 2020-02-02)
 \item \Pkg{ltxcmds}, \Pkg{pdftexcmds}
-\item \Pkg{filehook}, \Pkg{atbegshi}
-%<en>  (not needed if you want to use \LuaTeX-ja with \LaTeXe~2020-10-01 or later)
-%<ja>  (\LaTeXe 2020-10-01以降で\LuaTeX-jaを使う場合はどちらも不要)
 \item \href{https://github.com/wspr/fontspec/}{\Pkg{fontspec}} v2.7c (or later)
 %<*en>
 \item \emph{Harano Aji fonts} (\url{https://github.com/trueroad/HaranoAjiFonts})\\

Modified: trunk/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua	2021-02-14 22:32:36 UTC (rev 57740)
+++ trunk/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua	2021-02-14 22:33:09 UTC (rev 57741)
@@ -3,7 +3,7 @@
 --
 luatexbase.provides_module({
   name = 'luatexja.jfmglue',
-  date = '2020-12-22',
+  date = '2021-02-11',
   description = 'Insertion process of JFM glues, [x]kanjiskip and others',
 })
 luatexja.jfmglue = luatexja.jfmglue or {}
@@ -347,8 +347,7 @@
       local lx=lp
       while lx do
          local lai = get_attr_icflag(lx)
-         if lx==last or  lai>=PACKED then
-            lp=lx; break
+         if lx==last or  lai>=PACKED then break
          else
             local lid = getid(lx)
             if lid==id_glyph and not if_lang_ja(lx) then
@@ -368,19 +367,20 @@
                   else -- アクセントは上下にシフトされている
                      setfield(lx, 'shift', getfield(lx, 'shift') + (has_attr(lx,attr_ablshift) or 0))
                   end
-                  lx = node_next(node_next(lx))
+                  set_attr(lx, attr_icflag, PROCESSED)
+                  lx = node_next(lx); set_attr(lx, attr_icflag, PROCESSED)
+                  lx = node_next(lx); set_attr(lx, attr_icflag, PROCESSED)
                elseif ls==0  then
                   Np.last = lx; lx = node_next(lx)
                elseif (ls==3) or (lai==ITALIC) then
                   Np.last = lx; set_attr(lx, attr_icflag, IC_PROCESSED); lx = node_next(lx)
-               else
-                  lp=lx; break
+               else break
                end
-            else
-               lp=lx; break
+            else break
             end
          end
       end
+      lp=lx
       local r
       if adj_depth>node_depth then
             r = node_new(id_rule,3)

Modified: trunk/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua	2021-02-14 22:32:36 UTC (rev 57740)
+++ trunk/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua	2021-02-14 22:33:09 UTC (rev 57741)
@@ -784,6 +784,11 @@
 luatexja.jfont.font_extra_info = font_extra_info -- key: fontnumber
 local font_extra_basename = {} -- key: basename
 
+local rotate_exception = {
+  [0xFF1A]= { ['zht'] = true, },
+  [0xFF1B]= { ['zht'] = true, },
+}
+luatexja.jfont.rotate_exception = rotate_exception
 local list_rotate_glyphs
 do
   local ceil = math.ceil
@@ -825,7 +830,7 @@
     --   end)
     for i,_ in pairs(rot) do
        dest = dest or {}; dest.rotation = dest.rotation or {}
-       dest.rotation[i] = true
+       dest.rotation[i] = rotate_exception[i] or true
     end
     return dest
   end
@@ -832,7 +837,7 @@
 end
 
 do
-   local cache_ver = 23
+   local cache_ver = 24
    local nameonly, lower = file.nameonly, string.lower
    local lfs = require"lfs"
    local file_attributes = lfs.attributes
@@ -972,7 +977,7 @@
           for j,w in pairs(vform) do
             if (i==j)and(w==k) then vform[j]=nil elseif w==i then vform[j] = k end
           end
-        end)
+      end)
       return fmtable
    end, 'ltj.get_vert_form', 1
 )

Modified: trunk/Master/texmf-dist/tex/luatex/luatexja/ltj-setwidth.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luatexja/ltj-setwidth.lua	2021-02-14 22:32:36 UTC (rev 57740)
+++ trunk/Master/texmf-dist/tex/luatex/luatexja/ltj-setwidth.lua	2021-02-14 22:33:09 UTC (rev 57741)
@@ -190,13 +190,19 @@
       local pf, pc = getfont(p), getchar(p)
       local feir = ltjf_font_extra_info[pf]
       if met.rotation and met.vert_activated then
-         if met.rotation[pc] and (has_attr(p, attr_vert_ori) or 0)<=0 then
+          local f = font_getfont(pf)
+          local r, l = met.rotation[pc], f.properties and f.properties.language
+          if ((r==true) or (type(r)=="table" and not r[l])) and (has_attr(p, attr_vert_ori) or 0)<=0 then
             return capsule_glyph_tate_rot(p, met, char_data, head, dir, 
               0.5*(get_ascender(pf)-get_descender(pf)))
-         end
-     end
-     pwidth, ascender = feir.vheight[pc]*met.size, feir.vorigin[pc]*met.size
+          end
+      end
+      pwidth, ascender = feir.vheight[pc]*met.size, feir.vorigin[pc]*met.size
+     -- print(pwidth/65536.,ascender/65536.)
    end
+   -- luatexja.ext_show_node(node.direct.tonode(p), 'B> ', print)
+   local xo, yo = getoffsets(p)
+   --pwidth = pwidth - yo
    fwidth = fwidth or pwidth
    if pwidth>fwidth and char_data.round_threshold then
       local frac = pwidth / fwidth
@@ -207,7 +213,6 @@
    fshift = call_callback("luatexja.set_width", fshift, met, char_data)
    local fheight = char_data.height or 0
    local fdepth  = char_data.depth or 0
-   local xo, yo = getoffsets(p)
    local y_shift = xo + (has_attr(p,attr_tkblshift) or 0)
    local q
    head, q = node_remove(head, p)
@@ -215,7 +220,7 @@
    setwhd(box, fwidth, fheight, fdepth)
    setfield(box, 'shift', y_shift)
    setdir(box, dir)
-
+   -- print(yo, ascender, char_data.align, fwidth-pwidth)
    setoffsets(p, -fshift.down,
               yo -(ascender + char_data.align*(fwidth-pwidth) - fshift.left) )
    local ws = node_new(id_whatsit, sid_save)
@@ -231,6 +236,7 @@
    setnext(k3, wr);
 
    set_attr(box, attr_icflag, PACKED)
+   -- luatexja.ext_show_node(node.direct.tonode(box), 'A> ', print)
    head = q and node_insert_before(head, q, box)
       or node_insert_after(head, node_tail(head), box)
    return q, head, box

Modified: trunk/Master/texmf-dist/tex/luatex/luatexja/luatexja.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luatexja/luatexja.lua	2021-02-14 22:32:36 UTC (rev 57740)
+++ trunk/Master/texmf-dist/tex/luatex/luatexja/luatexja.lua	2021-02-14 22:33:09 UTC (rev 57741)
@@ -351,7 +351,7 @@
             r = tostring(n.char)
          end
       end
-      tex.sprint(r)
+      tex.sprint(-2, r)
    end
 end
 

Modified: trunk/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty	2021-02-14 22:32:36 UTC (rev 57740)
+++ trunk/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty	2021-02-14 22:33:09 UTC (rev 57741)
@@ -35,13 +35,13 @@
   \expandafter\let\csname ifltj at in@latex\expandafter\endcsname
     \csname iftrue\endcsname
   \NeedsTeXFormat{LaTeX2e}
-  \ProvidesPackage{luatexja}[2021-01-03 Japanese Typesetting with Lua(La)TeX]
+  \ProvidesPackage{luatexja}[2021-02-14 Japanese Typesetting with Lua(La)TeX]
   \DeclareOption{disablejfam}{\ltj at disablejfamtrue}
   \DeclareOption*{}
   \ProcessOptions\relax
 \fi                             %</LaTeX>
 %%%% VERSION
-\def\LuaTeXjaversion{20210103.0}
+\def\LuaTeXjaversion{20210214.0}
 
 \directlua{require('ltj-unicode-ccfix.lua')}% catcode of ideographs
 

Modified: trunk/Master/texmf-dist/tex/luatex/luatexja/patches/lltjdefs.sty
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luatexja/patches/lltjdefs.sty	2021-02-14 22:32:36 UTC (rev 57740)
+++ trunk/Master/texmf-dist/tex/luatex/luatexja/patches/lltjdefs.sty	2021-02-14 22:33:09 UTC (rev 57741)
@@ -3,7 +3,7 @@
 %
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjdefs}[2020-10-05 Default font settings of LuaTeX-ja]
+\ProvidesPackage{lltjdefs}[2021-01-24 Default font settings of LuaTeX-ja]
 
 \ifdefined\ltj at stdmcfont\else\def\ltj at stdmcfont{file:HaranoAjiMincho-Regular.otf}\fi
 \ifdefined\ltj at stdgtfont\else\def\ltj at stdgtfont{file:HaranoAjiGothic-Medium.otf}\fi
@@ -18,8 +18,13 @@
 \DeclareKanjiEncodingDefaults{}{}
 \DeclareErrorKanjiFont{JY3}{mc}{m}{n}{10}
 \kanjifamily{mc}
-\kanjiseries{m}
-\kanjishape{n}
+\ifnum\ltj@@latex at plv<1500 % <=2020-10-01
+  \kanjiseries{m}
+  \kanjishape{n}
+\else % >=2021-05-01
+  \def\k at series{m}
+  \def\k at shape{n}
+\fi
 \fontsize{10}{10}
 \DeclareYokoKanjiEncoding{JY3}{}{}
 \DeclareKanjiSubstitution{JY3}{mc}{m}{n}
@@ -35,7 +40,7 @@
 \ifnum 0\ifltj at ltfilehook@avail1\fi\ifdefined\@rmfamilyhook1\fi>0
   %% LaTeX 2020-02-02
   \newcommand\kanjishapedefault{\shapedefault}
-\else                   %% LaTeX 2019-10-01
+\else%% LaTeX 2019-10-01
   \newcommand\kanjishapedefault{\updefault}
 \fi
 

Modified: trunk/Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty	2021-02-14 22:32:36 UTC (rev 57740)
+++ trunk/Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty	2021-02-14 22:33:09 UTC (rev 57741)
@@ -3,8 +3,31 @@
 %
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjfont}[2020-12-29 Patch to NFSS2 for LuaTeX-ja]
+\ProvidesPackage{lltjfont}[2021-02-14 Patch to NFSS2 for LuaTeX-ja]
 
+%%%%%%%% LaTeX2e version detection
+\newcount\ltj@@latex at plv \ltj@@latex at plv=-1
+\ifltj at ltfilehook@avail
+  \IfHookExistsTF{selectfont}%
+    {\ltj@@latex at plv=1500}% 2021-05-01
+    {\ifnum\patch at level>2 \ltj@@latex at plv=1300\else \ltj@@latex at plv=1000\fi}% 2020-10-01
+\else\ifdefined\@rmfamilyhook % 2020-02-02
+  \ifx\@forced at seriestrue\@undefined % 2020-02-02 pl0--2
+    \@latex at error
+     {Please update LaTeX2e!^^J\space\space
+       At least LaTeX2e 2020-02-02 patch level 3 is required}%
+     {LaTeX2e 2020-02-02 patch level 2 (and 4) has a bug.}
+  \else
+    \ltj@@latex at plv=300
+    \unless\ifx\series at maybe@drop at one@m at x\@undefined % pl5 + develop
+      \ltj@@latex at plv=501
+    \else\unless\ifx\series at maybe@drop at one@m\@undefined % patch level 5
+      \ltj@@latex at plv=500
+    \fi\fi
+  \fi
+\fi\fi
+
+
 %% patching \DeclareTextComposite
 \def\ltj at chardef@text at cmd#1{%
   \let\@ifdefinable\@@ifdefinable%
@@ -350,18 +373,6 @@
 \newif\if at knjcmd
 \DeclareRobustCommand\userelfont{\@knjcmdtrue}
 
-
-\RequirePackage{everysel}
-\let\ltj@@EverySelectfont at Init=\@EverySelectfont at Init
-\expandafter\expandafter\expandafter\let
-\expandafter\expandafter\csname ltj@@orig at selectfont\endcsname\csname selectfont\space\endcsname
-\@EverySelectfont at Init
-%\let\ltj@@font at info\@font at info
-%\let\ltj@@font at warning\@font at warning
-\def\@EverySelectfont at Init{%
-  \expandafter\let\csname selectfont\space \endcsname \ltj@@orig at selectfont
-  \ltj@@EverySelectfont at Init
-}
 \def\ltj at selectfont@tate{%
   \let\k at encoding\ct at encoding
   \xdef\font at name{\csname\curr at kfontshape/\f at size\endcsname}%
@@ -386,7 +397,8 @@
       \directlua{luatexja.jfont.pickup_alt_font_a('\f at size')}%
     }%
   \fi}
-\def\ltj at selectfont@patch{%
+\ifnum\ltj@@latex at plv<1500 % <=2020-10-01
+\protected\def\ltj at selectfont@patch{%
   \ltj@@start at time@measure{selectfont}%
   \let\tmp at error@fontshape\error at fontshape
   \let\error at fontshape\error at kfontshape
@@ -427,7 +439,78 @@
   \global\let\font at name=\ltj at afont@name
   \ltj@@stop at time@measure{selectfont}%
 }
+\RequirePackage{everysel}
+\let\ltj@@EverySelectfont at Init=\@EverySelectfont at Init
+\expandafter\expandafter\expandafter\let
+\expandafter\expandafter\csname ltj@@orig at selectfont\endcsname\csname selectfont\space\endcsname
+\@EverySelectfont at Init% for LaTeX2e <=2020-10-01
+\def\@EverySelectfont at Init{%
+  \expandafter\let\csname selectfont\space \endcsname \ltj@@orig at selectfont
+  \ltj@@EverySelectfont at Init
+}
 \EverySelectfont{\ltj at selectfont@patch}
+\else % LaTeX2e >=2021-05-01
+\AddToHook{selectfont}[luatexja]{%
+  \ltj@@start at time@measure{selectfont}%
+  \ifx\delayed at k@adjustment\@empty
+  \else
+    \let\k at shape@saved\k at shape
+    \let\k at series@saved\k at series
+    \delayed at k@adjustment
+    \begingroup\let\f at encoding\k at encoding\let\f at family\k at family
+      \maybe at load@fontshape\endgroup
+    \ifcsname \k at encoding/\k at family/\k at series/\k at shape \endcsname
+    \else
+      \let\k at shape\k at shape@saved
+      \let\k at series\k at series@saved
+      \let\delayed at merge@kanji at shape\merge at kanji@shape
+      \let\delayed at merge@kanji at series\merge at kanji@series
+      \delayed at k@adjustment
+      \let\delayed at merge@kanji at shape\merge at kanji@shape at without@substitution
+      \let\delayed at merge@kanji at series\merge at kanji@series at without@substitution
+    \fi
+    \let\delayed at k@adjustment\@empty
+  \fi
+  \let\tmp at error@fontshape\error at fontshape
+  \let\error at fontshape\error at kfontshape
+  \ltj@@is at kyenc{\k at encoding}\ifin@%
+    \let\cy at encoding\k at encoding
+    \ensure at KanjiEncodingPair{t}%
+    \edef\ct at encoding{\csname t at enc@\k at encoding\endcsname}%
+  \else
+    \ltj@@is at ktenc{\k at encoding}\ifin@%
+      \let\ct at encoding\k at encoding
+      \ensure at KanjiEncodingPair{y}%
+      \edef\cy at encoding{\csname y at enc@\k at encoding\endcsname}%
+    \else
+      \@latex at error{KANJI Encoding scheme `\k at encoding' unknown}\@eha
+    \fi
+  \fi
+  \global\let\ltj at afont@name=\font at name
+  \ltj at selectfont@tate\ltj at selectfont@yoko
+%
+  \edef\tmp at item{{\k at encoding}}\expandafter\def\expandafter\k at encoding\tmp at item
+  \kenc at update
+  \global\let\font at name=\ltj at afont@name
+  \let\error at fontshape\tmp at error@fontshape
+  \if at knjcmd \@knjcmdfalse
+    \expandafter\ifx
+    \csname rel@\k at encoding/\k at family/\k at series/\k at shape\endcsname\relax
+      \expandafter\ifx
+         \csname rel@\k at encoding/\k at family/\k at series/all\endcsname\relax
+      \else
+         \csname rel@\k at encoding/\k at family/\k at series/all\endcsname\selectfont
+         % 警告: 再び \selectfont を呼んでいる.無限ループの可能性あり
+      \fi
+    \else
+       \csname rel@\k at encoding/\k at family/\k at series/\k at shape\endcsname\selectfont
+       % 警告: 再び \selectfont を呼んでいる.無限ループの可能性あり
+    \fi
+  \fi
+  \global\let\font at name=\ltj at afont@name
+  \ltj@@stop at time@measure{selectfont}%
+}
+\fi
 
 \bgroup
   \def\ltj@@dir at patch#1#2#3{%
@@ -632,26 +715,6 @@
   \fi\fi
 }
 
-\newcount\ltj@@latex at plv \ltj@@latex at plv=-1
-\ifltj at ltfilehook@avail % 2020-10-01
-  \@ifl at t@r\fmtversion{2020-10-02}{\ltj@@latex at plv=1300}%
-    {\ifnum\patch at level>2 \ltj@@latex at plv=1300\else \ltj@@latex at plv=1000\fi}
-\else\ifdefined\@rmfamilyhook % 2020-02-02
-  \ifx\@forced at seriestrue\@undefined % 2020-02-02 pl0--2
-    \@latex at error
-     {Please update LaTeX2e!^^J\space\space
-       At least LaTeX2e 2020-02-02 patch level 3 is required}%
-     {LaTeX2e 2020-02-02 patch level 2 (and 4) has a bug.}
-  \else
-    \ltj@@latex at plv=300
-    \unless\ifx\series at maybe@drop at one@m at x\@undefined % pl5 + develop
-      \ltj@@latex at plv=501
-    \else\unless\ifx\series at maybe@drop at one@m\@undefined % patch level 5
-      \ltj@@latex at plv=500
-    \fi\fi
-  \fi
-\fi\fi
-
 %%%%%%
 \ifnum\ltj@@latex at plv>0
 %%%% LaTeX >= 2020-02-02
@@ -664,6 +727,13 @@
     {#1}%
     \@nil
 }
+\def\merge at kanji@shape#1{%
+  \expandafter\expandafter\expandafter
+  \merge at kanji@shape@
+    \csname shape@\k at shape @#1\endcsname
+    {#1}%
+    \@nil
+}
 
 \ifnum\ltj@@latex at plv>500 % !!! pl5 + develop
   \def\set at target@series at kanji#1{%
@@ -682,6 +752,7 @@
   }
 \fi\fi
 
+\ifnum\ltj@@latex at plv<1500% <=2020-10-01
 \def\merge at kanji@series@#1#2#3\@nil{%
   \def\reserved at a{#3}%
   \ifx\reserved at a\@empty
@@ -703,13 +774,75 @@
     \fi
   \fi
 }
-\def\merge at kanji@shape#1{%
+\def\merge at kanji@shape@#1#2#3\@nil{%
+  \def\reserved at a{#3}%
+  \ifx\reserved at a\@empty
+    \if at shape@roman at kanji
+      \set at safe@kanji at shape{#2}{}%
+    \else
+      \edef\k at shape{#2}%
+    \fi
+  \else
+    \begingroup\let\f at encoding\k at encoding\let\f at family\k at family
+           \maybe at load@fontshape\endgroup
+    \edef\reserved at a{\k at encoding /\k at family /\k at series/#1}%
+     \ifcsname \reserved at a\endcsname
+       \edef\k at shape{#1}%
+    \else
+       \ifcsname \k at encoding /\k at family /\k at series/#2\endcsname
+         \edef\k at shape{#2}%
+         {\let\curr at fontshape\curr at kfontshape\@font at shape@subst at warning}%
+       \else
+         \if at shape@roman at kanji
+           \set at safe@kanji at shape{#3}%
+           {{\let\curr at fontshape\curr at kfontshape\@font at shape@subst at warning}}%
+         \else
+           \edef\k at shape{#3}%
+           {\let\curr at fontshape\curr at kfontshape\@font at shape@subst at warning}%
+         \fi
+       \fi
+    \fi
+  \fi
+}
+\else % >=2021-05-01
+\def\merge at kanji@series@#1#2#3\@nil{%
+  \def\reserved at a{#3}%
+  \ifx\reserved at a\@empty
+    \set at target@series at kanji{#2}%
+  \else
+    \begingroup\let\f at encoding\k at encoding\let\f at family\k at family
+    \maybe at load@fontshape\endgroup
+    \edef\reserved at a{\k at encoding /\k at family /#1/\k at shape}%
+     \ifcsname \reserved at a \endcsname
+       \set at target@series at kanji{#1}%
+    \else
+       \ifcsname \k at encoding /\k at family /#2/\k at shape \endcsname
+         \set at target@series at kanji{#2}%
+         {\let\curr at fontshape\curr at kfontshape\@font at shape@subst at warning}%
+       \else
+         \set at target@series at kanji{#3}%
+         {\let\curr at fontshape\curr at kfontshape\@font at shape@subst at warning}%
+       \fi
+    \fi
+  \fi
+}
+\def\merge at kanji@series at without@substitution#1{%
   \expandafter\expandafter\expandafter
-  \merge at kanji@shape@
-    \csname shape@\k at shape @#1\endcsname
+  \merge at kanji@series at without@substitution@
+    \csname series@\k at series @#1\endcsname
     {#1}%
     \@nil
 }
+\def\merge at kanji@series at without@substitution@#1#2#3\@nil{%
+  \def\reserved at a{#3}%
+  \ifx\reserved at a\@empty
+    \set at target@series at kanji{#2}%
+  \else
+    \set at target@series at kanji{#1}%
+  \fi
+}
+\let\delayed at merge@kanji at series\merge at kanji@series at without@substitution
+
 \def\merge at kanji@shape@#1#2#3\@nil{%
   \def\reserved at a{#3}%
   \ifx\reserved at a\@empty
@@ -719,8 +852,6 @@
       \edef\k at shape{#2}%
     \fi
   \else
-    \begingroup\let\f at encoding\k at encoding\let\f at family\k at family
-           \maybe at load@fontshape\endgroup
     \edef\reserved at a{\k at encoding /\k at family /\k at series/#1}%
      \ifcsname \reserved at a\endcsname
        \edef\k at shape{#1}%
@@ -740,7 +871,25 @@
     \fi
   \fi
 }
-\ifnum\ltj@@latex at plv=300 % !!! pl3, 4
+\def\merge at kanji@shape at without@substitution#1{%
+  \expandafter\expandafter\expandafter
+  \merge at kanji@shape at without@substitution@
+    \csname shape@\k at shape @#1\endcsname
+    {#1}%
+    \@nil
+}
+\def\merge at kanji@shape at without@substitution@#1#2#3\@nil{%
+  \def\reserved at a{#3}%
+  \ifx\reserved at a\@empty
+    \edef\k at shape{#2}%
+  \else
+    \edef\k at shape{#1}%
+  \fi
+}
+\let\delayed at merge@kanji at shape\merge at kanji@shape at without@substitution
+\fi
+
+\ifnum\ltj@@latex at plv=300 % 2020-02-02 pl3, 4
   \DeclareRobustCommand\romanseries[1]{\merge at font@series{#1}}
   \DeclareRobustCommand\kanjiseries[1]{\merge at kanji@series{#1}}
   \DeclareRobustCommand\fontseries[1]{%
@@ -749,7 +898,7 @@
   \DeclareRobustCommand\kanjiseriesforce[1]{\edef\k at series{#1}}
   \DeclareRobustCommand\fontseriesforce[1]{%
      \edef\f at series{#1}\edef\k at series{#1}}
-\else % !!! pl 5
+\else\ifnum\ltj@@latex at plv<1500% >=2020-02-02 pl5 and <=2020-10-01
   \DeclareRobustCommand\romanseries[1]{\@forced at seriesfalse\merge at font@series{#1}}
   \DeclareRobustCommand\kanjiseries[1]{\@forced at seriesfalse\merge at kanji@series{#1}}
   \DeclareRobustCommand\fontseries[1]{%
@@ -758,17 +907,57 @@
   \DeclareRobustCommand\kanjiseriesforce[1]{\@forced at seriestrue\merge at kanji@series{#1}}
   \DeclareRobustCommand\fontseriesforce[1]{%
      \@forced at seriestrue\merge at font@series{#1}\merge at kanji@series{#1}}
+\else% >=2021-05-01
+  \DeclareRobustCommand\romanseries[1]{\@forced at seriesfalse
+      \expandafter\def\expandafter\delayed at f@adjustment\expandafter
+          {\delayed at f@adjustment\delayed at merge@font at series{#1}}}
+  \DeclareRobustCommand\kanjiseries[1]{\@forced at seriesfalse
+      \expandafter\def\expandafter\delayed at k@adjustment\expandafter
+          {\delayed at k@adjustment\delayed at merge@kanji at series{#1}}}
+  \DeclareRobustCommand\fontseries[1]{\kanjiseries{#1}\romanseries{#1}}
+  \DeclareRobustCommand\romanseriesforce[1]{\@forced at seriestrue
+      \expandafter\def\expandafter\delayed at f@adjustment\expandafter
+          {\delayed at f@adjustment\edef\f at series{#1}}}
+  \DeclareRobustCommand\kanjiseriesforce[1]{\@forced at seriestrue
+      \expandafter\def\expandafter\delayed at k@adjustment\expandafter
+          {\delayed at k@adjustment\edef\k at series{#1}}}
+  \DeclareRobustCommand\fontseriesforce[1]{\kanjiseriesforce{#1}\romanseriesforce{#1}}%
+  \let\delayed at k@adjustment\@empty
+\fi\fi
+\ifnum\ltj@@latex at plv<1500% <=2020-10-01
+  \DeclareRobustCommand\romanshape[1]{\merge at font@shape{#1}}
+  \DeclareRobustCommand\kanjishape[1]{\merge at kanji@shape{#1}}
+  \DeclareRobustCommand\fontshape[1]{%
+     \@shape at roman@kanjitrue
+     \merge at font@shape{#1}\merge at kanji@shape{#1}%
+     \@shape at roman@kanjifalse
+  }
+  \DeclareRobustCommand\romanshapeforce[1]{\edef\f at shape{#1}}
+  \DeclareRobustCommand\kanjishapeforce[1]{\edef\k at shape{#1}}
+  \DeclareRobustCommand\fontshapeforce[1]{\set at safe@kanji at shape{#1}{}\romanshapeforce{#1}}
+\else% >=2021-05-01
+  \DeclareRobustCommand\romanshape[1]{%
+       \expandafter\def\expandafter\delayed at f@adjustment\expandafter
+           {\delayed at f@adjustment\delayed at merge@font at shape{#1}}}
+  \DeclareRobustCommand\kanjishape[1]{%
+       \expandafter\def\expandafter\delayed at k@adjustment\expandafter
+           {\delayed at k@adjustment\delayed at merge@kanji at shape{#1}}}
+  \DeclareRobustCommand\fontshape[1]{%
+      \romanshape{#1}%
+      \expandafter\def\expandafter\delayed at k@adjustment\expandafter
+          {\delayed at k@adjustment\@shape at roman@kanjitrue
+           \delayed at merge@kanji at shape{#1}\@shape at roman@kanjifalse}}
+  \DeclareRobustCommand\romanshapeforce[1]{%
+      \expandafter\def\expandafter\delayed at f@adjustment\expandafter
+          {\delayed at f@adjustment\edef\f at shape{#1}}}
+  \DeclareRobustCommand\kanjishapeforce[1]{%
+      \expandafter\def\expandafter\delayed at k@adjustment\expandafter
+          {\delayed at k@adjustment\edef\k at shape{#1}}}
+  \DeclareRobustCommand\fontshapeforce[1]{%
+     \romanshapeforce{#1}%
+     \expandafter\def\expandafter\delayed at k@adjustment\expandafter
+         {\delayed at k@adjustment\set at safe@kanji at shape{#1}{}}}
 \fi
-\DeclareRobustCommand\romanshape[1]{\merge at font@shape{#1}}
-\DeclareRobustCommand\kanjishape[1]{\merge at kanji@shape{#1}}
-\DeclareRobustCommand\fontshape[1]{%
-   \@shape at roman@kanjitrue
-   \merge at font@shape{#1}\merge at kanji@shape{#1}%
-   \@shape at roman@kanjifalse
-}
-\DeclareRobustCommand\romanshapeforce[1]{\edef\f at shape{#1}}
-\DeclareRobustCommand\kanjishapeforce[1]{\edef\k at shape{#1}}
-\DeclareRobustCommand\fontshapeforce[1]{\set at safe@kanji at shape{#1}{}\romanshapeforce{#1}}
 \ifnum\ltj@@latex at plv>1000
 %%%% LaTeX >= 2020-10-01 PL3
 \DeclareRobustCommand\usekanji[4]{%



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