From e3338432ebf1187e93c2d7a2b8ebb194763162ed Mon Sep 17 00:00:00 2001 From: Hironori Kitagawa Date: Thu, 1 Aug 2019 21:27:38 +0900 Subject: [PATCH] check_box: ignore JFM glue between 'boxbdd' --- doc/luatexja.dtx | 3 +++ src/ltj-jfmglue.lua | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/luatexja.dtx b/doc/luatexja.dtx index 05e5e2d..f755146 100644 --- a/doc/luatexja.dtx +++ b/doc/luatexja.dtx @@ -9587,6 +9587,9 @@ $\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$の算出は, \verb+\lower1pt\hbox{xyz}+ に対応するノードである. \item また,先頭にアクセント付きの文字がきたり,末尾にイタリック補正用のカーンが 来ることもあり得る.この場合は,クラスタの定義のところにもあったように,それらは無視して算出を行う. +\item 最初・最後のノードが「文字コード\texttt{'boxbdd'}の文字」との間に入るJFMグルーという場合も, + これらは無視して算出を行う. + % TODO: 欧文フォント由来のカーニング \item 最初・最後のノードが合字によって作られた\textit{glyph\_node}のときは,それぞれに対して\textit{id\_glyph}% と同様に再帰的に構成要素をたどっていく. \end{itemize} diff --git a/src/ltj-jfmglue.lua b/src/ltj-jfmglue.lua index d9b0364..ed06e29 100644 --- a/src/ltj-jfmglue.lua +++ b/src/ltj-jfmglue.lua @@ -191,7 +191,8 @@ local function check_box(box_ptr, box_end) end if pid==id_kern then local pa = get_attr_icflag(p) - if pa==IC_PROCESSED then + if (pa==IC_PROCESSED)or(pa==BOXBDD) then + --if (pa==IC_PROCESSED)or(pa==BOXBDD)or(getsubtype(p)==0) then -- do nothing elseif getsubtype(p)==2 then p = node_next(node_next(p)); @@ -221,7 +222,8 @@ local function check_box(box_ptr, box_end) first_char = p; find_first_char = false end last_char = p; found_visible_node = true - elseif pid==id_rule and get_attr_icflag(p)==PACKED then + elseif (pid==id_rule and get_attr_icflag(p)==PACKED) + or (pid==id_glue and get_attr_icflag(p)==BOXBDD) then -- do nothing elseif not (pid==id_ins or pid==id_mark or pid==id_adjust or pid==id_whatsit -- 2.11.0