diff options
Diffstat (limited to 'macros/luatex')
-rw-r--r-- | macros/luatex/generic/luatexja/README | 8 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/doc/luatexja-en.pdf | bin | 694135 -> 713111 bytes | |||
-rw-r--r-- | macros/luatex/generic/luatexja/doc/luatexja-ja.pdf | bin | 1125361 -> 1140418 bytes | |||
-rw-r--r-- | macros/luatex/generic/luatexja/doc/luatexja.dtx | 156 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty | 4 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/ltj-adjust.lua | 2 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/ltj-inputbuf.lua | 39 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/ltj-jfmglue.lua | 35 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/ltj-jfont.lua | 18 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua | 11 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/ltjclasses.dtx | 5 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/ltjsclasses.dtx | 1 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/luatexja.sty | 2 | ||||
-rw-r--r-- | macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty | 5 |
14 files changed, 224 insertions, 62 deletions
diff --git a/macros/luatex/generic/luatexja/README b/macros/luatex/generic/luatexja/README index 6ecb431970..6d7fe60543 100644 --- a/macros/luatex/generic/luatexja/README +++ b/macros/luatex/generic/luatexja/README @@ -1,4 +1,4 @@ -The LuaTeX-ja Package 20211024.0 +The LuaTeX-ja Package 20220103.0 -------------------------------- Copyright (c) 2011--2021 The LuaTeX-ja project License: modified BSD (see COPYING) @@ -42,9 +42,9 @@ Installation 2. If you must/want to install manually: a. Download the source archive from CTAN, - or tagged as 20211024.0 in the Git repository by + or tagged as 20220103.0 in the Git repository by <http://git.osdn.jp/view?p=luatex-ja/luatexja.git - ;a=snapshot;h=refs/tags/20211024.0;sf=tgz> + ;a=snapshot;h=refs/tags/20220103.0;sf=tgz> b. Extract the archive and process following three files by LuaLaTeX to generate classes for Japanese typesetting: @@ -93,4 +93,4 @@ Notes This file and ltj-kinsoku.lua are not used anymore. (Do not remove ltj-kinsoku.tex.) -Last commit date: Sun Oct 24 13:28:03 2021 +0900 +Last commit date: Mon Jan 3 12:19:51 2022 +0900 diff --git a/macros/luatex/generic/luatexja/doc/luatexja-en.pdf b/macros/luatex/generic/luatexja/doc/luatexja-en.pdf Binary files differindex 6f4ce08e8a..dcb0a086ee 100644 --- a/macros/luatex/generic/luatexja/doc/luatexja-en.pdf +++ b/macros/luatex/generic/luatexja/doc/luatexja-en.pdf diff --git a/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf b/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf Binary files differindex cc188cb9d0..f91aac1df4 100644 --- a/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf +++ b/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf diff --git a/macros/luatex/generic/luatexja/doc/luatexja.dtx b/macros/luatex/generic/luatexja/doc/luatexja.dtx index 46106f0930..4d553f38ec 100644 --- a/macros/luatex/generic/luatexja/doc/luatexja.dtx +++ b/macros/luatex/generic/luatexja/doc/luatexja.dtx @@ -4721,8 +4721,8 @@ we specify <ratio> to $0.25/(0.5+0.25)=1/3$. JFMによって本来挿入されるグルーの他に \Param{kanjiskip}分の空白を自然長(\texttt{kanjiskip\_natural}),伸び量(\texttt{kanjiskip\_stretch}), -縮み量(\texttt{kanjiskip\_shrink})ごとに挿入する\footnote{本来\Param{xkanjiskip}が挿入される場所においては - \Param{xkanjiskip}分の空白を自然長・伸び量・縮み量ごとに.追加できる.}% +縮み量(\texttt{kanjiskip\_shrink})ごとに挿入する +% \footnote{本来\Param{xkanjiskip}が挿入される場所においては\Param{xkanjiskip}分の空白を自然長・伸び量・縮み量ごとに}% ための指定である.いずれも省略された場合のデフォルト値は0(追加しない)である. 例えば,\LuaTeX-jaの横組標準JFMの \texttt{jfm-ujis.lua} では, @@ -4730,8 +4730,8 @@ JFMによって本来挿入されるグルーの他に \item 通常の文字「あ」と開き括弧類の間に入るグルーは,自然長・縮み量半角,伸び量0のグルー となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け た分だけ伸びることが許される. - \item 同様に,閉じ括弧類(全角コンマ「,」も含む)と通常の文字「う」「え」の間にも -自然長・縮み量半角,伸び量0のグルー + \item 同様に,閉じ括弧類(全角コンマ「,」も含む)と和文文字「う」「え」, + 閉じ括弧類と「f」の間も自然長・縮み量半角,伸び量0のグルー となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け た分だけ伸びることが許される. \item 一方,開き括弧類と通常の文字の間,また通常の文字と閉じ括弧類の間は @@ -4741,16 +4741,16 @@ JFMによって本来挿入されるグルーの他に となっている.従って,以下のような組版結果を得る. \medskip -\begin{LTXexample}[width=16\zw] -\leavevmode -\ltjsetparameter{kanjiskip=0pt plus 3\zw} -\vrule\hbox to 15\zw{あ「い」う,えお}\vrule +\begin{LTXexample}[width=18\zw] +\leavevmode\let\V=\vrule +\ltjsetparameter{kanjiskip=0pt plus 5\zw} +\ltjsetparameter{xkanjiskip=0pt plus 0.5\zw} +\V\hbox spread 7\zw{aあ「い」う,えお」f}\V -\vrule\hbox{あ「い」う,えお}\vrule\par +\vrule\hbox{ああ「い」う,えお」f}\V\par \ltjsetparameter{kanjiskip=0pt minus \zw} -\vrule\hbox to 6.5\zw{あ「い」う,えお}\vrule +\V\hbox spread -2.5\zw{aあ「い」う,えお」f}\V \end{LTXexample} - \end{cslist} %</ja> %<*en> @@ -4767,7 +4767,7 @@ and is also easy to shrink. \item[kanjiskip\_natural=<num>\textrm{, }% kanjiskip\_stretch=<num>\textrm{, }kanjiskip\_shrink=<num>]\leavevmode -These keys specifies the amount of the natural width of \Param{kanjiskip} +These keys specifies the amount of the natural width of \Param{kanjiskip}% (the stretch/shrink part, respectively) which will be inserted in addition to the original JFM glue. Default values of them are all 0. @@ -4778,8 +4778,8 @@ a glue whose natural part and shrink part are both half-width, while its stretch zero. However, this glue also can be stretched as much as the stretch part of \Param{kanjiskip} times the value of \texttt{kanjiskip\_stretch} key (1 in this case). - \item Between an ideographic closeing brackets (the ideographic comma ``,'' - is included) and an ordinal letter, we have the same glue. + \item Between an ideographic closeing brackets (including the ideographic comma ``,'') + and an ordinal letter (including an \textbf{ALchar} ``f\/''), we have the same glue. Again, this glue also can be stretched as much as the stretch part of \Param{kanjiskip} times the value of \texttt{kanjiskip\_stretch} key (1 in this case). @@ -4791,14 +4791,15 @@ a glue whose natural part and shrink part are both half-width, while its stretch Hence we have the following result: \medskip -\begin{LTXexample}[width=16\zw] -\leavevmode -\ltjsetparameter{kanjiskip=0pt plus 3\zw} -\vrule\hbox to 15\zw{あ「い」う,えお}\vrule +\begin{LTXexample}[width=18\zw] +\leavevmode\let\V=\vrule +\ltjsetparameter{kanjiskip=0pt plus 5\zw} +\ltjsetparameter{xkanjiskip=0pt plus 0.5\zw} +\V\hbox spread 7\zw{aあ「い」う,えお」f}\V -\vrule\hbox{あ「い」う,えお}\vrule\par +\vrule\hbox{aあ「い」う,えお」f}\V\par \ltjsetparameter{kanjiskip=0pt minus \zw} -\vrule\hbox to 6.5\zw{あ「い」う,えお}\vrule +\V\hbox spread -2.5\zw{aあ「い」う,えお」f}\V \end{LTXexample} \end{cslist} @@ -7764,7 +7765,8 @@ for making the difference obvious.} \begin{cslist} \item[\cs{ltjenableadjust[...]}] \verb+...+ に指定したkey-valueリストに従い,「行末文字の位置調整」「優先順位付きの行長調整」 - 「『中身までみた』行送り計算」「段階的な行送り調整」を有効化/無効化する. + 「『中身までみた』行送り計算」「段階的な行送り調整」%「濁点・半濁点付き仮名文字の正規化」 + を有効化/無効化する. 指定できるキーは以下の通り. \begin{description} \item[\texttt{lineend=[false,true,extended]}] @@ -7776,6 +7778,8 @@ for making the difference obvious.} 「中身までみた」行送り計算を無効化(\texttt{false}),または有効化(\texttt{true}). \item[\texttt{linestep=[false,true]}] 段階的な行送り調整を無効化(\texttt{false}),または有効化(\texttt{true}). +% \item[\texttt{composekana=[false,true]}] +% 濁点・半濁点付き仮名文字の正規化を無効化(\texttt{false}),または有効化(\texttt{true}). \end{description} どのキーともキー名のみを指定した場合は値として\texttt{true}が指定されたものと扱われる. @@ -9939,6 +9943,116 @@ u その行はそこで改行するようにした方がいいだろう. %</ja> +\begin{table}[t] +%<ja> \caption{「基底文字+合成用濁点・半濁点」から合成済み文字への変換をサポートする組み合わせ} +%<en> \caption{Normalization of Kana Character Sequences with Combining (Semi)-voiced Sound Mark}\medskip + \label{tab:kana_composite} + \def\D#1{% + {\fboxsep0pt\fcolorbox{cyan}{white}% + {\hbox to 1\zw{\hss#1}}}} %" + \def\DC#1{\D{\unitlength=1\zw + \begin{picture}(1,0) + \put(0.5,0.38){\arc[0,15]{0.25}}\put(0.5,0.38){\arc[30,45]{0.25}}\put(0.5,0.38){\arc[60,75]{0.25}} + \put(0.5,0.38){\arc[90,105]{0.25}}\put(0.5,0.38){\arc[120,135]{0.25}}\put(0.5,0.38){\arc[150,165]{0.25}} + \put(0.5,0.38){\arc[180,195]{0.25}}\put(0.5,0.38){\arc[210,225]{0.25}}\put(0.5,0.38){\arc[240,255]{0.25}} + \put(0.5,0.38){\arc[270,285]{0.25}}\put(0.5,0.38){\arc[300,315]{0.25}}\put(0.5,0.38){\arc[330,345]{0.25}} + \end{picture}\llap{#1\kern-.7\zw}}} + \def\CDJ#1#2{$\mbox{\D{\char"#1}}+\mbox{\DC{゛}}\rightarrow \mbox{\D{\char"#2}}$} + \def\CHJ#1#2{$\mbox{\D{\char"#1}}+\mbox{\DC{゜}}\rightarrow \mbox{\D{\char"#2}}$} + \small\centering + \begin{tabular}{@{}llllll@{}} + \CDJ{3046}{3094}& + \CDJ{304B}{304C}& + \CDJ{304D}{304E}& + \CDJ{304F}{3050}& + \CDJ{3051}{3052}& + \CDJ{3053}{3054}\\ + \CDJ{3055}{3056}& + \CDJ{3057}{3058}& + \CDJ{3059}{305A}& + \CDJ{305B}{305C}& + \CDJ{305D}{305E}& + \CDJ{305F}{3060}\\ + \CDJ{3061}{3062}& + \CDJ{3064}{3065}& + \CDJ{3066}{3067}& + \CDJ{3068}{3069}& + \CDJ{306F}{3070}& + \CDJ{3072}{3073}\\ + \CDJ{3075}{3076}& + \CDJ{3078}{3079}& + \CDJ{307B}{307C}& + \CDJ{309D}{309E}& + \CDJ{30A6}{30F4}& + \CDJ{30AB}{30AC}\\ + \CDJ{30AD}{30AE}& + \CDJ{30AF}{30B0}& + \CDJ{30B1}{30B2}& + \CDJ{30B3}{30B4}& + \CDJ{30B5}{30B6}& + \CDJ{30B7}{30B8}\\ + \CDJ{30B9}{30BA}& + \CDJ{30BB}{30BC}& + \CDJ{30BD}{30BE}& + \CDJ{30BF}{30C0}& + \CDJ{30C1}{30C2}& + \CDJ{30C4}{30C5}\\ + \CDJ{30C6}{30C7}& + \CDJ{30C8}{30C9}& + \CDJ{30CF}{30D0}& + \CDJ{30D2}{30D3}& + \CDJ{30D5}{30D6}& + \CDJ{30D8}{30D9}\\ + \CDJ{30DB}{30DC}& + \CDJ{30EF}{30F7}& + \CDJ{30F0}{30F8}& + \CDJ{30F1}{30F9}& + \CDJ{30F2}{30FA}& + \CDJ{30FD}{30FE}\\ + \CHJ{306F}{3071}& + \CHJ{3072}{3074}& + \CHJ{3075}{3077}& + \CHJ{3078}{307A}& + \CHJ{307B}{307D}& + \CHJ{30CF}{30D1}\\ + \CHJ{30D2}{30D4}& + \CHJ{30D5}{30D7}& + \CHJ{30D8}{30DA}& + \CHJ{30DB}{30DD} + \end{tabular} +\end{table} +%<*en> +\subsection{Composition of Kana from Combining Character Sequences} +In (u)\pTeX, Hiragana and Katakana in the NFD form% +\footnote{namely, character sequences which contains + ``COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK''~(\texttt{U+3099}) and + ``COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK''~(\texttt{U+309A}).} +are normalized to precomposed characters before (u)\pTeX\ looks into the input line. +Character sequences which are involved in this normalization are shown in \autoref{tab:kana_composite}. + +The above normalization process is also performed in \LuaTeX-ja version~20220103.0 or later, because +fonts might not have these transformation as an OpenType feature. +%</en> + +%<*ja> +\subsection{濁点・半濁点付き仮名文字の正規化} +\TeX~Live~2016以降の(u)\pTeX では,合成用濁点(\texttt{U+3099})・合成用半濁点(\texttt{U+309A})を用いて +表現された平仮名・片仮名を合成済み文字に変換する(具体的には\autoref{tab:kana_composite}の組み合わせ)という処理を行っている. +この処理を行っている要因としては, +\begin{itemize} + \item 無用なトラブルを避けるため. + 濁点・半濁点付きの仮名文字が「合成用濁点・半濁点を使って入力されているか」「最初から合成済み文字で入力されているか」を + 見た目から判別することは難しい. + \item \pTeX との互換性のため.\pTeX は内部コードがJIS~X~0208の範囲に限られるため, + 合成用濁点・半濁点は利用できない.そのため上記の変換処理はさらに前から行われていた. +\end{itemize} + +一方,\LuaTeX(-ja)では入力の変換は基本的に行わず,文字の合成は使用しているフォントのOpenType機能に委ねるという立場である. +しかし,\autoref{tab:kana_composite}に挙げた変換はUnicode正規化の範疇であり,この内容を持っているフォントは多くない. +よって,前段落で述べた2つの理由(と\upTeX との互換性という意味も込めて)も考慮して, +バージョン20220103.0以降では,\LuaTeX-jaは入力行に対して\autoref{tab:kana_composite}の変換を行う. +%</ja> + %<*ja> %<en>\section{Insertion of JFM glues, \Param{kanjiskip} and \Param{xkanjiskip}} diff --git a/macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty b/macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty index 5636179464..d325df7dc6 100644 --- a/macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty +++ b/macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty @@ -64,7 +64,7 @@ \expandafter\let\csname ifltj@in@latex\expandafter\endcsname \csname iftrue\endcsname \NeedsTeXFormat{LaTeX2e} - \ProvidesPackage{luatexja-adjust}[2019-01-06] + \ProvidesPackage{luatexja-adjust}[2022-01-03] \fi %</LaTeX> % Load core module if not yet. @@ -109,7 +109,7 @@ \the\ltjadj@status@lp, \the\ltjadj@status@ls)}\ignorespaces } \protected\def\ltjdisableadjust{% - \ltjenableadjust[lineend=false,priority=false,profile=false,linestep=false]} + \ltjenableadjust[lineend=false,priority=false,profile=false,linestep=false]}% \protected\def\ltjenableadjust{% \ltx@ifnextchar[{\@@ltjenableadjust}{\@@ltjenableadjust[lineend,priority]}}%] diff --git a/macros/luatex/generic/luatexja/src/ltj-adjust.lua b/macros/luatex/generic/luatexja/src/ltj-adjust.lua index 56effa3c57..76a1a68ec4 100644 --- a/macros/luatex/generic/luatexja/src/ltj-adjust.lua +++ b/macros/luatex/generic/luatexja/src/ltj-adjust.lua @@ -434,7 +434,7 @@ do luatexja.lineskip.setting( status_lp>0 and 'profile' or 'dummy', status_ls>0 and 'step' or 'dummy' - ) + ) end local function disable_cb() -- only for compatibility enable_cs(0,0,0,0) diff --git a/macros/luatex/generic/luatexja/src/ltj-inputbuf.lua b/macros/luatex/generic/luatexja/src/ltj-inputbuf.lua index e1623199e4..7f39b9b8d7 100644 --- a/macros/luatex/generic/luatexja/src/ltj-inputbuf.lua +++ b/macros/luatex/generic/luatexja/src/ltj-inputbuf.lua @@ -14,6 +14,43 @@ local id_glyph = node.id 'glyph' local getcatcode, getcount = tex.getcatcode, tex.getcount local ltjc_is_japanese_char_curlist = ltjc.is_japanese_char_curlist +local substituter +do + local uchar = utf.char + local cd, cp = uchar(0x3099), uchar(0x309A) + substituter = (utf.substituter or utf.subtituter) -- typo in lualibs? + { + ['ウ'..cd] = 'ヴ', ['う'..cd] = uchar(0x30F4), + ['か'..cd] = 'が', ['カ'..cd] = 'ガ', + ['き'..cd] = 'ぎ', ['キ'..cd] = 'ギ', + ['く'..cd] = 'ぐ', ['ク'..cd] = 'グ', + ['け'..cd] = 'げ', ['ケ'..cd] = 'ゲ', + ['こ'..cd] = 'ご', ['コ'..cd] = 'ゴ', + -- + ['さ'..cd] = 'ざ', ['サ'..cd] = 'ザ', + ['し'..cd] = 'じ', ['シ'..cd] = 'ジ', + ['す'..cd] = 'ず', ['ス'..cd] = 'ズ', + ['せ'..cd] = 'ぜ', ['セ'..cd] = 'ゼ', + ['そ'..cd] = 'ぞ', ['ソ'..cd] = 'ゾ', + -- + ['た'..cd] = 'だ', ['タ'..cd] = 'ダ', + ['ち'..cd] = 'ぢ', ['チ'..cd] = 'ヂ', + ['つ'..cd] = 'づ', ['ツ'..cd] = 'ヅ', + ['て'..cd] = 'で', ['テ'..cd] = 'デ', + ['と'..cd] = 'ど', ['ト'..cd] = 'ド', + -- + ['は'..cd] = 'ば', ['ハ'..cd] = 'バ', ['は'..cp] = 'ぱ', ['ハ'..cp] = 'パ', + ['ひ'..cd] = 'び', ['ヒ'..cd] = 'ビ', ['ひ'..cp] = 'ぴ', ['ヒ'..cp] = 'ピ', + ['ふ'..cd] = 'ぶ', ['フ'..cd] = 'ブ', ['ふ'..cp] = 'ぷ', ['フ'..cp] = 'プ', + ['へ'..cd] = 'べ', ['ヘ'..cd] = 'ベ', ['へ'..cp] = 'ぺ', ['ヘ'..cp] = 'ペ', + ['ほ'..cd] = 'ぼ', ['ホ'..cd] = 'ボ', ['ほ'..cp] = 'ぽ', ['ホ'..cp] = 'ポ', + -- + ['ゝ'..cd] = 'ゞ', ['ヽ'..cd] = 'ヾ', + ['ワ'..cd] = uchar(0x30F7), ['ヰ'..cd] = uchar(0x30F8), + ['ヱ'..cd] = uchar(0x30F9), ['ヲ'..cd] = uchar(0x30FA), + } +end + --- the following function is modified from jafontspec.lua (by K. Maeda). --- Instead of "%", we use U+FFFFF for suppressing spaces. --DEBUG require"socket" @@ -21,7 +58,7 @@ local time_line = 0 local start_time_measure, stop_time_measure = ltjb.start_time_measure, ltjb.stop_time_measure local function add_comment(buffer) - start_time_measure 'inputbuf' + start_time_measure 'inputbuf'; buffer = substituter(buffer) local i = utflen(buffer) local c = utfbyte(buffer, i) while (i>0) and (getcatcode(c)==1 or getcatcode(c)==2) do diff --git a/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua b/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua index 9ce7816070..a2bede6442 100644 --- a/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua +++ b/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua @@ -3,7 +3,7 @@ -- luatexbase.provides_module({ name = 'luatexja.jfmglue', - date = '2021-09-18', + date = '2022-01-02', description = 'Insertion process of JFM glues, [x]kanjiskip and others', }) luatexja.jfmglue = luatexja.jfmglue or {} @@ -975,24 +975,20 @@ end -- NA, NB: alchar or math local function get_NA_skip() local pm = Np.met - local g, _, kn, kp, kh = new_jfm_glue( - pm.char_type, - fast_find_char_class( - (Nq.id == id_math and -1 or (Nq.xspc>=2 and 'alchar' or 'nox_alchar')), pm), - Np.class) - local k = ((Nq.xspc>=2) and (Np.xspc%2==1) and combine_spc 'auto_xspc') - and get_xkanjiskip_low(false, pm, kn, kp, kh) + local qclass = fast_find_char_class( + (Nq.id == id_math and -1 or (Nq.xspc>=2 and 'alchar' or 'nox_alchar')), pm) + local g, _, kn, kp, kh = new_jfm_glue(pm.char_type, qclass, Np.class) + local k = g and (Nq.xspc>=2) and (Np.xspc%2==1) and combine_spc 'auto_xspc' + and get_kanjiskip_low(true, pm, kn, kp, kh) return g, k end local function get_NB_skip() local qm = Nq.met - local g, _, kn, kp, kh = new_jfm_glue( - qm.char_type, Nq.class, - fast_find_char_class( - (Np.id == id_math and -1 or (Np.xspc%2==1 and 'alchar' or 'nox_alchar')), qm) - ) - local k = ((Nq.xspc>=2) and (Np.xspc%2==1) and combine_spc 'auto_xspc') - and get_xkanjiskip_low(false, qm, kn, kp, kh) + local pclass = fast_find_char_class( + (Np.id == id_math and -1 or (Np.xspc%2==1 and 'alchar' or 'nox_alchar')), qm) + local g, _, kn, kp, kh = new_jfm_glue(qm.char_type, Nq.class, pclass) + local k = g and (Nq.xspc>=2) and (Np.xspc%2==1) and combine_spc 'auto_xspc' + and get_kanjiskip_low(true, qm, kn, kp, kh) return g, k end @@ -1037,8 +1033,7 @@ local function handle_np_jachar(mode) if not g then g = get_kanjiskip() end handle_penalty_normal(0, Np.pre, g); real_insert(g); real_insert(k) elseif Nq.pre then - local g, k - if non_ihb_flag then g, k = get_NA_skip() end -- N_A->X + local g, k; if non_ihb_flag then g, k = get_NA_skip() end -- N_A->X if not g then g = get_xkanjiskip(Np) end handle_penalty_normal((qid==id_hlist and 0 or Nq.post), Np.pre, g); real_insert(g); real_insert(k) @@ -1059,8 +1054,10 @@ end -- jachar .. (anything) local function handle_nq_jachar() if Np.pre then - local g = non_ihb_flag and get_NB_skip() or get_xkanjiskip(Nq) -- N_B->X - handle_penalty_normal(Nq.post, (Np.id==id_hlist and 0 or Np.pre), g); real_insert(g) + local g, k; if non_ihb_flag then g, k = get_NB_skip()end -- N_B->X + if not g then g = get_xkanjiskip(Nq) end + handle_penalty_normal(Nq.post, (Np.id==id_hlist and 0 or Np.pre), g); + real_insert(g); real_insert(k) else local g =non_ihb_flag and (get_OB_skip()) -- O_B if Np.id==id_glue then handle_penalty_normal(Nq.post, 0, g) diff --git a/macros/luatex/generic/luatexja/src/ltj-jfont.lua b/macros/luatex/generic/luatexja/src/ltj-jfont.lua index b097809883..4c19e33cb2 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 = '2021-09-18', + date = '2021-11-06', description = 'Loader for Japanese fonts', }) @@ -889,12 +889,16 @@ do end end - local function prepare_extra_data_font(id, res) + local function prepare_extra_data_font(id, res, name) if type(res)=='table' and (res.psname or res.filename) then - local bname = res.psname or nameonly(res.filename) - local t = font_extra_basename[bname] - if not t then bname = prepare_extra_data_base(res) end - font_extra_info[id] = bname and (t or font_extra_basename[bname]) or dummytable + if (res.embedding=='no') and (type(name)=='string') and (name:sub(1,5)=='psft:') then + font_extra_info[id] = res.resources.ltj_extra + else + local bname = res.psname or nameonly(res.filename) + local t = font_extra_basename[bname] + if not t then bname = prepare_extra_data_base(res) end + font_extra_info[id] = bname and (t or font_extra_basename[bname]) or dummytable + end end end luatexbase.add_to_callback( @@ -907,7 +911,7 @@ do luatexbase.add_to_callback( 'luatexja.define_font', function (res, name, size, id) - prepare_extra_data_font(id, res) + prepare_extra_data_font(id, res, name) end, 'ltj.prepare_extra_data', 1) diff --git a/macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua b/macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua index 499d3eda4a..49f2018e4d 100644 --- a/macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua +++ b/macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua @@ -5,7 +5,7 @@ luatexja.load_module('base'); local ltjb = luatexja.base local cidfont_data = {} local cache_chars = {} -local cache_ver = 10 +local cache_ver = 11 local identifiers = fonts.hashes.identifiers local cid_reg, cid_order, cid_supp, cid_name @@ -157,6 +157,7 @@ do tth[pricode], cidmo[i], pricode = { index = i }, pricode, pricode+1; end + ttu[i] = cidmo[i] ttu[cid_order .. '.' .. i] = cidmo[i] end @@ -231,7 +232,7 @@ do cidf_vert_processor = { function (head, fnum) local fontdata = font_getfont(fnum) - if head and luatexja.jfont.font_metric_table[fnum].vert_activated then + if head and luatexja.jfont.font_metric_table[fnum] and luatexja.jfont.font_metric_table[fnum].vert_activated then local vt = fontdata.ltj_vert_table local nh = is_node(head) and to_direct(head) or head for n in traverse_id(id_glyph, head) do @@ -245,6 +246,9 @@ do } end +local dummy_vht, dummy_vorg = {}, {} +setmetatable(dummy_vht, {__index = function () return 1 end } ) +setmetatable(dummy_vorg, {__index = function () return 0.88 end } ) local function cid_cache_outdated(t) return t.version~=cache_ver end local function read_cid_font() local dat = ltjb.load_cache("ltj-cid-auto-" .. string.lower(cid_name), @@ -260,6 +264,9 @@ local function read_cid_font() end if cidfont_data[cid_name] then cidfont_data[cid_name].shared.processes = cidf_vert_processor + cidfont_data[cid_name].resources.ltj_extra + = { ind_to_uni = cidfont_data[cid_name].resources.unicodes, + vheight = dummy_vht, vorigin = dummy_vorg } for i,v in pairs(cidfont_data[cid_name].characters) do if not v.width then v.width = 655360 end v.height, v.depth = 576716.8, 78643.2 -- optimized for jfm-ujis.lua diff --git a/macros/luatex/generic/luatexja/src/ltjclasses.dtx b/macros/luatex/generic/luatexja/src/ltjclasses.dtx index a9c24bb5b9..2511e6e0ff 100644 --- a/macros/luatex/generic/luatexja/src/ltjclasses.dtx +++ b/macros/luatex/generic/luatexja/src/ltjclasses.dtx @@ -137,6 +137,7 @@ % \changes{v1.8f}{2020/09/30}{add a fourth argument for better % hyperref compability % (sync with ltsect.dtx 2020/07/27 v1.1e)} +% \changes{v1.8f-ltj-21}{2021-12-22}{余計なコメントの削除.} % \fi % % \iffalse @@ -166,7 +167,7 @@ %<11pt&bk>\ProvidesFile{ltjtbk11.clo} %<12pt&bk>\ProvidesFile{ltjtbk12.clo} %</tate> - [2020-09-30 v1.8f-ltj-20 + [2021-12-22 v1.8f-ltj-21 %<article|report|book> Standard LuaLaTeX-ja class] %<10pt|11pt|12pt> Standard LuaLaTeX-ja file (size option)] %<*driver> @@ -4712,8 +4713,6 @@ % \section{各種パッケージへの対応} % もともと縦組での利用を想定されていないいくつかのパッケージについて、 % 補正するためのコードを記述しておきます。 -%% この節のコードは|filehook|パッケージ(Lua\TeX-ja読み込み時に自動でロードされます) -%% の機能を用いています。 % % [2020-08-03 LTJ] \LaTeX\~2020-10-01に対応するため、Lua\TeX-jaの提供する命令 % (|filehook|パッケージの命令の別名か、新\LaTeX のフック機構を利用して同様の内容を書いたもの) diff --git a/macros/luatex/generic/luatexja/src/ltjsclasses.dtx b/macros/luatex/generic/luatexja/src/ltjsclasses.dtx index f0c8830bfd..b47fe05311 100644 --- a/macros/luatex/generic/luatexja/src/ltjsclasses.dtx +++ b/macros/luatex/generic/luatexja/src/ltjsclasses.dtx @@ -5141,6 +5141,7 @@ \splittopskip\footnotesep \splitmaxdepth \dp\strutbox \floatingpenalty \@MM \hsize\columnwidth \@parboxrestore + \def\@currentcounter{footnote}% \protected@edef\@currentlabel{% \csname p@footnote\endcsname\@thefnmark }% diff --git a/macros/luatex/generic/luatexja/src/luatexja.sty b/macros/luatex/generic/luatexja/src/luatexja.sty index 5c86aa9b78..48db2624ec 100644 --- a/macros/luatex/generic/luatexja/src/luatexja.sty +++ b/macros/luatex/generic/luatexja/src/luatexja.sty @@ -27,7 +27,7 @@ \newif\ifltj@disablejfam %%%% VERSION -\def\LuaTeXjaversion{20211024.0} +\def\LuaTeXjaversion{20220103.0} %% Check if LaTeX is used. \begingroup\expandafter\expandafter\expandafter\endgroup diff --git a/macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty b/macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty index db444aecb7..fcc8922fea 100644 --- a/macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty +++ b/macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty @@ -1,5 +1,5 @@ % -% lltjp-siunitx.sty 2021-04-19 +% lltjp-siunitx.sty 2021-10-31 % \NeedsTeXFormat{LaTeX2e} @@ -31,6 +31,9 @@ \__siunitx_print_text_replace:n {#1} } } +\cs_set_eq:NN \ltj_orig__siunitx_table_collect_begin:w \__siunitx_table_collect_begin:w +\cs_set_protected:Npn \__siunitx_table_collect_begin:w #1 \relax + { \ltj_orig__siunitx_table_collect_begin:w } }% siunitx v3.00 end {% siunitx v2.xx \cs_generate_variant:Nn \tl_if_in:NnT { coT } |