OSDN Git Service

Bugfix of the previous commit.
[luatex-ja/luatexja.git] / src / luatexja-core.sty
index ecde410..b0233cc 100644 (file)
 \newcount\ltj@tempcntc
 \newdimen\ltj@tempdima
 \newskip\ltj@tempskipa
+\newtoks\ltj@temptoks
 
 \newdimen\ltj@zw
 \newdimen\ltj@zh
 \newdimen\jQ \jQ=0.25mm
-\newdimen\jH \jH=0.25mm
+\let\jH=\jQ
 
 %%%%%%%% error message
 \def\ltj@defnum{0}
   \advance\ltj@tempcnta by1
 \repeat
 
+
 %%%%%%%% \asluastring
 \def\asluastring#1{'\luaescapestring{\detokenize{#1}}'}
 
 %%%%%%%% Redefine \/
-%\let\ltj@ic=\/ \protected\def\/{{\ltj@icflag=1\ltj@ic}}
-\protected\def\/{\directlua{luatexja.jfont.append_italic()}}
+\protected\def\/{\relax\directlua{luatexja.jfont.append_italic()}}
 
 %%%%%%%% \jfont\CS={...:...;jfm=metric;...}, \globaljfont
 \protected\def\jfont{\afterassignment\ltj@@jfont\directlua{luatexja.jfont.jfontdefX(false)}}
   \afterassignment\ltj@@jfont\directlua{luatexja.jfont.jfontdefX(true)}}
 \def\ltj@@jfont{\directlua{luatexja.jfont.jfontdefY()}}
 
+%%%%%%%% \zw, \zh
 \def\zw{\directlua{luatexja.jfont.load_zw()}\ltj@zw}
 \def\zh{\directlua{luatexja.jfont.load_zh()}\ltj@zh}
 
+
 %%%%%%%% \inhibitglue
-\protected\def\inhibitglue{\directlua{luatexja.jfmglue.create_inhibitglue_node()}}
+\protected\def\ltj@reset@globaldefs{%
+  \directlua{ltj.global_temp = tex.globaldefs; tex.globaldefs = 0}}
+\protected\def\ltj@restore@globaldefs{\directlua{tex.globaldefs = ltj.global_temp}}
+\let\new@everypar=\everypar
+\protected\def\inhibitglue{\relax%
+  \ifvmode
+    \ltj@reset@globaldefs
+    \xdef\@@tempa{\the\everypar}%
+    \xdef\@@tempb{\everypar={\@@tempa}\@@tempa\noexpand\ltj@@ihb}%
+    \everypar\expandafter{\@@tempb}%
+    \ltj@restore@globaldefs
+  \else\ifhmode\ltj@@ihb\fi\fi}
+\def\ltj@@ihb{\directlua{luatexja.jfmglue.create_inhibitglue_node()}}
 
 %%%%%%%% \yoko, \tate, \ifydir, \iftdir
 %% At this moment, tategaki mode is not implemented; 
 \define@key[ltj]{japaram}{jascriptscriptfont}{%
   \expandafter\ltj@@set@stackfont#1:{mjss}}
 \def\ltj@@set@stackfont#1,#2:#3{%
-  {\directlua{tex.globaldefs=0}\ltj@curjfnt=-1 #2%
-   \global\ltj@tempcnta=\ltj@curjfnt}%
-  \ifnum\ltj@tempcnta=-1
+  \ltj@reset@globaldefs
+  \ltj@tempcnta=\ltj@curjfnt\ltj@curjfnt=-1 #2%
+  \ifnum\ltj@curjfnt=-1
     \@PackageError{luatexja-core}%
     {\string#2 is not a control sequence that represents \MessageBreak
      a Japanese font}{}%
   \else
     \directlua{luatexja.stack.set_stack_font(ltj.isglobal, \asluastring{#3},
-    \ltj@safe@num@or\ltj@defnum{#1}, \the\ltj@tempcnta)}%
-  \fi}
+    \ltj@safe@num@or\ltj@defnum{#1}, \the\ltj@curjfnt)}%
+  \fi
+  \ltj@curjfnt=\ltj@tempcnta
+  \ltj@restore@globaldefs
+  }
 
 % yalbaselineshift = <dimen>
 % yjabaselineshift = <dimen>
   \ifnum\globaldefs<0\directlua{ltj.isglobal=''}\else\directlua{ltj.isglobal='global'}\fi
   \setkeys[ltj]{japaram}{#1}\ignorespaces}
 
-%%%%%%%% 
+%%%%%%%% \ltjgetparameter
 \def\ltj@@decl@array@param#1{%
   \expandafter\let\csname ltj@@array@param/#1\endcsname=t%
 }
   \directlua{ltj.ext_get_parameter_binary('#1', \ltj@safe@num{#2})}%
 }
 
+%%%%%%%% \ltjalchar<number>, \ltjjachar<number>
+\let\ltj@@origchar=\char
+\protected\def\ltj@alljachar{\relax
+    \csname ltj@kcat0\endcsname=0
+    \csname ltj@kcat1\endcsname=0
+    \csname ltj@kcat2\endcsname=0
+    \csname ltj@kcat3\endcsname=0
+    \csname ltj@kcat4\endcsname=0
+    \csname ltj@kcat5\endcsname=0
+    \csname ltj@kcat6\endcsname=0 }
+\protected\def\ltj@allalchar{\relax
+    \csname ltj@kcat0\endcsname="7FFFFFFF %"
+    \csname ltj@kcat1\endcsname="7FFFFFFF %"
+    \csname ltj@kcat2\endcsname="7FFFFFFF %"
+    \csname ltj@kcat3\endcsname="7FFFFFFF %"
+    \csname ltj@kcat4\endcsname="7FFFFFFF %"
+    \csname ltj@kcat5\endcsname="7FFFFFFF %"
+    \csname ltj@kcat6\endcsname="7FFFFFFF }%"
+
+\protected\def\ltjjachar{\afterassignment\ltj@@kchar\ltj@tempcnta}
+\def\ltj@@kchar{{\directlua{tex.globaldefs = 0}\ltj@alljachar\ltj@@origchar\ltj@tempcnta}}
+\protected\def\ltjalchar{\afterassignment\ltj@@achar\ltj@tempcnta}
+\def\ltj@@achar{{\directlua{tex.globaldefs = 0}\ltj@allalchar\ltj@@origchar\ltj@tempcnta}}
 
 
-%\def\ltj@temp{plain}
-%\ifx\fmtname\ltj@temp
-%  \message{plain format: loading luatexja-plain.tex}
-%\fi
-%\input luatexja-plain.tex
-%\catcode`\@=12
-%\endinput
-%! ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
 
 %%------------------ Load module for the format