OSDN Git Service

added \ltjset[x]kanjiskip; executing \ltjsetparameter is slow.
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Wed, 14 May 2014 06:45:45 +0000 (15:45 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Wed, 14 May 2014 06:45:45 +0000 (15:45 +0900)
src/ltj-debug.lua
src/ltj-jfmglue.lua
src/ltjsarticle.cls
src/ltjsbook.cls
src/ltjsclasses.dtx
src/ltjskiyou.cls
src/ltjspf.cls
src/luatexja-core.sty
src/patches/lltjfont.sty

index 8c57eda..5125d55 100644 (file)
@@ -110,9 +110,9 @@ do
       end
       table.sort(temp, function (a,b) return (a[4]>b[4]) end)
       print()
-      print('desc', 'ave.', 'times', 'total')
+      print('desc', 'ave. (us)', 'times', 'total (ms)')
       for _,v in ipairs(temp) do
-        print ((v[1] .. '                '):sub(1,16), v[4], v[2], v[3])
+        print ((v[1] .. '                '):sub(1,16), 1000000*v[4], v[2], 1000*v[3])
       end
    end
    if luatexja.base then
index af3bde5..066568c 100644 (file)
@@ -9,6 +9,7 @@ luatexbase.provides_module({
 module('luatexja.jfmglue', package.seeall)
 local err, warn, info, log = luatexbase .errwarinf(_NAME)
 
+luatexja.load_module('base');      local ltjb = luatexja.base
 luatexja.load_module('stack');     local ltjs = luatexja.stack
 luatexja.load_module('jfont');     local ltjf = luatexja.jfont
 luatexja.load_module('direction'); local ltjd = luatexja.direction
@@ -106,11 +107,21 @@ local function fast_find_char_class(c,m)
 end
 
 -- 文字クラスの決定
-local function slow_find_char_class(c, m, oc)
-   local xc = c or oc
-   local cls = ltjf_find_char_class(oc, m)
-   if xc ~= oc and  cls==0 then cls = ltjf_find_char_class(-xc, m) end
-   return cls, xc
+local slow_find_char_class
+do
+   local start_time_measure = ltjb.start_time_measure
+   local stop_time_measure = ltjb.stop_time_measure
+   slow_find_char_class = function (c, m, oc)
+      start_time_measure('slow_find_chr')
+      local cls = ltjf_find_char_class(oc, m)
+      if not c and  cls==0 then 
+        stop_time_measure('slow_find_chr')
+        return ltjf_find_char_class(-c, m), oc
+      else
+        stop_time_measure('slow_find_chr')
+        return cls, oc
+      end
+   end
 end
 
 local zero_glue = node_new(id_glue)
index 62ddad7..3d31a05 100644 (file)
@@ -38,7 +38,7 @@
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{ltjsarticle}
-  [2014/03/28 ]
+  [2014/05/14 ]
 \RequirePackage{luatexja}
 \newif\if@restonecol
 \newif\if@titlepage
       \parindent=1\zw
     \fi
   \fi
-  \ltjsetparameter{kanjiskip={0\zw plus .1\zw minus .01\zw}}
-  \if@slide \ltjsetparameter{xkanjiskip={0.1em}} \else
-    \ltjsetparameter{xkanjiskip={0.25em plus 0.15em minus 0.06em}}
+  \ltj@setpar@global
+  \ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
+  \if@slide
+    \ltjsetxkanjiskip{0.1em}
+  \else
+    \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
   \fi}
 \emergencystretch 3\zw
 \newif\ifnarrowbaselines
   \renewcommand\kanjifamilydefault{\gtdefault}
   \renewcommand\familydefault{\sfdefault}
   \raggedright
-  \ltjsetparameter{xkanjiskip={0.1em}}\relax
+  \ltj@setpar@global
+  \ltjsetxkanjiskip{0.1em}\relax
 \fi
 \endinput
 %%
index 813909f..4e3e12b 100644 (file)
@@ -38,7 +38,7 @@
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{ltjsbook}
-  [2014/03/28 ]
+  [2014/05/14 ]
 \RequirePackage{luatexja}
 \newif\if@restonecol
 \newif\if@titlepage
       \parindent=1\zw
     \fi
   \fi
-  \ltjsetparameter{kanjiskip={0\zw plus .1\zw minus .01\zw}}
-  \if@slide \ltjsetparameter{xkanjiskip={0.1em}} \else
-    \ltjsetparameter{xkanjiskip={0.25em plus 0.15em minus 0.06em}}
+  \ltj@setpar@global
+  \ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
+  \if@slide
+    \ltjsetxkanjiskip{0.1em}
+  \else
+    \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
   \fi}
 \emergencystretch 3\zw
 \newif\ifnarrowbaselines
   \renewcommand\kanjifamilydefault{\gtdefault}
   \renewcommand\familydefault{\sfdefault}
   \raggedright
-  \ltjsetparameter{xkanjiskip={0.1em}}\relax
+  \ltj@setpar@global
+  \ltjsetxkanjiskip{0.1em}\relax
 \fi
 \endinput
 %%
index 80b488c..6bff584 100644 (file)
@@ -22,7 +22,7 @@
 %  -----------------------------------------
 %
 % \fi
-% \CheckSum{5202}
+% \CheckSum{5203}
 %% \CharacterTable
 %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
 %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
@@ -50,7 +50,7 @@
 %<*driver>
 \ProvidesFile{ltjsclasses.dtx}
 %</driver>
-  [2014/03/28 ]
+  [2014/05/14 ]
 %<*driver>
 \documentclass{ltjsarticle}
 \usepackage{doc}
 %
 % [2008-02-18] |english| オプションで |\parindent| を 1em にしました。
 %
+% [2014-05-14 LTJ] |\ltjsetparameter|の実行は時間がかかるので,
+% |\ltjsetkanjiskip| と |\ltjsetxkanjiskip|(両者とも,
+% 実行前には |\ltj@setpar@global| の実行が必要)にしました.
+%
 %    \begin{macrocode}
 \def\@setfontsize#1#2#3{%
 % \@nomath#1%
       \parindent=1\zw
     \fi
   \fi
-  \ltjsetparameter{kanjiskip={0\zw plus .1\zw minus .01\zw}}
-  \if@slide \ltjsetparameter{xkanjiskip={0.1em}} \else
-    \ltjsetparameter{xkanjiskip={0.25em plus 0.15em minus 0.06em}}
+  \ltj@setpar@global
+  \ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
+  \if@slide 
+    \ltjsetxkanjiskip{0.1em} 
+  \else
+    \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
   \fi}
 %    \end{macrocode}
 % \end{macro}
   \renewcommand\kanjifamilydefault{\gtdefault}
   \renewcommand\familydefault{\sfdefault}
   \raggedright
-  \ltjsetparameter{xkanjiskip={0.1em}}\relax
+  \ltj@setpar@global
+  \ltjsetxkanjiskip{0.1em}\relax
 \fi
 %    \end{macrocode}
 %
index 145d94b..1311dec 100644 (file)
@@ -38,7 +38,7 @@
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{ltjskiyou}
-  [2014/03/28 ]
+  [2014/05/14 ]
 \RequirePackage{luatexja}
 \newif\if@restonecol
 \newif\if@titlepage
       \parindent=1\zw
     \fi
   \fi
-  \ltjsetparameter{kanjiskip={0\zw plus .1\zw minus .01\zw}}
-  \if@slide \ltjsetparameter{xkanjiskip={0.1em}} \else
-    \ltjsetparameter{xkanjiskip={0.25em plus 0.15em minus 0.06em}}
+  \ltj@setpar@global
+  \ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
+  \if@slide
+    \ltjsetxkanjiskip{0.1em}
+  \else
+    \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
   \fi}
 \emergencystretch 3\zw
 \newif\ifnarrowbaselines
   \renewcommand\kanjifamilydefault{\gtdefault}
   \renewcommand\familydefault{\sfdefault}
   \raggedright
-  \ltjsetparameter{xkanjiskip={0.1em}}\relax
+  \ltj@setpar@global
+  \ltjsetxkanjiskip{0.1em}\relax
 \fi
 \endinput
 %%
index b56a234..fab8f0c 100644 (file)
@@ -38,7 +38,7 @@
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{ltjspf}
-  [2014/03/28 ]
+  [2014/05/14 ]
 \RequirePackage{luatexja}
 \newif\if@restonecol
 \newif\if@titlepage
       \parindent=1\zw
     \fi
   \fi
-  \ltjsetparameter{kanjiskip={0\zw plus .1\zw minus .01\zw}}
-  \if@slide \ltjsetparameter{xkanjiskip={0.1em}} \else
-    \ltjsetparameter{xkanjiskip={0.25em plus 0.15em minus 0.06em}}
+  \ltj@setpar@global
+  \ltjsetkanjiskip{0pt plus .1\zw minus .01\zw}
+  \if@slide
+    \ltjsetxkanjiskip{0.1em}
+  \else
+    \ltjsetxkanjiskip{0.25em plus 0.15em minus 0.06em}
   \fi}
 \emergencystretch 3\zw
 \newif\ifnarrowbaselines
   \renewcommand\kanjifamilydefault{\gtdefault}
   \renewcommand\familydefault{\sfdefault}
   \raggedright
-  \ltjsetparameter{xkanjiskip={0.1em}}\relax
+  \ltj@setpar@global
+  \ltjsetxkanjiskip{0.1em}\relax
 \fi
 \endinput
 %%
index a2dc0ed..43b7c6c 100644 (file)
   \fi}
 
 % [x]]kanjiskip = <dimen>
-\define@key[ltj]{japaram}{kanjiskip}{%              % SKIP
+\define@key[ltj]{japaram}{kanjiskip}{\ltjsetkanjiskip{#1}}
+\define@key[ltj]{japaram}{xkanjiskip}{\ltjsetxkanjiskip{#1}}
+\protected\def\ltjsetkanjiskip#1{%                  % SKIP
   \directlua{%
     local d = \ltj@safe@glue{#1}
     luatexja.stack.set_stack_skip(luatexja.stack_table_index.KSK, d); node.free(d)
 }}
-\define@key[ltj]{japaram}{xkanjiskip}{%             % SKIP
+\protected\def\ltjsetxkanjiskip#1{%                  % SKIP
   \directlua{%
     local d = \ltj@safe@glue{#1}
     luatexja.stack.set_stack_skip(luatexja.stack_table_index.XSK, d); node.free(d)
 }}
 
+
 % jcharwidowpenalty = <count>
 \define@key[ltj]{japaram}{jcharwidowpenalty}{%      %COUNT
   \ltj@@set@stack0,#1:{JWP}{-10000}{10000}}
     \else\directlua{luatexja.isglobal=''}\fi
 }
 \protected\def\ltjsetparameter#1{%
-  \ltj@setpar@global\setkeys[ltj]{japaram}{#1}\ignorespaces}
+  \directlua{luatexja.base.start_time_measure('set_par')}%
+  \ltj@setpar@global\setkeys[ltj]{japaram}{#1}%
+  \directlua{luatexja.base.stop_time_measure('set_par')}%
+  \ignorespaces}
 \protected\def\ltjglobalsetparameter#1{%
   \relax\ifnum\globaldefs<0\directlua{luatexja.isglobal=''}%
     \else\directlua{luatexja.isglobal='global'}\fi%
-  \setkeys[ltj]{japaram}{#1}\ignorespaces}
+  \directlua{luatexja.base.start_time_measure('set_par')}%
+  \setkeys[ltj]{japaram}{#1}%
+  \directlua{luatexja.base.stop_time_measure('set_par')}%
+  \ignorespaces}
 
 %%%%%%%% \ltjgetparameter
 \def\ltj@@decl@array@param#1{%
 \ltj@@decl@array@param{jacharrange}
 \ltj@@decl@array@param{chartorange}
 \def\ltjgetparameter#1{%
+  \directlua{luatexja.base.start_time_measure('get_par')}%
   \ifcsname ltj@@array@param/#1\endcsname
     \expandafter\ltx@firstoftwo
   \else
   {\ltj@@getparam@one{#1}}%
 }
 \def\ltj@@getparam@one#1{%
-  \directlua{luatexja.ext_get_parameter_unary('#1')}}%
+  \directlua{luatexja.ext_get_parameter_unary('#1')}%
+  \directlua{luatexja.base.stop_time_measure('get_par')}%
+}%
 \def\ltj@@getparam@two#1#2{%
   \directlua{luatexja.ext_get_parameter_binary('#1', \ltj@safe@num@or{nil}{#2})}%
+  \directlua{luatexja.base.stop_time_measure('get_par')}%
 }
 
 %%%%%%%% \ltjalchar<number>, \ltjjachar<number>
index 658fb52..8ecdea1 100644 (file)
 \newbox\adjust@box
 \newdimen\adjust@dimen
 \def\adjustbaseline{%
-    \setbox\adjust@box\hbox{\ltjsetparameter{yjabaselineshift=\z@}あ}%
+    \setbox\adjust@box\hbox{\ltj@ykblshift=0あ}%
     \cht\ht\adjust@box
     \cdp\dp\adjust@box
     \cwd\wd\adjust@box
     \chs\cwd
     \cHT\cht \advance\cHT\cdp
     %\iftdir
-      \setbox0\hbox{\tate\ltjsetparameter{tjabaselineshift=\z@}あ}%
-      \setbox\adjust@box\hbox{\tate\ltjsetparameter{talbaselineshift=\z@}M}%
+      \setbox0\hbox{\tate\ltj@tkblshift=0あ}%
+      \setbox\adjust@box\hbox{\tate\ltj@tablshift=0M}%
       \adjust@dimen\ht\adjust@box
       \advance\adjust@dimen\dp\adjust@box
       \advance\adjust@dimen-\ht0
       \divide\adjust@dimen\tw@
       \advance\adjust@dimen0.5\dp0
       \advance\adjust@dimen-\dp\adjust@box
-      \ltjsetparameter{talbaselineshift=\adjust@dimen}
+      \ltj@tablshift=\adjust@dimen
     %\fi
   }
 \DeclareRobustCommand\romanencoding[1]{%