return new
else return nil end
end
+ local size_cache_num = 1
update_jfm_cache = function (j,sz)
- if metrics[j].size_cache[sz] then return end
+ if metrics[j].size_cache[sz] then return metrics[j].size_cache[sz].index end
local t = {}
metrics[j].size_cache[sz] = t
t.chars = metrics[j].chars
t.zw = round(metrics[j].zw*sz)
t.zh = round(metrics[j].zh*sz)
t.size = sz
+ size_cache_num = size_cache_num + 1
+ t.index = size_cache_num
+ return size_cache_num
end
end
local spec, size = match(spec,'(.+)%s+at%s*([%.%w]*)')
size = sp(size); extract_metric(spec)
jfm_dir = 'tate'
- local i = load_jfont_metric(); update_jfm_cache(i, size)
+ local i = load_jfont_metric()
+ local j = -update_jfm_cache(i, size)
+ font_metric_table[j]=metrics[i].size_cache[s]
tex.sprint(cat_lp,
- '\\noexpand\\directlua{luatexja.jfont.set_tfont_jfmonly_result('
- .. tostring(i) .. ',' .. tostring(size) .. ')}')
- end
- function luatexja.jfont.set_tfont_jfmonly_result(i,s)
- luatexja.jfont.tfont_jfmonly_result=metrics[i].size_cache[s]
+ '\\noexpand\\ltj@curtfnt' .. tostring(-j) .. '\\relax')
end
luatexja.jfont.load_tfont_jfmonly = load_tfont_jfmonly
end
local dir = luatexja.unary_pars.direction
t[\the\ltj@@adjust@baseline@inner] = function()
local dir = dir()
- local ft = (dir==dir_tate
- and fmt[get_attr('ltj@curtfnt')] or luatexja.jfont.tfont_jfmonly_result)
- or nulltable
- %local ft = fmt[get_attr('ltj@curtfnt')] or nulltable
+ %local ft = (dir==dir_tate
+ % and fmt[get_attr('ltj@curtfnt')] or luatexja.jfont.tfont_jfmonly_result)
+ % or nulltable
+ local ft = fmt[get_attr('ltj@curtfnt')] or nulltable
ft = ft and ft.char_type or nulltable
local fk = ft and ft[0] or nulltable
local ht, dp, wd = fk.height or 0, fk.depth or 0,