OSDN Git Service

Fix #39431: support notdef=... (introduced in luaotfload v2.98)
[luatex-ja/luatexja.git] / src / luatexja.lua
index 59204df..9756ead 100644 (file)
@@ -400,7 +400,7 @@ local function get_attr_icflag(p)
 end
 
 local prefix, inner_depth
-
+local utfchar = utf.char
 local function debug_show_node_X(p,print_fn, limit)
    local k = prefix
    local s
@@ -409,7 +409,7 @@ local function debug_show_node_X(p,print_fn, limit)
    .. ' ' .. pt .. ' ' .. tostring(p.subtype) .. ' '
    if pt == 'glyph' then
       s = base .. ' ' .. 
-         (p.char>=0xF0000 and string.format('(U+%X)', p.char) or utf.char(p.char)) .. ' '
+         (p.char>=0xF0000 and string.format('(U+%X)', p.char) or utfchar(p.char)) .. ' '
          .. tostring(p.font) .. ' (' .. print_scaled(p.height) .. '+'
          .. print_scaled(p.depth) .. ')x' .. print_scaled(p.width)
       if p.xoffset~=0 or p.yoffset~=0 then
@@ -458,6 +458,24 @@ local function debug_show_node_X(p,print_fn, limit)
          .. print_scaled(p.depth) .. ')x' .. print_scaled(p.width)
         .. ', dir=' .. tostring(node.has_attribute(p, attr_dir))
       print_fn(s)
+   elseif pt=='disc' then
+      print_fn(s)
+      local bid = inner_depth
+      if inner_depth < limit then
+         prefix, inner_depth = k.. 'p.', inner_depth + 1
+        for q in node.traverse(p.pre) do
+           debug_show_node_X(q, print_fn, limit)
+        end
+         prefix = k.. 'P.'
+        for q in node.traverse(p.post) do
+           debug_show_node_X(q, print_fn, limit)
+        end
+         prefix = k.. 'R.'
+        for q in node.traverse(p.replace) do
+           debug_show_node_X(q, print_fn, limit)
+        end
+      end
+      prefix=k
    elseif pt == 'glue' then
       s = base .. ' ' ..  print_spec(p)
       if get_attr_icflag(p)>icflag_table.KINSOKU
@@ -543,7 +561,7 @@ local function debug_show_node_X(p,print_fn, limit)
       end
       prefix = k;
    elseif pt=='math_char' then
-      s = base .. ' fam: ' .. p.fam .. ' , char = ' .. utf.char(p.char)
+      s = base .. ' fam: ' .. p.fam .. ' , char = ' .. utfchar(p.char)
       print_fn(s)
    elseif pt=='sub_box' or pt=='sub_mlist' then
       print_fn(base)