--
luatexbase.provides_module({
name = 'luatexja.jfont',
- date = '2018/11/01',
+ date = '2018/12/15',
description = 'Loader for Japanese fonts',
})
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
luatexbase.add_to_callback('define_font',luatexja.font_callback,"luatexja.font_callback", 1)
local match, sp = string.match, tex.sp
- local function load_tfont_jfmonly(spec)
+ local function load_jfmonly(spec, dir)
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)
- tex.sprint(cat_lp,
- '\\noexpand\\directlua{luatexja.jfont.set_tfont_jfmonly_result('
- .. tostring(i) .. ',' .. tostring(size) .. ')}')
+ jfm_dir = dir
+ 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, '\\ltj@cur' .. (dir=='yoko' and 'j' or 't') .. 'fnt' .. tostring(j) .. '\\relax')
end
- function luatexja.jfont.set_tfont_jfmonly_result(i,s)
- luatexja.jfont.tfont_jfmonly_result=metrics[i].size_cache[s]
- end
- luatexja.jfont.load_tfont_jfmonly = load_tfont_jfmonly
+ luatexja.jfont.load_jfmonly = load_jfmonly
end
------------------------------------------------------------------------