From 0c95c4de261d864abea50e6bf8da4da13a9b1c7c Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 17 May 2020 22:34:22 +0000 Subject: luatexja (18may20) git-svn-id: svn://tug.org/texlive/trunk@55192 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/luatex/luatexja/README | 8 +- .../texmf-dist/doc/luatex/luatexja/luatexja-en.pdf | Bin 685486 -> 689335 bytes .../texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf | Bin 1101330 -> 1109921 bytes Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx | 94 ++++++++++++++------- .../tex/luatex/luatexja/addons/luatexja-preset.sty | 26 +++--- .../texmf-dist/tex/luatex/luatexja/jfm-propw.lua | 9 ++ Master/texmf-dist/tex/luatex/luatexja/jfm-ujis.lua | 72 ++++++++++++++-- .../texmf-dist/tex/luatex/luatexja/jfm-ujisv.lua | 1 + .../texmf-dist/tex/luatex/luatexja/ltj-jfont.lua | 54 +++++++----- .../texmf-dist/tex/luatex/luatexja/ltj-latex.sty | 3 +- .../tex/luatex/luatexja/ltj-setwidth.lua | 14 ++- Master/texmf-dist/tex/luatex/luatexja/luatexja.sty | 2 +- .../tex/luatex/luatexja/patches/lltjfont.sty | 56 +++++++----- .../tex/luatex/luatexja/patches/lltjp-collcell.sty | 37 ++++++++ 14 files changed, 278 insertions(+), 98 deletions(-) create mode 100644 Master/texmf-dist/tex/luatex/luatexja/jfm-propw.lua create mode 100644 Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-collcell.sty diff --git a/Master/texmf-dist/doc/luatex/luatexja/README b/Master/texmf-dist/doc/luatex/luatexja/README index 6916b1a7151..b87dcbdd980 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/README +++ b/Master/texmf-dist/doc/luatex/luatexja/README @@ -1,4 +1,4 @@ -The LuaTeX-ja Package 20200412.0 +The LuaTeX-ja Package 20200517.0 -------------------------------- Copyright (c) 2011--2020 The LuaTeX-ja project License: modified BSD (see COPYING) @@ -45,9 +45,9 @@ Installation 2. If you must/want to install manually: a. Download the source archive from CTAN, - or tagged as 20200412.0 in the Git repository by + or tagged as 20200517.0 in the Git repository by + ;a=snapshot;h=refs/tags/20200517.0;sf=tgz> b. Extract the archive and process following three files by LuaLaTeX to generate classes for Japanese typesetting: @@ -95,4 +95,4 @@ Notes * src/*.{ins.dtx} and src/ltj-kinsoku_make.tex are not needed in regular use. -Last commit date: Sun Apr 12 18:04:02 2020 +0900 +Last commit date: Sun May 17 10:43:32 2020 +0900 diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf b/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf index 5d9d6fc11aa..4cb0c4d8d36 100644 Binary files a/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf and b/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf differ diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf b/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf index c263107d773..f336e82bfdc 100644 Binary files a/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf and b/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf differ diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx b/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx index d2ec828f7e3..09df86b3611 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx +++ b/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx @@ -1,5 +1,6 @@ %<*!showexpl> %#! lualatex -shell-escape +%% KozMinPr6N-Regular.otf is needed to typeset this document. %%%%% section ==> 章 %%%%% subsection => 節 @@ -33,6 +34,7 @@ \usepackage{unicode-math} \setmonojfont{HaranoAjiGothic-Regular.otf} \setmathfont[Scale=MatchLowercase]{XITSMath} +\newjfontface\KOZM{KozMinPr6N-Regular.otf} \setLaTeXa{\scshape a} %<*ja> @@ -151,6 +153,7 @@ \theoremstyle{definition} %\newtheorem{defn}{Definition} %\newtheorem{defn}{定義} +\DeclareMathOperator\nint{nint} %%%%%%%% logo \usepackage{metalogo} @@ -1966,7 +1969,7 @@ these eight ranges belongs to the character range~217. \centering\footnotesize \def\ch#1{% {\fboxsep0pt\fcolorbox{cyan}{white}% - {\normalsize\char"20#1}}\ (\texttt{U+20#1})} %" + {\normalsize\KOZM\UTF{20#1}}}\ (\texttt{U+20#1})} %" % 13: JIS X0213, AJ, Adobe-Japan-1 only \begin{tabular}{ll>{\color{white}}lll>{\color{white}}l} \ch{02}&{En space}&AJ& @@ -3465,7 +3468,7 @@ subsection. At the calling of \cs{jfont}, you must specify which JFM will be used for this font by the following keys: % %<*ja> -JFMは文字と和文組版で自動的に挿入される +JFMは文字の寸法情報と和文組版で自動的に挿入される グルー/カーンの寸法情報を持っている.JFMの構造は次の節で述べる. \cs{jfont} 命令の呼び出しの際には,どのJFMを用いるのかを以下のキーで 指定する必要がある: @@ -3540,7 +3543,7 @@ The following horizontal JFMs are shipped with \LuaTeX-ja: %<*en> \item[\texttt{jfm-ujis.lua}] A standard horizontal JFM in \LuaTeX-ja. This JFM is based on \verb+upnmlminr-h.tfm+, a metric for UTF/OTF package that - is used in \upTeX. When you use the \Pkg{luatexja-otf} package, you should use this JFM. + is used in \upTeX. When you are going to use the \Pkg{luatexja-otf} package, you should use this JFM. % %<*ja> \item[\texttt{jfm-ujis.lua}] \LuaTeX-jaの標準JFMである.このJFMは\upTeX で @@ -3598,6 +3601,20 @@ The difference among these three~JFMs is shown in \autoref{tab-difjfm}. \label{fig:jfmvar} \end{figure} +%<*ja> +また,プロポーショナル組用に\texttt{jfm-prop.lua}と\texttt{jfm-propw.lua}も用意されている. +どちらのJFMも文字幅の情報と自動挿入されるグルー・カーンの情報は持たない(つまりグリフの文字幅をそのまま採用する). +\texttt{jfm-prop.lua}と\texttt{jfm-propw.lua}の差は,前者が +文字の高さ・深さ情報も持たないのに対し,後者は持っている点である +\footnote{プロポーショナル組の状況でルビをつけたい,などという状況では\texttt{jfm-propw.lua}が有用かもしれない.}. +% +%<*en> +Furthermore, \LuaTeX-ja also ship two JFMs, namely \texttt{jfm-prop.lua}~and~\texttt{jfm-propw.lua}, + for ``proportional typesetting''. +Both JFMs don't have any character width information, nor glues/kerns information. +\texttt{jfm-prop.lua} also also not have character height and depth information, while \texttt{jfm-propw.lua} has them. +% + %<*en> \item[jfmvar=] Sometimes there is a need that \ldots. @@ -3673,6 +3690,7 @@ NFSS2用の命令(\ref{ssec:chgfnt}節,\ref{ssec:nfsspat}節)における % %<*ja> +\newpage \paragraph{\texttt{extend}と\texttt{slant}} OpenType機能と見かけ上同じような形式で指定できるものに, \begin{description} @@ -3693,7 +3711,7 @@ The following setting can be specified as OpenType font features: \item[\texttt{slant=}] slant the font. \end{cslist} Note that \LuaTeX-ja doesn't adjust JFMs by these \texttt{extend} and \texttt{slant} -settings; you have to write new JFMs on purpose. +settings; one have to write new JFMs on purpose. For example, the following example uses the standard JFM \texttt{jfm-ujis.lua}, hence letter-spacing and the width of italic correction are not correct: % @@ -3704,30 +3722,21 @@ letter-spacing and the width of italic correction are not correct: \end{LTXexample} %<*ja> -\paragraph{\texttt{ltjksp} 指定} +\paragraph{\texttt{ltjksp}指定} \label{pg:ltjksp} \LuaTeX-ja標準では, -JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\ +JFM中における\texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\ \texttt{kanjiskip\_shrink}キー(\pageref{pg:ksp_nat}ページ)の使用によって, 「JFM由来のグルーの他に,\Param{kanjiskip}の自然長/伸び量/縮み量の一部が 同じ場所に挿入される」という状況が起こりうる. この機能を無効化し,バージョン20150922.0以前と同じような組版を得るためには -他のOpenType機能と同じように\ \texttt{-ltjksp}\ 指定を行えば良い. -\begin{LTXexample}[width=16\zw] -\leavevmode -\ltjsetparameter{kanjiskip=0pt plus 3\zw} -\vrule\hbox to 15\zw{あ「い」う,えお}\vrule\\ -\jfont\G=HaranoAjiMincho-Regular% - :jfm=ujis;-ltjksp at \zw -\G\leavevmode% -\vrule\hbox to 15\zw{あ「い」う,えお}\vrule -\end{LTXexample} +他のOpenType機能と同じように\texttt{-ltjksp}指定を行えば良い(\autoref{fig:ltjksp}参照). なお, \begin{lstlisting} \jfont\G=HaranoAjiMincho-Regular:jfm=ujis;-ltjksp;+ltjksp at \zw \end{lstlisting} -のように \texttt{+ltjksp} 指定を行った場合は,\texttt{kanjiskip\_natural} など -3キーは再び有効化される.\texttt{-ltjksp}, \texttt{+ltjksp} を複数回指定した場合は, +のように\texttt{+ltjksp}指定を行った場合は,\texttt{kanjiskip\_natural}など +3キーは再び有効化される.\texttt{-ltjksp}, \texttt{+ltjksp}を複数回指定した場合は, 最後に指定したものが有効となる. % %<*en> @@ -3737,8 +3746,10 @@ JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\ \texttt{kanjiskip\_shrink} keys (Page~\pageref{pg:ksp_nat}) makes tha \LuaTeX-ja inserts not only a glue which is specified by a JFM, and also the natural width/stretch part/shrink part of \Param{kanjiskip}. - -This functionality is disabled by \texttt{-ltjksp} specification. +This functionality is disabled by \texttt{-ltjksp} specification, +as shown in~\autoref{fig:ltjksp}. +% +\begin{figure} \begin{LTXexample}[width=16\zw] \leavevmode \ltjsetparameter{kanjiskip=0pt plus 3\zw} @@ -3748,7 +3759,9 @@ This functionality is disabled by \texttt{-ltjksp} specification. \G\leavevmode% \vrule\hbox to 15\zw{あ「い」う,えお}\vrule \end{LTXexample} -% +\caption{\texttt{ltjksp}} +\label{fig:ltjksp} +\end{figure} @@ -3812,7 +3825,7 @@ A font defined by~\cs{tfont} differs the following points from that by~\cs{jfont \begin{itemize} \item OpenType Feature~\texttt{vrt2}% \footnote{If the font does not define \texttt{vrt2} feature, - use \texttt{vert} instead.} is automatically activated, + \texttt{vert} is used instead.} is automatically activated, unless \texttt{vert}~and//or~\texttt{vrt2} are explicitly activated or deactivated (as the second line in the example below). \begin{lstlisting} @@ -3857,6 +3870,8 @@ A font defined by~\cs{tfont} differs the following points from that by~\cs{jfont By default, it substitutes ideographic comma/period for fullwidth comma/period, and double prime quotation marks for double quotation marks (See~\autoref{fig:jpotf}). + One can customize substitutions by lua~function \verb+luatexja.jfont.register_vert_replace+\ % + (see Japanese version of this manual). \end{itemize} % %<*ja> @@ -4727,6 +4742,26 @@ Hence we have the following result: (optional, version~2 or~later) % + \item[round\_threshold=] +%<*ja> +(任意,バージョン3以降,文字クラス0のみ) + +「実際のグリフの幅に合わせて文字幅を整数倍する」際のしきい値を指定する. +より正確に述べると,次のようになる.このフィールドに正の数$r$が指定されていたとし, +文字クラス0で指定されている文字幅が$w$,文字クラス0に属する文字のグリフの幅が$w'$であったとする. +$n=\nint(w/w')$とした +\footnote{ここで,$\nint(a)=\lfloor a+0.5\rfloor$は$a$に「もっとも近い整数」を表す.} +とき,もし$w'>w$かつ$|w/w'-n|\char` +%<*en> +(optional, version~3 or~later, only available in character class~0) +% + + \end{cslist} %<*ja> @@ -4817,7 +4852,7 @@ as follows: %\paragraph{仮想的な文字} %\paragraph{Imaginary characters} %<*en> -As described before, you can specify several ``imaginary characters'' in +As described before, one can specify several ``imaginary characters'' in \texttt{chars} field. The most of these characters are regarded as the characters of class 0 in \pTeX. As a result, \LuaTeX-ja can control typesetting finer than \pTeX. @@ -4967,7 +5002,7 @@ an external package is needed to support this in plain \TeX\ and \autoref{tab-math} shows counterparts to \TeX's primitives for math font families. There is no relation between the value of \cs{fam} and that of \cs{jfam}; with appropriate settings, -you can set both \cs{fam} and \cs{jfam} to the same value. +one can set both \cs{fam} and \cs{jfam} to the same value. Here in the argument of \Param{jatextfont} etc.\ is a control sequence which is defined by \cs{jfont}, i.e., a \emph{horizontal} Japanese font. @@ -5018,7 +5053,7 @@ be accessed via \verb+luatexbase.add_to_callback+ function and so on, as other c %\item[\texttt{luatexja.load\_jfm} callback] %\item[\texttt{luatexja.load\_jfm}コールバック] %<*en> -With this callback you can overwrite JFMs. +With this callback, one can overwrite JFMs. This callback is called when a new JFM is loaded. % %<*ja> @@ -8343,7 +8378,7 @@ Std/StdNフォントであり,その他はAdobe-Japan1-5対応である. \midrule %\textit{rounded gothic} %\textgt{丸ゴシック} -&&\AD{Sans}{Heavy}\\ +&&\AD{Sans}{Medium}\\ \bottomrule \end{tabular} \end{center} @@ -8375,7 +8410,7 @@ Std/StdNフォントであり,その他はAdobe-Japan1-5対応である. \midrule %\textit{rounded gothic} %\textgt{丸ゴシック} -&&\AD{Sans}{Black}\\ +&&\AD{Sans}{Medium}\\ \bottomrule \end{tabular} \end{center} @@ -8411,7 +8446,7 @@ There is not rounded gothic family in Harano Aji Fonts. \midrule %\textit{rounded gothic} %\textgt{丸ゴシック} -&&HaranoAjiGothic-Heavy.otf\\ +&&HaranoAjiGothic-Medium.otf\\ \bottomrule \end{tabular} \end{center} @@ -11366,10 +11401,11 @@ direction~whatsit内部のノードリストに,\textit{dir\_box}として格 縦組時には,「\hbox to \zw{、}」(\texttt{U+3001})から「\ltjjachar"FE11」(\texttt{U+FE11})%" のように縦組用字形への置き換えに関係する処理は,以下のようになっている. + \begin{table}[t] \def\D#1#2#3#4{% {\fboxsep0pt\fcolorbox{cyan}{white}% - {\large\char"#1#2#3#4}}\ (\texttt{U+#1#2#3#4})%" + {\large\KOZM\ltjjachar"#1#2#3#4}}\ (\texttt{U+#1#2#3#4})%" } \caption{\LuaTeX-ja標準で行われる縦組形への置換} \label{tab:vert_replace}\small\centering diff --git a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty index b64f7887ef9..58a585768a3 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-preset.sty @@ -1,5 +1,5 @@ % luatexja-preset.sty -\ProvidesPackage{luatexja-preset}[2020/03/27 Japanese font presets] +\ProvidesPackage{luatexja-preset}[2020-05-15 Japanese font presets] \RequirePackage{expl3,l3keys2e} \RequirePackage{luatexja} @@ -278,7 +278,7 @@ gt-b = Source~Han~Sans~Bold, gt-u = Source~Han~Sans~Medium, gt-eb = Source~Han~Sans~Heavy, - mg-m = Source~Han~Sans~Heavy, + mg-m = Source~Han~Sans~Medium, mc-l = Source~Han~Serif~Light, __custom = false, __office = false, __noembed = false, } @@ -289,7 +289,7 @@ gt-b = Source~Han~Sans~JP~Bold, gt-u = Source~Han~Sans~JP~Medium, gt-eb = Source~Han~Sans~JP~Heavy, - mg-m = Source~Han~Sans~JP~Heavy, + mg-m = Source~Han~Sans~JP~Medium, mc-l = Source~Han~Serif~JP~Light, __custom = false, __office = false, __noembed = false, } @@ -300,7 +300,7 @@ gt-b = Noto~Sans~CJK~Bold, gt-u = Noto~Sans~CJK~Medium, gt-eb = Noto~Sans~CJK~Black, - mg-m = Noto~Sans~CJK~Black, + mg-m = Noto~Sans~CJK~Medium, mc-l = Noto~Serif~CJK~Light, __custom = false, __office = false, __noembed = false, } @@ -311,7 +311,7 @@ gt-b = Noto~Sans~CJK~JP~Bold, gt-u = Noto~Sans~CJK~JP~Medium, gt-eb = Noto~Sans~CJK~JP~Black, - mg-m = Noto~Sans~CJK~JP~Black, + mg-m = Noto~Sans~CJK~JP~Medium, mc-l = Noto~Serif~CJK~JP~Light, __custom = false, __office = false, __noembed = false, } @@ -324,7 +324,7 @@ gt-b = HaranoAjiGothic-Bold.otf, gt-u = HaranoAjiGothic-Medium.otf, gt-eb = HaranoAjiGothic-Heavy.otf, - mg-m = HaranoAjiGothic-Heavy.otf, + mg-m = HaranoAjiGothic-Medium.otf, mc-l = HaranoAjiMincho-Light.otf, __custom = false, __office = false, __noembed = false, } @@ -463,16 +463,16 @@ \cs_new:Nn \__ltjpreset_substitute:nnnn { \group_begin: \suppressfontnotfounderror=1 - \cs_if_exist:cT {ltjpreset_font_#1_#2:} { - \__ltjpreset_wrap_fontname:e { \cs:w ltjpreset_font_#1_#2: \cs_end: } - \font \g__ltjpreset_font_test: = \l__preset_font_name:\relax + \cs_if_exist:cTF { __ltjpreset_font_#1_#2: } { + \__ltjpreset_wrap_fontname:e { \cs:w __ltjpreset_font_#1_#2: \cs_end: } + \font \g__ltjpreset_font_test: = \l__ltjpreset_font_name:\relax \ifx \g__ltjpreset_font_test: \nullfont \msg_warning:nnxxxx { luatexja-preset }{ no-font } - { \cs:w ltjpreset_font_#1_#2: \cs_end: }{ #1/#2 } - { \cs:w ltjpreset_font_#3_#4: \cs_end: }{ #3/#4 } - \cs_gset_eq:cc { ltjpreset_font_#1_#2: } { ltjpreset_font_#3_#4: } + { \cs:w __ltjpreset_font_#1_#2: \cs_end: }{ #1/#2 } + { \cs:w __ltjpreset_font_#3_#4: \cs_end: }{ #3/#4 } + \cs_gset_eq:cc { __ltjpreset_font_#1_#2: } { __ltjpreset_font_#3_#4: } \fi - } { \cs_gset_eq:cc { ltjpreset_font_#1_#2: } { ltjpreset_font_#3_#4: } } + } { \cs_gset_eq:cc { __ltjpreset_font_#1_#2: } { __ltjpreset_font_#3_#4: } } \group_end: } diff --git a/Master/texmf-dist/tex/luatex/luatexja/jfm-propw.lua b/Master/texmf-dist/tex/luatex/luatexja/jfm-propw.lua new file mode 100644 index 00000000000..71dc1ae6940 --- /dev/null +++ b/Master/texmf-dist/tex/luatex/luatexja/jfm-propw.lua @@ -0,0 +1,9 @@ +luatexja.jfont.define_jfm { + dir = 'yoko', + zw = 1.0, zh = 1.0, + + [0] = { + align = 'left', left = 0.0, down = 0.0, + width = 'prop', height = 0.88, depth = 0.12, italic=0.0, + } +} diff --git a/Master/texmf-dist/tex/luatex/luatexja/jfm-ujis.lua b/Master/texmf-dist/tex/luatex/luatexja/jfm-ujis.lua index 10b44d8103d..5df1986ea61 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/jfm-ujis.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/jfm-ujis.lua @@ -28,6 +28,7 @@ local t = { [8] = { 0, 0, 0, kanjiskip_shrink=1 }, }, kern = { [307] = 0 }, + round_threshold = 0.01, }, [1] = { -- 開き括弧類 @@ -46,6 +47,9 @@ local t = { [4] = { 0, 0, 0, kanjiskip_shrink=1 }, [5] = { 0, 0, 0, kanjiskip_shrink=1 }, [105] = { 0, 0, 0, kanjiskip_shrink=1 }, + [205] = { 0, 0, 0, kanjiskip_shrink=1 }, + [305] = { 0, 0, 0, kanjiskip_shrink=1 }, + [405] = { 0, 0, 0, kanjiskip_shrink=1 }, [6] = { 0, 0, 0, kanjiskip_shrink=1 }, [007] = { 0, 0, 0, kanjiskip_shrink=1 }, [107] = { 0, 0, 0, kanjiskip_shrink=1 }, @@ -70,6 +74,9 @@ local t = { [4] = { 0, 0, 0, kanjiskip_shrink=1 }, [5] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, [105] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [205] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [305] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [405] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, [6] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, [007] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, [107] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, @@ -92,6 +99,9 @@ local t = { [4] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, [5] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, [105] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [205] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [305] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [405] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, [6] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, [007] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, [107] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, @@ -111,6 +121,9 @@ local t = { [3] = { 0.75, 0.0, 0.25, priority=1, ratio=1./3, kanjiskip_stretch=1 }, [5] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, [105] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [205] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [305] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, + [405] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, [6] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, [007] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, [107] = { 0.5 , 0.0, 0.5, ratio=0, kanjiskip_stretch=1 }, @@ -120,7 +133,7 @@ local t = { }, [5] = { -- 分離禁止文字 - chars = { '—', '―', '‥', '…', '〳', '〴', '〵', }, + chars = { '―', '‥', '…', '〳', '〴', '〵', }, align = 'left', left = 0.0, down = 0.0, width = 1.0, height = 0.88, depth = 0.12, italic=0.0, glue = { @@ -131,8 +144,7 @@ local t = { [6] = { 0, 0, 0, kanjiskip_shrink=1 }, }, kern = { - [5] = 0.0, - [105] = 0.0 + [5] = 0.0, [105] = 0.0, [205] = 0.0, [305] = 0.0, [405] = 0.0, } }, @@ -148,8 +160,53 @@ local t = { [6] = { 0, 0, 0, kanjiskip_shrink=1 }, }, kern = { - [5] = 0.0, - [105] = 0.0 + [5] = 0.0, [105] = 0.0, [205] = 0.0, [305] = 0.0, [405] = 0.0, + } + }, + + [205] = { -- em-dash + chars = { 0x2014 }, + align = 'middle', left = 0.0, down = 0.0, + width = 1, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [2] = { 0, 0, 0, kanjiskip_shrink=1 }, + [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [4] = { 0, 0, 0, kanjiskip_shrink=1 }, + [6] = { 0, 0, 0, kanjiskip_shrink=1 }, + }, + kern = { + [5] = 0.0, [105] = 0.0, [205] = 0.0, [305] = 0.0, [405] = 0.0, + } + }, + [305] = { -- two-em dash + chars = { 0x2E3A }, + align = 'middle', left = 0.0, down = 0.0, + width = 2, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [2] = { 0, 0, 0, kanjiskip_shrink=1 }, + [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [4] = { 0, 0, 0, kanjiskip_shrink=1 }, + [6] = { 0, 0, 0, kanjiskip_shrink=1 }, + }, + kern = { + [5] = 0.0, [105] = 0.0, [205] = 0.0, [305] = 0.0, [405] = 0.0, + } + }, + [405] = { -- three-em dash + chars = { 0x2E3B }, + align = 'middle', left = 0.0, down = 0.0, + width = 3, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [1] = { 0.5 , 0.0, 0.5, ratio=1, kanjiskip_stretch=1 }, + [2] = { 0, 0, 0, kanjiskip_shrink=1 }, + [3] = { 0.25, 0.0, 0.25, priority=1, ratio=1 }, + [4] = { 0, 0, 0, kanjiskip_shrink=1 }, + [6] = { 0, 0, 0, kanjiskip_shrink=1 }, + }, + kern = { + [5] = 0.0, [105] = 0.0, [205] = 0.0, [305] = 0.0, [405] = 0.0, } }, @@ -170,8 +227,7 @@ local t = { [8] = { 0, 0, 0, kanjiskip_shrink=1 }, }, kern = { - [5] = 0.0, - [105] = 0.0 + [5] = 0.0, [105] = 0.0, [205] = 0.0, [305] = 0.0, [405] = 0.0, } }, @@ -228,7 +284,7 @@ local t = { } }, - [307] = { -- 1/4 角 + [307] = { -- 合成用(半)濁点 chars = { 0x3099, 0x309A }, align = 'right', left = 0.0, down = 0.0, width = 0, height = 0.88, depth = 0.12, italic=0.0, diff --git a/Master/texmf-dist/tex/luatex/luatexja/jfm-ujisv.lua b/Master/texmf-dist/tex/luatex/luatexja/jfm-ujisv.lua index ccae212f886..b2044bde5a3 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/jfm-ujisv.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/jfm-ujisv.lua @@ -28,6 +28,7 @@ local t = { [8] = { 0, 0, 0, kanjiskip_shrink=1 }, }, kern = { [307] = 0 }, + round_threshold = 0.01, }, [1] = { -- 開き括弧類 diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua index bb5d99561a1..cecb8d66250 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua @@ -3,7 +3,7 @@ -- luatexbase.provides_module({ name = 'luatexja.jfont', - date = '2020-04-01', + date = '2020-05-17', description = 'Loader for Japanese fonts', }) @@ -108,6 +108,8 @@ function luatexja.jfont.define_jfm(to) if type(v.down)~='number' then v.down = 0.0 end + v.round_threshold = ((t.version>=3)and(i==0)and(type(v.round_threshold)=='number')) + and v.round_threshold or nil if t.version>=2 then if v.end_stretch then defjfm_res= nil; return end if v.end_shrink then defjfm_res= nil; return end @@ -184,13 +186,17 @@ local update_jfm_cache do local floor = math.floor local function myround(a) return floor(a+0.5) end + local mult_ignore_key = { + round_threshold=true, kanjiskip_natural=true, kanjiskip_stretch=true, kanjiskip_shrink=true, + raio=true, priority=true + } local function mult_table(old,scale) -- modified from table.fastcopy if old then local new = { } for k,v in next, old do if type(v) == "table" then new[k] = mult_table(v,scale) - elseif type(v) == "number" then + elseif type(v) == "number" and not mult_ignore_key[k] then new[k] = myround(v*scale) else new[k] = v @@ -213,12 +219,13 @@ do for k,w in pairs(v.glue) do v[k] = { nil, - ratio=w.ratio/sz, - priority=FROM_JFM + w.priority/sz, + ratio=w.ratio, + priority=FROM_JFM + w.priority, width = w[1], stretch = w[2], shrink = w[3], - kanjiskip_natural = w.kanjiskip_natural and w.kanjiskip_natural/sz, - kanjiskip_stretch = w.kanjiskip_stretch and w.kanjiskip_stretch/sz, - kanjiskip_shrink = w.kanjiskip_shrink and w.kanjiskip_shrink/sz, + kanjiskip_natural = w.kanjiskip_natural, + kanjiskip_stretch = w.kanjiskip_stretch, + kanjiskip_shrink = w.kanjiskip_shrink, + round_threshold = w.round_threshold, } end for k,w in pairs(v.kern) do @@ -331,7 +338,7 @@ do local fmtable = { jfm = j, size = f.size, var = jfm_var, with_kanjiskip = jfm_ksp, zw = sz.zw, zh = sz.zh, - chars = sz.chars, char_type = sz.char_type, + chars = sz.chars, char_type = sz.char_type, kanjiskip = sz.kanjiskip, xkanjiskip = sz.xkanjiskip, chars_cbcache = {}, vert_activated = vert_activated, @@ -449,9 +456,10 @@ do otfl_fdr= luatexbase.remove_from_callback('define_font', 'luaotfload.define_font') luatexbase.add_to_callback('define_font',luatexja.font_callback,"luatexja.font_callback", 1) - local match, sp = string.match, tex.sp - local function load_jfmonly(spec, dir) - local spec, size = match(spec,'(.+)%s+at%s*([%.%w]*)') + local match, sp, scan_arg = string.match, tex.sp, token.scan_argument + local function load_jfmonly() + local spec, size = match(scan_arg(), '(.+)%s+at%s*([%.%w]*)') + local dir = scan_arg() size = sp(size); extract_metric(spec) jfm_dir = dir local i = load_jfont_metric() @@ -485,10 +493,12 @@ do end local kfam_list, Nkfam_list = {}, {} - function luatexja.jfont.add_kfam(fam) - kfam_list[fam]=true + function luatexja.jfont.add_kfam() + kfam_list[scan_arg()]=true end - function luatexja.jfont.search_kfam(fam, use_fd) + function luatexja.jfont.search_kfam() + local fam = scan_arg() + local use_fd = (scan_arg() =='true') if kfam_list[fam] then tex.sprint(cat_lp, '\\let\\ifin@\\iftrue '); return elseif Nkfam_list[fam] then @@ -510,11 +520,11 @@ do end end local ffam_list, Nffam_list = {}, {} - function luatexja.jfont.is_ffam(fam) - tex.sprint(cat_lp, '\\let\\ifin@\\if' .. (ffam_list[fam] or 'false ')) + function luatexja.jfont.is_ffam() + tex.sprint(cat_lp, '\\let\\ifin@\\if' .. (ffam_list[scan_arg()] or 'false ')) end - function luatexja.jfont.add_ffam(fam) - ffam_list[fam]='true ' + function luatexja.jfont.add_ffam() + ffam_list[scan_arg()]='true ' end function luatexja.jfont.search_ffam_declared() local s = '' @@ -523,7 +533,8 @@ do end tex.sprint(cat_lp, s) end - function luatexja.jfont.search_ffam_fd(fam) + function luatexja.jfont.search_ffam_fd() + local fam = scan_arg() if Nffam_list[fam] then tex.sprint(cat_lp, '\\let\\ifin@\\iffalse '); return else @@ -645,11 +656,12 @@ end -- ここから先は 新 \selectfont の内部でしか実行されない do + local scan_arg = token.scan_argument local alt_font_base, alt_font_base_num local aftl_base -- EXT - function luatexja.jfont.does_alt_set(bbase) - aftl_base = alt_font_table_latex[bbase] + function luatexja.jfont.does_alt_set() + aftl_base = alt_font_table_latex[scan_arg()] tex.sprint(cat_lp, aftl_base and '\\@firstofone' or '\\@gobble') end -- EXT diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty b/Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty index ff6a72bab76..8af066eee6e 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty @@ -12,7 +12,7 @@ \def\luatexjalatexLoaded{\endinput} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ltj-latex}[2019/09/26 LaTeX support of LuaTeX-ja] +\ProvidesPackage{ltj-latex}[2020-05-17 LaTeX support of LuaTeX-ja] % cleanup at end of the document %\let\ltj@@orig@end=\@@end @@ -79,6 +79,7 @@ \ltj@pkgpatch{preview} %% at \begin{document} % (preview package has delayed option) \ltj@pkgpatch{array} %% at \begin{document} +\ltj@pkgpatch{collcell} %% at \begin{document} \ltj@pkgpatch@im{unicode-math} \ltj@pkgpatch@im{siunitx} \ltj@pkgpatch@im{microtype} diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-setwidth.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-setwidth.lua index f21c0059c86..964d49e0635 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/ltj-setwidth.lua +++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-setwidth.lua @@ -87,7 +87,7 @@ local call_callback = luatexbase.call_callback local fshift = { down = 0, left = 0 } -local min, max = math.min, math.max +local min, max, floor, abs = math.min, math.max, math.floor, math.abs local rule_subtype = (status.luatex_version>=85) and 3 or 0 @@ -129,6 +129,13 @@ local function capsule_glyph_yoko(p, met, char_data, head, dir) local q head, q = node_remove(head, p) + if pwidth > fwidth then + if char_data.round_threshold then + local frac = pwidth / fwidth + local quot = floor(frac+0.5) + if abs(frac-quot) fwidth and char_data.round_threshold then + local frac = pwidth / fwidth + local quot = floor(frac+0.5) + if abs(frac-quot) %%%% VERSION -\def\LuaTeXjaversion{20200412.0} +\def\LuaTeXjaversion{20200517.0} \directlua{require('ltj-unicode-ccfix.lua')}% catcode of ideographs diff --git a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty index e5f79a8c444..9be20e440c6 100644 --- a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty +++ b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjfont}[2020-04-12 Patch to NFSS2 for LuaTeX-ja] +\ProvidesPackage{lltjfont}[2020-05-17 Patch to NFSS2 for LuaTeX-ja] %% patching \DeclareTextComposite \def\ltj@chardef@text@cmd#1{% @@ -91,6 +91,9 @@ \newluafunction\ltj@@is@kyenc@@inner \newluafunction\ltj@@is@ktenc@@inner \newluafunction\ltj@@is@kenc@@inner +\newluafunction\ltj@@is@ffam@@inner +\newluafunction\ltj@@add@ffam@@inner +\newluafunction\ltj@@add@kfam@@inner \directlua{% local lf = lua.get_functions_table() lf[\the\ltj@@add@fenc@@inner] = luatexja.jfont.add_fenc_list @@ -99,6 +102,9 @@ lf[\the\ltj@@is@kyenc@@inner] = luatexja.jfont.is_kyenc lf[\the\ltj@@is@ktenc@@inner] = luatexja.jfont.is_ktenc lf[\the\ltj@@is@kenc@@inner] = luatexja.jfont.is_kenc + lf[\the\ltj@@is@ffam@@inner] = luatexja.jfont.is_ffam + lf[\the\ltj@@add@ffam@@inner] = luatexja.jfont.add_ffam + lf[\the\ltj@@add@kfam@@inner] = luatexja.jfont.add_kfam } \luadef\ltj@@add@fenc \ltj@@add@fenc@@inner \luadef\ltj@@add@kyenc\ltj@@add@kyenc@@inner @@ -106,6 +112,9 @@ \luadef\ltj@@is@kyenc \ltj@@is@kyenc@@inner \luadef\ltj@@is@ktenc \ltj@@is@ktenc@@inner \luadef\ltj@@is@kenc \ltj@@is@kenc@@inner +\luadef\ltj@@is@ffam \ltj@@is@ffam@@inner +\luadef\ltj@@add@ffam \ltj@@add@ffam@@inner +\luadef\ltj@@add@kfam \ltj@@add@kfam@@inner {\def\cdp@elt#1#2#3#4{\ltj@@add@fenc{#1}}\cdp@list} @@ -210,7 +219,7 @@ \@empty \else \reserved@a \fi - \directlua{luatexja.jfont.add_ffam('\luatexluaescapestring{#2}')}% + \ltj@@add@ffam{#2}% }% } \def\DeclareKanjiFamily#1#2#3{% @@ -223,7 +232,7 @@ \@empty \else \reserved@a \fi - \directlua{luatexja.jfont.add_kfam('\luatexluaescapestring{#2}')}% + \ltj@@add@kfam{#2}% }% } \def\DeclareKanjiSubstitution#1#2#3#4{% @@ -578,27 +587,28 @@ \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)}% + \directlua{luatexja.jfont.search_kfam()}{#1}{\@ltj@use@fd}% \ifin@\edef\k@family{#1}\else\@notkfamtrue\fi % % alphabetic fonts part - \directlua{luatexja.jfont.is_ffam(\tmp@item)}% + \ltj@@is@ffam{#1}% \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}% + \ltj@@add@ffam{#1}\edef\f@family{#1}% \else \@tempswafalse - \def\cdp@elt##1{\ifcsname ##1+#1\endcsname\@tempswatrue\fi}% - \directlua{luatexja.jfont.search_ffam_declared()}% + \def\cdp@elt##1{\ifcsname ##1+#1\endcsname% + \@tempswatrue\def\cdp@elt####1\relax{}% + \fi}% + \directlua{luatexja.jfont.search_ffam_declared()}\relax% \if@tempswz - \directlua{luatexja.jfont.add_ffam(\tmp@item)}\edef\f@family{#1}% + \ltj@@add@ffam{#1}\edef\f@family{#1}% \else % now we search Nffam_list and font definition files. - \directlua{luatexja.jfont.search_ffam_fd(\tmp@item)}% + \directlua{luatexja.jfont.search_ffam_fd()}{#1}% \ifin@\edef\f@family{#1}\else\@notffamtrue\fi \fi \fi @@ -1026,19 +1036,22 @@ \expandafter\globaltfont\font@name\external@font\relax\font@name \csname \f@encoding+\f@family\endcsname \csname\curr@fontshape\endcsname} + +\newluafunction\ltj@@jfont@@jfmonly@@inner +\directlua{% + local lf = lua.get_functions_table() + lf[\the\ltj@@jfont@@jfmonly@@inner] = luatexja.jfont.load_jfmonly +} +\luadef\ltj@@jfont@@jfmonly \ltj@@jfont@@jfmonly@@inner \def\extract@jfont@onlyjfm{% \get@external@font \csxdef{ltj@@fontjfm/\expandafter\string\font@name}{% - \directlua{% - luatexja.jfont.load_jfmonly('\luatexluaescapestring{\external@font}', 'yoko') - }% + \ltj@@jfont@@jfmonly{\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') - }% + \ltj@@jfont@@jfmonly{\external@font}{tate}% }} \let\ltj@@al@do@subst@correction=\do@subst@correction @@ -1129,6 +1142,12 @@ %%%% \ClearAlternateKanjiFont % いつも global +\newluafunction\ltj@@does@alt@set@@inner +\directlua{% + local lf = lua.get_functions_table() + lf[\the\ltj@@does@alt@set@@inner] = luatexja.jfont.does_alt_set +} +\def\ltj@@does@alt@set#1#2{\luafunction\ltj@@does@alt@set@@inner{#1}{#2}} \def\ClearAlternateKanjiFont#1#2#3#4{% \directlua{luatexja.jfont.clear_alt_font_latex('\luatexluaescapestring{#1/#2/#3/#4}')}} @@ -1143,9 +1162,6 @@ \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 diff --git a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-collcell.sty b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-collcell.sty new file mode 100644 index 00000000000..43864429276 --- /dev/null +++ b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-collcell.sty @@ -0,0 +1,37 @@ +% +% lltjp-collcell.sty +% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{lltjp-collcell}[2020/05/06 Patch to collcell for LuaTeX-ja] + +\RequirePackage{etoolbox,collcell} + +\def\collcell@beforeuser{\ltjfakeboxbdd\ignorespaces} +\def\collcell@afteruser{\unskip\ltjfakeboxbdd} + +\def\collectcell#1#2\relax\pltx@next@inhibitglue\ltjfakeboxbdd\ignorespaces{% + \begingroup + \collect@cell@count\z@ + \collect@cell@toks{}% + \let\collect@cell@spaces\empty + \def\collect@cell@end{% + \expandafter\endgroup + \expandafter\collcell@beforeuser + \expandafter\ccell@swap\expandafter{\the\collect@cell@toks}{#1}% + \collcell@afteruser + }% + \collect@cell@look#2% +} +\patchcmd\collect@cell@arg{% + \cci{% + \collect@cell@look + }% +}{ + \cci{% + \collect@cell@look + }% + \ltjfakeboxbdd{\collect@cell@look} +}{}{} + +\endinput -- cgit v1.2.3