OSDN Git Service

lltjfont: adapted to 2021-05-01dev
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Sun, 24 Jan 2021 10:12:05 +0000 (19:12 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Sun, 24 Jan 2021 10:12:05 +0000 (19:12 +0900)
src/patches/lltjdefs.sty
src/patches/lltjfont.sty

index 754a912..07b2c0d 100644 (file)
@@ -3,7 +3,7 @@
 %
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjdefs}[2020-10-05 Default font settings of LuaTeX-ja]
+\ProvidesPackage{lltjdefs}[2021-01-24 Default font settings of LuaTeX-ja]
 
 \ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{file:HaranoAjiMincho-Regular.otf}\fi
 \ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{file:HaranoAjiGothic-Medium.otf}\fi
 \DeclareKanjiEncodingDefaults{}{}
 \DeclareErrorKanjiFont{JY3}{mc}{m}{n}{10}
 \kanjifamily{mc}
-\kanjiseries{m}
-\kanjishape{n}
+\ifnum\ltj@@latex@plv<1500 % <=2020-10-01
+  \kanjiseries{m}
+  \kanjishape{n}
+\else % >=2021-05-01
+  \def\k@series{m}
+  \def\k@shape{n}
+\fi
 \fontsize{10}{10}
 \DeclareYokoKanjiEncoding{JY3}{}{}
 \DeclareKanjiSubstitution{JY3}{mc}{m}{n}
@@ -35,7 +40,7 @@
 \ifnum 0\ifltj@ltfilehook@avail1\fi\ifdefined\@rmfamilyhook1\fi>0
   %% LaTeX 2020-02-02
   \newcommand\kanjishapedefault{\shapedefault}
-\else                   %% LaTeX 2019-10-01
+\else%% LaTeX 2019-10-01
   \newcommand\kanjishapedefault{\updefault}
 \fi
 
index ca4f666..1df6197 100644 (file)
@@ -3,7 +3,30 @@
 %
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjfont}[2020-12-29 Patch to NFSS2 for LuaTeX-ja]
+\ProvidesPackage{lltjfont}[2021-01-24 Patch to NFSS2 for LuaTeX-ja]
+
+%%%%%%%% LaTeX2e version detection
+\newcount\ltj@@latex@plv \ltj@@latex@plv=-1
+\ifltj@ltfilehook@avail
+  \IfHookExistsTF{selectfont}%
+    {\ltj@@latex@plv=1500}% 2021-05-01
+    {\ifnum\patch@level>2 \ltj@@latex@plv=1300\else \ltj@@latex@plv=1000\fi}% 2020-10-01
+\else\ifdefined\@rmfamilyhook % 2020-02-02
+  \ifx\@forced@seriestrue\@undefined % 2020-02-02 pl0--2
+    \@latex@error
+     {Please update LaTeX2e!^^J\space\space
+       At least LaTeX2e 2020-02-02 patch level 3 is required}%
+     {LaTeX2e 2020-02-02 patch level 2 (and 4) has a bug.}
+  \else
+    \ltj@@latex@plv=300
+    \unless\ifx\series@maybe@drop@one@m@x\@undefined % pl5 + develop
+      \ltj@@latex@plv=501
+    \else\unless\ifx\series@maybe@drop@one@m\@undefined % patch level 5
+      \ltj@@latex@plv=500
+    \fi\fi
+  \fi
+\fi\fi
+
 
 %% patching \DeclareTextComposite
 \def\ltj@chardef@text@cmd#1{%
       \directlua{luatexja.jfont.pickup_alt_font_a('\f@size')}%
     }%
   \fi}
+\ifnum\ltj@@latex@plv<1500 % <=2020-10-01
 \protected\def\ltj@selectfont@patch{%
   \ltj@@start@time@measure{selectfont}%
   \let\tmp@error@fontshape\error@fontshape
   \global\let\font@name=\ltj@afont@name
   \ltj@@stop@time@measure{selectfont}%
 }
-\def\@@ltj@old@selectfont@patch{%
-  \RequirePackage{everysel}
-  \let\ltj@@EverySelectfont@Init=\@EverySelectfont@Init
-  \expandafter\expandafter\expandafter\let
-  \expandafter\expandafter\csname ltj@@orig@selectfont\endcsname\csname selectfont\space\endcsname
-  \@EverySelectfont@Init% for LaTeX2e <=2020-10-01
-  \def\@EverySelectfont@Init{%
-    \expandafter\let\csname selectfont\space \endcsname \ltj@@orig@selectfont
-    \ltj@@EverySelectfont@Init
-  }
-  \EverySelectfont{\ltj@selectfont@patch}
+\RequirePackage{everysel}
+\let\ltj@@EverySelectfont@Init=\@EverySelectfont@Init
+\expandafter\expandafter\expandafter\let
+\expandafter\expandafter\csname ltj@@orig@selectfont\endcsname\csname selectfont\space\endcsname
+\@EverySelectfont@Init% for LaTeX2e <=2020-10-01
+\def\@EverySelectfont@Init{%
+  \expandafter\let\csname selectfont\space \endcsname \ltj@@orig@selectfont
+  \ltj@@EverySelectfont@Init
+}
+\EverySelectfont{\ltj@selectfont@patch}
+\else % LaTeX2e >=2021-05-01
+\AddToHook{selectfont}[luatexja]{%
+  \ltj@@start@time@measure{selectfont}%
+  \ifx\delayed@k@adjustment\@empty
+  \else
+    \let\k@shape@saved\k@shape
+    \let\k@series@saved\f@series
+    \delayed@k@adjustment
+    \begingroup\let\f@encoding\k@encoding\let\f@family\k@family
+    \maybe@load@fontshape\endgroup
+    \ifcsname \k@encoding/\k@family/\k@series/\k@shape \endcsname
+    \else
+      \let\k@shape\k@shape@saved
+      \let\k@series\k@series@saved
+      \let\delayed@merge@kanji@shape\merge@kanji@shape
+      \let\delayed@merge@kanji@series\merge@kanji@series
+      \delayed@k@adjustment
+      \let\delayed@merge@kanji@shape\merge@kanji@shape@without@substitution
+      \let\delayed@merge@kanji@series\merge@kanji@series@without@substitution
+    \fi
+    \let\delayed@k@adjustment\@empty
+  \fi
+  \let\tmp@error@fontshape\error@fontshape
+  \let\error@fontshape\error@kfontshape
+  \ltj@@is@kyenc{\k@encoding}\ifin@%
+    \let\cy@encoding\k@encoding
+    \ensure@KanjiEncodingPair{t}%
+    \edef\ct@encoding{\csname t@enc@\k@encoding\endcsname}%
+  \else
+    \ltj@@is@ktenc{\k@encoding}\ifin@%
+      \let\ct@encoding\k@encoding
+      \ensure@KanjiEncodingPair{y}%
+      \edef\cy@encoding{\csname y@enc@\k@encoding\endcsname}%
+    \else
+      \@latex@error{KANJI Encoding scheme `\k@encoding' unknown}\@eha
+    \fi
+  \fi
+  \global\let\ltj@afont@name=\font@name
+  \ltj@selectfont@tate\ltj@selectfont@yoko
+%
+  \edef\tmp@item{{\k@encoding}}\expandafter\def\expandafter\k@encoding\tmp@item
+  \kenc@update
+  \global\let\font@name=\ltj@afont@name
+  \let\error@fontshape\tmp@error@fontshape
+  \if@knjcmd \@knjcmdfalse
+    \expandafter\ifx
+    \csname rel@\k@encoding/\k@family/\k@series/\k@shape\endcsname\relax
+      \expandafter\ifx
+         \csname rel@\k@encoding/\k@family/\k@series/all\endcsname\relax
+      \else
+         \csname rel@\k@encoding/\k@family/\k@series/all\endcsname\selectfont
+         % 警告: 再び \selectfont を呼んでいる.無限ループの可能性あり
+      \fi
+    \else
+       \csname rel@\k@encoding/\k@family/\k@series/\k@shape\endcsname\selectfont
+       % 警告: 再び \selectfont を呼んでいる.無限ループの可能性あり
+    \fi
+  \fi
+  \global\let\font@name=\ltj@afont@name
+  \ltj@@stop@time@measure{selectfont}%
 }
-\ifltj@ltfilehook@avail
-  \IfHookExistsTF{selectfont}{\AddToHook{selectfont}[luatexja]{\ltj@selectfont@patch}}% LaTeX2e 2021-05-01
-    {\@@ltj@old@selectfont@patch}% LaTeX2e 2020-10-01
-\else\@@ltj@old@selectfont@patch % LaTeX2e <=2020-02-02
 \fi
-\let\@@ltj@old@selectfont@patch\undefined
 
 \bgroup
   \def\ltj@@dir@patch#1#2#3{%
   \fi\fi
 }
 
-\newcount\ltj@@latex@plv \ltj@@latex@plv=-1
-\ifltj@ltfilehook@avail % 2020-10-01
-  \@ifl@t@r\fmtversion{2020-10-02}{\ltj@@latex@plv=1300}%
-    {\ifnum\patch@level>2 \ltj@@latex@plv=1300\else \ltj@@latex@plv=1000\fi}
-\else\ifdefined\@rmfamilyhook % 2020-02-02
-  \ifx\@forced@seriestrue\@undefined % 2020-02-02 pl0--2
-    \@latex@error
-     {Please update LaTeX2e!^^J\space\space
-       At least LaTeX2e 2020-02-02 patch level 3 is required}%
-     {LaTeX2e 2020-02-02 patch level 2 (and 4) has a bug.}
-  \else
-    \ltj@@latex@plv=300
-    \unless\ifx\series@maybe@drop@one@m@x\@undefined % pl5 + develop
-      \ltj@@latex@plv=501
-    \else\unless\ifx\series@maybe@drop@one@m\@undefined % patch level 5
-      \ltj@@latex@plv=500
-    \fi\fi
-  \fi
-\fi\fi
-
 %%%%%%
 \ifnum\ltj@@latex@plv>0
 %%%% LaTeX >= 2020-02-02
     {#1}%
     \@nil
 }
+\def\merge@kanji@shape#1{%
+  \expandafter\expandafter\expandafter
+  \merge@kanji@shape@
+    \csname shape@\k@shape @#1\endcsname
+    {#1}%
+    \@nil
+}
 
 \ifnum\ltj@@latex@plv>500 % !!! pl5 + develop
   \def\set@target@series@kanji#1{%
   }
 \fi\fi
 
+\ifnum\ltj@@latex@plv<1500% <=2020-10-01
 \def\merge@kanji@series@#1#2#3\@nil{%
   \def\reserved@a{#3}%
   \ifx\reserved@a\@empty
     \fi
   \fi
 }
-\def\merge@kanji@shape#1{%
+\def\merge@kanji@shape@#1#2#3\@nil{%
+  \def\reserved@a{#3}%
+  \ifx\reserved@a\@empty
+    \if@shape@roman@kanji
+      \set@safe@kanji@shape{#2}{}%
+    \else
+      \edef\k@shape{#2}%
+    \fi
+  \else
+    \begingroup\let\f@encoding\k@encoding\let\f@family\k@family
+           \maybe@load@fontshape\endgroup
+    \edef\reserved@a{\k@encoding /\k@family /\k@series/#1}%
+     \ifcsname \reserved@a\endcsname
+       \edef\k@shape{#1}%
+    \else
+       \ifcsname \k@encoding /\k@family /\k@series/#2\endcsname
+         \edef\k@shape{#2}%
+         {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}%
+       \else
+         \if@shape@roman@kanji
+           \set@safe@kanji@shape{#3}%
+           {{\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}}%
+         \else
+           \edef\k@shape{#3}%
+           {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}%
+         \fi
+       \fi
+    \fi
+  \fi
+}
+\else % >=2021-05-01
+\def\merge@kanji@series@#1#2#3\@nil{%
+  \def\reserved@a{#3}%
+  \ifx\reserved@a\@empty
+    \set@target@series@kanji{#2}%
+  \else
+    \begingroup\let\f@encoding\k@encoding\let\f@family\k@family
+    \maybe@load@fontshape\endgroup
+    \edef\reserved@a{\k@encoding /\k@family /#1/\k@shape}%
+     \ifcsname \reserved@a \endcsname
+       \set@target@series@kanji{#1}%
+    \else
+       \ifcsname \k@encoding /\k@family /#2/\k@shape \endcsname
+         \set@target@series@kanji{#2}%
+         {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}%
+       \else
+         \set@target@series@kanji{#3}%
+         {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}%
+       \fi
+    \fi
+  \fi
+}
+\def\merge@kanji@series@without@substitution#1{%
   \expandafter\expandafter\expandafter
-  \merge@kanji@shape@
-    \csname shape@\k@shape @#1\endcsname
+  \merge@kanji@series@without@substitution@
+    \csname series@\k@series @#1\endcsname
     {#1}%
     \@nil
 }
+\def\merge@kanji@series@without@substitution@#1#2#3\@nil{%
+  \def\reserved@a{#3}%
+  \ifx\reserved@a\@empty
+    \set@target@series@kanji{#2}%
+  \else
+    \set@target@series@kanji{#1}%
+\fi
+}
+\let\delayed@merge@kanji@series\merge@kanji@series@without@substitution
+
 \def\merge@kanji@shape@#1#2#3\@nil{%
   \def\reserved@a{#3}%
   \ifx\reserved@a\@empty
       \edef\k@shape{#2}%
     \fi
   \else
-    \begingroup\let\f@encoding\k@encoding\let\f@family\k@family
-           \maybe@load@fontshape\endgroup
     \edef\reserved@a{\k@encoding /\k@family /\k@series/#1}%
      \ifcsname \reserved@a\endcsname
        \edef\k@shape{#1}%
     \fi
   \fi
 }
-\ifnum\ltj@@latex@plv=300 % !!! pl3, 4
+\def\merge@kanji@shape@without@substitution#1{%
+  \expandafter\expandafter\expandafter
+  \merge@kanji@shape@without@substitution@
+    \csname shape@\k@shape @#1\endcsname
+    {#1}%
+    \@nil
+}
+\def\merge@kanji@shape@without@substitution@#1#2#3\@nil{%
+  \def\reserved@a{#3}%
+  \ifx\reserved@a\@empty
+    \edef\k@shape{#2}%
+  \else
+    \edef\k@shape{#1}%
+  \fi
+}
+\let\delayed@merge@kanji@shape\merge@kanji@shape@without@substitution
+\fi
+
+\ifnum\ltj@@latex@plv=300 % 2020-02-02 pl3, 4
   \DeclareRobustCommand\romanseries[1]{\merge@font@series{#1}}
   \DeclareRobustCommand\kanjiseries[1]{\merge@kanji@series{#1}}
   \DeclareRobustCommand\fontseries[1]{%
   \DeclareRobustCommand\kanjiseriesforce[1]{\edef\k@series{#1}}
   \DeclareRobustCommand\fontseriesforce[1]{%
      \edef\f@series{#1}\edef\k@series{#1}}
-\else % !!! pl 5
+\else\ifnum\ltj@@latex@plv<1500% >=2020-02-02 pl5 and <=2020-10-01
   \DeclareRobustCommand\romanseries[1]{\@forced@seriesfalse\merge@font@series{#1}}
   \DeclareRobustCommand\kanjiseries[1]{\@forced@seriesfalse\merge@kanji@series{#1}}
   \DeclareRobustCommand\fontseries[1]{%
   \DeclareRobustCommand\kanjiseriesforce[1]{\@forced@seriestrue\merge@kanji@series{#1}}
   \DeclareRobustCommand\fontseriesforce[1]{%
      \@forced@seriestrue\merge@font@series{#1}\merge@kanji@series{#1}}
-\fi
+\else% >=2021-05-01
+  \DeclareRobustCommand\romanseries[1]{\@forced@seriesfalse
+      \expandafter\def\expandafter\delayed@f@adjustment\expandafter
+          {\delayed@f@adjustment\delayed@merge@font@series{#1}}}
+  \DeclareRobustCommand\kanjiseries[1]{\@forced@seriesfalse
+      \expandafter\def\expandafter\delayed@k@adjustment\expandafter
+          {\delayed@k@adjustment\delayed@merge@kanji@series{#1}}}
+  \DeclareRobustCommand\fontseries[1]{\kanjiseries{#1}\romanseries{#1}}
+  \DeclareRobustCommand\romanseriesforce[1]{\@forced@seriestrue
+      \expandafter\def\expandafter\delayed@f@adjustment\expandafter
+          {\delayed@f@adjustment\edef\f@series{#1}}}
+  \DeclareRobustCommand\kanjiseriesforce[1]{\@forced@seriestrue
+      \expandafter\def\expandafter\delayed@k@adjustment\expandafter
+          {\delayed@k@adjustment\edef\k@series{#1}}}
+  \DeclareRobustCommand\fontseriesforce[1]{\kanjiseriesforce{#1}\romanseriesforce{#1}}%
+  \let\delayed@k@adjustment\@empty
+\fi\fi
 \DeclareRobustCommand\romanshape[1]{\merge@font@shape{#1}}
 \DeclareRobustCommand\kanjishape[1]{\merge@kanji@shape{#1}}
 \DeclareRobustCommand\fontshape[1]{%