From: Hironori Kitagawa Date: Mon, 16 Mar 2020 12:54:41 +0000 (+0900) Subject: Changed the default font to HaranoAji fonts (doc: wip) X-Git-Tag: 20200323.0~10 X-Git-Url: http://git.osdn.jp/view?a=commitdiff_plain;h=10d1c23696277b3834b5a16ab7afb224476b12b9;p=luatex-ja%2Fluatexja.git Changed the default font to HaranoAji fonts (doc: wip) --- diff --git a/doc/luatexja.dtx b/doc/luatexja.dtx index 8765417..8f786c7 100644 --- a/doc/luatexja.dtx +++ b/doc/luatexja.dtx @@ -659,8 +659,10 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}. \Pkg{everysel} (if you want to use \LuaTeX-ja with \LaTeXe) \item \Pkg{ltxcmds}, \Pkg{pdftexcmds}, \Pkg{filehook}, \Pkg{atbegshi} \item \href{https://github.com/wspr/fontspec/}{\Pkg{fontspec}} v2.7c (or later) -%\item \emph{IPAex fonts} (\url{http://ipafont.ipa.go.jp/}) -%\item \emph{IPAexフォント(\url{http://ipafont.ipa.go.jp/})} +%%% %\item \emph{IPAex fonts} (\url{http://ipafont.ipa.go.jp/}) +%%% %\item \emph{IPAexフォント(\url{http://ipafont.ipa.go.jp/})} +%\item \emph{Haranoaji fonts} (\url{https://github.com/trueroad/HaranoAjiFonts}) +%\item \emph{原ノ味フォント(\url{https://github.com/trueroad/HaranoAjiFonts})} \end{itemize} %<*en> @@ -668,11 +670,11 @@ Now \LuaTeX-ja is available from CTAN (in the \texttt{macros/luatex/generic/luatexja} directory), and the following distributions: \begin{itemize} - \item MiK\TeX\ (in \texttt{luatexja.tar.lzma}); see the next subsection \item \href{https://www.tug.org/texlive/}{\TeX\ Live} (in \texttt{texmf-dist/tex/luatex/luatexja}) \item \href{http://w32tex.org/}{W32\TeX}\ (in \texttt{luatexja.tar.xz}) + \item MiK\TeX\ (in \texttt{luatexja.tar.lzma}); see the next subsection \end{itemize} -IPAex fonts are also available in these distributions. +Haranoaji fonts are available in \TeX~Live and MiK\TeX. % %<*ja> 現在,\LuaTeX-jaはCTAN (\texttt{macros/luatex/generic/luatexja})に収録されている他, @@ -682,8 +684,7 @@ IPAex fonts are also available in these distributions. \item \TeX\ Live (\texttt{texmf-dist/tex/luatex/luatexja}) \item W32\TeX\ (\texttt{luatexja.tar.xz}) \end{itemize} -これらのディストリビューションはIPAexフォントも収録している. -W32\TeX においてはIPAexフォントは \texttt{luatexja.tar.xz} 内にある. +\TeX Live, MiK\TeX は原ノ味フォントも収録している. % %<*en> @@ -924,12 +925,12 @@ codes for font color (\Pkg{luaotfload}) in these environments. \textbf{direction}& \textbf{classification}&\textbf{font name}&\bfseries ``10\,pt''&\bfseries ``7\,pt''&\bfseries ``5\,pt''\\\midrule \smash{\raisebox{-1ex}{\emph{yoko} (horizontal)}}& -\emph{mincho}&IPAex Mincho&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\ -&\emph{gothic}&IPAex Gothic&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\ +\emph{mincho}&HaranoAjiMincho-Regular&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\ +&\emph{gothic}&HaranoAjiGothic-Medium&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\ \midrule \smash{\raisebox{-1ex}{\emph{tate} (vertical)}}& -\emph{mincho}&IPAex Mincho&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\ -&\emph{gothic}&IPAex Gothic&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\ +\emph{mincho}&HaranoAjiMincho-Regular&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\ +&\emph{gothic}&HaranoAjiGothic-Medium&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\ \bottomrule \end{tabular} \end{center} @@ -941,12 +942,12 @@ codes for font color (\Pkg{luaotfload}) in these environments. \toprule \emph{組方向}&\emph{字体}&\emph{フォント名}&\bfseries``10\,pt''&\bfseries``7\,pt''&\bfseries``5\,pt''\\\midrule \smash{\raisebox{-0.7\zh}{横組}}& -明朝体&IPAex明朝&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\ -&\textgt{ゴシック体}&IPAexゴシック&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\ +明朝体&原ノ味明朝Regular&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\ +&\textgt{ゴシック体}&原ノ味ゴシックMedium&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\ \midrule \smash{\raisebox{-0.7\zh}{縦組}}& -明朝体&IPAex明朝&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\ -&\textgt{ゴシック体}&IPAexゴシック&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\ +明朝体&原ノ味明朝Regular&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\ +&\textgt{ゴシック体}&原ノ味ゴシックMedium&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\ \bottomrule \end{tabular} \end{center} @@ -958,7 +959,7 @@ codes for font color (\Pkg{luaotfload}) in these environments. one inputs \texttt{luatexja.sty} (Subsection~\ref{ssec:cfg}). % %<*ja> -\item 標準和文フォントやJFMをIPAexフォントから別のものに置き換えるには, +\item 標準和文フォントやJFMを原ノ味フォントから別のものに置き換えるには, \cs{ltj@stdmcfont}等を\texttt{luatexja.sty}読み込み\emph{前}に定義すればよい. \ref{ssec:cfg}節を参照. % @@ -1056,8 +1057,8 @@ By default, the following fonts are used for these two families. \begin{tabular}{lllll} \toprule \textbf{classification}&\textbf{family}&\textbf{\cs{mdseries}}&\textbf{\cs{bfseries}}&\textbf{scale}\\\midrule -\emph{mincho} (明朝体)&\texttt{mc}&IPAexMincho&IPAexGothic&0.962216\\ -\emph{gothic} (\textgt{ゴシック体})&\texttt{gt}&IPAexGothic&IPAexGothic&0.962216\\ +\emph{mincho} (明朝体)&\texttt{mc}&HaranoAjiMincho-Regular&HaranoAjiGothic-Medium&0.962216\\ +\emph{gothic} (\textgt{ゴシック体})&\texttt{gt}&HaranoAjiGothic-Medium&HaranoAjiGothic-Medium&0.962216\\ \bottomrule \end{tabular} \end{center} @@ -1091,8 +1092,8 @@ By default, the following fonts are used for these two families. \begin{tabular}{lllll} \toprule \emph{字体}&\emph{ファミリ}&\textbf{\cs{mdseries}}&\textbf{\cs{bfseries}}&\emph{スケール}\\\midrule -明朝体&\texttt{mc}&IPAex明朝&IPAexゴシック&0.962216\\ -\textgt{ゴシック体}&\texttt{gt}&IPAexゴシック&IPAexゴシック&0.962216\\ +明朝体&\texttt{mc}&原ノ味明朝Regular&原ノ味ゴシックMedium&0.962216\\ +\textgt{ゴシック体}&\texttt{gt}&原ノ味ゴシックMedium&原ノ味ゴシックMedium&0.962216\\ \bottomrule \end{tabular} \end{center} diff --git a/src/ltj-plain.sty b/src/ltj-plain.sty index eb78843..16e71e1 100644 --- a/src/ltj-plain.sty +++ b/src/ltj-plain.sty @@ -23,8 +23,10 @@ %! ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ % LuaTeX-ja macros against plain TeX -\ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{IPAExMincho}\fi -\ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{IPAExGothic}\fi +\ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{file:HaranoAjiMincho-Regular.otf}\fi +\ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{file:HaranoAjiGothic-Medium.otf}\fi +%\ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{IPAExMincho}\fi +%\ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{IPAExGothic}\fi \ifdefined\ltj@stdyokojfm\else\def\ltj@stdyokojfm{ujis}\fi \ifdefined\ltj@stdtatejfm\else\def\ltj@stdtatejfm{ujisv}\fi \newread\ltj@@cfgread diff --git a/src/patches/#lltjfont.sty# b/src/patches/#lltjfont.sty# new file mode 100644 index 0000000..32ac165 --- /dev/null +++ b/src/patches/#lltjfont.sty# @@ -0,0 +1,1099 @@ +% +% lltjfont.sty: derived from plfonts.dtx in pLaTeX. +% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{lltjfont}[2020/03/15 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}% + \afterassignment\ltj@chardef@text@cmd@\ltj@tempcnta +} +\def\ltj@chardef@text@cmd@{% + \ifnum\ltj@tempcnta>"7F + \expandafter\edef\csname \ltj@chardef@text@cmd@name\endcsname{% + \noexpand\ltjalchar\the\ltj@tempcnta\space + }% + \else + \expandafter\chardef\csname \ltj@chardef@text@cmd@name\endcsname\ltj@tempcnta + \fi +} +\def\DeclareTextSymbol#1#2#3{% + \@dec@text@cmd\ltj@chardef@text@cmd#1{#2}#3\relax +} + +\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 +\let\ck@encoding\@empty +% LuaTeX-ja uses JY3 and JT3 encodings. +\def\cy@encoding{JY3}\def\ct@encoding{JT3} + +\let\k@family\@empty +\let\k@series\@empty +\let\k@shape\@empty +\def\curr@kfontshape{\k@encoding/\k@family/\k@series/\k@shape} +\def\rel@fontshape{\f@encoding/\f@family/\f@series/\f@shape} +\ifdefined\Cht\else\newdimen\Cht\fi +\ifdefined\cht\else\newdimen\cht\fi +\ifdefined\Cdp\else\newdimen\Cdp\fi +\ifdefined\cdp\else\newdimen\cdp\fi +\ifdefined\Cwd\else\newdimen\Cwd\fi +\ifdefined\cwd\else\newdimen\cwd\fi +\ifdefined\Cvs\else\newdimen\Cvs\fi +\ifdefined\cvs\else\newdimen\cvs\fi +\ifdefined\Chs\else\newdimen\Chs\fi +\ifdefined\chs\else\newdimen\chs\fi +\ifdefined\cHT\else\newdimen\cHT\fi +%\let\afont\font + +\let\ystrutbox\strutbox +\newbox\dstrutbox +\newbox\tstrutbox +\newbox\zstrutbox +\def\strutbox{% + \ifnum\ltjgetparameter{direction}=1 \dstrutbox % dtou + \else\ifnum\ltjgetparameter{direction}=4 \ystrutbox % yoko + \else\tstrutbox % tate and utod + \fi\fi +} +\DeclareRobustCommand\strut{\relax + \ifnum\ltjgetparameter{direction}=1 % dtou + \ifmmode\copy\dstrutbox\else\unhcopy\dstrutbox\fi + \else\ifnum\ltjgetparameter{direction}=4 % yoko + \ifmmode\copy\ystrutbox\else\unhcopy\ystrutbox\fi + \else % tate and utod + \ifmmode\copy\tstrutbox\else\unhcopy\tstrutbox\fi + \fi\fi +} + +\DeclareRobustCommand\ystrut{\relax\hbox{\ltj@@orig@yoko + \ifmmode\copy\ystrutbox\else\unhcopy\ystrutbox\fi}} +\DeclareRobustCommand\tstrut{\relax\hbox{\ltj@@orig@tate + \ifmmode\copy\tstrutbox\else\unhcopy\tstrutbox\fi}} +\DeclareRobustCommand\dstrut{\relax\hbox{\ltj@@orig@dtou + \ifmmode\copy\dstrutbox\else\unhcopy\dstrutbox\fi}} +\DeclareRobustCommand\zstrut{\relax\hbox{\ltj@@orig@utod + \ifmmode\copy\zstrutbox\else\unhcopy\zstrutbox\fi}} + +{% + \def\cdp@elt#1#2#3#4{% + \directlua{luatexja.jfont.add_fenc_list('\luatexluaescapestring{#1}')}}% + \cdp@list% +} + +\def\DeclareFontEncoding{% + \begingroup + \nfss@catcodes + \expandafter\endgroup + \DeclareFontEncoding@} +\def\DeclareFontEncoding@#1#2#3{% + \expandafter + \ifx\csname T@#1\endcsname\relax + \def\cdp@elt{\noexpand\cdp@elt}% + \xdef\cdp@list{\cdp@list\cdp@elt{#1}% + {\default@family}{\default@series}% + {\default@shape}}% + \expandafter\let\csname#1-cmd\endcsname\@changed@cmd + \directlua{luatexja.jfont.add_fenc_list('\luatexluaescapestring{#1}')}% + \else + \@font@info{Redeclaring font encoding #1}% + \fi + \global\@namedef{T@#1}{#2}% + \global\@namedef{M@#1}{\default@M#3}% + \xdef\LastDeclaredEncoding{#1}% + } +\def\DeclareKanjiEncoding#1{% + \@latex@warning{% + The \string\DeclareKanjiEncoding\space is obsoleted command. Please use + \MessageBreak + the \string\DeclareTateKanjiEncoding\space for `Tate-kumi' encoding, and + \MessageBreak + the \string\DeclareYokoKanjiEncoding\space for `Yoko-kumi' encoding. + \MessageBreak + I treat the `#1' encoding as `Yoko-kumi'.} + \DeclareYokoKanjiEncoding{#1}% +} +\def\DeclareYokoKanjiEncoding{% + \begingroup + \nfss@catcodes + \expandafter\endgroup + \DeclareYokoKanjiEncoding@} +\def\DeclareYokoKanjiEncoding@#1#2#3{% + \expandafter\ifx\csname T@#1\endcsname\relax + \def\cdp@elt{\noexpand\cdp@elt}% + \xdef\cdp@list{\cdp@list\cdp@elt{#1}% + {\default@k@family}{\default@k@series}% + {\default@k@shape}}% + \expandafter\let\csname#1-cmd\endcsname\@changed@kcmd + \directlua{luatexja.jfont.add_kyenc_list('\luatexluaescapestring{#1}')}% + \else + \@font@info{Redeclaring KANJI (yoko) font encoding #1}% + \fi + \global\@namedef{T@#1}{#2}% + \global\@namedef{M@#1}{\default@KM#3}% + } +\def\DeclareTateKanjiEncoding{% + \begingroup + \nfss@catcodes + \expandafter\endgroup + \DeclareTateKanjiEncoding@} +\def\DeclareTateKanjiEncoding@#1#2#3{% + \expandafter\ifx\csname T@#1\endcsname\relax + \def\cdp@elt{\noexpand\cdp@elt}% + \xdef\cdp@list{\cdp@list\cdp@elt{#1}% + {\default@k@family}{\default@k@series}% + {\default@k@shape}}% + \expandafter\let\csname#1-cmd\endcsname\@changed@kcmd + \directlua{luatexja.jfont.add_ktenc_list('\luatexluaescapestring{#1}')}% + \else + \@font@info{Redeclaring KANJI (tate) font encoding #1}% + \fi + \global\@namedef{T@#1}{#2}% + \global\@namedef{M@#1}{\default@KM#3}% + } +\@onlypreamble\DeclareKanjiEncoding +\@onlypreamble\DeclareYokoKanjiEncoding +\@onlypreamble\DeclareYokoKanjiEncoding@ +\@onlypreamble\DeclareTateKanjiEncoding +\@onlypreamble\DeclareTateKanjiEncoding@ +\def\DeclareKanjiEncodingDefaults#1#2{% + \ifx\relax#1\else + \ifx\default@KT\@empty\else + \@font@info{Overwriting KANJI encoding scheme text defaults}% + \fi + \gdef\default@KT{#1}% + \fi + \ifx\relax#2\else + \ifx\default@KM\@empty\else + \@font@info{Overwriting KANJI encoding scheme math defaults}% + \fi + \gdef\default@KM{#2}% + \fi} +\let\default@KT\@empty +\let\default@KM\@empty +\@onlypreamble\DeclareKanjiEncodingDefaults +\def\DeclareFontFamily#1#2#3{% + \@ifundefined{T@#1}% + {\@latex@error{Encoding scheme `#1' unknown}\@eha}% + {\def\reserved@a{#3}% + \global + \expandafter\let\csname #1+#2\expandafter\endcsname + \ifx \reserved@a\@empty + \@empty + \else \reserved@a + \fi + \directlua{luatexja.jfont.add_ffam('\luatexluaescapestring{#2}')}% + }% +} +\def\DeclareKanjiFamily#1#2#3{% + \@ifundefined{T@#1}% + {\@latex@error{KANJI Encoding scheme `#1' unknown}\@eha}% + {\def\reserved@a{#3}% + \global + \expandafter\let\csname #1+#2\expandafter\endcsname + \ifx \reserved@a\@empty + \@empty + \else \reserved@a + \fi + \directlua{luatexja.jfont.add_kfam('\luatexluaescapestring{#2}')}% + }% +} +\def\DeclareKanjiSubstitution#1#2#3#4{% + \expandafter\ifx\csname T@#1\endcsname\relax + \@latex@error{KANJI Encoding scheme `#1' unknown}\@eha + \else + \begingroup + \def\reserved@a{#1}% + \toks@{}% + \def\cdp@elt##1##2##3##4{% + \def\reserved@b{##1}% + \ifx\reserved@a\reserved@b + \addto@hook\toks@{\cdp@elt{#1}{#2}{#3}{#4}}% + \else + \addto@hook\toks@{\cdp@elt{##1}{##2}{##3}{##4}}% + \fi}% + \cdp@list + \xdef\cdp@list{\the\toks@}% + \endgroup + \global\@namedef{D@#1}{\def\default@family{#2}% + \def\default@series{#3}% + \def\default@shape{#4}}% + \fi} +\@onlypreamble\DeclareKanjiSubstitution +\def\DeclareErrorKanjiFont#1#2#3#4#5{% + \xdef\error@kfontshape{% + \noexpand\expandafter\noexpand\split@name\noexpand\string + \expandafter\noexpand\csname#1/#2/#3/#4/#5\endcsname + \noexpand\@nil}% + \gdef\default@k@family{#2}% + \gdef\default@k@series{#3}% + \gdef\default@k@shape{#4}% + } +\@onlypreamble\DeclareErrorKanjiFont + +\newif\ifltjselectfont@force@define +\def\DeclareFixedFont#1#2#3#4#5#6{% + \begingroup + \math@fontsfalse + \every@math@size{}% + \fontsize{#6}\z@ + \directlua{luatexja.jfont.is_kyenc('\luatexluaescapestring{#2}')}\ifin@% + \ltjselectfont@force@definetrue + \usekanji{#2}{#3}{#4}{#5}% + \global\let#1\getjfont + \ltjselectfont@force@definefalse + \else + \directlua{luatexja.jfont.is_ktenc('\luatexluaescapestring{#2}')}\ifin@% + \ltjselectfont@force@definetrue + \usekanji{#2}{#3}{#4}{#5}% + \global\let#1\gettfont + \ltjselectfont@force@definefalse + \else + \useroman{#2}{#3}{#4}{#5}% + \global\expandafter\let\expandafter#1\the\font + \fi + \fi + \endgroup + } +\def\DLMfontsw@standard#1#2#3{#1{#2{#3}}} +\def\reDeclareMathAlphabet#1#2#3{% + \ifdefined#2 + \@temptokena\expandafter{#2}% + \else + \@temptokena{#2}% + \fi + \ifdefined#3 + \toks0\expandafter{#3}% + \else + \toks0{#3}% + \fi + \long\protected\edef#1{% + \noexpand\DLMfontsw@standard{\the\@temptokena}{\the\toks0}}% +} +\@onlypreamble\reDeclareMathAlphabet +\def\all@shape{all}% +\def\DeclareRelationFont#1#2#3#4#5#6#7#8{% + \def\rel@shape{#4}% + \ifx\rel@shape\@empty + \global + \expandafter\def\csname rel@#1/#2/#3/all\endcsname{% + \romanencoding{#5}\romanfamily{#6}% + \romanseries{#7}}% + \else + \global + \expandafter\def\csname rel@#1/#2/#3/#4\endcsname{% + \romanencoding{#5}\romanfamily{#6}% + \romanseries{#7}\romanshape{#8}}% + \fi +} +\def\SetRelationFont#1#2#3#4#5#6#7#8{% + \def\rel@shape{#4}% + \ifx\rel@shape\@empty + \expandafter\def\csname rel@#1/#2/#3/all\endcsname{% + \romanencoding{#5}\romanfamily{#6}% + \romanseries{#7}}% + \else + \expandafter\def\csname rel@#1/#2/#3/#4\endcsname{% + \romanencoding{#5}\romanfamily{#6}% + \romanseries{#7}\romanshape{#8}}% + \fi +} +\newif\if@knjcmd +\DeclareRobustCommand\userelfont{\@knjcmdtrue} + + +\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 +%\let\ltj@@font@info\@font@info +%\let\ltj@@font@warning\@font@warning +\def\@EverySelectfont@Init{% + \expandafter\let\csname selectfont\space \endcsname \ltj@@orig@selectfont + \ltj@@EverySelectfont@Init +} +\def\ltj@selectfont@tate{% + \let\k@encoding\ct@encoding + \xdef\font@name{\csname\curr@kfontshape/\f@size\endcsname}% + \pickup@tfont + \ifnum\ltjgetparameter{direction}=3 \font@name + \ltj@@does@alt@set{\curr@kfontshape}{% + % alt fonts の定義 + \directlua{luatexja.jfont.output_alt_font_cmd('t', '\luatexluaescapestring{\curr@kfontshape}')}% + % 定義した alt fonts のデータを \ltjdeclarealtfont に渡すのと同等の処理をする + \directlua{luatexja.jfont.pickup_alt_font_a('\f@size')}% + }% + \fi} +\def\ltj@selectfont@yoko{% + \let\k@encoding\cy@encoding + \xdef\font@name{\csname\curr@kfontshape/\f@size\endcsname}% + \pickup@jfont + \unless\ifnum\ltjgetparameter{direction}=3 \font@name + \ltj@@does@alt@set{\curr@kfontshape}{% + % alt fonts の定義 + \directlua{luatexja.jfont.output_alt_font_cmd('y', '\luatexluaescapestring{\curr@kfontshape}')}% + % 定義した alt fonts のデータを \ltjdeclarealtfont に渡すのと同等の処理をする + \directlua{luatexja.jfont.pickup_alt_font_a('\f@size')}% + }% + \fi} +\def\ltj@selectfont@patch{% + \directlua{luatexja.base.start_time_measure('selectfont')}% + \let\tmp@error@fontshape\error@fontshape + \let\error@fontshape\error@kfontshape + \directlua{luatexja.jfont.is_kyenc('\luatexluaescapestring{\k@encoding}')}\ifin@% + \let\cy@encoding\k@encoding + \edef\ct@encoding{\csname t@enc@\k@encoding\endcsname}% + \else + \directlua{luatexja.jfont.is_ktenc('\luatexluaescapestring{\k@encoding}')}\ifin@% + \let\ct@encoding\k@encoding + \edef\cy@encoding{\csname y@enc@\k@encoding\endcsname}% + \else + \@latex@error{KANJI Encoding scheme `\k@encoding' unknown}\@eha + \fi + \fi + \global\let\ltj@afont@name=\font@name + \ltj@selectfont@tate\ltj@selectfont@yoko +% + \edef\tmp@item{{\k@encoding}}\expandafter\def\expandafter\k@encoding\tmp@item + \kenc@update + \global\let\font@name=\ltj@afont@name + \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\selectfont + % 警告: 再び \selectfont を呼んでいる.無限ループの可能性あり + \fi + \else + \csname rel@\k@encoding/\k@family/\k@series/\k@shape\endcsname\selectfont + % 警告: 再び \selectfont を呼んでいる.無限ループの可能性あり + \fi + \fi + \global\let\font@name=\ltj@afont@name + \directlua{luatexja.base.stop_time_measure('selectfont')}% +} +\EverySelectfont{\ltj@selectfont@patch} + +\bgroup + \def\ltj@@dir@patch#1#2#3{% + \global\csletcs{ltj@@orig@#1}{#1}% + \protected\expandafter\xdef\csname #1\endcsname{% + \csname ltj@@orig@#1\endcsname + \unexpanded{\ifnum#3<\z@\let\ltj@@protect\protect\set@typeset@protect}% + \unexpanded{\global\let\ltj@afont@name=\font@name}% + \expandonce{\csname ltj@selectfont@#2\endcsname}% + \unexpanded{\global\let\font@name=\ltj@afont@name}% + \unexpanded{\let\protect\ltj@@protect\fi}% + }% + } + \ltj@@dir@patch{yoko}{yoko}{\ltj@curjfnt} + \ltj@@dir@patch{tate}{tate}{\ltj@curtfnt} + \ltj@@dir@patch{utod}{yoko}{\ltj@curjfnt} + \ltj@@dir@patch{dtou}{yoko}{\ltj@curjfnt} +\egroup + +\def\KanjiEncodingPair#1#2{\@namedef{t@enc@#1}{#2}\@namedef{y@enc@#2}{#1}} +\def\set@fontsize#1#2#3{% + \@defaultunits\@tempdimb#2pt\relax\@nnil + \edef\f@size{\strip@pt\@tempdimb}% + \@defaultunits\@tempskipa#3pt\relax\@nnil + \edef\f@baselineskip{\the\@tempskipa}% + \edef\f@linespread{#1}% + \let\baselinestretch\f@linespread + \def\size@update{% + \baselineskip\f@baselineskip\relax + \baselineskip\f@linespread\baselineskip + \normalbaselineskip\baselineskip + \adjustbaseline + \setbox\ystrutbox\hbox{\ltj@@orig@yoko + \vrule\@width\z@ + \@height.7\baselineskip \@depth.3\baselineskip}% + \setbox\dstrutbox\hbox{\ltj@@orig@dtou + \vrule\@width\z@ + \@height.7\baselineskip \@depth.3\baselineskip}% + \setbox\tstrutbox\hbox{\ltj@@orig@tate + \vrule\@width\z@ + \@height.5\baselineskip \@depth.5\baselineskip}% + \setbox\zstrutbox\hbox{\ltj@@orig@utod + \vrule\@width\z@ + \@height.7\baselineskip \@depth.3\baselineskip}% + \let\size@update\relax}} + +\newluafunction\ltj@@adjust@baseline@inner +\begingroup\catcode`\~=12 +\directlua{% + local nulltable = {} + local t = lua.get_functions_table() + local getfont, dir_tate = font.getfont, luatexja.dir_table.dir_tate + local fmt, get_attr = luatexja.jfont.font_metric_table, tex.getattribute + local getcount=tex.getcount + local setdimen, set_attr = tex.setdimen, tex.setattribute + local dir = luatexja.unary_pars.direction + t[\the\ltj@@adjust@baseline@inner] = function() + local ft = fmt[get_attr('ltj@curtfnt')] or nulltable + ft = ft.char_type or nulltable + local fk = ft[0] or nulltable + local ht, dp, wd = fk.height or 0, fk.depth or 0, + fk.width or ft.zw or 0 + local fm + = ((getfont(font.current()) or nulltable) + .characters or nulltable)[77] or nulltable %% 'M' + set_attr('ltj@tablshift', + tex.round(0.5*((fm.height or 0)- (fm.depth or 0) - ht+ dp))) + if dir() ~= dir_tate then + ft = fmt[get_attr('ltj@curjfnt')] or nulltable + ft = ft.char_type or nulltable + fk = ft[0] or nulltable + ht, dp, wd = fk.height or 0, fk.depth or 0, + fk.width or ft.zw or 0 + end + setdimen('cht', ht); setdimen('cdp', dp) + setdimen('cwd', wd); setdimen('chs', wd) + setdimen('cHT', ht+dp) + end +}\endgroup +\DeclareRobustCommand\adjustbaseline{\luafunction\ltj@@adjust@baseline@inner + \cvs\normalbaselineskip} +\DeclareRobustCommand\romanencoding[1]{% + \expandafter\ifx\csname T@#1\endcsname\relax + \@latex@error{Encoding scheme `#1' unknown}\@eha + \else + \edef\f@encoding{#1}% + \ifx\cf@encoding\f@encoding + \let\enc@update\relax + \else + \let\enc@update\@@enc@update + \fi + \fi +} +\DeclareRobustCommand\kanjiencoding[1]{% + \expandafter\ifx\csname T@#1\endcsname\relax + \@latex@error{KANJI Encoding scheme `#1' unknown}\@eha + \else + \edef\k@encoding{#1}% + \ifx\ck@encoding\k@encoding + \let\kenc@update\relax + \else + \let\kenc@update\@@kenc@update + \fi + \fi +} +\DeclareRobustCommand\fontencoding[1]{% + \directlua{luatexja.jfont.is_kyenc('\luatexluaescapestring{#1}')}\ifin@% + \kanjiencoding{#1}\else\romanencoding{#1}\fi} +\def\@@kenc@update{% + \default@KT + \csname T@\k@encoding\endcsname + \csname D@\k@encoding\endcsname + \let\kenc@update\relax + \let\ck@encoding\k@encoding + \edef\tmp@enc{'\luatexluaescapestring{\k@encoding}'}% + \directlua{luatexja.jfont.is_kyenc(\tmp@enc)}\ifin@% + \let\cy@encoding\k@encoding + \else + \directlua{luatexja.jfont.is_ktenc(\tmp@enc)}\ifin@% + \let\ct@encoding\k@encoding + \else + \@latex@error{KANJI Encoding scheme `\k@encoding' unknown}\@eha + \fi + \fi +} +\let\kenc@update\relax +\def\@changed@kcmd#1#2{% + \ifx\protect\@typeset@protect + \@inmathwarn#1% + \expandafter\ifx\csname\ck@encoding\string#1\endcsname\relax + \expandafter\ifx\csname ?\string#1\endcsname\relax + \expandafter\def\csname ?\string#1\endcsname{% + \TextSymbolUnavailable#1% + }% + \fi + \global\expandafter\let + \csname\cf@encoding \string#1\expandafter\endcsname + \csname ?\string#1\endcsname + \fi + \csname\ck@encoding\string#1% + \expandafter\endcsname + \else + \noexpand#1% + \fi} +\newif\if@notkfam +\newif\if@notffam +\newif\if@tempswz +\def\@ltj@use@fd{true} +\DeclareRobustCommand\romanfamily[1]{\edef\f@family{#1}} +\DeclareRobustCommand\kanjifamily[1]{\edef\k@family{#1}} +\DeclareRobustCommand\fontfamily[1]{% + \@notkfamfalse\@notffamfalse + \edef\tmp@item{'\luatexluaescapestring{#1}'}% + % + \directlua{luatexja.jfont.search_kfam(\tmp@item, \@ltj@use@fd)}% + \ifin@\edef\k@family{#1}\else\@notkfamtrue\fi + % + % alphabetic fonts part + \directlua{luatexja.jfont.is_ffam(\tmp@item)}% + \ifin@\edef\f@family{#1}\else + % checking is_stored_ffam is not sufficient, + % since LuaTeX-ja doesn't know whats fonts are defined before LuaTeX-ja is loaded. + \ifcsname \f@encoding+#1\endcsname % easy case + \directlua{luatexja.jfont.add_ffam(\tmp@item)}\edef\f@family{#1}% + \else + \@tempswafalse + \def\cdp@elt##1{\ifcsname ##1+#1\endcsname\@tempswatrue\fi}% + \directlua{luatexja.jfont.search_ffam_declared()}% + \if@tempswz + \directlua{luatexja.jfont.add_ffam(\tmp@item)}\edef\f@family{#1}% + \else + % now we search Nffam_list and font definition files. + \directlua{luatexja.jfont.search_ffam_fd(\tmp@item)}% + \ifin@\edef\f@family{#1}\else\@notffamtrue\fi + \fi + \fi + \fi + % + \if@notkfam\if@notffam + \edef\k@family{#1}\edef\f@family{#1}% + \fi\fi +} + +\newcount\ltj@@latex@plv \ltj@@latex@plv=-1 +\ifdefined\@rmfamilyhook +%%%% LaTeX 2020-02-02 +\newif\if@shape@roman@kanji +%%%%%% 2020-02-02 patchlevel detection +\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 + \if@shape@roman@kanji + \set@safe@kanji@shape{#2}{}% + \else + \edef\k@shape{#2}% + \fi + \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 + \if@shape@roman@kanji + \set@safe@kanji@shape{#3}% + {{\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 + \fi +} +\def\set@safe@kanji@shape#1#2{% + \edef\reserved@b{\k@encoding /\k@family /\k@series/#1}% + \ifcsname \reserved@b\endcsname + \edef\k@shape{#1}% + #2% + \else + \@font@info{Kanji font shape \reserved@b' undefined\MessageBreak + No change}% + \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]{% + \@shape@roman@kanjitrue + \merge@font@shape{#1}\merge@kanji@shape{#1}% + \@shape@roman@kanjifalse +} +\DeclareRobustCommand\romanshapeforce[1]{\edef\f@shape{#1}} +\DeclareRobustCommand\kanjishapeforce[1]{\edef\k@shape{#1}} +\DeclareRobustCommand\fontshapeforce[1]{\set@safe@kanji@shape{#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}} +\DeclareRobustCommand\romanshape[1]{\edef\f@shape{#1}} +\DeclareRobustCommand\kanjishape[1]{\edef\k@shape{#1}} +\DeclareRobustCommand\fontshape[1]{\kanjishape{#1}\romanshape{#1}} +\DeclareRobustCommand\usekanji[4]{% + \kanjiencoding{#1}\kanjifamily{#2}\kanjiseries{#3}\kanjishape{#4}% + \selectfont\ignorespaces} +\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{% + \useroman\encodingdefault\familydefault\seriesdefault\shapedefault + \usekanji\kanjiencodingdefault\kanjifamilydefault\kanjiseriesdefault\kanjishapedefault} +% +\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 + \prepare@family@series@update@kanji{mc}\mcdefault + \selectfont} +\DeclareRobustCommand\gtfamily{% + \unless\ifltj@disablejfam\not@math@alphabet\gtfamily\mathgt\fi + \prepare@family@series@update@kanji{gt}\gtdefault + \selectfont} + + + +\let\romanprocess@table\process@table +\def\kanjiprocess@table{% + \kanjiencoding{\kanjiencodingdefault}% + \kanjifamily{\kanjifamilydefault}% + \kanjiseries{\kanjiseriesdefault}% + \kanjishape{\kanjishapedefault}% +} +\def\process@table{% + \romanprocess@table + \kanjiprocess@table +} +\@onlypreamble\romanprocess@table +\@onlypreamble\kanjiprocess@table + +%%%%%% LuaTeX-ja specific + +% #1 の展開結果から encoding 部分をとりだし,それが和文用かどうかの結果を \ifin@ に代入 +\def\ltj@@IsFontJapanese#1{% + \directlua{luatexja.jfont.is_kenc(string.match( + '\luatexluaescapestring{#1}', '[^/]+'))}} + + +\let\extract@afont\extract@font +\def\pickup@jfont{% + \ifnum + \unless\ifnum\ltjgetparameter{direction}=3 1\else + \ifltjselectfont@force@define 1\else 0\fi\fi =1 % + \expandafter \ifx \font@name \relax + \let\extract@font\extract@jfont + \define@newfont + \let\extract@font\extract@afont + \fi + \let\getjfont\font@name + \else + \begingroup\escapechar\m@ne + \ifcsname ltj@@fontjfm/\expandafter\string\font@name\endcsname\else + \let\extract@font\extract@jfont@onlyjfm + \define@newfont + \let\extract@font\extract@afont + \fi + \endgroup + \csname ltj@@fontjfm/\expandafter\expandafter\expandafter\@gobble\expandafter\string\font@name\endcsname + \fi +} +\def\pickup@tfont{% + \ifnum + \ifnum\ltjgetparameter{direction}=3 1\else + \ifltjselectfont@force@define 1\else 0\fi\fi =1 % + \expandafter \ifx \font@name \relax + \let\extract@font\extract@tfont + \define@newfont + \let\extract@font\extract@afont + \fi + \let\gettfont\font@name + \else + \begingroup\escapechar\m@ne + \ifcsname ltj@@fontjfm/\expandafter\string\font@name\endcsname\else + \let\extract@font\extract@tfont@onlyjfm + \define@newfont + \let\extract@font\extract@afont + \fi + \endgroup + \csname ltj@@fontjfm/\expandafter\expandafter\expandafter\@gobble\expandafter\string\font@name\endcsname + \fi +} + +% 異なる和文 enc/fam/ser/shape からは異なるフォント番号が振られるように +% わざと「ゴミをつける」 +\def\ltj@@patch@external@font#1 at{% + \directlua{ + local s = '\luatexluaescapestring{#1}' + local is_braced, is_quoted + if s:sub(1,1)=='{' and s:sub(-1)=='}' then is_braced=true; s=s:sub(2,-2) end + if s:sub(1,1)=='"' and s:sub(-1)=='"' then is_quoted=true; s=s:sub(2,-2) end + s=s..luatexja.jfont.print_aftl_address() + if is_braced then s='{'..s..'}' elseif is_quoted then s='"'..s..'"' end + %print(s, is_quoted, is_braced) + tex.sprint(-2, s)}% + \space at% +} +\def\extract@jfont{% + \get@external@font + \ltj@@does@alt@set{\f@encoding/\f@family/\f@series/\f@shape}{% + \edef\external@font{\expandafter\ltj@@patch@external@font\external@font}% + }% + \expandafter\globaljfont\font@name\external@font\relax\font@name% ここで時間がかかる + \csname \f@encoding+\f@family\endcsname + \csname\curr@fontshape\endcsname} +\def\extract@tfont{% + \get@external@font + \ltj@@does@alt@set{\f@encoding/\f@family/\f@series/\f@shape}{% + \edef\external@font{\expandafter\ltj@@patch@external@font\external@font}% + }% + \expandafter\globaltfont\font@name\external@font\relax\font@name + \csname \f@encoding+\f@family\endcsname + \csname\curr@fontshape\endcsname} +\def\extract@jfont@onlyjfm{% + \get@external@font + \csxdef{ltj@@fontjfm/\expandafter\string\font@name}{% + \directlua{% + luatexja.jfont.load_jfmonly('\luatexluaescapestring{\external@font}', 'yoko') + }% + }} +\def\extract@tfont@onlyjfm{% + \get@external@font + \csxdef{ltj@@fontjfm/\expandafter\string\font@name}{% + \directlua{% + luatexja.jfont.load_jfmonly('\luatexluaescapestring{\external@font}', 'tate') + }% + }} + +\let\ltj@@al@do@subst@correction=\do@subst@correction +\def\ltj@@ja@do@subst@correction{% + \xdef\subst@correction{% + \font@name + \global\expandafter\let\csname \curr@fontshape/\f@size\endcsname\font@name% + \relax}% + \aftergroup\subst@correction +} +\def\do@subst@correction{% + \directlua{luatexja.jfont.is_kenc('\luatexluaescapestring{\f@encoding}')}\ifin@% + \ltj@@ja@do@subst@correction + \else + \ltj@@al@do@subst@correction + \fi +} +\let\@@italiccorr=\/ + +%%%%%% Japanese font for math mode +\unless\ifltj@disablejfam + +% \M@ から その が和文用か調べる +{\catcode`M=12% +\gdef\ltj@@mathJapaneseFonts#1M#2#3\relax{\ltj@@IsFontJapanese{#3}}} + +\let\ltj@@al@getanddefine@fonts=\getanddefine@fonts +\def\ltj@@ja@getanddefine@fonts#1#2{% + \csletcs{if@ltj@tempif}{ifltjselectfont@force@define}% + \ltjselectfont@force@definetrue + \xdef\font@name{\csname \string#2/\tf@size\endcsname}% + \pickup@jfont\let\textfont@name\font@name + \xdef\font@name{\csname \string#2/\sf@size\endcsname}% + \pickup@jfont\let\scriptfont@name\font@name + \xdef\font@name{\csname \string#2/\ssf@size\endcsname}% + \pickup@jfont + \csletcs{ifltjselectfont@force@define}{if@ltj@tempif}% + \edef\math@fonts{\math@fonts\ltj@setpar@global% + \ltj@@set@stackfont#1,\textfont@name:{MJT}% + \ltj@@set@stackfont#1,\scriptfont@name:{MJS}% + \ltj@@set@stackfont#1,\font@name:{MJSS}% + }% +} + +\def\getanddefine@fonts#1#2{% + \ltj@tempcnta=#1\ltj@@IsFontJapanese{\string#2}% + \ifin@\let\ltj@temp=\ltj@@ja@getanddefine@fonts% + \else \let\ltj@temp=\ltj@@al@getanddefine@fonts\fi + \ltj@temp{#1}{#2}% +} +\def\use@mathgroup#1#2{\relax\ifmmode + \math@bgroup + \expandafter\ifx\csname M@\f@encoding\endcsname#1\else + #1\fi\ltj@tempcnta=#2 \expandafter\ltj@@mathJapaneseFonts\string#1\relax% + \ifin@\jfam#2\relax\else\mathgroup#2\relax\fi + \expandafter\math@egroup\fi}% + +\fi + +%%%%%% Alternate Japanese Fonts +%%%% \DeclareAlternateKanjiFont +% いつも global +\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}% + \expandafter\ltj@@altfont@latex#9,,}\ignorespaces + \fi} +\def\ltj@@altfont@latex#1,{\def\ltj@temp{#1}% + \ifx\ltj@temp\empty\let\@next=\relax\else + \ltj@@altfont@latexA{#1}\let\@next=\ltj@@altfont@latex\fi\@next} +\def\ltj@@altfont@latexA#1{\ltj@@altfont@latexB#1--\@nil} +\def\ltj@@altfont@latexB#1-#2-#3\@nil{\def\ltj@temp{#3}% + \ifx\ltj@temp\empty + \ltj@tempcnta=#1\relax\ltj@tempcntb=\ltj@tempcnta + \else + \def\ltj@temp{#1}% + \ifx\ltj@temp\empty\ltj@tempcnta='200\else\ltj@tempcnta=#1\fi\relax + \def\ltj@temp{#2}% + \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, + '\luatexluaescapestring{\ltj@temp@afont}', + '\luatexluaescapestring{\ltj@temp@bfont}')}% + } + +%%%% \ClearAlternateKanjiFont +% いつも global +\def\ClearAlternateKanjiFont#1#2#3#4{% + \directlua{luatexja.jfont.clear_alt_font_latex('\luatexluaescapestring{#1/#2/#3/#4}')}} + +\def\ltj@pickup@altfont@auxy#1{% + \begingroup\edef\font@name{\csname #1/\f@size\endcsname}\pickup@jfont\endgroup% +} +\def\ltj@pickup@altfont@auxt#1{% + \begingroup\edef\font@name{\csname #1/\f@size\endcsname}\pickup@tfont\endgroup% +} +\def\ltj@pickup@altfont@copy#1#2{% + \ltj@@getjfontnumber#1% + \directlua{luatexja.jfont.pickup_alt_font_b(\the\ltj@tempcntc,'\luatexluaescapestring{#2}')}% +} + +\def\ltj@@does@alt@set#1#2{% + \directlua{luatexja.jfont.does_alt_set'\luatexluaescapestring{#1}'}{#2}} + +%%%% patch \@text@composite because of {y,t}albaselineshift + +% %% \pltx@isletter from plfonts.dtx +% \def\pltx@mark{\pltx@mark@} +% \let\pltx@scanstop\relax +% \long\def\pltx@cond#1\fi{% +% #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi} +% \long\def\pltx@isletter#1{% +% \expandafter\pltx@isletter@i#1\pltx@scanstop} +% \long\def\pltx@isletter@i#1\pltx@scanstop{% +% \pltx@cond\ifx\pltx@mark#1\pltx@mark\fi{\@firstoftwo}% +% {\pltx@isletter@ii\pltx@scanstop#1\pltx@scanstop{}#1\pltx@mark}} +% \long\def\pltx@isletter@ii#1\pltx@scanstop#{% +% \pltx@cond\ifx\pltx@mark#1\pltx@mark\fi% +% {\pltx@isletter@iii}{\pltx@isletter@iv}} +% \long\def\pltx@isletter@iii#1\pltx@mark{\@secondoftwo} +% \long\def\pltx@isletter@iv#1#2#3\pltx@mark{% +% \pltx@cond\ifx\pltx@mark#3\pltx@mark\fi{% +% \pltx@cond{\ifnum0\ifcat A\noexpand#21\fi\ifcat=\noexpand#21\fi>\z@}\fi +% {\@firstoftwo}{\@secondoftwo}% +% }{\@secondoftwo}} +% +% \def\@text@composite@x#1#2{% +% \ifx#1\relax +% #2% +% \else\pltx@isletter{#1}{#1}{% +% \begingroup +% \setbox\z@\hbox\bgroup% +% \ltj@yablshift\z@ \ltj@tablshift\z@ +% #1% +% \@tempcntb\directlua{luatexja.pltx_composite_last_node_char()}%) +% \xdef\pltx@composite@temp{\noexpand\@tempcntb=\the\@tempcntb\relax}% +% \aftergroup\pltx@composite@temp +% \egroup +% \ifnum\ltjgetparameter{direction}=3 % +% \@tempdima=\ltj@tablshift sp\else\@tempdima=\ltj@yablshift sp\fi +% \ifnum\@tempcntb<\z@\@tempcnta\z@\else +% \@tempcnta=\ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{\@tempcntb}}\relax +% \ifnum\@tempcnta=\z@\@tempdima\z@\fi +% \fi +% \ifnum\@tempcnta>\z@ +% \ifodd\ltjgetparameter{alxspmode}{\@tempcntb}\else\leavevmode\hbox{}\fi +% \begingroup\mathsurround\z@$% +% \hbox{\lower\@tempdima\box\z@} +% $\endgroup% +% \ifnum\ltjgetparameter{alxspmode}{\@tempcntb}<2\hbox{}\fi +% \else +% \ifdim\@tempdima=\z@{\ltj@yablshift\z@ \ltj@tablshift\z@#1}% +% \else\lower\@tempdima\box\z@\fi +% \fi +% \endgroup}% +% \fi +% } + +\endinput diff --git a/src/patches/lltjdefs.sty b/src/patches/lltjdefs.sty index 3efb011..29f38b3 100644 --- a/src/patches/lltjdefs.sty +++ b/src/patches/lltjdefs.sty @@ -3,10 +3,12 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjdefs}[2020/02/27 Default font settings of LuaTeX-ja] +\ProvidesPackage{lltjdefs}[2020/03/16 Default font settings of LuaTeX-ja] -\ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{IPAExMincho}\fi -\ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{IPAExGothic}\fi +\ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{file:HaranoAjiMincho-Regular.otf}\fi +\ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{file:HaranoAjiGothic-Medium.otf}\fi +%\ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{IPAExMincho}\fi +%\ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{IPAExGothic}\fi \ifdefined\ltj@stdyokojfm\else\def\ltj@stdyokojfm{ujis}\fi \ifdefined\ltj@stdtatejfm\else\def\ltj@stdtatejfm{ujisv}\fi \InputIfFileExists{luatexja.cfg}{%