From: Hironori Kitagawa Date: Fri, 20 Jun 2014 10:19:22 +0000 (+0900) Subject: Merge branch 'kmaeda_fontspec' into kitagawa_test X-Git-Tag: 20140621.0~4 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=b7aa06da2b68e76653b6445db73ea70fa00380cd;hp=c28036e25b9f7369c6499cd4b8f237912f6ad7eb;p=luatex-ja%2Fluatexja.git Merge branch 'kmaeda_fontspec' into kitagawa_test --- diff --git a/COPYING b/COPYING index bb732b6..ba2ed9a 100644 --- a/COPYING +++ b/COPYING @@ -1,4 +1,4 @@ -Copyright (c) 2011--2013 The LuaTeX-ja project, All rights reserved. +Copyright (c) 2011--2014 The LuaTeX-ja project, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -14,7 +14,7 @@ modification, are permitted provided that the following conditions are met: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE LUATEX-JA PROJECT OR CONTRIBUTORS BE LIABLE +DISCLAIMED. IN NO EVENT SHALL THE LUATEX-JA PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND diff --git a/doc/ltjsclasses.pdf b/doc/ltjsclasses.pdf index 24f1be4..c42dbc6 100644 Binary files a/doc/ltjsclasses.pdf and b/doc/ltjsclasses.pdf differ diff --git a/src/addons/luatexja-adjust.sty b/src/addons/luatexja-adjust.sty index cdfad90..b25e706 100644 --- a/src/addons/luatexja-adjust.sty +++ b/src/addons/luatexja-adjust.sty @@ -82,6 +82,7 @@ \expandafter\endinput\fi\relax %%------------------ + %! Main part of luatexja-adjust \RequireLuaTeXjaSubmodule{adjust} @@ -94,23 +95,6 @@ \ifltj@japaram@adjust\ltjenableadjust\else\ltjdisableadjust\fi } -\ifltj@in@latex - \RequirePackage{expl3} - \ExplSyntaxOn - \cs_new:Nn \ltj_adjust_inittable: { - % To be filled... - } - \cs_new:Nn \ltj_adjust_appendtable:n { - % To be filled - } - \clist_new:N \l_ltj_adjust_priority - \define@key[ltj]{japaram}{adjustpriority}{% COMMA LIST - \clist_set:Nx \l_ltj_adjust_priority {#1} - \ltj_adjust_inittable: - \clist_map_function:NN \l_ltj_adjust_priority \ltj_adjust_appendtable:n - } - \ExplSyntaxOff -\fi %%------------------ all done \ltj@adjust@AtEnd 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..b4fd007 100644 --- a/src/luatexja-core.sty +++ b/src/luatexja-core.sty @@ -339,16 +339,19 @@ \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 +}\ignorespaces} +\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) -}} +}\ignorespaces} + % jcharwidowpenalty = \define@key[ltj]{japaram}{jcharwidowpenalty}{% %COUNT @@ -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})}% } @@ -496,7 +502,6 @@ {\ltj@@getjfontnumber#1% \directlua{luatexja.jfont.clear_alt_font(\the\ltj@tempcntc)}}\ignorespaces} - %%------------------ Load module for the format \ifltj@in@latex %<*LaTeX> diff --git a/src/patches/lltjfont.sty b/src/patches/lltjfont.sty index 2933844..0adf522 100644 --- a/src/patches/lltjfont.sty +++ b/src/patches/lltjfont.sty @@ -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] @@ -203,7 +203,7 @@ \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 @@ -213,7 +213,7 @@ } \def\DLMfontsw@standard#1#2#3{#1{#2{#3}}} \def\reDeclareMathAlphabet#1#2#3{% - \ifdefined#2 + \ifdefined#2 \@temptokena\expandafter{#2}% \else \@temptokena{#2}% @@ -256,7 +256,18 @@ } \newif\if@knjcmd \def\userelfont{\@knjcmdtrue} -\DeclareRobustCommand\selectfont{% + + +\RequirePackage{everysel} +\let\ltj@@EverySelectfont@Init=\@EverySelectfont@Init +\expandafter\expandafter\expandafter\let +\expandafter\expandafter\csname ltj@@orig@selectfont\endcsname\csname selectfont\space\endcsname +\@EverySelectfont@Init +\def\@EverySelectfont@Init{% + \expandafter\let\csname selectfont\space \endcsname \ltj@@orig@selectfont + \ltj@@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@% @@ -270,41 +281,40 @@ \@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{% @@ -332,7 +342,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 @@ -340,14 +350,15 @@ \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]{% @@ -630,7 +641,7 @@ \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}')}% }