OSDN Git Service

forgot to supply %
[luatex-ja/luatexja.git] / src / patches / lltjfont.sty
index a218bbe..a1ab6b4 100644 (file)
@@ -3,7 +3,7 @@
 %
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjfont}[2020-04-01 Patch to NFSS2 for LuaTeX-ja]
+\ProvidesPackage{lltjfont}[2020-09-30 Patch to NFSS2 for LuaTeX-ja]
 
 %% patching \DeclareTextComposite
 \def\ltj@chardef@text@cmd#1{%
@@ -91,6 +91,9 @@
 \newluafunction\ltj@@is@kyenc@@inner
 \newluafunction\ltj@@is@ktenc@@inner
 \newluafunction\ltj@@is@kenc@@inner
+\newluafunction\ltj@@is@ffam@@inner
+\newluafunction\ltj@@add@ffam@@inner
+\newluafunction\ltj@@add@kfam@@inner
 \directlua{%
   local lf = lua.get_functions_table()
   lf[\the\ltj@@add@fenc@@inner]  = luatexja.jfont.add_fenc_list
   lf[\the\ltj@@is@kyenc@@inner]  = luatexja.jfont.is_kyenc
   lf[\the\ltj@@is@ktenc@@inner]  = luatexja.jfont.is_ktenc
   lf[\the\ltj@@is@kenc@@inner]   = luatexja.jfont.is_kenc
+  lf[\the\ltj@@is@ffam@@inner]   = luatexja.jfont.is_ffam
+  lf[\the\ltj@@add@ffam@@inner]  = luatexja.jfont.add_ffam
+  lf[\the\ltj@@add@kfam@@inner]  = luatexja.jfont.add_kfam
 }
 \luadef\ltj@@add@fenc \ltj@@add@fenc@@inner
 \luadef\ltj@@add@kyenc\ltj@@add@kyenc@@inner
 \luadef\ltj@@is@kyenc \ltj@@is@kyenc@@inner
 \luadef\ltj@@is@ktenc \ltj@@is@ktenc@@inner
 \luadef\ltj@@is@kenc  \ltj@@is@kenc@@inner
+\luadef\ltj@@is@ffam  \ltj@@is@ffam@@inner
+\luadef\ltj@@add@ffam \ltj@@add@ffam@@inner
+\luadef\ltj@@add@kfam \ltj@@add@kfam@@inner
 
 {\def\cdp@elt#1#2#3#4{\ltj@@add@fenc{#1}}\cdp@list}
 
               \@empty
             \else \reserved@a
             \fi
-     \directlua{luatexja.jfont.add_ffam('\luatexluaescapestring{#2}')}%
+     \ltj@@add@ffam{#2}%
     }%
 }
 \def\DeclareKanjiFamily#1#2#3{%
               \@empty
             \else \reserved@a
             \fi
-     \directlua{luatexja.jfont.add_kfam('\luatexluaescapestring{#2}')}%
+     \ltj@@add@kfam{#2}%
      }%
 }
 \def\DeclareKanjiSubstitution#1#2#3#4{%
       \every@math@size{}%
       \fontsize{#6}\z@
       \ltj@@is@kyenc{#2}\ifin@%
-           \ltjselectfont@force@definetrue
+            \ltjselectfont@force@definetrue
         \usekanji{#2}{#3}{#4}{#5}%
         \global\let#1\getjfont
-           \ltjselectfont@force@definefalse
+            \ltjselectfont@force@definefalse
       \else
         \ltj@@is@ktenc{#2}\ifin@%
-             \ltjselectfont@force@definetrue
+              \ltjselectfont@force@definetrue
           \usekanji{#2}{#3}{#4}{#5}%
           \global\let#1\gettfont
-             \ltjselectfont@force@definefalse
+              \ltjselectfont@force@definefalse
         \else
           \useroman{#2}{#3}{#4}{#5}%
           \global\expandafter\let\expandafter#1\the\font
   \xdef\font@name{\csname\curr@kfontshape/\f@size\endcsname}%
   \pickup@jfont
   \unless\ifnum\ltjgetparameter{direction}=3 \font@name
-        \ltj@@does@alt@set{\curr@kfontshape}{%
+         \ltj@@does@alt@set{\curr@kfontshape}{%
       % alt fonts の定義
       \directlua{luatexja.jfont.output_alt_font_cmd('y', '\luatexluaescapestring{\curr@kfontshape}')}%
       % 定義した alt fonts のデータを \ltjdeclarealtfont に渡すのと同等の処理をする
     }%
   \fi}
 \def\ltj@selectfont@patch{%
-  \directlua{luatexja.base.start_time_measure('selectfont')}%
+  \ltj@@start@time@measure{selectfont}%
   \let\tmp@error@fontshape\error@fontshape
   \let\error@fontshape\error@kfontshape
   \ltj@@is@kyenc{\k@encoding}\ifin@%
     \fi
   \fi
   \global\let\font@name=\ltj@afont@name
-  \directlua{luatexja.base.stop_time_measure('selectfont')}%
+  \ltj@@stop@time@measure{selectfont}%
 }
 \EverySelectfont{\ltj@selectfont@patch}
 
 \bgroup
   \def\ltj@@dir@patch#1#2#3{%
     \global\csletcs{ltj@@orig@#1}{#1}%
-       \protected\expandafter\xdef\csname #1\endcsname{%
-         \csname ltj@@orig@#1\endcsname
-      \unexpanded{\ifnum#3<\z@\let\ltj@@protect\protect\set@typeset@protect}%
-      \unexpanded{\global\let\ltj@afont@name=\font@name}%
-         \expandonce{\csname ltj@selectfont@#2\endcsname}%
-      \unexpanded{\global\let\font@name=\ltj@afont@name}%
-      \unexpanded{\let\protect\ltj@@protect\fi}%
-       }%
-  }
+      \protected\expandafter\xdef\csname #1\endcsname{%
+        \csname ltj@@orig@#1\endcsname
+        \unexpanded{\ifnum#3<\z@\let\ltj@@protect\protect\set@typeset@protect}%
+        \unexpanded{\global\let\ltj@afont@name=\font@name}%
+        \expandonce{\csname ltj@selectfont@#2\endcsname}%
+        \unexpanded{\global\let\font@name=\ltj@afont@name}%
+        \unexpanded{\let\protect\ltj@@protect\fi}%
+      }%
+    }
   \ltj@@dir@patch{yoko}{yoko}{\ltj@curjfnt}
   \ltj@@dir@patch{tate}{tate}{\ltj@curtfnt}
   \ltj@@dir@patch{utod}{yoko}{\ltj@curjfnt}
   \ltj@@dir@patch{dtou}{yoko}{\ltj@curjfnt}
+  \global\let\ltj@@box@dirhook@orig=\ltj@@box@dirhook
+  \gdef\ltj@@box@dirhook{%
+     \ltj@@box@dirhook@orig
+     \ifnum\ltjgetparameter{direction}=11
+       \ifnum\ltj@curjfnt<\z@
+         \let\ltj@@protect\protect\set@typeset@protect
+         \global\let\ltj@afont@name=\font@name
+         \ltj@selectfont@yoko
+         \global\let\font@name=\ltj@afont@name
+         \let\protect\ltj@@protect
+       \fi
+     \fi
+  }
 \egroup
 
 \def\KanjiEncodingPair#1#2{\@namedef{t@enc@#1}{#2}\@namedef{y@enc@#2}{#1}}
 \DeclareRobustCommand\kanjifamily[1]{\edef\k@family{#1}}
 \DeclareRobustCommand\fontfamily[1]{%
   \@notkfamfalse\@notffamfalse
-  \edef\tmp@item{'\luatexluaescapestring{#1}'}%
   %
-  \directlua{luatexja.jfont.search_kfam(\tmp@item, \@ltj@use@fd)}%
+  \directlua{luatexja.jfont.search_kfam()}{#1}{\@ltj@use@fd}%
   \ifin@\edef\k@family{#1}\else\@notkfamtrue\fi
   %
   % alphabetic fonts part
-  \directlua{luatexja.jfont.is_ffam(\tmp@item)}%
+  \ltj@@is@ffam{#1}%
   \ifin@\edef\f@family{#1}\else
     % checking is_stored_ffam is not sufficient,
     % since LuaTeX-ja doesn't know whats fonts are defined before LuaTeX-ja is loaded.
     \ifcsname \f@encoding+#1\endcsname % easy case
-      \directlua{luatexja.jfont.add_ffam(\tmp@item)}\edef\f@family{#1}%
+      \ltj@@add@ffam{#1}\edef\f@family{#1}%
     \else
       \@tempswafalse
-      \def\cdp@elt##1{\ifcsname ##1+#1\endcsname\@tempswatrue\fi}%
-      \directlua{luatexja.jfont.search_ffam_declared()}%
+      \def\cdp@elt##1{\ifcsname ##1+#1\endcsname%
+        \@tempswatrue\def\cdp@elt####1\relax{}%
+      \fi}%
+      \directlua{luatexja.jfont.search_ffam_declared()}\relax%
       \if@tempswz
-        \directlua{luatexja.jfont.add_ffam(\tmp@item)}\edef\f@family{#1}%
+        \ltj@@add@ffam{#1}\edef\f@family{#1}%
       \else
         % now we search Nffam_list and font definition files.
-        \directlua{luatexja.jfont.search_ffam_fd(\tmp@item)}%
+        \directlua{luatexja.jfont.search_ffam_fd()}{#1}%
         \ifin@\edef\f@family{#1}\else\@notffamtrue\fi
       \fi
     \fi
 }
 
 \newcount\ltj@@latex@plv \ltj@@latex@plv=-1
-\ifdefined\@rmfamilyhook
-%%%% LaTeX 2020-02-02
-\newif\if@shape@roman@kanji
-%%%%%% 2020-02-02 patchlevel detection
-\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
+\ifltj@ltfilehook@avail % 2020-10-01
+  \ltj@@latex@plv=1000
+\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
+\newif\if@shape@roman@kanji
 
 \def\merge@kanji@series#1{%
   \expandafter\expandafter\expandafter
   }
 \else % !!! pl 3, 4
   \def\set@target@series@kanji#1{%
-      \edef\k@series{#1}%
-         \edef\k@series{\expandafter\series@drop@one@m\k@series mm\series@drop@one@m}%
+    \edef\k@series{#1}%
+    \edef\k@series{\expandafter\series@drop@one@m\k@series mm\series@drop@one@m}%
   }
 \fi\fi
 
     \set@target@series@kanji{#2}%
   \else
     \begingroup\let\f@encoding\k@encoding\let\f@family\k@family
-          \maybe@load@fontshape\endgroup
+    \maybe@load@fontshape\endgroup
     \edef\reserved@a{\k@encoding /\k@family /#1/\k@shape}%
      \ifcsname \reserved@a \endcsname
        \set@target@series@kanji{#1}%
     \fi
   \else
     \begingroup\let\f@encoding\k@encoding\let\f@family\k@family
-          \maybe@load@fontshape\endgroup
+           \maybe@load@fontshape\endgroup
     \edef\reserved@a{\k@encoding /\k@family /\k@series/#1}%
      \ifcsname \reserved@a\endcsname
        \edef\k@shape{#1}%
     \fi
   \fi
 }
-\def\set@safe@kanji@shape#1#2{%
-  \edef\reserved@b{\k@encoding /\k@family /\k@series/#1}%
-  \ifcsname \reserved@b\endcsname
-    \edef\k@shape{#1}%
-    #2%
-  \else
-    \@kanji@shape@nochange@info{\reserved@b}%
-  \fi
-}
-\def\@kanji@shape@nochange@info#1{%
-    \@font@info{Kanji font shape `#1' undefined\MessageBreak
-                No change}%
-}
 \ifnum\ltj@@latex@plv=300 % !!! pl3, 4
   \DeclareRobustCommand\romanseries[1]{\merge@font@series{#1}}
   \DeclareRobustCommand\kanjiseries[1]{\merge@kanji@series{#1}}
 \DeclareRobustCommand\useroman[4]{%
     \romanencoding{#1}\edef\f@family{#2}\edef\f@series{#3}\edef\f@shape{#4}%
     \selectfont\ignorespaces}
-%%%% LaTeX 2020-02-02 END
+%%%% LaTeX >= 2020-02-02 END
 \else
 %%%% LaTeX 2019-10-01
 \DeclareRobustCommand\romanseries[1]{\edef\f@series{#1}}
 \DeclareRobustCommand\fontseries[1]{\kanjiseries{#1}\romanseries{#1}}
 \DeclareRobustCommand\romanshape[1]{\edef\f@shape{#1}}
 \DeclareRobustCommand\kanjishape[1]{\edef\k@shape{#1}}
-\DeclareRobustCommand\fontshape[1]{\kanjishape{#1}\romanshape{#1}}
+\DeclareRobustCommand\fontshape[1]{\set@safe@kanji@shape{#1}{}\romanshape{#1}}
 \DeclareRobustCommand\usekanji[4]{%
     \kanjiencoding{#1}\kanjifamily{#2}\kanjiseries{#3}\kanjishape{#4}%
     \selectfont\ignorespaces}
 %%%% LaTeX 2019-10-01 END
 \fi
 %%%%
+
+\def\set@safe@kanji@shape#1#2{%
+  \edef\reserved@b{\k@encoding /\k@family /\k@series/#1}%
+  \ifcsname \reserved@b\endcsname
+    \edef\k@shape{#1}%
+    #2%
+  \else
+    \@kanji@shape@nochange@info{\reserved@b}%
+  \fi
+}
+\def\@kanji@shape@nochange@info#1{%
+    \@font@info{Kanji font shape `#1' undefined\MessageBreak
+                No change}%
+}
+
 \protected\def\usefont#1#2#3#4{%
   \ltj@@is@kenc{#1}\ifin@\usekanji{#1}{#2}{#3}{#4}%
   \else\useroman{#1}{#2}{#3}{#4}%
   \fi}
-\DeclareRobustCommand\normalfont{%
-    \useroman\encodingdefault\familydefault\seriesdefault\shapedefault
-    \usekanji\kanjiencodingdefault\kanjifamilydefault\kanjiseriesdefault\kanjishapedefault}
-\let\reset@font\normalfont
 
-\ifdefined\@rmfamilyhook
-%%%% LaTeX 2020-02-02
+\ifnum 0\ifltj@ltfilehook@avail1\fi\ifdefined\@rmfamilyhook1\fi>0
+%%%% LaTeX >= 2020-02-02
 \let\prepare@family@series@update@kanji=\prepare@family@series@update
 \patchcmd\prepare@family@series@update{\fontfamily}{\romanfamily}{}{}
 \patchcmd\prepare@family@series@update@kanji{\fontfamily}{\kanjifamily}{}{}
 \patchcmd\update@series@target@value@kanji{\f@series}{\k@series}{}{}
 \def\@meta@family@list@kanji{\@elt{mc}\@elt{gt}\@elt{jtt}}
 
-\expandafter\patchcmd\csname bfseries \endcsname{%
-  \let\bfseries@rm\bfdef@ult
-  \let\bfseries@sf\bfdef@ult
-  \let\bfseries@tt\bfdef@ult
+\def\@ltj@hook@series@default#1#2#3{%
+  \ifltj@ltfilehook@avail % 2020-10-01
+    \AddToHook{#1/defaults}{#2}%
+  \else\ifcsname @set#1defaultshook\endcsname %after 2020-04-07
+    \expandafter\g@addto@macro\csname @set#1defaultshook\endcsname{#2}%
+  \else % 2020-02-02
+    \expandafter\patchcmd\csname #1 \endcsname{#3}{#3#2}{}{}%
+  \fi\fi
+}
+\@ltj@hook@series@default{bfseries}{%
+  \let\bfseries@mc\bfdef@ult
+  \let\bfseries@gt\bfdef@ult
+  \let\bfseries@jtt\bfdef@ult
 }{%
   \let\bfseries@rm\bfdef@ult
   \let\bfseries@sf\bfdef@ult
   \let\bfseries@tt\bfdef@ult
-  \let\bfseries@mc\bfdef@ult
-  \let\bfseries@gt\bfdef@ult
-  \let\bfseries@jtt\bfdef@ult
-}{}{}
-\expandafter\patchcmd\csname mdseries \endcsname{%
-  \let\mdseries@rm\mddef@ult
-  \let\mdseries@sf\mddef@ult
-  \let\mdseries@tt\mddef@ult
+}
+\@ltj@hook@series@default{mdseries}{%
+  \let\mdseries@mc\mddef@ult
+  \let\mdseries@gt\mddef@ult
+  \let\mdseries@jtt\mddef@ult
 }{%
   \let\mdseries@rm\mddef@ult
   \let\mdseries@sf\mddef@ult
   \let\mdseries@tt\mddef@ult
-  \let\mdseries@mc\mddef@ult
-  \let\mdseries@gt\mddef@ult
-  \let\mdseries@jtt\mddef@ult
+}
+\let\@ltj@hook@series@default\@undefined
+
+\expandafter\patchcmd\csname bfseries \endcsname{%
+  \ifx\f@family\rmdef@ult      \fontseries\bfseries@rm
+  \else\ifx\f@family\sfdef@ult \fontseries\bfseries@sf
+  \else\ifx\f@family\ttdef@ult \fontseries\bfseries@tt
+  \else                        \fontseries\bfdefault
+  \fi\fi\fi
+}{%
+  \ifx\f@family\rmdef@ult      \romanseries\bfseries@rm
+  \else\ifx\f@family\sfdef@ult \romanseries\bfseries@sf
+  \else\ifx\f@family\ttdef@ult \romanseries\bfseries@tt
+  \else                        \romanseries\bfdefault
+  \fi\fi\fi
 }{}{}
-\expandafter\patchcmd\csname bfseries \endcsname{\selectfont}%
-{%
+\expandafter\patchcmd\csname mdseries \endcsname{%
+  \ifx\f@family\rmdef@ult      \fontseries\mdseries@rm
+  \else\ifx\f@family\sfdef@ult \fontseries\mdseries@sf
+  \else\ifx\f@family\ttdef@ult \fontseries\mdseries@tt
+  \else                        \fontseries\mddefault
+  \fi\fi\fi
+}{%
+  \ifx\f@family\rmdef@ult      \romanseries\mdseries@rm
+  \else\ifx\f@family\sfdef@ult \romanseries\mdseries@sf
+  \else\ifx\f@family\ttdef@ult \romanseries\mdseries@tt
+  \else                        \romanseries\mddefault
+  \fi\fi\fi
+}{}{}
+
+\def\@ltj@hook@series#1#2{%
+  \ifltj@ltfilehook@avail % 2020-10-01
+    \AddToHook{#1}{#2}%
+  \else % 2020-02-02
+    \expandafter\patchcmd\csname #1 \endcsname{\selectfont}{#2\selectfont}{}{}%
+  \fi
+}
+\@ltj@hook@series{bfseries}{%
   \ifx\k@family\mcdef@ult      \kanjiseries\bfseries@mc
   \else\ifx\k@family\gtdef@ult \kanjiseries\bfseries@gt
   \else\ifx\k@family\jttdef@ult\kanjiseries\bfseries@jtt
   \else                        \kanjiseries\bfdefault
   \fi\fi\fi
-  \selectfont
-}{}{}
-\expandafter\patchcmd\csname mdseries \endcsname{\selectfont}%
-{%
+}
+\@ltj@hook@series{mdseries}{%
   \ifx\k@family\mcdef@ult      \kanjiseries\mdseries@mc
   \else\ifx\k@family\gtdef@ult \kanjiseries\mdseries@gt
   \else\ifx\k@family\jttdef@ult\kanjiseries\mdseries@jtt
   \else                        \kanjiseries\mddefault
   \fi\fi\fi
-  \selectfont
-}{}{}
-\appto\expand@font@defaults{%
+}
+\let\@ltj@hook@series\@undefined
+
+\def\@ltj@hook@efd#1#2{%
+  \ifltj@ltfilehook@avail % 2020-10-01
+    \AddToHook{expand@font@defaults}{#1}%
+  \else\ifdefined\@expandfontdefaultshook %after 2020-04-07
+    \g@addto@macro\@expandfontdefaultshook{#1#2}%
+  \else % 2020-02-02
+    \appto\expand@font@defaults{#1#2}%
+  \fi\fi
+}
+\@ltj@hook@efd{%
   \edef\mcdef@ult{\mcdefault}%
   \edef\gtdef@ult{\gtdefault}%
   \edef\jttdef@ult{\jttdefault}%
-  \edef\kanjidef@ult{\kanjifamilydefault}%
+}{\edef\kanjidef@ult{\kanjifamilydefault}}
+\let\@ltj@hook@efd\@undefined
+
+\ifltj@ltfilehook@avail % 2020-10-01
+  \appto\init@series@setup{%
+    \ifx\kanjiseriesdefault\kanjiseriesdefault@kernel
+      \mdseries
+      \let\kanjiseriesdefault\k@series
+    \fi
+  }
+\else
+  \appto\init@series@setup{%
+    \ifx\kanjidef@ult\mcdef@ult      \mcfamily
+    \else\ifx\kanjidef@ult\gtdef@ult \gtfamily
+    \else\ifx\kanjidef@ult\jttdef@ult \jttfamily
+    \fi\fi\fi
+  }
+\fi
+
+\def\@ltj@hook@dfh#1{%
+  \ifltj@ltfilehook@avail % 2020-10-01
+    \AddToHook{normalfont}{#1}%
+  \else\ifdefined\@defaultfamilyhook
+    \g@addto@macro\@defaultfamilyhook{#1}%
+  \else % 2020-02-02
+    \expandafter\patchcmd\csname normalfont \endcsname{\selectfont}{#1\selectfont}{}{}%
+    \let\reset@font\normalfont
+  \fi\fi
 }
-\appto\init@series@setup{%
-  \ifx\kanjidef@ult\mcdef@ult      \mcfamily
-  \else\ifx\kanjidef@ult\gtdef@ult \gtfamily
-  \else\ifx\kanjidef@ult\jttdef@ult \jttfamily
-  \fi\fi\fi
+\@ltj@hook@dfh{%
+  \kanjiencoding{\kanjiencodingdefault}%
+  \edef\k@family{\kanjifamilydefault}%
+  \edef\k@series{\kanjiseriesdefault}%
+  \edef\k@shape{\kanjishapedefault}%
 }
+\let\@ltj@hook@dfh\@undefined
+%%%% LaTeX >= 2020-02-02 END
+\else
+%%%% LaTeX 2019-10-01
+\DeclareRobustCommand\normalfont{%
+    \useroman\encodingdefault\familydefault\seriesdefault\shapedefault
+    \usekanji\kanjiencodingdefault\kanjifamilydefault\kanjiseriesdefault\kanjishapedefault}
+\let\reset@font\normalfont
+%%%% LaTeX 2019-10-01 END
 \fi
+
+
+
 \ifdefined\prepare@family@series@update@kanji\else
 %%%% LaTeX 2019-10-01
 \def\prepare@family@series@update@kanji#1{\kanjifamily}
   \selectfont}
 
 
-
 \let\romanprocess@table\process@table
 \def\kanjiprocess@table{%
-  \kanjiencoding{\kanjiencodingdefault}%
-  \kanjifamily{\kanjifamilydefault}%
-  \kanjiseries{\kanjiseriesdefault}%
-  \kanjishape{\kanjishapedefault}%
+  \kanjiencoding\kanjiencodingdefault%
+  \edef\k@family{\kanjifamilydefault}%
+  \edef\k@series{\kanjiseriesdefault}%
+  \edef\k@shape{\kanjishapedefault}%
 }
 \def\process@table{%
   \romanprocess@table
 \let\extract@afont\extract@font
 \def\pickup@jfont{%
   \ifnum
-       \unless\ifnum\ltjgetparameter{direction}=3 1\else
-           \ifltjselectfont@force@define 1\else 0\fi\fi =1 %
+    \unless\ifnum\ltjgetparameter{direction}=3 1\else
+    \ifltjselectfont@force@define 1\else 0\fi\fi =1 %
     \expandafter \ifx \font@name \relax
        \let\extract@font\extract@jfont
        \define@newfont
     \fi
     \let\getjfont\font@name
   \else
-       \begingroup\escapechar\m@ne
-       \ifcsname ltj@@fontjfm/\expandafter\string\font@name\endcsname\else
-       \let\extract@font\extract@jfont@onlyjfm
-       \define@newfont
-       \let\extract@font\extract@afont
-       \fi
-       \endgroup
-       \csname ltj@@fontjfm/\expandafter\expandafter\expandafter\@gobble\expandafter\string\font@name\endcsname
+    \begingroup\escapechar\m@ne
+      \ifcsname ltj@@fontjfm/\expandafter\string\font@name\endcsname\else
+        \let\extract@font\extract@jfont@onlyjfm
+        \define@newfont
+        \let\extract@font\extract@afont
+      \fi
+    \endgroup
+    \csname ltj@@fontjfm/\expandafter\expandafter\expandafter\@gobble\expandafter\string\font@name\endcsname
   \fi
 }
 \def\pickup@tfont{%
   \ifnum
-       \ifnum\ltjgetparameter{direction}=3 1\else
-           \ifltjselectfont@force@define 1\else 0\fi\fi =1 %
+    \ifnum\ltjgetparameter{direction}=3 1\else
+    \ifltjselectfont@force@define 1\else 0\fi\fi =1 %
     \expandafter \ifx \font@name \relax
        \let\extract@font\extract@tfont
        \define@newfont
     \fi
     \let\gettfont\font@name
   \else
-       \begingroup\escapechar\m@ne
-       \ifcsname ltj@@fontjfm/\expandafter\string\font@name\endcsname\else
-       \let\extract@font\extract@tfont@onlyjfm
-       \define@newfont
-       \let\extract@font\extract@afont
-       \fi
-       \endgroup
-       \csname ltj@@fontjfm/\expandafter\expandafter\expandafter\@gobble\expandafter\string\font@name\endcsname
+    \begingroup\escapechar\m@ne
+      \ifcsname ltj@@fontjfm/\expandafter\string\font@name\endcsname\else
+        \let\extract@font\extract@tfont@onlyjfm
+        \define@newfont
+        \let\extract@font\extract@afont
+      \fi
+    \endgroup
+    \csname ltj@@fontjfm/\expandafter\expandafter\expandafter\@gobble\expandafter\string\font@name\endcsname
   \fi
 }
 
 % わざと「ゴミをつける」
 \def\ltj@@patch@external@font#1 at{%
   \directlua{
-       local s = '\luatexluaescapestring{#1}'
-       local is_braced, is_quoted
-       if s:sub(1,1)=='{' and s:sub(-1)=='}' then is_braced=true; s=s:sub(2,-2) end
-       if s:sub(1,1)=='"' and s:sub(-1)=='"' then is_quoted=true; s=s:sub(2,-2) end
-       s=s..luatexja.jfont.print_aftl_address()
-       if is_braced then s='{'..s..'}' elseif is_quoted then s='"'..s..'"' end
-       %print(s, is_quoted, is_braced)
+        local s = '\luatexluaescapestring{#1}'
+        local is_braced, is_quoted
+        if s:sub(1,1)=='{' and s:sub(-1)=='}' then is_braced=true; s=s:sub(2,-2) end
+        if s:sub(1,1)=='"' and s:sub(-1)=='"' then is_quoted=true; s=s:sub(2,-2) end
+        s=s..luatexja.jfont.print_aftl_address()
+        if is_braced then s='{'..s..'}' elseif is_quoted then s='"'..s..'"' end
+        %print(s, is_quoted, is_braced)
     tex.sprint(-2, s)}%
   \space at%
 }
 \def\extract@jfont{%
-       \get@external@font
+    \get@external@font
     \ltj@@does@alt@set{\f@encoding/\f@family/\f@series/\f@shape}{%
       \edef\external@font{\expandafter\ltj@@patch@external@font\external@font}%
     }%
     \csname \f@encoding+\f@family\endcsname
     \csname\curr@fontshape\endcsname}
 \def\extract@tfont{%
-       \get@external@font
+    \get@external@font
     \ltj@@does@alt@set{\f@encoding/\f@family/\f@series/\f@shape}{%
       \edef\external@font{\expandafter\ltj@@patch@external@font\external@font}%
     }%
     \expandafter\globaltfont\font@name\external@font\relax\font@name
     \csname \f@encoding+\f@family\endcsname
     \csname\curr@fontshape\endcsname}
+
+\newluafunction\ltj@@jfont@@jfmonly@@inner
+\directlua{%
+  local lf = lua.get_functions_table()
+  lf[\the\ltj@@jfont@@jfmonly@@inner]  = luatexja.jfont.load_jfmonly
+}
+\luadef\ltj@@jfont@@jfmonly  \ltj@@jfont@@jfmonly@@inner
 \def\extract@jfont@onlyjfm{%
-       \get@external@font
-       \csxdef{ltj@@fontjfm/\expandafter\string\font@name}{%
-         \directlua{%
-               luatexja.jfont.load_jfmonly('\luatexluaescapestring{\external@font}', 'yoko')
-         }%
-       }}
+  \get@external@font
+  \csxdef{ltj@@fontjfm/\expandafter\string\font@name}{%
+    \ltj@@jfont@@jfmonly{\external@font}{yoko}%
+}}
 \def\extract@tfont@onlyjfm{%
-       \get@external@font
-       \csxdef{ltj@@fontjfm/\expandafter\string\font@name}{%
-         \directlua{%
-               luatexja.jfont.load_jfmonly('\luatexluaescapestring{\external@font}', 'tate')
-         }%
-       }}
+  \get@external@font
+  \csxdef{ltj@@fontjfm/\expandafter\string\font@name}{%
+    \ltj@@jfont@@jfmonly{\external@font}{tate}%
+}}
 
 \let\ltj@@al@do@subst@correction=\do@subst@correction
 \def\ltj@@ja@do@subst@correction{%
 \def\use@mathgroup#1#2{\relax\ifmmode
   \math@bgroup
     \expandafter\ifx\csname M@\f@encoding\endcsname#1\else
-    #1\fi\ltj@tempcnta=#2 \expandafter\ltj@@mathJapaneseFonts\string#1\relax%
+    #1\fi\ltj@tempcnta=#2
+      \expandafter\ltj@@mathJapaneseFonts\string#1/\relax%
     \ifin@\jfam#2\relax\else\mathgroup#2\relax\fi
   \expandafter\math@egroup\fi}%
 
     \the\ltj@tempcnta,\the\ltj@tempcntb,
     '\luatexluaescapestring{\ltj@temp@afont}',
     '\luatexluaescapestring{\ltj@temp@bfont}')}%
-  }
+}
 
 %%%% \ClearAlternateKanjiFont<Benc><Bfam><Bser><Bshape>
 % いつも global
+\newluafunction\ltj@@does@alt@set@@inner
+\directlua{%
+  local lf = lua.get_functions_table()
+  lf[\the\ltj@@does@alt@set@@inner]  = luatexja.jfont.does_alt_set
+}
+\def\ltj@@does@alt@set#1#2{\luafunction\ltj@@does@alt@set@@inner{#1}{#2}}
 \def\ClearAlternateKanjiFont#1#2#3#4{%
    \directlua{luatexja.jfont.clear_alt_font_latex('\luatexluaescapestring{#1/#2/#3/#4}')}}
 
   \ltj@@getjfontnumber#1%
   \directlua{luatexja.jfont.pickup_alt_font_b(\the\ltj@tempcntc,'\luatexluaescapestring{#2}')}%
 }
-
-\def\ltj@@does@alt@set#1#2{%
-  \directlua{luatexja.jfont.does_alt_set'\luatexluaescapestring{#1}'}{#2}}
-
-%%%% patch \@text@composite because of {y,t}albaselineshift
-
-% %% \pltx@isletter from plfonts.dtx
-% \def\pltx@mark{\pltx@mark@}
-% \let\pltx@scanstop\relax
-% \long\def\pltx@cond#1\fi{%
-%   #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
-% \long\def\pltx@isletter#1{%
-%   \expandafter\pltx@isletter@i#1\pltx@scanstop}
-% \long\def\pltx@isletter@i#1\pltx@scanstop{%
-%   \pltx@cond\ifx\pltx@mark#1\pltx@mark\fi{\@firstoftwo}%
-%     {\pltx@isletter@ii\pltx@scanstop#1\pltx@scanstop{}#1\pltx@mark}}
-% \long\def\pltx@isletter@ii#1\pltx@scanstop#{%
-%   \pltx@cond\ifx\pltx@mark#1\pltx@mark\fi%
-%     {\pltx@isletter@iii}{\pltx@isletter@iv}}
-% \long\def\pltx@isletter@iii#1\pltx@mark{\@secondoftwo}
-% \long\def\pltx@isletter@iv#1#2#3\pltx@mark{%
-%   \pltx@cond\ifx\pltx@mark#3\pltx@mark\fi{%
-%     \pltx@cond{\ifnum0\ifcat A\noexpand#21\fi\ifcat=\noexpand#21\fi>\z@}\fi
-%       {\@firstoftwo}{\@secondoftwo}%
-%   }{\@secondoftwo}}
-%
-% \def\@text@composite@x#1#2{%
-%   \ifx#1\relax
-%     #2%
-%   \else\pltx@isletter{#1}{#1}{%
-%     \begingroup
-%     \setbox\z@\hbox\bgroup%
-%       \ltj@yablshift\z@ \ltj@tablshift\z@
-%       #1%
-%       \@tempcntb\directlua{luatexja.pltx_composite_last_node_char()}%)
-%       \xdef\pltx@composite@temp{\noexpand\@tempcntb=\the\@tempcntb\relax}%
-%       \aftergroup\pltx@composite@temp
-%     \egroup
-%     \ifnum\ltjgetparameter{direction}=3 %
-%       \@tempdima=\ltj@tablshift sp\else\@tempdima=\ltj@yablshift sp\fi
-%     \ifnum\@tempcntb<\z@\@tempcnta\z@\else
-%       \@tempcnta=\ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{\@tempcntb}}\relax
-%       \ifnum\@tempcnta=\z@\@tempdima\z@\fi
-%     \fi
-%     \ifnum\@tempcnta>\z@
-%       \ifodd\ltjgetparameter{alxspmode}{\@tempcntb}\else\leavevmode\hbox{}\fi
-%       \begingroup\mathsurround\z@$%
-%         \hbox{\lower\@tempdima\box\z@}
-%       $\endgroup%
-%       \ifnum\ltjgetparameter{alxspmode}{\@tempcntb}<2\hbox{}\fi
-%     \else
-%       \ifdim\@tempdima=\z@{\ltj@yablshift\z@ \ltj@tablshift\z@#1}%
-%       \else\lower\@tempdima\box\z@\fi
-%     \fi
-%     \endgroup}%
-%   \fi
-% }
-
 \endinput