OSDN Git Service

Fix errors: ltjb.package_error() is called with a table argument in ltj-charrange...
[luatex-ja/luatexja.git] / src / ltj-stack.lua
index c7f52c9..21f71d6 100644 (file)
@@ -96,14 +96,14 @@ function set_stack_table(g,m,c,p,lb,ub)
                         "(-1 is used for denoting `math boundary')\n" ..
                         'So I changed this one to zero.')
       c=0
-   elseif not charprop_stack_table[i][m] then 
-      charprop_stack_table[i][m] = {} 
+   elseif not charprop_stack_table[i][c] then 
+      charprop_stack_table[i][c] = {} 
    end
-   charprop_stack_table[i][m][c] = p
+   charprop_stack_table[i][c][m] = p
   if g=='global' then
      for j,v in pairs(charprop_stack_table) do 
-       if not charprop_stack_table[j][m] then charprop_stack_table[j][m] = {} end
-       charprop_stack_table[j][m][c] = p
+       if not charprop_stack_table[j][c] then charprop_stack_table[j][c] = {} end
+       charprop_stack_table[j][c][m] = p
      end
   end
 end
@@ -117,14 +117,14 @@ function set_stack_font(g,m,c,p)
                         "The family number should in the range 0 .. 255.\n" ..
                          "I'm going to use 0 instead of that illegal family number.")
       c=0
-   elseif not charprop_stack_table[i][m] then 
-      charprop_stack_table[i][m] = {} 
+   elseif not charprop_stack_table[i][c] then 
+      charprop_stack_table[i][c] = {} 
    end
-   charprop_stack_table[i][m][c] = p
+   charprop_stack_table[i][c][m] = p
    if g=='global' then
      for j,v in pairs(charprop_stack_table) do 
-       if not charprop_stack_table[j][m] then charprop_stack_table[j][m] = {} end
-       charprop_stack_table[j][m][c] = p
+       if not charprop_stack_table[j][c] then charprop_stack_table[j][c] = {} end
+       charprop_stack_table[j][c][m] = p
      end
   end
 end
@@ -163,8 +163,13 @@ function fast_get_skip_table(m)
       or { width = 0, stretch = 0, shrink = 0, stretch_order = 0, shrink_order = 0 }
 end
 function fast_get_penalty_table(m,c)
-   local i = table_current_stack[m]
-   return (i and i[c])
+   local i = table_current_stack[c]
+   return (i and i[m])
+end
+
+local empty_table = {}
+function fast_get_penalty_table_parent(c)
+   return table_current_stack[c] or empty_table
 end
 
 -- For other situations, use the following instead:
@@ -173,8 +178,8 @@ function get_skip_table(m, idx)
       or { width = 0, stretch = 0, shrink = 0, stretch_order = 0, shrink_order = 0 }
 end
 function get_penalty_table(m,c,d, idx)
-   local i = charprop_stack_table[idx][m]
-   return (i and i[c]) or d
+   local i = charprop_stack_table[idx][c]
+   return (i and i[m]) or d
 end