texlive[54697] Master/texmf-dist: platex (12apr20)

commits+karl at tug.org commits+karl at tug.org
Sun Apr 12 23:29:19 CEST 2020


Revision: 54697
          http://tug.org/svn/texlive?view=revision&revision=54697
Author:   karl
Date:     2020-04-12 23:29:19 +0200 (Sun, 12 Apr 2020)
Log Message:
-----------
platex (12apr20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/platex/base/README.md
    trunk/Master/texmf-dist/doc/platex/base/exppl2e.pdf
    trunk/Master/texmf-dist/doc/platex/base/platex-en.pdf
    trunk/Master/texmf-dist/doc/platex/base/platex.pdf
    trunk/Master/texmf-dist/doc/platex/base/platexrelease.pdf
    trunk/Master/texmf-dist/doc/platex/base/pldoc.pdf
    trunk/Master/texmf-dist/source/platex/base/Makefile
    trunk/Master/texmf-dist/source/platex/base/platex.dtx
    trunk/Master/texmf-dist/source/platex/base/platexrelease.dtx
    trunk/Master/texmf-dist/source/platex/base/plcore.dtx
    trunk/Master/texmf-dist/source/platex/base/plfonts.dtx
    trunk/Master/texmf-dist/source/platex/base/plvers.dtx
    trunk/Master/texmf-dist/tex/platex/base/exppl2e.sty
    trunk/Master/texmf-dist/tex/platex/base/platexrelease.sty
    trunk/Master/texmf-dist/tex/platex/base/plcore.ltx
    trunk/Master/texmf-dist/tex/platex/base/ptrace.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/source/platex/base/plnewsc14.tex

Modified: trunk/Master/texmf-dist/doc/platex/base/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/platex/base/README.md	2020-04-12 21:27:51 UTC (rev 54696)
+++ trunk/Master/texmf-dist/doc/platex/base/README.md	2020-04-12 21:29:19 UTC (rev 54697)
@@ -15,7 +15,7 @@
 
 The original ASCII edition can be obtained from:
 
-- https://ctan.org/pkg/ptex-texmf
+- https://asciidwango.github.io/ptex/base/sources.html#platex
 
 ## Changes from the original ASCII edition
 
@@ -64,6 +64,6 @@
 
 ## Release Date
 
-2020-02-29+1
+2020-04-12
 
 Japanese TeX Development Community

Modified: trunk/Master/texmf-dist/doc/platex/base/exppl2e.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/platex/base/platex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/platex/base/platexrelease.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/platex/base/pldoc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/platex/base/Makefile
===================================================================
--- trunk/Master/texmf-dist/source/platex/base/Makefile	2020-04-12 21:27:51 UTC (rev 54696)
+++ trunk/Master/texmf-dist/source/platex/base/Makefile	2020-04-12 21:29:19 UTC (rev 54697)
@@ -5,7 +5,8 @@
 PDFTARGET = $(addsuffix .pdf,$(DOCTARGET))
 DVITARGET = $(addsuffix .dvi,$(DOCTARGET))
 KANJI = -kanji=jis
-FONTMAP = -f ipaex.map -f ptex-ipaex.map
+#FONTMAP = -f ipaex.map -f ptex-ipaex.map
+FONTMAP = -f haranoaji.map -f ptex-haranoaji.map
 TEXMF = $(shell kpsewhich -var-value=TEXMFHOME)
 
 default: $(STRIPTARGET) $(DVITARGET)

Modified: trunk/Master/texmf-dist/source/platex/base/platex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/platex/base/platex.dtx	2020-04-12 21:27:51 UTC (rev 54696)
+++ trunk/Master/texmf-dist/source/platex/base/platex.dtx	2020-04-12 21:29:19 UTC (rev 54697)
@@ -3,7 +3,7 @@
 %
 %  Copyright 1995,1996 ASCII Corporation.
 %  Copyright (c) 2010 ASCII MEDIA WORKS
-%  Copyright (c) 2016-2019 Japanese TeX Development Community
+%  Copyright (c) 2016-2020 Japanese TeX Development Community
 %
 %  This file is part of the pLaTeX2e system (community edition).
 %  -------------------------------------------------------------
@@ -85,6 +85,7 @@
 % \changes{v1.0x}{2018/09/03}{plautopatch$B$K8 at 5Z(B}
 % \changes{v1.0y}{2018/09/22}{$B:G=*99?7F|$r(B\file{pldoc.pdf}$B$KI=<((B}
 % \changes{v1.0z}{2019/09/29}{$B%?%$%]=$@5(B}
+% \changes{v1.1}{2020/03/24}{$B%I%-%e%a%s%H$r99?7(B}
 %\else
 % \changes{v1.0}{1995/05/08}{first edition}
 % \changes{v1.0a}{1995/08/25}{Added 'Compatibility', `Usage of \dst{}'
@@ -128,6 +129,7 @@
 % \changes{v1.0x}{2018/09/03}{Mention plautopatch.}
 % \changes{v1.0y}{2018/09/22}{Show last update info on \file{pldoc.pdf}}
 % \changes{v1.0z}{2019/09/29}{Fix typos in document.}
+% \changes{v1.1}{2020/03/24}{Update document.}
 %\fi
 % \fi
 %
@@ -135,7 +137,7 @@
 %<*driver>
 \NeedsTeXFormat{pLaTeX2e}
 % \fi
-\ProvidesFile{platex.dtx}[2019/09/29 v1.0z pLaTeX document file]
+\ProvidesFile{platex.dtx}[2020/03/24 v1.1 pLaTeX document file]
 % \iffalse
 \documentclass{jltxdoc}
 \usepackage{plext}
@@ -200,6 +202,7 @@
 % \changes{v1.0q}{2017/11/29}{$B1Q8lHG%I%-%e%a%s%H$rDI2C(B}
 % \changes{v1.0x}{2018/09/03}{$B%I%-%e%a%s%H$r99?7(B}
 % \changes{v1.0z}{2019/09/29}{$B%?%$%]=$@5(B}
+% \changes{v1.1}{2020/03/24}{$B%I%-%e%a%s%H$r99?7(B}
 %\else
 % \changes{v1.0f}{2016/04/12}{Update document.}
 % \changes{v1.0k}{2016/05/21}{Print also changes.}
@@ -206,15 +209,15 @@
 % \changes{v1.0q}{2017/11/29}{New English documentation added!}
 % \changes{v1.0x}{2018/09/03}{Update document.}
 % \changes{v1.0z}{2019/09/29}{Fix typos in document.}
+% \changes{v1.1}{2020/03/24}{Update document.}
 %\fi
 %\ifJAPANESE
 % \begin{chuui}
+% \pLaTeXe{}$B$O!"(B\LaTeXe{}$B$rF|K\8lAHHGMQ$K3HD%!&D4 at 0$7$?$b$N$G$9!#(B
 % $B$3$NJ8=q$G$O!V%3%_%e%K%F%#HG(B\pLaTeXe{}$B!W$K$D$$$F4JC1$K at bL@$7$^$9!#(B
-% $B3t<02q<R%"%9%-!<!J8=%"%9%-!<!&%a%G%#%"%o!<%/%9(B
-% \footnote{$B%"%9%-!<F|K\8l(B\TeX{}$B!J(B\pTeX{}$B!K!"(B
-% \texttt{http://ascii.asciimw.jp/pb/ptex/}}$B!K$,G[I[$7$F$$$k(B
-% \pLaTeXe{}$B!J0J2<!"%"%9%-!<HG(B\pLaTeXe{}$B!K$H$O0[$J$kFbMF$G$9$N$G!"(B
-% $BCm0U$7$F$/$@$5$$!#(B
+% $B3t<02q<R%"%9%-!<$*$h$S3t<02q<R%"%9%-!<!&%a%G%#%"%o!<%/%9$,(B
+% $BG[I[$7$F$$$?(B\pLaTeXe{}$B!J0J2<!"!V%"%9%-!<HG(B\pLaTeXe{}$B!W!K$H$O(B
+% $B0[$J$j$^$9$N$G!"Cm0U$7$F$/$@$5$$!#(B
 % \end{chuui}
 %\else
 % ^^A \begin{chuui}[]
@@ -877,7 +880,7 @@
 % current \pLaTeXe\ and older versions or original \LaTeXe.
 %
 % \subsection{Compatibility with \LaTeXe}
-% \pLaTeXe\ is in most part upper compatible with \LaTeXe,
+% \pLaTeXe\ is in most part upward compatible with \LaTeXe,
 % but some parameters are adjusted to be suitable for Japanese.
 % Therefore, you should not expect identical output, even though
 % the same source can be processed on both \LaTeXe\ and \pLaTeXe.
@@ -1436,7 +1439,7 @@
 % makeindex$B%3%^%s%I$K$O!"$3$N%*%W%7%g%s$,$"$j$^$;$s!#(B
 %\else
 % Make the Change log and Glossary (Change History) using mendex.
-% `Mendex' is a Japanese index processor, which is mostly upper
+% `Mendex' is a Japanese index processor, which is mostly upward
 % compatible with `makeindex' and automatically handles readings
 % of Kanji words.
 %

Modified: trunk/Master/texmf-dist/source/platex/base/platexrelease.dtx
===================================================================
--- trunk/Master/texmf-dist/source/platex/base/platexrelease.dtx	2020-04-12 21:27:51 UTC (rev 54696)
+++ trunk/Master/texmf-dist/source/platex/base/platexrelease.dtx	2020-04-12 21:29:19 UTC (rev 54697)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %% File: platexrelease.dtx
 %
-%  Copyright (c) 2016-2019 Japanese TeX Development Community
+%  Copyright (c) 2016-2020 Japanese TeX Development Community
 %
 %  This file is part of the pLaTeX2e system (community edition).
 %  -------------------------------------------------------------
@@ -31,6 +31,7 @@
 % \changes{v1.0m}{2018/05/22}{reset \cs{\requestedLaTeXdate} for
 %      current and latest options
 %      (sync with latexrelease.dtx 2018/05/08 v1.0k)}
+% \changes{v1.0n}{2020/03/28}{$B at h$K(Blatexrelease$B$,FI$_9~$^$l$F$$$?$i7Y9p(B}
 % \fi
 %
 % \iffalse
@@ -40,7 +41,7 @@
 \ProvidesFile{platexrelease.dtx}
 %</driver>
 %<platexrelease>\ProvidesPackage{platexrelease}
-          [2018/05/22 v1.0m latexrelease support for pLaTeX Kernel
+          [2020/03/28 v1.0n latexrelease support for pLaTeX Kernel
               (including releases up to \platexreleaseversion)]
 %<*driver>
 \documentclass{jltxdoc}
@@ -198,9 +199,25 @@
 %
 % \section{$B%3!<%I(B}
 %
+% \Lpack{platexrelease}$B%Q%C%1!<%8$,FI$_9~$^$l$^$7$?$N$G!"(B
+% $B8zN(2=$N$?$a(B|\begin{document|$B$G$N3NG'%3!<%I$rL58z2=$7$^$9!#(B
+% $B!J(B\file{plvers.dtx}$B$N(B2020/03/28 v1.1u$B0J9_!K!#(B
+%    \begin{macrocode}
+%<*platexrelease>
+\ifx\p at warn@latexrelease\@undefined\else
+\let\p at warn@latexrelease\relax
+\fi
+%    \end{macrocode}
+%
 % $B:G=i$K(B\Lpack{latexrelease}$B%Q%C%1!<%8$rFI$_9~$_$^$9!#(B
+% $B$3$l$h$jA0$K$9$G$KFI$_9~$^$l$F$$$k>l9g$O7Y9p$7$^$9!#(B
+% \changes{v1.0n}{2020/03/28}{$B at h$K(Blatexrelease$B$,FI$_9~$^$l$F$$$?$i7Y9p(B}
 %    \begin{macrocode}
-%<*platexrelease>
+\ifx\latexreleaseversion\@undefined\else
+  \PackageWarningNoLine{platexrelease}{%
+    Package `latexrelease' is already loaded;\MessageBreak
+    load `platexrelease' earlier}
+\fi
 \RequirePackageWithOptions{latexrelease}
 %    \end{macrocode}
 %
@@ -300,7 +317,6 @@
 %    \begin{macrocode}
 \let\pfmtversion\requestedplpatchdate
 \let\currentpLaTeXdate\requestedpLaTeXdate
-%</platexrelease>
 %    \end{macrocode}
 %
 % $B$3$N$"$H$O!"(Bp\LaTeXe{}$B$N%+!<%M%k$NJQ99E@$r<($9%3!<%I$,F~$j$^$9!#(B
@@ -323,6 +339,12 @@
       some critical bugs. We advise you to\MessageBreak
       select another format date}
 \plIncludeInRelease{2017/10/28}{\PackageWarning}{pLaTeX Info}%
+  % * <2020-04-12>
+  % * <2020-02-02>+3
+  % * <2020-02-02>+2
+  % * <2020-02-02>+1
+  % * <2020-02-02>
+  % * <2019-10-01>+1
   % * <2019-10-01>
   % * <2019-04-06>
   % * <2018-12-01>
@@ -377,6 +399,7 @@
 \plIncludeInRelease{0000/00/00}{\PackageWarning}{pLaTeX Info}%
   % * <2006/11/10>
 \plEndIncludeInRelease
+%</platexrelease>
 %    \end{macrocode}
 %
 % \Finale

Modified: trunk/Master/texmf-dist/source/platex/base/plcore.dtx
===================================================================
--- trunk/Master/texmf-dist/source/platex/base/plcore.dtx	2020-04-12 21:27:51 UTC (rev 54696)
+++ trunk/Master/texmf-dist/source/platex/base/plcore.dtx	2020-04-12 21:29:19 UTC (rev 54697)
@@ -3,7 +3,7 @@
 %
 %  Copyright 1994-2001 ASCII Corporation.
 %  Copyright (c) 2010 ASCII MEDIA WORKS
-%  Copyright (c) 2016-2019 Japanese TeX Development Community
+%  Copyright (c) 2016-2020 Japanese TeX Development Community
 %
 %  This file is part of the pLaTeX2e system (community edition).
 %  -------------------------------------------------------------
@@ -123,6 +123,7 @@
 % \changes{v1.3d}{2019/10/19}{$BH=Dj=g=x$r=$@5!((Bextended mode$B$+$D(B
 %    FAM256$B3HD%$"$j$N>l9g$K8B$j%l%8%9%??t$,(B65536$B8D$N$?$a!#(B}
 % \changes{v1.3d}{2019/10/19}{$B%3%T!<K:$l(B}
+% \changes{v1.3e}{2020/03/05}{$B9g;z=hM}$rM^;_$7$D$D(B\cs{xkanjiskip}$B$OA^F~(B}
 % \fi
 %
 % \iffalse
@@ -129,7 +130,7 @@
 %<*driver>
 \NeedsTeXFormat{pLaTeX2e}
 % \fi
-\ProvidesFile{plcore.dtx}[2019/10/19 v1.3d pLaTeX core file]
+\ProvidesFile{plcore.dtx}[2020/03/05 v1.3e pLaTeX core file]
 % \iffalse
 \documentclass{jltxdoc}
 \GetFileInfo{plcore.dtx}
@@ -1876,7 +1877,41 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\do at noligs}
+% |>|$B$J$I$N0lIt$NJ8;z$K$D$$$F!"(B|\xspcode`\>=3|$B$H$7$?$H$-$K(B
+% |\texttt{>}|$B$G$OA08e$K(B|\xkanjiskip|$BM3Mh$N%"%-$,F~$k$N$K!"(B
+% |\verb+>+|$B$G$O8e$m$K$7$+%"%-$,F~$i$J$$$H$$$&8=>]$KBP=h$7$^$9!#(B
 %
+% $B85$NDj5A$O(B\file{ltmiscen.dtx}$B$r;2>H$7$F$/$@$5$$!#(B
+% p\LaTeX{}$B$G$O!"(B|\kern\z@|$B$r(B|\vadjust{}|$B$KCV$-49$($k$3$H$G(B
+% $B!V9g;z=hM}$rM^;_!W$+$D!VOB2$J84V%9%Z!<%9$NA^F~=hM}$OF)2a!W$r<B8=$7$^$9!#(B
+% (Issue \#87)
+% \changes{v1.3e}{2020/03/05}{$B9g;z=hM}$rM^;_$7$D$D(B\cs{xkanjiskip}$B$OA^F~(B}
+%    \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2020/04/12}{\do at noligs}
+%<platexrelease>                   {Allow \xkanjiskip while avoiding ligature}%
+%<*plcore|platexrelease>
+\def\do at noligs#1{%
+  \catcode`#1\active
+  \begingroup
+     \lccode`\~`#1\relax
+     \lowercase{\endgroup\def~{\leavevmode\vadjust{}\char`#1}}}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\do at noligs}
+%<platexrelease>                   {LaTeX2e original}%
+%<platexrelease>\def\do at noligs#1{%
+%<platexrelease>  \catcode`#1\active
+%<platexrelease>  \begingroup
+%<platexrelease>     \lccode`\~`#1\relax
+%<platexrelease>     \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1}}}
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+%    \end{macrocode}
+% \end{macro}
+%
+%
 % \subsection{tabbing$B4D6-(B}
 %
 % \begin{macro}{\@startline}

Modified: trunk/Master/texmf-dist/source/platex/base/plfonts.dtx
===================================================================
--- trunk/Master/texmf-dist/source/platex/base/plfonts.dtx	2020-04-12 21:27:51 UTC (rev 54696)
+++ trunk/Master/texmf-dist/source/platex/base/plfonts.dtx	2020-04-12 21:29:19 UTC (rev 54697)
@@ -145,6 +145,21 @@
 %    (sync with ltfssaxes.dtx 2020/02/27 v1.0d)}
 % \changes{v1.6z}{2020/02/28}{Drop surplus ``m'' from \cs{target at series@value}
 %    (sync with ltfssini.dtx 2020/02/25 v3.1j)}
+% \changes{v1.7}{2020/03/05}{\cs{series at maybe@drop at one@m at x}$B$NB8:_3NG'(B}
+% \changes{v1.7}{2020/03/05}{$B0z?t!&%j%9%H$H$b(B\cs{detokenize}$B$K$h$C$FJ8;zNs2=(B}
+% \changes{v1.7}{2020/03/05}{\cs{do at subst@correction}$B$NF|K\8l2=(B}
+% \changes{v1.7a}{2020/03/06}{\cs{@defaultfamilyhook}$B$r3hMQ(B
+%    (sync with ltfssini.dtx 2020/02/10 v3.1h)}
+% \changes{v1.7b}{2020/03/14}{$B8E$$(B\LaTeXe{}$B$G$b%U%)!<%^%C%H at 8@.$,DL$k$h$&$K(B}
+% \changes{v1.7c}{2020/03/15}{\cs{fontshape}/\cs{fontshapeforce}$B$,(B
+%    $BOBJ8%7%'%$%WL$Dj5A$N>l9g$O(B\cs{k at shape}$B$r99?7$7$J$$$h$&$KJQ99(B}
+% \changes{v1.7d}{2020/03/23}{$B%I%-%e%a%s%H2~NI(B}
+% \changes{v1.7e}{2020/03/26}{$B=D2#%(%s%3!<%G%#%s%0$N%;%C%H2=3NG'(B}
+% \changes{v1.7e}{2020/03/26}{\cs{wrong at fontshape}$B$NOBJ8BP1~(B}
+% \changes{v1.7e}{2020/03/26}{\cs{default at k@...}$B$r;HMQ(B}
+% \changes{v1.7f}{2020/04/07}{Support legacy use of \cs{bfdefault}
+%    and \cs{mddefault}, use \cs{@setYYseriesdefaultshook}
+%    (sync with ltfssini.dtx 2020/03/19 v3.1k and 2020/04/06 v3.1m)}
 % \fi
 %
 % \iffalse
@@ -151,7 +166,7 @@
 %<*driver>
 \NeedsTeXFormat{pLaTeX2e}
 % \fi
-\ProvidesFile{plfonts.dtx}[2020/02/28 v1.6z pLaTeX New Font Selection Scheme]
+\ProvidesFile{plfonts.dtx}[2020/04/07 v1.7f pLaTeX New Font Selection Scheme]
 % \iffalse
 \documentclass{jltxdoc}
 \GetFileInfo{plfonts.dtx}
@@ -209,9 +224,63 @@
 % \MakeShortVerb{\|}
 %
 %
+% \subsection{$B3HD%%3%^%s%I(B}
+% \pLaTeXe{}$B$O!"0J2<$N?7$7$$%3%^%s%I$rDj5A$7$^$9!#(B
 %
+% \DeleteShortVerb{\|}
+% \MakeShortVerb{\+}
+% \begin{center}
+% \begin{tabular}{l|l}
+% \emph{$B%3%^%s%I(B} & \emph{$B0UL#(B}\\\hline
+% +\Declare{Yoko|Tate}KanjiEncoding+ & $BOBJ8%(%s%3!<%I$N at k8@(B\\
+% +\DeclareKanjiEncodingDefaults+ &
+%        $B%G%U%)%k%H$NOBJ8%(%s%3!<%I$N at k8@(B\\
+% +\KanjiEncodingPair+ & $BOBJ8%(%s%3!<%I$N%;%C%H2=(B\\
+% +\DeclareKanjiFamily+ & $B%U%!%_%j$N at k8@(B\\
+% +\DeclareKanjiSubstitution+ & $BOBJ8$NBeMQ%U%)%s%H$N at k8@(B\\
+% +\DeclareErrorKanjiFont+ & $BOBJ8$N%(%i!<%U%)%s%H$N at k8@(B \\
+% +\reDeclareMathAlphabet+ & $BOB2$J8$rF1;~$K at Z$jBX$($k%3%^%s%I at k8@(B\\
+% +\{Declare|Set}RelationFont+ & $B=>B0=qBN$N at k8@(B\\
+% +\userelfont+ & $B2$J8=qBN$r=>B0=qBN$K$9$k(B\\
+% +\adjustbaseline+ & $B%Y!<%9%i%$%s%7%U%HNL$N at _Dj(B\\
+% +\{roman|kanji}encoding+ & $B%(%s%3!<%I$N;XDj(B\\
+% +\{roman|kanji}family+ & $B%U%!%_%j$N;XDj(B\\
+% +\{roman|kanji}series[force]+ & $B%7%j!<%:$N;XDj(B\\
+% +\{roman|kanji}shape[force]+ & $B%7%'%$%W$N;XDj(B\\
+% +\use{roman|kanji}+ & $B=qBN$N at Z$jBX$((B\\
+% +\mcfamily+, +\gtfamily+ & $BOBJ8=qBN$rL at D+BN!"%4%7%C%/BN$K$9$k(B\\
+% \end{tabular}
+% \end{center}
+% \DeleteShortVerb{\+}
+% \MakeShortVerb{\|}
+%
+% $B$5$i$K!"%*%j%8%J%k$N(B\LaTeXe{}$B$N0J2<$N%3%^%s%I$r:FDj5A$7$^$9!#(B
+%
+% \DeleteShortVerb{\|}
+% \MakeShortVerb{\+}
+% \begin{center}
+% \begin{tabular}{l|l}
+% \emph{$B%3%^%s%I(B} & \emph{$B0UL#(B}\\\hline
+% +\DeclareFontEncoding+ & $B%(%s%3!<%I$N at k8@(B\\
+% +\DeclareFontFamily+ & $B%U%!%_%j$N at k8@(B\\
+% +\DeclareFixedFont+ & $B%U%)%s%H$NL>A0$N at k8@(B \\
+% +\selectfont+ & $B%U%)%s%H$r at Z$jBX$($k(B\\
+% +\set at fontsize+ & $B%U%)%s%H%5%$%:$NJQ99(B\\
+% +\fontencoding+ & $B%(%s%3!<%I$N;XDj(B\\
+% +\fontfamily+ & $B%U%!%_%j$N;XDj(B\\
+% +\fontseries[force]+ & $B%7%j!<%:$N;XDj(B\\
+% +\fontshape[force]+ & $B%7%'%$%W$N;XDj(B\\
+% +\usefont+ & $B=qBN$N at Z$jBX$((B\\
+% +\normalfont+ & $B%G%U%)%k%HCM$N at _Dj$K at Z$jBX$($k(B\\
+% +\bfseries+, +\mdseries+ & $B%7%j!<%:$rB@;z!"Cf;z$K$9$k(B\\
+% \end{tabular}
+% \end{center}
+% \DeleteShortVerb{\+}
+% \MakeShortVerb{\|}
+%
+%
 % \section{$B%3!<%I(B}\label{plfonts:codes}
-% $B$3$N at a$G!"6qBNE*$K(B\NFSS2$B$r3HD%$9$k%3%^%s%I$d%^%/%m$NDj5A$r9T$J$C$F$$$^$9!#(B
+% $B$3$N at a$G!"<B:]$N%3!<%I$r at bL@$7$^$9!#(B
 %
 % \subsection{$B=`Hw(B}
 % \NFSS2$B$r3HD%$9$k$?$a$N=`Hw$G$9!#(B
@@ -218,7 +287,12 @@
 % $BOBJ8%U%)%s%H$NB0 at -$r3JG<$9$k%*%V%8%'%/%H$dD9$5JQ?t!"(B
 % $BB0 at -$r at ZBX$($k:]$NH=CG:`NA$H$7$F;H$&%j%9%H$J$I$rDj5A$7$F$$$^$9!#(B
 %
-% \file{ptrace}$B%Q%C%1!<%8$O(B\LaTeX{}$B$N(B\file{tracefnt}$B%Q%C%1!<%8$K0MB8$7$^$9!#(B
+% \LaTeX{}$B$N(B\file{tracefnt}$B%Q%C%1!<%8$KAjEv$9$k%G%P%C%05!G=$O!"(B
+% \pLaTeX{}$B$G$O(B\file{ptrace}$B%Q%C%1!<%8$GDs6!$7$^$9!#(B
+% $B0JA0!J%"%9%-!<HG!K$G$O(B\file{ptrace}$B$NA0$K(B\file{tracefnt}$B$r(B
+% $B<jF0$G(B|\usepackage|$B$9$kI,MW$,$"$j$^$7$?$,!"(B
+% $B%3%_%e%K%F%#HG$G$O(B\file{ptrace}$B$,<+F0$G(B\file{tracefnt}$B$r(B
+% $BFI$_9~$`$h$&$K2~NI$7$F$"$j$^$9!#(B
 % \changes{v1.6b}{2016/04/30}{ptrace.sty$B$NKAF,$G(Btracefnt.sty$B$r(B
 %    \cs{RequirePackageWithOptions}$B$9$k$h$&$K$7$?(B}
 %    \begin{macrocode}
@@ -225,7 +299,7 @@
 %<*trace>
 \NeedsTeXFormat{pLaTeX2e}
 \ProvidesPackage{ptrace}
-     [2019/09/16 v1.6t Standard pLaTeX package (font tracing)]
+     [2020/03/26 v1.7e Standard pLaTeX package (font tracing)]
 \RequirePackageWithOptions{tracefnt}
 %</trace>
 %    \end{macrocode}
@@ -373,7 +447,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \subsubsection{$B0l;~%3%^%s%I(B}
+% \subsubsection{$B0l;~%3%^%s%I(B}\label{afont-ascii}
 %
 % \begin{macro}{\afont}
 % \LaTeX{}$BFbIt$N(B|\do at subst@correction|$B%^%/%m$G$O!"(B
@@ -402,12 +476,44 @@
 % 
 % \begin{macro}{\inlist@}
 % $B<!$N%3%^%s%I$O!"%(%s%3!<%I$d%U%!%_%j$N%j%9%HFb$KBhFs0z?t$G;XDj$5$l$?J8;zNs(B
-% $B$,$"$k$+$I$&$+$rD4$Y$k%^%/%m$G$9!#(B
+% $B$,$"$k$+$I$&$+$rD4$Y$k%^%/%m$G$9!#7k2L$O(B\cs{ifin@}$B$K3JG<$5$l$^$9!#(B
+% $BBhFs0z?t$O%j%9%H$=$N$b$N!J%j%9%H$,3JG<$5$l$?%^%/%m$G$O$J$/!K$r;XDj$9$k$3$H$K$J$j$^$9!#(B
+% $BE57?E*$K$O0J2<$N$h$&$K8F$S=P$7$^$9!#(B
+%\begin{verbatim}
+% \edef\tmp at item{{\k at encoding}}%
+% \expandafter\expandafter\expandafter
+% \inlist@\expandafter\tmp at item\expandafter{\kyenc at list}
+%\end{verbatim}
+%
+% |\do at subst@correction|$B$NF|K\8l2=$KI,MW$J$N$G!"(B
+% \pLaTeXe~2020-04-12$B0J9_$G$OHf3S;~$K(B
+% $B0z?t!&%j%9%H$H$b(B\cs{detokenize}$B$K$h$C$FJ8;zNs2=$9$k$h$&$K$7$^$7$?!#(B
+% \changes{v1.7}{2020/03/05}{$B0z?t!&%j%9%H$H$b(B\cs{detokenize}$B$K$h$C$FJ8;zNs2=(B}
 %    \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2020/04/12}{\inlist@}
+%<platexrelease>                   {Detokenize}%
+%<*plcore|platexrelease>
 \def\inlist@#1#2{%
-  \def\in@@##1<#1>##2##3\in@@{%
-    \ifx\in@##2\in at false\else\in at true\fi}%
-  \in@@#2<#1>\in@\in@@}
+  \edef\reserved at a{%
+    \unexpanded{\def\in@@##1<}%
+    \detokenize{#1}%
+    \unexpanded{>##2##3\in@@{\ifx\in@##2\in at false\else\in at true\fi}\in@@}%
+    \detokenize{#2}%
+    \unexpanded{<}%
+    \detokenize{#1}%
+    \unexpanded{>\in@\in@@}}%
+  \reserved at a}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\inlist@}
+%<platexrelease>                   {ASCII Corporation original}%
+%<platexrelease>\def\inlist@#1#2{%
+%<platexrelease>  \def\in@@##1<#1>##2##3\in@@{%
+%<platexrelease>    \ifx\in@##2\in at false\else\in at true\fi}%
+%<platexrelease>  \in@@#2<#1>\in@\in@@}
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
 %    \end{macrocode}
 % \end{macro}
 %
@@ -499,20 +605,19 @@
 % \subsubsection{$B;YCl(B}
 % $B9T4V$ND4 at 0$J$I$KMQ$$$k;YCl$G$9!#(B
 % $B;YCl$N$b$H$H$J$k%\%C%/%9$NBg$-$5$O!"%U%)%s%H%5%$%:$,JQ99$5$l$k$?$S$K!"(B
-% |\set at fontsize|$B%3%^%s%I$K$h$C$FJQ2=$7$^$9!#(B
+% |\set at fontsize|$B%3%^%s%I$K$h$C$F99?7$5$l$^$9!#(B
 %
-% $B%U%)%s%H%5%$%:$,JQ99$5$l$?$H$-$K!"(B|\set at fontsize|$B%3%^%s%I$G99?7$5$l$^$9!#(B
-%
+% $B%3%_%e%K%F%#HG(B\pLaTeXe~2017/04/08$B$G$NJQ99!'(B
 % $B=>Mh!"2#AH%\%C%/%9MQ$N;YCl$O(B|\strutbox|$B$G!"9b$5$H?<$5$,(B7$BBP(B3$B$H$J$C$F$$$^$7$?!#(B
 % $B$3$l$O(Bp\LaTeX{}$BC1BN$G$OLdBj$K$J$j$^$;$s$G$7$?$,!"3$30@=$N(B\LaTeX{}$B%Q%C%1!<%8$r(B
 % $B=DAH$G;HMQ$7$?>l9g$K!"0U?^$7$J$$I}$d9b$5$,<hF@$5$l$k$3$H$,$"$j$^$7$?!#(B
 % $B$3$NITET9g$r2sHr$9$k$?$a!"%3%_%e%K%F%#HG(Bp\LaTeX{}$B$G$O<!$NJ}K!$r$H$j$^$9!#(B
 % \begin{itemize}
-% \item |\ystrutbox|$B!J?7 at _!K!'9b$5$H?<$5$,(B7$BBP(B3$B$N2#AH%\%C%/%9MQ$N;YCl(B
-% \item |\tstrutbox|$B!'9b$5$H?<$5$,(B5$BBP(B5$B$N=DAH%\%C%/%9MQ$N;YCl(B
-% \item |\zstrutbox|$B!'9b$5$H?<$5$,(B7$BBP(B3$B$N=DAH%\%C%/%9MQ$N;YCl(B
+% \item |\ystrutbox|$B!J?7 at _!K!'9b$5$H?<$5$,(B7$BBP(B3$B$N2#AHMQ$N;YCl%\%C%/%9%l%8%9%?(B
+% \item |\tstrutbox|$B!'9b$5$H?<$5$,(B5$BBP(B5$B$N=DAHMQ$N;YCl%\%C%/%9%l%8%9%?(B
+% \item |\zstrutbox|$B!'9b$5$H?<$5$,(B7$BBP(B3$B$N=DAHMQ$N;YCl%\%C%/%9%l%8%9%?(B
 % \item |\strutbox|$B!J;EMMJQ99!K!'=D2#$N%G%#%l%/%7%g%s$K1~$8$F(B
-%                     |\tstrutbox|$B$^$?$O(B|\ystrutbox|$B$KE83+$5$l$k%^%/%m(B
+%                     |\tstrutbox|$B$^$?$O(B|\ystrutbox|$B$KE83+$5$l$k(B\emph{$B%^%/%m(B}
 % \end{itemize}
 % $B$9$J$o$A!"=>Mh$N(Bp\LaTeX{}$B$K$*$1$k(B|\strutbox|$B$HF1$85sF0$r<($9$N$,!"(B
 % $B?7 at _$5$l$?(B|\ystrutbox|$B$H$$$&$3$H$K$J$j$^$9!#(B
@@ -530,7 +635,7 @@
 % \end{macro}
 %
 % \begin{macro}{\ystrutbox}
-% |\ystrutbox|$B$O9b$5$H?<$5$,(B7$BBP(B3$B$N2#AH%\%C%/%9MQ$N;YCl$G$9!#(B
+% |\ystrutbox|$B$O9b$5$H?<$5$,(B7$BBP(B3$B$N2#AHMQ$N;YCl%\%C%/%9$G$9!#(B
 % \changes{v1.6f}{2017/02/20}{\cs{ystrutbox}$B$rDI2C(B}
 %    \begin{macrocode}
 %</plcore>
@@ -666,41 +771,10 @@
 %
 %
 %
-% \subsection{$B%3%^%s%I(B}
-% $B<!$N%3%^%s%I$NDj5A$r$7$F$$$^$9!#(B
+% \subsection{\NFSS2$B$N3HD%%3%^%s%I(B}
+% \NFSS2$B$N3HD%%3%^%s%I$rDj5A$7$^$9!#(B
 %
-% \DeleteShortVerb{\|}
-% \MakeShortVerb{\+}
-% \begin{center}
-% \begin{tabular}{l|l}
-% \emph{$B%3%^%s%I(B} & \emph{$B0UL#(B}\\\hline
-% +\Declare{Font|YokoKanji|TateKanji}Encoding+ & $B%(%s%3!<%I$N at k8@(B\\
-% +\Declare{Yoko|Tate}KanjiEncodingDefaults+ &
-%        $B%G%U%)%k%H$NOBJ8%(%s%3!<%I$N at k8@(B\\
-% +\Declare{Font|Kanji}Family+ & $B%U%!%_%j$N at k8@(B\\
-% +\DeclareKanjiSubstitution+ & $BOBJ8$NBeMQ%U%)%s%H$N at k8@(B\\
-% +\DeclareErrorKanjiFont+ & $BOBJ8$N%(%i!<%U%)%s%H$N at k8@(B \\
-% +\DeclareFixedFont+ & $B%U%)%s%H$NL>A0$N at k8@(B \\
-% +\reDeclareMathAlphabet+ & $BOB2$J8$rF1;~$K at Z$jBX$($k%3%^%s%I at k8@(B\\
-% +\{Declare|Set}RelationFont+ & $B=>B0=qBN$N at k8@(B\\
-% +\userelfont+ & $B2$J8=qBN$r=>B0=qBN$K$9$k(B\\
-% +\selectfont+ & $B%U%)%s%H$r at Z$jBX$($k(B\\
-% +\set at fontsize+ & $B%U%)%s%H%5%$%:$NJQ99(B\\
-% +\adjustbaseline+ & $B%Y!<%9%i%$%s%7%U%HNL$N at _Dj(B\\
-% +\{font|roman|kanji}encoding+ & $B%(%s%3!<%I$N;XDj(B\\
-% +\{font|roman|kanji}family+ & $B%U%!%_%j$N;XDj(B\\
-% +\{font|roman|kanji}series+ & $B%7%j!<%:$N;XDj(B\\
-% +\{font|roman|kanji}shape+ & $B%7%'%$%W$N;XDj(B\\
-% +\use{font|roman|kanji}+ & $B=qBN$N at Z$jBX$((B\\
-% +\normalfont+ & $B%G%U%)%k%HCM$N at _Dj$K at Z$jBX$($k(B\\
-% +\mcfamily+,+\gtfamily+ & $BOBJ8=qBN$rL at D+BN!"%4%7%C%/BN$K$9$k(B\\
-% +\textunderscore+ & $B%F%-%9%H%b!<%I$G$N2<@~%^%/%m(B\\
-% \end{tabular}
-% \end{center}
-% \DeleteShortVerb{\+}
-% \MakeShortVerb{\|}
-%
-%
+% \subsubsection{$B%(%s%3!<%I$N at k8@(B}
 % \begin{macro}{\DeclareFontEncoding}
 % \begin{macro}{\DeclareFontEncoding@}
 % $B2$J8%(%s%3!<%I$r at k8@$9$k$?$a$N%3%^%s%I$G$9!#(B
@@ -921,6 +995,7 @@
 %
 % \begin{macro}{\DeclareKanjiEncodingDefaults}
 % $BOBJ8%(%s%3!<%I$N%G%U%)%k%HCM$r at k8@$9$k%3%^%s%I$G$9!#(B
+% |\DeclareFontEncodingDefaults|$B$KAjEv$7$^$9!#(B
 %    \begin{macrocode}
 \def\DeclareKanjiEncodingDefaults#1#2{%
   \ifx\relax#1\else
@@ -945,6 +1020,7 @@
 % \begin{macro}{\KanjiEncodingPair}
 % $BOBJ8$N=D2#$N%(%s%3!<%G%#%s%0$O$=$l$>$lBP$K$7$F07$&$?$a!"%;%C%H2=$9$k$?$a$N(B
 % $B%3%^%s%I$rDj5A$7$^$9!#(B
+% $BBh0l0z?t$,2#AHMQ!"BhFs0z?t$,=DAHMQ$G$9!#(B
 % \changes{v1.3n}{2004/08/10}{$BOBJ8%(%s%3!<%G%#%s%0$N at Z$jBX$($rM-8z2=(B}
 %    \begin{macrocode}
 \def\KanjiEncodingPair#1#2{\@namedef{t at enc@#1}{#2}\@namedef{y at enc@#2}{#1}}
@@ -951,7 +1027,50 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\ensure at KanjiEncodingPair}
+% $B2#=q$-$H=D=q$-$N%(%s%3!<%G%#%s%0$OI,$:(B|\KanjiEncodingPair|$B$G(B
+% $B%;%C%H2=$7$J$$$H;H$($^$;$s!#$b$7%;%C%H2=$5$l$F$$$J$1$l$P!"(B
+% $BL at 2w$J%(%i!<$GCN$i$;$^$9!#(B
+% ^^A $B:G6a$N(B\file{plfonts.dtx}$B$NJQ99(B(2017/11/06 v1.6j)$B$G!"(B
+% ^^A u\pLaTeX{}$B$H(B\pLaTeX{}$B$N%=!<%96&DL2=$N0l4D$H$7$F(B
+% ^^A $B<B9T%3!<%I(B|\KanjiEncodingPair{JY1}{JT1}|$B$r(B
+% ^^A \file{plcore.ltx}$B$+$i(B\file{pldefs.ltx}$B$X0\F0$7$?$N$G!"(B
+% ^^A $BK|$,0l8E$$(B\file{pldefs.cfg}$B$,FI$_9~$^$l$?>l9g$K<B9T$5$l$J$$2DG=@-$,$"$k!#(B
+% \changes{v1.7e}{2020/03/26}{$B=D2#%(%s%3!<%G%#%s%0$N%;%C%H2=3NG'(B}
+%    \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2020/04/12}{\ensure at KanjiEncodingPair}
+%<platexrelease>                   {Check \KanjiEncodingPair}%
+%<*plcore|platexrelease>
+\def\ensure at KanjiEncodingPair#1{%
+  \edef\reserved at a{\csname #1 at enc@\k at encoding\endcsname}%
+  \edef\reserved at b{\csname c#1 at encoding\endcsname}%
+%    \end{macrocode}
+% |\reserved at a|$B$O!"%;%C%H2=$,M-8z$J$i%(%s%3!<%I$rI=$9J8;z%H!<%/%sNs!"(B
+% $BL58z$J$i(B|\relax|$B$HF15A$N@)8fDV$KE83+$5$l$k%^%/%m$G$9!#(B
+% $B$3$3$G!"(B|\ifcat|$B!JE83+ITG=%H!<%/%s$,8=$l$k$^$GE83+$7$F$+$iHf3S!K$r;H$$$^$9!#(B
+% ^^A $BJ8;z%H!<%/%sNs$OJ#?tJ8;z$+$i at .$jF@$k$,!"(B
+% ^^A |\relax|$B$H at hF,0lJ8;z$NHf3S$OI,$:56$H$J$j!";D$j$NJ8;z$OFI$_Ht$P$5$l$k!#(B
+% ^^A $B@)8fDV$N>l9g$OI,$:%H!<%/%s(B1$B8D$G$"$j!"(B|\relax|$B$H$NHf3S$G??$K$J$k!#(B
+%    \begin{macrocode}
+  \ifcat\relax\reserved at a
+    \@latex at error
+      {KANJI Encoding pair for `\k at encoding' undefined}%
+      {Use \string\KanjiEncodingPair, falling back to `\reserved at b'...}%
+    \expandafter\edef\reserved at a{\reserved at b}%
+  \fi}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\ensure at KanjiEncodingPair}
+%<platexrelease>                   {ASCII Corporation original}%
+%<platexrelease>\let\ensure at KanjiEncodingPair\@undefined
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+%    \end{macrocode}
+% \end{macro}
 %
+%
+% \subsubsection{$B%U%!%_%j$N at k8@(B}
 % \begin{macro}{\DeclareFontFamily}
 % $B2$J8%U%!%_%j$r at k8@$9$k$?$a$N%3%^%s%I$G$9!#(B
 % |\ffam at list|$B$r:n$k$h$&$K:FDj5A$r$7$^$9!#(B
@@ -1004,10 +1123,15 @@
 % \end{macro}
 %
 % \begin{macro}{\DeclareKanjiSubstitution}
-% $BL\E*$NOBJ8%U%)%s%H$,8+$D$+$i$J$+$C$?$H$-$K;H$&%U%)%s%H$N at k8@$r$9$k(B
-% $B%3%^%s%I$G$9!#(B
-% |\DeclareFontSubstitution|$B$KBP1~$7$^$9!#(B
+% $BL\E*$NOBJ8%U%)%s%H$,8+$D$+$i$J$+$C$?$H$-$K;H$&BeMQ=qBN$N(B
+% $B at k8@$r$9$k%3%^%s%I$G$9!#(B
+% |\DeclareFontSubstitution|$B$KAjEv$7$^$9!#(B
+% \changes{v1.7e}{2020/03/26}{\cs{default at k@...}$B$r;HMQ(B}
 %    \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2020/04/12}{\DeclareKanjiSubstitution}
+%<platexrelease>                   {Use \default at k@family etc.}%
+%<*plcore|platexrelease>
 \def\DeclareKanjiSubstitution#1#2#3#4{%
   \expandafter\ifx\csname T@#1\endcsname\relax
     \@latex at error{KANJI Encoding scheme `#1' unknown}\@eha
@@ -1025,10 +1149,54 @@
        \cdp at list
        \xdef\cdp at list{\the\toks@}%
     \endgroup
-    \global\@namedef{D@#1}{\def\default at family{#2}%
-                           \def\default at series{#3}%
-                           \def\default at shape{#4}}%
+    \global\@namedef{D@#1}{\def\default at k@family{#2}% !!!
+                           \def\default at k@series{#3}% !!!
+                           \def\default at k@shape{#4}}% !!!
   \fi}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\DeclareKanjiSubstitution}
+%<platexrelease>                   {ASCII Corporation original}%
+%<platexrelease>\def\DeclareKanjiSubstitution#1#2#3#4{%
+%<platexrelease>  \expandafter\ifx\csname T@#1\endcsname\relax
+%<platexrelease>    \@latex at error{KANJI Encoding scheme `#1' unknown}\@eha
+%<platexrelease>  \else
+%<platexrelease>    \begingroup
+%<platexrelease>       \def\reserved at a{#1}%
+%<platexrelease>       \toks@{}%
+%<platexrelease>       \def\cdp at elt##1##2##3##4{%
+%<platexrelease>         \def\reserved at b{##1}%
+%<platexrelease>         \ifx\reserved at a\reserved at b
+%<platexrelease>           \addto at hook\toks@{\cdp at elt{#1}{#2}{#3}{#4}}%
+%<platexrelease>         \else
+%<platexrelease>           \addto at hook\toks@{\cdp at elt{##1}{##2}{##3}{##4}}%
+%<platexrelease>         \fi}%
+%<platexrelease>       \cdp at list
+%<platexrelease>       \xdef\cdp at list{\the\toks@}%
+%<platexrelease>    \endgroup
+%<platexrelease>    \global\@namedef{D@#1}{\def\default at family{#2}%
+%<platexrelease>                           \def\default at series{#3}%
+%<platexrelease>                           \def\default at shape{#4}}%
+%<platexrelease>  \fi}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>% !!! Special case BEGIN
+%<platexrelease>% required for any emulation date
+%<platexrelease>% copied from (u)pldefs.ltx
+%<platexrelease>\def\pltx at tempa{JY1}\ifx\pltx at tempa\k at encoding
+%<platexrelease>\DeclareKanjiSubstitution{JY1}{mc}{m}{n}
+%<platexrelease>\DeclareKanjiSubstitution{JT1}{mc}{m}{n}
+%<platexrelease>\else\def\pltx at tempa{JY2}\ifx\pltx at tempa\k at encoding
+%<platexrelease>\DeclareKanjiSubstitution{JY2}{mc}{m}{n}
+%<platexrelease>\DeclareKanjiSubstitution{JT2}{mc}{m}{n}
+%<platexrelease>\fi\fi
+%<platexrelease>% emulate execution of \enc at update in \selectfont
+%<platexrelease>% before (u)pldefs.ltx is loaded
+%<platexrelease>\csname D@\f at encoding\endcsname
+%<platexrelease>% emulate execution of \kenc at update in \selectfont
+%<platexrelease>% inside (u)pldefs.ltx
+%<platexrelease>\csname D@\k at encoding\endcsname
+%<platexrelease>% !!! Special case END
+%<*plcore>
 \@onlypreamble\DeclareKanjiSubstitution
 %    \end{macrocode}
 % \end{macro}
@@ -1035,6 +1203,8 @@
 %
 % \begin{macro}{\DeclareErrorKanjiFont}
 % |\DeclareErrorFont|$B$KBP1~$9$k%3%^%s%I$G$9!#(B
+% $BBeMQ=qBN$G<($5$l$?=qBN$b8+$D$+$i$J$+$C$?$H$-$K(B
+% $B:G8e$N<jCJ$H$7$F;H$o$l$k%(%i!<=qBN$rDj5A$7$^$9!#(B
 % \changes{v1.6s}{2019/08/13}{\cs{DeclareErrorKanjiFont}:
 %    Don't set any \cs{k at ...} macros
 %    (sync with ltfssbas.dtx 2019/07/09 v3.2c)}
@@ -1075,10 +1245,181 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\wrong at fontshape}
+% \begin{macro}{\wrong at al@fontshape}
+% \begin{macro}{\wrong at ja@fontshape}
+% |\wrong at fontshape|$B$rOBJ8BP1~$K$7$^$9!#(B
+% |\DeclareKanjiSubstitution|$B$G(B|\default at k@...|$B$r;HMQ$9$k2~NI$H(B
+% $BF1;~$G$J$1$l$P$J$j$^$;$s!#(B
+% \changes{v1.7e}{2020/03/26}{\cs{wrong at fontshape}$B$NOBJ8BP1~(B}
 %
+% $B%*%j%8%J%k$N(B\LaTeX{}$B$NDj5A$O!"2$J8MQ$H$7$F;H$$$^$9!#(B
+%    \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2020/04/12}{\wrong at fontshape}
+%<platexrelease>                   {Japanese \wrong at fontshape}%
+%<*plcore|platexrelease>
+\def\wrong at al@fontshape{%
+    \csname D@\f at encoding\endcsname   % install defaults if in math
+    \edef\reserved at a{\csname\curr at fontshape\endcsname}%
+  \ifx\last at fontshape\reserved at a
+     \errmessage{Corrupted NFSS tables}%
+     \error at fontshape
+  \else
+    \let\f at shape\default at shape
+    \expandafter\ifx\csname\curr at fontshape\endcsname\relax
+       \let\f at series\default at series
+        \expandafter
+          \ifx\csname\curr at fontshape\endcsname\relax
+           \let\f at family\default at family
+           \begingroup
+              \try at load@fontshape
+           \endgroup
+        \fi \fi
+  \fi
+     \@font at warning{Font shape `\expandafter\string\reserved at a'
+                     \expandafter\@gobble\string\@undefined\MessageBreak
+                   using `\curr at fontshape' instead\@wrong at font@char}%
+    \global\let\last at fontshape\reserved at a
+    \gdef\@defaultsubs{%
+      \@font at warning{Some font shapes were not available, defaults
+                      substituted.\@gobbletwo}}%
+    \global\expandafter\expandafter\expandafter\let
+       \expandafter\reserved at a
+           \csname\curr at fontshape\endcsname
+    \xdef\font at name{%
+      \csname\curr at fontshape/\f at size\endcsname}%
+    \pickup at font}
+%    \end{macrocode}
+% $BOBJ8MQ$NDj5A$G$9!#(B
+%    \begin{macrocode}
+\def\wrong at ja@fontshape{%
+    \csname D@\f at encoding\endcsname   % install defaults if in math
+    \edef\reserved at a{\csname\curr at fontshape\endcsname}%
+  \ifx\last at fontshape\reserved at a
+     \errmessage{Corrupted NFSS tables}%
+     \error at fontshape
+  \else
+    \let\f at shape\default at k@shape % !!!
+    \expandafter\ifx\csname\curr at fontshape\endcsname\relax
+       \let\f at series\default at k@series % !!!
+        \expandafter
+          \ifx\csname\curr at fontshape\endcsname\relax
+           \let\f at family\default at k@family % !!!
+           \begingroup
+              \try at load@fontshape
+           \endgroup
+        \fi \fi
+  \fi
+     \@font at warning{Font shape `\expandafter\string\reserved at a'
+                     \expandafter\@gobble\string\@undefined\MessageBreak
+                   using `\curr at fontshape' instead\@wrong at font@char}%
+    \global\let\last at fontshape\reserved at a
+    \gdef\@defaultsubs{%
+      \@font at warning{Some font shapes were not available, defaults
+                      substituted.\@gobbletwo}}%
+    \global\expandafter\expandafter\expandafter\let
+       \expandafter\reserved at a
+           \csname\curr at fontshape\endcsname
+    \xdef\font at name{%
+      \csname\curr at fontshape/\f at size\endcsname}%
+    \pickup at font}
+%    \end{macrocode}
+% $B$=$7$F!"%(%s%3!<%G%#%s%0$K1~$8$F2$J8MQ$HOBJ8MQ$r;H$$J,$1$^$9!#(B
+%    \begin{macrocode}
+\def\wrong at fontshape{%
+  \edef\tmp at item{{\f at encoding}}%
+  \expandafter\expandafter\expandafter
+  \inlist@\expandafter\tmp at item\expandafter{\kenc at list}%
+  \ifin@
+    \wrong at ja@fontshape
+  \else
+    \wrong at al@fontshape
+  \fi
+}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2015/01/01}{\wrong at fontshape}
+%<platexrelease>                   {LaTeX2e original (2015)}%
+%<platexrelease>\def\wrong at fontshape{%
+%<platexrelease>    \csname D@\f at encoding\endcsname   % install defaults if in math
+%<platexrelease>    \edef\reserved at a{\csname\curr at fontshape\endcsname}%
+%<platexrelease>  \ifx\last at fontshape\reserved at a
+%<platexrelease>     \errmessage{Corrupted NFSS tables}%
+%<platexrelease>     \error at fontshape
+%<platexrelease>  \else
+%<platexrelease>    \let\f at shape\default at shape
+%<platexrelease>    \expandafter\ifx\csname\curr at fontshape\endcsname\relax
+%<platexrelease>       \let\f at series\default at series
+%<platexrelease>        \expandafter
+%<platexrelease>          \ifx\csname\curr at fontshape\endcsname\relax
+%<platexrelease>           \let\f at family\default at family
+%<platexrelease>           \begingroup
+%<platexrelease>              \try at load@fontshape
+%<platexrelease>           \endgroup
+%<platexrelease>        \fi \fi
+%<platexrelease>  \fi
+%<platexrelease>     \@font at warning{Font shape `\expandafter\string\reserved at a'
+%<platexrelease>                     \expandafter\@gobble\string\@undefined\MessageBreak
+%<platexrelease>                   using `\curr at fontshape' instead\@wrong at font@char}%
+%<platexrelease>    \global\let\last at fontshape\reserved at a
+%<platexrelease>    \gdef\@defaultsubs{%
+%<platexrelease>      \@font at warning{Some font shapes were not available, defaults
+%<platexrelease>                      substituted.\@gobbletwo}}%
+%<platexrelease>    \global\expandafter\expandafter\expandafter\let
+%<platexrelease>       \expandafter\reserved at a
+%<platexrelease>           \csname\curr at fontshape\endcsname
+%<platexrelease>    \xdef\font at name{%
+%<platexrelease>      \csname\curr at fontshape/\f at size\endcsname}%
+%<platexrelease>    \pickup at font}
+%<platexrelease>\let\wrong at al@fontshape\@undefined
+%<platexrelease>\let\wrong at ja@fontshape\@undefined
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\wrong at fontshape}
+%<platexrelease>                   {LaTeX2e original (old)}%
+%<platexrelease>\def\wrong at fontshape{%
+%<platexrelease>    \csname D@\f at encoding\endcsname
+%<platexrelease>    \edef\reserved at a{\csname\curr at fontshape\endcsname}%
+%<platexrelease>  \ifx\last at fontshape\reserved at a
+%<platexrelease>     \errmessage{Corrupted NFSS tables}%
+%<platexrelease>     \error at fontshape
+%<platexrelease>  \else
+%<platexrelease>    \let\f at shape\default at shape
+%<platexrelease>    \expandafter\ifx\csname\curr at fontshape\endcsname\relax
+%<platexrelease>       \let\f at series\default at series
+%<platexrelease>        \expandafter
+%<platexrelease>          \ifx\csname\curr at fontshape\endcsname\relax
+%<platexrelease>           \let\f at family\default at family
+%<platexrelease>        \fi \fi
+%<platexrelease>  \fi
+%<platexrelease>     \@font at warning{Font shape
+%<platexrelease>            `\expandafter\string\reserved at a'
+%<platexrelease>            \expandafter\@gobble\string\@undefined
+%<platexrelease>            \MessageBreak
+%<platexrelease>            using `\curr at fontshape' instead\@wrong at font@char}%
+%<platexrelease>    \global\let\last at fontshape\reserved at a
+%<platexrelease>    \gdef\@defaultsubs{%
+%<platexrelease>      \@font at warning{Some font shapes were not available,
+%<platexrelease>                       defaults substituted.\@gobbletwo}}%
+%<platexrelease>    \global\expandafter\expandafter\expandafter\let
+%<platexrelease>       \expandafter\reserved at a
+%<platexrelease>           \csname\curr at fontshape\endcsname
+%<platexrelease>    \xdef\font at name{%
+%<platexrelease>      \csname\curr at fontshape/\f at size\endcsname}%
+%<platexrelease>    \pickup at font}
+%<platexrelease>\let\wrong at al@fontshape\@undefined
+%<platexrelease>\let\wrong at ja@fontshape\@undefined
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
 % \begin{macro}{\DeclareFixedFont}
 % $B%U%)%s%HL>$r at k8@$9$k%3%^%s%I$G$9!#(B
-%
+% $B%(%s%3!<%I!?%U%!%_%j!?%7%j!<%:!?%7%'%$%W!?%5%$%:$N(B5$B$D$NB0 at -$r(B
+% $B0lEY$K at Z$jBX$($k$?$a$N%3%^%s%I$rDj5A$G$-$^$9!#(B
 % \changes{v1.2}{1995/11/09}{\break\cs{DeclareFixedFont}$B$NF|K\8l2=(B}
 % \changes{v1.3c}{1997/04/09}{$B=D2#%(%s%3!<%I!&%j%9%H$NJ,N%$K$h$k3HD%(B}
 % \changes{v1.3f}{1998/08/10}{$B%W%j%"%s%V%k!&%3%^%s%I$K$7$F$7$^$C$F$$$?$N$r2r=|(B}
@@ -1113,7 +1454,104 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\do at subst@correction}
+% \begin{macro}{\pltx at do@subst at correction@al}
+% \begin{macro}{\pltx at do@subst at correction@yoko}
+% \begin{macro}{\pltx at do@subst at correction@tate}
+% |\font|$B$O2$J8%U%)%s%H$rJV$9$?$a!"(B\LaTeX{}$B$N85$N(B|\do at subst@correction|$B$O(B
+% $BOBJ8%U%)%s%H$KBP$7$F;H$($^$;$s$N$G!"OBJ8$KBP1~$5$;$^$9(B
+% \footnote{\pLaTeXe~2020-04-12$B$GBP1~!#85$N%"%9%-!<HG$NJ8=q$K$b(B
+% $BBh(B\ref{afont-ascii}$B at a$G(B\cs{do at subst@correction}$B$rF|K\8lBP1~$5$;$?;]$,(B
+% $B=q$+$l$F$$$^$7$?$,!"<B:]$K$O$3$NL?Na$O(B
+% \begin{itemize}
+% \item \cs{selectfont}$BFb$N(B\cs{pickup at font}$B$+$i8F$P$l$k>l9g(B
+% \item \cs{getanddefine at fonts}$BFb$N(B\cs{pickup at font}$B$+$i8F$P$l$k>l9g(B
+% \end{itemize}
+% $B$N(B2$BDL$j$,$"$k$h$&$G$9!#A0<T$O(B\cs{let}\cs{font}\cs{jfont}$B$K$h$C$F(B
+% $BBP=h$G$-$F$$$^$7$?$,!"8e<T$OL$BP:v$@$C$?$?$a!"Nc$($P(B
+% $BOBJ8?t<0%U%)%s%H$rDj5A$7$?>uBV$G(Bbm$B%Q%C%1!<%8$r;H$C$?>l9g$K(B
+% $BLdBj$,5/$-$F$$$^$7$?!J;29M!'(Btexjporg/jsclasses\#53$B!K!#(B}$B!#(B
+% \changes{v1.7}{2020/03/05}{\cs{do at subst@correction}$B$NF|K\8l2=(B}
+% \changes{v1.7d}{2020/03/23}{$B%I%-%e%a%s%H2~NI(B}
 %
+% $B%*%j%8%J%k$N(B\LaTeX{}$B$NDj5A$O!"2$J8MQ$H$7$F;H$$$^$9!#(B
+%    \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2020/04/12}{\do at subst@correction}
+%<platexrelease>                   {Japanese font substitution}%
+%<*plcore|platexrelease>
+\def\pltx at do@subst at correction@al{%
+       \xdef\subst at correction{%
+          \font at name
+          \global\expandafter\font
+            \csname \curr at fontshape/\f at size\endcsname
+            \noexpand\fontname\font
+           \relax}%
+       \aftergroup\subst at correction
+}
+%    \end{macrocode}
+% $BOBJ82#AHMQ$HOBJ8=DAHMQ$NDj5A$G$O!"$=$l$>$l(B|\jfont|$B$H(B|\tfont|$B$r;H$$$^$9!#(B
+%    \begin{macrocode}
+\def\pltx at do@subst at correction@yoko{%
+       \xdef\subst at correction{%
+          \font at name
+          \global\expandafter\jfont
+            \csname \curr at fontshape/\f at size\endcsname
+            \noexpand\fontname\jfont
+           \relax}%
+       \aftergroup\subst at correction
+}
+\def\pltx at do@subst at correction@tate{%
+       \xdef\subst at correction{%
+          \font at name
+          \global\expandafter\tfont
+            \csname \curr at fontshape/\f at size\endcsname
+            \noexpand\fontname\tfont
+           \relax}%
+       \aftergroup\subst at correction
+}
+%    \end{macrocode}
+% $B$=$7$F!"%(%s%3!<%G%#%s%0$K1~$8$F(B3$B$D$NL?Na$r;H$$J,$1$^$9!#(B
+%    \begin{macrocode}
+\def\do at subst@correction{%
+  \edef\tmp at item{{\f at encoding}}%
+  \expandafter\expandafter\expandafter
+  \inlist@\expandafter\tmp at item\expandafter{\kyenc at list}%
+  \ifin@\pltx at do@subst at correction@yoko
+  \else
+    \expandafter\expandafter\expandafter
+    \inlist@\expandafter\tmp at item\expandafter{\ktenc at list}%
+    \ifin@\pltx at do@subst at correction@tate\else
+      \pltx at do@subst at correction@al
+    \fi
+  \fi
+}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\do at subst@correction}
+%<platexrelease>                   {LaTeX2e original}%
+%<platexrelease>\def\do at subst@correction{%
+%<platexrelease>       \xdef\subst at correction{%
+%<platexrelease>          \font at name
+%<platexrelease>          \global\expandafter\font
+%<platexrelease>            \csname \curr at fontshape/\f at size\endcsname
+%<platexrelease>            \noexpand\fontname\font
+%<platexrelease>           \relax}%
+%<platexrelease>       \aftergroup\subst at correction
+%<platexrelease>}
+%<platexrelease>\let\pltx at do@subst at correction@al\@undefined
+%<platexrelease>\let\pltx at do@subst at correction@yoko\@undefined
+%<platexrelease>\let\pltx at do@subst at correction@tate\@undefined
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{$B?t<0MQ%U%)%s%H(B}
 % \begin{macro}{\reDeclareMathAlphabet}
 % \changes{v1.0}{1997/01/30}{\break\cs{reDeclareMathAlphabet}$B$rDI2C!#(B
 %    $B$"$j$,$H$&!"(Bymt$B$5$s!#(B}
@@ -1242,6 +1680,7 @@
 % \end{macro}
 %
 %
+% \subsubsection{$B=>B0=qBN$N at k8@(B}
 % \begin{macro}{\DeclareRelationFont}
 % \begin{macro}{\SetRelationFont}
 % $BOBJ8=qBN$KBP$9$k=>B0=qBN$r at k8@$9$k%3%^%s%I$G$9!#(B\emph{$B=>B0=qBN(B}$B$H$O!"(B
@@ -1331,6 +1770,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \subsubsection{$B%U%)%s%H$NA*Br(B}
 % \begin{macro}{\selectfont}
 % |\selectfont|$B$N%*%j%8%J%k$+$i$NJQ99ItJ,$O!"<!$N#3E@$G$9!#(B
 % \begin{itemize}
@@ -1342,10 +1782,13 @@
 % \changes{v1.0c}{1995/08/22}{$B=D2#N>J}$N%U%)%s%H$r at Z$jBX$($k$h$&$K$7$?(B}
 % \changes{v1.2}{1995/11/22}{$B%(%i!<%U%)%s%H$KBP1~$7$?(B}
 % \changes{v1.3n}{2004/08/10}{$BOBJ8%(%s%3!<%G%#%s%0$N at Z$jBX$($rM-8z2=(B}
+% \changes{v1.7e}{2020/03/26}{$B=D2#%(%s%3!<%G%#%s%0$N%;%C%H2=3NG'(B}
 % |\selectfont|$B%3%^%s%I$O!"$^$:!"OBJ8%U%)%s%H$r at Z$jBX$($^$9!#(B
 %    \begin{macrocode}
 %</plcore>
-%<*plcore|trace>
+%<platexrelease|trace>\plIncludeInRelease{2020/04/12}{\selectfont}
+%<platexrelease|trace>                   {Check \KanjiEncodingPair}%
+%<*plcore|platexrelease|trace>
 \DeclareRobustCommand\selectfont{%
   \let\tmp at error@fontshape\error at fontshape
   \let\error at fontshape\error at kfontshape
@@ -1354,6 +1797,7 @@
   \inlist@\expandafter\tmp at item\expandafter{\kyenc at list}%
   \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
     \expandafter\expandafter\expandafter
@@ -1360,6 +1804,7 @@
     \inlist@\expandafter\tmp at item\expandafter{\ktenc at list}%
     \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
@@ -1419,7 +1864,68 @@
     \set at fontsize\baselinestretch\f at size\f at baselineskip
   \fi
   \size at update}
-%</plcore|trace>
+%</plcore|platexrelease|trace>
+%<platexrelease|trace>\plEndIncludeInRelease
+%<platexrelease|trace>\plIncludeInRelease{0000/00/00}{\selectfont}
+%<platexrelease|trace>                   {ASCII Corporation original}%
+%<platexrelease|trace>\DeclareRobustCommand\selectfont{%
+%<platexrelease|trace>  \let\tmp at error@fontshape\error at fontshape
+%<platexrelease|trace>  \let\error at fontshape\error at kfontshape
+%<platexrelease|trace>  \edef\tmp at item{{\k at encoding}}%
+%<platexrelease|trace>  \expandafter\expandafter\expandafter
+%<platexrelease|trace>  \inlist@\expandafter\tmp at item\expandafter{\kyenc at list}%
+%<platexrelease|trace>  \ifin@
+%<platexrelease|trace>    \let\cy at encoding\k at encoding
+%<platexrelease|trace>    \edef\ct at encoding{\csname t at enc@\k at encoding\endcsname}%
+%<platexrelease|trace>  \else
+%<platexrelease|trace>    \expandafter\expandafter\expandafter
+%<platexrelease|trace>    \inlist@\expandafter\tmp at item\expandafter{\ktenc at list}%
+%<platexrelease|trace>    \ifin@
+%<platexrelease|trace>      \let\ct at encoding\k at encoding
+%<platexrelease|trace>      \edef\cy at encoding{\csname y at enc@\k at encoding\endcsname}%
+%<platexrelease|trace>    \else
+%<platexrelease|trace>      \@latex at error{KANJI Encoding scheme `\k at encoding' unknown}\@eha
+%<platexrelease|trace>    \fi
+%<platexrelease|trace>  \fi
+%<platexrelease|trace>  \let\font\tfont
+%<platexrelease|trace>  \let\k at encoding\ct at encoding
+%<platexrelease|trace>  \xdef\font at name{\csname\curr at kfontshape/\f at size\endcsname}%
+%<platexrelease|trace>  \pickup at font
+%<platexrelease|trace>  \font at name
+%<platexrelease|trace>  \let\font\jfont
+%<platexrelease|trace>  \let\k at encoding\cy at encoding
+%<platexrelease|trace>  \xdef\font at name{\csname\curr at kfontshape/\f at size\endcsname}%
+%<platexrelease|trace>  \pickup at font
+%<platexrelease|trace>  \font at name
+%<platexrelease|trace>  \expandafter\def\expandafter\k at encoding\tmp at item
+%<platexrelease|trace>  \kenc at update
+%<platexrelease|trace>  \let\error at fontshape\tmp at error@fontshape
+%<platexrelease|trace>  \if at knjcmd \@knjcmdfalse
+%<platexrelease|trace>    \expandafter\ifx
+%<platexrelease|trace>    \csname rel@\k at encoding/\k at family/\k at series/\k at shape\endcsname\relax
+%<platexrelease|trace>      \expandafter\ifx
+%<platexrelease|trace>         \csname rel@\k at encoding/\k at family/\k at series/all\endcsname\relax
+%<platexrelease|trace>      \else
+%<platexrelease|trace>         \csname rel@\k at encoding/\k at family/\k at series/all\endcsname
+%<platexrelease|trace>      \fi
+%<platexrelease|trace>    \else
+%<platexrelease|trace>       \csname rel@\k at encoding/\k at family/\k at series/\k at shape\endcsname
+%<platexrelease|trace>    \fi
+%<platexrelease|trace>  \fi
+%<platexrelease|trace>  \let\font\afont
+%<platexrelease|trace>  \xdef\font at name{\csname\curr at fontshape/\f at size\endcsname}%
+%<platexrelease|trace>  \pickup at font
+%<platexrelease|trace>  \font at name
+%<*trace>
+%<platexrelease|trace>  \ifnum \tracingfonts>\tw@
+%<platexrelease|trace>    \@font at info{Roman:Switching to \font at name}\fi
+%</trace>
+%<platexrelease|trace>  \enc at update
+%<platexrelease|trace>  \ifx\f at linespread\baselinestretch \else
+%<platexrelease|trace>    \set at fontsize\baselinestretch\f at size\f at baselineskip
+%<platexrelease|trace>  \fi
+%<platexrelease|trace>  \size at update}
+%<platexrelease|trace>\plEndIncludeInRelease
 %<*plcore>
 %    \end{macrocode}
 % \end{macro}
@@ -1651,6 +2157,7 @@
 % \end{macro}
 %
 %
+% \subsubsection{$B%(%s%3!<%I$N;XDj(B}
 % \begin{macro}{\romanencoding}
 % \begin{macro}{\kanjiencoding}
 % \begin{macro}{\fontencoding}
@@ -1766,6 +2273,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \subsubsection{$B%U%!%_%j$N;XDj(B}
 % \begin{macro}{\@notkfam}
 % \begin{macro}{\@notffam}
 % |\fontfamily|$B%3%^%s%IFb$G;HMQ$9$k%U%i%0$G$9!#(B
@@ -1928,36 +2436,69 @@
 % \end{macro}
 %
 %
-% \begin{macro}{\series at maybe@drop at one@m}
-% $BK\2H(B\LaTeXe~2020-02-02 patch level~5$B$GDI2C$5$l$?L?Na$G$9!#(B
-% \NFSS{}$B$,BgI}$K=$@5!&3HD%$5$l$?(B\LaTeXe~2020-02-02$B$N$&$A!"(B
+% \subsubsection{$B%7%j!<%:$N;XDj!J?7(BNFSS$BBP1~!K(B}
+% \begin{macro}{\pltx at latex@level}
+% $B%3%_%e%K%F%#HG(B\pLaTeXe~2020-02-02$B$G$NJQ99!'$3$3$+$i(B
+% \LaTeXe~2020-02-02$B$G3HD%$5$l$??7$7$$(BNFSS$B$X$NBP1~%3!<%I$,;O$^$j$^$9!#(B
+% \pLaTeXe{}$B$N%3!<%I$rK\2H(B\LaTeXe{}$B$N5!G=$K1~$8$F at Z$jBX$($^$9!#(B
+%
+% \LaTeXe~2020-02-02$B$N$&$A!"(B
 % patch level~2$B$K$O(B |latex3/latex2e#277| $B$N%P%0$,$"$j!"(B
-% ^^A    $B"*BP:v$H$7$F(B \if at forced@series $B$,DI2C$5$l$?(B
-% patch level~4$B$K$O(B |latex3/latex2e#293| $B$N%P%0$,$"$C$?$?$a!"(B
-% ^^A    $B"*BP:v$H$7$F(B \series at maybe@drop at one@m $B$,DI2C$5$l$?(B
-% $B0BDj$7$?(B\LaTeXe{}$B$N$_$r%5%]!<%H$7$^$9!#(B
+% ^^A    $B"*BP:v$H$7$F(B |\if at forced@series| $B$,DI2C$5$l$?(B
+% patch level~4$B$K$O(B |latex3/latex2e#293| $B$N%P%0$,$"$j$^$7$?!#(B
+% ^^A    $B"*BP:v$H$7$F(B |\series at maybe@drop at one@m| $B$,DI2C$5$l$?(B
+% $B$5$i$K3+H/HG(B\LaTeXe{}$B$G$O(B |latex3/latex2e#291| $B$NBP:v$b;\$5$l$F$$$^$9!#(B
+% ^^A    $B"*BP:v$H$7$F(B |\series at maybe@drop at one@m at x| $B$,DI2C$5$l$?(B
 % \changes{v1.6z}{2020/02/28}{\cs{series at maybe@drop at one@m}$B$NB8:_3NG'(B}
+% \changes{v1.7}{2020/03/05}{\cs{series at maybe@drop at one@m at x}$B$NB8:_3NG'(B}
 %    \begin{macrocode}
 %<*plcore|platexrelease>
 \ifx\fontseriesforce\@undefined      % old
+        \def\pltx at latex@level{0}
 \else                                % 2020-02-02
-  \ifx\@forced at seriestrue\@undefined % patch level 0, 1, 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 has a bug.}
-%<plcore>    \@@end
+  \ifx\@forced at seriestrue\@undefined
+    \ifnum\patch at level<1\relax                  % patch level 0
+        \def\pltx at latex@level{1}% use \@reserveda
+    \else                                       % patch level 1, 2
+        \def\pltx at latex@level{2}
+    \fi
+  \else
+    \ifx\series at maybe@drop at one@m\@undefined     % patch level 3, 4
+        \def\pltx at latex@level{3}
+    \else
+      \ifx\series at maybe@drop at one@m at x\@undefined % patch level 5
+        \def\pltx at latex@level{4}
+        % anticipating LaTeX2e 'develop' branch (after 23b7244)
+        % this temporary code will be removed in the future
+        %\let\series at maybe@drop at one@m at x\series at maybe@drop at one@m
+        %\def\series at maybe@drop at one@m#1{%
+        %  \expandafter\series at maybe@drop at one@m at x\expandafter{#1}}
+      \else
+        \def\pltx at latex@level{5}
+      \fi
+    \fi
   \fi
-  % actually we'd like to check the below too,
-  % but commented out for TL19 frozen since
-  % platex-dev format generation fails
-  %\ifx\series at maybe@drop at one@m\@undefined % patch level 0--4
-  %  \@latex at error
-  %    {Please update LaTeX2e!^^J\space\space
-  %     At least LaTeX2e 2020-02-02 patch level 5 is required}
-  %    {LaTeX2e 2020-02-02 patch level 2 and 4 has a bug.}
-  %\fi
 \fi
+%    \end{macrocode}
+% $B$3$3$G$O!":GDc8B$I$N%P!<%8%g%s$N(B\LaTeXe{}$B>e$G$b%U%)!<%^%C%H at 8@.$,(B
+% $B at .8y$9$k$h$&$K(B|\catcode|$B%H%j%C%/$r;H$$$^$9!#(B
+% ^^A    $B"*(B |\if at forced@series|$B%U%i%0$r1#$9I,MW$,$"$k$?$aLLE](B
+% $B8=:_$N<gMW$J%3!<%I$O(B
+% \begin{itemize}
+%  \item \LaTeXe~2019-10-01 patch level~3$B0JA0!J=>Mh$N(B\NFSS2$B!K(B
+%  \item \LaTeXe{}$B$N3+H/HG!J:G?7$N(Bdevelop$B%V%i%s%A!K(B
+% \end{itemize}
+% $B8~$1$K:GE,2=$7$F$*$j!"B>$N%P!<%8%g%s$X$NBP=h$O8e2s$7$K$7$^$9!#(B
+% ^^A    $B"*(B $B>-MhE*$K:o=|$7$d$9$$$h$&$K(B
+%    \begin{macrocode}
+\edef\pltx at reset@catcode at trick{\catcode`\noexpand\~=\the\catcode`\~\relax}
+\def\pltx at temp@catcode at ix{\catcode`\~=9\relax}
+\def\pltx at temp@catcode at xiv{\catcode`\~=14\relax}
+\ifnum\pltx at latex@level<3\relax
+  \pltx at temp@catcode at xiv % hide if-tokens
+\else
+  \pltx at temp@catcode at ix  % reveal if-tokens
+\fi
 %</plcore|platexrelease>
 %    \end{macrocode}
 % \end{macro}
@@ -2031,6 +2572,9 @@
 \def\merge at kanji@series@#1#2#3\@nil{%
   \def\reserved at a{#3}%
   \ifx\reserved at a\@empty
+%    \end{macrocode}
+% $B%7%j!<%:99?75,B'$,$J$$>l9g!'(B|#2|$B$,MW5a%7%j!<%:$G$"$j!"$3$l$r;H$&!#(B
+%    \begin{macrocode}
     \set at target@series at kanji{#2}%
   \else
     \begingroup\let\f at encoding\k at encoding\let\f at family\k at family
@@ -2037,12 +2581,21 @@
       \maybe at load@fontshape\endgroup
     \edef\reserved at a{\k at encoding /\k at family /#1/\k at shape}%
      \ifcsname \reserved at a \endcsname
+%    \end{macrocode}
+% $B%7%j!<%:99?75,B'$K4p$E$/?7%7%j!<%:(B |#1| $B$,MxMQ2DG=!'(B
+%    \begin{macrocode}
        \set at target@series at kanji{#1}%
     \else
        \ifcsname \k at encoding /\k at family /#2/\k at shape \endcsname
+%    \end{macrocode}
+% $B%7%j!<%:99?75,B'$K4p$E$/BeBX%7%j!<%:(B |#2| $B$,MxMQ2DG=!'(B
+%    \begin{macrocode}
          \set at target@series at kanji{#2}%
          {\let\curr at fontshape\curr at kfontshape\@font at shape@subst at warning}%
        \else
+%    \end{macrocode}
+% $B$$$:$l$bMxMQIT2D!'MW5a%7%j!<%:(B |#3| $B$r;H$&!#(B
+%    \begin{macrocode}
          \set at target@series at kanji{#3}%
          {\let\curr at fontshape\curr at kfontshape\@font at shape@subst at warning}%
        \fi
@@ -2049,18 +2602,12 @@
     \fi
   \fi
 }
-\ifx\series at maybe@drop at one@m\@undefined % patch level 0--4
 \def\set at target@series at kanji#1{%
     \edef\k at series{#1}%
-    \edef\k at series{\expandafter\series at drop@one at m\k at series mm\series at drop@one at m}%
+    \series at maybe@drop at one@m\k at series\k at series
 }
-\else                                   % patch level 5
-\def\set at target@series at kanji#1{%
-    \edef\k at series{#1}%
-    \expandafter\series at maybe@drop at one@m\expandafter{\k at series}\k at series
-}
 \fi
-\fi
+%</plcore|platexrelease>
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2067,6 +2614,43 @@
 % \end{macro}
 %
 %
+% \subsubsection{$B%7%'%$%W$N;XDj!J?7(BNFSS$BBP1~!K(B}
+% $B%3%_%e%K%F%#HG(B\pLaTeXe~2020-04-12$B$G$NJQ99!'(B
+% $B=>Mh$O!"(B|\itshape|$B$J$I$NL?Na$r<B9T$9$k$H(B
+%\begin{verbatim}
+% LaTeX Font Warning: Font shape `JT1/mc/m/it' undefined
+% (Font)              using `JT1/mc/m/n' instead on input line 4.
+% LaTeX Font Warning: Font shape `JY1/mc/m/it' undefined
+% (Font)              using `JY1/mc/m/n' instead on input line 4.
+%\end{verbatim}
+% $B$N$h$&$J7Y9p$rH/$7$F$$$^$7$?!#$3$l$O0J2<$NM}M3$K$h$j$^$9!#(B
+% \begin{itemize}
+%  \item \LaTeXe{}$B$,Dj5A$9$k(B|\itshape|$B$J$I$N%7%'%$%WJQ99L?Na$O(B
+%    $BFbIt$G(B|\fontshape|$B$r8F$S=P$9!#(B
+%  \item \pLaTeXe{}$B$G$O!"(B|\fontshape|$B$r2$J8=qBN$@$1$G$J$/(B
+%    $BOBJ8=qBN$bJQ99$9$k$h$&$K:FDj5A$9$k!#(B
+%  \item $B$7$+$7!"OBJ8=qBN$N%7%'%$%W$O$[$H$s$I(B``n''$B$7$+MQ$$$i$l$:!"(B
+%    |\DeclareFontShape|$B$G$NDj5A$b(B``n''$B$7$+M?$($i$l$J$$$3$H$,B?$$!#(B
+%  \item $B7k2LE*$K!"2$J8=qBN$N%7%'%$%W$rJQ99$9$k$D$b$j$G$b(B
+%    $B!VOBJ8=qBN$N%7%'%$%W$,L$Dj5A!W$H$$$&7Y9p$,=P$F$7$^$&!#(B
+% \end{itemize}
+% $B$=$3$G!"OBJ8=qBN$N%7%'%$%W$,L$Dj5A$N>l9g$O(B
+% |\fontshape|$B5Z$S(B|\fontshapeforce|$B$,OBJ8=qBN$K$O1F6A$;$:!"(B
+% $B2$J8=qBN$N%7%'%$%W$N$_$rJQ99$9$k$h$&$K2~NI$7$^$9!#(B
+%
+% \begin{macro}{\if at shape@roman at kanji}
+% $BOB2$J8$NN>J}$K1F6A$7$h$&$H$9$k(B|\fontshape|$B%3%^%s%I<B9TCf$K(B
+% $B??$K$J$k%U%i%0$G$9!#(B|\fontshapeforce|$B$O<BAu$,C1=c$J$N$G!"(B
+% $B$3$N%U%i%0$O;H$C$F$$$^$;$s!#(B
+% \changes{v1.7c}{2020/03/15}{\cs{fontshape}/\cs{fontshapeforce}$B$,(B
+%    $BOBJ8%7%'%$%WL$Dj5A$N>l9g$O(B\cs{k at shape}$B$r99?7$7$J$$$h$&$KJQ99(B}
+%    \begin{macrocode}
+%<*plcore|platexrelease>
+\newif\if at shape@roman at kanji
+%</plcore|platexrelease>
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\romanshape}
 % \begin{macro}{\kanjishape}
 % \begin{macro}{\fontshape}
@@ -2077,15 +2661,38 @@
 % \LaTeXe~2020-02-02$B0J9_$G$O!"(B|\DeclareFontShapeChangeRule|$B$K$h$C$F(B
 % $B at k8@$5$l$?!V%7%'%$%W99?75,B'!W$K4p$E$-%7%'%$%W$rA*Br$7$^$9!#(B
 %    \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2020/04/12}{\fontshape}
+%<platexrelease>                   {No \k at shape update if unavailable}%
+%<*plcore|platexrelease>
 \ifx\fontshapeforce\@undefined   % old
 \DeclareRobustCommand\romanshape[1]{\edef\f at shape{#1}}
 \DeclareRobustCommand\kanjishape[1]{\edef\k at shape{#1}}
-\DeclareRobustCommand\fontshape[1]{\kanjishape{#1}\romanshape{#1}}
+\DeclareRobustCommand\fontshape[1]{%
+  \set at safe@kanji at shape{#1}{}%
+  \edef\f at shape{#1}%
+}
 \else                            % 2020-02-02
 \DeclareRobustCommand\romanshape[1]{\merge at font@shape{#1}}
 \DeclareRobustCommand\kanjishape[1]{\merge at kanji@shape{#1}}
-\DeclareRobustCommand\fontshape[1]{\kanjishape{#1}\romanshape{#1}}
+\DeclareRobustCommand\fontshape[1]{%
+  \@shape at roman@kanjitrue
+  \kanjishape{#1}\romanshape{#1}%
+  \@shape at roman@kanjifalse}
 \fi
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\fontshape}
+%<platexrelease>                   {ASCII Corporation / TeXJP original}%
+%<platexrelease>\ifx\fontshapeforce\@undefined   % old
+%<platexrelease>\DeclareRobustCommand\romanshape[1]{\edef\f at shape{#1}}
+%<platexrelease>\DeclareRobustCommand\kanjishape[1]{\edef\k at shape{#1}}
+%<platexrelease>\DeclareRobustCommand\fontshape[1]{\kanjishape{#1}\romanshape{#1}}
+%<platexrelease>\else                            % 2020-02-02
+%<platexrelease>\DeclareRobustCommand\romanshape[1]{\merge at font@shape{#1}}
+%<platexrelease>\DeclareRobustCommand\kanjishape[1]{\merge at kanji@shape{#1}}
+%<platexrelease>\DeclareRobustCommand\fontshape[1]{\kanjishape{#1}\romanshape{#1}}
+%<platexrelease>\fi
+%<platexrelease>\plEndIncludeInRelease
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2098,6 +2705,9 @@
 % \changes{v1.6v}{2020/02/01}{New commands \cs{fontshapeforce} etc.
 %    (sync with ltfssaxes.dtx 2019/12/16 v1.0a)}
 %    \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2020/04/12}{\fontshapeforce}
+%<platexrelease>                   {No \k at shape update if unavailable}%
+%<*plcore|platexrelease>
 \ifx\fontshapeforce\@undefined   % old
 \let\romanshapeforce\@undefined
 \let\kanjishapeforce\@undefined
@@ -2104,8 +2714,24 @@
 \else                            % 2020-02-02
 \DeclareRobustCommand\romanshapeforce[1]{\edef\f at shape{#1}}
 \DeclareRobustCommand\kanjishapeforce[1]{\edef\k at shape{#1}}
-\DeclareRobustCommand\fontshapeforce[1]{\kanjishapeforce{#1}\romanshapeforce{#1}}
+\DeclareRobustCommand\fontshapeforce[1]{%
+  \set at safe@kanji at shape{#1}{}%
+  \edef\f at shape{#1}%
+}
 \fi
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\fontshapeforce}
+%<platexrelease>                   {ASCII Corporation / TeXJP original}%
+%<platexrelease>\ifx\fontshapeforce\@undefined   % old
+%<platexrelease>\let\romanshapeforce\@undefined
+%<platexrelease>\let\kanjishapeforce\@undefined
+%<platexrelease>\else                            % 2020-02-02
+%<platexrelease>\DeclareRobustCommand\romanshapeforce[1]{\edef\f at shape{#1}}
+%<platexrelease>\DeclareRobustCommand\kanjishapeforce[1]{\edef\k at shape{#1}}
+%<platexrelease>\DeclareRobustCommand\fontshapeforce[1]{\kanjishapeforce{#1}\romanshapeforce{#1}}
+%<platexrelease>\fi
+%<platexrelease>\plEndIncludeInRelease
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2115,6 +2741,9 @@
 % \begin{macro}{\merge at kanji@shape@}
 % \cs{merge at font@shape}$B$NOBJ8HG$G$9!#(B
 %    \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2020/04/12}{\merge at kanji@shape@}
+%<platexrelease>                   {No \k at shape update if unavailable}%
+%<*plcore|platexrelease>
 \ifx\fontseriesforce\@undefined  % old
 \let\merge at kanji@shape\@undefined
 \let\merge at kanji@shape@\@undefined
@@ -2129,20 +2758,45 @@
 \def\merge at kanji@shape@#1#2#3\@nil{%
   \def\reserved at a{#3}%
   \ifx\reserved at a\@empty
+%    \end{macrocode}
+% $B%7%'%$%W99?75,B'$,$J$$>l9g!'(B|#2|$B$,MW5a%7%'%$%W$G$"$k!#(B\\
+% |\fontshape|$B$N2<@A$1$J$i!"(B|#2|$B$,MxMQ2DG=$+$I$&$+M=$a%A%'%C%/$9$k!#(B\\
+% |\kanjishape|$B$N2<@A$1$J$i!"(B|#2|$B$r;H$&!#(B
+%    \begin{macrocode}
+   \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
+%    \end{macrocode}
+% $B%7%'%$%W99?75,B'$K4p$E$/?7%7%'%$%W(B |#1| $B$,MxMQ2DG=!'(B
+%    \begin{macrocode}
        \edef\k at shape{#1}%
     \else
        \ifcsname \k at encoding /\k at family /\k at series/#2\endcsname
+%    \end{macrocode}
+% $B%7%'%$%W99?75,B'$K4p$E$/BeBX%7%'%$%W(B |#2| $B$,MxMQ2DG=!'(B
+%    \begin{macrocode}
          \edef\k at shape{#2}%
          {\let\curr at fontshape\curr at kfontshape\@font at shape@subst at warning}%
        \else
+%    \end{macrocode}
+% $B$$$:$l$bMxMQIT2D!'MW5a%7%'%$%W(B |#3| $B$K$D$$$F(B\\
+% |\fontshape|$B$N2<@A$1$J$i!"(B|#3|$B$,MxMQ2DG=$+$I$&$+M=$a%A%'%C%/$9$k!#(B\\
+% |\kanjishape|$B$N2<@A$1$J$i!"(B|#3|$B$r;H$&!#(B
+%    \begin{macrocode}
+        \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
@@ -2149,11 +2803,80 @@
 }
 \fi
 %</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\merge at kanji@shape@}
+%<platexrelease>                   {ASCII Corporation / TeXJP original}%
+%<platexrelease>\ifx\fontseriesforce\@undefined  % old
+%<platexrelease>\let\merge at kanji@shape\@undefined
+%<platexrelease>\let\merge at kanji@shape@\@undefined
+%<platexrelease>\else                            % 2020-02-02
+%<platexrelease>\def\merge at kanji@shape#1{%
+%<platexrelease>  \expandafter\expandafter\expandafter
+%<platexrelease>  \merge at kanji@shape@
+%<platexrelease>    \csname shape@\k at shape @#1\endcsname
+%<platexrelease>    {#1}%
+%<platexrelease>    \@nil
+%<platexrelease>}
+%<platexrelease>\def\merge at kanji@shape@#1#2#3\@nil{%
+%<platexrelease>  \def\reserved at a{#3}%
+%<platexrelease>  \ifx\reserved at a\@empty
+%<platexrelease>    \edef\k at shape{#2}%
+%<platexrelease>  \else
+%<platexrelease>    \begingroup\let\f at encoding\k at encoding\let\f at family\k at family
+%<platexrelease>      \maybe at load@fontshape\endgroup
+%<platexrelease>    \edef\reserved at a{\k at encoding /\k at family /\k at series/#1}%
+%<platexrelease>     \ifcsname \reserved at a\endcsname
+%<platexrelease>       \edef\k at shape{#1}%
+%<platexrelease>    \else
+%<platexrelease>       \ifcsname \k at encoding /\k at family /\k at series/#2\endcsname
+%<platexrelease>         \edef\k at shape{#2}%
+%<platexrelease>         {\let\curr at fontshape\curr at kfontshape\@font at shape@subst at warning}%
+%<platexrelease>       \else
+%<platexrelease>         \edef\k at shape{#3}%
+%<platexrelease>         {\let\curr at fontshape\curr at kfontshape\@font at shape@subst at warning}%
+%<platexrelease>       \fi
+%<platexrelease>    \fi
+%<platexrelease>  \fi
+%<platexrelease>}
+%<platexrelease>\fi
+%<platexrelease>\plEndIncludeInRelease
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 %
+% \begin{macro}{\set at safe@kanji at shape}
+% \begin{macro}{\@kanji at shape@nochange at info}
+% $BOBJ8%7%'!<%W$,MxMQ2DG=$+$I$&$+M=$a%A%'%C%/$7$F$+$i at _Dj$7$^$9!#(B
+%    \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2020/04/12}{\set at safe@kanji at shape}
+%<platexrelease>                   {No \k at shape update if unavailable}%
+%<*plcore|platexrelease>
+\def\set at safe@kanji at shape#1#2{%
+  \edef\reserved at b{\k at encoding /\k at family /\k at series/#1}%
+   \ifcsname \reserved at b\endcsname
+     \edef\k at shape{#1}%
+     #2%
+  \else
+    \@kanji at shape@nochange at info{\reserved at b}%
+  \fi
+}
+\def\@kanji at shape@nochange at info#1{%
+    \@font at info{Kanji font shape `#1' undefined\MessageBreak
+                No change}%
+}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\set at safe@kanji at shape}
+%<platexrelease>                   {ASCII Corporation original}%
+%<platexrelease>\let\set at safe@kanji at shape\@undefined
+%<platexrelease>\let\@kanji at shape@nochange at info\@undefined
+%<platexrelease>\plEndIncludeInRelease
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
 %
+%
+% \subsubsection{$B=qBN$N at Z$jBX$(!J?7(BNFSS$BBP1~!K(B}
 % \begin{macro}{\usekanji}
 % \begin{macro}{\useroman}
 % \begin{macro}{\usefont}
@@ -2235,10 +2958,19 @@
 % $BOBJ8=qBN$b%G%U%)%k%HCM$K$J$k$h$&$K:FDj5A$7$F$$$^$9!#(B
 % $B$?$@$79bB.2=$N$?$a!"(B|\usekanji|$B$H(B|\useroman|$B$rE83+$7!"(B
 % |\selectfont|$B$r0lEY$7$+8F$S=P$5$J$$$h$&$K$7$F$$$^$9!#(B
+%
+% \LaTeXe~2020-02-02 patch level~2$B$G?7 at _$5$l$?%U%C%/(B
+% |\@defaultfamilyhook|$B$r;H$&$3$H$G!"85$NDj5A$r>e=q$-$9$kI,MW$,(B
+% $B$J$/$J$j$^$7$?!#!JCm0U!'%"%9%-!<HG$NKvHx$K$"$C$?(B
+% |\ignorespaces|$B$r:o=|$9$k$3$H$G!"85$N(B\LaTeXe{}$B$H8_49$K(B
+% $B$J$j$^$7$?!#(Bltfssini.dtx 1995/10/16 v3.0f$B$NJQ99$b;29M!#!K(B
+% \changes{v1.7a}{2020/03/06}{\cs{@defaultfamilyhook}$B$r3hMQ(B
+%    (sync with ltfssini.dtx 2020/02/10 v3.1h)}
 %    \begin{macrocode}
-%<platexrelease>\plIncludeInRelease{2020/02/02}{\normalfont}
-%<platexrelease>                   {Don't call \fontseries or \fontshape}%
+%<platexrelease>\plIncludeInRelease{2020/04/12}{\normalfont}
+%<platexrelease>                   {Use \@defaultfamilyhook}%
 %<*plcore|platexrelease>
+\ifx\@defaultfamilyhook\@undefined  % old
 \DeclareRobustCommand\normalfont{%
     \kanjiencoding{\kanjiencodingdefault}%
     \edef\k at family{\kanjifamilydefault}%
@@ -2248,11 +2980,41 @@
     \edef\f at family{\familydefault}%
     \edef\f at series{\seriesdefault}%
     \edef\f at shape{\shapedefault}%
-    \selectfont\ignorespaces}
+    \selectfont}
+\else                               % 2020-02-02 PL2
+%<platexrelease>\DeclareRobustCommand\normalfont{%
+%<platexrelease>   \fontencoding\encodingdefault
+%<platexrelease>   \edef\f at family{\familydefault}%
+%<platexrelease>   \edef\f at series{\seriesdefault}%
+%<platexrelease>   \edef\f at shape{\shapedefault}%
+%<platexrelease>   \@defaultfamilyhook
+%<platexrelease>   \selectfont}
+\g at addto@macro\@defaultfamilyhook{%
+    \kanjiencoding{\kanjiencodingdefault}%
+    \edef\k at family{\kanjifamilydefault}%
+    \edef\k at series{\kanjiseriesdefault}%
+    \edef\k at shape{\kanjishapedefault}%
+}
+\fi
 \adjustbaseline
 \let\reset at font\normalfont
 %</plcore|platexrelease>
 %<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2020/02/02}{\normalfont}
+%<platexrelease>                   {Don't call \fontseries or \fontshape}%
+%<platexrelease>\DeclareRobustCommand\normalfont{%
+%<platexrelease>    \kanjiencoding{\kanjiencodingdefault}%
+%<platexrelease>    \edef\k at family{\kanjifamilydefault}%
+%<platexrelease>    \edef\k at series{\kanjiseriesdefault}%
+%<platexrelease>    \edef\k at shape{\kanjishapedefault}%
+%<platexrelease>    \romanencoding{\encodingdefault}%
+%<platexrelease>    \edef\f at family{\familydefault}%
+%<platexrelease>    \edef\f at series{\seriesdefault}%
+%<platexrelease>    \edef\f at shape{\shapedefault}%
+%<platexrelease>    \selectfont\ignorespaces}
+%<platexrelease>\adjustbaseline
+%<platexrelease>\let\reset at font\normalfont
+%<platexrelease>\plEndIncludeInRelease
 %<platexrelease>\plIncludeInRelease{0000/00/00}{\normalfont}
 %<platexrelease>                   {ASCII Corporation original}%
 %<platexrelease>\DeclareRobustCommand\normalfont{%
@@ -2309,18 +3071,22 @@
 %
 % \begin{macro}{\expand at font@defaults}
 % $B%U%!%_%j$N%G%U%)%k%H$r40A4E83+$7$^$9!#(B
-% $B$^$:!"%*%j%8%J%k$N(B\LaTeX{}$B$NDj5A$r:\$;$F$*$-$^$9!#(B
+% $B$^$:!"%*%j%8%J%k$N(B\LaTeX{}$B$NDj5A!J(Bltfssini.dtx 2020/04/06 v3.1m$B0J9_!K$r(B
+% $B:\$;$F$*$-$^$9!#(B
 %    \begin{macrocode}
 %\def\expand at font@defaults{%
 %  \edef\rmdef at ult{\rmdefault}%
 %  \edef\sfdef at ult{\sfdefault}%
 %  \edef\ttdef at ult{\ttdefault}%
-%  \edef\bfdef at ult{\bfdefault}%
-%  \edef\mddef at ult{\mddefault}%
+%  \series at maybe@drop at one@m\bfdefault\bfdef at ult % !! changed 2020/02/25 v3.1j
+%  \series at maybe@drop at one@m\mddefault\mddef at ult % !! changed 2020/02/25 v3.1j
 %  \edef\famdef at ult{\familydefault}%
+%  \@expandfontdefaultshook                     % !! added 2020/04/06 v3.1m
 %}
 %    \end{macrocode}
 % p\LaTeX{}$B$G$O!"0J2<$N%3!<%I$rKvHx$KDI2C$7$^$9!#(B
+% ^^A  ltfssini.dtx 2020/04/06 v3.1m $B$K4p$E$1$P(B |\@expandfontdefaultshook| $B$r(B
+% ^^A  $B;H$&$3$H$b$G$-$k$,!"$H$j$"$($:(B |\g at addto@macro| $B$GKvHxDI2C$GLdBj$J$$!#(B
 %    \begin{macrocode}
 \ifx\expand at font@defaults\@undefined\else  % 2020-02-02
 \g at addto@macro\expand at font@defaults{%
@@ -2336,56 +3102,111 @@
 % \begin{macro}{\bfseries}
 % \begin{macro}{\mdseries}
 % $B%U%!%_%j$4$H$N at _DjCM$r;2>H$7$^$9!#(B
+% $B$^$:!"%*%j%8%J%k$N(B\LaTeX{}$B$NDj5A!J(Bltfssini.dtx 2020/04/06 v3.1m$B0J9_!K$r(B
+% $B:\$;$F$*$-$^$9!#(B
+%    \begin{macrocode}
+%\DeclareRobustCommand\bfseries{%
+%  \not at math@alphabet\bfseries\mathbf
+%  \expand at font@defaults
+%  \ifx\bfdefault\bfdefault at previous\else
+%    \expandafter\def\expandafter\bfdefault
+%                    \expandafter{\bfdefault\@empty}%
+%    \let\bfseries at previous\bfdefault
+%    \let\bfseries at rm\bfdef at ult
+%    \let\bfseries at sf\bfdef at ult
+%    \let\bfseries at tt\bfdef at ult
+%    \@setbfseriesdefaultshook % !! added 2020/04/06 v3.1m
+%  \fi
+%    \ifx\f at family\rmdef at ult      \fontseries\bfseries at rm
+%    \else\ifx\f at family\sfdef at ult \fontseries\bfseries at sf
+%    \else\ifx\f at family\ttdef at ult \fontseries\bfseries at tt
+%    \else                        \fontseries\bfdefault
+%    \fi\fi\fi
+%  \selectfont
+%}
+%\DeclareRobustCommand\mdseries{%
+%  \not at math@alphabet\mdseries\relax
+%  \expand at font@defaults
+%  \ifx\mddefault\mddefault at previous\else
+%    \expandafter\def\expandafter\mddefault
+%                    \expandafter{\mddefault\@empty}%
+%    \let\mdseries at previous\mddefault
+%    \let\mdseries at rm\mddef at ult
+%    \let\mdseries at sf\mddef at ult
+%    \let\mdseries at tt\mddef at ult
+%    \@setmdseriesdefaultshook % !! added 2020/04/06 v3.1m
+%  \fi
+%    \ifx\f at family\rmdef at ult      \fontseries\mdseries at rm
+%    \else\ifx\f at family\sfdef at ult \fontseries\mdseries at sf
+%    \else\ifx\f at family\ttdef at ult \fontseries\mdseries at tt
+%    \else                        \fontseries\mddefault
+%    \fi\fi\fi
+%  \selectfont
+%}
+%    \end{macrocode}
+% $B0J2<$G(Bp\LaTeX{}$BMQ$K:FDj5A$7$^$9!#(B
 % \changes{v1.6y}{2020/02/24}{Make the \cs{ifx} selection outside of
 %    \cs{fontseries} argument so that it is not done several times
 %    (sync with ltfssini.dtx 2020/02/18 v3.1i)}
+% \changes{v1.7f}{2020/04/07}{Support legacy use of \cs{bfdefault}
+%    and \cs{mddefault}, use \cs{@setYYseriesdefaultshook}
+%    (sync with ltfssini.dtx 2020/03/19 v3.1k and 2020/04/06 v3.1m)}
 %    \begin{macrocode}
-\ifx\bfseries at rm\@undefined\else  % 2020-02-02
-\DeclareRobustCommand\bfseries{%
-  \not at math@alphabet\bfseries\mathbf
-  \expand at font@defaults
-  % changed \fontseries -> \romanseries
-    \ifx\f at family\rmdef at ult      \romanseries\bfseries at rm
-    \else\ifx\f at family\sfdef at ult \romanseries\bfseries at sf
-    \else\ifx\f at family\ttdef at ult \romanseries\bfseries at tt
-    \else                        \romanseries\bfdefault
-    \fi\fi\fi
-%    \end{macrocode}
-% $B$3$3$+$i$,(Bp\LaTeX{}$B$K$h$kDI2C%3!<%I$G$9!#(B
-%    \begin{macrocode}
+\ifx\bfseries at rm\@undefined  % old
+\let\pltx at fontseries@saved\@undefined
+\let\pltx at patch@bfseries\@undefined
+\let\pltx at patch@mdseries\@undefined
+\else                        % 2020-02-02
+\let\pltx at fontseries@saved\fontseries
+\def\pltx at patch@bfseries\not at math@alphabet#1#2#3\selectfont{%
+ \long\expandafter\def\csname bfseries \endcsname{%
+  \not at math@alphabet#1#2% should be \bfseries\mathbf
+  % \fontseries of pLaTeX tries to change both Latin and Japanese;
+  % here we want only Latin, so use \romanseries
+  \let\fontseries\romanseries
+  #3% contains \fontseries and \@setbfseriesdefaultshook
+  \let\fontseries\pltx at fontseries@saved % recover
   % changed \fontseries -> \kanjiseries
     \ifx\k at family\mcdef at ult      \kanjiseries\bfseries at mc
     \else\ifx\k at family\gtdef at ult \kanjiseries\bfseries at gt
     \else                        \kanjiseries\bfdefault
     \fi\fi
-%    \end{macrocode}
-% $B$3$3$^$G!#(B
-%    \begin{macrocode}
- \selectfont
+  \selectfont
+ }%
 }
-\DeclareRobustCommand\mdseries{%
-  \not at math@alphabet\mdseries\relax
-  \expand at font@defaults
-  % changed \fontseries -> \romanseries
-    \ifx\f at family\rmdef at ult      \romanseries\mdseries at rm
-    \else\ifx\f at family\sfdef at ult \romanseries\mdseries at sf
-    \else\ifx\f at family\ttdef at ult \romanseries\mdseries at tt
-    \else                        \romanseries\mddefault
-    \fi\fi\fi
-%    \end{macrocode}
-% $B$3$3$+$i$,(Bp\LaTeX{}$B$K$h$kDI2C%3!<%I$G$9!#(B
-%    \begin{macrocode}
+\ifx\@setbfseriesdefaultshook\@undefined\else
+\g at addto@macro\@setbfseriesdefaultshook{%
+    \let\bfseries at mc\bfdef at ult
+    \let\bfseries at gt\bfdef at ult
+}
+\fi
+\expandafter\expandafter\expandafter
+  \pltx at patch@bfseries\csname bfseries \endcsname
+\def\pltx at patch@mdseries\not at math@alphabet#1#2#3\selectfont{%
+ \long\expandafter\def\csname mdseries \endcsname{%
+  \not at math@alphabet#1#2% should be \mdseries\relax
+  % \fontseries of pLaTeX tries to change both Latin and Japanese;
+  % here we want only Latin, so use \romanseries
+  \let\fontseries\romanseries
+  #3% contains \fontseries and \@setmdseriesdefaultshook
+  \let\fontseries\pltx at fontseries@saved % recover
   % changed \fontseries -> \kanjiseries
     \ifx\k at family\mcdef at ult      \kanjiseries\mdseries at mc
     \else\ifx\k at family\gtdef at ult \kanjiseries\mdseries at gt
     \else                        \kanjiseries\mddefault
     \fi\fi
-%    \end{macrocode}
-% $B$3$3$^$G!#(B
-%    \begin{macrocode}
   \selectfont
+ }%
 }
+\ifx\@setmdseriesdefaultshook\@undefined\else
+\g at addto@macro\@setmdseriesdefaultshook{%
+    \let\mdseries at mc\mddef at ult
+    \let\mdseries at gt\mddef at ult
+}
 \fi
+\expandafter\expandafter\expandafter
+  \pltx at patch@mdseries\csname mdseries \endcsname
+\fi
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2408,10 +3229,10 @@
 \let\update at series@target at value@kanji\@undefined
 \else                                         % 2020-02-02
 \def\prepare at family@series at update#1#2{%
- \if at forced@series
+~\if at forced@series
 %<+debug> \series at change@debug{No series preparation (forced \f at series)\on at line}%
-   \romanfamily#2%   % changed \fontfamily -> \romanfamily
- \else
+~  \romanfamily#2%   % changed \fontfamily -> \romanfamily
+~\else
 %<+debug> \series at change@debug{Prepearing for switching to #1 (#2)\on at line}%
    \expand at font@defaults
    \let\target at series@value\@empty
@@ -2432,16 +3253,17 @@
        \maybe at load@fontshape
 %<+debug> \series at change@debug{Target series:
 %<+debug>                      \f at series \space -> \target at series@value}%
-       \let\f at series\target at series@value
+%      \let\f at series\target at series@value
+       \series at maybe@drop at one@m\target at series@value\f at series
      \fi
    \fi
- \fi
+~\fi
 }
 \def\prepare at family@series at update@kanji#1#2{%
- \if at forced@series
+~\if at forced@series
 %<+debug> \series at change@debug{No series preparation (forced \k at series)\on at line}%
-   \kanjifamily#2%
- \else
+~  \kanjifamily#2%
+~\else
 %<+debug> \series at change@debug{Prepearing for switching to #1 (#2)\on at line}%
    \expand at font@defaults
    \let\target at series@value\@empty
@@ -2463,10 +3285,11 @@
          \maybe at load@fontshape\endgroup
 %<+debug> \series at change@debug{Target series:
 %<+debug>                      \k at series \space -> \target at series@value}%
-       \let\k at series\target at series@value
+%      \let\k at series\target at series@value
+       \series at maybe@drop at one@m\target at series@value\k at series
      \fi
    \fi
- \fi
+~\fi
 }
 \def\@meta at family@list at kanji{\@elt{mc}\@elt{gt}}
 \def\update at series@target at value@kanji#1{%
@@ -2483,10 +3306,15 @@
                       \csname bfseries@\target at meta@family at value\endcsname
 %<+debug>\series at change@debug{Targets for mdseries and bfseries:
 %<+debug>                     \reserved at b\space and \reserved at c}%
-      \expandafter\ifx\csname mdseries@#1\endcsname\k at series
+      \expandafter\series at maybe@drop at one@m
+          \csname mdseries@#1\endcsname\reserved at d
+      \ifx\reserved at d\k at series
 %<+debug>   \series at change@debug{mdseries@#1 matched -> \reserved at b}%
                                       \let\target at series@value\reserved at b
-      \else\expandafter\ifx\csname bfseries@#1\endcsname\k at series
+      \else
+        \expandafter\series at maybe@drop at one@m
+           \csname bfseries@#1\endcsname\reserved at d
+        \ifx\reserved at d\k at series
 %<+debug>  \series at change@debug{bfseries@#1 matched -> \reserved at c}%
                                       \let\target at series@value\reserved at c
       \else\ifx\k at series\mddef at ult    \let\target at series@value\reserved at b
@@ -2585,6 +3413,209 @@
 % \end{macro}
 % \end{macro}
 %
+% $B8e2s$7$K$7$F$$$?B>$N%P!<%8%g%s$X$NBP=h$G$9!#(B
+% $B$3$3$G?7(BNFSS$BBP1~%3!<%I$,=*$o$j$^$9$N$G!"(B|\catcode|$B%H%j%C%/$r85$KLa$7$^$9!#(B
+% \changes{v1.7b}{2020/03/14}{$B8E$$(B\LaTeXe{}$B$G$b%U%)!<%^%C%H at 8@.$,DL$k$h$&$K(B}
+%    \begin{macrocode}
+%<*plcore|platexrelease>
+%%
+\ifnum\pltx at latex@level>0\relax       % 2020-02-02
+%
+\ifnum\pltx at latex@level<3\relax       % 2020-02-02 patch level 0--2 (no flags)
+\DeclareRobustCommand\romanseries[1]{\merge at font@series{#1}}
+\DeclareRobustCommand\kanjiseries[1]{\merge at kanji@series{#1}}
+\DeclareRobustCommand\fontseries[1]{\kanjiseries{#1}\romanseries{#1}}
+\DeclareRobustCommand\romanseriesforce[1]{\edef\f at series{#1}}
+\DeclareRobustCommand\kanjiseriesforce[1]{\edef\k at series{#1}}
+\DeclareRobustCommand\fontseriesforce[1]{\kanjiseriesforce{#1}\romanseriesforce{#1}}
+\fi
+%
+\ifnum\pltx at latex@level=1\relax       % 2020-02-02 patch level 0 (\@reserveda)
+\def\merge at kanji@series@#1#2#3\@nil{%
+  \def\@reserveda{#3}%
+  \ifx\@reserveda\@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\@reserveda{\k at encoding /\k at family /#1/\k at shape}%
+     \ifcsname \@reserveda \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@shape@#1#2#3\@nil{%
+  \def\@reserveda{#3}%
+  \ifx\@reserveda\@empty
+    \edef\k at shape{#2}%
+  \else
+    \begingroup\let\f at encoding\k at encoding\let\f at family\k at family
+      \maybe at load@fontshape\endgroup
+    \edef\@reserveda{\k at encoding /\k at family /\k at series/#1}%
+     \ifcsname \@reserveda\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
+         \edef\k at shape{#3}%
+         {\let\curr at fontshape\curr at kfontshape\@font at shape@subst at warning}%
+       \fi
+    \fi
+  \fi
+}
+\fi
+%
+\ifnum\pltx at latex@level<4\relax       % 2020-02-02 patch level 0--4 (drop m)
+\def\set at target@series at kanji#1{%
+    \edef\k at series{#1}%
+    \edef\k at series{\expandafter\series at drop@one at m\k at series mm\series at drop@one at m}%
+}
+\else\ifnum\pltx at latex@level=4\relax  % 2020-02-02 patch level 5 (old syntax)
+\def\set at target@series at kanji#1{%
+    \edef\k at series{#1}%
+    \expandafter\series at maybe@drop at one@m\expandafter{\k at series}\k at series
+}
+\fi\fi
+%
+\ifnum\pltx at latex@level<5\relax       % 2020-02-02 patch level 0--5
+\def\prepare at family@series at update#1#2{%
+~\if at forced@series
+%<+debug> \series at change@debug{No series preparation (forced \f at series)\on at line}%
+~  \romanfamily#2%   % changed \fontfamily -> \romanfamily
+~\else
+%<+debug> \series at change@debug{Prepearing for switching to #1 (#2)\on at line}%
+   \expand at font@defaults
+   \let\target at series@value\@empty
+   \def\target at meta@family at value{#1}%
+~  \expandafter\edef\csname ??def at ult\endcsname{\f at family}%
+   \let\@elt\update at series@target at value
+      \@meta at family@list
+~     \@elt{??}%
+   \let\@elt\relax
+   \romanfamily#2%   % changed \fontfamily -> \romanfamily
+   \ifx\target at series@value\@empty
+%<+debug> \series at change@debug{Target series still empty ...}%
+   \else
+     \ifx \f at series\target at series@value
+%<+debug> \series at change@debug{Target series unchanged:
+%<+debug>                      \f at series \space = \target at series@value}%
+     \else
+       \maybe at load@fontshape
+%<+debug> \series at change@debug{Target series:
+%<+debug>                      \f at series \space -> \target at series@value}%
+       \let\f at series\target at series@value
+     \fi
+   \fi
+~\fi
+}
+\def\prepare at family@series at update@kanji#1#2{%
+~\if at forced@series
+%<+debug> \series at change@debug{No series preparation (forced \k at series)\on at line}%
+~  \kanjifamily#2%
+~\else
+%<+debug> \series at change@debug{Prepearing for switching to #1 (#2)\on at line}%
+   \expand at font@defaults
+   \let\target at series@value\@empty
+   \def\target at meta@family at value{#1}%
+~  \expandafter\edef\csname ??def at ult\endcsname{\k at family}%
+   \let\@elt\update at series@target at value@kanji
+      \@meta at family@list at kanji
+~     \@elt{??}%
+   \let\@elt\relax
+   \kanjifamily#2%
+   \ifx\target at series@value\@empty
+%<+debug> \series at change@debug{Target series still empty ...}%
+   \else
+     \ifx \k at series\target at series@value
+%<+debug> \series at change@debug{Target series unchanged:
+%<+debug>                      \k at series \space = \target at series@value}%
+     \else
+       \begingroup\let\f at encoding\k at encoding\let\f at family\k at family
+         \maybe at load@fontshape\endgroup
+%<+debug> \series at change@debug{Target series:
+%<+debug>                      \k at series \space -> \target at series@value}%
+       \let\k at series\target at series@value
+     \fi
+   \fi
+~\fi
+}
+\def\@meta at family@list at kanji{\@elt{mc}\@elt{gt}}
+\def\update at series@target at value@kanji#1{%
+  \def\reserved at a{#1}%
+  \ifx\target at meta@family at value\reserved at a   % rm -> rm do nothing
+  \else
+%<+debug> \series at change@debug{Trying to match #1: \csname#1def at ult\endcsname
+%<+debug>                      \space = \k at family\space ?}%
+    \expandafter\ifx\csname#1def at ult\endcsname\k at family
+      \let\@elt\@gobble
+      \expandafter\let\expandafter\reserved at b
+                      \csname mdseries@\target at meta@family at value\endcsname
+      \expandafter\let\expandafter\reserved at c
+                      \csname bfseries@\target at meta@family at value\endcsname
+%<+debug>\series at change@debug{Targets for mdseries and bfseries:
+%<+debug>                     \reserved at b\space and \reserved at c}%
+      \expandafter\ifx\csname mdseries@#1\endcsname\k at series
+%<+debug>   \series at change@debug{mdseries@#1 matched -> \reserved at b}%
+                                      \let\target at series@value\reserved at b
+      \else\expandafter\ifx\csname bfseries@#1\endcsname\k at series
+%<+debug>  \series at change@debug{bfseries@#1 matched -> \reserved at c}%
+                                      \let\target at series@value\reserved at c
+      \else\ifx\k at series\mddef at ult    \let\target at series@value\reserved at b
+%<+debug>  \series at change@debug{mddef at ult matched -> \reserved at b}%
+      \else\ifx\k at series\bfdef at ult    \let\target at series@value\reserved at c
+%<+debug>  \series at change@debug{bfdef at ult matched -> \reserved at c}%
+      \fi\fi\fi\fi
+    \fi
+  \fi
+}
+\fi
+%
+\fi
+%%
+\pltx at reset@catcode at trick
+%</plcore|platexrelease>
+%    \end{macrocode}
+%
+%
+% \begin{macro}{\romanprocess at table}
+% \begin{macro}{\kanjiprocess at table}
+% \begin{macro}{\process at table}
+% $BJ8=q$N at hF,$G!"OBJ8%G%U%)%k%H%U%)%s%H$NJQ99$,H?1G$5$l$J$$$N$r=$@5$7$^$9!#(B
+% \changes{v1.3g}{1999/04/05}{plpatch.ltx$B$NFbMF$rH?1G!#(B
+%    $B$"$j$,$H$&!";3K\$5$s!#(B}
+%    \begin{macrocode}
+%<*plcore>
+\let\romanprocess at table\process at table
+\def\kanjiprocess at table{%
+  \kanjiencoding{\kanjiencodingdefault}%
+  \kanjifamily{\kanjifamilydefault}%
+  \kanjiseries{\kanjiseriesdefault}%
+  \kanjishape{\kanjishapedefault}%
+}
+\def\process at table{%
+  \romanprocess at table
+  \kanjiprocess at table
+}
+\@onlypreamble\romanprocess at table
+\@onlypreamble\kanjiprocess at table
+%</plcore>
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{$B6/D4=qBN(B}
 % \begin{macro}{\em}
 % \begin{macro}{\emph}
 % \begin{macro}{\eminnershape}
@@ -2654,35 +3685,7 @@
 % \end{macro}
 %
 %
-% \begin{macro}{\romanprocess at table}
-% \begin{macro}{\kanjiprocess at table}
-% \begin{macro}{\process at table}
-% $BJ8=q$N at hF,$G!"OBJ8%G%U%)%k%H%U%)%s%H$NJQ99$,H?1G$5$l$J$$$N$r=$@5$7$^$9!#(B
-% \changes{v1.3g}{1999/04/05}{plpatch.ltx$B$NFbMF$rH?1G!#(B
-%    $B$"$j$,$H$&!";3K\$5$s!#(B}
-%    \begin{macrocode}
-%<*plcore>
-\let\romanprocess at table\process at table
-\def\kanjiprocess at table{%
-  \kanjiencoding{\kanjiencodingdefault}%
-  \kanjifamily{\kanjifamilydefault}%
-  \kanjiseries{\kanjiseriesdefault}%
-  \kanjishape{\kanjishapedefault}%
-}
-\def\process at table{%
-  \romanprocess at table
-  \kanjiprocess at table
-}
-\@onlypreamble\romanprocess at table
-\@onlypreamble\kanjiprocess at table
-%</plcore>
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-%
+% \subsection{$B2<@~%^%/%m(B}
 % \begin{macro}{\textunderscore}
 % \changes{v1.1b}{1995/04/12}{$B2<@~%^%/%m$rDI2C(B}
 % $B$3$N%3%^%s%I$O%F%-%9%H%b!<%I$G;XDj$5$l$?(B|\_|$B$NFbIt%3%^%s%I$G$9!#(B

Added: trunk/Master/texmf-dist/source/platex/base/plnewsc14.tex
===================================================================
--- trunk/Master/texmf-dist/source/platex/base/plnewsc14.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/source/platex/base/plnewsc14.tex	2020-04-12 21:29:19 UTC (rev 54697)
@@ -0,0 +1,209 @@
+%% <2020-02-02> and <2020-04-12>
+\documentclass{plnews}
+
+\publicationyear{2020}% $BH/9TG/(B
+\publicationmonth{04}% $BH/9T7n(B
+\publicationissue{c14}% $BHV9f(B
+\author{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#!J(B\texttt{https://texjp.org/}$B!K(B}
+
+\def\cs#1{\texttt{\char92\nobreak #1}}
+\def\pTeX{p\kern-.15em\TeX}
+\def\eTeX{$\varepsilon$-\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+\xspcode`\\=1
+
+\begin{document}
+
+\maketitle
+
+$B%3%_%e%K%F%#HG(B\pLaTeXe\ \texttt{<2020-02-02>}$B$*$h$S(B
+\texttt{<2020-04-12>}$B$K$D$$$F!"(B
+\pLaTeXe\ \texttt{<2019-10-01>}$B$+$i$N99?72U=j$r$^$H$a$^$9!#(B
+
+
+\section{\LaTeXe\ \texttt{<2020-02-02>}$BBP1~(B}
+$B"*;29M!'(B|texjporg/platex#88|
+
+\LaTeXe\ \texttt{<2020-02-02>}$B$G(B
+NFSS$B!J%U%)%s%HA*Br$N;EAH$_!K$,BgI}$K3HD%$5$l$?$3$H$r<u$1!"(B
+\pLaTeXe\ \texttt{<2020-02-02>}$B$GBP1~$r;\$7$^$7$?!#(B
+$B%7%j!<%:!&%7%'%$%W$NB?<42=$O(B\file{fontaxes}$B$+$i!"(B
+$B%U%!%_%j$4$H$N<B%7%j!<%:CM$O(B\file{mweights}$B$+$i!"(B
+$B$=$l$>$l%"%$%G%"$r<h$jF~$l$?$h$&$G$9!#(B
+\file{ltnews31}$B$b;2>H$7$F$/$@$5$$!#(B
+
+\pLaTeXe{}$B$G$N3HD%ItJ,$O0J2<$N$H$*$j$G$9!#(B
+
+\paragraph{$B%7%j!<%:$NB?<42=(B}
+\begin{itemize}
+ \item |\kanjiseries|, |\romanseries| (, |\fontseries|)\\
+   |\DeclareFontSeriesChangeRule|$B$K$h$k(B
+   $B%7%j!<%:99?75,B'$K=>$&$h$&$K$7$?!#(B
+ \item |\kanjiseriesforce|, |\romanseriesforce|\\
+   $BL5>r7o$K%7%j!<%:$r99?7$9$k!J?75,!K!#(B\\
+   |\fontseriesforce|$B$OOB2$J8N>J}$K1F6A!#(B
+\end{itemize}
+
+\paragraph{$B%7%'%$%W$NB?<42=(B}
+\begin{itemize}
+ \item |\kanjishape|, |\romanshape| (, |\fontshape|)\\
+   |\DeclareFontShapeChangeRule|$B$K$h$k(B
+   $B%7%'%$%W99?75,B'$K=>$&$h$&$K$7$?!#(B
+ \item |\kanjishapeforce|, |\romanshapeforce|\\
+   $BL5>r7o$K%7%'%$%W$r99?7$9$k!J?75,!K!#(B\\
+   |\fontshapeforce|$B$OOB2$J8N>J}$K1F6A!#(B
+\end{itemize}
+
+\paragraph{$BAm>N%U%!%_%j$4$H$N<B%7%j!<%:CM$N at _Dj(B}
+\begin{itemize}
+ \item |\DeclareFontSeriesDefault|\\
+   $BBh0l0z?t!J%*%W%7%g%s!K$NAm>N%U%!%_%jL>$K(B
+   |rm|, |sf|, |tt|$B$K2C$((B|mc|, |gt|$B$b;XDj$G$-$k$h$&$K$7$?!#(B
+\end{itemize}
+
+\paragraph{$B6/D4=qBN;XDj$N0lHL2=(B}
+\begin{itemize}
+ \item \pLaTeX{}$B$G:FDj5A$7$F$$$k(B|\em| (, |\emph|)$B$G$b(B
+   |\DeclareEmphSequence|$B$K$h$k(B
+   $BF~$l;R$N6/D4=qBN$N%+%9%?%^%$%:5!G=$r%5%]!<%H$7$?!#(B
+\end{itemize}
+
+\paragraph{$B4{DjCM(B}
+\LaTeXe{}$B$KDI?o$7$F(B\pLaTeXe{}$B$G$bD4 at 0!#(B
+
+$B$^$:!"(B\LaTeXe{}$B$G$N4{DjCM$NJQ99$r8+$F$_$^$9!#(B
+\begin{itemize}
+ \item |\bfdefault|: |bx| $B"*(B |b| $B$KJQ99(B
+ \item |\updefault|: |n| $B"*(B |up| $B$KJQ99(B
+ \item |\shapedefault|: |\updefault| $B"*(B |n| $B$KJQ99(B
+\end{itemize}
+$B$3$N$&$A!V(B|bx| $B"*(B |b|$B!W$O(B
+$BB@;z$r86B'(B|b| (bold)$B$KJQ99$9$k$3$H$r0UL#$7$^$9!#(B
+$B$3$l$@$1$G$O8_49 at -$K4X$7$F7|G0$,$"$j$^$9$,!"(B
+\LaTeXe{}$B$G$OF1;~$K(B
+$B!VAm>N%U%!%_%j$4$H$N<B%7%j!<%:CM$N at _Dj!W$N?75!G=$r3hMQ$7$F(B
+\begin{itemize}
+ \item Computer Modern$B$H(BLatin Modern$B$N>l9g$@$1$O(B
+   $B=>Mh$I$*$jB@;z$r(B|bx| (bold-extended)$B$K0];}(B
+\end{itemize}
+$B$H$$$&5sF0$r<B8=$7$F$$$^$9!#(B
+
+\pLaTeXe{}$B$G$O!"(B|\bfdefault|$B$H(B|\updefault|$B$K$D$$$F(B
+\LaTeXe{}$B$N at _Dj$,$=$N$^$^OBJ8$K$b0z$-7Q$,$l$^$9!#(B
+$B;D$k0l$D$OOBJ8MQ$N4{DjCM$,JL$KB8:_$7$^$9!#(B
+\begin{itemize}
+ \item |\kanjishapedefault|: |\updefault| $B"*(B |n| $B$KJQ99(B
+\end{itemize}
+
+$B$5$F!"OBJ8$NB@;z$O=>Mh(B|\bfdefault|$B0lBr!J7k2LE*$K(B|bx|$B!K(B
+$B$G$7$?$,!"(B\pLaTeXe\ \texttt{<2020-02-02>}$B$G$O(B
+$B!VAm>N%U%!%_%j$4$H$N<B%7%j!<%:CM$N at _Dj!W$N?75!G=$,(B
+$BOBJ8%U%!%_%j(B|mc|, |gt|$B$K$b;H$($^$9!#(B
+$B$3$3$G!"(B|mc|, |gt|$B$NB@;z$r$I$&@_Dj$9$k$+$O5DO@$NM>CO$,$"$j$^$9!'(B
+\begin{enumerate}
+ \item $B8_49 at -$N$?$a!"=>Mh$I$*$j(B|bx|$B$r0];}$9$k!#(B
+ \item Computer Modern$B$G$b(BLatin Modern$B$G$b$J$$$N$G!"(B
+   |b|$B$KJQ99$9$k!#(B
+\end{enumerate}
+$B$3$N(B2$B0F$N$&$A!"8=:_$NHG$G$O(B2.$B$9$J$o$A(B
+\begin{itemize}
+ \item $BOBJ8%U%!%_%j(B|mc|$B$H(B|gt|$B$NB@;z$b(B|b| (bold)$B$KJQ99(B
+\end{itemize}
+$B$r:N$C$F$$$^$9!#$3$l$O!"OBJ8$NB@;z$O@~$,B@$$$@$1$G!"(B
+$B2#I}$,9-$,$k$o$1$G$O$J$$$?$a$G$9!#(B
+
+
+\section{NFSS$B$NOBJ8BP1~$N2~A1(B}
+\pLaTeXe\ \texttt{<2020-04-12>}$B$G$N=$@5$G$9!#(B
+\LaTeXe\ \texttt{<2020-02-02>}$B$G$N(BNFSS$B$N3HD%$H$OL54X78$K!"(B
+$B=>Mh$+$i(B\pLaTeXe{}$B$N(BNFSS$B$KB8:_$7$?OBJ8%U%)%s%H$G$NIT6q9g$K(B
+$BBP=h$7$^$7$?!#(B
+
+\paragraph{\cs{fontshape}$B$GOBJ8%7%'%$%W$,L$Dj5A$J$i0];}(B}
+$BC<E*$K$O(B |{\itshape a}| $B$N$h$&$J%7%'%$%WJQ99$G(B
+\begin{verbatim}
+    Font shape `JT1/mc/m/it' undefined
+    using `JT1/mc/m/n' instead on ....
+    Font shape `JY1/mc/m/it' undefined
+    using `JY1/mc/m/n' instead on ....
+\end{verbatim}
+$B$H$$$&(B|LaTeX Font Warning|$B$,=P$k$N$rM^@)$9$k$3$H$r(B
+$BL\E*$H$7$?=$@5$G$9!#"*(B|texjporg/platex#90|
+
+\pLaTeXe{}$B$N(B|\fontshape|$B$O!"2$J8$K2C$($FOBJ8$N%7%'%$%W$bJQ99$9$k$h$&$K(B
+$B:FDj5A$5$l$F$$$^$7$?!J%"%9%-!<(B\pLaTeXe{}$B$N;EMM!K!#(B
+$B$7$+$7!"$3$l$G$O(B|\itshape|$B$N$h$&$JL?Na$GM>J,$J7Y9p$rH/$7$F$7$^$$$^$9!#(B
+\begin{itemize}
+ \item \LaTeXe{}$B$,Dj5A$9$k(B|\itshape|$B$J$I$N%7%'%$%WJQ99L?Na$O!"(B
+   $BFbIt$G(B|\fontshape|$B$r8F$S=P$9!#(B
+ \item \pLaTeXe{}$B$N(B|\fontshape|$B$O!"2$J8=qBN$@$1$G$J$/(B
+   $BOBJ8=qBN$N%7%'%$%W$bJQ99$7$h$&$H$9$k!#(B
+ \item $B$7$+$7!"OBJ8=qBN$N%7%'%$%W$O$[$H$s$I(B``n''$B$7$+MQ$$$i$l$:!"(B
+   |\DeclareFontShape|$B$G$NDj5A$b(B``n''$B$7$+M?$($i$l$J$$$3$H$,B?$$!#(B
+ \item $B7k2LE*$K!"2$J8=qBN$N%7%'%$%W$rJQ99$9$k$D$b$j$G$b(B
+   $B!VOBJ8=qBN$N%7%'%$%W$,L$Dj5A!W$H$$$&7Y9p$,=P$F$7$^$&!#(B
+\end{itemize}
+$B$3$l$r2~A1$9$k$?$a!"(B\pLaTeXe\ \texttt{<2020-04-12>}$B$G$O(B
+\begin{itemize}
+ \item |\fontshape|$B$,A*Br$7$h$&$H$7$?(B
+   $BOBJ8$N%7%'%$%W$,L$Dj5A$N>l9g$O!"(B
+   $BOBJ8$N%7%'%$%W$OJQ99$;$:!"2$J8$N%7%'%$%W$N$_$rJQ99$9$k(B
+\end{itemize}
+$B$H$$$&;EMM$KJQ99$7$^$7$?!#$3$l$O(B|\fontshapeforce|$B$bF1MM$G$9!#(B
+
+$B$J$*!"(B|\kanjishape|$B$d(B|\kanjishapeforce|$B$O(B
+$BOBJ8=qBN$N%7%'%$%W$rJQ99$9$k0U?^$G$7$+<B9T$5$l$J$$$?$a!"(B
+$BL$Dj5A$+$I$&$+$O3NG'$7$^$;$s!#(B
+$B$^$?!"(B|\usefont|$B$OOB2$J8N>MQ$G$9$,!"0l=o$K;XDj$5$l$?(B
+$B%(%s%3!<%G%#%s%0$K1~$8$F(B|\useroman|$B$H(B|\usekanji|$B$N0lJ}$@$1$,(B
+$B<B9T$5$l$k$3$H$,L at Gr$J$?$a!"$d$O$jL$Dj5A$+$I$&$+$O3NG'$7$^$;$s!#(B
+
+\paragraph{sub, ssub$B$NOBJ8BP1~(B}
+|\DeclareFontShape|$B$G;H$o$l$k(Bsize function$B$N(B
+|sub|, |ssub|$B$,OBJ8%U%)%s%H$r at 5$7$/<hF@$G$-$J$$IT6q9g$r=$@5!#(B
+
+$B$3$l$,O*Dh$9$k6qBNE*$J>INc$H$7$F$O!"(BGitHub$B$N(B
+|texjporg/jsclasses#53|$B$GJs9p$5$l$F$$$k(B
+$B!VF|K\8l$N?t<0%U%!%_%j$r at k8@$7$?>uBV$G(B\file{bm}$B%Q%C%1!<%8$r(B
+$B;H$&$H%4%7%C%/$K$J$i$J$$!W$,$"$j$^$7$?$,!"(B
+$B:#2s$N%j%j!<%9$G2r>C$7$^$7$?!#(B
+
+\paragraph{\cs{normalfont}$BKvHx$N(B\cs{ignorespaces}$B:o=|(B}
+$B%*%j%8%J%k$N(B\LaTeXe{}$B$N(B1995$BG/$N=$@5$KDI?o$7!"(B
+\pLaTeXe{}$B$N(B|\normalfont|$BKvHx$K$J$<$+;D$C$F$$$?(B
+|\ignorespaces|$B$r:o=|$7$^$7$?!#(B
+
+\paragraph{\cs{KanjiEncodingPair}$BIT:_$N%(%i!<2~A1(B}
+2004$BG/$N%"%9%-!<(B\pLaTeXe{}$B$G!"(B|\KanjiEncodingPair|$B$K$h$k(B
+$BOBJ8=D2#%(%s%3!<%I$N%;%C%H2=$,I,?\$H$J$C$F$$$^$9!#(B
+$B$7$+$7!"%;%C%H2=$;$:$K%(%s%3!<%I$rDj5A$7$?>l9g$N%(%i!<$,(B
+$BH=$j$E$i$+$C$?$?$a!"2~A1$7$^$7$?!#(B(|#92|)
+
+\paragraph{\cs{DeclareKanjiSubstitution}$B$N=$@5(B}
+$BOBJ8$NBeMQ=qBN$N at k8@$,(B
+$B2$J8$N(B|\DeclareFontSubstitution|$B$H43>D$7!"(B
+$B8m$C$?%U%)%s%HDj5A%U%!%$%k$,FI$^$l$h$&$H$9$kLdBj$r2r>C$7$^$7$?!#(B(|#93|)
+
+\paragraph{\cs{verb}$B$N2~NI(B}
+|\verb+>+|$B$rOBJ8$G64$`$H8e$m$@$1%"%-$,F~$C$FA0$K$OF~$i$J$$8=>]$K(B
+$BBP=h$7!"(B|\texttt{>}|$B$HF1MM$KA08e$K%"%-$,F~$k$h$&$K$7$^$7$?!#(B(|#87|)
+
+
+\section{$B3+H/HG$N%F%9%H$N$*4j$$(B}
+$B:#8e(B\pLaTeX{}$B$KF3F~$9$k$+$b$7$l$J$$=$@5%Q%C%A$d;EMMJQ99$N%F%9%H$K(B
+$B$46(NO$/$@$5$$!#(B\TeX{}$B%U%!%$%k$NKAF,!J(B|\documentclass|$B$h$jA0!K$G(B
+\begin{verbatim}
+  \RequirePackage{exppl2e}
+\end{verbatim}
+$B$H=q$/$3$H$G!"8=:_$N3+H/HG$r%F%9%H$9$k$3$H$,$G$-$^$9!#(B
+$B>\:Y$O(B\file{exppl2e.pdf}$B$r;2>H$7$F$/$@$5$$!#$3$3$K$O!"(B
+$B$=$NB>$N(B\pLaTeXe{}$B$N4{CN$N@)Ls;v9`$b5-:\$7$F$$$^$9!#(B
+\TeX\ Forum$B$d(BGitHub$B$N(BIssue$B$G$N%P%0Js9p$d$40U8+$r4?7^$7$^$9!#(B
+\begin{itemize}
+\item \texttt{https://github.com/texjporg/platex}
+\item \texttt{https://github.com/texjporg/uplatex}
+\end{itemize}
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/source/platex/base/plnewsc14.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/source/platex/base/plvers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/platex/base/plvers.dtx	2020-04-12 21:27:51 UTC (rev 54696)
+++ trunk/Master/texmf-dist/source/platex/base/plvers.dtx	2020-04-12 21:29:19 UTC (rev 54697)
@@ -93,12 +93,15 @@
 %    (sync with ltvers.dtx 2019/07/01 v1.1c)}
 % \changes{v1.1q}{2019/10/01}{\LaTeX\ \texttt{!<2019-10-01!>}$BHGBP1~3NG'(B}
 % \changes{v1.1r}{2020/02/01}{\LaTeX\ \texttt{!<2020-02-02!>}$BHGBP1~3NG'(B}
+% \changes{v1.1s}{2020/03/14}{\LaTeX\ \texttt{!<2020-02-02!> PL5}$BHGBP1~3NG'(B}
+% \changes{v1.1t}{2020/03/25}{$B%P%J!<$N:F9=C[$r8zN(2=(B}
+% \changes{v1.1u}{2020/03/28}{latexrelease$BMxMQ;~$N7Y9p$rAa$a$?(B}
 % \fi
 %
 % \iffalse
 %<*driver>
 % \fi
-\ProvidesFile{plvers.dtx}[2020/02/01 v1.1r pLaTeX Kernel (Version Info)]
+\ProvidesFile{plvers.dtx}[2020/03/28 v1.1u pLaTeX Kernel (Version Info)]
 % \iffalse
 \documentclass{jltxdoc}
 \GetFileInfo{plvers.dtx}
@@ -113,9 +116,8 @@
 % \fi
 %
 % \section{p\LaTeXe{}$B$N%P!<%8%g%s$N at _Dj(B}
-% $B$^$:!"$3$N%G%#%9%H%j%S%e!<%7%g%s$G$N(Bp\LaTeXe{}$B$NF|IU$H%P!<%8%g%sHV9f(B
-% $B$rDj5A$7$^$9!#(B
 %
+% $B8=:_$N(Bp\LaTeXe{}$B$,%Y!<%9$H$7$?(B\LaTeXe{}$B$N%P!<%8%g%s$O!"2<5-$N$H$*$j$G$9!#(B
 % \changes{v1.0}{1995/05/16}{p\LaTeXe\ $BMQ$K(B\file{ltvers.dtx}$B$r=$@5(B}
 % \changes{v1.0a}{1995/08/30}{\LaTeX\ \texttt{!<1995/06/01!>}$BHGMQ$K=$@5(B}
 % \changes{v1.0b}{1996/01/31}{\LaTeX\ \texttt{!<1995/12/01!>}$BHGMQ$K=$@5(B}
@@ -138,11 +140,7 @@
 % \changes{v1.1o}{2018/12/01}{\LaTeX\ \texttt{!<2018-12-01!>}$BHGBP1~3NG'(B}
 % \changes{v1.1q}{2019/10/01}{\LaTeX\ \texttt{!<2019-10-01!>}$BHGBP1~3NG'(B}
 % \changes{v1.1r}{2020/02/01}{\LaTeX\ \texttt{!<2020-02-02!>}$BHGBP1~3NG'(B}
-%
-% $B$3$N%P!<%8%g%s$N(Bp\LaTeXe{}$B$O!"<!$N%P!<%8%g%s$N(B\LaTeX{}\footnote{%
-% \LaTeX\ authors: Johannes Braams, David Carlisle, Alan Jeffrey,
-%   Leslie Lamport, Frank Mittelbach, Chris Rowley, Rainer Sch\"opf}$B$r(B
-% $B$b$H$K$7$F$$$^$9!#(B
+% \changes{v1.1s}{2020/03/14}{\LaTeX\ \texttt{!<2020-02-02!> PL5}$BHGBP1~3NG'(B}
 %    \begin{macrocode}
 %<*2ekernel>
 %\def\fmtname{LaTeX2e}
@@ -155,10 +153,10 @@
 %</2ekernel|latexrelease|platexrelease>
 %    \end{macrocode}
 %
-% $B$^$:!"<!$N%P!<%8%g%s$N(B\LaTeX{}$B$,MxMQ2DG=$J$3$H$r3NG'$7$^$9!#(B
-% \LaTeXe\ 2017-04-15$B$G!"%P!<%8%g%sHV9f!JF|IU!K$N%U%)!<%^%C%H$,(B
-% YYYY/MM/DD$B7A<0$+$i(BYYYY-MM-DD$B$KJQ99$5$l$F$$$^$9!#(B
-% ^^A \LaTeXe\ 2017/01/01$B0J9_$O(Be-\TeX{}$BI,?\$K$J$C$F$$$^$9!#(B
+% $B$^$?!"8=:_$N(Bp\LaTeXe{}$B$O:GDc$G$b(B\LaTeXe\ 2017-04-15$B0J9_(B
+% $B!J%P!<%8%g%sHV9f$9$J$o$AF|IU$,(B|YYYY/MM/DD|$B7A<0$+$i(B
+% |YYYY-MM-DD|$B7A<0$KJQ99$5$l$?HG!K$rA0Ds$H$7$^$9!#(B
+% $B$J$*!"(B\LaTeXe\ 2017/01/01$B0J9_$O(Be-\TeX{}$BI,?\$K$J$C$F$$$^$9!#(B
 % \changes{v1.1i}{2018/03/31}{\LaTeXe\ 2017-04-15$B0J9_I,?\(B}
 %    \begin{macrocode}
 %<*plcore>
@@ -183,7 +181,7 @@
 % \begin{macro}{\pfmtname}
 % \begin{macro}{\pfmtversion}
 % \begin{macro}{\ppatch at level}
-% p\LaTeXe{}$B$N%U%)!<%^%C%H%U%!%$%kL>$H%P!<%8%g%s$G$9!#(B
+% p\LaTeXe{}$B$N%U%)!<%^%C%H%U%!%$%kL>$H%P!<%8%g%s$rDj5A$7$^$9!#(B
 % \changes{v1.0x}{2016/06/19}{$B%Q%C%A%l%Y%k$r(B\file{plvers.dtx}$B$G at _Dj(B}
 %    \begin{macrocode}
 %<*plcore>
@@ -192,10 +190,10 @@
 %</plcore>
 %<platexrelease>\edef\platexreleaseversion
 %<*plcore|platexrelease>
-   {2020-02-02}
+   {2020-04-12}
 %</plcore|platexrelease>
 %<*plcore>
-\def\ppatch at level{3}
+\def\ppatch at level{0}
 %</plcore>
 %    \end{macrocode}
 % \end{macro}
@@ -202,34 +200,8 @@
 % \end{macro}
 % \end{macro}
 %
-% \subsection{\LaTeXe{}$B$N%P!<%8%g%s$N<hF@(B}
-% $B$3$N%U%!%$%k$ND>A0$G(B\LaTeXe{}$B$N(B\file{latex.ltx}$B$,FI$_9~$^$l$F$$$k$O$:(B
-% $B$J$N$G!"$=$N5/F0;~$N%P%J!<$rJ]B8$7$^$9!#(B
-%
-% \LaTeXe\ 2018-04-01 patch level 1$B$^$G$O!"(B|\everyjob|$B$,(B
-%\begin{verbatim}
-%   \typeout{LaTeX2e version}\typeout{Babel version}
-%\end{verbatim}
-% $B$@$1$G$7$?$,!"(B\LaTeXe\ 2018-04-01 patch level 2$B$G?7$?$J%H!<%/%sNs$,(B
-% $BDI2C$5$l$^$7$?!#:#8e$b(B\LaTeXe{}$BB&$G(B|\everyjob|$B$K<B9T$rCY$i$;$k(B
-% $B%3!<%I$,DI2C$5$l$k2DG=@-$,$"$j$^$9$N$G!"$=$N%3!<%I$rCj=P$7$J$1$l$P(B
-% $B$J$j$^$;$s!#$=$3$G!":G=i$H:G8e$K6h at Z$j%H!<%/%s!J$=$l$>$l(B|\platexNILa|$B$H(B
-% |\platexNILb|$B!K$rIU$1$F$*$-$^$9!#(B
-% \changes{v1.1f}{2017/11/11}{\LaTeX{}$B$N%P%J!<$rJ]B8$9$k%3!<%I$r(B
-%    \file{platex.ltx}$B$+$i(B\file{plcore.ltx}$B$X0\F0(B}
-% \changes{v1.1l}{2018/04/09}{$B%P%J!<$NJ]B8$7$+$?$r2~NI(B}
-%    \begin{macrocode}
-%<*plcore>
-\edef\platexBANNER{\noexpand\platexNILa
-                   \the\everyjob % LaTeX banner and delayed codes
-                   \noexpand\platexNILb}
-%</plcore>
-%    \end{macrocode}
-%
-% \subsection{$B%Q%C%A%U%!%$%k$N%m!<%I(B}
-%
 % $B%3%_%e%K%F%#HG(B\pLaTeXe{}$B$G$O%Q%C%A%U%!%$%k$r;HMQ$7$J$$$N$G!"(B
-% $B%3%a%s%H%"%&%H$7$^$7$?!#(B
+% $B%Q%C%A%U%!%$%k$r%m!<%I$9$k%3!<%I$O:o=|$7$^$7$?!#(B
 % \changes{v1.0v}{2016/05/07}{$B%Q%C%A%U%!%$%k$r%m!<%I$9$k$N$r$d$a$?!#(B}
 %
 % \iffalse
@@ -273,43 +245,54 @@
 %    \end{macrocode}
 % \fi
 %
-% \subsection{$B5/F0;~$K<B9T$9$k%3!<%I(B}
+% \section{$B5/F0;~$K<B9T$9$k%3!<%I(B}
 %
-% \begin{macro}{\everyjob}
-% p\LaTeXe{}$B$,5/F0$5$l$?$H$-$K<B9T$5$l$k%3!<%I$G$9!#(B
-% \LaTeXe{}$B$N<B9T%3!<%I$r85$K!"(B\pLaTeXe{}$BMQ$ND4 at 0$r2C$($^$9!#(B
-% \changes{v1.1}{2016/09/14}{$B5/F0;~$N%P%J!<$r<hF@$9$k%3!<%I$r2~NI(B}
-% \changes{v1.1k}{2018/04/08}{$B%P%J!<D4 at a$N%3!<%I$r:G8e(B(plfinal)$B$G$O$J$/(B
-%    $B:G=i(B(plcore)$B$KAa$a$?(B}
-% \changes{v1.1l}{2018/04/09}{$B%P%J!<$N:F9=C[$N$7$+$?$r2~NI(B}
-% \changes{v1.1m}{2018/09/24}{$B%P%J!<$N:F9=C[$r4JN,2=(B}
+% \subsection{\LaTeXe{}$B5/F0;~$N<B9T%3!<%I$N<hF@(B}
+% $B$3$N%U%!%$%k$ND>A0$G(B\LaTeXe{}$B$N(B\file{latex.ltx}$B$,FI$_9~$^$l$F$$$k$O$:(B
+% $B$J$N$G!"$=$N5/F0;~$N<B9T%3!<%I!J(B|\everyjob|$B%H!<%/%s$NFbMF!K$rJ]B8$7$^$9!#(B
 %
-% $B$^$:!"(B\LaTeXe{}$B$N%P!<%8%g%sI=<(!J(B|\typeout{LaTeX2e version}|$B!K$h$j(B
-% $BA0$K<B9T$5$l$k%3!<%I$,$"$l$P!"$=$l$rCj=P$7$F(B|\everyjob|$B$KF~$l$^$9!#(B
-% \LaTeXe\ 2018-04-01 patch level 2$B$N;~E@$G$O6u$G$9!#(B
+% \LaTeXe\ 2018-04-01 patch level~1$B$^$G$O!"(B|\everyjob|$B$,(B
+%\begin{verbatim}
+%   \typeout{LaTeX2e version}\typeout{Babel version}
+%\end{verbatim}
+% $B$@$1$G$7$?$,!"(Bpatch level~2$B0J9_$G$O(B
+% $B$$$/$D$+$N%3!<%I$,(B|\everyjob|$B$GCY1d<B9T$5$l$k$h$&$K$J$C$F$$$^$9!#(B
+% $B$=$l$i$N%3!<%I$rCj=P$9$k$?$a!":G=i$H:G8e$K6h at Z$j%H!<%/%s(B
+% $B!J$=$l$>$l(B|\platexNILa|$B$H(B|\platexNILb|$B!K$rIU$1$F$*$-$^$9!#(B
+% \changes{v1.1f}{2017/11/11}{\LaTeX{}$B$N%P%J!<$rJ]B8$9$k%3!<%I$r(B
+%    \file{platex.ltx}$B$+$i(B\file{plcore.ltx}$B$X0\F0(B}
+% \changes{v1.1l}{2018/04/09}{$B%P%J!<$NJ]B8$7$+$?$r2~NI(B}
 %    \begin{macrocode}
 %<*plcore>
-\begingroup
-  \def\platexNILa#1\typeout#2#3\platexNILb{#1}
-  \toks0=\expandafter\expandafter\expandafter{\platexBANNER}
-  \global\everyjob\expandafter{\the\toks0}%
-\endgroup
+\edef\platexBANNER{\noexpand\platexNILa
+                   \the\everyjob % LaTeX banner and delayed codes
+                   \noexpand\platexNILb}
 %    \end{macrocode}
 %
-% $B<!$K!"(B\LaTeXe{}$B$N%P!<%8%g%s$rI=<($9$k%3!<%I$rCj=P$7!"(B
-% \pLaTeXe{}$B$N%P!<%8%g%s$H$^$H$a$FI=<($9$k$h$&$K at 07A$7$^$9!#(B
+% \subsection{\pLaTeXe{}$B5/F0;~$K<B9T$9$k%3!<%I$N9=C[(B}
+%
+% \begin{macro}{\everyjob}
+% \LaTeXe{}$B5/F0;~$N<B9T%3!<%I$r85$K!"(B\pLaTeXe{}$BMQ$ND4 at 0$r2C$($^$9!#(B
 % \changes{v1.0v}{2016/05/07}{$B5/F0;~$NJ8;zNs$r:G?7$N(B\LaTeX{}$B$K9g$o$;$?!#(B}
 % \changes{v1.0w}{2016/05/12}{$B5/F0;~$NJ8;zNs$KF~$l$k(B\LaTeX{}$B$N%P!<%8%g%s$r(B
 %    $B85$N(B\LaTeX{}$B$N%P%J!<$+$i0z$-7Q$0$h$&$K2~NI(B}
+% \changes{v1.0w}{2016/05/12}{$B5/F0;~$NJ8;zNs$KF~$l$k(BBabel$B$N%P!<%8%g%s$r(B
+%    $B85$N(B\LaTeX{}$B$N%P%J!<$+$i<hF@$9$k%3!<%I$r(B\file{platex.ini}$B$+$i<h$jF~$l$?(B}
+% \changes{v1.1}{2016/09/14}{$B5/F0;~$N%P%J!<$r<hF@$9$k%3!<%I$r2~NI(B}
 % \changes{v1.1d}{2017/09/24}{$B%Q%C%A%l%Y%k$,Ii$N?t$N>l9g$r(Bpre-release$B07$$$X(B}
 % \changes{v1.1g}{2017/12/04}{\pLaTeX{}$B$N%P%J!<$NDj5A;~$K(B
 %    \cs{pfmtname}, \cs{pfmtversion}, \cs{ppatch at level}$B$rE83+$7$J$$$h$&$K(B}
+% \changes{v1.1k}{2018/04/08}{$B%P%J!<D4 at a$N%3!<%I$r:G8e(B(plfinal)$B$G$O$J$/(B
+%    $B:G=i(B(plcore)$B$KAa$a$?(B}
+% \changes{v1.1l}{2018/04/09}{$B%P%J!<$N:F9=C[$N$7$+$?$r2~NI(B}
+% \changes{v1.1m}{2018/09/24}{$B%P%J!<$N:F9=C[$r4JN,2=(B}
+% \changes{v1.1t}{2020/03/25}{$B%P%J!<$N:F9=C[$r8zN(2=(B}
 %    \begin{macrocode}
-%\ifx\ppatch at level\@undefined % fallback if undefined in pLaTeX
-%  \def\ppatch at level{0}\fi
 \begingroup
-  \def\platexNILa#1\typeout#2#3\platexNILb{#2}
-  \toks0=\expandafter\expandafter\expandafter{\platexBANNER}
+%    \end{macrocode}
+%
+% \pLaTeXe{}$B$N%P!<%8%g%sI=<($r:n$j$^$9!#(B
+%    \begin{macrocode}
   \ifnum\ppatch at level=0
     \toks2={\pfmtname\space<\pfmtversion>\space}%
   \else\ifnum\ppatch at level>0
@@ -317,24 +300,28 @@
   \else
     \toks2={\pfmtname\space<\pfmtversion>-pre\ppatch at level\space}%
   \fi\fi
-  \edef\platexBANNER{\the\everyjob
-    \noexpand\typeout{\the\toks2 (based on \the\toks0)}}
-  \global\everyjob\expandafter{\platexBANNER}%
-\endgroup
 %    \end{macrocode}
 %
-% \LaTeXe{}$B$N%P!<%8%g%sI=<($N8e$K;D$C$F$$$k%3!<%I$r!"(B
-% $B$=$N$^$^(B|\everyjob|$B$KDI2C$7$^$9!#(B
+% |\everyjob|$B$NFbMF$r%Q!<%9$7$F(B
+% \begin{itemize}
+% \item \LaTeXe{}$B$N%P!<%8%g%sI=<($NCf?H!J(B|\typeout{}|$B$N0z?t!K$r(B |#2|
+% \item $B%P!<%8%g%sI=<($NA0$K<B9T$5$l$k%3!<%I$,$"$l$P(B |#1|
+% \item $B%P!<%8%g%sI=<($N8e$K;D$C$F$$$k%3!<%I$,$"$l$P(B |#3|
+% \end{itemize}
+% $B$KF~$l$^$9!#(B2020$BG/;~E@$G$O(B |#1| $B$O6u!"(B|#3| $B$O2$J8(Binputenc$B$N(BUTF-8$B2=$G(B
+% $BCY1d$5$l$?%3!<%I$K3:Ev$7$^$9!#(B
 % ^^A Babel v3.20$B$^$G$O$3$NCf$K(B|\typeout{Babel version}|$B$b4^$^$l$F(B
 % ^^A $B$$$^$7$?$,!"(BBabel v3.21$B$+$i$O$3$N%P%J!<I=<($OL5$/$J$C$?$h$&$G$9!#(B
-% \changes{v1.0w}{2016/05/12}{$B5/F0;~$NJ8;zNs$KF~$l$k(BBabel$B$N%P!<%8%g%s$r(B
-%    $B85$N(B\LaTeX{}$B$N%P%J!<$+$i<hF@$9$k%3!<%I$r(B\file{platex.ini}$B$+$i<h$jF~$l$?(B}
+% $B$=$7$F!"(B\LaTeXe{}$B$N%P!<%8%g%s$H(B\pLaTeXe{}$B$N%P!<%8%g%s$r(B
+% $B$^$H$a$FI=<($9$k$h$&$K at 07A$7$^$9!#(B
 %    \begin{macrocode}
-\begingroup
-  \def\platexNILa#1\typeout#2#3\platexNILb{#3}
-  \toks0=\expandafter\expandafter\expandafter{\platexBANNER}
-  \edef\platexBANNER{\the\everyjob \the\toks0}
-  \global\everyjob\expandafter{\platexBANNER}%
+  \edef\platexNILa#1\typeout#2#3\platexNILb{%
+    #1\noexpand\typeout{\the\toks2 (based on #2)}#3}
+  \global\everyjob\expandafter\expandafter\expandafter{\platexBANNER}%
+%    \end{macrocode}
+%
+% $BITMW$K$J$C$?%^%/%mDj5A$O:o=|$7$F$*$-$^$9!#(B
+%    \begin{macrocode}
 \endgroup
 \let\platexBANNER=\@undefined
 %</plcore>
@@ -362,6 +349,8 @@
 %
 % $B:G8e$K!"(Blatexrelease$B%Q%C%1!<%8$X$NBP1~$G$9!#(B
 % \begin{macro}{\plIncludeInRelease}
+% platexrelease$B%Q%C%1!<%8$G$O(B
+% |\plIncludeInRelease|...|\plEndIncludeInRelease|$B$N%V%m%C%/$r;H$$$^$9!#(B
 % \changes{v1.0t}{2016/02/03}{\cs{plIncludeInRelease}$B$H(B
 %    \cs{plEndIncludeInRelease}$B$r?7 at _!#(B}
 % \changes{v1.1e}{2017/11/09}{\file{latexrelease}$B$H(B
@@ -447,21 +436,42 @@
 % \end{macro}
 %
 % \LaTeXe{}$B$,Ds6!$9$k(Blatexrelease$B%Q%C%1!<%8$,FI$_9~$^$l$F$$$F!"(B
-% $B$+$D(Bp\LaTeXe{}$B$,Ds6!$9$k(Bplatexrelease$B%Q%C%1!<%8$,FI$_9~$^$l$F$$$J$$(B
-% $B>l9g$O!"7Y9p$r=P$7$^$9!#(B
+% $B$+$D(B\pLaTeXe{}$B$,Ds6!$9$k(Bplatexrelease$B%Q%C%1!<%8$,FI$_9~$^$l$F$$$J$$(B
+% $B>l9g$O!"4,$-La$75!G=$K$h$C$F(B\pLaTeXe{}$B$N%3%^%s%I$,(B\LaTeXe{}$B$N%3%^%s%I$G(B
+% $B>e=q$-$5$l!"F0:n$,2u$l$F$7$^$$$^$9$N$G!"7Y9p$r=P$7$^$9!#(B
 % \changes{v1.0s}{2016/02/01}{latexrelease$BMxMQ;~$K7Y9p$r=P$9$h$&$K$7$?(B}
+%
+% $B0JA0$O(B|\AtBeginDocument|$B$r;H$C$F(B|\@begindocumenthook|$B$NKvHx$K(B
+% $B7Y9pJ8$rF~$l$F$$$^$7$?$,!"(B\LaTeXe~2020-02-02$B0J9_$KIUB0$N(B
+% latexrelease$B%Q%C%1!<%8$G4,$-La$9$H%U%C%/$N<B9T$h$jAa$$CJ3,(B
+% $B!J6qBNE*$K$O(B|\process at table|$BFb$N(B|\kanjiprocess at table|$B<B9TCf!K$G(B
+% $B!V(B|\series at maybe@drop at one@m|$B$,L$Dj5A!W$H$$$&%(%i!<$,=P$F$7$^$&$N$G!"(B
+% |\process at table|$B$N at hF,$K7Y9pJ8$rF~$l$^$9!#(B
+% $BK|$,0l(B|\process at table|$B$b4,$-La$7BP>]$H$5$l$F$7$^$C$?>l9g$N$?$a!"(B
+% |\@begindocumenthook|$B$N at hF,$K$bF~$l$F$*$-$^$9!#(B
+% ^^A $B$3$N>l9g$O(B|\process at table|$B$,(B|\romanprocess at table|$BAjEv$X$H(B
+% ^^A $B>e=q$-$5$l$F$$$k$O$:$G$"$j!"(B|\kanjiprocess at table|$B$O(B
+% ^^A $B<B9T$5$l$J$$$N$G%(%i!<$O=P$J$$!#(B
+% \changes{v1.1u}{2020/03/28}{latexrelease$BMxMQ;~$N7Y9p$rAa$a$?(B}
 %    \begin{macrocode}
 %<*plfinal>
-\AtBeginDocument{%
-  \@ifpackageloaded{latexrelease}{%
-    \@ifpackageloaded{platexrelease}{}{%
+\expandafter\def\expandafter\process at table\expandafter{%
+  \expandafter\p at warn@latexrelease\process at table}
+\begingroup
+\toks@\expandafter{\expandafter\p at warn@latexrelease\@begindocumenthook}
+\xdef\@begindocumenthook{\the\toks@}
+\endgroup
+\def\p at warn@latexrelease{%
+  \ifx\latexreleaseversion\@undefined\else
+    \ifx\platexreleaseversion\@undefined
       \@latex at warning@no at line{%
         Package latexrelease is loaded.\MessageBreak
         Some patches in pLaTeX2e core may be overwritten.\MessageBreak
         Consider using platexrelease.\MessageBreak
         See platex.pdf for detail}%
-    }%
-  }{}%
+    \fi
+  \fi
+  \let\p at warn@latexrelease\relax
 }
 %</plfinal>
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/tex/platex/base/exppl2e.sty
===================================================================
--- trunk/Master/texmf-dist/tex/platex/base/exppl2e.sty	2020-04-12 21:27:51 UTC (rev 54696)
+++ trunk/Master/texmf-dist/tex/platex/base/exppl2e.sty	2020-04-12 21:29:19 UTC (rev 54697)
@@ -34,7 +34,7 @@
 % case 1: This file must be a normal package
   \NeedsTeXFormat{pLaTeX2e}
   \ProvidesPackage{exppl2e}
-                [2020/02/09 v1.1f Experimental pLaTeX2e features]
+                [2020/02/10 v1.1g Experimental pLaTeX2e features]
   \PackageWarningNoLine{exppl2e}{%
       This is the unstable, experimental part of pLaTeX2e.\MessageBreak
       This package may contain:\MessageBreak
@@ -332,108 +332,14 @@
 %
 % \section{\cs{verb}$B at hF,$N9g;zM^@)$H(B\cs{xkanjiskip}}
 %
-% \begin{macro}{\do at noligs}
-% |>|$B$J$I$N0lIt$NJ8;z$K$D$$$F!"(B|\xspcode`\>=3|$B$H$7$?$H$-$K(B
-% |\texttt{>}|$B$G$OA08e$K(B|\xkanjiskip|$BM3Mh$N%"%-$,F~$k$N$K!"(B
-% |\verb+>+|$B$G$O8e$m$K$7$+%"%-$,F~$i$J$$$H$$$&8=>]$KBP=h$7$^$9!#(B
+% 2020/04/12$B$KF3F~:Q$_!#(B
 %
-% $B85$NDj5A$O(B\file{ltmiscen.dtx}$B$r;2>H$7$F$/$@$5$$!#(B
-% p\LaTeX{}$B$G$O!"(B|\kern\z@|$B$r(B|\vadjust{}|$B$KCV$-49$($k$3$H$G(B
-% $B!V9g;z=hM}$rM^;_!W$+$D!VOB2$J84V%9%Z!<%9$NA^F~=hM}$OF)2a!W$r<B8=$7$^$9!#(B
-% (Issue \#87)
-%    \begin{macrocode}
-\def\do at noligs#1{%
-  \catcode`#1\active
-  \begingroup
-     \lccode`\~`#1\relax
-     \lowercase{\endgroup\def~{\leavevmode\vadjust{}\char`#1}}}
-%    \end{macrocode}
-% \end{macro}
-%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
 % \section{NFSS$B$N(Bsize function$B$NF|K\8l2=(B}
 %
-% \begin{macro}{\inlist@}
-% |\do at subst@correction|$B$NF|K\8l2=$KI,MW$J$N$G!"(B
-% $BHf3S$9$k:]$K0z?t!&%j%9%H$H$b(B\cs{detokenize}$B$K$h$C$FJ8;zNs2=$9$k$h$&$K$7$^$7$?!#(B
-% \changes{v1.6x}{2020/02/05}{$B0z?t!&%j%9%H$H$b(B\cs{detokenize}$B$K$h$C$FJ8;zNs2=(B}
-%    \begin{macrocode}
-\def\inlist@#1#2{%
-  \edef\reserved at a{%
-    \unexpanded{\def\in@@##1<}%
-    \detokenize{#1}%
-    \unexpanded{>##2##3\in@@{\ifx\in@##2\in at false\else\in at true\fi}\in@@}%
-    \detokenize{#2}%
-    \unexpanded{<}%
-    \detokenize{#1}%
-    \unexpanded{>\in@\in@@}}%
-  \reserved at a}
-%    \end{macrocode}
-% \end{macro}
+% 2020/04/12$B$KF3F~:Q$_!#(B
 %
-% \begin{macro}{\do at subst@correction}
-% \begin{macro}{\pltx at do@subst at correction@al}
-% \begin{macro}{\pltx at do@subst at correction@yoko}
-% \begin{macro}{\pltx at do@subst at correction@tate}
-% |\font|$B$O2$J8%U%)%s%H$rJV$9$?$a!"(B\LaTeX{}$B$N85$N(B|\do at subst@correction|$B$O(B
-% $BOBJ8%U%)%s%H$KBP$7$F;H$($^$;$s$N$G!"OBJ8$KBP1~$5$;$^$9!#(B
-% \changes{v1.6x}{2020/02/05}{\cs{do at subst@correction}$B$NF|K\8l2=(B}
-%
-% $B%*%j%8%J%k$N(B\LaTeX{}$B$NDj5A$O!"2$J8MQ$H$7$F;H$$$^$9!#(B
-%    \begin{macrocode}
-\def\pltx at do@subst at correction@al{%
-       \xdef\subst at correction{%
-          \font at name
-          \global\expandafter\font
-            \csname \curr at fontshape/\f at size\endcsname
-            \noexpand\fontname\font
-           \relax}%
-       \aftergroup\subst at correction
-}
-%    \end{macrocode}
-% $BOBJ82#AHMQ$HOBJ8=DAHMQ$NDj5A$G$O!"$=$l$>$l(B|\jfont|$B$H(B|\tfont|$B$r;H$$$^$9!#(B
-%    \begin{macrocode}
-\def\pltx at do@subst at correction@yoko{%
-       \xdef\subst at correction{%
-          \font at name
-          \global\expandafter\jfont
-            \csname \curr at fontshape/\f at size\endcsname
-            \noexpand\fontname\jfont
-           \relax}%
-       \aftergroup\subst at correction
-}
-\def\pltx at do@subst at correction@tate{%
-       \xdef\subst at correction{%
-          \font at name
-          \global\expandafter\tfont
-            \csname \curr at fontshape/\f at size\endcsname
-            \noexpand\fontname\tfont
-           \relax}%
-       \aftergroup\subst at correction
-}
-%    \end{macrocode}
-% $B$=$7$F!"%(%s%3!<%G%#%s%0$K1~$8$F(B3$B$D$NL?Na$r;H$$J,$1$^$9!#(B
-%    \begin{macrocode}
-\def\do at subst@correction{%
-  \edef\tmp at item{{\f at encoding}}%
-  \expandafter\expandafter\expandafter
-  \inlist@\expandafter\tmp at item\expandafter{\kyenc at list}%
-  \ifin@\pltx at do@subst at correction@yoko
-  \else
-    \expandafter\expandafter\expandafter
-    \inlist@\expandafter\tmp at item\expandafter{\ktenc at list}%
-    \ifin@\pltx at do@subst at correction@tate\else
-      \pltx at do@subst at correction@al
-    \fi
-  \fi
-}
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
 % \section{$B5SCm$N9g0uD>8e$G$N2~9T$r5v2D(B}

Modified: trunk/Master/texmf-dist/tex/platex/base/platexrelease.sty
===================================================================
--- trunk/Master/texmf-dist/tex/platex/base/platexrelease.sty	2020-04-12 21:27:51 UTC (rev 54696)
+++ trunk/Master/texmf-dist/tex/platex/base/platexrelease.sty	2020-04-12 21:29:19 UTC (rev 54697)
@@ -18,7 +18,7 @@
 \edef\p at known@latexreleaseversion
    {2020-02-02}
 \edef\platexreleaseversion
-   {2020-02-02}
+   {2020-04-12}
 \newif\if at plincludeinrelease
 \@plincludeinreleasefalse
 \def\plIncludeInRelease#1{%
@@ -69,8 +69,16 @@
 %% File: platexrelease.dtx
 \NeedsTeXFormat{pLaTeX2e}
 \ProvidesPackage{platexrelease}
-          [2018/05/22 v1.0m latexrelease support for pLaTeX Kernel
+          [2020/03/28 v1.0n latexrelease support for pLaTeX Kernel
               (including releases up to \platexreleaseversion)]
+\ifx\p at warn@latexrelease\@undefined\else
+\let\p at warn@latexrelease\relax
+\fi
+\ifx\latexreleaseversion\@undefined\else
+  \PackageWarningNoLine{platexrelease}{%
+    Package `latexrelease' is already loaded;\MessageBreak
+    load `platexrelease' earlier}
+\fi
 \RequirePackageWithOptions{latexrelease}
 \ifnum\expandafter\@parse at version\latexreleaseversion//00\@nil
   >\expandafter\@parse at version\p at known@latexreleaseversion//00\@nil
@@ -134,6 +142,12 @@
       some critical bugs. We advise you to\MessageBreak
       select another format date}
 \plIncludeInRelease{2017/10/28}{\PackageWarning}{pLaTeX Info}%
+  % * <2020-04-12>
+  % * <2020-02-02>+3
+  % * <2020-02-02>+2
+  % * <2020-02-02>+1
+  % * <2020-02-02>
+  % * <2019-10-01>+1
   % * <2019-10-01>
   % * <2019-04-06>
   % * <2018-12-01>
@@ -189,6 +203,26 @@
   % * <2006/11/10>
 \plEndIncludeInRelease
 %% File: plfonts.dtx
+\plIncludeInRelease{2020/04/12}{\inlist@}
+                   {Detokenize}%
+\def\inlist@#1#2{%
+  \edef\reserved at a{%
+    \unexpanded{\def\in@@##1<}%
+    \detokenize{#1}%
+    \unexpanded{>##2##3\in@@{\ifx\in@##2\in at false\else\in at true\fi}\in@@}%
+    \detokenize{#2}%
+    \unexpanded{<}%
+    \detokenize{#1}%
+    \unexpanded{>\in@\in@@}}%
+  \reserved at a}
+\plEndIncludeInRelease
+\plIncludeInRelease{0000/00/00}{\inlist@}
+                   {ASCII Corporation original}%
+\def\inlist@#1#2{%
+  \def\in@@##1<#1>##2##3\in@@{%
+    \ifx\in@##2\in at false\else\in at true\fi}%
+  \in@@#2<#1>\in@\in@@}
+\plEndIncludeInRelease
 \plIncludeInRelease{2017/04/08}{\ystrutbox}
                    {Add \ystrutbox}%
 \newbox\ystrutbox
@@ -335,6 +369,87 @@
   }
 \let\DeclareFontEncoding at saved\@undefined
 \plEndIncludeInRelease
+\plIncludeInRelease{2020/04/12}{\ensure at KanjiEncodingPair}
+                   {Check \KanjiEncodingPair}%
+\def\ensure at KanjiEncodingPair#1{%
+  \edef\reserved at a{\csname #1 at enc@\k at encoding\endcsname}%
+  \edef\reserved at b{\csname c#1 at encoding\endcsname}%
+  \ifcat\relax\reserved at a
+    \@latex at error
+      {KANJI Encoding pair for `\k at encoding' undefined}%
+      {Use \string\KanjiEncodingPair, falling back to `\reserved at b'...}%
+    \expandafter\edef\reserved at a{\reserved at b}%
+  \fi}
+\plEndIncludeInRelease
+\plIncludeInRelease{0000/00/00}{\ensure at KanjiEncodingPair}
+                   {ASCII Corporation original}%
+\let\ensure at KanjiEncodingPair\@undefined
+\plEndIncludeInRelease
+\plIncludeInRelease{2020/04/12}{\DeclareKanjiSubstitution}
+                   {Use \default at k@family etc.}%
+\def\DeclareKanjiSubstitution#1#2#3#4{%
+  \expandafter\ifx\csname T@#1\endcsname\relax
+    \@latex at error{KANJI Encoding scheme `#1' unknown}\@eha
+  \else
+    \begingroup
+       \def\reserved at a{#1}%
+       \toks@{}%
+       \def\cdp at elt##1##2##3##4{%
+         \def\reserved at b{##1}%
+         \ifx\reserved at a\reserved at b
+           \addto at hook\toks@{\cdp at elt{#1}{#2}{#3}{#4}}%
+         \else
+           \addto at hook\toks@{\cdp at elt{##1}{##2}{##3}{##4}}%
+         \fi}%
+       \cdp at list
+       \xdef\cdp at list{\the\toks@}%
+    \endgroup
+    \global\@namedef{D@#1}{\def\default at k@family{#2}% !!!
+                           \def\default at k@series{#3}% !!!
+                           \def\default at k@shape{#4}}% !!!
+  \fi}
+\plEndIncludeInRelease
+\plIncludeInRelease{0000/00/00}{\DeclareKanjiSubstitution}
+                   {ASCII Corporation original}%
+\def\DeclareKanjiSubstitution#1#2#3#4{%
+  \expandafter\ifx\csname T@#1\endcsname\relax
+    \@latex at error{KANJI Encoding scheme `#1' unknown}\@eha
+  \else
+    \begingroup
+       \def\reserved at a{#1}%
+       \toks@{}%
+       \def\cdp at elt##1##2##3##4{%
+         \def\reserved at b{##1}%
+         \ifx\reserved at a\reserved at b
+           \addto at hook\toks@{\cdp at elt{#1}{#2}{#3}{#4}}%
+         \else
+           \addto at hook\toks@{\cdp at elt{##1}{##2}{##3}{##4}}%
+         \fi}%
+       \cdp at list
+       \xdef\cdp at list{\the\toks@}%
+    \endgroup
+    \global\@namedef{D@#1}{\def\default at family{#2}%
+                           \def\default at series{#3}%
+                           \def\default at shape{#4}}%
+  \fi}
+\plEndIncludeInRelease
+% !!! Special case BEGIN
+% required for any emulation date
+% copied from (u)pldefs.ltx
+\def\pltx at tempa{JY1}\ifx\pltx at tempa\k at encoding
+\DeclareKanjiSubstitution{JY1}{mc}{m}{n}
+\DeclareKanjiSubstitution{JT1}{mc}{m}{n}
+\else\def\pltx at tempa{JY2}\ifx\pltx at tempa\k at encoding
+\DeclareKanjiSubstitution{JY2}{mc}{m}{n}
+\DeclareKanjiSubstitution{JT2}{mc}{m}{n}
+\fi\fi
+% emulate execution of \enc at update in \selectfont
+% before (u)pldefs.ltx is loaded
+\csname D@\f at encoding\endcsname
+% emulate execution of \kenc at update in \selectfont
+% inside (u)pldefs.ltx
+\csname D@\k at encoding\endcsname
+% !!! Special case END
 \plIncludeInRelease{2019/10/01}{\DeclareErrorKanjiFont}
                    {No side effects please}%
 \def\DeclareErrorKanjiFont#1#2#3#4#5{%
@@ -363,6 +478,210 @@
    \gdef\f at size{#5}%
    \gdef\f at baselineskip{#5pt}}
 \plEndIncludeInRelease
+\plIncludeInRelease{2020/04/12}{\wrong at fontshape}
+                   {Japanese \wrong at fontshape}%
+\def\wrong at al@fontshape{%
+    \csname D@\f at encoding\endcsname   % install defaults if in math
+    \edef\reserved at a{\csname\curr at fontshape\endcsname}%
+  \ifx\last at fontshape\reserved at a
+     \errmessage{Corrupted NFSS tables}%
+     \error at fontshape
+  \else
+    \let\f at shape\default at shape
+    \expandafter\ifx\csname\curr at fontshape\endcsname\relax
+       \let\f at series\default at series
+        \expandafter
+          \ifx\csname\curr at fontshape\endcsname\relax
+           \let\f at family\default at family
+           \begingroup
+              \try at load@fontshape
+           \endgroup
+        \fi \fi
+  \fi
+     \@font at warning{Font shape `\expandafter\string\reserved at a'
+                     \expandafter\@gobble\string\@undefined\MessageBreak
+                   using `\curr at fontshape' instead\@wrong at font@char}%
+    \global\let\last at fontshape\reserved at a
+    \gdef\@defaultsubs{%
+      \@font at warning{Some font shapes were not available, defaults
+                      substituted.\@gobbletwo}}%
+    \global\expandafter\expandafter\expandafter\let
+       \expandafter\reserved at a
+           \csname\curr at fontshape\endcsname
+    \xdef\font at name{%
+      \csname\curr at fontshape/\f at size\endcsname}%
+    \pickup at font}
+\def\wrong at ja@fontshape{%
+    \csname D@\f at encoding\endcsname   % install defaults if in math
+    \edef\reserved at a{\csname\curr at fontshape\endcsname}%
+  \ifx\last at fontshape\reserved at a
+     \errmessage{Corrupted NFSS tables}%
+     \error at fontshape
+  \else
+    \let\f at shape\default at k@shape % !!!
+    \expandafter\ifx\csname\curr at fontshape\endcsname\relax
+       \let\f at series\default at k@series % !!!
+        \expandafter
+          \ifx\csname\curr at fontshape\endcsname\relax
+           \let\f at family\default at k@family % !!!
+           \begingroup
+              \try at load@fontshape
+           \endgroup
+        \fi \fi
+  \fi
+     \@font at warning{Font shape `\expandafter\string\reserved at a'
+                     \expandafter\@gobble\string\@undefined\MessageBreak
+                   using `\curr at fontshape' instead\@wrong at font@char}%
+    \global\let\last at fontshape\reserved at a
+    \gdef\@defaultsubs{%
+      \@font at warning{Some font shapes were not available, defaults
+                      substituted.\@gobbletwo}}%
+    \global\expandafter\expandafter\expandafter\let
+       \expandafter\reserved at a
+           \csname\curr at fontshape\endcsname
+    \xdef\font at name{%
+      \csname\curr at fontshape/\f at size\endcsname}%
+    \pickup at font}
+\def\wrong at fontshape{%
+  \edef\tmp at item{{\f at encoding}}%
+  \expandafter\expandafter\expandafter
+  \inlist@\expandafter\tmp at item\expandafter{\kenc at list}%
+  \ifin@
+    \wrong at ja@fontshape
+  \else
+    \wrong at al@fontshape
+  \fi
+}
+\plEndIncludeInRelease
+\plIncludeInRelease{2015/01/01}{\wrong at fontshape}
+                   {LaTeX2e original (2015)}%
+\def\wrong at fontshape{%
+    \csname D@\f at encoding\endcsname   % install defaults if in math
+    \edef\reserved at a{\csname\curr at fontshape\endcsname}%
+  \ifx\last at fontshape\reserved at a
+     \errmessage{Corrupted NFSS tables}%
+     \error at fontshape
+  \else
+    \let\f at shape\default at shape
+    \expandafter\ifx\csname\curr at fontshape\endcsname\relax
+       \let\f at series\default at series
+        \expandafter
+          \ifx\csname\curr at fontshape\endcsname\relax
+           \let\f at family\default at family
+           \begingroup
+              \try at load@fontshape
+           \endgroup
+        \fi \fi
+  \fi
+     \@font at warning{Font shape `\expandafter\string\reserved at a'
+                     \expandafter\@gobble\string\@undefined\MessageBreak
+                   using `\curr at fontshape' instead\@wrong at font@char}%
+    \global\let\last at fontshape\reserved at a
+    \gdef\@defaultsubs{%
+      \@font at warning{Some font shapes were not available, defaults
+                      substituted.\@gobbletwo}}%
+    \global\expandafter\expandafter\expandafter\let
+       \expandafter\reserved at a
+           \csname\curr at fontshape\endcsname
+    \xdef\font at name{%
+      \csname\curr at fontshape/\f at size\endcsname}%
+    \pickup at font}
+\let\wrong at al@fontshape\@undefined
+\let\wrong at ja@fontshape\@undefined
+\plEndIncludeInRelease
+\plIncludeInRelease{0000/00/00}{\wrong at fontshape}
+                   {LaTeX2e original (old)}%
+\def\wrong at fontshape{%
+    \csname D@\f at encoding\endcsname
+    \edef\reserved at a{\csname\curr at fontshape\endcsname}%
+  \ifx\last at fontshape\reserved at a
+     \errmessage{Corrupted NFSS tables}%
+     \error at fontshape
+  \else
+    \let\f at shape\default at shape
+    \expandafter\ifx\csname\curr at fontshape\endcsname\relax
+       \let\f at series\default at series
+        \expandafter
+          \ifx\csname\curr at fontshape\endcsname\relax
+           \let\f at family\default at family
+        \fi \fi
+  \fi
+     \@font at warning{Font shape
+            `\expandafter\string\reserved at a'
+            \expandafter\@gobble\string\@undefined
+            \MessageBreak
+            using `\curr at fontshape' instead\@wrong at font@char}%
+    \global\let\last at fontshape\reserved at a
+    \gdef\@defaultsubs{%
+      \@font at warning{Some font shapes were not available,
+                       defaults substituted.\@gobbletwo}}%
+    \global\expandafter\expandafter\expandafter\let
+       \expandafter\reserved at a
+           \csname\curr at fontshape\endcsname
+    \xdef\font at name{%
+      \csname\curr at fontshape/\f at size\endcsname}%
+    \pickup at font}
+\let\wrong at al@fontshape\@undefined
+\let\wrong at ja@fontshape\@undefined
+\plEndIncludeInRelease
+\plIncludeInRelease{2020/04/12}{\do at subst@correction}
+                   {Japanese font substitution}%
+\def\pltx at do@subst at correction@al{%
+       \xdef\subst at correction{%
+          \font at name
+          \global\expandafter\font
+            \csname \curr at fontshape/\f at size\endcsname
+            \noexpand\fontname\font
+           \relax}%
+       \aftergroup\subst at correction
+}
+\def\pltx at do@subst at correction@yoko{%
+       \xdef\subst at correction{%
+          \font at name
+          \global\expandafter\jfont
+            \csname \curr at fontshape/\f at size\endcsname
+            \noexpand\fontname\jfont
+           \relax}%
+       \aftergroup\subst at correction
+}
+\def\pltx at do@subst at correction@tate{%
+       \xdef\subst at correction{%
+          \font at name
+          \global\expandafter\tfont
+            \csname \curr at fontshape/\f at size\endcsname
+            \noexpand\fontname\tfont
+           \relax}%
+       \aftergroup\subst at correction
+}
+\def\do at subst@correction{%
+  \edef\tmp at item{{\f at encoding}}%
+  \expandafter\expandafter\expandafter
+  \inlist@\expandafter\tmp at item\expandafter{\kyenc at list}%
+  \ifin@\pltx at do@subst at correction@yoko
+  \else
+    \expandafter\expandafter\expandafter
+    \inlist@\expandafter\tmp at item\expandafter{\ktenc at list}%
+    \ifin@\pltx at do@subst at correction@tate\else
+      \pltx at do@subst at correction@al
+    \fi
+  \fi
+}
+\plEndIncludeInRelease
+\plIncludeInRelease{0000/00/00}{\do at subst@correction}
+                   {LaTeX2e original}%
+\def\do at subst@correction{%
+       \xdef\subst at correction{%
+          \font at name
+          \global\expandafter\font
+            \csname \curr at fontshape/\f at size\endcsname
+            \noexpand\fontname\font
+           \relax}%
+       \aftergroup\subst at correction
+}
+\let\pltx at do@subst at correction@al\@undefined
+\let\pltx at do@subst at correction@yoko\@undefined
+\let\pltx at do@subst at correction@tate\@undefined
+\plEndIncludeInRelease
 \plIncludeInRelease{2019/10/01}{\userelfont}
                    {Make robust}%
 \DeclareRobustCommand\userelfont{\@knjcmdtrue}
@@ -372,6 +691,120 @@
 \def\userelfont{\@knjcmdtrue}
 \expandafter \let \csname userelfont \endcsname \@undefined
 \plEndIncludeInRelease
+\plIncludeInRelease{2020/04/12}{\selectfont}
+                   {Check \KanjiEncodingPair}%
+\DeclareRobustCommand\selectfont{%
+  \let\tmp at error@fontshape\error at fontshape
+  \let\error at fontshape\error at kfontshape
+  \edef\tmp at item{{\k at encoding}}%
+  \expandafter\expandafter\expandafter
+  \inlist@\expandafter\tmp at item\expandafter{\kyenc at list}%
+  \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
+    \expandafter\expandafter\expandafter
+    \inlist@\expandafter\tmp at item\expandafter{\ktenc at list}%
+    \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
+  \let\font\tfont
+  \let\k at encoding\ct at encoding
+  \xdef\font at name{\csname\curr at kfontshape/\f at size\endcsname}%
+  \pickup at font
+  \font at name
+  \let\font\jfont
+  \let\k at encoding\cy at encoding
+  \xdef\font at name{\csname\curr at kfontshape/\f at size\endcsname}%
+  \pickup at font
+  \font at name
+  \expandafter\def\expandafter\k at encoding\tmp at item
+  \kenc at update
+  \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
+      \fi
+    \else
+       \csname rel@\k at encoding/\k at family/\k at series/\k at shape\endcsname
+    \fi
+  \fi
+  \let\font\afont
+  \xdef\font at name{\csname\curr at fontshape/\f at size\endcsname}%
+  \pickup at font
+  \font at name
+  \enc at update
+  \ifx\f at linespread\baselinestretch \else
+    \set at fontsize\baselinestretch\f at size\f at baselineskip
+  \fi
+  \size at update}
+\plEndIncludeInRelease
+\plIncludeInRelease{0000/00/00}{\selectfont}
+                   {ASCII Corporation original}%
+\DeclareRobustCommand\selectfont{%
+  \let\tmp at error@fontshape\error at fontshape
+  \let\error at fontshape\error at kfontshape
+  \edef\tmp at item{{\k at encoding}}%
+  \expandafter\expandafter\expandafter
+  \inlist@\expandafter\tmp at item\expandafter{\kyenc at list}%
+  \ifin@
+    \let\cy at encoding\k at encoding
+    \edef\ct at encoding{\csname t at enc@\k at encoding\endcsname}%
+  \else
+    \expandafter\expandafter\expandafter
+    \inlist@\expandafter\tmp at item\expandafter{\ktenc at list}%
+    \ifin@
+      \let\ct at encoding\k at encoding
+      \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
+  \let\font\tfont
+  \let\k at encoding\ct at encoding
+  \xdef\font at name{\csname\curr at kfontshape/\f at size\endcsname}%
+  \pickup at font
+  \font at name
+  \let\font\jfont
+  \let\k at encoding\cy at encoding
+  \xdef\font at name{\csname\curr at kfontshape/\f at size\endcsname}%
+  \pickup at font
+  \font at name
+  \expandafter\def\expandafter\k at encoding\tmp at item
+  \kenc at update
+  \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
+      \fi
+    \else
+       \csname rel@\k at encoding/\k at family/\k at series/\k at shape\endcsname
+    \fi
+  \fi
+  \let\font\afont
+  \xdef\font at name{\csname\curr at fontshape/\f at size\endcsname}%
+  \pickup at font
+  \font at name
+  \enc at update
+  \ifx\f at linespread\baselinestretch \else
+    \set at fontsize\baselinestretch\f at size\f at baselineskip
+  \fi
+  \size at update}
+\plEndIncludeInRelease
 \plIncludeInRelease{2017/04/08}{\set at fontsize}
                    {Construct \ystrutbox}%
 \def\set at fontsize#1#2#3{%
@@ -488,23 +921,39 @@
 \expandafter \let \csname adjustbaseline \endcsname \@undefined
 \plEndIncludeInRelease
 \ifx\fontseriesforce\@undefined      % old
+        \def\pltx at latex@level{0}
 \else                                % 2020-02-02
-  \ifx\@forced at seriestrue\@undefined % patch level 0, 1, 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 has a bug.}
+  \ifx\@forced at seriestrue\@undefined
+    \ifnum\patch at level<1\relax                  % patch level 0
+        \def\pltx at latex@level{1}% use \@reserveda
+    \else                                       % patch level 1, 2
+        \def\pltx at latex@level{2}
+    \fi
+  \else
+    \ifx\series at maybe@drop at one@m\@undefined     % patch level 3, 4
+        \def\pltx at latex@level{3}
+    \else
+      \ifx\series at maybe@drop at one@m at x\@undefined % patch level 5
+        \def\pltx at latex@level{4}
+        % anticipating LaTeX2e 'develop' branch (after 23b7244)
+        % this temporary code will be removed in the future
+        %\let\series at maybe@drop at one@m at x\series at maybe@drop at one@m
+        %\def\series at maybe@drop at one@m#1{%
+        %  \expandafter\series at maybe@drop at one@m at x\expandafter{#1}}
+      \else
+        \def\pltx at latex@level{5}
+      \fi
+    \fi
   \fi
-  % actually we'd like to check the below too,
-  % but commented out for TL19 frozen since
-  % platex-dev format generation fails
-  %\ifx\series at maybe@drop at one@m\@undefined % patch level 0--4
-  %  \@latex at error
-  %    {Please update LaTeX2e!^^J\space\space
-  %     At least LaTeX2e 2020-02-02 patch level 5 is required}
-  %    {LaTeX2e 2020-02-02 patch level 2 and 4 has a bug.}
-  %\fi
 \fi
+\edef\pltx at reset@catcode at trick{\catcode`\noexpand\~=\the\catcode`\~\relax}
+\def\pltx at temp@catcode at ix{\catcode`\~=9\relax}
+\def\pltx at temp@catcode at xiv{\catcode`\~=14\relax}
+\ifnum\pltx at latex@level<3\relax
+  \pltx at temp@catcode at xiv % hide if-tokens
+\else
+  \pltx at temp@catcode at ix  % reveal if-tokens
+\fi
 \ifx\fontseriesforce\@undefined  % old
 \DeclareRobustCommand\romanseries[1]{\edef\f at series{#1}}
 \DeclareRobustCommand\kanjiseries[1]{\edef\k at series{#1}}
@@ -555,18 +1004,32 @@
     \fi
   \fi
 }
-\ifx\series at maybe@drop at one@m\@undefined % patch level 0--4
 \def\set at target@series at kanji#1{%
     \edef\k at series{#1}%
-    \edef\k at series{\expandafter\series at drop@one at m\k at series mm\series at drop@one at m}%
+    \series at maybe@drop at one@m\k at series\k at series
 }
-\else                                   % patch level 5
-\def\set at target@series at kanji#1{%
-    \edef\k at series{#1}%
-    \expandafter\series at maybe@drop at one@m\expandafter{\k at series}\k at series
+\fi
+\newif\if at shape@roman at kanji
+\plIncludeInRelease{2020/04/12}{\fontshape}
+                   {No \k at shape update if unavailable}%
+\ifx\fontshapeforce\@undefined   % old
+\DeclareRobustCommand\romanshape[1]{\edef\f at shape{#1}}
+\DeclareRobustCommand\kanjishape[1]{\edef\k at shape{#1}}
+\DeclareRobustCommand\fontshape[1]{%
+  \set at safe@kanji at shape{#1}{}%
+  \edef\f at shape{#1}%
 }
+\else                            % 2020-02-02
+\DeclareRobustCommand\romanshape[1]{\merge at font@shape{#1}}
+\DeclareRobustCommand\kanjishape[1]{\merge at kanji@shape{#1}}
+\DeclareRobustCommand\fontshape[1]{%
+  \@shape at roman@kanjitrue
+  \kanjishape{#1}\romanshape{#1}%
+  \@shape at roman@kanjifalse}
 \fi
-\fi
+\plEndIncludeInRelease
+\plIncludeInRelease{0000/00/00}{\fontshape}
+                   {ASCII Corporation / TeXJP original}%
 \ifx\fontshapeforce\@undefined   % old
 \DeclareRobustCommand\romanshape[1]{\edef\f at shape{#1}}
 \DeclareRobustCommand\kanjishape[1]{\edef\k at shape{#1}}
@@ -576,6 +1039,9 @@
 \DeclareRobustCommand\kanjishape[1]{\merge at kanji@shape{#1}}
 \DeclareRobustCommand\fontshape[1]{\kanjishape{#1}\romanshape{#1}}
 \fi
+\plEndIncludeInRelease
+\plIncludeInRelease{2020/04/12}{\fontshapeforce}
+                   {No \k at shape update if unavailable}%
 \ifx\fontshapeforce\@undefined   % old
 \let\romanshapeforce\@undefined
 \let\kanjishapeforce\@undefined
@@ -582,8 +1048,25 @@
 \else                            % 2020-02-02
 \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}{}%
+  \edef\f at shape{#1}%
+}
+\fi
+\plEndIncludeInRelease
+\plIncludeInRelease{0000/00/00}{\fontshapeforce}
+                   {ASCII Corporation / TeXJP original}%
+\ifx\fontshapeforce\@undefined   % old
+\let\romanshapeforce\@undefined
+\let\kanjishapeforce\@undefined
+\else                            % 2020-02-02
+\DeclareRobustCommand\romanshapeforce[1]{\edef\f at shape{#1}}
+\DeclareRobustCommand\kanjishapeforce[1]{\edef\k at shape{#1}}
 \DeclareRobustCommand\fontshapeforce[1]{\kanjishapeforce{#1}\romanshapeforce{#1}}
 \fi
+\plEndIncludeInRelease
+\plIncludeInRelease{2020/04/12}{\merge at kanji@shape@}
+                   {No \k at shape update if unavailable}%
 \ifx\fontseriesforce\@undefined  % old
 \let\merge at kanji@shape\@undefined
 \let\merge at kanji@shape@\@undefined
@@ -598,7 +1081,11 @@
 \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
@@ -610,13 +1097,76 @@
          \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
 }
 \fi
+\plEndIncludeInRelease
+\plIncludeInRelease{0000/00/00}{\merge at kanji@shape@}
+                   {ASCII Corporation / TeXJP original}%
+\ifx\fontseriesforce\@undefined  % old
+\let\merge at kanji@shape\@undefined
+\let\merge at kanji@shape@\@undefined
+\else                            % 2020-02-02
+\def\merge at kanji@shape#1{%
+  \expandafter\expandafter\expandafter
+  \merge at kanji@shape@
+    \csname shape@\k at shape @#1\endcsname
+    {#1}%
+    \@nil
+}
+\def\merge at kanji@shape@#1#2#3\@nil{%
+  \def\reserved at a{#3}%
+  \ifx\reserved at a\@empty
+    \edef\k at shape{#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 /\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
+         \edef\k at shape{#3}%
+         {\let\curr at fontshape\curr at kfontshape\@font at shape@subst at warning}%
+       \fi
+    \fi
+  \fi
+}
+\fi
+\plEndIncludeInRelease
+\plIncludeInRelease{2020/04/12}{\set at safe@kanji at shape}
+                   {No \k at shape update if unavailable}%
+\def\set at safe@kanji at shape#1#2{%
+  \edef\reserved at b{\k at encoding /\k at family /\k at series/#1}%
+   \ifcsname \reserved at b\endcsname
+     \edef\k at shape{#1}%
+     #2%
+  \else
+    \@kanji at shape@nochange at info{\reserved at b}%
+  \fi
+}
+\def\@kanji at shape@nochange at info#1{%
+    \@font at info{Kanji font shape `#1' undefined\MessageBreak
+                No change}%
+}
+\plEndIncludeInRelease
+\plIncludeInRelease{0000/00/00}{\set at safe@kanji at shape}
+                   {ASCII Corporation original}%
+\let\set at safe@kanji at shape\@undefined
+\let\@kanji at shape@nochange at info\@undefined
+\plEndIncludeInRelease
 \plIncludeInRelease{2020/02/02}{\usefont}
                    {Don't call \fontseries or \fontshape}%
 \DeclareRobustCommand\usekanji[4]{\kanjiencoding{#1}%
@@ -672,6 +1222,37 @@
 \expandafter \let \csname useroman \endcsname \@undefined
 \expandafter \let \csname usefont \endcsname \@undefined
 \plEndIncludeInRelease
+\plIncludeInRelease{2020/04/12}{\normalfont}
+                   {Use \@defaultfamilyhook}%
+\ifx\@defaultfamilyhook\@undefined  % old
+\DeclareRobustCommand\normalfont{%
+    \kanjiencoding{\kanjiencodingdefault}%
+    \edef\k at family{\kanjifamilydefault}%
+    \edef\k at series{\kanjiseriesdefault}%
+    \edef\k at shape{\kanjishapedefault}%
+    \romanencoding{\encodingdefault}%
+    \edef\f at family{\familydefault}%
+    \edef\f at series{\seriesdefault}%
+    \edef\f at shape{\shapedefault}%
+    \selectfont}
+\else                               % 2020-02-02 PL2
+\DeclareRobustCommand\normalfont{%
+   \fontencoding\encodingdefault
+   \edef\f at family{\familydefault}%
+   \edef\f at series{\seriesdefault}%
+   \edef\f at shape{\shapedefault}%
+   \@defaultfamilyhook
+   \selectfont}
+\g at addto@macro\@defaultfamilyhook{%
+    \kanjiencoding{\kanjiencodingdefault}%
+    \edef\k at family{\kanjifamilydefault}%
+    \edef\k at series{\kanjiseriesdefault}%
+    \edef\k at shape{\kanjishapedefault}%
+}
+\fi
+\adjustbaseline
+\let\reset at font\normalfont
+\plEndIncludeInRelease
 \plIncludeInRelease{2020/02/02}{\normalfont}
                    {Don't call \fontseries or \fontshape}%
 \DeclareRobustCommand\normalfont{%
@@ -720,32 +1301,44 @@
   \edef\kanjidef at ult{\kanjifamilydefault}%
 }
 \fi
-\ifx\bfseries at rm\@undefined\else  % 2020-02-02
-\DeclareRobustCommand\bfseries{%
-  \not at math@alphabet\bfseries\mathbf
-  \expand at font@defaults
-  % changed \fontseries -> \romanseries
-    \ifx\f at family\rmdef at ult      \romanseries\bfseries at rm
-    \else\ifx\f at family\sfdef at ult \romanseries\bfseries at sf
-    \else\ifx\f at family\ttdef at ult \romanseries\bfseries at tt
-    \else                        \romanseries\bfdefault
-    \fi\fi\fi
+\ifx\bfseries at rm\@undefined  % old
+\let\pltx at fontseries@saved\@undefined
+\let\pltx at patch@bfseries\@undefined
+\let\pltx at patch@mdseries\@undefined
+\else                        % 2020-02-02
+\let\pltx at fontseries@saved\fontseries
+\def\pltx at patch@bfseries\not at math@alphabet#1#2#3\selectfont{%
+ \long\expandafter\def\csname bfseries \endcsname{%
+  \not at math@alphabet#1#2% should be \bfseries\mathbf
+  % \fontseries of pLaTeX tries to change both Latin and Japanese;
+  % here we want only Latin, so use \romanseries
+  \let\fontseries\romanseries
+  #3% contains \fontseries and \@setbfseriesdefaultshook
+  \let\fontseries\pltx at fontseries@saved % recover
   % changed \fontseries -> \kanjiseries
     \ifx\k at family\mcdef at ult      \kanjiseries\bfseries at mc
     \else\ifx\k at family\gtdef at ult \kanjiseries\bfseries at gt
     \else                        \kanjiseries\bfdefault
     \fi\fi
- \selectfont
+  \selectfont
+ }%
 }
-\DeclareRobustCommand\mdseries{%
-  \not at math@alphabet\mdseries\relax
-  \expand at font@defaults
-  % changed \fontseries -> \romanseries
-    \ifx\f at family\rmdef at ult      \romanseries\mdseries at rm
-    \else\ifx\f at family\sfdef at ult \romanseries\mdseries at sf
-    \else\ifx\f at family\ttdef at ult \romanseries\mdseries at tt
-    \else                        \romanseries\mddefault
-    \fi\fi\fi
+\ifx\@setbfseriesdefaultshook\@undefined\else
+\g at addto@macro\@setbfseriesdefaultshook{%
+    \let\bfseries at mc\bfdef at ult
+    \let\bfseries at gt\bfdef at ult
+}
+\fi
+\expandafter\expandafter\expandafter
+  \pltx at patch@bfseries\csname bfseries \endcsname
+\def\pltx at patch@mdseries\not at math@alphabet#1#2#3\selectfont{%
+ \long\expandafter\def\csname mdseries \endcsname{%
+  \not at math@alphabet#1#2% should be \mdseries\relax
+  % \fontseries of pLaTeX tries to change both Latin and Japanese;
+  % here we want only Latin, so use \romanseries
+  \let\fontseries\romanseries
+  #3% contains \fontseries and \@setmdseriesdefaultshook
+  \let\fontseries\pltx at fontseries@saved % recover
   % changed \fontseries -> \kanjiseries
     \ifx\k at family\mcdef at ult      \kanjiseries\mdseries at mc
     \else\ifx\k at family\gtdef at ult \kanjiseries\mdseries at gt
@@ -752,8 +1345,17 @@
     \else                        \kanjiseries\mddefault
     \fi\fi
   \selectfont
+ }%
 }
+\ifx\@setmdseriesdefaultshook\@undefined\else
+\g at addto@macro\@setmdseriesdefaultshook{%
+    \let\mdseries at mc\mddef at ult
+    \let\mdseries at gt\mddef at ult
+}
 \fi
+\expandafter\expandafter\expandafter
+  \pltx at patch@mdseries\csname mdseries \endcsname
+\fi
 \ifx\prepare at family@series at update\@undefined  % old
 \let\prepare at family@series at update@kanji\@undefined
 \let\@meta at family@list at kanji\@undefined
@@ -760,9 +1362,9 @@
 \let\update at series@target at value@kanji\@undefined
 \else                                         % 2020-02-02
 \def\prepare at family@series at update#1#2{%
- \if at forced@series
-   \romanfamily#2%   % changed \fontfamily -> \romanfamily
- \else
+~\if at forced@series
+~  \romanfamily#2%   % changed \fontfamily -> \romanfamily
+~\else
    \expand at font@defaults
    \let\target at series@value\@empty
    \def\target at meta@family at value{#1}%
@@ -777,15 +1379,15 @@
      \ifx \f at series\target at series@value
      \else
        \maybe at load@fontshape
-       \let\f at series\target at series@value
+       \series at maybe@drop at one@m\target at series@value\f at series
      \fi
    \fi
- \fi
+~\fi
 }
 \def\prepare at family@series at update@kanji#1#2{%
- \if at forced@series
-   \kanjifamily#2%
- \else
+~\if at forced@series
+~  \kanjifamily#2%
+~\else
    \expand at font@defaults
    \let\target at series@value\@empty
    \def\target at meta@family at value{#1}%
@@ -801,10 +1403,10 @@
      \else
        \begingroup\let\f at encoding\k at encoding\let\f at family\k at family
          \maybe at load@fontshape\endgroup
-       \let\k at series\target at series@value
+       \series at maybe@drop at one@m\target at series@value\k at series
      \fi
    \fi
- \fi
+~\fi
 }
 \def\@meta at family@list at kanji{\@elt{mc}\@elt{gt}}
 \def\update at series@target at value@kanji#1{%
@@ -817,9 +1419,14 @@
                       \csname mdseries@\target at meta@family at value\endcsname
       \expandafter\let\expandafter\reserved at c
                       \csname bfseries@\target at meta@family at value\endcsname
-      \expandafter\ifx\csname mdseries@#1\endcsname\k at series
+      \expandafter\series at maybe@drop at one@m
+          \csname mdseries@#1\endcsname\reserved at d
+      \ifx\reserved at d\k at series
                                       \let\target at series@value\reserved at b
-      \else\expandafter\ifx\csname bfseries@#1\endcsname\k at series
+      \else
+        \expandafter\series at maybe@drop at one@m
+           \csname bfseries@#1\endcsname\reserved at d
+        \ifx\reserved at d\k at series
                                       \let\target at series@value\reserved at c
       \else\ifx\k at series\mddef at ult    \let\target at series@value\reserved at b
       \else\ifx\k at series\bfdef at ult    \let\target at series@value\reserved at c
@@ -850,6 +1457,144 @@
     {\not at math@alphabet\gtfamily\mathgt
      \prepare at family@series at update@kanji{gt}\gtdefault\selectfont}
 \fi
+%%
+\ifnum\pltx at latex@level>0\relax       % 2020-02-02
+\ifnum\pltx at latex@level<3\relax       % 2020-02-02 patch level 0--2 (no flags)
+\DeclareRobustCommand\romanseries[1]{\merge at font@series{#1}}
+\DeclareRobustCommand\kanjiseries[1]{\merge at kanji@series{#1}}
+\DeclareRobustCommand\fontseries[1]{\kanjiseries{#1}\romanseries{#1}}
+\DeclareRobustCommand\romanseriesforce[1]{\edef\f at series{#1}}
+\DeclareRobustCommand\kanjiseriesforce[1]{\edef\k at series{#1}}
+\DeclareRobustCommand\fontseriesforce[1]{\kanjiseriesforce{#1}\romanseriesforce{#1}}
+\fi
+\ifnum\pltx at latex@level=1\relax       % 2020-02-02 patch level 0 (\@reserveda)
+\def\merge at kanji@series@#1#2#3\@nil{%
+  \def\@reserveda{#3}%
+  \ifx\@reserveda\@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\@reserveda{\k at encoding /\k at family /#1/\k at shape}%
+     \ifcsname \@reserveda \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@shape@#1#2#3\@nil{%
+  \def\@reserveda{#3}%
+  \ifx\@reserveda\@empty
+    \edef\k at shape{#2}%
+  \else
+    \begingroup\let\f at encoding\k at encoding\let\f at family\k at family
+      \maybe at load@fontshape\endgroup
+    \edef\@reserveda{\k at encoding /\k at family /\k at series/#1}%
+     \ifcsname \@reserveda\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
+         \edef\k at shape{#3}%
+         {\let\curr at fontshape\curr at kfontshape\@font at shape@subst at warning}%
+       \fi
+    \fi
+  \fi
+}
+\fi
+\ifnum\pltx at latex@level<4\relax       % 2020-02-02 patch level 0--4 (drop m)
+\def\set at target@series at kanji#1{%
+    \edef\k at series{#1}%
+    \edef\k at series{\expandafter\series at drop@one at m\k at series mm\series at drop@one at m}%
+}
+\else\ifnum\pltx at latex@level=4\relax  % 2020-02-02 patch level 5 (old syntax)
+\def\set at target@series at kanji#1{%
+    \edef\k at series{#1}%
+    \expandafter\series at maybe@drop at one@m\expandafter{\k at series}\k at series
+}
+\fi\fi
+\ifnum\pltx at latex@level<5\relax       % 2020-02-02 patch level 0--5
+\def\prepare at family@series at update#1#2{%
+~\if at forced@series
+~  \romanfamily#2%   % changed \fontfamily -> \romanfamily
+~\else
+   \expand at font@defaults
+   \let\target at series@value\@empty
+   \def\target at meta@family at value{#1}%
+~  \expandafter\edef\csname ??def at ult\endcsname{\f at family}%
+   \let\@elt\update at series@target at value
+      \@meta at family@list
+~     \@elt{??}%
+   \let\@elt\relax
+   \romanfamily#2%   % changed \fontfamily -> \romanfamily
+   \ifx\target at series@value\@empty
+   \else
+     \ifx \f at series\target at series@value
+     \else
+       \maybe at load@fontshape
+       \let\f at series\target at series@value
+     \fi
+   \fi
+~\fi
+}
+\def\prepare at family@series at update@kanji#1#2{%
+~\if at forced@series
+~  \kanjifamily#2%
+~\else
+   \expand at font@defaults
+   \let\target at series@value\@empty
+   \def\target at meta@family at value{#1}%
+~  \expandafter\edef\csname ??def at ult\endcsname{\k at family}%
+   \let\@elt\update at series@target at value@kanji
+      \@meta at family@list at kanji
+~     \@elt{??}%
+   \let\@elt\relax
+   \kanjifamily#2%
+   \ifx\target at series@value\@empty
+   \else
+     \ifx \k at series\target at series@value
+     \else
+       \begingroup\let\f at encoding\k at encoding\let\f at family\k at family
+         \maybe at load@fontshape\endgroup
+       \let\k at series\target at series@value
+     \fi
+   \fi
+~\fi
+}
+\def\@meta at family@list at kanji{\@elt{mc}\@elt{gt}}
+\def\update at series@target at value@kanji#1{%
+  \def\reserved at a{#1}%
+  \ifx\target at meta@family at value\reserved at a   % rm -> rm do nothing
+  \else
+    \expandafter\ifx\csname#1def at ult\endcsname\k at family
+      \let\@elt\@gobble
+      \expandafter\let\expandafter\reserved at b
+                      \csname mdseries@\target at meta@family at value\endcsname
+      \expandafter\let\expandafter\reserved at c
+                      \csname bfseries@\target at meta@family at value\endcsname
+      \expandafter\ifx\csname mdseries@#1\endcsname\k at series
+                                      \let\target at series@value\reserved at b
+      \else\expandafter\ifx\csname bfseries@#1\endcsname\k at series
+                                      \let\target at series@value\reserved at c
+      \else\ifx\k at series\mddef at ult    \let\target at series@value\reserved at b
+      \else\ifx\k at series\bfdef at ult    \let\target at series@value\reserved at c
+      \fi\fi\fi\fi
+    \fi
+  \fi
+}
+\fi
+\fi
+%%
+\pltx at reset@catcode at trick
 \plIncludeInRelease{2020/02/02}{\DeclareEmphSequence}
                                {Nested emph}%
 \ifx\DeclareEmphSequence\@undefined % old
@@ -2097,6 +2842,22 @@
     \@ifstar\@sverb\@verb}
 \fi
 \plEndIncludeInRelease
+\plIncludeInRelease{2020/04/12}{\do at noligs}
+                   {Allow \xkanjiskip while avoiding ligature}%
+\def\do at noligs#1{%
+  \catcode`#1\active
+  \begingroup
+     \lccode`\~`#1\relax
+     \lowercase{\endgroup\def~{\leavevmode\vadjust{}\char`#1}}}
+\plEndIncludeInRelease
+\plIncludeInRelease{0000/00/00}{\do at noligs}
+                   {LaTeX2e original}%
+\def\do at noligs#1{%
+  \catcode`#1\active
+  \begingroup
+     \lccode`\~`#1\relax
+     \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1}}}
+\plEndIncludeInRelease
 \plIncludeInRelease{2017/10/28}{\@startline}
                    {Inhibit JFM glue at the beginning}%
 \gdef\@startline{%

Modified: trunk/Master/texmf-dist/tex/platex/base/plcore.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/platex/base/plcore.ltx	2020-04-12 21:27:51 UTC (rev 54696)
+++ trunk/Master/texmf-dist/tex/platex/base/plcore.ltx	2020-04-12 21:29:19 UTC (rev 54697)
@@ -33,19 +33,12 @@
 \fi
 \def\pfmtname{pLaTeX2e}
 \def\pfmtversion
-   {2020-02-02}
-\def\ppatch at level{3}
+   {2020-04-12}
+\def\ppatch at level{0}
 \edef\platexBANNER{\noexpand\platexNILa
                    \the\everyjob % LaTeX banner and delayed codes
                    \noexpand\platexNILb}
 \begingroup
-  \def\platexNILa#1\typeout#2#3\platexNILb{#1}
-  \toks0=\expandafter\expandafter\expandafter{\platexBANNER}
-  \global\everyjob\expandafter{\the\toks0}%
-\endgroup
-\begingroup
-  \def\platexNILa#1\typeout#2#3\platexNILb{#2}
-  \toks0=\expandafter\expandafter\expandafter{\platexBANNER}
   \ifnum\ppatch at level=0
     \toks2={\pfmtname\space<\pfmtversion>\space}%
   \else\ifnum\ppatch at level>0
@@ -53,16 +46,10 @@
   \else
     \toks2={\pfmtname\space<\pfmtversion>-pre\ppatch at level\space}%
   \fi\fi
-  \edef\platexBANNER{\the\everyjob
-    \noexpand\typeout{\the\toks2 (based on \the\toks0)}}
-  \global\everyjob\expandafter{\platexBANNER}%
+  \edef\platexNILa#1\typeout#2#3\platexNILb{%
+    #1\noexpand\typeout{\the\toks2 (based on #2)}#3}
+  \global\everyjob\expandafter\expandafter\expandafter{\platexBANNER}%
 \endgroup
-\begingroup
-  \def\platexNILa#1\typeout#2#3\platexNILb{#3}
-  \toks0=\expandafter\expandafter\expandafter{\platexBANNER}
-  \edef\platexBANNER{\the\everyjob \the\toks0}
-  \global\everyjob\expandafter{\platexBANNER}%
-\endgroup
 \let\platexBANNER=\@undefined
 \newif\if at plincludeinrelease
 \@plincludeinreleasefalse
@@ -134,9 +121,15 @@
 \newdimen\cHT
 \let\afont\font
 \def\inlist@#1#2{%
-  \def\in@@##1<#1>##2##3\in@@{%
-    \ifx\in@##2\in at false\else\in at true\fi}%
-  \in@@#2<#1>\in@\in@@}
+  \edef\reserved at a{%
+    \unexpanded{\def\in@@##1<}%
+    \detokenize{#1}%
+    \unexpanded{>##2##3\in@@{\ifx\in@##2\in at false\else\in at true\fi}\in@@}%
+    \detokenize{#2}%
+    \unexpanded{<}%
+    \detokenize{#1}%
+    \unexpanded{>\in@\in@@}}%
+  \reserved at a}
 \def\fam at elt{\noexpand\fam at elt}
 \def\enc at elt{\noexpand\enc at elt}
 \def\fenc at list{\enc at elt<OML>\enc at elt<T1>\enc at elt<OT1>\enc at elt<OMS>%
@@ -292,6 +285,15 @@
 \let\default at KM\@empty
 \@onlypreamble\DeclareKanjiEncodingDefaults
 \def\KanjiEncodingPair#1#2{\@namedef{t at enc@#1}{#2}\@namedef{y at enc@#2}{#1}}
+\def\ensure at KanjiEncodingPair#1{%
+  \edef\reserved at a{\csname #1 at enc@\k at encoding\endcsname}%
+  \edef\reserved at b{\csname c#1 at encoding\endcsname}%
+  \ifcat\relax\reserved at a
+    \@latex at error
+      {KANJI Encoding pair for `\k at encoding' undefined}%
+      {Use \string\KanjiEncodingPair, falling back to `\reserved at b'...}%
+    \expandafter\edef\reserved at a{\reserved at b}%
+  \fi}
 \def\DeclareFontFamily#1#2#3{%
  \@ifundefined{T@#1}%
     {\@latex at error{Encoding scheme `#1' unknown}\@eha}%
@@ -347,9 +349,9 @@
        \cdp at list
        \xdef\cdp at list{\the\toks@}%
     \endgroup
-    \global\@namedef{D@#1}{\def\default at family{#2}%
-                           \def\default at series{#3}%
-                           \def\default at shape{#4}}%
+    \global\@namedef{D@#1}{\def\default at k@family{#2}% !!!
+                           \def\default at k@series{#3}% !!!
+                           \def\default at k@shape{#4}}% !!!
   \fi}
 \@onlypreamble\DeclareKanjiSubstitution
 \def\DeclareErrorKanjiFont#1#2#3#4#5{%
@@ -362,6 +364,78 @@
    \gdef\default at k@shape{#4}%
    }
 \@onlypreamble\DeclareErrorKanjiFont
+\def\wrong at al@fontshape{%
+    \csname D@\f at encoding\endcsname   % install defaults if in math
+    \edef\reserved at a{\csname\curr at fontshape\endcsname}%
+  \ifx\last at fontshape\reserved at a
+     \errmessage{Corrupted NFSS tables}%
+     \error at fontshape
+  \else
+    \let\f at shape\default at shape
+    \expandafter\ifx\csname\curr at fontshape\endcsname\relax
+       \let\f at series\default at series
+        \expandafter
+          \ifx\csname\curr at fontshape\endcsname\relax
+           \let\f at family\default at family
+           \begingroup
+              \try at load@fontshape
+           \endgroup
+        \fi \fi
+  \fi
+     \@font at warning{Font shape `\expandafter\string\reserved at a'
+                     \expandafter\@gobble\string\@undefined\MessageBreak
+                   using `\curr at fontshape' instead\@wrong at font@char}%
+    \global\let\last at fontshape\reserved at a
+    \gdef\@defaultsubs{%
+      \@font at warning{Some font shapes were not available, defaults
+                      substituted.\@gobbletwo}}%
+    \global\expandafter\expandafter\expandafter\let
+       \expandafter\reserved at a
+           \csname\curr at fontshape\endcsname
+    \xdef\font at name{%
+      \csname\curr at fontshape/\f at size\endcsname}%
+    \pickup at font}
+\def\wrong at ja@fontshape{%
+    \csname D@\f at encoding\endcsname   % install defaults if in math
+    \edef\reserved at a{\csname\curr at fontshape\endcsname}%
+  \ifx\last at fontshape\reserved at a
+     \errmessage{Corrupted NFSS tables}%
+     \error at fontshape
+  \else
+    \let\f at shape\default at k@shape % !!!
+    \expandafter\ifx\csname\curr at fontshape\endcsname\relax
+       \let\f at series\default at k@series % !!!
+        \expandafter
+          \ifx\csname\curr at fontshape\endcsname\relax
+           \let\f at family\default at k@family % !!!
+           \begingroup
+              \try at load@fontshape
+           \endgroup
+        \fi \fi
+  \fi
+     \@font at warning{Font shape `\expandafter\string\reserved at a'
+                     \expandafter\@gobble\string\@undefined\MessageBreak
+                   using `\curr at fontshape' instead\@wrong at font@char}%
+    \global\let\last at fontshape\reserved at a
+    \gdef\@defaultsubs{%
+      \@font at warning{Some font shapes were not available, defaults
+                      substituted.\@gobbletwo}}%
+    \global\expandafter\expandafter\expandafter\let
+       \expandafter\reserved at a
+           \csname\curr at fontshape\endcsname
+    \xdef\font at name{%
+      \csname\curr at fontshape/\f at size\endcsname}%
+    \pickup at font}
+\def\wrong at fontshape{%
+  \edef\tmp at item{{\f at encoding}}%
+  \expandafter\expandafter\expandafter
+  \inlist@\expandafter\tmp at item\expandafter{\kenc at list}%
+  \ifin@
+    \wrong at ja@fontshape
+  \else
+    \wrong at al@fontshape
+  \fi
+}
 \def\DeclareFixedFont#1#2#3#4#5#6{%
    \begingroup
       \let\afont\font
@@ -389,6 +463,46 @@
       \let\font\afont
    \endgroup
   }
+\def\pltx at do@subst at correction@al{%
+       \xdef\subst at correction{%
+          \font at name
+          \global\expandafter\font
+            \csname \curr at fontshape/\f at size\endcsname
+            \noexpand\fontname\font
+           \relax}%
+       \aftergroup\subst at correction
+}
+\def\pltx at do@subst at correction@yoko{%
+       \xdef\subst at correction{%
+          \font at name
+          \global\expandafter\jfont
+            \csname \curr at fontshape/\f at size\endcsname
+            \noexpand\fontname\jfont
+           \relax}%
+       \aftergroup\subst at correction
+}
+\def\pltx at do@subst at correction@tate{%
+       \xdef\subst at correction{%
+          \font at name
+          \global\expandafter\tfont
+            \csname \curr at fontshape/\f at size\endcsname
+            \noexpand\fontname\tfont
+           \relax}%
+       \aftergroup\subst at correction
+}
+\def\do at subst@correction{%
+  \edef\tmp at item{{\f at encoding}}%
+  \expandafter\expandafter\expandafter
+  \inlist@\expandafter\tmp at item\expandafter{\kyenc at list}%
+  \ifin@\pltx at do@subst at correction@yoko
+  \else
+    \expandafter\expandafter\expandafter
+    \inlist@\expandafter\tmp at item\expandafter{\ktenc at list}%
+    \ifin@\pltx at do@subst at correction@tate\else
+      \pltx at do@subst at correction@al
+    \fi
+  \fi
+}
 \def\reDeclareMathAlphabet#1#2#3{%
   \edef#1{\noexpand\protect\expandafter\noexpand\csname%
     \expandafter\@gobble\string#1\space\space\endcsname}%
@@ -466,6 +580,7 @@
   \inlist@\expandafter\tmp at item\expandafter{\kyenc at list}%
   \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
     \expandafter\expandafter\expandafter
@@ -472,6 +587,7 @@
     \inlist@\expandafter\tmp at item\expandafter{\ktenc at list}%
     \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
@@ -677,24 +793,39 @@
       \edef\k at family{#1}\edef\f at family{#1}%
   \fi\fi}
 \ifx\fontseriesforce\@undefined      % old
+        \def\pltx at latex@level{0}
 \else                                % 2020-02-02
-  \ifx\@forced at seriestrue\@undefined % patch level 0, 1, 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 has a bug.}
-    \@@end
+  \ifx\@forced at seriestrue\@undefined
+    \ifnum\patch at level<1\relax                  % patch level 0
+        \def\pltx at latex@level{1}% use \@reserveda
+    \else                                       % patch level 1, 2
+        \def\pltx at latex@level{2}
+    \fi
+  \else
+    \ifx\series at maybe@drop at one@m\@undefined     % patch level 3, 4
+        \def\pltx at latex@level{3}
+    \else
+      \ifx\series at maybe@drop at one@m at x\@undefined % patch level 5
+        \def\pltx at latex@level{4}
+        % anticipating LaTeX2e 'develop' branch (after 23b7244)
+        % this temporary code will be removed in the future
+        %\let\series at maybe@drop at one@m at x\series at maybe@drop at one@m
+        %\def\series at maybe@drop at one@m#1{%
+        %  \expandafter\series at maybe@drop at one@m at x\expandafter{#1}}
+      \else
+        \def\pltx at latex@level{5}
+      \fi
+    \fi
   \fi
-  % actually we'd like to check the below too,
-  % but commented out for TL19 frozen since
-  % platex-dev format generation fails
-  %\ifx\series at maybe@drop at one@m\@undefined % patch level 0--4
-  %  \@latex at error
-  %    {Please update LaTeX2e!^^J\space\space
-  %     At least LaTeX2e 2020-02-02 patch level 5 is required}
-  %    {LaTeX2e 2020-02-02 patch level 2 and 4 has a bug.}
-  %\fi
 \fi
+\edef\pltx at reset@catcode at trick{\catcode`\noexpand\~=\the\catcode`\~\relax}
+\def\pltx at temp@catcode at ix{\catcode`\~=9\relax}
+\def\pltx at temp@catcode at xiv{\catcode`\~=14\relax}
+\ifnum\pltx at latex@level<3\relax
+  \pltx at temp@catcode at xiv % hide if-tokens
+\else
+  \pltx at temp@catcode at ix  % reveal if-tokens
+\fi
 \ifx\fontseriesforce\@undefined  % old
 \DeclareRobustCommand\romanseries[1]{\edef\f at series{#1}}
 \DeclareRobustCommand\kanjiseries[1]{\edef\k at series{#1}}
@@ -745,26 +876,26 @@
     \fi
   \fi
 }
-\ifx\series at maybe@drop at one@m\@undefined % patch level 0--4
 \def\set at target@series at kanji#1{%
     \edef\k at series{#1}%
-    \edef\k at series{\expandafter\series at drop@one at m\k at series mm\series at drop@one at m}%
+    \series at maybe@drop at one@m\k at series\k at series
 }
-\else                                   % patch level 5
-\def\set at target@series at kanji#1{%
-    \edef\k at series{#1}%
-    \expandafter\series at maybe@drop at one@m\expandafter{\k at series}\k at series
-}
 \fi
-\fi
+\newif\if at shape@roman at kanji
 \ifx\fontshapeforce\@undefined   % old
 \DeclareRobustCommand\romanshape[1]{\edef\f at shape{#1}}
 \DeclareRobustCommand\kanjishape[1]{\edef\k at shape{#1}}
-\DeclareRobustCommand\fontshape[1]{\kanjishape{#1}\romanshape{#1}}
+\DeclareRobustCommand\fontshape[1]{%
+  \set at safe@kanji at shape{#1}{}%
+  \edef\f at shape{#1}%
+}
 \else                            % 2020-02-02
 \DeclareRobustCommand\romanshape[1]{\merge at font@shape{#1}}
 \DeclareRobustCommand\kanjishape[1]{\merge at kanji@shape{#1}}
-\DeclareRobustCommand\fontshape[1]{\kanjishape{#1}\romanshape{#1}}
+\DeclareRobustCommand\fontshape[1]{%
+  \@shape at roman@kanjitrue
+  \kanjishape{#1}\romanshape{#1}%
+  \@shape at roman@kanjifalse}
 \fi
 \ifx\fontshapeforce\@undefined   % old
 \let\romanshapeforce\@undefined
@@ -772,7 +903,10 @@
 \else                            % 2020-02-02
 \DeclareRobustCommand\romanshapeforce[1]{\edef\f at shape{#1}}
 \DeclareRobustCommand\kanjishapeforce[1]{\edef\k at shape{#1}}
-\DeclareRobustCommand\fontshapeforce[1]{\kanjishapeforce{#1}\romanshapeforce{#1}}
+\DeclareRobustCommand\fontshapeforce[1]{%
+  \set at safe@kanji at shape{#1}{}%
+  \edef\f at shape{#1}%
+}
 \fi
 \ifx\fontseriesforce\@undefined  % old
 \let\merge at kanji@shape\@undefined
@@ -788,7 +922,11 @@
 \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
@@ -800,13 +938,31 @@
          \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
 }
 \fi
+\def\set at safe@kanji at shape#1#2{%
+  \edef\reserved at b{\k at encoding /\k at family /\k at series/#1}%
+   \ifcsname \reserved at b\endcsname
+     \edef\k at shape{#1}%
+     #2%
+  \else
+    \@kanji at shape@nochange at info{\reserved at b}%
+  \fi
+}
+\def\@kanji at shape@nochange at info#1{%
+    \@font at info{Kanji font shape `#1' undefined\MessageBreak
+                No change}%
+}
 \DeclareRobustCommand\usekanji[4]{\kanjiencoding{#1}%
     \edef\k at family{#2}%
     \edef\k at series{#3}%
@@ -824,6 +980,7 @@
   \ifin@ \usekanji{#1}{#2}{#3}{#4}%
   \else\useroman{#1}{#2}{#3}{#4}%
   \fi}
+\ifx\@defaultfamilyhook\@undefined  % old
 \DeclareRobustCommand\normalfont{%
     \kanjiencoding{\kanjiencodingdefault}%
     \edef\k at family{\kanjifamilydefault}%
@@ -833,7 +990,15 @@
     \edef\f at family{\familydefault}%
     \edef\f at series{\seriesdefault}%
     \edef\f at shape{\shapedefault}%
-    \selectfont\ignorespaces}
+    \selectfont}
+\else                               % 2020-02-02 PL2
+\g at addto@macro\@defaultfamilyhook{%
+    \kanjiencoding{\kanjiencodingdefault}%
+    \edef\k at family{\kanjifamilydefault}%
+    \edef\k at series{\kanjiseriesdefault}%
+    \edef\k at shape{\kanjishapedefault}%
+}
+\fi
 \adjustbaseline
 \let\reset at font\normalfont
 \ifx\bfseries at rm\@undefined  % old
@@ -854,32 +1019,44 @@
   \edef\kanjidef at ult{\kanjifamilydefault}%
 }
 \fi
-\ifx\bfseries at rm\@undefined\else  % 2020-02-02
-\DeclareRobustCommand\bfseries{%
-  \not at math@alphabet\bfseries\mathbf
-  \expand at font@defaults
-  % changed \fontseries -> \romanseries
-    \ifx\f at family\rmdef at ult      \romanseries\bfseries at rm
-    \else\ifx\f at family\sfdef at ult \romanseries\bfseries at sf
-    \else\ifx\f at family\ttdef at ult \romanseries\bfseries at tt
-    \else                        \romanseries\bfdefault
-    \fi\fi\fi
+\ifx\bfseries at rm\@undefined  % old
+\let\pltx at fontseries@saved\@undefined
+\let\pltx at patch@bfseries\@undefined
+\let\pltx at patch@mdseries\@undefined
+\else                        % 2020-02-02
+\let\pltx at fontseries@saved\fontseries
+\def\pltx at patch@bfseries\not at math@alphabet#1#2#3\selectfont{%
+ \long\expandafter\def\csname bfseries \endcsname{%
+  \not at math@alphabet#1#2% should be \bfseries\mathbf
+  % \fontseries of pLaTeX tries to change both Latin and Japanese;
+  % here we want only Latin, so use \romanseries
+  \let\fontseries\romanseries
+  #3% contains \fontseries and \@setbfseriesdefaultshook
+  \let\fontseries\pltx at fontseries@saved % recover
   % changed \fontseries -> \kanjiseries
     \ifx\k at family\mcdef at ult      \kanjiseries\bfseries at mc
     \else\ifx\k at family\gtdef at ult \kanjiseries\bfseries at gt
     \else                        \kanjiseries\bfdefault
     \fi\fi
- \selectfont
+  \selectfont
+ }%
 }
-\DeclareRobustCommand\mdseries{%
-  \not at math@alphabet\mdseries\relax
-  \expand at font@defaults
-  % changed \fontseries -> \romanseries
-    \ifx\f at family\rmdef at ult      \romanseries\mdseries at rm
-    \else\ifx\f at family\sfdef at ult \romanseries\mdseries at sf
-    \else\ifx\f at family\ttdef at ult \romanseries\mdseries at tt
-    \else                        \romanseries\mddefault
-    \fi\fi\fi
+\ifx\@setbfseriesdefaultshook\@undefined\else
+\g at addto@macro\@setbfseriesdefaultshook{%
+    \let\bfseries at mc\bfdef at ult
+    \let\bfseries at gt\bfdef at ult
+}
+\fi
+\expandafter\expandafter\expandafter
+  \pltx at patch@bfseries\csname bfseries \endcsname
+\def\pltx at patch@mdseries\not at math@alphabet#1#2#3\selectfont{%
+ \long\expandafter\def\csname mdseries \endcsname{%
+  \not at math@alphabet#1#2% should be \mdseries\relax
+  % \fontseries of pLaTeX tries to change both Latin and Japanese;
+  % here we want only Latin, so use \romanseries
+  \let\fontseries\romanseries
+  #3% contains \fontseries and \@setmdseriesdefaultshook
+  \let\fontseries\pltx at fontseries@saved % recover
   % changed \fontseries -> \kanjiseries
     \ifx\k at family\mcdef at ult      \kanjiseries\mdseries at mc
     \else\ifx\k at family\gtdef at ult \kanjiseries\mdseries at gt
@@ -886,8 +1063,17 @@
     \else                        \kanjiseries\mddefault
     \fi\fi
   \selectfont
+ }%
 }
+\ifx\@setmdseriesdefaultshook\@undefined\else
+\g at addto@macro\@setmdseriesdefaultshook{%
+    \let\mdseries at mc\mddef at ult
+    \let\mdseries at gt\mddef at ult
+}
 \fi
+\expandafter\expandafter\expandafter
+  \pltx at patch@mdseries\csname mdseries \endcsname
+\fi
 \ifx\prepare at family@series at update\@undefined  % old
 \let\prepare at family@series at update@kanji\@undefined
 \let\@meta at family@list at kanji\@undefined
@@ -894,9 +1080,9 @@
 \let\update at series@target at value@kanji\@undefined
 \else                                         % 2020-02-02
 \def\prepare at family@series at update#1#2{%
- \if at forced@series
-   \romanfamily#2%   % changed \fontfamily -> \romanfamily
- \else
+~\if at forced@series
+~  \romanfamily#2%   % changed \fontfamily -> \romanfamily
+~\else
    \expand at font@defaults
    \let\target at series@value\@empty
    \def\target at meta@family at value{#1}%
@@ -911,15 +1097,15 @@
      \ifx \f at series\target at series@value
      \else
        \maybe at load@fontshape
-       \let\f at series\target at series@value
+       \series at maybe@drop at one@m\target at series@value\f at series
      \fi
    \fi
- \fi
+~\fi
 }
 \def\prepare at family@series at update@kanji#1#2{%
- \if at forced@series
-   \kanjifamily#2%
- \else
+~\if at forced@series
+~  \kanjifamily#2%
+~\else
    \expand at font@defaults
    \let\target at series@value\@empty
    \def\target at meta@family at value{#1}%
@@ -935,10 +1121,10 @@
      \else
        \begingroup\let\f at encoding\k at encoding\let\f at family\k at family
          \maybe at load@fontshape\endgroup
-       \let\k at series\target at series@value
+       \series at maybe@drop at one@m\target at series@value\k at series
      \fi
    \fi
- \fi
+~\fi
 }
 \def\@meta at family@list at kanji{\@elt{mc}\@elt{gt}}
 \def\update at series@target at value@kanji#1{%
@@ -951,9 +1137,14 @@
                       \csname mdseries@\target at meta@family at value\endcsname
       \expandafter\let\expandafter\reserved at c
                       \csname bfseries@\target at meta@family at value\endcsname
-      \expandafter\ifx\csname mdseries@#1\endcsname\k at series
+      \expandafter\series at maybe@drop at one@m
+          \csname mdseries@#1\endcsname\reserved at d
+      \ifx\reserved at d\k at series
                                       \let\target at series@value\reserved at b
-      \else\expandafter\ifx\csname bfseries@#1\endcsname\k at series
+      \else
+        \expandafter\series at maybe@drop at one@m
+           \csname bfseries@#1\endcsname\reserved at d
+        \ifx\reserved at d\k at series
                                       \let\target at series@value\reserved at c
       \else\ifx\k at series\mddef at ult    \let\target at series@value\reserved at b
       \else\ifx\k at series\bfdef at ult    \let\target at series@value\reserved at c
@@ -986,6 +1177,157 @@
 \fi
 \DeclareTextFontCommand{\textmc}{\mcfamily}
 \DeclareTextFontCommand{\textgt}{\gtfamily}
+%%
+\ifnum\pltx at latex@level>0\relax       % 2020-02-02
+\ifnum\pltx at latex@level<3\relax       % 2020-02-02 patch level 0--2 (no flags)
+\DeclareRobustCommand\romanseries[1]{\merge at font@series{#1}}
+\DeclareRobustCommand\kanjiseries[1]{\merge at kanji@series{#1}}
+\DeclareRobustCommand\fontseries[1]{\kanjiseries{#1}\romanseries{#1}}
+\DeclareRobustCommand\romanseriesforce[1]{\edef\f at series{#1}}
+\DeclareRobustCommand\kanjiseriesforce[1]{\edef\k at series{#1}}
+\DeclareRobustCommand\fontseriesforce[1]{\kanjiseriesforce{#1}\romanseriesforce{#1}}
+\fi
+\ifnum\pltx at latex@level=1\relax       % 2020-02-02 patch level 0 (\@reserveda)
+\def\merge at kanji@series@#1#2#3\@nil{%
+  \def\@reserveda{#3}%
+  \ifx\@reserveda\@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\@reserveda{\k at encoding /\k at family /#1/\k at shape}%
+     \ifcsname \@reserveda \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@shape@#1#2#3\@nil{%
+  \def\@reserveda{#3}%
+  \ifx\@reserveda\@empty
+    \edef\k at shape{#2}%
+  \else
+    \begingroup\let\f at encoding\k at encoding\let\f at family\k at family
+      \maybe at load@fontshape\endgroup
+    \edef\@reserveda{\k at encoding /\k at family /\k at series/#1}%
+     \ifcsname \@reserveda\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
+         \edef\k at shape{#3}%
+         {\let\curr at fontshape\curr at kfontshape\@font at shape@subst at warning}%
+       \fi
+    \fi
+  \fi
+}
+\fi
+\ifnum\pltx at latex@level<4\relax       % 2020-02-02 patch level 0--4 (drop m)
+\def\set at target@series at kanji#1{%
+    \edef\k at series{#1}%
+    \edef\k at series{\expandafter\series at drop@one at m\k at series mm\series at drop@one at m}%
+}
+\else\ifnum\pltx at latex@level=4\relax  % 2020-02-02 patch level 5 (old syntax)
+\def\set at target@series at kanji#1{%
+    \edef\k at series{#1}%
+    \expandafter\series at maybe@drop at one@m\expandafter{\k at series}\k at series
+}
+\fi\fi
+\ifnum\pltx at latex@level<5\relax       % 2020-02-02 patch level 0--5
+\def\prepare at family@series at update#1#2{%
+~\if at forced@series
+~  \romanfamily#2%   % changed \fontfamily -> \romanfamily
+~\else
+   \expand at font@defaults
+   \let\target at series@value\@empty
+   \def\target at meta@family at value{#1}%
+~  \expandafter\edef\csname ??def at ult\endcsname{\f at family}%
+   \let\@elt\update at series@target at value
+      \@meta at family@list
+~     \@elt{??}%
+   \let\@elt\relax
+   \romanfamily#2%   % changed \fontfamily -> \romanfamily
+   \ifx\target at series@value\@empty
+   \else
+     \ifx \f at series\target at series@value
+     \else
+       \maybe at load@fontshape
+       \let\f at series\target at series@value
+     \fi
+   \fi
+~\fi
+}
+\def\prepare at family@series at update@kanji#1#2{%
+~\if at forced@series
+~  \kanjifamily#2%
+~\else
+   \expand at font@defaults
+   \let\target at series@value\@empty
+   \def\target at meta@family at value{#1}%
+~  \expandafter\edef\csname ??def at ult\endcsname{\k at family}%
+   \let\@elt\update at series@target at value@kanji
+      \@meta at family@list at kanji
+~     \@elt{??}%
+   \let\@elt\relax
+   \kanjifamily#2%
+   \ifx\target at series@value\@empty
+   \else
+     \ifx \k at series\target at series@value
+     \else
+       \begingroup\let\f at encoding\k at encoding\let\f at family\k at family
+         \maybe at load@fontshape\endgroup
+       \let\k at series\target at series@value
+     \fi
+   \fi
+~\fi
+}
+\def\@meta at family@list at kanji{\@elt{mc}\@elt{gt}}
+\def\update at series@target at value@kanji#1{%
+  \def\reserved at a{#1}%
+  \ifx\target at meta@family at value\reserved at a   % rm -> rm do nothing
+  \else
+    \expandafter\ifx\csname#1def at ult\endcsname\k at family
+      \let\@elt\@gobble
+      \expandafter\let\expandafter\reserved at b
+                      \csname mdseries@\target at meta@family at value\endcsname
+      \expandafter\let\expandafter\reserved at c
+                      \csname bfseries@\target at meta@family at value\endcsname
+      \expandafter\ifx\csname mdseries@#1\endcsname\k at series
+                                      \let\target at series@value\reserved at b
+      \else\expandafter\ifx\csname bfseries@#1\endcsname\k at series
+                                      \let\target at series@value\reserved at c
+      \else\ifx\k at series\mddef at ult    \let\target at series@value\reserved at b
+      \else\ifx\k at series\bfdef at ult    \let\target at series@value\reserved at c
+      \fi\fi\fi\fi
+    \fi
+  \fi
+}
+\fi
+\fi
+%%
+\pltx at reset@catcode at trick
+\let\romanprocess at table\process at table
+\def\kanjiprocess at table{%
+  \kanjiencoding{\kanjiencodingdefault}%
+  \kanjifamily{\kanjifamilydefault}%
+  \kanjiseries{\kanjiseriesdefault}%
+  \kanjishape{\kanjishapedefault}%
+}
+\def\process at table{%
+  \romanprocess at table
+  \kanjiprocess at table
+}
+\@onlypreamble\romanprocess at table
+\@onlypreamble\kanjiprocess at table
 \ifx\DeclareEmphSequence\@undefined % old
 \DeclareRobustCommand\em
         {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
@@ -1003,19 +1345,6 @@
 }
 \fi
 \def\eminnershape{\mcfamily \upshape}%
-\let\romanprocess at table\process at table
-\def\kanjiprocess at table{%
-  \kanjiencoding{\kanjiencodingdefault}%
-  \kanjifamily{\kanjifamilydefault}%
-  \kanjiseries{\kanjiseriesdefault}%
-  \kanjishape{\kanjishapedefault}%
-}
-\def\process at table{%
-  \romanprocess at table
-  \kanjiprocess at table
-}
-\@onlypreamble\romanprocess at table
-\@onlypreamble\kanjiprocess at table
 \DeclareTextCommandDefault{\textunderscore}{%
   \leavevmode\kern.06em
   \raise-\iftdir\ifmdir\ybaselineshift
@@ -1499,6 +1828,11 @@
     \language\l at nohyphenation
     \@ifstar\@sverb\@verb}
 \fi
+\def\do at noligs#1{%
+  \catcode`#1\active
+  \begingroup
+     \lccode`\~`#1\relax
+     \lowercase{\endgroup\def~{\leavevmode\vadjust{}\char`#1}}}
 \gdef\@startline{%
      \ifnum \@nxttabmar >\@hightab
        \@badtab
@@ -1626,16 +1960,23 @@
   \let\document at default@language\m at ne
 \fi
 %% File: plvers.dtx
-\AtBeginDocument{%
-  \@ifpackageloaded{latexrelease}{%
-    \@ifpackageloaded{platexrelease}{}{%
+\expandafter\def\expandafter\process at table\expandafter{%
+  \expandafter\p at warn@latexrelease\process at table}
+\begingroup
+\toks@\expandafter{\expandafter\p at warn@latexrelease\@begindocumenthook}
+\xdef\@begindocumenthook{\the\toks@}
+\endgroup
+\def\p at warn@latexrelease{%
+  \ifx\latexreleaseversion\@undefined\else
+    \ifx\platexreleaseversion\@undefined
       \@latex at warning@no at line{%
         Package latexrelease is loaded.\MessageBreak
         Some patches in pLaTeX2e core may be overwritten.\MessageBreak
         Consider using platexrelease.\MessageBreak
         See platex.pdf for detail}%
-    }%
-  }{}%
+    \fi
+  \fi
+  \let\p at warn@latexrelease\relax
 }
 \endinput
 %%

Modified: trunk/Master/texmf-dist/tex/platex/base/ptrace.sty
===================================================================
--- trunk/Master/texmf-dist/tex/platex/base/ptrace.sty	2020-04-12 21:27:51 UTC (rev 54696)
+++ trunk/Master/texmf-dist/tex/platex/base/ptrace.sty	2020-04-12 21:29:19 UTC (rev 54697)
@@ -15,8 +15,10 @@
 %% File: plfonts.dtx
 \NeedsTeXFormat{pLaTeX2e}
 \ProvidesPackage{ptrace}
-     [2019/09/16 v1.6t Standard pLaTeX package (font tracing)]
+     [2020/03/26 v1.7e Standard pLaTeX package (font tracing)]
 \RequirePackageWithOptions{tracefnt}
+\plIncludeInRelease{2020/04/12}{\selectfont}
+                   {Check \KanjiEncodingPair}%
 \DeclareRobustCommand\selectfont{%
   \let\tmp at error@fontshape\error at fontshape
   \let\error at fontshape\error at kfontshape
@@ -25,6 +27,7 @@
   \inlist@\expandafter\tmp at item\expandafter{\kyenc at list}%
   \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
     \expandafter\expandafter\expandafter
@@ -31,6 +34,7 @@
     \inlist@\expandafter\tmp at item\expandafter{\ktenc at list}%
     \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
@@ -72,6 +76,65 @@
     \set at fontsize\baselinestretch\f at size\f at baselineskip
   \fi
   \size at update}
+\plEndIncludeInRelease
+\plIncludeInRelease{0000/00/00}{\selectfont}
+                   {ASCII Corporation original}%
+\DeclareRobustCommand\selectfont{%
+  \let\tmp at error@fontshape\error at fontshape
+  \let\error at fontshape\error at kfontshape
+  \edef\tmp at item{{\k at encoding}}%
+  \expandafter\expandafter\expandafter
+  \inlist@\expandafter\tmp at item\expandafter{\kyenc at list}%
+  \ifin@
+    \let\cy at encoding\k at encoding
+    \edef\ct at encoding{\csname t at enc@\k at encoding\endcsname}%
+  \else
+    \expandafter\expandafter\expandafter
+    \inlist@\expandafter\tmp at item\expandafter{\ktenc at list}%
+    \ifin@
+      \let\ct at encoding\k at encoding
+      \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
+  \let\font\tfont
+  \let\k at encoding\ct at encoding
+  \xdef\font at name{\csname\curr at kfontshape/\f at size\endcsname}%
+  \pickup at font
+  \font at name
+  \let\font\jfont
+  \let\k at encoding\cy at encoding
+  \xdef\font at name{\csname\curr at kfontshape/\f at size\endcsname}%
+  \pickup at font
+  \font at name
+  \expandafter\def\expandafter\k at encoding\tmp at item
+  \kenc at update
+  \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
+      \fi
+    \else
+       \csname rel@\k at encoding/\k at family/\k at series/\k at shape\endcsname
+    \fi
+  \fi
+  \let\font\afont
+  \xdef\font at name{\csname\curr at fontshape/\f at size\endcsname}%
+  \pickup at font
+  \font at name
+  \ifnum \tracingfonts>\tw@
+    \@font at info{Roman:Switching to \font at name}\fi
+  \enc at update
+  \ifx\f at linespread\baselinestretch \else
+    \set at fontsize\baselinestretch\f at size\f at baselineskip
+  \fi
+  \size at update}
+\plEndIncludeInRelease
 \plIncludeInRelease{2017/04/08}{\set at fontsize}
                    {Construct \ystrutbox}%
 \def\set at fontsize#1#2#3{%



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