summaryrefslogtreecommitdiff
path: root/macros/luatex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/luatex')
-rw-r--r--macros/luatex/generic/lua-uni-algos/README.md4
-rw-r--r--macros/luatex/generic/lua-uni-algos/lua-uni-algos.pdfbin60471 -> 60487 bytes
-rw-r--r--macros/luatex/generic/lua-uni-algos/lua-uni-normalize.lua25
-rw-r--r--macros/luatex/generic/luatexja/README8
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja-en.pdfbin685486 -> 689335 bytes
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja-ja.pdfbin1101330 -> 1109921 bytes
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja.dtx94
-rw-r--r--macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty26
-rw-r--r--macros/luatex/generic/luatexja/src/jfm-propw.lua9
-rw-r--r--macros/luatex/generic/luatexja/src/jfm-ujis.lua72
-rw-r--r--macros/luatex/generic/luatexja/src/jfm-ujisv.lua1
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-jfont.lua54
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-latex.sty3
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-setwidth.lua14
-rw-r--r--macros/luatex/generic/luatexja/src/luatexja.sty2
-rw-r--r--macros/luatex/generic/luatexja/src/patches/lltjfont.sty56
-rw-r--r--macros/luatex/generic/luatexja/src/patches/lltjp-collcell.sty37
17 files changed, 298 insertions, 107 deletions
diff --git a/macros/luatex/generic/lua-uni-algos/README.md b/macros/luatex/generic/lua-uni-algos/README.md
index c964c8e883..9409918ab9 100644
--- a/macros/luatex/generic/lua-uni-algos/README.md
+++ b/macros/luatex/generic/lua-uni-algos/README.md
@@ -1,8 +1,8 @@
# The lua-uni-algos Package
-Version: v0.1
+Version: v0.2
-Date: 2020-05-14
+Date: 2020-05-17
Author: Marcel Krüger
diff --git a/macros/luatex/generic/lua-uni-algos/lua-uni-algos.pdf b/macros/luatex/generic/lua-uni-algos/lua-uni-algos.pdf
index d1100c84c5..52d31ecd93 100644
--- a/macros/luatex/generic/lua-uni-algos/lua-uni-algos.pdf
+++ b/macros/luatex/generic/lua-uni-algos/lua-uni-algos.pdf
Binary files differ
diff --git a/macros/luatex/generic/lua-uni-algos/lua-uni-normalize.lua b/macros/luatex/generic/lua-uni-algos/lua-uni-normalize.lua
index dc1356568c..4536a1b977 100644
--- a/macros/luatex/generic/lua-uni-algos/lua-uni-normalize.lua
+++ b/macros/luatex/generic/lua-uni-algos/lua-uni-normalize.lua
@@ -169,8 +169,17 @@ local function ccc_reorder(codepoints, i, j, k)
codepoints[new_pos] = first
return ccc_reorder(codepoints, i, j, k == i and i or k-1)
end
+local result_table = {}
+local function get_string()
+ local result_table = result_table
+ local s = char(unpack(result_table))
+ for i=1,#result_table do
+ result_table[i] = nil
+ end
+ return s
+end
function to_nfd_table(s, decomposition_mapping)
- local new_codepoints = newtable(#s, 0)
+ local new_codepoints = result_table
local j = 1
for _, c in codes(s) do
local decomposed = decomposition_mapping[c]
@@ -197,16 +206,18 @@ function to_nfd_table(s, decomposition_mapping)
end
end
ccc_reorder(new_codepoints, 1, #new_codepoints, 1)
- return new_codepoints
end
local function to_nfd(s)
- return char(unpack(to_nfd_table(s, decomposition_mapping)))
+ to_nfd_table(s, decomposition_mapping)
+ return get_string()
end
local function to_nfkd(s)
- return char(unpack(to_nfd_table(s, compatibility_mapping)))
+ to_nfd_table(s, compatibility_mapping)
+ return get_string()
end
local function to_nfc_generic(s, decomposition_mapping)
- local codepoints = to_nfd_table(s, decomposition_mapping)
+ to_nfd_table(s, decomposition_mapping)
+ local codepoints = result_table
local starter, lookup, last_ccc, lvt
local j = 1
for i, c in ipairs(codepoints) do
@@ -222,7 +233,7 @@ local function to_nfc_generic(s, decomposition_mapping)
end
elseif lvt then
if lvt == 1 then
- if c >= 0x1161 and c <= 0x11A7 then
+ if c >= 0x1161 and c <= 0x1175 then
lvt = 2
codepoints[starter] = ((codepoints[starter] - 0x1100) * 21 + c - 0x1161) * 28 + 0xAC00
goto CONTINUE
@@ -249,7 +260,7 @@ local function to_nfc_generic(s, decomposition_mapping)
::CONTINUE::
end
for i = j,#codepoints do codepoints[i] = nil end
- return char(unpack(codepoints))
+ return get_string()
end
local function to_nfc(s)
return to_nfc_generic(s, decomposition_mapping)
diff --git a/macros/luatex/generic/luatexja/README b/macros/luatex/generic/luatexja/README
index 6916b1a715..b87dcbdd98 100644
--- a/macros/luatex/generic/luatexja/README
+++ b/macros/luatex/generic/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
<http://git.osdn.jp/view?p=luatex-ja/luatexja.git
- ;a=snapshot;h=refs/tags/20200412.0;sf=tgz>
+ ;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/macros/luatex/generic/luatexja/doc/luatexja-en.pdf b/macros/luatex/generic/luatexja/doc/luatexja-en.pdf
index 5d9d6fc11a..4cb0c4d8d3 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja-en.pdf
+++ b/macros/luatex/generic/luatexja/doc/luatexja-en.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf b/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
index c263107d77..f336e82bfd 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
+++ b/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexja/doc/luatexja.dtx b/macros/luatex/generic/luatexja/doc/luatexja.dtx
index d2ec828f7e..09df86b361 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja.dtx
+++ b/macros/luatex/generic/luatexja/doc/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}
%<en>\newtheorem{defn}{Definition}
%<ja>\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:
%</en>
%<*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.
%</en>
%<*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}が有用かもしれない.}.
+%</ja>
+%<*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>
+
%<*en>
\item[jfmvar=<string>]
Sometimes there is a need that \ldots.
@@ -3673,6 +3690,7 @@ NFSS2用の命令(\ref{ssec:chgfnt}節,\ref{ssec:nfsspat}節)における
%</ja>
%<*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>] 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:
%</en>
@@ -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}を複数回指定した場合は,
最後に指定したものが有効となる.
%</ja>
%<*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}.
+%</en>
+\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}
-%</en>
+\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}
%</en>
%<*ja>
@@ -4727,6 +4742,26 @@ Hence we have the following result:
(optional, version~2 or~later)
%</en>
+ \item[round\_threshold=<float>]
+%<*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`<r$であれば,JFMで文字幅$nw$が指定されたものとして扱う.
+
+この機能は,ほとんど源ノ明朝・源ノ角ゴシックにおける2倍角・3倍角ダッシュの合字のために実装されたと
+言ってもよい.これらのグリフは\LuaTeX 内部ではUnicodeの私用領域に割り当てられるので,
+JFM側で番号を指定することができない.
+%</ja>
+%<*en>
+(optional, version~3 or~later, only available in character class~0)
+%</en>
+
+
\end{cslist}
%<*ja>
@@ -4817,7 +4852,7 @@ as follows:
%<ja>\paragraph{仮想的な文字}
%<en>\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 <jfont\_cs> 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
%<en>\item[\texttt{luatexja.load\_jfm} callback]
%<ja>\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.
%</en>
%<*ja>
@@ -8343,7 +8378,7 @@ Std/StdNフォントであり,その他はAdobe-Japan1-5対応である.
\midrule
%<en>\textit{rounded gothic}
%<ja>\textgt{丸ゴシック}
-&&\AD{Sans}{Heavy}\\
+&&\AD{Sans}{Medium}\\
\bottomrule
\end{tabular}
\end{center}
@@ -8375,7 +8410,7 @@ Std/StdNフォントであり,その他はAdobe-Japan1-5対応である.
\midrule
%<en>\textit{rounded gothic}
%<ja>\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
%<en>\textit{rounded gothic}
%<ja>\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/macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty b/macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty
index b64f7887ef..58a585768a 100644
--- a/macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty
+++ b/macros/luatex/generic/luatexja/src/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/macros/luatex/generic/luatexja/src/jfm-propw.lua b/macros/luatex/generic/luatexja/src/jfm-propw.lua
new file mode 100644
index 0000000000..71dc1ae694
--- /dev/null
+++ b/macros/luatex/generic/luatexja/src/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/macros/luatex/generic/luatexja/src/jfm-ujis.lua b/macros/luatex/generic/luatexja/src/jfm-ujis.lua
index 10b44d8103..5df1986ea6 100644
--- a/macros/luatex/generic/luatexja/src/jfm-ujis.lua
+++ b/macros/luatex/generic/luatexja/src/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/macros/luatex/generic/luatexja/src/jfm-ujisv.lua b/macros/luatex/generic/luatexja/src/jfm-ujisv.lua
index ccae212f88..b2044bde5a 100644
--- a/macros/luatex/generic/luatexja/src/jfm-ujisv.lua
+++ b/macros/luatex/generic/luatexja/src/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/macros/luatex/generic/luatexja/src/ltj-jfont.lua b/macros/luatex/generic/luatexja/src/ltj-jfont.lua
index bb5d99561a..cecb8d6625 100644
--- a/macros/luatex/generic/luatexja/src/ltj-jfont.lua
+++ b/macros/luatex/generic/luatexja/src/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/macros/luatex/generic/luatexja/src/ltj-latex.sty b/macros/luatex/generic/luatexja/src/ltj-latex.sty
index ff6a72bab7..8af066eee6 100644
--- a/macros/luatex/generic/luatexja/src/ltj-latex.sty
+++ b/macros/luatex/generic/luatexja/src/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/macros/luatex/generic/luatexja/src/ltj-setwidth.lua b/macros/luatex/generic/luatexja/src/ltj-setwidth.lua
index f21c0059c8..964d49e063 100644
--- a/macros/luatex/generic/luatexja/src/ltj-setwidth.lua
+++ b/macros/luatex/generic/luatexja/src/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) <char_data.round_threshold then fwidth = fwidth * quot end
+ end
+ end
local xo, yo = getoffsets(p)
setoffsets(p, xo + char_data.align*(fwidth-pwidth) - fshift.left,
yo - fshift.down);
@@ -191,6 +198,11 @@ local function capsule_glyph_tate(p, met, char_data, head, dir)
pwidth, ascender = feir.vheight[pc]*met.size, feir.vorigin[pc]*met.size
end
fwidth = fwidth or pwidth
+ if pwidth>fwidth and char_data.round_threshold then
+ local frac = pwidth / fwidth
+ local quot = floor(frac+0.5)
+ if abs(frac-quot) <char_data.round_threshold then fwidth = fwidth * quot end
+ end
fshift.down = char_data.down; fshift.left = char_data.left
fshift = call_callback("luatexja.set_width", fshift, met, char_data)
local fheight = char_data.height or 0
diff --git a/macros/luatex/generic/luatexja/src/luatexja.sty b/macros/luatex/generic/luatexja/src/luatexja.sty
index c2c8c45147..68b11f7d87 100644
--- a/macros/luatex/generic/luatexja/src/luatexja.sty
+++ b/macros/luatex/generic/luatexja/src/luatexja.sty
@@ -41,7 +41,7 @@
\ProcessOptions\relax
\fi %</LaTeX>
%%%% VERSION
-\def\LuaTeXjaversion{20200412.0}
+\def\LuaTeXjaversion{20200517.0}
\directlua{require('ltj-unicode-ccfix.lua')}% catcode of ideographs
diff --git a/macros/luatex/generic/luatexja/src/patches/lltjfont.sty b/macros/luatex/generic/luatexja/src/patches/lltjfont.sty
index e5f79a8c44..9be20e440c 100644
--- a/macros/luatex/generic/luatexja/src/patches/lltjfont.sty
+++ b/macros/luatex/generic/luatexja/src/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<Benc><Bfam><Bser><Bshape>
% いつも 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/macros/luatex/generic/luatexja/src/patches/lltjp-collcell.sty b/macros/luatex/generic/luatexja/src/patches/lltjp-collcell.sty
new file mode 100644
index 0000000000..4386442927
--- /dev/null
+++ b/macros/luatex/generic/luatexja/src/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