--
luatexbase.provides_module({
name = 'luatexja.jfmglue',
- date = '2014/02/02',
+ date = '2014/10/03',
description = 'Insertion process of JFM glues and kanjiskip',
})
module('luatexja.jfmglue', package.seeall)
local start_time_measure = ltjb.start_time_measure
local stop_time_measure = ltjb.stop_time_measure
slow_find_char_class = function (c, m, oc)
- start_time_measure('slow_find_chr')
local cls = ltjf_find_char_class(oc, m)
- if cls==0 then
- stop_time_measure('slow_find_chr')
+ if oc~=c and cls==0 then
return ltjf_find_char_class(-c, m), oc
else
- stop_time_measure('slow_find_chr')
return cls, oc
end
end
set_attr(lp, attr_icflag, PROCESSED); lp = node_next(lp)
set_attr(lp, attr_icflag, PROCESSED); lp = node_next(lp)
set_attr(lp, attr_icflag, PROCESSED); lp = node_next(lp)
- set_attr(lp, attr_icflag, PROCESSED);
+ set_attr(lp, attr_icflag, PROCESSED);
return calc_np_aux_glyph_common(lp)
else
Np.id = id_kern; set_attr(lp, attr_icflag, PROCESSED)
if lpa%PROCESSED_BEGIN_FLAG == BOXBDD then
local lq = node_next(lp)
head = node_remove(head, lp); node_free(lp); lp = lq
- else
+ else
return calc_np_pbox(lp, last)
end -- id_pbox
else
attr_ablshift = is_dir_tate and attr_tablshift or attr_yablshift
set_np_xspc_jachar = is_dir_tate and set_np_xspc_jachar_tate or set_np_xspc_jachar_yoko
-
+
tex_dir = dir or 'TLT'
kanji_skip = node_new(id_glue)
setfield(kanji_skip, 'spec', skip_table_to_spec(KSK))
--
luatexbase.provides_module({
name = 'luatexja.jfont',
- date = '2014/08/12',
+ date = '2014/10/03',
description = 'Loader for Japanese fonts',
})
module('luatexja.jfont', package.seeall)
function (arg, fmtable, char)
return 0
end)
-
-function find_char_class(c,m)
--- c: character code, m:
- if not m then return 0 end
- return m.chars[c] or
- luatexbase.call_callback("luatexja.find_char_class", 0, m, c)
+do
+ local start_time_measure = ltjb.start_time_measure
+ local stop_time_measure = ltjb.stop_time_measure
+ local fcc_temp = { chars_cbcache = {} }
+ setmetatable(
+ fcc_temp.chars_cbcache,
+ {
+ __index = function () return 0 end,
+ })
+ function find_char_class(c,m)
+ -- c: character code, m:
+ local r = (m or fcc_temp).chars_cbcache[c]
+ if not r then
+ r = m.chars[c] or
+ luatexbase.call_callback("luatexja.find_char_class", 0, m, c)
+ m.chars_cbcache[c] = r
+ end
+ return r
+ end
end
descent = ad.descender,
chars = sz.chars, char_type = sz.char_type,
kanjiskip = sz.kanjiskip, xkanjiskip = sz.xkanjiskip,
+ chars_cbcache = {},
}
fmtable = luatexbase.call_callback("luatexja.define_jfont", fmtable, fn)
end
if jfm_file_name~='' then
local l = name:sub(-1)
- name = name
+ name = name
.. ((l==':' or l==';') and '' or ';')
.. 'jfm=' .. jfm_file_name
if jfm_var~='' then
alt_font_base_num = tex.getattribute(attr_curtfnt)
else
alt_font_base_num = tex.getattribute(attr_curjfnt)
- end
+ end
local t = alt_font_table[alt_font_base_num]
if t then
for i,_ in pairs(t) do t[i]=nil end