OSDN Git Service

Use everysel package for patching \selectfont.
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 8 May 2014 09:05:33 +0000 (18:05 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 8 May 2014 09:05:33 +0000 (18:05 +0900)
(Backport of commit ad5ab423)

src/patches/lltjfont.sty

index 2933844..17a690e 100644 (file)
@@ -1,6 +1,6 @@
 %
 % lltjfont.sty: derived from plfonts.dtx in pLaTeX.
-% 
+%
 
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{lltjfont}[2014/01/23 Patch to NFSS2 for LuaTeX-ja]
       \else
         %\directlua{luatexja.jfont.is_ktenc('\luatexluaescapestring{#2}')}\ifin@%
         %  \usekanji{#2}{#3}{#4}{#5}%
-        %  \let\font\tfont
+        %  \global\let#1\gettfont
         %\else
           \useroman{#2}{#3}{#4}{#5}%
           \global\expandafter\let\expandafter#1\the\font
   }
 \def\DLMfontsw@standard#1#2#3{#1{#2{#3}}}
 \def\reDeclareMathAlphabet#1#2#3{%
-  \ifdefined#2 
+  \ifdefined#2
     \@temptokena\expandafter{#2}%
   \else
     \@temptokena{#2}%
 }
 \newif\if@knjcmd
 \def\userelfont{\@knjcmdtrue}
-\DeclareRobustCommand\selectfont{%
+
+
+\RequirePackage{everysel}
+\@EverySelectfont@Init
+\def\ltj@selectfont@patch{%
   \let\tmp@error@fontshape\error@fontshape
   \let\error@fontshape\error@kfontshape
   \directlua{luatexja.jfont.is_kyenc('\luatexluaescapestring{\k@encoding}')}\ifin@%
       \@latex@error{KANJI Encoding scheme `\k@encoding' unknown}\@eha
     %\fi
   \fi
+%
   \let\k@encoding\cy@encoding
   \xdef\font@name{\csname\curr@kfontshape/\f@size\endcsname}%
   \pickup@jfont
   \font@name
+  \ltj@@does@alt@set{\curr@kfontshape}%
+    % alt fonts の定義
+    \directlua{luatexja.jfont.output_alt_font_cmd('\luatexluaescapestring{\curr@kfontshape}')}%
+    % 定義した alt fonts のデータを \ltjdeclarealtfont に渡すのと同等の処理をする
+    \directlua{luatexja.jfont.pickup_alt_font_a('\f@size')}%
+  \fi
+%
   \edef\tmp@item{{\k@encoding}}\expandafter\def\expandafter\k@encoding\tmp@item
   \kenc@update
   \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
+         \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
+       \csname rel@\k@encoding/\k@family/\k@series/\k@shape\endcsname\selectfont
+       % 警告: 再び \selectfont を呼んでいる.無限ループの可能性あり
     \fi
   \fi
-  \xdef\font@name{\csname\curr@fontshape/\f@size\endcsname}%
-  \pickup@font
-  \font@name
-  \enc@update
-  \ifx\f@linespread\baselinestretch \else
-    \set@fontsize\baselinestretch\f@size\f@baselineskip
-  \fi
-  \size@update
-% ここからは altfont 用
-  \ltj@@does@alt@set{\curr@kfontshape}%
-    % alt fonts の定義
-    \directlua{luatexja.jfont.output_alt_font_cmd('\luatexluaescapestring{\curr@kfontshape}')}%
-    % 定義した alt fonts のデータを \ltjdeclarealtfont に渡すのと同等の処理をする
-    \directlua{luatexja.jfont.pickup_alt_font_a('\f@size')}%
-  \fi
 }
+\EverySelectfont{\ltj@selectfont@patch}
+\def\@EverySelectfont@Init{\let\@EverySelectfont@Init\undefined}
+
 \def\KanjiEncodingPair#1#2{\@namedef{t@enc@#1}{#2}\@namedef{y@enc@#2}{#1}}
 \KanjiEncodingPair{JY3}{JT3}
 \def\set@fontsize#1#2#3{%
     \chs\cwd
     \cHT\cht \advance\cHT\cdp
   % \iftdir
-  %   \setbox\adjust@box\hbox{\tbaselineshift\z@ M}%
+  %   \setbox0\hbox{\tate\ltjsetparameter{tjabaselineshift=\z@}あ}%
+  %   \setbox\adjust@box\hbox{\tate\ltjsetparameter{talbaselineshift=\z@}M}%
   %   \adjust@dimen\ht\adjust@box
   %   \advance\adjust@dimen\dp\adjust@box
-  %   \advance\adjust@dimen-\cHT
+  %   \advance\adjust@dimen-\ht0
   %   \divide\adjust@dimen\tw@
-  %   \advance\adjust@dimen\cdp
+  %   \advance\adjust@dimen0.5\dp0
   %   \advance\adjust@dimen-\dp\adjust@box
-  %   \tbaselineshift\adjust@dimen
+  %   \ltjsetparameter{talbaselineshift=\adjust@dimen}
   % \fi
   }
 \DeclareRobustCommand\romanencoding[1]{%
     \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, 
+    \the\ltj@tempcnta,\the\ltj@tempcntb,
     '\luatexluaescapestring{\ltj@temp@afont}',
     '\luatexluaescapestring{\ltj@temp@bfont}')}%
   }