+%%%%%% Alternate Japanese Fonts
+%%%% \DeclareAlternateKanjiFont<Benc><Bfam><Bser><Bshape><Aenc><Afam><Aser><Ashape><range>
+% いつも global
+\def\DeclareAlternateKanjiFont#1#2#3#4#5#6#7#8#9{%
+ \edef\@temp{#9}%
+ \ifx\@temp\@empty\else
+ {\def\ltj@temp@bfont{#1/#2/#3/#4}\def\ltj@temp@afont{#5/#6/#7/#8}%
+ \expandafter\ltj@@altfont@latex#9,,}\ignorespaces
+ \fi}
+\def\ltj@@altfont@latex#1,{\def\ltj@temp{#1}%
+ \ifx\ltj@temp\empty\let\@next=\relax\else
+ \ltj@@altfont@latexA{#1}\let\@next=\ltj@@altfont@latex\fi\@next}
+\def\ltj@@altfont@latexA#1{\ltj@@altfont@latexB#1--\@nil}
+\def\ltj@@altfont@latexB#1-#2-#3\@nil{\def\ltj@temp{#3}%
+ \ifx\ltj@temp\empty
+ \ltj@tempcnta=#1\relax\ltj@tempcntb=\ltj@tempcnta
+ \else
+ \def\ltj@temp{#1}%
+ \ifx\ltj@temp\empty\ltj@tempcnta='200\else\ltj@tempcnta=#1\fi\relax
+ \def\ltj@temp{#2}%
+ \ifx\ltj@temp\empty\ltj@tempcntb="10FFFF\else\ltj@tempcntb=#2\fi\relax%"
+ \fi
+ \directlua{luatexja.jfont.set_alt_font_latex(
+ \the\ltj@tempcnta,\the\ltj@tempcntb,
+ '\luatexluaescapestring{\ltj@temp@afont}',
+ '\luatexluaescapestring{\ltj@temp@bfont}')}%
+ }
+
+%%%% \ClearAlternateKanjiFont<Benc><Bfam><Bser><Bshape>
+% いつも global
+\def\ClearAlternateKanjiFont#1#2#3#4{%
+ \directlua{luatexja.jfont.clear_alt_font_latex('\luatexluaescapestring{#1/#2/#3/#4}')}}
+
+\def\ltj@pickup@altfont@auxy#1{%
+ \begingroup\edef\font@name{\csname #1/\f@size\endcsname}\pickup@jfont\endgroup%
+}
+\def\ltj@pickup@altfont@auxt#1{%
+ \begingroup\edef\font@name{\csname #1/\f@size\endcsname}\pickup@tfont\endgroup%
+}
+\def\ltj@pickup@altfont@copy#1#2{%
+ \ltj@@getjfontnumber#1%
+ \directlua{luatexja.jfont.pickup_alt_font_b(\the\ltj@tempcntc,'\luatexluaescapestring{#2}')}%
+}
+
+\def\ltj@@does@alt@set#1{%
+ \directlua{luatexja.jfont.does_alt_set'\luatexluaescapestring{#1}'}}
+
+%%%% patch \@text@composite because of {y,t}albaselineshift
+\def\@text@composite#1#2#3#{%
+ \begingroup
+ \setbox\z@=\hbox\bgroup%
+ \ltj@yablshift\z@\ltj@tablshift\z@
+ \expandafter\@text@composite@x
+ \csname\string#1-\string#2\endcsname}
+\def\@text@composite@x#1#2{%
+ \ifx#1\relax
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi
+ #1{#2}\egroup
+ \leavevmode
+ \expandafter\lower
+ \ifnum\ltjgetparameter{direction}=3
+ \ltjgetparameter{talbaselineshift}
+ \else\ifmmode
+ \z@
+ \else
+ \ltjgetparameter{yalbaselineshift}
+ \fi\fi
+ \box\z@
+ \endgroup}
+