OSDN Git Service

Fix a crash by "\ruby{Weierstraß}{ワイエルシュトラス}"
[luatex-ja/luatexja.git] / src / ltj-pretreat.lua
index 9ff46eb..1729c9e 100644 (file)
@@ -43,7 +43,7 @@ local attr_icflag = luatexbase.attributes['ltj@icflag']
 local is_ucs_in_japanese_char = ltjc.is_ucs_in_japanese_char_direct
 local ltjs_orig_char_table = ltjs.orig_char_table
 local ltjf_replace_altfont = ltjf.replace_altfont
-local ltjf_font_extra_info = ltjf.font_extra_info
+--local ltjf_font_extra_info = ltjf.font_extra_info
 local attr_orig_char = luatexbase.attributes['ltj@origchar']
 local STCK  = luatexja.userid_table.STCK
 local DIR   = luatexja.userid_table.DIR
@@ -103,7 +103,9 @@ do
            while pid==id_glyph do
               local pc = getchar(p)
               if has_attr(p, attr_icflag, 0) and is_ucs_in_japanese_char(p, pc) then
-                 setfont(p, ltjf_replace_altfont(has_attr(p, attr_curjfnt) or getfont(p), pc))
+                  local pf = has_attr(p, attr_curjfnt)
+                  pf = (pf and pf>0 and pf) or getfont(p)
+                 setfont(p, ltjf_replace_altfont(pf, pc))
                  setlang(p, lang_ja)
                  ltjs_orig_char_table[p] = pc
               end
@@ -148,8 +150,8 @@ local function set_box_stack_level(head, mode)
            setfont(p, nf)
            if ltjf_font_metric_table[nf].vert_activated then
               local pc = getchar(p)
-              pc = (ltjf_font_extra_info[nf] and ltjf_font_extra_info[nf][pc] and ltjf_font_extra_info[nf][pc].vform)
-              if pc and font_getfont(nf).characters[pc] then setchar(p,  pc) end
+              pc = ltjf_font_metric_table[nf].vform[pc]
+               if pc then setchar(p,  pc) end
            end
         end
       end