X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fpatches%2Flltjfont.sty;h=ca131bc6495d9230e94fd221248d0be01c2b20c6;hb=ff9df03313c1f230dc52fea2d78757a4821281da;hp=9c887873d41ca7f0d743abb2b994491fd31970d6;hpb=2df1699c04b21d9e6481c37338ce5efb856bd369;p=luatex-ja%2Fluatexja.git diff --git a/src/patches/lltjfont.sty b/src/patches/lltjfont.sty index 9c88787..ca131bc 100644 --- a/src/patches/lltjfont.sty +++ b/src/patches/lltjfont.sty @@ -3,8 +3,9 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjfont}[2019/08/21 Patch to NFSS2 for LuaTeX-ja] +\ProvidesPackage{lltjfont}[2020/03/01 Patch to NFSS2 for LuaTeX-ja] +%% patching \DeclareTextComposite \def\ltj@chardef@text@cmd#1{% \let\@ifdefinable\@@ifdefinable% \edef\ltj@chardef@text@cmd@name{\expandafter\@gobble\string#1}% @@ -23,13 +24,11 @@ \@dec@text@cmd\ltj@chardef@text@cmd#1{#2}#3\relax } -\ifdefined\UnicodeEncodingName - \let\ltj@temp@DeclareTextComposite=\DeclareTextComposite - \def\DeclareTextComposite#1#2#3#4{}% - \input{tuenc.def} - \let\DeclareTextComposite=\ltj@temp@DeclareTextComposite - \expandafter\patchcmd\csname TU\string\textasteriskcentered\endcsname{\char}{\ltjalchar}{}{} -\fi +\let\ltj@temp@DeclareTextComposite=\DeclareTextComposite +\def\DeclareTextComposite#1#2#3#4{}% +\input{tuenc.def} +\let\DeclareTextComposite=\ltj@temp@DeclareTextComposite +\expandafter\patchcmd\csname TU\string\textasteriskcentered\endcsname{\char}{\ltjalchar}{}{} \let\k@encoding\@empty @@ -308,7 +307,7 @@ \fi } \newif\if@knjcmd -\def\userelfont{\@knjcmdtrue} +\DeclareRobustCommand\userelfont{\@knjcmdtrue} \RequirePackage{everysel} @@ -465,7 +464,7 @@ setdimen('cHT', ht+dp) end }\endgroup -\def\adjustbaseline{\luafunction\ltj@@adjust@baseline@inner +\DeclareRobustCommand\adjustbaseline{\luafunction\ltj@@adjust@baseline@inner \cvs\normalbaselineskip} \DeclareRobustCommand\romanencoding[1]{% \expandafter\ifx\csname T@#1\endcsname\relax @@ -568,6 +567,135 @@ \edef\k@family{#1}\edef\f@family{#1}% \fi\fi } + +\newcount\ltj@@latex@plv \ltj@@latex@plv=-1 +\ifdefined\@rmfamilyhook +%%%% LaTeX 2020-02-02 +\ifx\@forced@seriestrue\@undefined % 2020-02-02 pl0--2 + \@latex@error + {Please update LaTeX2e!^^J\space\space + At least LaTeX2e 2020-02-02 patch level 3 is required} + {LaTeX2e 2020-02-02 patch level 2 (and 4) has a bug.} +\else + \ltj@@latex@plv=300 + \unless\ifx\series@maybe@drop@one@m@x\@undefined % pl5 + develop + \ltj@@latex@plv=501 + \else + \unless\ifx\series@maybe@drop@one@m\@undefined % patch level 5 + \ltj@@latex@plv=500 + \fi + \fi +\fi + +\def\merge@kanji@series#1{% + \expandafter\expandafter\expandafter + \merge@kanji@series@ + \csname series@\k@series @#1\endcsname + {#1}% + \@nil +} + +\ifnum\ltj@@latex@plv>500 % pl5 + develop + \def\set@target@series@kanji#1{% + \edef\k@series{#1}% + \series@maybe@drop@one@m\k@series\k@series + } +\else\ifnum\ltj@@latex@plv>300 % pl5 + \def\set@target@series@kanji#1{% + \edef\k@series{#1}% + \expandafter\series@maybe@drop@one@m\expandafter{\k@series}\k@series + } +\else % pl 3, 4 + \def\set@target@series@kanji#1{% + \edef\k@series{#1}% + \edef\k@series{\expandafter\series@drop@one@m\k@series mm\series@drop@one@m}% + } +\fi\fi + +\def\merge@kanji@series@#1#2#3\@nil{% + \def\reserved@a{#3}% + \ifx\reserved@a\@empty + \set@target@series@kanji{#2}% + \else + \begingroup\let\f@encoding\k@encoding\let\f@family\k@family + \maybe@load@fontshape\endgroup + \edef\reserved@a{\k@encoding /\k@family /#1/\k@shape}% + \ifcsname \reserved@a \endcsname + \set@target@series@kanji{#1}% + \else + \ifcsname \k@encoding /\k@family /#2/\k@shape \endcsname + \set@target@series@kanji{#2}% + {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}% + \else + \set@target@series@kanji{#3}% + {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}% + \fi + \fi + \fi +} +\def\merge@kanji@shape#1{% + \expandafter\expandafter\expandafter + \merge@kanji@shape@ + \csname shape@\k@shape @#1\endcsname + {#1}% + \@nil +} +\def\merge@kanji@shape@#1#2#3\@nil{% + \def\reserved@a{#3}% + \ifx\reserved@a\@empty + \edef\k@shape{#2}% + \else + \begingroup\let\f@encoding\k@encoding\let\f@family\k@family + \maybe@load@fontshape\endgroup + \edef\reserved@a{\k@encoding /\k@family /\k@series/#1}% + \ifcsname \reserved@a\endcsname + \edef\k@shape{#1}% + \else + \ifcsname \k@encoding /\k@family /\k@series/#2\endcsname + \edef\k@shape{#2}% + {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}% + \else + \edef\k@shape{#3}% + {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}% + \fi + \fi + \fi +} +\ifnum\ltj@@latex@plv=300 % pl3, 4 + \DeclareRobustCommand\romanseries[1]{\merge@font@series{#1}} + \DeclareRobustCommand\kanjiseries[1]{\merge@kanji@series{#1}} + \DeclareRobustCommand\fontseries[1]{% + \merge@font@series{#1}\merge@kanji@series{#1}} + \DeclareRobustCommand\romanseriesforce[1]{\edef\f@series{#1}} + \DeclareRobustCommand\kanjiseriesforce[1]{\edef\k@series{#1}} + \DeclareRobustCommand\fontseriesforce[1]{% + \edef\f@series{#1}\edef\k@series{#1}} +\else % pl 5 + \DeclareRobustCommand\romanseries[1]{\@forced@seriesfalse\merge@font@series{#1}} + \DeclareRobustCommand\kanjiseries[1]{\@forced@seriesfalse\merge@kanji@series{#1}} + \DeclareRobustCommand\fontseries[1]{% + \@forced@seriesfalse\merge@font@series{#1}\merge@kanji@series{#1}} + \DeclareRobustCommand\romanseriesforce[1]{\@forced@seriestrue\merge@font@series{#1}} + \DeclareRobustCommand\kanjiseriesforce[1]{\@forced@seriestrue\merge@kanji@series{#1}} + \DeclareRobustCommand\fontseriesforce[1]{% + \@forced@seriestrue\merge@font@series{#1}\merge@kanji@series{#1}} +\fi +\DeclareRobustCommand\romanshape[1]{\merge@font@shape{#1}} +\DeclareRobustCommand\kanjishape[1]{\merge@kanji@shape{#1}} +\DeclareRobustCommand\fontshape[1]{% + \merge@font@shape{#1}\merge@kanji@shape{#1}} +\DeclareRobustCommand\romanshapeforce[1]{\edef\f@shape{#1}} +\DeclareRobustCommand\kanjishapeforce[1]{\edef\k@shape{#1}} +\DeclareRobustCommand\fontshapeforce[1]{\kanjishapeforce{#1}\romanshapeforce{#1}} +\DeclareRobustCommand\usekanji[4]{% + \kanjiencoding{#1}\edef\k@family{#2}\edef\k@series{#3}\edef\k@shape{#4}% + \selectfont\ignorespaces} +\DeclareRobustCommand\useroman[4]{% + \romanencoding{#1}\edef\f@family{#2}\edef\f@series{#3}\edef\f@shape{#4}% + \selectfont\ignorespaces} +%%%% LaTeX 2020-02-02 END +\else +%%%% LaTeX 2019-10-01 \DeclareRobustCommand\romanseries[1]{\edef\f@series{#1}} \DeclareRobustCommand\kanjiseries[1]{\edef\k@series{#1}} \DeclareRobustCommand\fontseries[1]{\kanjiseries{#1}\romanseries{#1}} @@ -580,28 +708,100 @@ \DeclareRobustCommand\useroman[4]{% \romanencoding{#1}\romanfamily{#2}\romanseries{#3}\romanshape{#4}% \selectfont\ignorespaces} +%%%% LaTeX 2019-10-01 END +\fi +%%%% \protected\def\usefont#1#2#3#4{% \directlua{luatexja.jfont.is_kenc('\luatexluaescapestring{#1}')}\ifin@% \usekanji{#1}{#2}{#3}{#4}% \else\useroman{#1}{#2}{#3}{#4}% \fi} \DeclareRobustCommand\normalfont{% - \kanjiencoding{\kanjiencodingdefault}% - \kanjifamily{\kanjifamilydefault}% - \kanjiseries{\kanjiseriesdefault}% - \kanjishape{\kanjishapedefault}% - \romanencoding{\encodingdefault}% - \romanfamily{\familydefault}% - \romanseries{\seriesdefault}% - \romanshape{\shapedefault}% - \selectfont\ignorespaces} + \useroman\encodingdefault\familydefault\seriesdefault\shapedefault + \usekanji\kanjiencodingdefault\kanjifamilydefault\kanjiseriesdefault\kanjishapedefault + \ignorespaces} \let\reset@font\normalfont + +\ifdefined\@rmfamilyhook +%%%% LaTeX 2020-02-02 +\let\prepare@family@series@update@kanji=\prepare@family@series@update +\patchcmd\prepare@family@series@update{\fontfamily}{\romanfamily}{}{} +\patchcmd\prepare@family@series@update@kanji{\fontfamily}{\kanjifamily}{}{} +\patchcmd\prepare@family@series@update@kanji{\update@series@target@value}{\update@series@target@value@kanji}{}{} +\patchcmd\prepare@family@series@update@kanji{\f@family}{\k@family}{}{} +\patchcmd\prepare@family@series@update@kanji{\@meta@family@list}{\@meta@family@list@kanji}{}{} +\patchcmd\prepare@family@series@update@kanji{\fontfamily}{\kanjifamily}{}{} +\patchcmd\prepare@family@series@update@kanji{\maybe@load@fontshape} + {\begingroup\let\f@encoding\k@encoding\let\f@family\k@family + \maybe@load@fontshape\endgroup}{}{} +\patchcmd\prepare@family@series@update@kanji{\f@series}{\k@series}{}{} +\patchcmd\prepare@family@series@update@kanji{\f@series}{\k@series}{}{} +\let\update@series@target@value@kanji=\update@series@target@value +\patchcmd\update@series@target@value@kanji{\f@family}{\k@family}{}{} +\patchcmd\update@series@target@value@kanji{\f@series}{\k@series}{}{} +\patchcmd\update@series@target@value@kanji{\f@series}{\k@series}{}{} +\patchcmd\update@series@target@value@kanji{\f@series}{\k@series}{}{} +\patchcmd\update@series@target@value@kanji{\f@series}{\k@series}{}{} +\def\@meta@family@list@kanji{\@elt{mc}\@elt{gt}\@elt{jtt}} +\DeclareRobustCommand\bfseries{% + \not@math@alphabet\bfseries\mathbf + \expand@font@defaults + \ifx\f@family\rmdef@ult \romanseries\bfseries@rm + \else\ifx\f@family\sfdef@ult \romanseries\bfseries@sf + \else\ifx\f@family\ttdef@ult \romanseries\bfseries@tt + \else \romanseries\bfdefault + \fi\fi\fi + \ifx\k@family\mcdef@ult \kanjiseries\bfseries@mc + \else\ifx\k@family\gtdef@ult \kanjiseries\bfseries@gt + \else\ifx\k@family\jttdef@ult\kanjiseries\bfseries@jtt + \else \kanjiseries\bfdefault + \fi\fi\fi + \selectfont +} +\DeclareRobustCommand\mdseries{% + \not@math@alphabet\mdseries\relax + \expand@font@defaults + \ifx\f@family\rmdef@ult \romanseries\mdseries@rm + \else\ifx\f@family\sfdef@ult \romanseries\mdseries@sf + \else\ifx\f@family\ttdef@ult \romanseries\mdseries@tt + \else \romanseries\mddefault + \fi\fi\fi + \ifx\k@family\mcdef@ult \kanjiseries\mdseries@mc + \else\ifx\k@family\gtdef@ult \kanjiseries\mdseries@gt + \else\ifx\k@family\jttdef@ult\kanjiseries\mdseries@jtt + \else \kanjiseries\mddefault + \fi\fi\fi + \selectfont +} +\appto\expand@font@defaults{% + \edef\mcdef@ult{\mcdefault}% + \edef\gtdef@ult{\gtdefault}% + \edef\jttdef@ult{\jttdefault}% + \edef\kanjidef@ult{\kanjifamilydefault}% +} +\appto\init@series@setup{% + \ifx\kanjidef@ult\mcdef@ult \mcfamily + \else\ifx\kanjidef@ult\gtdef@ult \gtfamily + \else\ifx\kanjidef@ult\jttdef@ult \jttfamily + \fi\fi\fi +} +\fi +\ifdefined\prepare@family@series@update@kanji\else +%%%% LaTeX 2019-10-01 +\def\prepare@family@series@update@kanji#1{\kanjifamily} +\fi + \DeclareRobustCommand\mcfamily{% \unless\ifltj@disablejfam\not@math@alphabet\mcfamily\mathmc\fi - \kanjifamily\mcdefault\selectfont} + \prepare@family@series@update@kanji{mc}\mcdefault + \selectfont} \DeclareRobustCommand\gtfamily{% \unless\ifltj@disablejfam\not@math@alphabet\gtfamily\mathgt\fi - \kanjifamily\gtdefault\selectfont} + \prepare@family@series@update@kanji{gt}\gtdefault + \selectfont} + + + \let\romanprocess@table\process@table \def\kanjiprocess@table{% \kanjiencoding{\kanjiencodingdefault}% @@ -722,6 +922,7 @@ \aftergroup\subst@correction } \def\do@subst@correction{% + \directlua{luatexja.jfont.is_kenc('\luatexluaescapestring{\f@encoding}')}% \ltj@@IsFontJapanese{\curr@fontshape}\ifin@% \ltj@@ja@do@subst@correction \else @@ -773,7 +974,7 @@ %%%%%% Alternate Japanese Fonts %%%% \DeclareAlternateKanjiFont % いつも global -\DeclareRobustComman\DeclareAlternateKanjiFont[9]{% +\def\DeclareAlternateKanjiFont#1#2#3#4#5#6#7#8#9{% \edef\@temp{#9}% \ifx\@temp\@empty\else {\def\ltj@temp@bfont{#1/#2/#3/#4}\def\ltj@temp@afont{#5/#6/#7/#8}%