OSDN Git Service

Rewrite the main process (inserting JFM glue/kern and \[x]kanjiskip) and so on.
[luatex-ja/luatexja.git] / src / luatexja-core.sty
index 1c1880a..83fd352 100644 (file)
   require('lualibs')
   ltj.loadlua('luatexja-rmlgbm.lua') 
     % For Ryumin-Light and GothicBBB-Medium.
-  ltj.loadlua('luatexja-core.lua')
   ltj.loadlua('luatexja-jfont.lua')
+  ltj.loadlua('luatexja-core.lua')
+  ltj.loadlua('luatexja-xkanji.lua')
   ltj.loadlua('luatexja-core-aux.lua')
-  ltj.ja_lang_number=\the\luatexja@japanese
 }
 
 
 \def\asluastring#1{'\luaescapestring{\detokenize{#1}}'}
 
 %%%%%%%% Redefine \/
-\let\luatexja@ic=\/ \protected\def\/{{\luatexja@icflag=1\luatexja@ic}}
+%\let\luatexja@ic=\/ \protected\def\/{{\luatexja@icflag=1\luatexja@ic}}
+\protected\def\/{\directlua{ltj.ext_append_italic()}}
 
 %%%%%%%% \jfont\CS={...:...;jfm=metric;...}, \gjfont
-\def\jfont{\afterassignment\@jfont\directlua{ltj.jfontdefX('false')}}
-\def\gjfont{\afterassignment\@jfont\directlua{ltj.jfontdefX('true')}}
-\def\@jfont{\directlua{ltj.jfontdefY()}}
+\def\jfont{\afterassignment\ltj@@jfont\directlua{ltj.ext_jfontdefX(false)}}
+\def\gjfont{\afterassignment\ltj@@jfont\directlua{ltj.ext_jfontdefX(true)}}
+\def\ltj@@jfont{\directlua{ltj.ext_jfontdefY()}}
 
 %%%%%%%% \inhibitglue
-\def\inhibitglue{\directlua{ltj.create_ihb_node()}}
+\def\inhibitglue{\directlua{ltj.ext_create_inhibitglue_node()}}
 
-%%%%%%%% \defcharrange<name>{100-200,3000-,5000,...}
-\def\defcharrange#1#2{%
-  \ltj@tempcntc=#1 \expandafter\ltj@dcrange#2,,\ignorespaces}
-\def\ltj@dcrange#1,{\def\ltj@temp{#1}%
+%%%%%%%% \ltjdefcharrange<name>{100-200,3000-,5000,...}
+\def\ltjdefcharrange#1#2{%
+  \luatexja@tempcntc=#1 \expandafter\ltj@@dcrange#2,,\ignorespaces}
+\def\ltj@@dcrange#1,{\def\ltj@temp{#1}%
   \ifx\ltj@temp\empty\let\@next=\relax\else
-  \ltj@@dcrange{#1}\let\@next=\ltj@dcrange\fi\@next}
-\def\ltj@@dcrange#1{\ltj@enexist#1--\@nil}
-\def\ltj@enexist#1-#2-#3\@nil{\def\ltj@temp{#3}%
+  \ltj@@dcrangeA{#1}\let\@next=\ltj@@dcrange\fi\@next}
+\def\ltj@@dcrangeA#1{\ltj@@dcrangeB#1--\@nil}
+\def\ltj@@dcrangeB#1-#2-#3\@nil{\def\ltj@temp{#3}%
   \ifx\ltj@temp\empty
     \luatexja@tempcnta=#1 \luatexja@tempcntb=\luatexja@tempcnta
   \else
     \def\ltj@temp{#2}%
     \ifx\ltj@temp\empty\luatexja@tempcntb="10FFFF \else\luatexja@tempcntb=#2 \fi%"
   \fi
-  \directlua{ltj.def_char_range(\the\luatexja@tempcnta,\the\luatexja@tempcntb,
+  \directlua{ltj.ext_add_char_range(\the\luatexja@tempcnta,\the\luatexja@tempcntb,
     \the\luatexja@tempcntc)}%
   }
 
-%%%%%%%% \setjaparameter
-\newcount\ltj@stack@pbp\newcount\ltj@group@level@pbp
-\ltj@group@level@pbp=0 \ltj@stack@pbp=0
+%%%%%%%% \ltjsetparameter
+\newcount\ltj@@stack \newcount\ltj@@group@level
+\ltj@@group@level=0 \ltj@@stack=0
 
 % prebreakpenalty = {<char_code>, <penalty>}
 \define@key[ltj]{japaram}{kcatcode}{%
-  \expandafter\luatexja@setbp#1:{kcat}{0}{0x7FFFFFFF}}
+  \expandafter\ltj@@set@stack#1:{kcat}{0}{0x7FFFFFFF}}
 \define@key[ltj]{japaram}{prebreakpenalty}{%
-  \expandafter\luatexja@setbp#1:{pre}{-10000}{10000}}
+  \expandafter\ltj@@set@stack#1:{pre}{-10000}{10000}}
 \define@key[ltj]{japaram}{postbreakpenalty}{%
-  \expandafter\luatexja@setbp#1:{post}{-10000}{10000}}
-\def\luatexja@setbp#1,#2:#3#4#5{
-  \luatexja@tempcnta=#1\relax
-  \luatexja@tempcntb=#2\relax
-  \directlua{ltj.set_ch_table(ltj.isglobal, \asluastring{#3},
-    tex.getcount('luatexja@tempcnta'),tex.getcount('luatexja@tempcntb'),#4,#5)}}
+  \expandafter\ltj@@set@stack#1:{post}{-10000}{10000}}
+\def\ltj@@set@stack#1,#2:#3#4#5{%
+  \luatexja@tempcnta=#1\relax \luatexja@tempcntb=#2\relax
+  \directlua{ltj.ext_set_stack_table(ltj.isglobal, \asluastring{#3},
+    \the\luatexja@tempcnta,tex.getcount('luatexja@tempcntb'),#4,#5)}}
 
 % yabaselineshift = <dimen>
 \define@key[ltj]{japaram}{yabaselineshift}{%
 % mode: inhibit, preonly, postonly, allow
 %    or       0        2         1      3
 \define@key[ltj]{japaram}{cjkxspmode}{%        \inhibitxspcode
-  \expandafter\luatexja@setjxspmode#1:\relax}
-\def\luatexja@setjxspmode#1,#2:{%
+  \expandafter\ltj@set@cjkxspmode#1:\relax}
+\def\ltj@set@cjkxspmode#1,#2:{%
   \lowercase{\edef\ltj@temp{#2}}%
   \def\ltj@tempa{inhibit}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{0}\fi
   \def\ltj@tempa{preonly}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{2}\fi
   \def\ltj@tempa{postonly}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{1}\fi
   \def\ltj@tempa{allow}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{3}\fi
   \luatexja@tempcnta=#1\relax\luatexja@tempcntb=\ltj@temp\relax
-  \directlua{ltj.set_ch_table(ltj.isglobal, 'xsp', tex.getcount('luatexja@tempcnta'),
-    tex.getcount('luatexja@tempcntb'),0,3)}}
+  \directlua{ltj.ext_set_stack_table(ltj.isglobal, 'xsp', \the\luatexja@tempcnta,
+    \the\luatexja@tempcntb,0,3)}}
 
 % asciixspmode = {<char_code>, <mode>}
 % mode: inhibit, preonly, postonly, allow
 %    or       0        1         2      3
 \define@key[ltj]{japaram}{asciixspmode}{%        \inhibitxspcode
-  \expandafter\luatexja@setaxspmode#1:\relax}
-\def\luatexja@setaxspmode#1,#2:{%
+  \expandafter\ltj@set@asciixspmode#1:\relax}
+\def\ltj@set@asciixspmode#1,#2:{%
   \lowercase{\edef\ltj@temp{#2}}%
   \def\ltj@tempa{inhibit}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{0}\fi
   \def\ltj@tempa{preonly}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{1}\fi
   \def\ltj@tempa{postonly}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{2}\fi
   \def\ltj@tempa{allow}\ifx\ltj@temp\ltj@tempa\def\ltj@temp{3}\fi
   \luatexja@tempcnta=#1\relax\luatexja@tempcntb=\ltj@temp\relax
-  \directlua{ltj.set_ch_table(ltj.isglobal, 'xsp', tex.getcount('luatexja@tempcnta'),
-    tex.getcount('luatexja@tempcntb'),0,3)}}
+  \directlua{ltj.ext_set_stack_table(ltj.isglobal, 'xsp', \the\luatexja@tempcnta,
+    \the\luatexja@tempcntb,0,3)}}
 
 % autospacing = <bool> (default: true)
 \define@boolkey[ltj]{japaram}{autospacing}[true]{%
   }
 
 \define@key[ltj]{japaram}{kanjiskip}{%              % SKIP
-  \directlua{ltj.print_global()}\kanjiskip=#1 }
+  \directlua{ltj.ext_print_global()}\kanjiskip=#1 }
 \define@key[ltj]{japaram}{xkanjiskip}{%             % SKIP
-  \directlua{ltj.print_global()}\xkanjiskip=#1 }
+  \directlua{ltj.ext_print_global()}\xkanjiskip=#1 }
 \define@key[ltj]{japaram}{jcharwidowpenalty}{%      %COUNT
-  \directlua{ltj.print_global()}\jcharwidowpenalty=#1 }
+  \directlua{ltj.ext_print_global()}\jcharwidowpenalty=#1 }
 
 % differentjfm = { large | small | average | both }
-\define@choicekey*+[ltj]{japaram}{differentjfm}[\ltj@temp\ltj@result]%
+\define@choicekey*+[ltj]{japaram}{differentjfm}[\ltj@temp\ltj@tempr]%
   {large,small,average,both}{%
-  \ifcase\ltj@result
+  \ifcase\ltj@tempr
     \directlua{ltj.calc_between_two_jchar_aux=ltj.calc_between_two_jchar_aux_large}\or
     \directlua{ltj.calc_between_two_jchar_aux=ltj.calc_between_two_jchar_aux_small}\or
     \directlua{ltj.calc_between_two_jchar_aux=ltj.calc_between_two_jchar_aux_average}\or
 
 
 % jcharrange = { +-<range_number> }
-\define@key[ltj]{japaram}{jcharrange}{\expandafter\@setjcharrange#1,,}
-\def\@setjcharrange#1,{%
+\define@key[ltj]{japaram}{jcharrange}{\expandafter\ltj@@scrange#1,,}
+\def\ltj@@scrange#1,{%
   \edef\ltj@temp{#1}%
-  \ifx\ltj@temp\empty\let\next=\relax\else\let\next=\@setjcharrange
-    \luatexja@tempcnta=#1 \directlua{ltj.set_jchar_range(%
-      ltj.is_global,tex.getcount('luatexja@tempcnta'))}%
+  \ifx\ltj@temp\empty\let\next=\relax\else\let\next=\ltj@@scrange
+    \luatexja@tempcnta=#1 \directlua{ltj.ext_toggle_char_range(%
+      ltj.is_global,\the\luatexja@tempcnta)}%
   \fi\next
 }
 
 
 
 
-\def\setjaparameter#1{\directlua{ltj.isglobal=''}%
+\def\ltjsetparameter#1{\directlua{ltj.isglobal=''}%
   \setkeys[ltj]{japaram}{#1}\ignorespaces}
-\def\globalsetjaparameter#1{\directlua{ltj.isglobal='global'}%
+\def\globalltjsetparameter#1{\directlua{ltj.isglobal='global'}%
   \setkeys[ltj]{japaram}{#1}\ignorespaces}
 
 %%%%%%%% 
-\def\getjaparameter#1{%
-  \lowercase{\edef\ltj@temp{#1}}\let\@next=\getjaparameter@one%
-  \def\ltj@tempa{prebreakpenalty}\ifx\ltj@temp\ltj@tempa\let\@next=\getjaparameter@two\fi
-  \def\ltj@tempa{postbreakpenalty}\ifx\ltj@temp\ltj@tempa\let\@next=\getjaparameter@two\fi
-  \def\ltj@tempa{cjkxspmode}\ifx\ltj@temp\ltj@tempa\let\@next=\getjaparameter@two\fi
-  \def\ltj@tempa{asciixspmode}\ifx\ltj@temp\ltj@tempa\let\@next=\getjaparameter@two\fi
-  \def\ltj@tempa{kcatcode}\ifx\ltj@temp\ltj@tempa\let\@next=\getjaparameter@two\fi
-  \def\ltj@tempa{jcharrange}\ifx\ltj@temp\ltj@tempa\let\@next=\getjaparameter@two\fi
-  \def\ltj@tempa{chartorange}\ifx\ltj@temp\ltj@tempa\let\@next=\getjaparameter@two\fi
+\def\ltjgetparameter#1{%
+  \lowercase{\edef\ltj@temp{#1}}\let\@next=\ltj@@getparam@one%
+  \def\ltj@tempa{prebreakpenalty}\ifx\ltj@temp\ltj@tempa\let\@next=\ltj@@getparam@two\fi
+  \def\ltj@tempa{postbreakpenalty}\ifx\ltj@temp\ltj@tempa\let\@next=\ltj@@getparam@two\fi
+  \def\ltj@tempa{cjkxspmode}\ifx\ltj@temp\ltj@tempa\let\@next=\ltj@@getparam@two\fi
+  \def\ltj@tempa{asciixspmode}\ifx\ltj@temp\ltj@tempa\let\@next=\ltj@@getparam@two\fi
+  \def\ltj@tempa{kcatcode}\ifx\ltj@temp\ltj@tempa\let\@next=\ltj@@getparam@two\fi
+  \def\ltj@tempa{jcharrange}\ifx\ltj@temp\ltj@tempa\let\@next=\ltj@@getparam@two\fi
+  \def\ltj@tempa{chartorange}\ifx\ltj@temp\ltj@tempa\let\@next=\ltj@@getparam@two\fi
   \@next
 }
-\def\getjaparameter@one{\directlua{ltj.out_ja_parameter_one('\ltj@temp')}}
-\def\getjaparameter@two#1{%
+\def\ltj@@getparam@one{\directlua{ltj.ext_get_parameter_unary('\ltj@temp')}}
+\def\ltj@@getparam@two#1{%
   \luatexja@tempcnta=#1
-  \directlua{ltj.out_ja_parameter_two('\ltj@temp', tex.getcount('luatexja@tempcnta'))}
+  \directlua{ltj.ext_get_parameter_binary('\ltj@temp', \the\luatexja@tempcnta)}
 }
 
 
 
-%%%%%%%% commands for ``compatibility''
-% \def\setinhibitxspcode#1#2{\setjaparameter{cjkxspmode={#1,#2}}}
-% \def\setxspcode#1#2{\setjaparameter{asciixspmode={#1,#2}}}
-% \def\setprebreakpenalty#1#2{\setjaparameter{prebreakpenalty={#1,#2}}}
-% \def\setpostbreakpenalty#1#2{\setjaparameter{prebreakpenalty={#1,#2}}}
-% \def\getprebreakpenalty#1{\directlua{ltj.get_penalty_table('pre',#1)}\luatexja@tempcnta}
-% \def\getpostbreakpenalty#1{\directlua{ltj.get_penalty_table('post',#1)}\luatexja@tempcnta}
-% \def\autospacing{\luatexja@autospc=0 }
-% \def\noautospacing{\luatexja@autospc=1 }
-% \def\autoxspacing{\luatexja@autoxspc=0 }
-% \def\noautoxspacing{\luatexja@autoxspc=1 }
-
 \def\ltj@temp{plain}
 \ifx\fmtname\ltj@temp
   \message{plain format: loading luatexja-plain.tex}