From f3e279292dece1dad0c0ab5e6a02eab168f15b52 Mon Sep 17 00:00:00 2001 From: Hironori Kitagawa Date: Tue, 9 Oct 2012 04:36:04 +0200 Subject: [PATCH] Supports ``weighted average'' of JFM glues. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit - Changed default value of differentjfm to `paverage'. - Difference between `average' and `paverage' can be seen from \documentclass{ltjsarticle} \usepackage{lua-visual-debug} \begin{document} \ltjsetparameter{differentjfm=paverage}.{\Huge ・}\par % default .\inhibitglue\hskip.5\zw\vrule width 0pt{\Huge\hskip.25\zw\inhibitglue・}\par \ltjsetparameter{differentjfm=average}.{\Huge ・} \end{document} --- doc/luatexja.dtx | 119 ++++++++++++++++++++-------- src/addons/luatexja-adjust.sty | 24 ++++++ src/jfm-ujis.lua | 176 +++++++++++++++++++++++------------------ src/ltj-jfmglue.lua | 117 +++++++++++++++++---------- src/ltj-jfont.lua | 16 +++- src/ltj-latex.sty | 2 +- src/ltj-plain.sty | 2 +- src/luatexja-core.sty | 11 ++- test/test01-noembed.pdf | Bin 50819 -> 51881 bytes test/test01-noembed.tex | 21 ++++- test/test01.pdf | Bin 162522 -> 163647 bytes test/test01.tex | 21 +++-- test/test04-jfm.tex | 13 +++ 13 files changed, 354 insertions(+), 168 deletions(-) diff --git a/doc/luatexja.dtx b/doc/luatexja.dtx index ded8e40..839e8c6 100644 --- a/doc/luatexja.dtx +++ b/doc/luatexja.dtx @@ -3378,9 +3378,9 @@ Furthermore, the glyph is shifted according to values of fields \label{fig-pos} \end{figure} -\item[kern={\{[$j$]=, ...\}}] +\item[kern={\{[$j$]=, [$j'$]=\{, []\}...\}}] -\item[glue={\{[$j$]=\{, , , []\}, ...\}}] +\item[glue={\{[$j$]=\{, , , [], []\}, ...\}}] %<*ja> 文字クラス$i$の文字と$j$の文字の間に挿入されるkernやglueの量を指定する. @@ -3390,6 +3390,25 @@ Furthermore, the glyph is shifted according to values of fields 度を$-2$から$+2$の間の整数で指定する.の省略時の値 は0であり,範囲外の値が指定されたときの動作は未定義である). +も省略可能フィールドであり,$-1$から$+1$の実数値をとる.省略時の値は0である. +\begin{itemize} +\item $-1$はこのグルーが「前の文字」由来であることを示す. +\item $+1$はこのグルーが「後の文字」由来であることを示す. +\item それ以外の値は,「前の文字」由来のグルーと「後の文字」由来の +グルーが混合されていることを示す. +\end{itemize} +なお,このフィールドの値は\Param{differentjfm}の値が\texttt{pleft},~\texttt{pright},~\texttt{paverage}の値のときのみ実際に用いられる. + +例えば,\cite{x4051}では,句点と中点の間には, +句点由来の二分空きと中点由来の四分空きが挿入されるが,この場合には +\begin{itemize} +\item には$0.5+0.25=0.75$を指定する. +\item には次の値を指定する. +\[ + -1\cdot \frac{0.5}{0.5+0.25} + 1 \cdot \frac{0.25}{0.5+0.25} = -\frac13 +\] +\end{itemize} + % \item[end\_stretch=] @@ -3487,10 +3506,10 @@ The following is the list of `imaginary characters': %%%行の終端を表す. %%%行尾结束字符。 -\item['diffmet'] -%Used at a boundary between two \textbf{JAchar}s whose JFM or size is different. -%JFMやサイズが異なる2つの\textbf{JAchar}の間の境界として用いられる. -%用于两个不同大小或不同JFM的两个\textbf{JAchar}间边界。 +%%\item['diffmet'] +%%Used at a boundary between two \textbf{JAchar}s whose JFM or size is different. +%%JFMやサイズが異なる2つの\textbf{JAchar}の間の境界として用いられる. +%%用于两个不同大小或不同JFM的两个\textbf{JAchar}间边界。 \item['boxbdd'] %The beginning/ending of a horizontal box, and the beginning of a noindented paragraph. @@ -4157,6 +4176,9 @@ JFM(もしくはサイズ)が異なる2つの\textbf{JAchar}の間にグル \item[\texttt{both}] \item[\texttt{large}] \item[\texttt{small}] +\item[\texttt{pleft}] +\item[\texttt{pright}] +\item[\texttt{paverage}] \end{description} \item[\Param{jacharrange}\,=$^\ast$] @@ -5669,19 +5691,54 @@ $g$は「文字コード\texttt{'boxbdd'}の文字」と\textit{Np}の間に入 \item もし両クラスタの間で\verb+\inhibitglue+が実行されていた場合(証としてwhatsitノードが自動挿入される), 代わりに\Param{kanjiskip}が挿入されることとなる.次へ. \item \textit{Nq}と\textit{Np}が同じJFM・同じ\texttt{jfmvar}キー・同じサイズの和文フォントであったならば, - 共通に使っているJFM内で挿入される空白(グルーかカーン)が決まっているか調べる. + 共通に使っているJFM内で挿入される空白(グルーかカーン)が決まっているか調べ,決まっていればそれを採用. \item 1.でも2.でもない場合は,\textit{Nq}と\textit{Np}が違うJFM/\texttt{jfmvar}/サイズである. この場合,まず \[ -\vcenter{\halign{\hfil$#:={}$&(\inhibitglue#\inhibitglue)\cr -gb&\textit{Nq}と「文字コードが{\tt'diffmet'}の文字」との間に入るグルー/カーン\cr -ga&「文字コードが{\tt'diffmet'}の文字」と\textit{Np}との間に入るグルー/カーン\cr +\vcenter{\halign{\hfil$#:={}$&\inhibitglue#\inhibitglue\cr +gb&(\textit{Nq}と「使用フォントが\textit{Nq}のそれと同じで,\hfil\cr +\omit&\quad 文字コードが\textit{Np}のそれの文字」との間に入るグルー/カーン)\hfil\cr +ga&(\inhibitglue 「使用フォントが\textit{Np}のそれと同じで,\hfil\cr +\omit&\quad 文字コードが\textit{Nq}のそれの文字」と\textit{Np}との間に入るグルー/カーン)\hfil\cr }} \] -として,左側由来・右側由来の空白(グルー/カーン)を(それぞれのJFMから)求める. -$\mathit{ga}$と$\mathit{gb}$のどちらか片方が未定義であるならば,定義されている側の値をそのまま採用する. -もし$\mathit{ga}$と$\mathit{gb}$が両方決まっているならば,両者の値を平均\footnote{\Param{differentjfm}パラメタの -値によって,「大きい方」「小さい方」「合計」に変えることができる.}した値を採用する. +として,前側の文字のJFMを使った時の空白(グルー/カーン)と,後側の文字のJFMを使った時のそれを求める. + +$\mathit{gb}$,~$\mathit{ga}$それぞれに対するの値を$d_b$,~$d_a$とする. +\begin{itemize} +\item +$\mathit{ga}$と$\mathit{gb}$の両方が未定義であるならば,JFM由来のグルーは挿入されず,\Param{kanjiskip}を採用することとなる.どちらか片方のみが未定義であるならば,次のステップでその未定義の方は長さ0のkernで,の値は0であるかのように扱われる. +\item +\Param{differentjfm}の値が\texttt{pleft}, \texttt{pright}, \texttt{paverage}のとき, +の指定に従って比例配分を行う. +JFM由来のグルー/カーンは以下の値となる: +\[ + f\left(\frac{1-d_b}2\textit{gb} + \frac{1+d_b}2\textit{ga}, +\frac{1-d_a}2\textit{gb} + \frac{1+d_a}2\textit{ga}\right) +\] +ここで.$f(x,y)$は +\[ + f(x,y)=\begin{cases} +x&\text{if\ }\Param{differentjfm}=\texttt{pleft};\\ +y&\text{if\ }\Param{differentjfm}=\texttt{pright};\\ +(x+y)/2&\text{if\ }\Param{differentjfm}=\texttt{paverage}; +\end{cases}. +\] +\item +\Param{differentmet}がそれ以外の値の時は,の値は無視され,JFM由来のグルー/カーンは以下の値となる: +\[ + f(\textit{gb},\textit{ga}) +\] +ここで.$f(x,y)$は +\[ + f(x,y)=\begin{cases} +\min(x,y)&\text{if\ }\Param{differentjfm}=\texttt{small};\\ +\max(x,y)&\text{if\ }\Param{differentjfm}=\texttt{large};\\ +(x+y)/2&\text{if\ }\Param{differentjfm}=\texttt{average};\\ +x+y&\text{if\ }\Param{differentjfm}=\texttt{both}; +\end{cases}. +\] +\end{itemize} \end{enumerate} 例えば, @@ -6085,7 +6142,7 @@ Roughly speaking, the \Pkg{listings} package processes input as follows: % %<*en> -\item When reading an \textit{other}, outputs the collected character string (with modification, if needed). +\item When reading an \textit{other}, outputs the collected string (with modification, if needed). % %<*ja> \item letterでもdigitでもない文字が現れた時に,収集した文字列を(必要なら修飾して)出力する. @@ -6099,7 +6156,7 @@ Roughly speaking, the \Pkg{listings} package processes input as follows: % %<*en> -\item When reading a \textit{letter} or a \textit{digit}, outputs the collected character string. +\item When reading a \textit{letter} or a \textit{digit}, outputs the collected string. % %<*ja> \item letterが出現したら集めた文字列を出力する. @@ -6113,8 +6170,8 @@ Roughly speaking, the \Pkg{listings} package processes input as follows: % \end{enumerate} %<*en> -By the above process, line breaks inside of an identifier are blocked. -A flag \verb+\lst@ifletter+ indicates whether the previous character can be used +By the above process, line breaks inside of an identifier is blocked. +A flag \verb+\lst@ifletter+ shows whether the last character can be used for the name of identifiers or not. % %<*ja> @@ -6126,14 +6183,14 @@ for the name of identifiers or not. For Japanese characters, line breaks are permitted on both sides except for parentheses, dashes, etc. To process Japanese characters, -The pacth \Pkg{lltjp-listings.sty} introduces a new flag \verb+\lst@ifkanji+, which indicates -whether the previous character is Japanese character or not. +\Pkg{lltjp-listings.sty} introduces a new flag \verb+\lst@kanji+, which indicates +whether the last character is Japanese character or not. For illustration, we introduce the following classes of character: % %<*ja> さて,日本語の処理である.殆どの和文文字の前後では行分割が可能であるが,その一方で 括弧類や音引きなどでは禁則処理が必要なことから,\Pkg{lltjp-listings.sty} では, -直前が和文文字であるかを示すフラグ \verb+\lst@ifkanji+ を新たに導入した. +直前が和文文字であるかを示すフラグ \verb+\lst@kanji+ を新たに導入した. 以降,説明のために以下のように文字を分類する: % \begin{center} @@ -6163,18 +6220,13 @@ Other according to circumstances. For example, let us consider the case an Open comes after a Letter. Since an Open represents Japanese open parenthesis, it is preferred to be permitted to insert line break after the Letter. -Therefore, the collected character string is output in this case. +Therefore, the collected string is output in this case. +The following table summarizes $5\times 5=25$ cases: % %<*ja> 例えば,Letterの直後にOpenが来た場合を考える. 文字種Openは和文開き括弧類を想定しているので,Letterの直後では行分割が可能であることが望ましい. そのため,この場合では,すでに収集されている文字列を出力することで行分割を許容するようにした. -% - -%<*en> -The following table summarizes $5\times 5=25$ cases: -% -%<*ja> 同じように,$5\times 5=25$通り全てについて書くと,次のようになる: % \begin{center} @@ -6187,7 +6239,7 @@ The following table summarizes $5\times 5=25$ cases: &\hbox to 4em{\hss Kanji\hss}&\hbox to 4em{\hss Open\hss}&Close\\\midrule &Letter&collects&\multicolumn{3}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\ &Other&outputs&collects&\multicolumn{2}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\ -Prev&Kanji&\multicolumn{4}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\ +Last&Kanji&\multicolumn{4}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\ &Open&\multicolumn{5}{c}{\hrulefill \ collects\ \hrulefill}\\ &Close&\multicolumn{4}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\ % @@ -6207,10 +6259,10 @@ Prev&Kanji&\multicolumn{4}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\ %In the above table, %上の表において, \begin{itemize} -%\item ``outputs'' means to output the collected character string (i.e., line breaking is permitted there). +%\item ``outputs'' means to output the collected string (i.e., line breaking is permitted there). %\item 「出力」は,それまでに集めた文字列を出力(≒ここで行分割可能)を意味する. -%\item ``collects'' means to append the next character to the collected character string (i.e., line breaking is prohibited there). +%\item ``collects'' means to append the next character to the collected string (i.e., line breaking is prohibited there). %\item 「収集」は,後側の文字を,現在収集された文字列に追加(行分割不可)を意味する. \end{itemize} @@ -6223,7 +6275,7 @@ Characters are classified according to \Param{jacharrange} parameter (see Sectio %<*ja> \Pkg{listings} パッケージにおいて和文文字と扱われる (前に述べたKanji, Open,あるいは「閉じ括弧類」分類)か否かは, -通常の\textbf{JAchar}/\textbf{Alchar}の範囲の設定(\Param{jacharrange} パラメータ,\ref{ssec-setrange}節を参照)に従って行われる: +通常の\textbf{JAchar}/\textbf{Alchar}の範囲の設定(\ref{ssec-setrange}節)に従って行われる: % \begin{itemize} %\item \textbf{ALchars} above U+0080 are Letter. @@ -6244,8 +6296,7 @@ Characters are classified according to \Param{jacharrange} parameter (see Sectio \end{itemize} %<*en> -The width of halfwidth kana (U+FF61--U+FF9F) is same as the width of \textbf{ALchar}; -the width of the other \textbf{JAchars} is double the width of \textbf{ALchar}. +The width of halfwidth kana (U+FF61--U+FF9F) is same as the width of \textbf{ALchar}; the width of the other \textbf{JAchars} is double the width of \textbf{ALchar}. % %<*ja> なお,半角カナ(U+FF61--U+FF9F)以外の\textbf{JAchar}は欧文文字2文字分の幅をとるものとみなされる. diff --git a/src/addons/luatexja-adjust.sty b/src/addons/luatexja-adjust.sty index 397dede..21404ec 100644 --- a/src/addons/luatexja-adjust.sty +++ b/src/addons/luatexja-adjust.sty @@ -82,12 +82,36 @@ \expandafter\endinput\fi\relax %%------------------ +\RequirePackage{expl3} %! Main part of luatexja-adjust \RequireLuaTeXjaSubmodule{adjust} +% enable/disable ``advanced'' line adjustment \protected\def\ltjdisableadjust{\directlua{luatexja.adjust.disable_cb()}} \protected\def\ltjenableadjust{\directlua{luatexja.adjust.enable_cb()}} \ltjenableadjust +% there is also a key for \ltjsetparameter, for same effect +\define@boolkey[ltj]{japaram}{adjust}[true]{% + \ifltj@japaram@adjust\ltjenableadjust\else\ltjdisableadjust\fi +} + +\ExplSyntaxOn +\cs_new:Nn \ltj_adjust_inittable: { + % To be filled... +} +\cs_new:Nn \ltj_adjust_appendtable:n { + % To be filled +} + +\clist_new:N \l_ltj_adjust_priority +\define@key[ltj]{japaram}{adjustpriority}{% COMMA LIST + \clist_set:Nx \l_ltj_adjust_priority {#1} + \ltj_adjust_inittable: + \clist_map_function:NN \l_ltj_adjust_priority \ltj_adjust_appendtable:n +} + +\ExplSyntaxOff + %%------------------ all done \ltj@adjust@AtEnd diff --git a/src/jfm-ujis.lua b/src/jfm-ujis.lua index 2470579..f64080e 100644 --- a/src/jfm-ujis.lua +++ b/src/jfm-ujis.lua @@ -1,22 +1,29 @@ -- -*- coding: utf-8 -*- -- jfm-ujis.lua: LuaTeX-ja 標準 JFM -- based on upnmlminr-h.tfm (a metric in UTF/OTF package used by upTeX). --- JIS X 4051:2004 では,行末の句読点や中点はベタ + +-- JIS X 4051:2004 では,行末の句読点や中点はベタなのでそれに従う +-- kanjiskip: 0pt plus .25zw minus 0pt +-- xkanjiskip: .25zw plus .25zw (or .0833zw) minus .125zw + luatexja.jfont.define_jfm { dir = 'yoko', zw = 1.0, zh = 1.0, - + kanjiskip = {0.0, 0.05, 0}, + xkanjiskip = {0.25, 0.25, .125}, [0] = { align = 'left', left = 0.0, down = 0.0, width = 1.0, height = 0.88, depth = 0.12, italic=0.0, glue = { - [6] = {0, 0, 0}, + [1] = { 0.5 , 0.0, 0.5, 0, 1 }, [2] = {0, 0, 0}, - [102] = {0, 0, 0}, + [3] = { 0.25, 0.0, 0.25, 1, 1 }, [4] = {0, 0, 0}, - [1] = { 0.5 , 0.0, 0.5 }, - [3] = { 0.25, 0.0, 0.25, 1 } + [6] = {0, 0, 0}, + [7] = {0, 0, 0}, + [8] = {0, 0, 0}, + [9] = {0, 0, 0}, } }, @@ -28,48 +35,39 @@ luatexja.jfont.define_jfm { align = 'right', left = 0.0, down = 0.0, width = 0.5, height = 0.88, depth = 0.12, italic=0.0, glue = { - [6] = {0, 0, 0}, +-- 3 のみ四分,あとは0 + [0] = {0, 0, 0}, + [1] = {0, 0, 0}, [2] = {0, 0, 0}, - [102] = {0, 0, 0}, + [3] = { 0.25, 0.0, 0.25, 1 }, [4] = {0, 0, 0}, - [3] = { 0.25, 0.0, 0.25, 1 } + [5] = {0, 0, 0}, + [6] = {0, 0, 0}, + [7] = {0, 0, 0}, + [8] = {0, 0, 0}, + [9] = {0, 0, 0}, } }, [2] = { -- 閉じ括弧類 chars = { '’', '”', '〉', '》', '」', '』', '】', '〕', - '〗', '〙', '〟', ')', ']', '}', '⦆', - }, - align = 'left', left = 0.0, down = 0.0, - width = 0.5, height = 0.88, depth = 0.12, italic=0.0, - glue = { - [0] = { 0.5 , 0.0, 0.5 }, - [1] = { 0.5 , 0.0, 0.5 }, - [3] = { 0.25, 0.0, 0.25, 1 }, - [5] = { 0.5 , 0.0, 0.5 }, - [6] = { 0.5 , 0.0, 0.5 }, - [7] = { 0.5 , 0.0, 0.5 }, - [8] = { 0.5 , 0.0, 0.5 }, - } - }, - - [102] = { -- 読点類 - chars = { - '、', ',*', + '〗', '〙', '〟', ')', ']', '}', '⦆', '、', ',*' }, align = 'left', left = 0.0, down = 0.0, width = 0.5, height = 0.88, depth = 0.12, italic=0.0, - --end_shrink = 0.5, - --end_stretch = 0.5, glue = { - [0] = { 0.5 , 0.0, 0.5 }, - [1] = { 0.5 , 0.0, 0.5 }, - [3] = { 0.25, 0.0, 0.25, 1 }, - [5] = { 0.5 , 0.0, 0.5 }, - [6] = { 0.5 , 0.0, 0.5 }, - [7] = { 0.5 , 0.0, 0.5 }, - [8] = { 0.5 , 0.0, 0.5 }, +-- 3 は四分, 2, 4, 9 は0, あとは0.5 + [0] = { 0.5 , 0.0, 0.5, 0, -1 }, + [1] = { 0.5 , 0.0, 0.5, 0, -1 }, + [2] = {0, 0, 0}, + [3] = { 0.25, 0.0, 0.25, 1, 1 }, + [4] = {0, 0, 0}, + [5] = { 0.5 , 0.0, 0.5, 0, -1 }, + [6] = { 0.5 , 0.0, 0.5, 0, -1 }, + [7] = { 0.5 , 0.0, 0.5, 0, -1 }, + [8] = { 0.5 , 0.0, 0.5, 0, -1 }, + [9] = {0, 0, 0}, } }, @@ -79,16 +77,17 @@ luatexja.jfont.define_jfm { width = 0.5, height = 0.88, depth = 0.12, italic=0.0, --end_stretch = 0.25, glue = { - [0] = { 0.25, 0.0, 0.25, 1 }, - [1] = { 0.25, 0.0, 0.25, 1 }, - [2] = { 0.25, 0.0, 0.25, 1 }, - [102] = { 0.25, 0.0, 0.25, 1 }, - [3] = { 0.5 , 0.0, 0.5 , 1 }, - [4] = { 0.25, 0.0, 0.25, 1 }, - [5] = { 0.25, 0.0, 0.25, 1 }, - [6] = { 0.25, 0.0, 0.25, 1 }, - [7] = { 0.25, 0.0, 0.25, 1 }, - [8] = { 0.25, 0.0, 0.25, 1 }, +-- 3 のみ 0.5,あとは0.25 + [0] = { 0.25, 0.0, 0.25, 1, 1 }, + [1] = { 0.25, 0.0, 0.25, 1, 1 }, + [2] = { 0.25, 0.0, 0.25, 1, 1 }, + [3] = { 0.5 , 0.0, 0.5 , 1, 0 }, + [4] = { 0.25, 0.0, 0.25, 1, 1 }, + [5] = { 0.25, 0.0, 0.25, 1, 1 }, + [6] = { 0.25, 0.0, 0.25, 1, 1 }, + [7] = { 0.25, 0.0, 0.25, 1, 1 }, + [8] = { 0.25, 0.0, 0.25, 1, 1 }, + [9] = { 0.25, 0.0, 0.25, 1, 1 }, } }, @@ -96,30 +95,30 @@ luatexja.jfont.define_jfm { chars = {'。', '.'}, align = 'left', left = 0.0, down = 0.0, width = 0.5, height = 0.88, depth = 0.12, italic=0.0, - --end_shrink = 0.5, - --end_stretch = 0.5, glue = { - [0] = { 0.5 , 0.0, 0.0 }, - [1] = { 0.5 , 0.0, 0.0 }, - [3] = { 0.75, 0.0, 0.25, 1 }, - [5] = { 0.5 , 0.0, 0.0 }, - [6] = { 0.5 , 0.0, 0.0 }, - [7] = { 0.5 , 0.0, 0.0 }, - [8] = { 0.5 , 0.0, 0.0 }, +-- 3 は.75, 2, 4 は0, あとは0.5 + [0] = { 0.5 , 0.0, 0.5, 0, -1 }, + [1] = { 0.5 , 0.0, 0.5, 0, -1 }, + [3] = { 0.75, 0.0, 0.25, 1, -1/3 }, + [5] = { 0.5 , 0.0, 0.5, 0, -1 }, + [6] = { 0.5 , 0.0, 0.5, 0, -1 }, + [7] = { 0.5 , 0.0, 0.5, 0, -1 }, + [8] = { 0.5 , 0.0, 0.5, 0, -1 }, + [9] = { 0.5 , 0.0, 0.5, 0, -1 }, } }, [5] = { -- ダッシュ - chars = { '—', '―', '‥', '…' }, + chars = { '—', '―', '‥', '…', '〳', '〴', '〵', }, align = 'left', left = 0.0, down = 0.0, width = 1.0, height = 0.88, depth = 0.12, italic=0.0, glue = { - [6] = {0, 0, 0}, + [1] = { 0.5 , 0.0, 0.5, 0, 1 }, [2] = {0, 0, 0}, - [102] = {0, 0, 0}, + [3] = { 0.25, 0.0, 0.25, 1, 1 }, [4] = {0, 0, 0}, - [1] = { 0.5 , 0.0, 0.5 }, - [3] = { 0.25, 0.0, 0.25, 1 } + [6] = {0, 0, 0}, + [9] = {0, 0, 0}, }, kern = { [5] = 0.0 @@ -127,22 +126,22 @@ luatexja.jfont.define_jfm { }, [6] = { -- 感嘆符・疑問符 - chars = { '?', '!' }, + chars = { '?', '!', '‼', '⁇', '⁈', '⁉', }, align = 'left', left = 0.0, down = 0.0, width = 1.0, height = 0.88, depth = 0.12, italic=0.0, glue = { - [6] = {0, 0, 0}, + [0] = {0, 0, 0}, + [1] = { 0.5 , 0.0, 0.5, 0, 1 }, [2] = {0, 0, 0}, - [102] = {0, 0, 0}, + [3] = { 0.25, 0.0, 0.25, 1, 1 }, [4] = {0, 0, 0}, - [0] = { 0.5 , 0.0, 0.5 }, - [1] = { 0.5 , 0.0, 0.5 }, - [3] = { 0.25, 0.0, 0.25, 1 }, - [7] = { 0.5 , 0.0, 0.5 }, + [6] = {0, 0, 0}, + [7] = {0, 0, 0}, + [8] = {0, 0, 0}, + [9] = {0, 0, 0}, }, kern = { - [5] = 0.0, - [8] = 0.0 + [5] = 0.0 } }, @@ -171,12 +170,14 @@ luatexja.jfont.define_jfm { align = 'left', left = 0.0, down = 0.0, width = 0.5, height = 0.88, depth = 0.12, italic=0.0, glue = { - [6] = {0, 0, 0}, + [1] = { 0.5 , 0.0, 0.5, 0, 1 }, [2] = {0, 0, 0}, - [102] = {0, 0, 0}, + [3] = { 0.25, 0.0, 0.25, 1, 1 }, [4] = {0, 0, 0}, - [1] = { 0.5 , 0.0, 0.5 }, - [3] = { 0.25, 0.0, 0.25, 1 } + [6] = {0, 0, 0}, + [7] = {0, 0, 0}, + [8] = {0, 0, 0}, + [9] = {0, 0, 0}, } }, @@ -202,18 +203,39 @@ luatexja.jfont.define_jfm { align = 'left', left = 0.0, down = 0.0, width = 1.0, height = 0.88, depth = 0.12, italic=0.0, glue = { - [6] = {0, 0, 0}, + [1] = { 0.5 , 0.0, 0.5, 0, 1 }, [2] = {0, 0, 0}, - [102] = {0, 0, 0}, + [3] = { 0.25, 0.0, 0.25, 1, 1 }, [4] = {0, 0, 0}, - [1] = { 0.5 , 0.0, 0.5 }, - [3] = { 0.25, 0.0, 0.25, 1 } + [6] = {0, 0, 0}, + [9] = {0, 0, 0}, }, kern = { [8] = 0.0 } }, + [9] = { -- 和字間隔 + chars = { + ' ' + }, + align = 'left', left = 0.0, down = 0.0, + width = 1.0, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [0] = {0, 0, 0}, + [1] = {0, 0, 0}, + [2] = {0, 0, 0}, + [3] = { 0.25, 0.0, 0.25, 1 }, + [4] = {0, 0, 0}, + [5] = {0, 0, 0}, + [6] = {0, 0, 0}, + [7] = {0, 0, 0}, + [8] = {0, 0, 0}, + [9] = {0, 0, 0}, + }, + }, + + [99] = { -- box末尾 chars = {'boxbdd', 'parbdd'}, glue = { diff --git a/src/ltj-jfmglue.lua b/src/ltj-jfmglue.lua index e233c8e..4695863 100644 --- a/src/ltj-jfmglue.lua +++ b/src/ltj-jfmglue.lua @@ -92,6 +92,14 @@ local function fast_find_char_class(c,m) return m.size_cache.chars[c] or 0 end +-- 文字クラスの決定 +local function slow_find_char_class(c, m, oc) + local xc = c or oc + local cls = ltjf_find_char_class(xc, m) + if xc ~= oc and cls==0 then cls, xc = ltjf_find_char_class(-xc, m) end + return cls, xc +end + local spec_zero_glue = node_new(id_glue_spec) spec_zero_glue.width = 0; spec_zero_glue.stretch_order = 0; spec_zero_glue.stretch = 0 spec_zero_glue.shrink_order = 0; spec_zero_glue.shrink = 0 @@ -123,9 +131,12 @@ local function add_penalty(p,e) end -- 「異なる JFM」の間の調整方法 -diffmet_rule = math.two_average +diffmet_rule = math.two_paverage function math.two_add(a,b) return a+b end function math.two_average(a,b) return (a+b)*0.5 end +function math.two_paverage(a,b) return (a+b)*0.5 end +function math.two_pleft(a,b) return a end +function math.two_pright(a,b) return b end -------------------- idea -- 2 node の間に glue/kern/penalty を挿入する. @@ -414,9 +425,8 @@ do local attr_jchar_class = luatexbase.attributes['ltj@charclass'] function set_np_xspc_jachar(Nx, x) local m = ltjf_font_metric_table[x.font] - local c = has_attr(x, attr_orig_char) or x.char - local cls = ltjf_find_char_class(x.char, m) - if c ~= x.char and cls==0 then cls = ltjf_find_char_class(-c, m) end + local cls, c + cls, c = slow_find_char_class(has_attr(x, attr_orig_char), m, x.char) Nx.class = cls; set_attr(x, attr_jchar_class, cls) Nx.met, Nx.var, Nx.char = m, m.var, c Nx.pre = ltjs_fast_get_penalty_table('pre', c) or 0 @@ -536,15 +546,18 @@ end local function new_jfm_glue(Nn, bc, ac) -- bc, ac: char classes local z = Nn.met.size_cache.char_type[bc] - local g = z.glue[ac] + local g, d = z.glue[ac], 0 if g then - g = node_copy(g); g.spec = node.copy(g.spec); + g,d = node_copy(g[1]), g[2]; g.spec = node.copy(g.spec); elseif z.kern[ac] then g = node_new(id_kern); --copy_attr(g, Nn.nuc) - g.subtype = 1; g.kern = z.kern[ac] + g.subtype = 1; g.kern = z.kern[ac][1] set_attr(g, attr_icflag, FROM_JFM); + d = z.kern[ac][2] + else + d = 0 end - return g + return g, d end -- Nq.last (kern w) .... (glue/kern g) Np.first @@ -600,39 +613,62 @@ local function get_kanjiskip_jfm() return g end -local function calc_ja_ja_aux(gb,ga) +local function calc_ja_ja_aux(gb,ga, db, da) + local rbb, rab = (1-db)/2, (1-da)/2 -- 「前の文字」由来のグルーの割合 + local rba, raa = (1+db)/2, (1+da)/2 -- 「前の文字」由来のグルーの割合 + if diffmet_rule ~= math.two_pleft and diffmet_rule ~= math.two_pright + and diffmet_rule ~= math.two_paverage then + rbb, rab, rba, raa = 1,0,0,1 + end if not gb then + if ga then gb = node_new(id_kern); gb.kern = 0 else return nil end + elseif not ga then + ga = node_new(id_kern); ga.kern = 0 + end + + local k = node.type(gb.id) .. node.type(ga.id) + if k == 'glueglue' then + -- 両方とも glue. + gb.spec.width = round(diffmet_rule( + rbb*gb.spec.width + rba*ga.spec.width, + rab*gb.spec.width + raa*ga.spec.width )) + gb.spec.stretch = round(diffmet_rule( + rbb*gb.spec.stretch + rba*ga.spec.stretch, + rab*gb.spec.stretch + raa*ga.spec.stretch )) + gb.spec.shrink = -round(diffmet_rule( + -rbb*gb.spec.shrink - rba*ga.spec.shrink, + -rab*gb.spec.shrink - raa*ga.spec.shrink )) + node.free(ga) + return gb + elseif k == 'kernkern' then + -- 両方とも kern. + gb.kern = round(diffmet_rule( + rbb*gb.kern + rba*ga.kern, + rab*gb.kern + raa*ga.kern )) + node.free(ga) + return gb + elseif k == 'kernglue' then + -- gb: kern, ga: glue + ga.spec.width = round(diffmet_rule( + rbb*gb.kern + rba*ga.spec.width, + rab*gb.kern + raa*ga.spec.width )) + ga.spec.stretch = round(diffmet_rule( + rba*ga.spec.stretch, raa*ga.spec.stretch )) + ga.spec.shrink = -round(diffmet_rule( + -rba*ga.spec.shrink,-raa*ga.spec.shrink )) + node.free(gb) return ga else - if not ga then return gb end - local k = node.type(gb.id) .. node.type(ga.id) - if k == 'glueglue' then - -- 両方とも glue. - gb.spec.width = round(diffmet_rule(gb.spec.width, ga.spec.width)) - gb.spec.stretch = round(diffmet_rule(gb.spec.stretch,ga.spec.shrink)) - gb.spec.shrink = -round(diffmet_rule(-gb.spec.shrink, -ga.spec.shrink)) - node.free(ga) - return gb - elseif k == 'kernkern' then - -- 両方とも kern. - gb.kern = round(diffmet_rule(gb.kern, ga.kern)) - node.free(ga) - return gb - elseif k == 'kernglue' then - -- gb: kern, ga: glue - ga.spec.width = round(diffmet_rule(gb.kern,ga.spec.width)) - ga.spec.stretch = round(diffmet_rule(ga.spec.stretch, 0)) - ga.spec.shrink = -round(diffmet_rule(-ga.spec.shrink, 0)) - node.free(gb) - return ga - else - -- gb: glue, ga: kern - gb.spec.width = round(diffmet_rule(ga.kern, gb.spec.width)) - gb.spec.stretch = round(diffmet_rule(gb.spec.stretch, 0)) - gb.spec.shrink = -round(diffmet_rule(-gb.spec.shrink, 0)) - node.free(ga) - return gb - end + -- gb: glue, ga: kern + gb.spec.width = round(diffmet_rule( + rba*ga.kern + rbb*gb.spec.width, + raa*ga.kern + rab*gb.spec.width )) + gb.spec.stretch = round(diffmet_rule( + rbb*gb.spec.stretch, rab*gb.spec.stretch )) + gb.spec.shrink = -round(diffmet_rule( + -rbb*gb.spec.shrink,-rab*gb.spec.shrink )) + node.free(ga) + return gb end end @@ -641,8 +677,9 @@ local function calc_ja_ja_glue() elseif (Nq.met.size_cache==Np.met.size_cache) and (Nq.var==Np.var) then return new_jfm_glue(Nq, Nq.class, Np.class) else - return calc_ja_ja_aux(new_jfm_glue(Nq, Nq.class, fast_find_char_class('diffmet',Nq.met)), - new_jfm_glue(Np, fast_find_char_class('diffmet',Np.met), Np.class)) + local gb, db = new_jfm_glue(Nq, Nq.class, ltjf_find_char_class(Np.char, Nq.met)) + local ga, da = new_jfm_glue(Np, ltjf_find_char_class(Nq.char, Np.met), Np.class) + return calc_ja_ja_aux(gb, ga, db, da); end end diff --git a/src/ltj-jfont.lua b/src/ltj-jfont.lua index d48fe52..a942655 100644 --- a/src/ltj-jfont.lua +++ b/src/ltj-jfont.lua @@ -105,6 +105,13 @@ function define_jfm(t) for j in pairs(v.glue) do if v.kern[j] then defjfm_res= nil; return end end + for j,x in pairs(v.kern) do + if type(x)=='number' then + v.kern[j] = {x, 0} + elseif type(x)=='table' then + v.kern[j] = {x[1], x[2] or 0} + end + end t.char_type[i] = v t[i] = nil end @@ -139,10 +146,15 @@ local function update_jfm_cache(j,sz) for i,v in pairs(t.char_type) do if type(i) == 'number' then -- char_type for k,w in pairs(v.glue) do - local g, h = node.new(id_glue), node_new(id_glue_spec); v.glue[k] = g + local g, h = node.new(id_glue), node_new(id_glue_spec) + v.glue[k] = {g, (w[5] and w[5]/sz or 0)} h.width, h.stretch, h.shrink = w[1], w[2], w[3] h.stretch_order, h.shrink_order = 0, 0 - g.subtype = 0; g.spec = h; set_attr(g, attr_icflag, FROM_JFM); + g.subtype = 0; g.spec = h; set_attr(g, attr_icflag, FROM_JFM + + (w[4] and w[4]/sz or 0)); + end + for k,w in pairs(v.kern) do + w[2] = w[2]/sz end end end diff --git a/src/ltj-latex.sty b/src/ltj-latex.sty index 3cb5238..cdd84be 100644 --- a/src/ltj-latex.sty +++ b/src/ltj-latex.sty @@ -42,7 +42,7 @@ xkanjiskip=.25\zw plus 1pt minus 1pt, autospacing, autoxspacing, jacharrange={-1}, yalbaselineshift=0pt, yjabaselineshift=0pt, - jcharwidowpenalty=500, differentjfm=average + jcharwidowpenalty=500, differentjfm=paverage } \input luatexja-kinsoku.tex diff --git a/src/ltj-plain.sty b/src/ltj-plain.sty index d09d05b..7a19c05 100644 --- a/src/ltj-plain.sty +++ b/src/ltj-plain.sty @@ -36,7 +36,7 @@ xkanjiskip=.25\zw plus 1pt minus 1pt, autospacing, autoxspacing, jacharrange={-1}, yalbaselineshift=0pt, yjabaselineshift=0pt, - jcharwidowpenalty=500, differentjfm=average + jcharwidowpenalty=500, differentjfm=paverage } \input luatexja-kinsoku.tex diff --git a/src/luatexja-core.sty b/src/luatexja-core.sty index 53ef077..a09df4e 100644 --- a/src/luatexja-core.sty +++ b/src/luatexja-core.sty @@ -341,19 +341,22 @@ \define@key[ltj]{japaram}{jcharwidowpenalty}{% %COUNT \ltj@@set@stack0,#1:{jwp}{-10000}{10000}} -% differentjfm = { large | small | average | both } +% differentjfm = { large | small | average | pleft | pright | paverage | both} \define@choicekey*+[ltj]{japaram}{differentjfm}[\ltj@temp\ltj@tempr]% - {large,small,average,both}{% + {large,small,average,pleft,pright,paverage,both}{% \ifcase\ltj@tempr \directlua{luatexja.jfmglue.diffmet_rule = math.max}\or \directlua{luatexja.jfmglue.diffmet_rule = math.min}\or \directlua{luatexja.jfmglue.diffmet_rule = math.two_average}\or + \directlua{luatexja.jfmglue.diffmet_rule = math.two_pleft}\or + \directlua{luatexja.jfmglue.diffmet_rule = math.two_pright}\or + \directlua{luatexja.jfmglue.diffmet_rule = math.two_paverage}\or \directlua{luatexja.jfmglue.diffmet_rule = math.two_add} \fi }{\ltj@PackageError{luatexja}{invalid argument `#1' for `differentjfm'}{% Argument for `differentjfm' must be one of `large', `small', `average',^^J% - and `both'. }} - % large, small, average, both + `pleft', `pright', 'paverage' or `both'. }} + % large, small, average, pleft, pright, paverage, both % jacharrange = { +- } diff --git a/test/test01-noembed.pdf b/test/test01-noembed.pdf index 11a0d9169e8cb275287edf9e67a6fe04e1acc912..ce55e52214c30d6aa961abfb77339bd7b4aaf2c5 100644 GIT binary patch delta 24767 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 delta 23806 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 GEB^v;W=9GD delta 18632 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 GPUK%~?phZB diff --git a/test/test01.tex b/test/test01.tex index 6ad9c0c..519144f 100644 --- a/test/test01.tex +++ b/test/test01.tex @@ -57,10 +57,9 @@ {\noindent\bf\tengt ■{\tt differentjfm}による挙動の違い} \jfont\tenMa={file:KozMinPr6N-Regular.otf:jfm=ujis} -\jfont\tenMb={file:KozMinPr6N-Regular.otf:jfm=ujis;jfmvar=a} +\jfont\tenMb={file:KozMinPr6N-Regular.otf:jfm=jis;jfmvar=a} \jfont\tenGa={file:ipaexg.ttf:jfm=ujis} at 15pt -\jfont\tenGb={file:ipaexg.ttf:jfm=ujis;jfmvar=a} at 15pt\relax - +\jfont\tenGb={file:ipaexg.ttf:jfm=jis;jfmvar=a} at 15pt\relax \def\djtest{% {\tt Ma-Ma}: \setbox0=\hbox{{\tenMa )}{\tenMa ・}}\hbox to 90pt{\copy0\hss(\the\wd0)}, {\tt Ma-Mb}: \setbox0=\hbox{{\tenMa )}{\tenMb ・}}\hbox to 90pt{\copy0\hss(\the\wd0)}, @@ -79,14 +78,26 @@ \ltjsetparameter{differentjfm=LARGE}\djtest -{\noindent\bf\tengt {\tt differentjfm=average}(default,平均)} +{\noindent\bf\tengt {\tt differentjfm=average}(平均)} \ltjsetparameter{differentjfm=AVERAGE}\djtest -{\noindent\bf\tengt {\tt differentjfm=both}(両方挿入)} +{\noindent\bf\tengt {\tt differentjfm=both}(合計)} \ltjsetparameter{differentjfm=Both}\djtest +{\noindent\bf\tengt {\tt differentjfm=pleft}(左側の指定で比例配分)} + +\ltjsetparameter{differentjfm=pleft}\djtest + +{\noindent\bf\tengt {\tt differentjfm=pright}(右側の指定で比例配分)} + +\ltjsetparameter{differentjfm=pright}\djtest + +{\noindent\bf\tengt {\tt differentjfm=paverage}(default, 左・右それぞれの指定で比例配分した値の平均)} + +\ltjsetparameter{differentjfm=paverage}\djtest + \bigskip {\noindent\bf\tengt ■ujis, jis, min} diff --git a/test/test04-jfm.tex b/test/test04-jfm.tex index c2ad3f5..d6c75e0 100644 --- a/test/test04-jfm.tex +++ b/test/test04-jfm.tex @@ -324,4 +324,17 @@ \setbox0=\hbox{\tenmin\setbox1=\hbox{()}\setbox2=\hbox{「」}% \unhcopy1\unhbox1\unhbox2} \dumplist0 + +\head{その他: 「前由来」「後由来」JFM由来グルー} +\setbox0=\hbox{\tenmin あ\fivemin (} +\dumplist0 + +\setbox0=\hbox{\fivemin あ\tenmin (} +\dumplist0 + +\setbox0=\hbox{\fivemin .\tenmin ・} +\dumplist0 + +\setbox0=\hbox{\tenmin .\fivemin ・} +\dumplist0 \end -- 2.11.0