OSDN Git Service

apply "implicit" vert/vrt2 features just before computing character class
[luatex-ja/luatexja.git] / src / ltj-jfmglue.lua
index 870bab4..106b98d 100644 (file)
@@ -110,7 +110,7 @@ local slow_find_char_class
 do
    local start_time_measure = ltjb.start_time_measure
    local stop_time_measure = ltjb.stop_time_measure
-   slow_find_char_class = function (c, m, oc)
+   slow_find_char_class = function (c, m, oc,t )
       local cls = ltjf_find_char_class(oc, m)
       if oc~=c and cls==0 then
         return ltjf_find_char_class(-c, m), oc
@@ -564,6 +564,7 @@ do
    local attr_jchar_class = luatexbase.attributes['ltj@charclass']
    local attr_autospc = luatexbase.attributes['ltj@autospc']
    local attr_autoxspc = luatexbase.attributes['ltj@autoxspc']
+   local ltjf_get_vert_glyph = ltjf.get_vert_glyph
    function set_np_xspc_jachar_yoko(Nx, x)
       local m = ltjf_font_metric_table[getfont(x)]
       local cls, c = slow_find_char_class(ltjs_orig_char_table[x], m, getchar(x))
@@ -576,12 +577,11 @@ do
       Nx.auto_kspc, Nx.auto_xspc = (has_attr(x, attr_autospc)==1), (has_attr(x, attr_autoxspc)==1)
    end
    function set_np_xspc_jachar_tate(Nx, x)
-      local m = ltjf_font_metric_table[getfont(x)]
-      local cls, c
-      local c1, c2 = getchar(x), ltjs_orig_char_table[x][1]
-      c = ltjs_orig_char_table[x][2] or c1 or c2
-      cls = ltjf_find_char_class(c, m)
-      if cls==0 then cls = slow_find_char_class(c2, m, c1) end
+      local c, c_glyph = ltjs_orig_char_table[x], getchar(x)
+      local xf = getfont(x)
+      local m = ltjf_font_metric_table[xf]
+      local cls = slow_find_char_class(c, m, c_glyph)
+      setfield(x, 'char', ltjf_get_vert_glyph(xf, c_glyph) or c_glyph)
       Nx.met = m; Nx.class = cls;
       if cls~=0 then set_attr(x, attr_jchar_class, cls) end
       Nx.pre  = table_current_stack[PRE + c]  or 0