OSDN Git Service

check_box: ignore JFM glue between 'boxbdd'
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 1 Aug 2019 12:27:38 +0000 (21:27 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 1 Aug 2019 12:27:38 +0000 (21:27 +0900)
doc/luatexja.dtx
src/ltj-jfmglue.lua

index 05e5e2d..f755146 100644 (file)
@@ -9587,6 +9587,9 @@ $\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$の算出は,
 \verb+\lower1pt\hbox{xyz}+ に対応するノードである.
 \item また,先頭にアクセント付きの文字がきたり,末尾にイタリック補正用のカーンが
 来ることもあり得る.この場合は,クラスタの定義のところにもあったように,それらは無視して算出を行う.
 \verb+\lower1pt\hbox{xyz}+ に対応するノードである.
 \item また,先頭にアクセント付きの文字がきたり,末尾にイタリック補正用のカーンが
 来ることもあり得る.この場合は,クラスタの定義のところにもあったように,それらは無視して算出を行う.
+\item 最初・最後のノードが「文字コード\texttt{'boxbdd'}の文字」との間に入るJFMグルーという場合も,
+  これらは無視して算出を行う.
+  % TODO: 欧文フォント由来のカーニング
 \item 最初・最後のノードが合字によって作られた\textit{glyph\_node}のときは,それぞれに対して\textit{id\_glyph}%
 と同様に再帰的に構成要素をたどっていく.
 \end{itemize}
 \item 最初・最後のノードが合字によって作られた\textit{glyph\_node}のときは,それぞれに対して\textit{id\_glyph}%
 と同様に再帰的に構成要素をたどっていく.
 \end{itemize}
index d9b0364..ed06e29 100644 (file)
@@ -191,7 +191,8 @@ local function check_box(box_ptr, box_end)
       end
       if pid==id_kern then
         local pa = get_attr_icflag(p)
       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));
            -- 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
            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
         -- do nothing
       elseif not (pid==id_ins   or pid==id_mark
                  or pid==id_adjust or pid==id_whatsit