From 236272c6585bc553f5702a599497a7b476113ce8 Mon Sep 17 00:00:00 2001 From: Hironori Kitagawa Date: Wed, 14 May 2014 15:45:45 +0900 Subject: [PATCH] added \ltjset[x]kanjiskip; executing \ltjsetparameter is slow. --- src/ltj-jfmglue.lua | 16 +++++++++++----- src/ltjsarticle.cls | 14 +++++++++----- src/ltjsbook.cls | 14 +++++++++----- src/ltjsclasses.dtx | 20 ++++++++++++++------ src/ltjskiyou.cls | 14 +++++++++----- src/ltjspf.cls | 14 +++++++++----- src/luatexja-core.sty | 16 +++++++++++----- src/patches/lltjfont.sty | 2 +- 8 files changed, 73 insertions(+), 37 deletions(-) diff --git a/src/ltj-jfmglue.lua b/src/ltj-jfmglue.lua index eb01747..9486c32 100644 --- a/src/ltj-jfmglue.lua +++ b/src/ltj-jfmglue.lua @@ -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 local pairs = pairs @@ -100,11 +101,16 @@ 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 + slow_find_char_class = function (c, m, oc) + local cls = ltjf_find_char_class(oc, m) + if not c and cls==0 then + return ltjf_find_char_class(-c, m), oc + else + return cls, oc + end + end end local zero_glue = node_new(id_glue) diff --git a/src/ltjsarticle.cls b/src/ltjsarticle.cls index 62ddad7..3d31a05 100644 --- a/src/ltjsarticle.cls +++ b/src/ltjsarticle.cls @@ -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 @@ -363,9 +363,12 @@ \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 @@ -1580,7 +1583,8 @@ \renewcommand\kanjifamilydefault{\gtdefault} \renewcommand\familydefault{\sfdefault} \raggedright - \ltjsetparameter{xkanjiskip={0.1em}}\relax + \ltj@setpar@global + \ltjsetxkanjiskip{0.1em}\relax \fi \endinput %% diff --git a/src/ltjsbook.cls b/src/ltjsbook.cls index 813909f..4e3e12b 100644 --- a/src/ltjsbook.cls +++ b/src/ltjsbook.cls @@ -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 @@ -370,9 +370,12 @@ \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 @@ -1665,7 +1668,8 @@ \renewcommand\kanjifamilydefault{\gtdefault} \renewcommand\familydefault{\sfdefault} \raggedright - \ltjsetparameter{xkanjiskip={0.1em}}\relax + \ltj@setpar@global + \ltjsetxkanjiskip{0.1em}\relax \fi \endinput %% diff --git a/src/ltjsclasses.dtx b/src/ltjsclasses.dtx index 80b488c..6bff584 100644 --- a/src/ltjsclasses.dtx +++ b/src/ltjsclasses.dtx @@ -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} % - [2014/03/28 ] + [2014/05/14 ] %<*driver> \documentclass{ltjsarticle} \usepackage{doc} @@ -956,6 +956,10 @@ % % [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% @@ -970,9 +974,12 @@ \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} @@ -5144,7 +5151,8 @@ \renewcommand\kanjifamilydefault{\gtdefault} \renewcommand\familydefault{\sfdefault} \raggedright - \ltjsetparameter{xkanjiskip={0.1em}}\relax + \ltj@setpar@global + \ltjsetxkanjiskip{0.1em}\relax \fi % \end{macrocode} % diff --git a/src/ltjskiyou.cls b/src/ltjskiyou.cls index 145d94b..1311dec 100644 --- a/src/ltjskiyou.cls +++ b/src/ltjskiyou.cls @@ -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 @@ -365,9 +365,12 @@ \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 @@ -1567,7 +1570,8 @@ \renewcommand\kanjifamilydefault{\gtdefault} \renewcommand\familydefault{\sfdefault} \raggedright - \ltjsetparameter{xkanjiskip={0.1em}}\relax + \ltj@setpar@global + \ltjsetxkanjiskip{0.1em}\relax \fi \endinput %% diff --git a/src/ltjspf.cls b/src/ltjspf.cls index b56a234..fab8f0c 100644 --- a/src/ltjspf.cls +++ b/src/ltjspf.cls @@ -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 @@ -363,9 +363,12 @@ \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 @@ -1463,7 +1466,8 @@ \renewcommand\kanjifamilydefault{\gtdefault} \renewcommand\familydefault{\sfdefault} \raggedright - \ltjsetparameter{xkanjiskip={0.1em}}\relax + \ltj@setpar@global + \ltjsetxkanjiskip{0.1em}\relax \fi \endinput %% diff --git a/src/luatexja-core.sty b/src/luatexja-core.sty index d0a4a47..9982ef8 100644 --- a/src/luatexja-core.sty +++ b/src/luatexja-core.sty @@ -339,17 +339,20 @@ \fi} % [x]]kanjiskip = -\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 = \define@key[ltj]{japaram}{jcharwidowpenalty}{% %COUNT \ltj@@set@stack0,#1:{JWP}{-10000}{10000}} @@ -387,11 +390,13 @@ \else\directlua{luatexja.isglobal=''}\fi } \protected\def\ltjsetparameter#1{% - \ltj@setpar@global\setkeys[ltj]{japaram}{#1}\ignorespaces} + \ltj@setpar@global\setkeys[ltj]{japaram}{#1}% + \ignorespaces} \protected\def\ltjglobalsetparameter#1{% \relax\ifnum\globaldefs<0\directlua{luatexja.isglobal=''}% \else\directlua{luatexja.isglobal='global'}\fi% - \setkeys[ltj]{japaram}{#1}\ignorespaces} + \setkeys[ltj]{japaram}{#1}% + \ignorespaces} %%%%%%%% \ltjgetparameter \def\ltj@@decl@array@param#1{% @@ -414,7 +419,8 @@ {\ltj@@getparam@one{#1}}% } \def\ltj@@getparam@one#1{% - \directlua{luatexja.ext_get_parameter_unary('#1')}}% + \directlua{luatexja.ext_get_parameter_unary('#1')}% +}% \def\ltj@@getparam@two#1#2{% \directlua{luatexja.ext_get_parameter_binary('#1', \ltj@safe@num@or{nil}{#2})}% } diff --git a/src/patches/lltjfont.sty b/src/patches/lltjfont.sty index 17a690e..2a87153 100644 --- a/src/patches/lltjfont.sty +++ b/src/patches/lltjfont.sty @@ -335,7 +335,7 @@ \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 -- 2.11.0