OSDN Git Service

ltj-jfont.lua etc.: use data of UTR#50
[luatex-ja/luatexja.git] / src / ltj-ruby.lua
index bf57c77..1237cea 100644 (file)
@@ -3,7 +3,7 @@
 --
 luatexbase.provides_module({
   name = 'luatexja.ruby',
-  date = '2015/09/18',
+  date = '2017/05/05',
   description = 'Ruby annotation',
 })
 module('luatexja.ruby', package.seeall)
@@ -205,7 +205,7 @@ do
          local hic = has_attr(hx, attr_icflag)
         if (hic == KANJI_SKIP) or (hic == KANJI_SKIP_JFM)
             or (hic == XKANJI_SKIP) or (hic == XKANJI_SKIP_JFM)
-            or ((hic<=FROM_JFM+2) and (hic>=FROM_JFM-2)) then
+            or ((hic<=FROM_JFM+63) and (hic>=FROM_JFM)) then
            -- この 5 種類の空白をのばす
               if getid(hx) == id_kern then
                  local k = node_new(id_glue)
@@ -215,7 +215,7 @@ do
                  h = insert_after(h, hx, k);
                  h = node_remove(h, hx); node_free(hx); hx = k
               else -- glue
-                 setglue(hx, getfield(hx, 'width'), round(middle*65536), 0,
+                  setglue(hx, getfield(hx, 'width'), round(middle*65536), 0,
                             2, 0)
               end
         end
@@ -374,7 +374,7 @@ local function new_ruby_box(r, p, ppre, pmid, ppost,
         setfield(rt, 'head', nil); node_free(rt);
       end
    end
-   local a, k = node_new(id_rule), node_new(id_kern)
+   local a, k = node_new(id_rule), node_new(id_kern, 1)
    setfield(a, 'width', 0); setfield(a, 'height', 0)
    setfield(a, 'depth', 0); setfield(k, 'kern', rgap)
    insert_after(r, r, a); insert_after(r, a, k);
@@ -382,7 +382,7 @@ local function new_ruby_box(r, p, ppre, pmid, ppost,
    a = node.direct.vpack(r); setfield(a, 'shift', 0)
    set_attr(a, attr_ruby, post_intrusion)
    if rsmash or getfield(a, 'height')<getfield(p, 'height') then
-      local k = node_new(id_kern)
+      local k = node_new(id_kern, 1)
       setfield(k, 'kern', -getfield(a, 'height')+getfield(p, 'height'))
       setfield(a, 'head', k); insert_before(r, r, k)
       setfield(a, 'height', getfield(p, 'height'))
@@ -673,9 +673,9 @@ luatexbase.add_to_callback('hpack_filter', post_high_hbox, 'ltj.ruby.post_hbox',
 ----------------------------------------------------------------
 do
    local RIPRE  = luatexja.stack_table_index.RIPRE
-   local function whatsit_callback(Np, lp, Nq, bsl)
+   local function whatsit_callback(Np, lp, Nq)
       if Np.nuc then return Np
-      elseif getfield(lp, 'user_id') == RUBY_PRE then
+      elseif  getfield(lp, 'user_id') == RUBY_PRE then
          Np.first, Np.nuc, Np.last = lp, lp, lp
          local lpv = getfield(lp, 'value')
          local x = node_next(node_next(lpv))
@@ -711,6 +711,8 @@ do
             set_attr(lpv, attr_ruby_maxprep, 0)
          end
          return Np
+      else
+        return Np
       end
    end
    luatexbase.add_to_callback("luatexja.jfmglue.whatsit_getinfo", whatsit_callback,